commit 6baa42b2f0033be80e16a51776dbec2df6479f31 Author: Sylvain Bellemare Date: Fri Feb 10 17:57:14 2017 +0100 Add js tool diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..4ab69f5 --- /dev/null +++ b/.babelrc @@ -0,0 +1,18 @@ +{ + 'presets': [['latest', { es2015: { modules: false } }]], + 'plugins': [ + 'transform-object-assign', + 'transform-object-rest-spread', + [ 'transform-runtime', { + 'polyfill': false, + 'regenerator': false + } ] + ], + 'sourceMaps': true, + + 'env': { + 'cjs': { + 'presets': ['latest'] + } + } +} diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..da0c0a2 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +build/* +dist/* +node_modules/* diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..b4eb4b6 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "ascribe" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c9e9077 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +*.seed +*.log +*.dat +*.out +*.pid +*.gz +.idea +*.sublime-project +*.sublime-workspace +*.sublime-workspace + +.env + +build/* + +node_modules/* diff --git a/README.md b/README.md new file mode 100644 index 0000000..65a9de5 --- /dev/null +++ b/README.md @@ -0,0 +1,332 @@ +# JavaScript quickstart for BigchainDB + +> :bangbang: High chance of :fire: and :rage: ahead if you expect this to be production-ready. + +> :bangbang: **ONLY** (and I mean **_only_**) supports BigchainDB Server 0.9 + +Some naive helpers to get you on your way to making some transactions :boom:, if you'd like to use +[BigchainDB](https://github.com/bigchaindb/bigchaindb) with JavaScript. + +Aimed to support usage in browsers or node; if it doesn't, well, I don't know what to say except +it's probably you :smirk:. Use at your own risk :rocket:. At least I can tell you it's ES∞+, so +you'll probably need a babel here and a bundler there (or use [one of the built versions](./dist)), +of which I expect you'll know quite well ([otherwise, go check out js-reactor :wink:](https://github.com/bigchaindb/js-reactor)). + +## Getting started + +Srs, just read through [index.js](./index.js) and see if you can make any sense of it. + +You may also be interested in a [long-form example with actual code](#example). + +The expected flow for making transactions: + +1. Go get yourself some keypairs! Just make a `new Keypair()` (or a whole bunch of them, nobody's + counting :sunglasses:). +1. Go get yourself a condition! `makeEd25519Condition()` should do the trick :sparkles:. +1. Go wrap that condition as an output (don't worry about the *why*)! `makeOutput()` no sweat + :muscle:. +1. (**Optional**) You've got everyting you need, except for an asset. Maybe define one (any + JSON-serializable object will do). +1. Time to get on the rocket ship, baby. `makeCreateTransaction()` your way to lifelong glory and + fame :clap:! +1. Ok, now you've got a transaction, but we need you to *sign* (`signTransaction()`) it cause, you + know... cryptography and `¯\_(ツ)_/¯`. +1. Alright, sick dude, you've *finally* got everything you need to `POST` to a server. Phew + :sweat_drops:. Go `fetch()` your way to business, start:point_up:life4evar! + +... + +Alright, alright, so you've made a couple transactions. Now what? Do I hear you saying +"Transfer them??" No problem, brotha, I gotcha covered :neckbeard:. + +1. Go get some more outputs (wrapping conditions), maybe based on some new made-up friends (i.e. + keypairs). +1. Go make a transfer transaction, using the transaction you want to *spend* (i.e. you can fulfill) + in `makeTransferTransaction()` :v:. *If you're not sure what any of this means (and you're as + confused as I think you are right now), you might wanna go check out [this](https://docs.bigchaindb.com/projects/server/en/latest/data-models/crypto-conditions.html) + and [this](https://docs.bigchaindb.com/projects/py-driver/en/latest/usage.html#asset-transfer) + and [this](https://tools.ietf.org/html/draft-thomas-crypto-conditions-01) first.* +1. Sign that transaction with `signTransaction()`! +1. `POST` to the server, and watch the :dollar:s drop, man. + +## Needs for speeds + +This implementation plays "safe" by using JS-native (or downgradable) libraries for its +crypto-related functions to keep compatabilities with the browser. If that makes you :unamused: and +you'd rather go :godmode: with some :zap: :zap:, you can try using some of these to go as fast as a +:speedboat: --:surfing_man: : + +* [chloride](https://github.com/dominictarr/chloride), or its underlying [sodium](https://github.com/paixaop/node-sodium) + library +* [node-sha3](https://github.com/phusion/node-sha3) -- **MAKE SURE** to use [steakknife's fork](https://github.com/steakknife/node-sha3) + if [the FIPS 202 upgrade](https://github.com/phusion/node-sha3/pull/25) hasn't been merged + (otherwise, you'll run into all kinds of hashing problems) + +## :rotating_light: WARNING WARNING WARNING :rotating_light: + +> Crypto-conditions + +Make sure you keep using a crypto-conditions implementation that implements the older v1 draft (e.g. +[`five-bells-condition@v3.3.1`](https://github.com/interledgerjs/five-bells-condition/releases/tag/v3.3.1)). +BigchainDB Server 0.9 does not implement the newer version of the spec and **WILL** fail if you to +use a newer implementation of crypto-conditions. + +> SHA3 + +Make sure to use a SHA3 implementation that has been upgraded as per [FIPS 202](http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf). +Otherwise, the hashes you generate **WILL** be invalid in the eyes of the BigchainDB Server. + +> Ed25519 + +If you do end up replacing `tweetnacl` with `chloride` (or any other Ed25519 package), you might +want to double check that it gives you a correct public/private (or verifying/signing, if they use +that lingo) keypair. + +An example BigchainDB Server-generated keypair (encoded in base58): + +- Public: "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" +- Private: "7Gf5YRch2hYTyeLxqNLgTY63D9K5QH2UQ7LYFeBGuKvo" + +Your package should be able to take in the decoded version of the **private** key and return you the +same **public** key (once you encode that to base58). + +------- + +## Example + +OK, OK, I gotcha, you'd rather see some *actual* code rather than a giant list of steps that don't +mean anything. :point_down: is for you. + +```js +import { + Ed25519Keypair, + makeEd25519Condition, + makeOutput, + makeCreateTransaction, + makeTransferTransaction, + signTransaction, +} from 'js-bigchaindb-quickstart'; // Or however you'd like to import it + +/********************** + * CREATE transaction * + **********************/ +// First, create a keypair for our new friend, Ash (let's be real--who would you rather catch some +// Pokemon: Alice or the Ketchum man himself?) +const ash = new Ed25519Keypair(); + +console.log(ash.publicKey); // something like "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" +console.log(ash.privateKey); // something like "7Gf5YRch2hYTyeLxqNLgTY63D9K5QH2UQ7LYFeBGuKvo" + +// Let's get an output and condition that lets Ash be the recipient of the new asset we're creating +const ashCondition = new makeEd25519Condition(ash.publicKey); +const ashOutput = new makeOutput(ashCondition); + +console.log(ashOutput); +/* Something like +{ + "amount": 1, + "condition": { + "details": { + "signature": null, + "type_id": 4, + "type": "fulfillment", + "bitmask": 32, + "public_key": "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + }, + "uri": "cc:4:20:vSfobaaMSP52nxnVkPiLMysCTR-t8JpjbWIdU6SvRYU:96" + }, + "public_keys": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] +} +*/ + +// Let's make an asset, to pretend this isn't boring. +const pokeAsset = { + 'name': 'Pikachu', + 'trait': 'Will never, ever, EVAARRR leave your back' +}; + +const noMetadata = null; // Let's ignore that meta-stuff for now + +// Now let's go give Ash his beloved Pikachu +const createPokeTx = makeCreateTransaction(pokeAsset, noMetadata, [ashOutput], ash.publicKey); + +console.log(createPokeTx); +/* Something like +{ + "id": "38acf7a938a39be335afc8e7300468b981a29813d52938104ba3badfe21470c9", + "operation": "CREATE", + "outputs": [ + { + "amount": 1, + "condition": { + "details": { + "signature": null, + "type_id": 4, + "type": "fulfillment", + "bitmask": 32, + "public_key": "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + }, + "uri": "cc:4:20:vSfobaaMSP52nxnVkPiLMysCTR-t8JpjbWIdU6SvRYU:96" + }, + "public_keys": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] + } + ], + "inputs": [ + { + "fulfillment": null, + "fulfills": null, + "owners_before": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] + } + ], + "metadata": null, + "asset": { + "data": { + "name": "Pikachu", + "trait": "Will never, ever, EVAARRR leave your back" + } + }, + "version": "0.9" +} +*/ + +// Let's sign this thing to make it legit! (Let's call Ash the "issuer", but a registered PokeCorp +// could be the one issuing instead) +const signedCreateTx = signTransaction(createPokeTx, ash.privateKey); + +console.log(signedPokeTx); +/* Something like +{ + "id": "38acf7a938a39be335afc8e7300468b981a29813d52938104ba3badfe21470c9", + "operation": "CREATE", + "outputs": [ + { + "amount": 1, + "condition": { + "details": { + "signature": null, + "type_id": 4, + "type": "fulfillment", + "bitmask": 32, + "public_key": "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + }, + "uri": "cc:4:20:vSfobaaMSP52nxnVkPiLMysCTR-t8JpjbWIdU6SvRYU:96" + }, + "public_keys": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] + } + ], + "inputs": [ + { + "fulfillment": "cf:4:vSfobaaMSP52nxnVkPiLMysCTR-t8JpjbWIdU6SvRYWj-cp1qb1vsTSt_775cGe-NQFxgyUQvcPx1nWkJRgXhMvTk2vN2QJU_nd2DgeTbIcWBF-8-N1SH2WqQLsXJLcP", + "fulfills": null, + "owners_before": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] + } + ], + "metadata": null, + "asset": { + "data": { + "name": "Pikachu", + "trait": "Will never, ever, EVAARRR leave your back" + } + }, + "version": "0.9" +} +*/ + +// Alright, now you've got yourself a valid transaction and you can do some crazy thing like send it +// over to a BigchainDB node. I'll leave that as an exercise for you ;). + +/************************ + * TRANSFER transaction * + ************************/ +// Alright, let's get Ash some imaginary friends (remember Brock? Neither do I) +const brock = new Ed25519Keypair(); // public: "H8ZVy61CCKh5VQV9nzzzggNW8e5CyTbSiegpdLqLSmqi", private: "5xoYuPP92pznaGZF9KLsyAdR5C7yDU79of1KA9UK4qKS" + +// Let's pretend that, for the sake of this example, Ash can actually part with Pikachu. Let's trade +// Pikachu to Brock (we won't be getting anything back, but if it helps, you can pretend Brock'll +// give Ash some help with his love life). +const brockCondition = new makeEd25519Condition(brock.publicKey); +const brockOutput = new makeOutput(brockCondition); + +// Let's create the TRANSFER transaction cementing this trade. We'll use the "unspent" CREATE +// transaction that assigned Pikachu to Ash as an input to this TRANSFER. +// Note that we'll keep ignoring that metadata stuff. +// Also note that we could use either `createPokeTx` (unsigned) or `signedCreateTx` (signed) here +// for the input transaction. Either way, we'll be fulfilling the first (and only) output set in it. +const fulfilledOutputIndex = 0; +const transferPokeTx = makeTransferTransaction(createPokeTx, noMetadata, [brockOutput], fulfilledOutputIndex); + +// OK, let's sign this TRANSFER (Ash has to, as he's the one currently in "control" of Pikachu) +const signedTransferTx = signTransaction(transferPokeTx, ash.privateKey); + +console.log(signedTransferTx); +/* If everything went well, you should get something like this +{ + "id": "0876962a40479e171135cd92dbae7f0216f2691561b56a579cff631371d4d128", + "operation": "TRANSFER", + "outputs": [ + { + "amount": 1, + "condition": { + "details": { + "signature": null, + "type_id": 4, + "type": "fulfillment", + "bitmask": 32, + "public_key": "H8ZVy61CCKh5VQV9nzzzggNW8e5CyTbSiegpdLqLSmqi" + }, + "uri": "cc:4:20:76rNv-DAIjZC0-68Gl0KEuDpcJRpCAAQXxvVbTvQAxE:96" + }, + "public_keys": [ + "H8ZVy61CCKh5VQV9nzzzggNW8e5CyTbSiegpdLqLSmqi" + ] + } + ], + "inputs": [ + { + "fulfillment": "cf:4:vSfobaaMSP52nxnVkPiLMysCTR-t8JpjbWIdU6SvRYU8UJKi0Oq7QoCXIHuiWEYzxfgVEYs9HHtDIWBSkq1uvMX6l7VKwUCrK93k6JMNVBA8djOa5UGfDDF49xLVEgQI", + "fulfills": { + "output": 0, + "txid": "38acf7a938a39be335afc8e7300468b981a29813d52938104ba3badfe21470c9" + }, + "owners_before": [ + "DjPMHDD9JtgypDKY38mPz9f6owjAMAKhLuN1JfRAat8C" + ] + } + ], + "metadata": null, + "asset": { + "id": "38acf7a938a39be335afc8e7300468b981a29813d52938104ba3badfe21470c9" + }, + "version": "0.9" +} +*/ + +// Assuming you figured out how to send a transaction to a BigchainDB node, and that the federation +// you sent it to has validated the CREATE transaction you sent, you should now be able to cement +// the TRANSFER of Pikachu to Brock by sending `signedTransferTx` to a node in the same federation. + + + +========================================================================================================= + + + + /************************************************************* + * * + * ~~~ CHALLENGE ~~~ * + * * + * So who's making the decentralized version of Pokemon? * + * (cause I want in) * + * * + *************************************************************/ +``` diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 0000000..e0a7105 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,12 @@ +# Built files, for your convenience + +~Voila~ ma boies, built files so you don't have to do a thing! Just copy pasta, and get on your way. + +### `/bundled` + +Babelified, packaged with dependencies, and built (if you'd like), so you can drop it in anywhere +you want. + +### `/node` + +Babelified into a CommonJS module, so you can drop it in on any node project. diff --git a/dist/bundle/bundle.js b/dist/bundle/bundle.js new file mode 100644 index 0000000..203feaa --- /dev/null +++ b/dist/bundle/bundle.js @@ -0,0 +1,6964 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["js-bigchaindb-quickstart"] = factory(); + else + root["js-bigchaindb-quickstart"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __webpack_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 56); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(1)(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(15) +var ieee754 = __webpack_require__(46) +var isArray = __webpack_require__(47) + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10))) + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(22); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; + +/***/ }), +/* 8 */ +/***/ (function(module, exports) { + +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(7) + , defined = __webpack_require__(6); +module.exports = function(it){ + return IObject(defined(it)); +}; + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 11 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(13); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_buffer__ = __webpack_require__(4); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_buffer___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_buffer__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bs58__ = __webpack_require__(16); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bs58___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_bs58__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_clone__ = __webpack_require__(17); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_clone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_clone__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_five_bells_condition__ = __webpack_require__(45); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_five_bells_condition__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_tweetnacl__ = __webpack_require__(54); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_tweetnacl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_tweetnacl__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_sha3__ = __webpack_require__(48); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_sha3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_js_sha3__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify__ = __webpack_require__(49); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_json_stable_stringify__); +/* harmony export (immutable) */ __webpack_exports__["Ed25519Keypair"] = Ed25519Keypair; +/* harmony export (immutable) */ __webpack_exports__["makeEd25519Condition"] = makeEd25519Condition; +/* harmony export (immutable) */ __webpack_exports__["makeOutput"] = makeOutput; +/* harmony export (immutable) */ __webpack_exports__["makeCreateTransaction"] = makeCreateTransaction; +/* harmony export (immutable) */ __webpack_exports__["makeTransferTransaction"] = makeTransferTransaction; +/* harmony export (immutable) */ __webpack_exports__["signTransaction"] = signTransaction; + + + + + + + + + + +/** + * @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys) + * @type {Object} + * @property {string} publicKey + * @property {string} privateKey + */ +function Ed25519Keypair() { + var keyPair = __WEBPACK_IMPORTED_MODULE_5_tweetnacl___default.a.sign.keyPair(); + this.publicKey = __WEBPACK_IMPORTED_MODULE_2_bs58___default.a.encode(keyPair.publicKey); + + // tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer) + this.privateKey = __WEBPACK_IMPORTED_MODULE_2_bs58___default.a.encode(keyPair.secretKey.slice(0, 32)); +} + +/** + * Create an Ed25519 Cryptocondition from an Ed25519 public key to put into an Output of a Transaction + * @param {string} publicKey base58 encoded Ed25519 public key for the recipient of the Transaction + * @returns {object} Ed25519 Condition (that will need to wrapped in an Output) + */ +function makeEd25519Condition(publicKey) { + var publicKeyBuffer = new __WEBPACK_IMPORTED_MODULE_1_buffer__["Buffer"](__WEBPACK_IMPORTED_MODULE_2_bs58___default.a.decode(publicKey)); + + var ed25519Fulfillment = new __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default.a.Ed25519(); + ed25519Fulfillment.setPublicKey(publicKeyBuffer); + var conditionUri = ed25519Fulfillment.getConditionUri(); + + return { + 'details': { + 'signature': null, + 'type_id': 4, + 'type': 'fulfillment', + 'bitmask': 32, + 'public_key': publicKey + }, + 'uri': conditionUri + }; +} + +/** + * Create an Output from a Condition. + * Note: Assumes the given Condition was generated from a single public key (e.g. a Ed25519 Condition) + * @param {object} condition Condition (e.g. a Ed25519 Condition from `makeEd25519Condition()`) + * @param {number} amount Amount of the output + * @returns {object} An Output usable in a Transaction + */ +function makeOutput(condition) { + var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + + return { + amount: amount, + condition: condition, + 'public_keys': [condition.details.public_key] + }; +} + +/** + * Generate a `CREATE` transaction holding the `asset`, `metadata`, and `outputs`, to be signed by + * the `issuers`. + * @param {object} asset Created asset's data + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `CREATE` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the issuers' public + * keys (so that the issuers are the recipients of the created asset). + * @param {...string[]} issuers Public key of one or more issuers to the asset being created by this + * Transaction. + * Note: Each of the private keys corresponding to the given public + * keys MUST be used later (and in the same order) when signing the + * Transaction (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +function makeCreateTransaction(asset, metadata, outputs) { + var assetDefinition = { + 'data': asset || null + }; + + for (var _len = arguments.length, issuers = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + issuers[_key - 3] = arguments[_key]; + } + + var inputs = issuers.map(function (issuer) { + return makeInputTemplate([issuer]); + }); + + return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs); +} + +/** + * Generate a `TRANSFER` transaction holding the `asset`, `metadata`, and `outputs`, that fulfills + * the `fulfilledOutputs` of `unspentTransaction`. + * @param {object} unspentTransaction Previous Transaction you have control over (i.e. can fulfill + * its Output Condition) + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `TRANSFER` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the public keys of + * the recipients. + * @param {...number} fulfilledOutputs Indices of the Outputs in `unspentTransaction` that this + * Transaction fulfills. + * Note that the public keys listed in the fulfilled Outputs + * must be used (and in the same order) to sign the Transaction + * (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +function makeTransferTransaction(unspentTransaction, metadata, outputs) { + for (var _len2 = arguments.length, fulfilledOutputs = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) { + fulfilledOutputs[_key2 - 3] = arguments[_key2]; + } + + var inputs = fulfilledOutputs.map(function (outputIndex) { + var fulfilledOutput = unspentTransaction.outputs[outputIndex]; + var transactionLink = { + 'output': outputIndex, + 'txid': unspentTransaction.id + }; + + return makeInputTemplate(fulfilledOutput.public_keys, transactionLink); + }); + + var assetLink = { + 'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id : unspentTransaction.asset.id + }; + + return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs); +} + +/** + * Sign the given `transaction` with the given `privateKey`s, returning a new copy of `transaction` + * that's been signed. + * Note: Only generates Ed25519 Fulfillments. Thresholds and other types of Fulfillments are left as + * an exercise for the user. + * @param {object} transaction Transaction to sign. `transaction` is not modified. + * @param {...string} privateKeys Private keys associated with the issuers of the `transaction`. + * Looped through to iteratively sign any Input Fulfillments found in + * the `transaction`. + * @returns {object} The signed version of `transaction`. + */ +function signTransaction(transaction) { + for (var _len3 = arguments.length, privateKeys = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + privateKeys[_key3 - 1] = arguments[_key3]; + } + + var signedTx = __WEBPACK_IMPORTED_MODULE_3_clone___default()(transaction); + signedTx.inputs.forEach(function (input, index) { + var privateKey = privateKeys[index]; + var privateKeyBuffer = new __WEBPACK_IMPORTED_MODULE_1_buffer__["Buffer"](__WEBPACK_IMPORTED_MODULE_2_bs58___default.a.decode(privateKey)); + var serializedTransaction = serializeTransactionIntoCanonicalString(transaction); + + var ed25519Fulfillment = new __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default.a.Ed25519(); + ed25519Fulfillment.sign(new __WEBPACK_IMPORTED_MODULE_1_buffer__["Buffer"](serializedTransaction), privateKeyBuffer); + var fulfillmentUri = ed25519Fulfillment.serializeUri(); + + input.fulfillment = fulfillmentUri; + }); + + return signedTx; +} + +/********************* + * Transaction utils * + *********************/ + +function makeTransactionTemplate() { + return { + 'id': null, + 'operation': null, + 'outputs': [], + 'inputs': [], + 'metadata': null, + 'asset': null, + 'version': '0.9' + }; +} + +function makeInputTemplate() { + var publicKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var fulfills = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var fulfillment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + return { + fulfillment: fulfillment, + fulfills: fulfills, + 'owners_before': publicKeys + }; +} + +function makeTransaction(operation, asset) { + var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var outputs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; + var inputs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; + + var tx = makeTransactionTemplate(); + tx.operation = operation; + tx.asset = asset; + tx.metadata = metadata; + tx.inputs = inputs; + tx.outputs = outputs; + + // Hashing must be done after, as the hash is of the Transaction (up to now) + tx.id = hashTransaction(tx); + return tx; +} + +/**************** + * Crypto utils * + ****************/ + +function hashTransaction(transaction) { + // Safely remove any tx id from the given transaction for hashing + var tx = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, transaction); + delete tx.id; + + return sha256Hash(serializeTransactionIntoCanonicalString(tx)); +} + +function sha256Hash(data) { + return __WEBPACK_IMPORTED_MODULE_6_js_sha3___default.a.sha3_256.create().update(data).hex(); +} + +function serializeTransactionIntoCanonicalString(transaction) { + // BigchainDB signs fulfillments by serializing transactions into a "canonical" format where + // each fulfillment URI is removed before sorting the remaining keys + var tx = __WEBPACK_IMPORTED_MODULE_3_clone___default()(transaction); + tx.inputs.forEach(function (input) { + input.fulfillment = null; + }); + + // Sort the keys + return __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify___default()(tx, function (a, b) { + return a.key > b.key ? 1 : -1; + }); +} + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(18), __esModule: true }; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.__esModule = true; + +var _assign = __webpack_require__(12); + +var _assign2 = _interopRequireDefault(_assign); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = _assign2.default || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {// base-x encoding +// Forked from https://github.com/cryptocoinjs/bs58 +// Originally written by Mike Hearn for BitcoinJ +// Copyright (c) 2011 Google Inc +// Ported to JavaScript by Stefan Thomas +// Merged Buffer refactorings from base58-native by Stephen Pair +// Copyright (c) 2013 BitPay Inc + +module.exports = function base (ALPHABET) { + var ALPHABET_MAP = {} + var BASE = ALPHABET.length + var LEADER = ALPHABET.charAt(0) + + // pre-compute lookup table + for (var z = 0; z < ALPHABET.length; z++) { + var x = ALPHABET.charAt(z) + + if (ALPHABET_MAP[x] !== undefined) throw new TypeError(x + ' is ambiguous') + ALPHABET_MAP[x] = z + } + + function encode (source) { + if (source.length === 0) return '' + + var digits = [0] + for (var i = 0; i < source.length; ++i) { + for (var j = 0, carry = source[i]; j < digits.length; ++j) { + carry += digits[j] << 8 + digits[j] = carry % BASE + carry = (carry / BASE) | 0 + } + + while (carry > 0) { + digits.push(carry % BASE) + carry = (carry / BASE) | 0 + } + } + + var string = '' + + // deal with leading zeros + for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0] + // convert digits to a string + for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]] + + return string + } + + function decodeUnsafe (string) { + if (string.length === 0) return Buffer.allocUnsafe(0) + + var bytes = [0] + for (var i = 0; i < string.length; i++) { + var value = ALPHABET_MAP[string[i]] + if (value === undefined) return + + for (var j = 0, carry = value; j < bytes.length; ++j) { + carry += bytes[j] * BASE + bytes[j] = carry & 0xff + carry >>= 8 + } + + while (carry > 0) { + bytes.push(carry & 0xff) + carry >>= 8 + } + } + + // deal with leading zeros + for (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) { + bytes.push(0) + } + + return Buffer.from(bytes.reverse()) + } + + function decode (string) { + var buffer = decodeUnsafe(string) + if (buffer) return buffer + + throw new Error('Non-base' + BASE + ' character') + } + + return { + encode: encode, + decodeUnsafe: decodeUnsafe, + decode: decode + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer)) + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function placeHoldersCount (b64) { + var len = b64.length + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + // base64 is 4/3 + up to two characters of the original data + return b64.length * 3 / 4 - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + var len = b64.length + placeHolders = placeHoldersCount(b64) + + arr = new Arr(len * 3 / 4 - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len + + var L = 0 + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] + arr[L++] = (tmp >> 16) & 0xFF + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[L++] = tmp & 0xFF + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var output = '' + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + output += lookup[tmp >> 2] + output += lookup[(tmp << 4) & 0x3F] + output += '==' + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) + output += lookup[tmp >> 10] + output += lookup[(tmp >> 4) & 0x3F] + output += lookup[(tmp << 2) & 0x3F] + output += '=' + } + + parts.push(output) + + return parts.join('') +} + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +var basex = __webpack_require__(14) +var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' + +module.exports = basex(ALPHABET) + + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var clone = (function() { +'use strict'; + +var nativeMap; +try { + nativeMap = Map; +} catch(_) { + // maybe a reference error because no `Map`. Give it a dummy value that no + // value will ever be an instanceof. + nativeMap = function() {}; +} + +var nativeSet; +try { + nativeSet = Set; +} catch(_) { + nativeSet = function() {}; +} + +var nativePromise; +try { + nativePromise = Promise; +} catch(_) { + nativePromise = function() {}; +} + +/** + * Clones (copies) an Object using deep copying. + * + * This function supports circular references by default, but if you are certain + * there are no circular references in your object, you can save some CPU time + * by calling clone(obj, false). + * + * Caution: if `circular` is false and `parent` contains circular references, + * your program may enter an infinite loop and crash. + * + * @param `parent` - the object to be cloned + * @param `circular` - set to true if the object to be cloned may contain + * circular references. (optional - true by default) + * @param `depth` - set to a number if the object is only to be cloned to + * a particular depth. (optional - defaults to Infinity) + * @param `prototype` - sets the prototype to be used when cloning an object. + * (optional - defaults to parent prototype). + * @param `includeNonEnumerable` - set to true if the non-enumerable properties + * should be cloned as well. Non-enumerable properties on the prototype + * chain will be ignored. (optional - false by default) +*/ +function clone(parent, circular, depth, prototype, includeNonEnumerable) { + if (typeof circular === 'object') { + depth = circular.depth; + prototype = circular.prototype; + includeNonEnumerable = circular.includeNonEnumerable; + circular = circular.circular; + } + // maintain two arrays for circular references, where corresponding parents + // and children have the same index + var allParents = []; + var allChildren = []; + + var useBuffer = typeof Buffer != 'undefined'; + + if (typeof circular == 'undefined') + circular = true; + + if (typeof depth == 'undefined') + depth = Infinity; + + // recurse this function so we don't reset allParents and allChildren + function _clone(parent, depth) { + // cloning null always returns null + if (parent === null) + return null; + + if (depth === 0) + return parent; + + var child; + var proto; + if (typeof parent != 'object') { + return parent; + } + + if (parent instanceof nativeMap) { + child = new nativeMap(); + } else if (parent instanceof nativeSet) { + child = new nativeSet(); + } else if (parent instanceof nativePromise) { + child = new nativePromise(function (resolve, reject) { + parent.then(function(value) { + resolve(_clone(value, depth - 1)); + }, function(err) { + reject(_clone(err, depth - 1)); + }); + }); + } else if (clone.__isArray(parent)) { + child = []; + } else if (clone.__isRegExp(parent)) { + child = new RegExp(parent.source, __getRegExpFlags(parent)); + if (parent.lastIndex) child.lastIndex = parent.lastIndex; + } else if (clone.__isDate(parent)) { + child = new Date(parent.getTime()); + } else if (useBuffer && Buffer.isBuffer(parent)) { + child = new Buffer(parent.length); + parent.copy(child); + return child; + } else if (parent instanceof Error) { + child = Object.create(parent); + } else { + if (typeof prototype == 'undefined') { + proto = Object.getPrototypeOf(parent); + child = Object.create(proto); + } + else { + child = Object.create(prototype); + proto = prototype; + } + } + + if (circular) { + var index = allParents.indexOf(parent); + + if (index != -1) { + return allChildren[index]; + } + allParents.push(parent); + allChildren.push(child); + } + + if (parent instanceof nativeMap) { + var keyIterator = parent.keys(); + while(true) { + var next = keyIterator.next(); + if (next.done) { + break; + } + var keyChild = _clone(next.value, depth - 1); + var valueChild = _clone(parent.get(next.value), depth - 1); + child.set(keyChild, valueChild); + } + } + if (parent instanceof nativeSet) { + var iterator = parent.keys(); + while(true) { + var next = iterator.next(); + if (next.done) { + break; + } + var entryChild = _clone(next.value, depth - 1); + child.add(entryChild); + } + } + + for (var i in parent) { + var attrs; + if (proto) { + attrs = Object.getOwnPropertyDescriptor(proto, i); + } + + if (attrs && attrs.set == null) { + continue; + } + child[i] = _clone(parent[i], depth - 1); + } + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(parent); + for (var i = 0; i < symbols.length; i++) { + // Don't need to worry about cloning a symbol because it is a primitive, + // like a number or string. + var symbol = symbols[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, symbol); + if (descriptor && !descriptor.enumerable && !includeNonEnumerable) { + continue; + } + child[symbol] = _clone(parent[symbol], depth - 1); + if (!descriptor.enumerable) { + Object.defineProperty(child, symbol, { + enumerable: false + }); + } + } + } + + if (includeNonEnumerable) { + var allPropertyNames = Object.getOwnPropertyNames(parent); + for (var i = 0; i < allPropertyNames.length; i++) { + var propertyName = allPropertyNames[i]; + var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName); + if (descriptor && descriptor.enumerable) { + continue; + } + child[propertyName] = _clone(parent[propertyName], depth - 1); + Object.defineProperty(child, propertyName, { + enumerable: false + }); + } + } + + return child; + } + + return _clone(parent, depth); +} + +/** + * Simple flat clone using prototype, accepts only objects, usefull for property + * override on FLAT configuration object (no nested props). + * + * USE WITH CAUTION! This may not behave as you wish if you do not know how this + * works. + */ +clone.clonePrototype = function clonePrototype(parent) { + if (parent === null) + return null; + + var c = function () {}; + c.prototype = parent; + return new c(); +}; + +// private utility functions + +function __objToStr(o) { + return Object.prototype.toString.call(o); +} +clone.__objToStr = __objToStr; + +function __isDate(o) { + return typeof o === 'object' && __objToStr(o) === '[object Date]'; +} +clone.__isDate = __isDate; + +function __isArray(o) { + return typeof o === 'object' && __objToStr(o) === '[object Array]'; +} +clone.__isArray = __isArray; + +function __isRegExp(o) { + return typeof o === 'object' && __objToStr(o) === '[object RegExp]'; +} +clone.__isRegExp = __isRegExp; + +function __getRegExpFlags(re) { + var flags = ''; + if (re.global) flags += 'g'; + if (re.ignoreCase) flags += 'i'; + if (re.multiline) flags += 'm'; + return flags; +} +clone.__getRegExpFlags = __getRegExpFlags; + +return clone; +})(); + +if (typeof module === 'object' && module.exports) { + module.exports = clone; +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer)) + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(44); +module.exports = __webpack_require__(5).Object.assign; + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +module.exports = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(3); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(9) + , toLength = __webpack_require__(40) + , toIndex = __webpack_require__(39); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + +/***/ }), +/* 22 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__(19); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(3) + , document = __webpack_require__(2).document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; + +/***/ }), +/* 25 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(2) + , core = __webpack_require__(5) + , ctx = __webpack_require__(23) + , hide = __webpack_require__(28) + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , IS_WRAP = type & $export.W + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] + , key, own, out; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if(own && key in exports)continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function(C){ + var F = function(a, b, c){ + if(this instanceof C){ + switch(arguments.length){ + case 0: return new C; + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if(IS_PROTO){ + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + +/***/ }), +/* 27 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(31) + , createDesc = __webpack_require__(36); +module.exports = __webpack_require__(0) ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(0) && !__webpack_require__(1)(function(){ + return Object.defineProperty(__webpack_require__(24)('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = __webpack_require__(34) + , gOPS = __webpack_require__(32) + , pIE = __webpack_require__(35) + , toObject = __webpack_require__(41) + , IObject = __webpack_require__(7) + , $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || __webpack_require__(1)(function(){ + var A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , aLen = arguments.length + , index = 1 + , getSymbols = gOPS.f + , isEnum = pIE.f; + while(aLen > index){ + var S = IObject(arguments[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } return T; +} : $assign; + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(20) + , IE8_DOM_DEFINE = __webpack_require__(29) + , toPrimitive = __webpack_require__(42) + , dP = Object.defineProperty; + +exports.f = __webpack_require__(0) ? Object.defineProperty : function defineProperty(O, P, Attributes){ + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if(IE8_DOM_DEFINE)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; + +/***/ }), +/* 32 */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(27) + , toIObject = __webpack_require__(9) + , arrayIndexOf = __webpack_require__(21)(false) + , IE_PROTO = __webpack_require__(37)('IE_PROTO'); + +module.exports = function(object, names){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(33) + , enumBugKeys = __webpack_require__(25); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; + +/***/ }), +/* 35 */ +/***/ (function(module, exports) { + +exports.f = {}.propertyIsEnumerable; + +/***/ }), +/* 36 */ +/***/ (function(module, exports) { + +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(38)('keys') + , uid = __webpack_require__(43); +module.exports = function(key){ + return shared[key] || (shared[key] = uid(key)); +}; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(2) + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(8) + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__(8) + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(6); +module.exports = function(it){ + return Object(defined(it)); +}; + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(3); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; + +/***/ }), +/* 43 */ +/***/ (function(module, exports) { + +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.3.1 Object.assign(target, source) +var $export = __webpack_require__(26); + +$export($export.S + $export.F, 'Object', {assign: __webpack_require__(30)}); + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +!function(t,e){ true?module.exports=e():"function"==typeof define&&define.amd?define("FiveBellsCondition",[],e):"object"==typeof exports?exports.FiveBellsCondition=e():t.FiveBellsCondition=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,e,r){Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=613)}([function(t,e,r){var n=r(4),i=r(32),o=r(14),a=r(15),f=r(33),s="prototype",u=function(t,e,r){var h,c,d,l,p=t&u.F,b=t&u.G,v=t&u.S,y=t&u.P,m=t&u.B,g=b?n:v?n[e]||(n[e]={}):(n[e]||{})[s],w=b?i:i[e]||(i[e]={}),_=w[s]||(w[s]={});b&&(r=e);for(h in r)c=!p&&g&&void 0!==g[h],d=(c?g:r)[h],l=m&&c?f(d,n):y&&"function"==typeof d?f(Function.call,d):d,g&&a(g,h,d,t&u.U),w[h]!=d&&o(w,h,l),y&&_[h]!=d&&(_[h]=d)};n.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,r){"use strict";(function(t,n){function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,r){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function v(e){return+e!=e&&(e=0),t.alloc(+e)}function y(e,r){if(t.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(r){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return V(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Y(e).length;default:if(i)return V(e).length;r=(""+r).toLowerCase(),i=!0}}function m(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function w(e,r,n,i,o){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof r&&(r=t.from(r,i)),t.isBuffer(r))return 0===r.length?-1:_(e,r,n,i,o);if("number"==typeof r)return r&=255,t.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):_(e,[r],n,i,o);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,f=t.length,s=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,f/=2,s/=2,r/=2}var u;if(i){var h=-1;for(u=r;uf&&(r=f-s),u=r;u>=0;u--){for(var c=!0,d=0;di&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+f<=r){var s,u,h,c;switch(f){case 1:o<128&&(a=o);break;case 2:s=t[i+1],128===(192&s)&&(c=(31&o)<<6|63&s,c>127&&(a=c));break;case 3:s=t[i+1],u=t[i+2],128===(192&s)&&128===(192&u)&&(c=(15&o)<<12|(63&s)<<6|63&u,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:s=t[i+1],u=t[i+2],h=t[i+3],128===(192&s)&&128===(192&u)&&128===(192&h)&&(c=(15&o)<<18|(63&s)<<12|(63&u)<<6|63&h,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,f=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=f}return O(n)}function O(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function N(e,r,n,i,o,a){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||re.length)throw new RangeError("Index out of range")}function L(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function U(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(t,e,r,n,i){return i||z(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(t,e,r,n,23,4),r+4}function q(t,e,r,n,i){return i||z(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(t,e,r,n,52,8),r+8}function F(t){if(t=K(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function K(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function G(t){return t<16?"0"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function Y(t){return J.toByteArray(F(t))}function W(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t){return t!==t}var J=r(490),$=r(491),Q=r(492);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,r){return f(null,t,e,r)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,r){return u(null,t,e,r)},t.allocUnsafe=function(t){return h(null,t)},t.allocUnsafeSlow=function(t){return h(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,r){if(!t.isBuffer(e)||!t.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,a=Math.min(n,i);o0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},t.prototype.compare=function(e,r,n,i,o){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var a=o-i,f=n-r,s=Math.min(a,f),u=this.slice(i,o),h=e.slice(r,n),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return E(this,t,e,r);case"latin1":case"binary":return A(this,t,e,r);case"base64":return k(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,r){var n=this.length;e=~~e,r=void 0===r?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--e]*i;return n},t.prototype.readUInt8=function(t,e){return e||C(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||C(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||C(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||C(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},t.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||C(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(t,e){e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(t,e){return e||C(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||C(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;N(this,t,e,r,i,0)}var o=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+o]=t/a&255;return e+r},t.prototype.writeUInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},t.prototype.writeUInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeUInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeUInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):U(this,e,r,!0),r+4},t.prototype.writeUInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=0,a=1,f=0;for(this[e]=255&t;++o>0)-f&255;return e+r},t.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=r-1,a=1,f=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===f&&0!==this[e+o+1]&&(f=1),this[e+o]=(t/a>>0)-f&255;return e+r},t.prototype.writeInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},t.prototype.writeInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):U(this,e,r,!0),r+4},t.prototype.writeInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},t.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},t.prototype.writeDoubleLE=function(t,e,r){return q(this,t,e,!0,r)},t.prototype.writeDoubleBE=function(t,e,r){return q(this,t,e,!1,r)},t.prototype.copy=function(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(a<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=r;a0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(24);t.exports=function(t){return Object(n(t))}},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(9),i=r(37);t.exports=r(8)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(4),i=r(14),o=r(12),a=r(48)("src"),f="toString",s=Function[f],u=(""+s).split(f);r(32).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,r,f){var s="function"==typeof r;s&&(o(r,"name")||i(r,"name",e)),t[e]!==r&&(s&&(o(r,a)||i(r,a,t[e]?""+t[e]:u.join(String(e)))),t===n?t[e]=r:f?t[e]?t[e]=r:i(t,e,r):(delete t[e],i(t,e,r)))})(Function.prototype,f,function(){return"function"==typeof this&&this[a]||s.call(this)})},function(t,e,r){var n=r(0),i=r(5),o=r(24),a=/"/g,f=function(t,e,r,n){var i=String(o(t)),f="<"+e;return""!==r&&(f+=" "+r+'="'+String(n).replace(a,""")+'"'),f+">"+i+""};t.exports=function(t,e){var r={};r[t]=e(f),n(n.P+n.F*i(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",r)}},function(t,e,r){var n=r(65),i=r(24);t.exports=function(t){return n(i(t))}},function(t,e,r){(function(t){!function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function m(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e); +return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){"use strict";var n=e;n.version=r(465).version,n.utils=r(521),n.rand=r(522),n.hmacDRBG=r(519),n.curve=r(99),n.curves=r(512),n.ec=r(513),n.eddsa=r(516)},function(t,e,r){var n=r(66),i=r(37),o=r(17),a=r(29),f=r(12),s=r(174),u=Object.getOwnPropertyDescriptor;e.f=r(8)?u:function(t,e){if(t=o(t),e=a(e,!0),s)try{return u(t,e)}catch(t){}if(f(t,e))return i(!n.f.call(t,e),t[e])}},function(t,e,r){var n=r(12),i=r(11),o=r(133)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,r){"use strict";var n=e;n.version=r(467).version,n.utils=r(558),n.rand=r(559),n.hmacDRBG=r(556),n.curve=r(104),n.curves=r(549),n.ec=r(550),n.eddsa=r(553)},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,r){var n=r(5);t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e){function r(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function i(t){if(h===setTimeout)return setTimeout(t,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){b&&l&&(b=!1,l.length?p=l.concat(p):v=-1,p.length&&f())}function f(){if(!b){var t=i(a);b=!0;for(var e=p.length;e;){for(l=p,p=[];++v1)for(var r=1;r_;_++)if((d||_ in m)&&(b=m[_],v=g(b,_,y),t))if(r)M[_]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return _;case 2:M.push(b)}else if(h)return!1;return c?-1:u||h?h:M}}},function(t,e,r){var n=r(0),i=r(32),o=r(5);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],a={};a[t]=e(r),n(n.S+n.F*o(function(){r(1)}),"Object",a)}},function(t,e,r){var n=r(6);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){(function(t){!function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function m(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){function n(){i.call(this)}t.exports=n;var i=r(110).EventEmitter,o=r(603);o(n,i),n.Readable=r(600),n.Writable=r(602),n.Duplex=r(595),n.Transform=r(601),n.PassThrough=r(599),n.Stream=n,n.prototype.pipe=function(t,e){function r(e){t.writable&&!1===t.write(e)&&u.pause&&u.pause()}function n(){u.readable&&u.resume&&u.resume()}function o(){h||(h=!0,t.end())}function a(){h||(h=!0,"function"==typeof t.destroy&&t.destroy())}function f(t){if(s(),0===i.listenerCount(this,"error"))throw t}function s(){u.removeListener("data",r),t.removeListener("drain",n),u.removeListener("end",o),u.removeListener("close",a),u.removeListener("error",f),t.removeListener("error",f),u.removeListener("end",s),u.removeListener("close",s),t.removeListener("close",s)}var u=this;u.on("data",r),t.on("drain",n),t._isStdio||e&&e.end===!1||(u.on("end",o),u.on("close",a));var h=!1;return u.on("error",f),t.on("error",f),u.on("end",s),u.on("close",s),t.on("close",s),t.emit("pipe",u),t}},function(t,e){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(13);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(190),i=r(0),o=r(87)("metadata"),a=o.store||(o.store=new(r(193))),f=function(t,e,r){var i=a.get(t);if(!i){if(!r)return;a.set(t,i=new n)}var o=i.get(e);if(!o){if(!r)return;i.set(e,o=new n)}return o},s=function(t,e,r){var n=f(e,r,!1);return void 0!==n&&n.has(t)},u=function(t,e,r){var n=f(e,r,!1);return void 0===n?void 0:n.get(t)},h=function(t,e,r,n){f(r,n,!0).set(t,e)},c=function(t,e){var r=f(t,e,!1),n=[];return r&&r.forEach(function(t,e){n.push(e)}),n},d=function(t){return void 0===t||"symbol"==typeof t?t:String(t)},l=function(t){i(i.S,"Reflect",t)};t.exports={store:a,map:f,has:s,get:u,set:h,keys:c,key:d,exp:l}},function(t,e,r){"use strict";if(r(8)){var n=r(41),i=r(4),o=r(5),a=r(0),f=r(88),s=r(140),u=r(33),h=r(40),c=r(37),d=r(14),l=r(45),p=r(38),b=r(10),v=r(47),y=r(29),m=r(12),g=r(187),w=r(64),_=r(6),M=r(11),S=r(125),E=r(42),A=r(21),k=r(43).f,x=r(142),I=r(48),B=r(7),O=r(27),R=r(78),P=r(134),T=r(143),j=r(56),C=r(84),N=r(46),L=r(118),U=r(167),z=r(9),D=r(20),q=z.f,F=D.f,K=i.RangeError,G=i.TypeError,V=i.Uint8Array,H="ArrayBuffer",X="Shared"+H,Y="BYTES_PER_ELEMENT",W="prototype",Z=Array[W],J=s.ArrayBuffer,$=s.DataView,Q=O(0),tt=O(2),et=O(3),rt=O(4),nt=O(5),it=O(6),ot=R(!0),at=R(!1),ft=T.values,st=T.keys,ut=T.entries,ht=Z.lastIndexOf,ct=Z.reduce,dt=Z.reduceRight,lt=Z.join,pt=Z.sort,bt=Z.slice,vt=Z.toString,yt=Z.toLocaleString,mt=B("iterator"),gt=B("toStringTag"),wt=I("typed_constructor"),_t=I("def_constructor"),Mt=f.CONSTR,St=f.TYPED,Et=f.VIEW,At="Wrong length!",kt=O(1,function(t,e){return Pt(P(t,t[_t]),e)}),xt=o(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),It=!!V&&!!V[W].set&&o(function(){new V(1).set({})}),Bt=function(t,e){if(void 0===t)throw G(At);var r=+t,n=b(t);if(e&&!g(r,n))throw K(At);return n},Ot=function(t,e){var r=p(t);if(r<0||r%e)throw K("Wrong offset!");return r},Rt=function(t){if(_(t)&&St in t)return t;throw G(t+" is not a typed array!")},Pt=function(t,e){if(!(_(t)&&wt in t))throw G("It is not a typed array constructor!");return new t(e)},Tt=function(t,e){return jt(P(t,t[_t]),e)},jt=function(t,e){for(var r=0,n=e.length,i=Pt(t,n);n>r;)i[r]=e[r++];return i},Ct=function(t,e,r){q(t,e,{get:function(){return this._d[r]}})},Nt=function(t){var e,r,n,i,o,a,f=M(t),s=arguments.length,h=s>1?arguments[1]:void 0,c=void 0!==h,d=x(f);if(void 0!=d&&!S(d)){for(a=d.call(f),n=[],e=0;!(o=a.next()).done;e++)n.push(o.value);f=n}for(c&&s>2&&(h=u(h,arguments[2],2)),e=0,r=b(f.length),i=Pt(this,r);r>e;e++)i[e]=c?h(f[e],e):f[e];return i},Lt=function(){for(var t=0,e=arguments.length,r=Pt(this,e);e>t;)r[t]=arguments[t++];return r},Ut=!!V&&o(function(){yt.call(new V(1))}),zt=function(){return yt.apply(Ut?bt.call(Rt(this)):Rt(this),arguments)},Dt={copyWithin:function(t,e){return U.call(Rt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return rt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return L.apply(Rt(this),arguments)},filter:function(t){return Tt(this,tt(Rt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return nt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return it(Rt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Rt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return at(Rt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return ot(Rt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return lt.apply(Rt(this),arguments)},lastIndexOf:function(t){return ht.apply(Rt(this),arguments)},map:function(t){return kt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Rt(this),arguments)},reduceRight:function(t){return dt.apply(Rt(this),arguments)},reverse:function(){for(var t,e=this,r=Rt(e).length,n=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function(t){return pt.call(Rt(this),t)},subarray:function(t,e){var r=Rt(this),n=r.length,i=v(t,n);return new(P(r,r[_t]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,b((void 0===e?n:v(e,n))-i))}},qt=function(t,e){return Tt(this,bt.call(Rt(this),t,e))},Ft=function(t){Rt(this);var e=Ot(arguments[1],1),r=this.length,n=M(t),i=b(n.length),o=0;if(i+e>r)throw K(At);for(;o255?255:255&n),i.v[p](r*e+i.o,n,xt)},B=function(t,e){q(t,e,{get:function(){return x(this,e)},set:function(t){return I(this,e,t)},enumerable:!0})};g?(v=r(function(t,r,n,i){h(t,v,u,"_d");var o,a,f,s,c=0,l=0;if(_(r)){if(!(r instanceof J||(s=w(r))==H||s==X))return St in r?jt(v,r):Nt.call(v,r);o=r,l=Ot(n,e);var p=r.byteLength;if(void 0===i){if(p%e)throw K(At);if(a=p-l,a<0)throw K(At)}else if(a=b(i)*e,a+l>p)throw K(At);f=a/e}else f=Bt(r,!0),a=f*e,o=new J(a);for(d(t,"_d",{b:o,o:l,l:a,e:f,v:new $(o)});c0?n:r)(t)}},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,e){t.exports=!1},function(t,e,r){var n=r(3),i=r(180),o=r(121),a=r(133)("IE_PROTO"),f=function(){},s="prototype",u=function(){var t,e=r(120)("iframe"),n=o.length,i="<",a=">";for(e.style.display="none",r(123).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(i+"script"+a+"document.F=Object"+i+"/script"+a),t.close(),u=t.F;n--;)delete u[s][o[n]];return u()};t.exports=Object.create||function(t,e){var r;return null!==t?(f[s]=n(t),r=new f,f[s]=null,r[a]=t):r=u(),void 0===e?r:i(r,e)}},function(t,e,r){var n=r(182),i=r(121).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},function(t,e,r){var n=r(182),i=r(121);t.exports=Object.keys||function(t){return n(t,i)}},function(t,e,r){var n=r(15);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},function(t,e,r){"use strict";var n=r(4),i=r(9),o=r(8),a=r(7)("species");t.exports=function(t){var e=n[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,r){var n=r(38),i=Math.max,o=Math.min;t.exports=function(t,e){return t=n(t),t<0?i(t+e,0):o(t,e)}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+n).toString(36))}},function(t,e,r){var n=e;n.utils=r(527),n.common=r(523),n.sha=r(526),n.ripemd=r(525),n.hmac=r(524),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){var n=e;n.utils=r(564),n.common=r(560),n.sha=r(563),n.ripemd=r(562),n.hmac=r(561),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){"use strict";function n(t){return this instanceof n?(u.call(this,t),h.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",i)):new n(t)}function i(){this.allowHalfOpen||this._writableState.ended||f(o,this)}function o(t){t.end()}var a=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=n;var f=r(157),s=r(73);s.inherits=r(74);var u=r(250),h=r(155);s.inherits(n,u);for(var c=a(h.prototype),d=0;d=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&n<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,n=e.charCodeAt(i);if(n>=55296&&n<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},u.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},u.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); +return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){var n=r(7)("unscopables"),i=Array.prototype;void 0==i[n]&&r(14)(i,n,{}),t.exports=function(t){i[n][t]=!0}},function(t,e,r){var n=r(33),i=r(176),o=r(125),a=r(3),f=r(10),s=r(142),u={},h={},e=t.exports=function(t,e,r,c,d){var l,p,b,v,y=d?function(){return t}:s(t),m=n(r,c,e?2:1),g=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(l=f(t.length);l>g;g++)if(v=e?m(a(p=t[g])[0],p[1]):m(t[g]),v===u||v===h)return v}else for(b=y.call(t);!(p=b.next()).done;)if(v=i(b,m,p.value,e),v===u||v===h)return v};e.BREAK=u,e.RETURN=h},function(t,e){t.exports={}},function(t,e,r){var n=r(9).f,i=r(12),o=r(7)("toStringTag");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},function(t,e,r){var n=r(0),i=r(24),o=r(5),a=r(138),f="["+a+"]",s="​…",u=RegExp("^"+f+f+"*"),h=RegExp(f+f+"*$"),c=function(t,e,r){var i={},f=o(function(){return!!a[t]()||s[t]()!=s}),u=i[t]=f?e(d):a[t];r&&(i[r]=u),n(n.P+n.F*f,"String",i)},d=c.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(h,"")),t};t.exports=c},function(t,e,r){"use strict";(function(e){function n(t){u.call(this,"digest"),this._hash=t,this.buffers=[]}function i(t){u.call(this,"digest"),this._hash=t}var o=r(2),a=r(105),f=r(567),s=r(568),u=r(566);o(n,u),n.prototype._update=function(t){this.buffers.push(t)},n.prototype._final=function(){var t=e.concat(this.buffers),r=this._hash(t);return this.buffers=null,r},o(i,u),i.prototype._update=function(t){this._hash.update(t)},i.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return t=t.toLowerCase(),"md5"===t?new n(a):"rmd160"===t||"ripemd160"===t?new n(f):new i(s(t))}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function r(t,r){this._block=new e(t),this._finalSize=r,this._blockSize=t,this._len=0,this._s=0}r.prototype.update=function(t,r){"string"==typeof t&&(r=r||"utf8",t=new e(t,r));for(var n=this._len+=t.length,i=this._s||0,o=0,a=this._block;i=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(e,this._blockSize-4);var r=this._update(this._block)||this._hash();return t?r.toString(t):r},r.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=r}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e,r,n){function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}function o(t,i){if(t>65536)throw new Error("requested too many random bytes");var o=new e.Uint8Array(t);t>0&&a.getRandomValues(o);var f=new r(o.buffer);return"function"==typeof i?n.nextTick(function(){i(null,f)}):f}var a=e.crypto||e.msCrypto;a&&a.getRandomValues?t.exports=o:t.exports=i}).call(e,r(39),r(1).Buffer,r(26))},function(t,e){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return Object.defineProperty(i,"message",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):""}),Object.defineProperty(i,"name",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function m(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n}, +d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){var n=e;n.Reporter=r(582).Reporter,n.DecoderBuffer=r(234).DecoderBuffer,n.EncoderBuffer=r(234).EncoderBuffer,n.Node=r(581)},function(t,e,r){(function(e){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),o=0;ot.MAX_SAFE_BITMASK)throw new Error("Bitmask too large to be safely represented");if(this.getBitmask()&~t.SUPPORTED_BITMASK)throw new Error("Condition requested unsupported feature suites");if(this.getMaxFulfillmentLength()>t.MAX_FULFILLMENT_LENGTH)throw new Error("Condition requested too large of a max fulfillment size");return!0}}],[{key:"fromUri",value:function(e){if(e instanceof t)return e;if("string"!=typeof e)throw new Error("Serialized condition must be a string");var r=e.split(":");if("cc"!==r[0])throw new a('Serialized condition must start with "cc:"');if(!t.REGEX_STRICT.exec(e))throw new f("Invalid condition format");var n=new t;return n.setTypeId(parseInt(r[1],16)),n.setBitmask(parseInt(r[2],16)),n.setHash(u.decode(r[3])),n.setMaxFulfillmentLength(parseInt(r[4],10)),n}},{key:"fromBinary",value:function(e){e=h.from(e);var r=new t;return r.parseBinary(e),r}}]),t}();b.MAX_SAFE_BITMASK=4294967295,b.SUPPORTED_BITMASK=63,b.MAX_FULFILLMENT_LENGTH=65535,b.REGEX=l,b.REGEX_STRICT=p,t.exports=b}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rh;)if(f=s[h++],f!=f)return!0}else for(;u>h;h++)if((t||h in s)&&s[h]===r)return t||h||0;return!t&&-1}}},function(t,e,r){"use strict";var n=r(4),i=r(0),o=r(15),a=r(45),f=r(36),s=r(55),u=r(40),h=r(6),c=r(5),d=r(84),l=r(57),p=r(124);t.exports=function(t,e,r,b,v,y){var m=n[t],g=m,w=v?"set":"add",_=g&&g.prototype,M={},S=function(t){var e=_[t];o(_,t,"delete"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!h(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,r){return e.call(this,0===t?0:t,r),this})};if("function"==typeof g&&(y||_.forEach&&!c(function(){(new g).entries().next()}))){var E=new g,A=E[w](y?{}:-0,1)!=E,k=c(function(){E.has(1)}),x=d(function(t){new g(t)}),I=!y&&c(function(){for(var t=new g,e=5;e--;)t[w](e,e);return!t.has(-0)});x||(g=e(function(e,r){u(e,g,t);var n=p(new m,e,g);return void 0!=r&&s(r,v,n[w],n),n}),g.prototype=_,_.constructor=g),(k||I)&&(S("delete"),S("has"),v&&S("get")),(I||A)&&S(w),y&&_.clear&&delete _.clear}else g=b.getConstructor(e,t,v,w),a(g.prototype,r),f.NEED=!0;return l(g,t),M[t]=g,i(i.G+i.W+i.F*(g!=m),M),y||b.setStrong(g,t,v),g}},function(t,e,r){"use strict";var n=r(14),i=r(15),o=r(5),a=r(24),f=r(7);t.exports=function(t,e,r){var s=f(t),u=r(a,s,""[t]),h=u[0],c=u[1];o(function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})&&(i(String.prototype,t,h),n(RegExp.prototype,s,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},function(t,e,r){"use strict";var n=r(3);t.exports=function(){var t=n(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e){t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},function(t,e,r){var n=r(6),i=r(23),o=r(7)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},function(t,e,r){var n=r(7)("iterator"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},t(o)}catch(t){}return r}},function(t,e,r){t.exports=r(41)||!r(5)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete r(4)[t]})},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(4),i="__core-js_shared__",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){for(var n,i=r(4),o=r(14),a=r(48),f=a("typed_array"),s=a("view"),u=!(!i.ArrayBuffer||!i.DataView),h=u,c=0,d=9,l="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");cf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]]; +return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e){e["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},e["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},e["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},e["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},e["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},e["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},e.aes128=e["aes-128-cbc"],e.aes192=e["aes-192-cbc"],e.aes256=e["aes-256-cbc"],e["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},e["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},e["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},e["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},e["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},e["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},e["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},e["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},e["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},e["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},e["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},e["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},e["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},e["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},e["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},e["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},e["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},e["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(67);e.encrypt=function(e,r){for(;e._cache.lengthf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(69);e.encrypt=function(e,r){for(;e._cache.length>5]|=128<>>9<<4)+14]=e;for(var r=1732584193,n=-271733879,i=-1732584194,h=271733878,c=0;c>16)+(e>>16)+(r>>16);return n<<16|65535&r}function h(t,e){return t<>>32-e}var c=r(565);t.exports=function(t){return c.hash(t,n,16)}},function(t,e,r){var n=e;n.bignum=r(70),n.define=r(580).define,n.base=r(71),n.constants=r(235),n.decoders=r(584),n.encoders=r(586)},function(t,e,r){(function(t){function r(t){var e,r;return e=t>f||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(72);e.encrypt=function(e,r){for(;e._cache.length0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),i||(i=!0,e.apply(this,arguments))}if(!n(e))throw TypeError("listener must be a function");var i=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,i,a,f;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,i=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(r)){for(f=a;f-- >0;)if(r[f]===e||r[f].listener&&r[f].listener===e){i=f;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],n(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name="InvalidAsn1Error",e.message=t||"",e}}},function(t,e){t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rNumber.MAX_SAFE_INTEGER)throw new o("Type "+e+" is not supported");var r=!0,n=!1,i=void 0;try{for(var a,f=t.registeredTypes[Symbol.iterator]();!(r=(a=f.next()).done);r=!0){var s=a.value;if(e===s.typeId)return s.Class}}catch(t){n=!0,i=t}finally{try{!r&&f.return&&f.return()}finally{if(n)throw i}}throw new o("Type "+e+" is not supported")}},{key:"registerType",value:function(e){t.registeredTypes.push({typeId:e.TYPE_ID,Class:e})}}]),t}();a.registeredTypes=[],t.exports=a},function(t,e,r){"use strict";(function(e){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,e){for(var r=0;r1?arguments[1]:void 0,r),s=a>2?arguments[2]:void 0,u=void 0===s?r:i(s,r);u>f;)e[f++]=t;return e}},function(t,e,r){"use strict";var n=r(9),i=r(37);t.exports=function(t,e,r){e in t?n.f(t,e,i(0,r)):t[e]=r}},function(t,e,r){var n=r(6),i=r(4).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,r){var n=r(7)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[n]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,r){t.exports=r(4).document&&document.documentElement},function(t,e,r){var n=r(6),i=r(132).set;t.exports=function(t,e,r){var o,a=e.constructor;return a!==r&&"function"==typeof a&&(o=a.prototype)!==r.prototype&&n(o)&&i&&i(t,o),t}},function(t,e,r){var n=r(56),i=r(7)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[i]===t)}},function(t,e,r){var n=r(23);t.exports=Array.isArray||function(t){return"Array"==n(t)}},function(t,e,r){"use strict";var n=r(42),i=r(37),o=r(57),a={};r(14)(a,r(7)("iterator"),function(){return this}),t.exports=function(t,e,r){t.prototype=n(a,{next:i(1,r)}),o(t,e+" Iterator")}},function(t,e,r){"use strict";var n=r(41),i=r(0),o=r(15),a=r(14),f=r(12),s=r(56),u=r(127),h=r(57),c=r(21),d=r(7)("iterator"),l=!([].keys&&"next"in[].keys()),p="@@iterator",b="keys",v="values",y=function(){return this};t.exports=function(t,e,r,m,g,w,_){u(r,e,m);var M,S,E,A=function(t){if(!l&&t in B)return B[t];switch(t){case b:return function(){return new r(this,t)};case v:return function(){return new r(this,t)}}return function(){return new r(this,t)}},k=e+" Iterator",x=g==v,I=!1,B=t.prototype,O=B[d]||B[p]||g&&B[g],R=O||A(g),P=g?x?A("entries"):R:void 0,T="Array"==e?B.entries||O:O;if(T&&(E=c(T.call(new t)),E!==Object.prototype&&(h(E,k,!0),n||f(E,d)||a(E,d,y))),x&&O&&O.name!==v&&(I=!0,R=function(){return O.call(this)}),n&&!_||!l&&!I&&B[d]||a(B,d,R),s[e]=R,s[k]=y,g)if(M={values:x?R:A(v),keys:w?R:A(b),entries:P},_)for(S in M)S in B||o(B,S,M[S]);else i(i.P+i.F*(l||I),e,M);return M}},function(t,e){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||r(-2e-17)!=-2e-17?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,r){var n=r(4),i=r(139).set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,f=n.Promise,s="process"==r(23)(a);t.exports=function(){var t,e,r,u=function(){var n,i;for(s&&(n=a.domain)&&n.exit();t;){i=t.fn,t=t.next;try{i()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(s)r=function(){a.nextTick(u)};else if(o){var h=!0,c=document.createTextNode("");new o(u).observe(c,{characterData:!0}),r=function(){c.data=h=!h}}else if(f&&f.resolve){var d=f.resolve();r=function(){d.then(u)}}else r=function(){i.call(n,u)};return function(n){var i={fn:n,next:void 0};e&&(e.next=i),t||(t=i,r()),e=i}}},function(t,e,r){var n=r(6),i=r(3),o=function(t,e){if(i(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{n=r(33)(Function.call,r(20).f(Object.prototype,"__proto__").set,2),n(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,r){return o(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check:o}},function(t,e,r){var n=r(87)("keys"),i=r(48);t.exports=function(t){return n[t]||(n[t]=i(t))}},function(t,e,r){var n=r(3),i=r(13),o=r(7)("species");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||void 0==(r=n(a)[o])?e:i(r)}},function(t,e,r){var n=r(38),i=r(24);t.exports=function(t){return function(e,r){var o,a,f=String(i(e)),s=n(r),u=f.length;return s<0||s>=u?t?"":void 0:(o=f.charCodeAt(s),o<55296||o>56319||s+1===u||(a=f.charCodeAt(s+1))<56320||a>57343?t?f.charAt(s):o:t?f.slice(s,s+2):(o-55296<<10)+(a-56320)+65536)}}},function(t,e,r){var n=r(83),i=r(24);t.exports=function(t,e,r){if(n(e))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},function(t,e,r){"use strict";var n=r(38),i=r(24);t.exports=function(t){var e=String(i(this)),r="",o=n(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(r+=e);return r}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,r){var n,i,o,a=r(33),f=r(82),s=r(123),u=r(120),h=r(4),c=h.process,d=h.setImmediate,l=h.clearImmediate,p=h.MessageChannel,b=0,v={},y="onreadystatechange",m=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},g=function(t){m.call(t.data)};d&&l||(d=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return v[++b]=function(){f("function"==typeof t?t:Function(t),e)},n(b),b},l=function(t){delete v[t]},"process"==r(23)(c)?n=function(t){c.nextTick(a(m,t,1))}:p?(i=new p,o=i.port2,i.port1.onmessage=g,n=a(o.postMessage,o,1)):h.addEventListener&&"function"==typeof postMessage&&!h.importScripts?(n=function(t){h.postMessage(t+"","*")},h.addEventListener("message",g,!1)):n=y in u("script")?function(t){s.appendChild(u("script"))[y]=function(){s.removeChild(this),m.call(t)}}:function(t){setTimeout(a(m,t,1),0)}),t.exports={set:d,clear:l}},function(t,e,r){"use strict";var n=r(4),i=r(8),o=r(41),a=r(88),f=r(14),s=r(45),u=r(5),h=r(40),c=r(38),d=r(10),l=r(43).f,p=r(9).f,b=r(118),v=r(57),y="ArrayBuffer",m="DataView",g="prototype",w="Wrong length!",_="Wrong index!",M=n[y],S=n[m],E=n.Math,A=n.RangeError,k=n.Infinity,x=M,I=E.abs,B=E.pow,O=E.floor,R=E.log,P=E.LN2,T="buffer",j="byteLength",C="byteOffset",N=i?"_b":T,L=i?"_l":j,U=i?"_o":C,z=function(t,e,r){ +var n,i,o,a=Array(r),f=8*r-e-1,s=(1<>1,h=23===e?B(2,-24)-B(2,-77):0,c=0,d=t<0||0===t&&1/t<0?1:0;for(t=I(t),t!=t||t===k?(i=t!=t?1:0,n=s):(n=O(R(t)/P),t*(o=B(2,-n))<1&&(n--,o*=2),t+=n+u>=1?h/o:h*B(2,1-u),t*o>=2&&(n++,o/=2),n+u>=s?(i=0,n=s):n+u>=1?(i=(t*o-1)*B(2,e),n+=u):(i=t*B(2,u-1)*B(2,e),n=0));e>=8;a[c++]=255&i,i/=256,e-=8);for(n=n<0;a[c++]=255&n,n/=256,f-=8);return a[--c]|=128*d,a},D=function(t,e,r){var n,i=8*r-e-1,o=(1<>1,f=i-7,s=r-1,u=t[s--],h=127&u;for(u>>=7;f>0;h=256*h+t[s],s--,f-=8);for(n=h&(1<<-f)-1,h>>=-f,f+=e;f>0;n=256*n+t[s],s--,f-=8);if(0===h)h=1-a;else{if(h===o)return n?NaN:u?-k:k;n+=B(2,e),h-=a}return(u?-1:1)*n*B(2,h-e)},q=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},F=function(t){return[255&t]},K=function(t){return[255&t,t>>8&255]},G=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},V=function(t){return z(t,52,8)},H=function(t){return z(t,23,4)},X=function(t,e,r){p(t[g],e,{get:function(){return this[r]}})},Y=function(t,e,r,n){var i=+r,o=c(i);if(i!=o||o<0||o+e>t[L])throw A(_);var a=t[N]._b,f=o+t[U],s=a.slice(f,f+e);return n?s:s.reverse()},W=function(t,e,r,n,i,o){var a=+r,f=c(a);if(a!=f||f<0||f+e>t[L])throw A(_);for(var s=t[N]._b,u=f+t[U],h=n(+i),d=0;dtt;)(J=Q[tt++])in M||f(M,J,x[J]);o||($.constructor=M)}var et=new S(new M(2)),rt=S[g].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),!et.getInt8(0)&&et.getInt8(1)||s(S[g],{setInt8:function(t,e){rt.call(this,t,e<<24>>24)},setUint8:function(t,e){rt.call(this,t,e<<24>>24)}},!0)}else M=function(t){var e=Z(this,t);this._b=b.call(Array(e),0),this[L]=e},S=function(t,e,r){h(this,S,m),h(t,M,m);var n=t[L],i=c(e);if(i<0||i>n)throw A("Wrong offset!");if(r=void 0===r?n-i:d(r),i+r>n)throw A(w);this[N]=t,this[U]=i,this[L]=r},i&&(X(M,j,"_l"),X(S,T,"_b"),X(S,j,"_l"),X(S,C,"_o")),s(S[g],{getInt8:function(t){return Y(this,1,t)[0]<<24>>24},getUint8:function(t){return Y(this,1,t)[0]},getInt16:function(t){var e=Y(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Y(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return q(Y(this,4,t,arguments[1]))},getUint32:function(t){return q(Y(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return D(Y(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return D(Y(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){W(this,1,t,F,e)},setUint8:function(t,e){W(this,1,t,F,e)},setInt16:function(t,e){W(this,2,t,K,e,arguments[2])},setUint16:function(t,e){W(this,2,t,K,e,arguments[2])},setInt32:function(t,e){W(this,4,t,G,e,arguments[2])},setUint32:function(t,e){W(this,4,t,G,e,arguments[2])},setFloat32:function(t,e){W(this,4,t,H,e,arguments[2])},setFloat64:function(t,e){W(this,8,t,V,e,arguments[2])}});v(M,y),v(S,m),f(S[g],a.VIEW,!0),e[y]=M,e[m]=S},function(t,e,r){var n=r(4),i=r(32),o=r(41),a=r(189),f=r(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||f(e,t,{value:a.f(t)})}},function(t,e,r){var n=r(64),i=r(7)("iterator"),o=r(56);t.exports=r(32).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[n(t)]}},function(t,e,r){"use strict";var n=r(54),i=r(177),o=r(56),a=r(17);t.exports=r(128)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):"keys"==e?i(0,r):"values"==e?i(0,t[r]):i(0,[r,t[r]])},"values"),o.Arguments=o.Array,n("keys"),n("values"),n("entries")},function(t,e,r){t.exports=!r(199)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,r){"use strict";e.utils=r(505),e.Cipher=r(502),e.DES=r(503),e.CBC=r(501),e.EDE=r(504)},function(t,e,r){(function(e){function n(t,r,n,o){e.isBuffer(t)||(t=new e(t,"binary")),r&&!e.isBuffer(r)&&(r=new e(r,"binary")),n/=8,o=o||0;for(var a,f,s=0,u=0,h=new e(n),c=new e(o),d=0,l=[];;){if(d++>0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;fn?r=i(t).update(r).digest():r.length=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function m(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){(function(t,n){var i=r(149),o=r(576);e.pbkdf2=function(t,r,n,i,a,f){if("function"==typeof a&&(f=a,a=void 0),o(n,i),"function"!=typeof f)throw new Error("No callback provided to pbkdf2");setTimeout(function(){f(null,e.pbkdf2Sync(t,r,n,i,a))})};var a;if(t.browser)a="utf-8";else{var f=parseInt(t.version.split(".")[0].slice(1),10);a=f>=6?"utf-8":"binary"}e.pbkdf2Sync=function(t,e,r,f,s){n.isBuffer(t)||(t=new n(t,a)),n.isBuffer(e)||(e=new n(e,a)),o(r,f),s=s||"sha1";var u,h=1,c=new n(f),d=new n(e.length+4);e.copy(d,0,0,e.length);for(var l,p,b=1;b<=h;b++){d.writeUInt32BE(b,e.length);var v=i(s,t).update(d).digest();u||(u=v.length,p=new n(u),h=Math.ceil(f/u),l=f-(h-1)*u),v.copy(p,0,0,u);for(var y=1;y0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f-1?n:E;f.WritableState=a;var k=r(73);k.inherits=r(74);var x,I={deprecate:r(598)};!function(){try{x=r(31)}catch(t){}finally{x||(x=r(110).EventEmitter)}}();var B=r(1).Buffer,O=r(156);k.inherits(f,x);var R;a.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(a.prototype,"buffer",{get:I.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(t){}}();var R;f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},f.prototype.write=function(t,e,r){var n=this._writableState,o=!1;return"function"==typeof e&&(r=e,e=null),B.isBuffer(t)?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=i),n.ended?s(this,r):u(this,n,t,r)&&(n.pendingcb++,o=c(this,n,t,e,r)),o},f.prototype.cork=function(){var t=this._writableState;t.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||m(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,r){r(new Error("not implemented"))},f.prototype._writev=null,f.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||M(this,n,r)}}).call(e,r(26),r(158).setImmediate)},function(t,e,r){"use strict";(function(t){var n=r(1),i=n.Buffer,o=n.SlowBuffer,a=n.kMaxLength||2147483647;e.alloc=function(t,e,r){if("function"==typeof i.alloc)return i.alloc(t,e,r);if("number"==typeof r)throw new TypeError("encoding must not be number");if("number"!=typeof t)throw new TypeError("size must be a number");if(t>a)throw new RangeError("size is too large");var n=r,o=e;void 0===o&&(n=void 0,o=0);var f=new i(t);if("string"==typeof o)for(var s=new i(o,n),u=s.length,h=-1;++ha)throw new RangeError("size is too large");return new i(t)},e.from=function(e,r,n){if("function"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,r,n);if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new i(e,r);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var o=r;if(1===arguments.length)return new i(e);"undefined"==typeof o&&(o=0);var a=n;if("undefined"==typeof a&&(a=e.byteLength-o),o>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(a>e.byteLength-o)throw new RangeError("'length' is out of bounds");return new i(e.slice(o,o+a))}if(i.isBuffer(e)){var f=new i(e.length);return e.copy(f,0,0,e.length),f}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new i(e);if("Buffer"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},e.allocUnsafeSlow=function(t){if("function"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(t);if("number"!=typeof t)throw new TypeError("size must be a number");if(t>=a)throw new RangeError("size is too large");return new o(t)}}).call(e,r(39))},function(t,e,r){"use strict";(function(e){function r(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,f=arguments.length;switch(f){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(f-1),a=0;a=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate="function"==typeof t?t:function(t){var r=u++,n=!(arguments.length<2)&&f.call(arguments,1);return s[r]=!0,o(function(){s[r]&&(n?t.apply(null,n):t.call(null),e.clearImmediate(r))}),r},e.clearImmediate="function"==typeof n?n:function(t){delete s[t]}}).call(e,r(158).setImmediate,r(158).clearImmediate)},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r2?arguments[2]:void 0,h=Math.min((void 0===u?a:i(u,a))-s,a-f),c=1;for(s0;)s in r?r[f]=r[s]:delete r[f],f+=c,s+=c;return r}},function(t,e,r){var n=r(55);t.exports=function(t,e){var r=[];return n(t,!1,r.push,r,e),r}},function(t,e,r){var n=r(13),i=r(11),o=r(65),a=r(10);t.exports=function(t,e,r,f,s){n(e);var u=i(t),h=o(u),c=a(u.length),d=s?c-1:0,l=s?-1:1;if(r<2)for(;;){if(d in h){f=h[d],d+=l;break}if(d+=l,s?d<0:c<=d)throw TypeError("Reduce of empty array with no initial value")}for(;s?d>=0:c>d;d+=l)d in h&&(f=e(f,h[d],d,u));return f}},function(t,e,r){"use strict";var n=r(13),i=r(6),o=r(82),a=[].slice,f={},s=function(t,e,r){if(!(e in f)){for(var n=[],i=0;i1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!v(this,t)}}),l&&n(c.prototype,"size",{get:function(){return s(this[b])}}),c},def:function(t,e,r){var n,i,o=v(t,e);return o?o.v=r:(t._l=o={i:i=p(e,!0),k:e,v:r,p:n=t._l,n:void 0,r:!1},t._f||(t._f=o),n&&(n.n=o),t[b]++,"F"!==i&&(t._i[i]=o)),t},getEntry:v,setStrong:function(t,e,r){h(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==e?c(0,r.k):"values"==e?c(0,r.v):c(0,[r.k,r.v]):(t._t=void 0,c(1))},r?"entries":"values",!r,!0),d(e)}}},function(t,e,r){var n=r(64),i=r(168);t.exports=function(t){return function(){if(n(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,e,r){"use strict";var n=r(45),i=r(36).getWeak,o=r(3),a=r(6),f=r(40),s=r(55),u=r(27),h=r(12),c=u(5),d=u(6),l=0,p=function(t){return t._l||(t._l=new b)},b=function(){this.a=[]},v=function(t,e){return c(t.a,function(t){return t[0]===e})};b.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var r=v(this,t);r?r[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,r,o){var u=t(function(t,n){f(t,u,e,"_i"),t._i=l++,t._l=void 0,void 0!=n&&s(n,r,t[o],t)});return n(u.prototype,{delete:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).delete(t):e&&h(e,this._i)&&delete e[this._i]},has:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).has(t):e&&h(e,this._i)}}),u},def:function(t,e,r){var n=i(o(e),!0);return n===!0?p(t).set(e,r):n[t._i]=r,t},ufstore:p}},function(t,e,r){t.exports=!r(8)&&!r(5)(function(){return 7!=Object.defineProperty(r(120)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(6),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(3);t.exports=function(t,e,r,i){try{return i?e(n(r)[0],r[1]):e(r)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,r){"use strict";var n=r(44),i=r(86),o=r(66),a=r(11),f=r(65),s=Object.assign;t.exports=!s||r(5)(function(){var t={},e={},r=Symbol(),n="abcdefghijklmnopqrst";return t[r]=7,n.split("").forEach(function(t){e[t]=t}),7!=s({},t)[r]||Object.keys(s({},e)).join("")!=n})?function(t,e){for(var r=a(t),s=arguments.length,u=1,h=i.f,c=o.f;s>u;)for(var d,l=f(arguments[u++]),p=h?n(l).concat(h(l)):n(l),b=p.length,v=0;b>v;)c.call(l,d=p[v++])&&(r[d]=l[d]);return r}:s},function(t,e,r){var n=r(9),i=r(3),o=r(44);t.exports=r(8)?Object.defineProperties:function(t,e){i(t);for(var r,a=o(e),f=a.length,s=0;f>s;)n.f(t,r=a[s++],e[r]);return t}},function(t,e,r){var n=r(17),i=r(43).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],f=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?f(t):i(n(t))}},function(t,e,r){var n=r(12),i=r(17),o=r(78)(!1),a=r(133)("IE_PROTO");t.exports=function(t,e){var r,f=i(t),s=0,u=[];for(r in f)r!=a&&n(f,r)&&u.push(r);for(;e.length>s;)n(f,r=e[s++])&&(~o(u,r)||u.push(r));return u}},function(t,e,r){var n=r(44),i=r(17),o=r(66).f;t.exports=function(t){return function(e){for(var r,a=i(e),f=n(a),s=f.length,u=0,h=[];s>u;)o.call(a,r=f[u++])&&h.push(t?[r,a[r]]:a[r]);return h}}},function(t,e,r){var n=r(43),i=r(86),o=r(3),a=r(4).Reflect;t.exports=a&&a.ownKeys||function(t){var e=n.f(o(t)),r=i.f;return r?e.concat(r(t)):e}},function(t,e,r){var n=r(4).parseFloat,i=r(58).trim;t.exports=1/n(r(138)+"-0")!==-(1/0)?function(t){var e=i(String(t),3),r=n(e);return 0===r&&"-"==e.charAt(0)?-0:r}:n},function(t,e,r){var n=r(4).parseInt,i=r(58).trim,o=r(138),a=/^[\-+]?0[xX]/;t.exports=8!==n(o+"08")||22!==n(o+"0x16")?function(t,e){var r=i(String(t),3);return n(r,e>>>0||(a.test(r)?16:10))}:n},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},function(t,e,r){var n=r(10),i=r(137),o=r(24);t.exports=function(t,e,r,a){var f=String(o(t)),s=f.length,u=void 0===r?" ":String(r),h=n(e);if(h<=s||""==u)return f;var c=h-s,d=i.call(u,Math.ceil(c/u.length));return d.length>c&&(d=d.slice(0,c)),a?d+f:f+d}},function(t,e,r){e.f=r(7)},function(t,e,r){"use strict";var n=r(171);t.exports=r(79)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=n.getEntry(this,t);return e&&e.v},set:function(t,e){return n.def(this,0===t?0:t,e)}},n,!0)},function(t,e,r){r(8)&&"g"!=/./g.flags&&r(9).f(RegExp.prototype,"flags",{configurable:!0,get:r(81)})},function(t,e,r){"use strict";var n=r(171);t.exports=r(79)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t=0===t?0:t,t)}},n)},function(t,e,r){"use strict";var n,i=r(27)(0),o=r(15),a=r(36),f=r(179),s=r(173),u=r(6),h=a.getWeak,c=Object.isExtensible,d=s.ufstore,l={},p=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=h(t);return e===!0?d(this).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(this,t,e)}},v=t.exports=r(79)("WeakMap",p,b,s,!0,!0);7!=(new v).set((Object.freeze||Object)(l),7).get(l)&&(n=s.getConstructor(p),f(n.prototype,b),a.NEED=!0,i(["delete","has","get","set"],function(t){var e=v.prototype,r=e[t];o(e,t,function(e,i){if(u(e)&&!c(e)){this._f||(this._f=new n);var o=this._f[t](e,i);return"set"==t?this:o}return r.call(this,e,i)})}))},function(t,e){function r(t){throw new Error("Cannot find module '"+t+"'.")}r.keys=function(){return[]},r.resolve=r,t.exports=r,r.id=194},function(t,e){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,Object.getPrototypeOf(e).call(this));return Object.defineProperty(i,"message",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):""}),Object.defineProperty(i,"name",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){r(486),t.exports=r(197).Number.isInteger},function(t,e){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(200),i=r(197),o=r(478),a=r(480),f="prototype",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&"function"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&"function"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e,r){"use strict";t.exports=r(473)},function(t,e,r){"use strict";(function(e){/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +function n(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;f--)if(s[f]!==u[f])return!1;for(f=s.length-1;f>=0;f--)if(a=s[f],!l(t[a],e[a],r,n))return!1;return!0}function v(t,e,r){l(t,e,!0)&&c(t,e,r,"notDeepStrictEqual",v)}function y(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&e.call({},t)===!0}function m(t){var e;try{t()}catch(t){e=t}return e}function g(t,e,r,n){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=m(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&c(i,r,"Missing expected exception"+n);var o="string"==typeof n,a=!t&&w.isError(i),f=!t&&i&&!r;if((a&&o&&y(i,r)||f)&&c(i,r,"Got unwanted exception"+n),t&&i&&r&&!y(i,r)||!t&&i)throw i}var w=r(606),_=Object.prototype.hasOwnProperty,M=Array.prototype.slice,S=function(){return"foo"===function(){}.name}(),E=t.exports=d,A=/\s*function\s+([^\(\s]*)\s*/;E.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=h(this),this.generatedMessage=!0);var e=t.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=f(e),o=n.indexOf("\n"+i);if(o>=0){var a=n.indexOf("\n",o+1);n=n.substring(a+1)}this.stack=n}}},w.inherits(E.AssertionError,Error),E.fail=c,E.ok=d,E.equal=function(t,e,r){t!=e&&c(t,e,r,"==",E.equal)},E.notEqual=function(t,e,r){t==e&&c(t,e,r,"!=",E.notEqual)},E.deepEqual=function(t,e,r){l(t,e,!1)||c(t,e,r,"deepEqual",E.deepEqual)},E.deepStrictEqual=function(t,e,r){l(t,e,!0)||c(t,e,r,"deepStrictEqual",E.deepStrictEqual)},E.notDeepEqual=function(t,e,r){l(t,e,!1)&&c(t,e,r,"notDeepEqual",E.notDeepEqual)},E.notDeepStrictEqual=v,E.strictEqual=function(t,e,r){t!==e&&c(t,e,r,"===",E.strictEqual)},E.notStrictEqual=function(t,e,r){t===e&&c(t,e,r,"!==",E.notStrictEqual)},E.throws=function(t,e,r){g(!0,t,e,r)},E.doesNotThrow=function(t,e,r){g(!1,t,e,r)},E.ifError=function(t){if(t)throw t};var k=Object.keys||function(t){var e=[];for(var r in t)_.call(t,r)&&e.push(r);return e}}).call(e,r(39))},function(t,e,r){(function(e){function n(t,r,i,f){if(!(this instanceof n))return new n(t,r,i);a.call(this),this._finID=e.concat([i,new e([0,0,0,1])]),i=e.concat([i,new e([0,0,0,2])]),this._cipher=new o.AES(r),this._prev=new e(i.length),this._cache=new e(""),this._secCache=new e(""),this._decrypt=f,this._alen=0,this._len=0,i.copy(this._prev),this._mode=t;var u=new e(4);u.fill(0),this._ghash=new s(this._cipher.encryptBlock(u)),this._authTag=null,this._called=!1}function i(t,e){var r=0;t.length!==e.length&&r++;for(var n=Math.min(t.length,e.length),i=-1;++i>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error("length octect is too long");n=0;for(var o=0;o=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=c.tagClassByName[r||"universal"]<<6)}var f=r(2),s=r(1).Buffer,u=r(100),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return"gentime"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},i.prototype._encodeNull=function(){return this._createEncoderBuffer("")},i.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function s(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function u(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}var h=r(2),c=r(60),d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=new Array(64);h(n,c),n.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,h=0|this._c,c=0|this._d,l=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)e[y]=t.readInt32BE(4*y);for(;y<64;++y)e[y]=u(e[y-2])+e[y-7]+s(e[y-15])+e[y-16]|0;for(var m=0;m<64;++m){var g=v+f(l)+i(l,p,b)+d[m]+e[m]|0,w=a(r)+o(r,n,h)|0;v=b,b=p,p=l,l=c+g|0,c=h,h=n,n=r,r=g+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},n.prototype._hash=function(){var t=new e(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=v,p.call(this,128,112)}function i(t,e,r){return r^t&(e^r)}function o(t,e,r){return t&e|r&(t|e)}function a(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function s(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function u(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function h(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function c(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function d(t,e){return t>>>0>>0?1:0}var l=r(2),p=r(60),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);l(n,p),n.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,l=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,m=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,M=0|this._cl,S=0|this._dl,E=0|this._el,A=0|this._fl,k=0|this._gl,x=0|this._hl,I=0;I<32;I+=2)e[I]=t.readInt32BE(4*I),e[I+1]=t.readInt32BE(4*I+4);for(;I<160;I+=2){var B=e[I-30],O=e[I-30+1],R=s(B,O),P=u(O,B); +B=e[I-4],O=e[I-4+1];var T=h(B,O),j=c(O,B),C=e[I-14],N=e[I-14+1],L=e[I-32],U=e[I-32+1],z=P+N|0,D=R+C+d(z,P)|0;z=z+j|0,D=D+T+d(z,j)|0,z=z+U|0,D=D+L+d(z,U)|0,e[I]=D,e[I+1]=z}for(var q=0;q<160;q+=2){D=e[q],z=e[q+1];var F=o(r,n,l),K=o(w,_,M),G=a(r,w),V=a(w,r),H=f(v,E),X=f(E,v),Y=b[q],W=b[q+1],Z=i(v,y,m),J=i(E,A,k),$=x+X|0,Q=g+H+d($,x)|0;$=$+J|0,Q=Q+Z+d($,J)|0,$=$+W|0,Q=Q+Y+d($,W)|0,$=$+z|0,Q=Q+D+d($,z)|0;var tt=V+K|0,et=G+F+d(tt,V)|0;g=m,x=k,m=y,k=A,y=v,A=E,E=S+$|0,v=p+Q+d(E,S)|0,p=l,S=M,l=n,M=_,n=r,_=w,w=$+tt|0,r=Q+et+d(w,$)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+M|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+k|0,this._hl=this._hl+x|0,this._ah=this._ah+r+d(this._al,w)|0,this._bh=this._bh+n+d(this._bl,_)|0,this._ch=this._ch+l+d(this._cl,M)|0,this._dh=this._dh+p+d(this._dl,S)|0,this._eh=this._eh+v+d(this._el,E)|0,this._fh=this._fh+y+d(this._fl,A)|0,this._gh=this._gh+m+d(this._gl,k)|0,this._hh=this._hh+g+d(this._hl,x)|0},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(64);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){function n(){if(null!==g)return g;var t=1048576,e=[];e[0]=2;for(var r=1,n=3;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(d),r.testn(1)||r.iadd(l),e.cmp(l)){if(!e.cmp(p))for(;r.mod(b).cmp(v);)r.iadd(m)}else for(;r.mod(u).cmp(y);)r.iadd(m);if(n=r.shrn(1),i(n)&&i(r)&&o(n)&&o(r)&&c.test(n)&&c.test(r))return r}}var f=r(61);t.exports=a,a.simpleSieve=i,a.fermatTest=o;var s=r(150),u=new s(24),h=r(230),c=new h,d=new s(1),l=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),y=(new s(7),new s(11)),m=new s(4),g=(new s(12),null)},function(t,e,r){function n(t){this.rand=t||new o.Rand}var i=r(150),o=r(575);t.exports=n,n.create=function(t){return new n(t)},n.prototype._rand=function(t){var e=t.bitLength(),r=this.rand.generate(Math.ceil(e/8));r[0]|=3;var n=7&e;return 0!==n&&(r[r.length-1]>>=7-n),new i(r)},n.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),a=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var f=t.subn(1),s=f.subn(1),u=0;!f.testn(u);u++);for(var h=t.shrn(u),c=f.toRed(o),d=!0;e>0;e--){var l=this._rand(s);r&&r(l);var p=l.toRed(o).redPow(h);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var b=1;b0;e--){var c=this._rand(f),d=t.gcd(c);if(0!==d.cmpn(1))return d;var l=c.toRed(n).redPow(u);if(0!==l.cmp(o)&&0!==l.cmp(h)){for(var p=1;p=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(70),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){var r;"object"!=typeof t||e.isBuffer(t)||(r=t.passphrase,t=t.key),"string"==typeof t&&(t=new e(t));var n,a,s=f(t,r),u=s.tag,h=s.data;switch(u){case"PUBLIC KEY":switch(a=o.PublicKey.decode(h,"der"),n=a.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(a.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return a.subjectPrivateKey=a.subjectPublicKey,{type:"ec",data:a};case"1.2.840.10040.4.1":return a.algorithm.params.pub_key=o.DSAparam.decode(a.subjectPublicKey.data,"der"),{type:"dsa",data:a.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+u);case"ENCRYPTED PRIVATE KEY":h=o.EncryptedPrivateKey.decode(h,"der"),h=i(h,r);case"PRIVATE KEY":switch(a=o.PrivateKey.decode(h,"der"),n=a.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(a.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:a.algorithm.curve,privateKey:o.ECPrivateKey.decode(a.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return a.algorithm.params.priv_key=o.DSAparam.decode(a.subjectPrivateKey,"der"),{type:"dsa",params:a.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+u);case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(h,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(h,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(h,"der")};case"EC PRIVATE KEY":return h=o.ECPrivateKey.decode(h,"der"),{curve:h.parameters.value,privateKey:h.privateKey};default:throw new Error("unknown key type "+u)}}function i(t,r){var n=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=a[t.algorithm.decrypt.cipher.algo.join(".")],f=t.algorithm.decrypt.cipher.iv,h=t.subjectPrivateKey,c=parseInt(o.split("-")[1],10)/8,d=u.pbkdf2Sync(r,n,i,c),l=s.createDecipheriv(o,d,f),p=[];return p.push(l.update(h)),p.push(l.final()),e.concat(p)}var o=r(578),a=r(469),f=r(579),s=r(239),u=r(151);t.exports=n,n.signature=o.signature}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){return a.call(this,e),f.isBuffer(t)?(this.base=t,this.offset=0,void(this.length=t.length)):void this.error("Input not Buffer")}function i(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(t){return t instanceof i||(t=new i(t,e)),this.length+=t.length,t},this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=f.byteLength(t);else{if(!f.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}var o=r(2),a=r(71).Reporter,f=r(1).Buffer;o(n,a),e.DecoderBuffer=n,n.prototype.save=function(){return{offset:this.offset,reporter:a.prototype.save.call(this)}},n.prototype.restore=function(t){var e=new n(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,a.prototype.restore.call(this,t.reporter),e},n.prototype.isEmpty=function(){return this.offset===this.length},n.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},n.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");var r=new n(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},n.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=i,i.prototype.join=function(t,e){return t||(t=new f(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach(function(r){r.join(t,e),e+=r.length}):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):f.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},function(t,e,r){var n=e;n._reverse=function(t){var e={};return Object.keys(t).forEach(function(r){(0|r)==r&&(r|=0);var n=t[r];e[n]=r}),e},n.der=r(583)},function(t,e,r){function n(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new i,this.tree._init(t.body)}function i(t){u.Node.call(this,"der",t)}function o(t,e){var r=t.readUInt8(e);if(t.isError(r))return r;var n=c.tagClass[r>>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error("length octect is too long");n=0;for(var o=0;o=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=c.tagClassByName[r||"universal"]<<6)}var f=r(2),s=r(1).Buffer,u=r(106),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return"gentime"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},i.prototype._encodeNull=function(){return this._createEncoderBuffer("")},i.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f0)if(e.ended&&!i){var a=new Error("stream.push() after EOF");t.emit("error",a)}else if(e.endEmitted&&i){var s=new Error("stream.unshift() after end event");t.emit("error",s)}else{var u;!e.decoder||i||n||(r=e.decoder.write(r),u=!e.objectMode&&0===r.length),i||(e.reading=!1),u||(e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&d(t))),p(t,e)}else i||(e.reading=!1);return f(e)}function f(t){return!t.ended&&(t.needReadable||t.length=q?t=q:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function u(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=s(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function h(t,e){var r=null;return T.isBuffer(e)||"string"==typeof e||null===e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function c(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,d(t)}}function d(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(L("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?B(l,t):l(t))}function l(t){L("emit readable"),t.emit("readable"),w(t)}function p(t,e){e.readingMore||(e.readingMore=!0,B(b,t,e))}function b(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=M(t,e.buffer,e.decoder),r}function M(t,e,r){var n;return to.length?o.length:t;if(i+=a===o.length?o:o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function E(t,e){var r=j.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,B(k,e,t))}function k(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function x(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return L("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?A(this):d(this),null;if(t=u(t,e),0===t&&e.ended)return 0===e.length&&A(this),null;var n=e.needReadable;L("need readable",n),(0===e.length||e.length-t0?_(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==i&&this.emit("data",i),i},o.prototype._read=function(t){this.emit("error",new Error("not implemented"))},o.prototype.pipe=function(t,r){function i(t){L("onunpipe"),t===d&&a()}function o(){L("onend"),t.end()}function a(){L("cleanup"),t.removeListener("close",u),t.removeListener("finish",h),t.removeListener("drain",y),t.removeListener("error",s),t.removeListener("unpipe",i),d.removeListener("end",o),d.removeListener("end",a),d.removeListener("data",f),m=!0,!l.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function f(e){L("ondata"),g=!1;var r=t.write(e);!1!==r||g||((1===l.pipesCount&&l.pipes===t||l.pipesCount>1&&I(l.pipes,t)!==-1)&&!m&&(L("false write response, pause",d._readableState.awaitDrain),d._readableState.awaitDrain++,g=!0),d.pause())}function s(e){L("onerror",e),c(),t.removeListener("error",s),0===P(t,"error")&&t.emit("error",e)}function u(){t.removeListener("finish",h),c()}function h(){L("onfinish"),t.removeListener("close",u),c()}function c(){L("unpipe"),d.unpipe(t)}var d=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=t;break;case 1:l.pipes=[l.pipes,t];break;default:l.pipes.push(t)}l.pipesCount+=1,L("pipe count=%d opts=%j",l.pipesCount,r);var p=(!r||r.end!==!1)&&t!==e.stdout&&t!==e.stderr,b=p?o:a;l.endEmitted?B(b):d.once("end",b),t.on("unpipe",i);var y=v(d);t.on("drain",y);var m=!1,g=!1;return d.on("data",f),n(t,"error",s),t.once("close",u),t.once("finish",h),t.emit("pipe",d),l.flowing||(L("pipe resume"),d.resume()),t},o.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this),this);if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128==(128&e)){if(e&=127,0==e)throw f("Indefinite length not supported");if(e>4)throw f("encoding too long");if(this._size-tthis._size-i)return null;if(this._offset=i,0===this.length)return r?new e(0):"";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,r?a:a.toString("utf8")},n.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i>0),r.join(".")},n.prototype._readTag=function(t){i.ok(void 0!==t);var e=this.peek();if(null===e)return null;if(e!==t)throw f("Expected 0x"+t.toString(16)+": got 0x"+e.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw f("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],o=0,a=0;a>0},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e){o.ok(t),o.equal(typeof t,"object"),o.ok(e),o.equal(typeof e,"object");var r=Object.getOwnPropertyNames(t);return r.forEach(function(r){if(!e[r]){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n)}}),e}function i(t){t=n(s,t||{}),this._buf=new e(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}var o=r(202),a=r(112),f=r(111),s=(f.newInvalidAsn1Error,{size:1024,growthFactor:8});Object.defineProperty(i.prototype,"buffer",{get:function(){if(this._seq.length)throw new InvalidAsn1Error(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),i.prototype.writeByte=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=t},i.prototype.writeInt=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");"number"!=typeof e&&(e=a.Integer);for(var r=4;(0===(4286578688&t)||(4286578688&t)===-8388608)&&r>1;)r--,t<<=8;if(r>4)throw new InvalidAsn1Error("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},i.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},i.prototype.writeEnumeration=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");return"number"!=typeof e&&(e=a.Enumeration),this.writeInt(t,e)},i.prototype.writeBoolean=function(t,e){if("boolean"!=typeof t)throw new TypeError("argument must be a Boolean");"number"!=typeof e&&(e=a.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},i.prototype.writeString=function(t,r){if("string"!=typeof t)throw new TypeError("argument must be a string (was: "+typeof t+")");"number"!=typeof r&&(r=a.OctetString);var n=e.byteLength(t);this.writeByte(r),this.writeLength(n),n&&(this._ensure(n),this._buf.write(t,this._offset),this._offset+=n)},i.prototype.writeBuffer=function(t,r){if("number"!=typeof r)throw new TypeError("tag must be a number");if(!e.isBuffer(t))throw new TypeError("argument must be a buffer");this.writeByte(r),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},i.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError("argument must be an Array[String]");var e=this;t.forEach(function(t){e.writeString(t)})},i.prototype.writeOID=function(t,e){function r(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(255&(e>>>7|128)),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e)):(t.push(255&(e>>>28|128)),t.push(255&(e>>>21|128)),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e))}if("string"!=typeof t)throw new TypeError("argument must be a string");if("number"!=typeof e&&(e=a.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(t))throw new Error("argument is not a valid OID string");var n=t.split("."),i=[];i.push(40*parseInt(n[0],10)+parseInt(n[1],10)),n.slice(2).forEach(function(t){r(i,parseInt(t,10))});var o=this;this._ensure(2+i.length),this.writeByte(e),this.writeLength(i.length),i.forEach(function(t){o.writeByte(t)})},i.prototype.writeLength=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw new InvalidAsn1ERror("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},i.prototype.startSequence=function(t){"number"!=typeof t&&(t=a.Sequence|a.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},i.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw new InvalidAsn1Error("Sequence too long");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},i.prototype._shift=function(t,e,r){o.ok(void 0!==t),o.ok(void 0!==e),o.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},i.prototype._ensure=function(t){if(o.ok(t),this._size-this._offset>>8*n-r,e.concat([l,u,new e([188])])}},{key:"verify",value:function(t,r,n){var i=Math.ceil(n/8),s=o.createHash(this.hashAlgorithm).update(t).digest();if(i>>8*i-n;if(h[0]&~d)return!1;var l=new a({hashAlgorithm:this.hashAlgorithm}),p=l.generate(c,i-this.hashLength-1),b=f(h,p);b[0]&=d;for(var v=i-this.hashLength-this.saltLength-2,y=0;y512||t.length<128)throw new Error("Modulus must be between 128 bytes (1017 bits) and 512 bytes (4096 bits), was: "+t.length+" bytes");this.modulus=t}},{key:"setSignature",value:function(t){if(!e.isBuffer(t))throw new TypeError("Signature must be a buffer, was: "+t);this.signature=t}},{key:"sign",value:function(t,e){this.modulus||this.setPublicModulus(s.modulusFromPrivateKey(e)),this.signature=l.sign(e,t)}},{key:"writeHashPayload",value:function(t){this.writeCommonHeader(t)}},{key:"parsePayload",value:function(t){this.setPublicModulus(t.readVarOctetString()),this.setSignature(t.readVarOctetString())}},{key:"writePayload",value:function(t){if(!this.signature)throw new c("Requires a signature");this.writeCommonHeader(t),t.writeVarOctetString(this.signature)}},{key:"calculateMaxFulfillmentLength",value:function(){var t=new h;if(!this.modulus)throw new c("Requires a public modulus");return this.writeCommonHeader(t),t.writeVarOctetString(this.modulus),t.getSize()}},{key:"validate",value:function(t){if(!e.isBuffer(t))throw new Error("Message must be provided as a Buffer, was: "+t);var r=l.verify(this.modulus,t,this.signature);if(!r)throw new d("Invalid RSA signature");return!0}}]),r}(u);p.TYPE_ID=3,p.FEATURE_BITMASK=17,t.exports=p}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=m.call(i,"catchLoc"),f=m.call(i,"finallyLoc");if(a&&f){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),l(r),I}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:b(t),resultName:e,nextLoc:r},I}}}("object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this)}).call(e,r(39),r(26))},function(t,e,r){r(290),t.exports=r(32).RegExp.escape},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(77);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e,r){var n=r(270);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(77),i=r(165).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(165),i=r(163),o=r(272),a=r(275),f="prototype",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&"function"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&"function"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e,r){var n=r(278),i=r(279);t.exports=r(117)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(117)&&!r(164)(function(){return 7!=Object.defineProperty(r(273)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(77),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(271),i=r(276),o=r(280),a=Object.defineProperty;e.f=r(117)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(77);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){var n=r(274);n(n.S,"Number",{isInteger:r(277)})},function(t,e,r){var n=r(6),i=r(126),o=r(7)("species");t.exports=function(t){var e;return i(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),n(e)&&(e=e[o],null===e&&(e=void 0))),void 0===e?Array:e}},function(t,e,r){var n=r(282);t.exports=function(t,e){return new(n(t))(e)}},function(t,e,r){"use strict";var n=r(3),i=r(29),o="number";t.exports=function(t){if("string"!==t&&t!==o&&"default"!==t)throw TypeError("Incorrect hint");return i(n(this),t!=o)}},function(t,e,r){var n=r(44),i=r(86),o=r(66);t.exports=function(t){var e=n(t),r=i.f;if(r)for(var a,f=r(t),s=o.f,u=0;f.length>u;)s.call(t,a=f[u++])&&e.push(a);return e}},function(t,e,r){var n=r(44),i=r(17);t.exports=function(t,e){for(var r,o=i(t),a=n(o),f=a.length,s=0;f>s;)if(o[r=a[s++]]===e)return r}},function(t,e,r){"use strict";var n=r(288),i=r(82),o=r(13);t.exports=function(){for(var t=o(this),e=arguments.length,r=Array(e),a=0,f=n._,s=!1;e>a;)(r[a]=arguments[a++])===f&&(s=!0);return function(){var n,o=this,a=arguments.length,u=0,h=0;if(!s&&!a)return i(t,r,o);if(n=r.slice(),s)for(;e>u;u++)n[u]===f&&(n[u]=arguments[h++]);for(;a>h;)n.push(arguments[h++]);return i(t,n,o)}}},function(t,e,r){t.exports=r(4)},function(t,e){t.exports=function(t,e){var r=e===Object(e)?function(t){return e[t]}:e;return function(e){return String(e).replace(t,r)}}},function(t,e,r){var n=r(0),i=r(289)(/[\\^$*+?.()|[\]{}]/g,"\\$&");n(n.S,"RegExp",{escape:function(t){return i(t)}})},function(t,e,r){var n=r(0);n(n.P,"Array",{copyWithin:r(167)}),r(54)("copyWithin")},function(t,e,r){"use strict";var n=r(0),i=r(27)(4);n(n.P+n.F*!r(25)([].every,!0),"Array",{every:function(t){return i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.P,"Array",{fill:r(118)}),r(54)("fill")},function(t,e,r){"use strict";var n=r(0),i=r(27)(2);n(n.P+n.F*!r(25)([].filter,!0),"Array",{filter:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(0),i=r(27)(6),o="findIndex",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){"use strict";var n=r(0),i=r(27)(5),o="find",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){"use strict";var n=r(0),i=r(27)(0),o=r(25)([].forEach,!0);n(n.P+n.F*!o,"Array",{forEach:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(33),i=r(0),o=r(11),a=r(176),f=r(125),s=r(10),u=r(119),h=r(142);i(i.S+i.F*!r(84)(function(t){Array.from(t)}),"Array",{from:function(t){var e,r,i,c,d=o(t),l="function"==typeof this?this:Array,p=arguments.length,b=p>1?arguments[1]:void 0,v=void 0!==b,y=0,m=h(d);if(v&&(b=n(b,p>2?arguments[2]:void 0,2)),void 0==m||l==Array&&f(m))for(e=s(d.length),r=new l(e);e>y;y++)u(r,y,v?b(d[y],y):d[y]);else for(c=m.call(d),r=new l;!(i=c.next()).done;y++)u(r,y,v?a(c,b,[i.value,y],!0):i.value);return r.length=y,r}})},function(t,e,r){"use strict";var n=r(0),i=r(78)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;n(n.P+n.F*(a||!r(25)(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.S,"Array",{isArray:r(126)})},function(t,e,r){"use strict";var n=r(0),i=r(17),o=[].join;n(n.P+n.F*(r(65)!=Object||!r(25)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,e,r){"use strict";var n=r(0),i=r(17),o=r(38),a=r(10),f=[].lastIndexOf,s=!!f&&1/[1].lastIndexOf(1,-0)<0;n(n.P+n.F*(s||!r(25)(f)),"Array",{lastIndexOf:function(t){if(s)return f.apply(this,arguments)||0;var e=i(this),r=a(e.length),n=r-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in e&&e[n]===t)return n||0;return-1}})},function(t,e,r){"use strict";var n=r(0),i=r(27)(1);n(n.P+n.F*!r(25)([].map,!0),"Array",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(0),i=r(119);n(n.S+n.F*r(5)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,r=new("function"==typeof this?this:Array)(e);e>t;)i(r,t,arguments[t++]);return r.length=e,r}})},function(t,e,r){"use strict";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduceRight,!0),"Array",{reduceRight:function(t){return i(this,t,arguments.length,arguments[1],!0)}})},function(t,e,r){"use strict";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduce,!0),"Array",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},function(t,e,r){"use strict";var n=r(0),i=r(123),o=r(23),a=r(47),f=r(10),s=[].slice;n(n.P+n.F*r(5)(function(){i&&s.call(i)}),"Array",{slice:function(t,e){var r=f(this.length),n=o(this);if(e=void 0===e?r:e,"Array"==n)return s.call(this,t,e);for(var i=a(t,r),u=a(e,r),h=f(u-i),c=Array(h),d=0;d9?t:"0"+t};n(n.P+n.F*(i(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!i(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),r=t.getUTCMilliseconds(),n=e<0?"-":e>9999?"+":"";return n+("00000"+Math.abs(e)).slice(n?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(r>99?r:"0"+a(r))+"Z"}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29);n(n.P+n.F*r(5)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=i(this),r=o(e);return"number"!=typeof r||isFinite(r)?e.toISOString():null}})},function(t,e,r){var n=r(7)("toPrimitive"),i=Date.prototype;n in i||r(14)(i,n,r(284))},function(t,e,r){var n=Date.prototype,i="Invalid Date",o="toString",a=n[o],f=n.getTime;new Date(NaN)+""!=i&&r(15)(n,o,function(){var t=f.call(this);return t===t?a.call(this):i})},function(t,e,r){var n=r(0);n(n.P,"Function",{bind:r(170)})},function(t,e,r){"use strict";var n=r(6),i=r(21),o=r(7)("hasInstance"),a=Function.prototype;o in a||r(9).f(a,o,{value:function(t){if("function"!=typeof this||!n(t))return!1;if(!n(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,r){var n=r(9).f,i=r(37),o=r(12),a=Function.prototype,f=/^\s*function ([^ (]*)/,s="name",u=Object.isExtensible||function(){return!0};s in a||r(8)&&n(a,s,{configurable:!0,get:function(){try{var t=this,e=(""+t).match(f)[1];return o(t,s)||!u(t)||n(t,s,i(5,e)),e}catch(t){return""}}})},function(t,e,r){var n=r(0),i=r(178),o=Math.sqrt,a=Math.acosh;n(n.S+n.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,r){function n(t){return isFinite(t=+t)&&0!=t?t<0?-n(-t):Math.log(t+Math.sqrt(t*t+1)):t}var i=r(0),o=Math.asinh;i(i.S+i.F*!(o&&1/o(0)>0),"Math",{asinh:n})},function(t,e,r){var n=r(0),i=Math.atanh;n(n.S+n.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,r){var n=r(0),i=r(130);n(n.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,r){var n=r(0),i=Math.exp;n(n.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,r){var n=r(0),i=r(129);n(n.S+n.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,e,r){var n=r(0),i=r(130),o=Math.pow,a=o(2,-52),f=o(2,-23),s=o(2,127)*(2-f),u=o(2,-126),h=function(t){return t+1/a-1/a};n(n.S,"Math",{fround:function(t){var e,r,n=Math.abs(t),o=i(t);return ns||r!=r?o*(1/0):o*r)}})},function(t,e,r){var n=r(0),i=Math.abs;n(n.S,"Math",{hypot:function(t,e){for(var r,n,o=0,a=0,f=arguments.length,s=0;a0?(n=r/s,o+=n*n):o+=r;return s===1/0?1/0:s*Math.sqrt(o)}})},function(t,e,r){var n=r(0),i=Math.imul;n(n.S+n.F*r(5)(function(){return i(4294967295,5)!=-5||2!=i.length}),"Math",{imul:function(t,e){var r=65535,n=+t,i=+e,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},function(t,e,r){var n=r(0);n(n.S,"Math",{log1p:r(178)})},function(t,e,r){var n=r(0);n(n.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,r){var n=r(0);n(n.S,"Math",{sign:r(130)})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S+n.F*r(5)(function(){return!Math.sinh(-2e-17)!=-2e-17}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S,"Math",{tanh:function(t){var e=i(t=+t),r=i(-t);return e==1/0?1:r==1/0?-1:(e-r)/(o(t)+o(-t))}})},function(t,e,r){var n=r(0);n(n.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,r){"use strict";var n=r(4),i=r(12),o=r(23),a=r(124),f=r(29),s=r(5),u=r(43).f,h=r(20).f,c=r(9).f,d=r(58).trim,l="Number",p=n[l],b=p,v=p.prototype,y=o(r(42)(v))==l,m="trim"in String.prototype,g=function(t){var e=f(t,!1);if("string"==typeof e&&e.length>2){e=m?e.trim():d(e,3);var r,n,i,o=e.charCodeAt(0);if(43===o||45===o){if(r=e.charCodeAt(2),88===r||120===r)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+e}for(var a,s=e.slice(2),u=0,h=s.length;ui)return NaN;return parseInt(s,n)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,r=this;return r instanceof p&&(y?s(function(){v.valueOf.call(r)}):o(r)!=l)?a(new b(g(e)),r,p):g(e)};for(var w,_=r(8)?u(b):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),M=0;_.length>M;M++)i(b,w=_[M])&&!i(p,w)&&c(p,w,h(b,w));p.prototype=v,v.constructor=p,r(15)(n,l,p)}},function(t,e,r){var n=r(0);n(n.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,r){var n=r(0),i=r(4).isFinite;n(n.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,e,r){var n=r(0);n(n.S,"Number",{isInteger:r(175)})},function(t,e,r){var n=r(0);n(n.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,r){var n=r(0),i=r(175),o=Math.abs;n(n.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,r){var n=r(0);n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){var n=r(0);n(n.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,r){var n=r(0),i=r(185);n(n.S+n.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.S+n.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,e,r){"use strict";var n=r(0),i=r(38),o=r(166),a=r(137),f=1..toFixed,s=Math.floor,u=[0,0,0,0,0,0],h="Number.toFixed: incorrect invocation!",c="0",d=function(t,e){for(var r=-1,n=e;++r<6;)n+=t*u[r],u[r]=n%1e7,n=s(n/1e7)},l=function(t){for(var e=6,r=0;--e>=0;)r+=u[e],u[e]=s(r/t),r=r%t*1e7},p=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var r=String(u[t]);e=""===e?r:e+a.call(c,7-r.length)+r}return e},b=function(t,e,r){return 0===e?r:e%2===1?b(t,e-1,r*t):b(t*t,e/2,r)},v=function(t){for(var e=0,r=t;r>=4096;)e+=12,r/=4096;for(;r>=2;)e+=1,r/=2;return e};n(n.P+n.F*(!!f&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r(5)(function(){f.call({})})),"Number",{toFixed:function(t){var e,r,n,f,s=o(this,h),u=i(t),y="",m=c;if(u<0||u>20)throw RangeError(h);if(s!=s)return"NaN";if(s<=-1e21||s>=1e21)return String(s);if(s<0&&(y="-",s=-s),s>1e-21)if(e=v(s*b(2,69,1))-69,r=e<0?s*b(2,-e,1):s/b(2,e,1),r*=4503599627370496,e=52-e,e>0){for(d(0,r),n=u;n>=7;)d(1e7,0),n-=7;for(d(b(10,n,1),0),n=e-1;n>=23;)l(1<<23),n-=23;l(1<0?(f=m.length,m=y+(f<=u?"0."+a.call(c,u-f)+m:m.slice(0,f-u)+"."+m.slice(f-u))):m=y+m,m}})},function(t,e,r){"use strict";var n=r(0),i=r(5),o=r(166),a=1..toPrecision;n(n.P+n.F*(i(function(){return"1"!==a.call(1,void 0)})||!i(function(){a.call({})})),"Number",{toPrecision:function(t){var e=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,r){var n=r(0);n(n.S+n.F,"Object",{assign:r(179)})},function(t,e,r){var n=r(0);n(n.S,"Object",{create:r(42)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),"Object",{defineProperties:r(180)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),"Object",{defineProperty:r(9).f})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("freeze",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(17),i=r(20).f;r(28)("getOwnPropertyDescriptor",function(){return function(t,e){return i(n(t),e)}})},function(t,e,r){r(28)("getOwnPropertyNames",function(){return r(181).f})},function(t,e,r){var n=r(11),i=r(21);r(28)("getPrototypeOf",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6);r(28)("isExtensible",function(t){return function(e){return!!n(e)&&(!t||t(e))}})},function(t,e,r){var n=r(6);r(28)("isFrozen",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(6);r(28)("isSealed",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(0);n(n.S,"Object",{is:r(187)})},function(t,e,r){var n=r(11),i=r(44);r(28)("keys",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("preventExtensions",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("seal",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(0);n(n.S,"Object",{setPrototypeOf:r(132).set})},function(t,e,r){"use strict";var n=r(64),i={};i[r(7)("toStringTag")]="z",i+""!="[object z]"&&r(15)(Object.prototype,"toString",function(){return"[object "+n(this)+"]"},!0)},function(t,e,r){var n=r(0),i=r(185);n(n.G+n.F*(parseFloat!=i),{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.G+n.F*(parseInt!=i),{parseInt:i})},function(t,e,r){"use strict";var n,i,o,a=r(41),f=r(4),s=r(33),u=r(64),h=r(0),c=r(6),d=r(13),l=r(40),p=r(55),b=r(134),v=r(139).set,y=r(131)(),m="Promise",g=f.TypeError,w=f.process,_=f[m],w=f.process,M="process"==u(w),S=function(){},E=!!function(){try{var t=_.resolve(1),e=(t.constructor={})[r(7)("species")]=function(t){t(S,S)};return(M||"function"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e}catch(t){}}(),A=function(t,e){return t===e||t===_&&e===o},k=function(t){var e;return!(!c(t)||"function"!=typeof(e=t.then))&&e},x=function(t){return A(_,t)?new I(t):new i(t)},I=i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw g("Bad Promise constructor");e=t,r=n}),this.resolve=d(e),this.reject=d(r)},B=function(t){try{t()}catch(t){return{error:t}}},O=function(t,e){if(!t._n){t._n=!0;var r=t._c;y(function(){for(var n=t._v,i=1==t._s,o=0,a=function(e){var r,o,a=i?e.ok:e.fail,f=e.resolve,s=e.reject,u=e.domain;try{a?(i||(2==t._h&&T(t),t._h=1),a===!0?r=n:(u&&u.enter(),r=a(n),u&&u.exit()),r===e.promise?s(g("Promise-chain cycle")):(o=k(r))?o.call(r,f,s):f(r)):s(n)}catch(t){s(t)}};r.length>o;)a(r[o++]);t._c=[],t._n=!1,e&&!t._h&&R(t)})}},R=function(t){v.call(f,function(){var e,r,n,i=t._v;if(P(t)&&(e=B(function(){M?w.emit("unhandledRejection",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(n=f.console)&&n.error&&n.error("Unhandled promise rejection",i)}),t._h=M||P(t)?2:1),t._a=void 0,e)throw e.error})},P=function(t){if(1==t._h)return!1;for(var e,r=t._a||t._c,n=0;r.length>n;)if(e=r[n++],e.fail||!P(e.promise))return!1;return!0},T=function(t){v.call(f,function(){var e;M?w.emit("rejectionHandled",t):(e=f.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),O(e,!0))},C=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw g("Promise can't be resolved itself");(e=k(t))?y(function(){var n={_w:r,_d:!1};try{e.call(t,s(C,n,1),s(j,n,1))}catch(t){j.call(n,t)}}):(r._v=t,r._s=1,O(r,!1))}catch(t){j.call({_w:r,_d:!1},t)}}};E||(_=function(t){l(this,_,m,"_h"),d(t),n.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},n=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},n.prototype=r(45)(_.prototype,{then:function(t,e){var r=x(b(this,_));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&O(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),I=function(){var t=new n;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)}),h(h.G+h.W+h.F*!E,{Promise:_}),r(57)(_,m),r(46)(m),o=r(32)[m],h(h.S+h.F*!E,m,{reject:function(t){var e=x(this),r=e.reject;return r(t),e.promise}}),h(h.S+h.F*(a||!E),m,{resolve:function(t){if(t instanceof _&&A(t.constructor,this))return t;var e=x(this),r=e.resolve;return r(t),e.promise}}),h(h.S+h.F*!(E&&r(84)(function(t){_.all(t).catch(S)})),m,{all:function(t){var e=this,r=x(e),n=r.resolve,i=r.reject,o=B(function(){var r=[],o=0,a=1;p(t,!1,function(t){var f=o++,s=!1;r.push(void 0),a++,e.resolve(t).then(function(t){s||(s=!0,r[f]=t,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(t){var e=this,r=x(e),n=r.reject,i=B(function(){p(t,!1,function(t){e.resolve(t).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},function(t,e,r){var n=r(0),i=r(13),o=r(3),a=(r(4).Reflect||{}).apply,f=Function.apply;n(n.S+n.F*!r(5)(function(){a(function(){})}),"Reflect",{apply:function(t,e,r){var n=i(t),s=o(r);return a?a(n,e,s):f.call(n,e,s)}})},function(t,e,r){var n=r(0),i=r(42),o=r(13),a=r(3),f=r(6),s=r(5),u=r(170),h=(r(4).Reflect||{}).construct,c=s(function(){function t(){}return!(h(function(){},[],t)instanceof t)}),d=!s(function(){h(function(){})});n(n.S+n.F*(c||d),"Reflect",{construct:function(t,e){o(t),a(e);var r=arguments.length<3?t:o(arguments[2]);if(d&&!c)return h(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(u.apply(t,n))}var s=r.prototype,l=i(f(s)?s:Object.prototype),p=Function.apply.call(t,l,e);return f(p)?p:l}})},function(t,e,r){var n=r(9),i=r(0),o=r(3),a=r(29);i(i.S+i.F*r(5)(function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,r){o(t),e=a(e,!0),o(r);try{return n.f(t,e,r),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(20).f,o=r(3);n(n.S,"Reflect",{deleteProperty:function(t,e){var r=i(o(t),e);return!(r&&!r.configurable)&&delete t[e]}})},function(t,e,r){"use strict";var n=r(0),i=r(3),o=function(t){this._t=i(t),this._i=0;var e,r=this._k=[];for(e in t)r.push(e)};r(127)(o,"Object",function(){var t,e=this,r=e._k;do if(e._i>=r.length)return{value:void 0,done:!0};while(!((t=r[e._i++])in e._t));return{value:t,done:!1}}),n(n.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,e,r){var n=r(20),i=r(0),o=r(3);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return n.f(o(t),e)}})},function(t,e,r){var n=r(0),i=r(21),o=r(3);n(n.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,r){function n(t,e){var r,f,h=arguments.length<3?t:arguments[2];return u(t)===h?t[e]:(r=i.f(t,e))?a(r,"value")?r.value:void 0!==r.get?r.get.call(h):void 0:s(f=o(t))?n(f,e,h):void 0}var i=r(20),o=r(21),a=r(12),f=r(0),s=r(6),u=r(3);f(f.S,"Reflect",{get:n})},function(t,e,r){var n=r(0);n(n.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,r){var n=r(0),i=r(3),o=Object.isExtensible;n(n.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,r){var n=r(0);n(n.S,"Reflect",{ownKeys:r(184)})},function(t,e,r){var n=r(0),i=r(3),o=Object.preventExtensions;n(n.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(132);i&&n(n.S,"Reflect",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,r){function n(t,e,r){var s,d,l=arguments.length<4?t:arguments[3],p=o.f(h(t),e);if(!p){if(c(d=a(t)))return n(d,e,r,l);p=u(0)}return f(p,"value")?!(p.writable===!1||!c(l))&&(s=o.f(l,e)||u(0),s.value=r,i.f(l,e,s),!0):void 0!==p.set&&(p.set.call(l,r),!0)}var i=r(9),o=r(20),a=r(21),f=r(12),s=r(0),u=r(37),h=r(3),c=r(6);s(s.S,"Reflect",{set:n})},function(t,e,r){var n=r(4),i=r(124),o=r(9).f,a=r(43).f,f=r(83),s=r(81),u=n.RegExp,h=u,c=u.prototype,d=/a/g,l=/a/g,p=new u(d)!==d;if(r(8)&&(!p||r(5)(function(){return l[r(7)("match")]=!1,u(d)!=d||u(l)==l||"/a/i"!=u(d,"i")}))){u=function(t,e){var r=this instanceof u,n=f(t),o=void 0===e;return!r&&n&&t.constructor===u&&o?t:i(p?new h(n&&!o?t.source:t,e):h((n=t instanceof u)?t.source:t,n&&o?s.call(t):e),r?this:c,u)};for(var b=(function(t){t in u||o(u,t,{configurable:!0,get:function(){return h[t]},set:function(e){h[t]=e}})}),v=a(h),y=0;v.length>y;)b(v[y++]);c.constructor=u,u.prototype=c,r(15)(n,"RegExp",u)}r(46)("RegExp")},function(t,e,r){r(80)("match",1,function(t,e,r){return[function(r){"use strict";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){ +r(80)("replace",2,function(t,e,r){return[function(n,i){"use strict";var o=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,o,i):r.call(String(o),n,i)},r]})},function(t,e,r){r(80)("search",1,function(t,e,r){return[function(r){"use strict";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){r(80)("split",2,function(t,e,n){"use strict";var i=r(83),o=n,a=[].push,f="split",s="length",u="lastIndex";if("c"=="abbc"[f](/(b)*/)[1]||4!="test"[f](/(?:)/,-1)[s]||2!="ab"[f](/(?:ab)*/)[s]||4!="."[f](/(.?)(.?)/)[s]||"."[f](/()()/)[s]>1||""[f](/.?/)[s]){var h=void 0===/()??/.exec("")[1];n=function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!i(t))return o.call(r,t,e);var n,f,c,d,l,p=[],b=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,y=void 0===e?4294967295:e>>>0,m=new RegExp(t.source,b+"g");for(h||(n=new RegExp("^"+m.source+"$(?!\\s)",b));(f=m.exec(r))&&(c=f.index+f[0][s],!(c>v&&(p.push(r.slice(v,f.index)),!h&&f[s]>1&&f[0].replace(n,function(){for(l=1;l1&&f.index=y)));)m[u]===f.index&&m[u]++;return v===r[s]?!d&&m.test("")||p.push(""):p.push(r.slice(v)),p[s]>y?p.slice(0,y):p}}else"0"[f](void 0,0)[s]&&(n=function(t,e){return void 0===t&&0===e?[]:o.call(this,t,e)});return[function(r,i){var o=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,o,i):n.call(String(o),r,i)},n]})},function(t,e,r){"use strict";r(191);var n=r(3),i=r(81),o=r(8),a="toString",f=/./[a],s=function(t){r(15)(RegExp.prototype,a,t,!0)};r(5)(function(){return"/a/b"!=f.call({source:"a",flags:"b"})})?s(function(){var t=n(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):f.name!=a&&s(function(){return f.call(this)})},function(t,e,r){"use strict";r(16)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},function(t,e,r){"use strict";r(16)("big",function(t){return function(){return t(this,"big","","")}})},function(t,e,r){"use strict";r(16)("blink",function(t){return function(){return t(this,"blink","","")}})},function(t,e,r){"use strict";r(16)("bold",function(t){return function(){return t(this,"b","","")}})},function(t,e,r){"use strict";var n=r(0),i=r(135)(!1);n(n.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,e,r){"use strict";var n=r(0),i=r(10),o=r(136),a="endsWith",f=""[a];n(n.P+n.F*r(122)(a),"String",{endsWith:function(t){var e=o(this,t,a),r=arguments.length>1?arguments[1]:void 0,n=i(e.length),s=void 0===r?n:Math.min(i(r),n),u=String(t);return f?f.call(e,u,s):e.slice(s-u.length,s)===u}})},function(t,e,r){"use strict";r(16)("fixed",function(t){return function(){return t(this,"tt","","")}})},function(t,e,r){"use strict";r(16)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},function(t,e,r){"use strict";r(16)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},function(t,e,r){var n=r(0),i=r(47),o=String.fromCharCode,a=String.fromCodePoint;n(n.S+n.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,a=0;n>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");r.push(e<65536?o(e):o(((e-=65536)>>10)+55296,e%1024+56320))}return r.join("")}})},function(t,e,r){"use strict";var n=r(0),i=r(136),o="includes";n(n.P+n.F*r(122)(o),"String",{includes:function(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){"use strict";r(16)("italics",function(t){return function(){return t(this,"i","","")}})},function(t,e,r){"use strict";var n=r(135)(!0);r(128)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})})},function(t,e,r){"use strict";r(16)("link",function(t){return function(e){return t(this,"a","href",e)}})},function(t,e,r){var n=r(0),i=r(17),o=r(10);n(n.S,"String",{raw:function(t){for(var e=i(t.raw),r=o(e.length),n=arguments.length,a=[],f=0;r>f;)a.push(String(e[f++])),f1?arguments[1]:void 0,e.length)),n=String(t);return f?f.call(e,n,r):e.slice(r,r+n.length)===n}})},function(t,e,r){"use strict";r(16)("strike",function(t){return function(){return t(this,"strike","","")}})},function(t,e,r){"use strict";r(16)("sub",function(t){return function(){return t(this,"sub","","")}})},function(t,e,r){"use strict";r(16)("sup",function(t){return function(){return t(this,"sup","","")}})},function(t,e,r){"use strict";r(58)("trim",function(t){return function(){return t(this,3)}})},function(t,e,r){"use strict";var n=r(4),i=r(12),o=r(8),a=r(0),f=r(15),s=r(36).KEY,u=r(5),h=r(87),c=r(57),d=r(48),l=r(7),p=r(189),b=r(141),v=r(286),y=r(285),m=r(126),g=r(3),w=r(17),_=r(29),M=r(37),S=r(42),E=r(181),A=r(20),k=r(9),x=r(44),I=A.f,B=k.f,O=E.f,R=n.Symbol,P=n.JSON,T=P&&P.stringify,j="prototype",C=l("_hidden"),N=l("toPrimitive"),L={}.propertyIsEnumerable,U=h("symbol-registry"),z=h("symbols"),D=h("op-symbols"),q=Object[j],F="function"==typeof R,K=n.QObject,G=!K||!K[j]||!K[j].findChild,V=o&&u(function(){return 7!=S(B({},"a",{get:function(){return B(this,"a",{value:7}).a}})).a})?function(t,e,r){var n=I(q,e);n&&delete q[e],B(t,e,r),n&&t!==q&&B(q,e,n)}:B,H=function(t){var e=z[t]=S(R[j]);return e._k=t,e},X=F&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},Y=function(t,e,r){return t===q&&Y(D,e,r),g(t),e=_(e,!0),g(r),i(z,e)?(r.enumerable?(i(t,C)&&t[C][e]&&(t[C][e]=!1),r=S(r,{enumerable:M(0,!1)})):(i(t,C)||B(t,C,M(1,{})),t[C][e]=!0),V(t,e,r)):B(t,e,r)},W=function(t,e){g(t);for(var r,n=y(e=w(e)),i=0,o=n.length;o>i;)Y(t,r=n[i++],e[r]);return t},Z=function(t,e){return void 0===e?S(t):W(S(t),e)},J=function(t){var e=L.call(this,t=_(t,!0));return!(this===q&&i(z,t)&&!i(D,t))&&(!(e||!i(this,t)||!i(z,t)||i(this,C)&&this[C][t])||e)},$=function(t,e){if(t=w(t),e=_(e,!0),t!==q||!i(z,e)||i(D,e)){var r=I(t,e);return!r||!i(z,e)||i(t,C)&&t[C][e]||(r.enumerable=!0),r}},Q=function(t){for(var e,r=O(w(t)),n=[],o=0;r.length>o;)i(z,e=r[o++])||e==C||e==s||n.push(e);return n},tt=function(t){for(var e,r=t===q,n=O(r?D:w(t)),o=[],a=0;n.length>a;)!i(z,e=n[a++])||r&&!i(q,e)||o.push(z[e]);return o};F||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(r){this===q&&e.call(D,r),i(this,C)&&i(this[C],t)&&(this[C][t]=!1),V(this,t,M(1,r))};return o&&G&&V(q,t,{configurable:!0,set:e}),H(t)},f(R[j],"toString",function(){return this._k}),A.f=$,k.f=Y,r(43).f=E.f=Q,r(66).f=J,r(86).f=tt,o&&!r(41)&&f(q,"propertyIsEnumerable",J,!0),p.f=function(t){return H(l(t))}),a(a.G+a.W+a.F*!F,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;et.length>rt;)l(et[rt++]);for(var et=x(l.store),rt=0;et.length>rt;)b(et[rt++]);a(a.S+a.F*!F,"Symbol",{for:function(t){return i(U,t+="")?U[t]:U[t]=R(t)},keyFor:function(t){if(X(t))return v(U,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!F,"Object",{create:Z,defineProperty:Y,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),P&&a(a.S+a.F*(!F||u(function(){var t=R();return"[null]"!=T([t])||"{}"!=T({a:t})||"{}"!=T(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!X(t)){for(var e,r,n=[t],i=1;arguments.length>i;)n.push(arguments[i++]);return e=n[1],"function"==typeof e&&(r=e),!r&&m(e)||(e=function(t,e){if(r&&(e=r.call(this,t,e)),!X(e))return e}),n[1]=e,T.apply(P,n)}}}),R[j][N]||r(14)(R[j],N,R[j].valueOf),c(R,"Symbol"),c(Math,"Math",!0),c(n.JSON,"JSON",!0)},function(t,e,r){"use strict";var n=r(0),i=r(88),o=r(140),a=r(3),f=r(47),s=r(10),u=r(6),h=r(4).ArrayBuffer,c=r(134),d=o.ArrayBuffer,l=o.DataView,p=i.ABV&&h.isView,b=d.prototype.slice,v=i.VIEW,y="ArrayBuffer";n(n.G+n.W+n.F*(h!==d),{ArrayBuffer:d}),n(n.S+n.F*!i.CONSTR,y,{isView:function(t){return p&&p(t)||u(t)&&v in t}}),n(n.P+n.U+n.F*r(5)(function(){return!new d(2).slice(1,void 0).byteLength}),y,{slice:function(t,e){if(void 0!==b&&void 0===e)return b.call(a(this),t);for(var r=a(this).byteLength,n=f(t,r),i=f(void 0===e?r:e,r),o=new(c(this,d))(s(i-n)),u=new l(this),h=new l(o),p=0;n0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t,!0)}},n,!1,!0)},function(t,e,r){"use strict";var n=r(0),i=r(78)(!0);n(n.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)("includes")},function(t,e,r){var n=r(0),i=r(131)(),o=r(4).process,a="process"==r(23)(o);n(n.G,{asap:function(t){var e=a&&o.domain;i(e?e.bind(t):t)}})},function(t,e,r){var n=r(0),i=r(23);n(n.S,"Error",{isError:function(t){return"Error"===i(t)}})},function(t,e,r){var n=r(0);n(n.P+n.R,"Map",{toJSON:r(172)("Map")})},function(t,e,r){var n=r(0);n(n.S,"Math",{iaddh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o+(n>>>0)+((i&a|(i|a)&~(i+a>>>0))>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,"Math",{imulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>16,s=i>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>16)+((o*s>>>0)+(u&r)>>16)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{isubh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o-(n>>>0)-((~i&a|~(i^a)&i-a>>>0)>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,"Math",{umulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>>16,s=i>>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>>16)+((o*s>>>0)+(u&r)>>>16)}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),"Object",{__defineGetter__:function(t,e){a.f(i(this),t,{get:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),"Object",{__defineSetter__:function(t,e){a.f(i(this),t,{set:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){var n=r(0),i=r(183)(!0);n(n.S,"Object",{entries:function(t){return i(t)}})},function(t,e,r){var n=r(0),i=r(184),o=r(17),a=r(20),f=r(119);n(n.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,r=o(t),n=a.f,s=i(r),u={},h=0;s.length>h;)f(u,e=s[h++],n(r,e));return u}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),"Object",{__lookupGetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.get;while(r=a(r))}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),"Object",{__lookupSetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.set;while(r=a(r))}})},function(t,e,r){var n=r(0),i=r(183)(!1);n(n.S,"Object",{values:function(t){return i(t)}})},function(t,e,r){"use strict";var n=r(0),i=r(4),o=r(32),a=r(131)(),f=r(7)("observable"),s=r(13),u=r(3),h=r(40),c=r(45),d=r(14),l=r(55),p=l.RETURN,b=function(t){return null==t?void 0:s(t)},v=function(t){var e=t._c;e&&(t._c=void 0,e())},y=function(t){return void 0===t._o},m=function(t){y(t)||(t._o=void 0,v(t))},g=function(t,e){u(t),this._c=void 0,this._o=t,t=new w(this);try{var r=e(t),n=r;null!=r&&("function"==typeof r.unsubscribe?r=function(){n.unsubscribe()}:s(r),this._c=r)}catch(e){return void t.error(e)}y(this)&&v(this)};g.prototype=c({},{unsubscribe:function(){m(this)}});var w=function(t){this._s=t};w.prototype=c({},{next:function(t){var e=this._s;if(!y(e)){var r=e._o;try{var n=b(r.next);if(n)return n.call(r,t)}catch(t){try{m(e)}finally{throw t}}}},error:function(t){var e=this._s;if(y(e))throw t;var r=e._o;e._o=void 0;try{var n=b(r.error);if(!n)throw t;t=n.call(r,t)}catch(t){try{v(e)}finally{throw t}}return v(e),t},complete:function(t){var e=this._s;if(!y(e)){var r=e._o;e._o=void 0;try{var n=b(r.complete);t=n?n.call(r,t):void 0}catch(t){try{v(e)}finally{throw t}}return v(e),t}}});var _=function(t){h(this,_,"Observable","_f")._f=s(t)};c(_.prototype,{subscribe:function(t){return new g(t,this._f)},forEach:function(t){var e=this;return new(o.Promise||i.Promise)(function(r,n){s(t);var i=e.subscribe({next:function(e){try{return t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:r})})}}),c(_,{from:function(t){var e="function"==typeof this?this:_,r=b(u(t)[f]);if(r){var n=u(r.call(t));return n.constructor===e?n:new e(function(t){return n.subscribe(t)})}return new e(function(e){var r=!1;return a(function(){if(!r){try{if(l(t,!1,function(t){if(e.next(t),r)return p})===p)return}catch(t){if(r)throw t;return void e.error(t)}e.complete()}}),function(){r=!0}})},of:function(){for(var t=0,e=arguments.length,r=Array(e);t1?arguments[1]:void 0,!1)}})},function(t,e,r){"use strict";var n=r(0),i=r(188);n(n.P,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,r){"use strict";r(58)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},function(t,e,r){"use strict";r(58)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},function(t,e,r){r(141)("asyncIterator")},function(t,e,r){r(141)("observable")},function(t,e,r){var n=r(0);n(n.S,"System",{global:r(4)})},function(t,e,r){for(var n=r(143),i=r(15),o=r(4),a=r(14),f=r(56),s=r(7),u=s("iterator"),h=s("toStringTag"),c=f.Array,d=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var p,b=d[l],v=o[b],y=v&&v.prototype;if(y){y[u]||a(y,u,c),y[h]||a(y,h,b),f[b]=c;for(p in n)y[p]||i(y,p,n[p],!0)}}},function(t,e,r){var n=r(0),i=r(139);n(n.G+n.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,r){var n=r(4),i=r(0),o=r(82),a=r(287),f=n.navigator,s=!!f&&/MSIE .\./.test(f.userAgent),u=function(t){return s?function(e,r){return t(o(a,[].slice.call(arguments,2),"function"==typeof e?e:Function(e)),r)}:t};i(i.G+i.B+i.F*s,{setTimeout:u(n.setTimeout),setInterval:u(n.setInterval)})},function(t,e,r){r(410),r(349),r(351),r(350),r(353),r(355),r(360),r(354),r(352),r(362),r(361),r(357),r(358),r(356),r(348),r(359),r(363),r(364),r(316),r(318),r(317),r(366),r(365),r(336),r(346),r(347),r(337),r(338),r(339),r(340),r(341),r(342),r(343),r(344),r(345),r(319),r(320),r(321),r(322),r(323),r(324),r(325),r(326),r(327),r(328),r(329),r(330),r(331),r(332),r(333),r(334),r(335),r(397),r(402),r(409),r(400),r(392),r(393),r(398),r(403),r(405),r(388),r(389),r(390),r(391),r(394),r(395),r(396),r(399),r(401),r(404),r(406),r(407),r(408),r(311),r(313),r(312),r(315),r(314),r(300),r(298),r(304),r(301),r(307),r(309),r(297),r(303),r(294),r(308),r(292),r(306),r(305),r(299),r(302),r(291),r(293),r(296),r(295),r(310),r(143),r(382),r(387),r(191),r(383),r(384),r(385),r(386),r(367),r(190),r(192),r(193),r(422),r(411),r(412),r(417),r(420),r(421),r(415),r(418),r(416),r(419),r(413),r(414),r(368),r(369),r(370),r(371),r(372),r(375),r(373),r(374),r(376),r(377),r(378),r(379),r(381),r(380),r(423),r(449),r(452),r(451),r(453),r(454),r(450),r(455),r(456),r(434),r(437),r(433),r(431),r(432),r(435),r(436),r(426),r(448),r(457),r(425),r(427),r(429),r(428),r(430),r(439),r(440),r(442),r(441),r(444),r(443),r(445),r(446),r(447),r(424),r(438),r(460),r(459),r(458),t.exports=r(32)},function(t,e,r){t.exports=r(463)("ed25519")},function(t,e,r){(function(n,i){function o(t){"string"==typeof t?t={bindings:t}:t||(t={}),t.__proto__=c,t.module_root||(t.module_root=e.getRoot(e.getFileName())),".node"!=f.extname(t.bindings)&&(t.bindings+=".node");for(var r,n,i,o=[],a=0,u=t.try.length;a=6.0.0 <7.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.3.0",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569"},directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"}},function(t,e){t.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},function(t,e){t.exports={name:"elliptic",version:"6.3.2",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},keywords:["EC","Elliptic","curve","Cryptography"],author:{name:"Fedor Indutny",email:"fedor@indutny.com"},license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},gitHead:"cbace4683a4a548dc0306ef36756151a20299cd5",_id:"elliptic@6.3.2",_shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",_from:"elliptic@>=6.0.0 <7.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.3.0",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569"},directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"}},function(t,e){t.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff" +},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},function(t,e){t.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r127){var e=Math.ceil(t.length.toString(2).length/8);this.skip(e)}this.skip(t.length)}},{key:"write",value:function(t){this.size+=t.length}},{key:"skip",value:function(t){this.size+=t}},{key:"getSize",value:function(){return this.size}}]),t}();[1,2,4,8].forEach(function(t){a.prototype["writeUInt"+8*t]=function(e){return this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;rt.MAX_INT_BYTES)throw new Error("Tried to read too large integer (requested: "+e+", max: "+t.MAX_INT_BYTES+")");this.ensureAvailable(e);var r=this.buffer.readUIntBE(this.cursor,e);return r}},{key:"skipUInt",value:function(t){this.skip(t)}},{key:"readUInt64",value:function(){return[this.readUInt32(),this.readUInt32()]}},{key:"peekUInt64",value:function(){this.bookmark();var t=this.readUInt64();return this.restore(),t}},{key:"skipUInt64",value:function(){this.skip(8)}},{key:"readVarUInt",value:function(){var e=this.readVarOctetString();if(e.length>t.MAX_INT_BYTES)throw new a("UInt of length "+e.length+" too large to parse as integer (max: "+t.MAX_INT_BYTES+")");if(0===e.length)throw new a("UInt of length 0 is invalid");return e.readUIntBE(0,e.length)}},{key:"peekVarUInt",value:function(){this.bookmark();var t=this.readVarUInt();return this.restore(),t}},{key:"skipVarUInt",value:function(){this.skipVarOctetString()}},{key:"readOctetString",value:function(t){return this.read(t)}},{key:"peekOctetString",value:function(t){return this.peek(t)}},{key:"skipOctetString",value:function(t){return this.skip(t)}},{key:"readLengthPrefix",value:function(){var e=this.readUInt8();if(e&t.HIGH_BIT){var r=e&t.LOWER_SEVEN_BITS,n=this.readUInt(r),i=Math.max(128,1<<8*(r-1));if(n8*r)throw new Error("UInt "+t+" does not fit in "+r+" bytes");var n=new e(r);n.writeUIntBE(t,0,r),this.write(n)}},{key:"writeVarUInt",value:function(r){if(e.isBuffer(r))return void this.writeVarOctetString(r);if(!o(r))throw new Error("UInt must be an integer");if(r<0)throw new Error("UInt must be positive");if(r>t.MAX_SAFE_INTEGER)throw new Error("UInt is too large");var n=Math.ceil(r.toString(2).length/8),i=new e(n);i.writeUIntBE(r,0,n),this.writeVarOctetString(i)}},{key:"writeUInt64",value:function(e){if(o(e)&&e<=t.MAX_SAFE_INTEGER)return this.writeUInt32(Math.floor(e/4294967296)),void this.writeUInt32(4294967295&e);if(!Array.isArray(e)||2!==e.length||!o(e[0])||!o(e[1]))throw new TypeError("Expected 64-bit integer as an array of two 32-bit words");this.writeUInt32(e[0]),this.writeUInt32(e[1])}},{key:"writeOctetString",value:function(t,e){if(t.length!==e)throw new Error("Incorrect length for octet string (actual: "+t.length+", expected: "+e+")");this.write(t)}},{key:"writeVarOctetString",value:function(t){if(!e.isBuffer(t))throw new TypeError("Expects a buffer");var r=128;if(t.length<=127)this.writeUInt8(t.length);else{var n=Math.ceil(t.length.toString(2).length/8);this.writeUInt8(r|n),this.writeUInt(t.length,n)}this.write(t)}},{key:"write",value:function(t){this.components.push(t)}},{key:"getBuffer",value:function(){return e.concat(this.components)}}]),t}();a.MAX_SAFE_INTEGER=r(475),[1,2,4].forEach(function(t){a.prototype["writeUInt"+8*t]=function(e){this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){r(487),t.exports=9007199254740991},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(89);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e,r){var n=r(476);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(89),i=r(200).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(483),i=r(484);t.exports=r(144)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(144)&&!r(199)(function(){return 7!=Object.defineProperty(r(479)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(89),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(477),i=r(481),o=r(485),a=Object.defineProperty;e.f=r(144)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(89);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){var n=r(198);n(n.S,"Number",{isInteger:r(482)})},function(t,e,r){var n=r(198);n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){!function(t){"use strict";function e(t,e,r,n){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r,t[e+4]=n>>24&255,t[e+5]=n>>16&255,t[e+6]=n>>8&255,t[e+7]=255&n}function n(t,e,r,n,i){var o,a=0;for(o=0;o>>8)-1}function i(t,e,r,i){return n(t,e,r,i,16)}function o(t,e,r,i){return n(t,e,r,i,32)}function a(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;_=_+o|0,M=M+a|0,S=S+f|0,E=E+s|0,A=A+u|0,k=k+h|0,x=x+c|0,I=I+d|0,B=B+l|0,O=O+p|0,R=R+b|0,P=P+v|0,T=T+y|0,j=j+m|0,C=C+g|0,N=N+w|0,t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=M>>>0&255,t[5]=M>>>8&255,t[6]=M>>>16&255,t[7]=M>>>24&255,t[8]=S>>>0&255,t[9]=S>>>8&255,t[10]=S>>>16&255,t[11]=S>>>24&255,t[12]=E>>>0&255,t[13]=E>>>8&255,t[14]=E>>>16&255,t[15]=E>>>24&255,t[16]=A>>>0&255,t[17]=A>>>8&255,t[18]=A>>>16&255,t[19]=A>>>24&255,t[20]=k>>>0&255,t[21]=k>>>8&255,t[22]=k>>>16&255,t[23]=k>>>24&255,t[24]=x>>>0&255,t[25]=x>>>8&255,t[26]=x>>>16&255,t[27]=x>>>24&255,t[28]=I>>>0&255,t[29]=I>>>8&255,t[30]=I>>>16&255,t[31]=I>>>24&255,t[32]=B>>>0&255,t[33]=B>>>8&255,t[34]=B>>>16&255,t[35]=B>>>24&255,t[36]=O>>>0&255,t[37]=O>>>8&255,t[38]=O>>>16&255,t[39]=O>>>24&255,t[40]=R>>>0&255,t[41]=R>>>8&255,t[42]=R>>>16&255,t[43]=R>>>24&255,t[44]=P>>>0&255,t[45]=P>>>8&255,t[46]=P>>>16&255,t[47]=P>>>24&255,t[48]=T>>>0&255,t[49]=T>>>8&255,t[50]=T>>>16&255,t[51]=T>>>24&255,t[52]=j>>>0&255,t[53]=j>>>8&255,t[54]=j>>>16&255,t[55]=j>>>24&255,t[56]=C>>>0&255,t[57]=C>>>8&255,t[58]=C>>>16&255,t[59]=C>>>24&255,t[60]=N>>>0&255,t[61]=N>>>8&255,t[62]=N>>>16&255,t[63]=N>>>24&255}function f(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=k>>>0&255,t[5]=k>>>8&255,t[6]=k>>>16&255,t[7]=k>>>24&255,t[8]=R>>>0&255,t[9]=R>>>8&255,t[10]=R>>>16&255,t[11]=R>>>24&255,t[12]=N>>>0&255,t[13]=N>>>8&255,t[14]=N>>>16&255,t[15]=N>>>24&255,t[16]=x>>>0&255,t[17]=x>>>8&255,t[18]=x>>>16&255,t[19]=x>>>24&255,t[20]=I>>>0&255,t[21]=I>>>8&255,t[22]=I>>>16&255,t[23]=I>>>24&255,t[24]=B>>>0&255,t[25]=B>>>8&255,t[26]=B>>>16&255,t[27]=B>>>24&255,t[28]=O>>>0&255,t[29]=O>>>8&255,t[30]=O>>>16&255,t[31]=O>>>24&255}function s(t,e,r,n){a(t,e,r,n)}function u(t,e,r,n){f(t,e,r,n)}function h(t,e,r,n,i,o,a){var f,u,h=new Uint8Array(16),c=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(s(c,h,a,dt),u=0;u<64;u++)t[e+u]=r[n+u]^c[u];for(f=1,u=8;u<16;u++)f=f+(255&h[u])|0,h[u]=255&f,f>>>=8;i-=64,e+=64,n+=64}if(i>0)for(s(c,h,a,dt),u=0;u=64;){for(s(u,f,i,dt),a=0;a<64;a++)t[e+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&f[a])|0,f[a]=255&o,o>>>=8;r-=64,e+=64}if(r>0)for(s(u,f,i,dt),a=0;a>16&1),o[r-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),i=o[15]>>16&1,o[14]&=65535,w(a,o,1-i)}for(r=0;r<16;r++)t[2*r]=255&a[r],t[2*r+1]=a[r]>>8}function M(t,e){var r=new Uint8Array(32),n=new Uint8Array(32);return _(r,t),_(n,e),o(r,0,n,0)}function S(t){var e=new Uint8Array(32);return _(e,t),1&e[0]}function E(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function A(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]+r[n]}function k(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]-r[n]}function x(t,e,r){var n,i,o=0,a=0,f=0,s=0,u=0,h=0,c=0,d=0,l=0,p=0,b=0,v=0,y=0,m=0,g=0,w=0,_=0,M=0,S=0,E=0,A=0,k=0,x=0,I=0,B=0,O=0,R=0,P=0,T=0,j=0,C=0,N=r[0],L=r[1],U=r[2],z=r[3],D=r[4],q=r[5],F=r[6],K=r[7],G=r[8],V=r[9],H=r[10],X=r[11],Y=r[12],W=r[13],Z=r[14],J=r[15];n=e[0],o+=n*N,a+=n*L,f+=n*U,s+=n*z,u+=n*D,h+=n*q,c+=n*F,d+=n*K,l+=n*G,p+=n*V,b+=n*H,v+=n*X,y+=n*Y,m+=n*W,g+=n*Z,w+=n*J,n=e[1],a+=n*N,f+=n*L,s+=n*U,u+=n*z,h+=n*D,c+=n*q,d+=n*F,l+=n*K,p+=n*G,b+=n*V,v+=n*H,y+=n*X,m+=n*Y,g+=n*W,w+=n*Z,_+=n*J,n=e[2],f+=n*N,s+=n*L,u+=n*U,h+=n*z,c+=n*D,d+=n*q,l+=n*F,p+=n*K,b+=n*G,v+=n*V,y+=n*H,m+=n*X,g+=n*Y,w+=n*W,_+=n*Z,M+=n*J,n=e[3],s+=n*N,u+=n*L,h+=n*U,c+=n*z,d+=n*D,l+=n*q,p+=n*F,b+=n*K,v+=n*G,y+=n*V,m+=n*H,g+=n*X,w+=n*Y,_+=n*W,M+=n*Z,S+=n*J,n=e[4],u+=n*N,h+=n*L,c+=n*U,d+=n*z,l+=n*D,p+=n*q,b+=n*F,v+=n*K,y+=n*G,m+=n*V,g+=n*H,w+=n*X,_+=n*Y,M+=n*W,S+=n*Z,E+=n*J,n=e[5],h+=n*N,c+=n*L,d+=n*U,l+=n*z,p+=n*D,b+=n*q,v+=n*F,y+=n*K,m+=n*G,g+=n*V,w+=n*H,_+=n*X,M+=n*Y,S+=n*W,E+=n*Z,A+=n*J,n=e[6],c+=n*N,d+=n*L,l+=n*U,p+=n*z,b+=n*D,v+=n*q,y+=n*F,m+=n*K,g+=n*G,w+=n*V,_+=n*H,M+=n*X,S+=n*Y,E+=n*W,A+=n*Z,k+=n*J,n=e[7],d+=n*N,l+=n*L,p+=n*U,b+=n*z,v+=n*D,y+=n*q,m+=n*F,g+=n*K,w+=n*G,_+=n*V,M+=n*H,S+=n*X,E+=n*Y,A+=n*W,k+=n*Z,x+=n*J,n=e[8],l+=n*N,p+=n*L,b+=n*U,v+=n*z,y+=n*D,m+=n*q,g+=n*F,w+=n*K,_+=n*G,M+=n*V,S+=n*H,E+=n*X,A+=n*Y,k+=n*W,x+=n*Z,I+=n*J,n=e[9],p+=n*N,b+=n*L,v+=n*U,y+=n*z,m+=n*D,g+=n*q,w+=n*F,_+=n*K,M+=n*G,S+=n*V,E+=n*H,A+=n*X,k+=n*Y,x+=n*W,I+=n*Z,B+=n*J,n=e[10],b+=n*N,v+=n*L,y+=n*U,m+=n*z,g+=n*D,w+=n*q,_+=n*F,M+=n*K,S+=n*G,E+=n*V,A+=n*H,k+=n*X,x+=n*Y,I+=n*W,B+=n*Z,O+=n*J,n=e[11],v+=n*N,y+=n*L,m+=n*U,g+=n*z,w+=n*D,_+=n*q,M+=n*F,S+=n*K,E+=n*G,A+=n*V,k+=n*H,x+=n*X;I+=n*Y;B+=n*W,O+=n*Z,R+=n*J,n=e[12],y+=n*N,m+=n*L,g+=n*U,w+=n*z,_+=n*D,M+=n*q,S+=n*F,E+=n*K,A+=n*G,k+=n*V,x+=n*H,I+=n*X,B+=n*Y,O+=n*W,R+=n*Z,P+=n*J,n=e[13],m+=n*N,g+=n*L,w+=n*U,_+=n*z,M+=n*D,S+=n*q,E+=n*F,A+=n*K,k+=n*G,x+=n*V,I+=n*H,B+=n*X,O+=n*Y,R+=n*W,P+=n*Z,T+=n*J,n=e[14],g+=n*N,w+=n*L,_+=n*U,M+=n*z,S+=n*D,E+=n*q,A+=n*F,k+=n*K,x+=n*G,I+=n*V,B+=n*H,O+=n*X,R+=n*Y,P+=n*W,T+=n*Z,j+=n*J,n=e[15],w+=n*N,_+=n*L,M+=n*U,S+=n*z,E+=n*D,A+=n*q,k+=n*F,x+=n*K,I+=n*G,B+=n*V,O+=n*H,R+=n*X,P+=n*Y,T+=n*W,j+=n*Z,C+=n*J,o+=38*_,a+=38*M,f+=38*S,s+=38*E,u+=38*A,h+=38*k,c+=38*x,d+=38*I,l+=38*B,p+=38*O,b+=38*R,v+=38*P,y+=38*T,m+=38*j,g+=38*C,i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),t[0]=o,t[1]=a,t[2]=f,t[3]=s,t[4]=u,t[5]=h,t[6]=c,t[7]=d,t[8]=l,t[9]=p,t[10]=b,t[11]=v,t[12]=y,t[13]=m;t[14]=g;t[15]=w}function I(t,e){x(t,e,e)}function B(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=253;r>=0;r--)I(n,n),2!==r&&4!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function O(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=250;r>=0;r--)I(n,n),1!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function R(t,e,r){var n,i,o=new Uint8Array(32),a=new Float64Array(80),f=tt(),s=tt(),u=tt(),h=tt(),c=tt(),d=tt();for(i=0;i<31;i++)o[i]=e[i];for(o[31]=127&e[31]|64,o[0]&=248,E(a,r),i=0;i<16;i++)s[i]=a[i],h[i]=f[i]=u[i]=0;for(f[0]=h[0]=1,i=254;i>=0;--i)n=o[i>>>3]>>>(7&i)&1,w(f,s,n),w(u,h,n),A(c,f,u),k(f,f,u),A(u,s,h),k(s,s,h),I(h,c),I(d,f),x(f,u,f),x(u,s,c),A(c,f,u),k(f,f,u),I(s,f),k(u,h,d),x(f,u,at),A(f,f,h),x(u,u,f),x(f,h,d),x(h,s,a),I(s,c),w(f,s,n),w(u,h,n);for(i=0;i<16;i++)a[i+16]=f[i],a[i+32]=u[i],a[i+48]=s[i],a[i+64]=h[i];var l=a.subarray(32),p=a.subarray(16);return B(l,l),x(p,p,l),_(t,p),0}function P(t,e){return R(t,e,nt)}function T(t,e){return et(e,32),P(t,e)}function j(t,e,r){var n=new Uint8Array(32);return R(n,r,e),u(t,rt,n,dt)}function C(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),pt(t,e,r,n,a)}function N(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),bt(t,e,r,n,a)}function L(t,e,r,n){for(var i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M,S,E,A,k,x,I,B,O=new Int32Array(16),R=new Int32Array(16),P=t[0],T=t[1],j=t[2],C=t[3],N=t[4],L=t[5],U=t[6],z=t[7],D=e[0],q=e[1],F=e[2],K=e[3],G=e[4],V=e[5],H=e[6],X=e[7],Y=0;n>=128;){for(M=0;M<16;M++)S=8*M+Y,O[M]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[M]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(M=0;M<80;M++)if(i=P,o=T,a=j,f=C,s=N,u=L,h=U,c=z,d=D,l=q,p=F,b=K,v=G,y=V,m=H,g=X,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(N>>>14|G<<18)^(N>>>18|G<<14)^(G>>>9|N<<23),A=(G>>>14|N<<18)^(G>>>18|N<<14)^(N>>>9|G<<23),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=N&L^~N&U,A=G&V^~G&H,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=vt[2*M],A=vt[2*M+1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=O[M%16],A=R[M%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,w=65535&I|B<<16,_=65535&k|x<<16,E=w,A=_,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(P>>>28|D<<4)^(D>>>2|P<<30)^(D>>>7|P<<25),A=(D>>>28|P<<4)^(P>>>2|D<<30)^(P>>>7|D<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=P&T^P&j^T&j,A=D&q^D&F^q&F,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,c=65535&I|B<<16,g=65535&k|x<<16,E=f,A=b,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=w,A=_,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,f=65535&I|B<<16,b=65535&k|x<<16,T=i,j=o,C=a,N=f,L=s,U=u,z=h,P=c,q=d,F=l,K=p,G=b,V=v,H=y,X=m,D=g,M%16===15)for(S=0;S<16;S++)E=O[S],A=R[S],k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=O[(S+9)%16],A=R[(S+9)%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+1)%16],_=R[(S+1)%16],E=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,A=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+14)%16],_=R[(S+14)%16],E=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,A=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,O[S]=65535&I|B<<16,R[S]=65535&k|x<<16;E=P,A=D,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[0],A=e[0],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[0]=P=65535&I|B<<16,e[0]=D=65535&k|x<<16,E=T,A=q,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[1],A=e[1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[1]=T=65535&I|B<<16,e[1]=q=65535&k|x<<16,E=j,A=F,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[2],A=e[2],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[2]=j=65535&I|B<<16,e[2]=F=65535&k|x<<16,E=C,A=K,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[3],A=e[3],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[3]=C=65535&I|B<<16,e[3]=K=65535&k|x<<16,E=N,A=G,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[4],A=e[4],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[4]=N=65535&I|B<<16,e[4]=G=65535&k|x<<16,E=L,A=V,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[5],A=e[5],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[5]=L=65535&I|B<<16,e[5]=V=65535&k|x<<16,E=U,A=H,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[6],A=e[6],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[6]=U=65535&I|B<<16,e[6]=H=65535&k|x<<16,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[7],A=e[7],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[7]=z=65535&I|B<<16,e[7]=X=65535&k|x<<16,Y+=128,n-=128}return n}function U(t,r,n){var i,o=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),s=n;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,L(o,a,r,n),n%=128,i=0;i=0;--i)n=r[i/8|0]>>(7&i)&1,D(t,e,n),z(e,t),z(t,t),D(t,e,n)}function K(t,e){var r=[tt(),tt(),tt(),tt()]; +m(r[0],ut),m(r[1],ht),m(r[2],ot),x(r[3],ut,ht),F(t,r,e)}function G(t,e,r){var n,i=new Uint8Array(64),o=[tt(),tt(),tt(),tt()];for(r||et(e,32),U(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,K(o,i),q(t,o),n=0;n<32;n++)e[n+32]=t[n];return 0}function V(t,e){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,e[i]-=256*r;e[i]+=r,e[n]=0}for(r=0,i=0;i<32;i++)e[i]+=r-(e[31]>>4)*yt[i],r=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=r*yt[i];for(n=0;n<32;n++)e[n+1]+=e[n]>>8,t[n]=255&e[n]}function H(t){var e,r=new Float64Array(64);for(e=0;e<64;e++)r[e]=t[e];for(e=0;e<64;e++)t[e]=0;V(t,r)}function X(t,e,r,n){var i,o,a=new Uint8Array(64),f=new Uint8Array(64),s=new Uint8Array(64),u=new Float64Array(64),h=[tt(),tt(),tt(),tt()];U(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=r+64;for(i=0;i>7&&k(t[0],it,t[0]),x(t[3],t[0],t[1]),0)}function W(t,e,r,n){var i,a,f=new Uint8Array(32),s=new Uint8Array(64),u=[tt(),tt(),tt(),tt()],h=[tt(),tt(),tt(),tt()];if(a=-1,r<64)return-1;if(Y(h,n))return-1;for(i=0;i>>13|r<<3),n=255&t[4]|(255&t[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&t[6]|(255&t[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&t[8]|(255&t[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&t[10]|(255&t[11])<<8,this.r[6]=8191&(o>>>14|a<<2),f=255&t[12]|(255&t[13])<<8,this.r[7]=8065&(a>>>11|f<<5),s=255&t[14]|(255&t[15])<<8,this.r[8]=8191&(f>>>8|s<<8),this.r[9]=s>>>5&127,this.pad[0]=255&t[16]|(255&t[17])<<8,this.pad[1]=255&t[18]|(255&t[19])<<8,this.pad[2]=255&t[20]|(255&t[21])<<8,this.pad[3]=255&t[22]|(255&t[23])<<8,this.pad[4]=255&t[24]|(255&t[25])<<8,this.pad[5]=255&t[26]|(255&t[27])<<8,this.pad[6]=255&t[28]|(255&t[29])<<8,this.pad[7]=255&t[30]|(255&t[31])<<8};lt.prototype.blocks=function(t,e,r){for(var n,i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M=this.fin?0:2048,S=this.h[0],E=this.h[1],A=this.h[2],k=this.h[3],x=this.h[4],I=this.h[5],B=this.h[6],O=this.h[7],R=this.h[8],P=this.h[9],T=this.r[0],j=this.r[1],C=this.r[2],N=this.r[3],L=this.r[4],U=this.r[5],z=this.r[6],D=this.r[7],q=this.r[8],F=this.r[9];r>=16;)n=255&t[e+0]|(255&t[e+1])<<8,S+=8191&n,i=255&t[e+2]|(255&t[e+3])<<8,E+=8191&(n>>>13|i<<3),o=255&t[e+4]|(255&t[e+5])<<8,A+=8191&(i>>>10|o<<6),a=255&t[e+6]|(255&t[e+7])<<8,k+=8191&(o>>>7|a<<9),f=255&t[e+8]|(255&t[e+9])<<8,x+=8191&(a>>>4|f<<12),I+=f>>>1&8191,s=255&t[e+10]|(255&t[e+11])<<8,B+=8191&(f>>>14|s<<2),u=255&t[e+12]|(255&t[e+13])<<8,O+=8191&(s>>>11|u<<5),h=255&t[e+14]|(255&t[e+15])<<8,R+=8191&(u>>>8|h<<8),P+=h>>>5|M,c=0,d=c,d+=S*T,d+=E*(5*F),d+=A*(5*q),d+=k*(5*D),d+=x*(5*z),c=d>>>13,d&=8191,d+=I*(5*U),d+=B*(5*L),d+=O*(5*N),d+=R*(5*C),d+=P*(5*j),c+=d>>>13,d&=8191,l=c,l+=S*j,l+=E*T,l+=A*(5*F),l+=k*(5*q),l+=x*(5*D),c=l>>>13,l&=8191,l+=I*(5*z),l+=B*(5*U),l+=O*(5*L),l+=R*(5*N),l+=P*(5*C),c+=l>>>13,l&=8191,p=c,p+=S*C,p+=E*j,p+=A*T,p+=k*(5*F),p+=x*(5*q),c=p>>>13,p&=8191,p+=I*(5*D),p+=B*(5*z),p+=O*(5*U),p+=R*(5*L),p+=P*(5*N),c+=p>>>13,p&=8191,b=c,b+=S*N,b+=E*C,b+=A*j,b+=k*T,b+=x*(5*F),c=b>>>13,b&=8191,b+=I*(5*q),b+=B*(5*D),b+=O*(5*z),b+=R*(5*U),b+=P*(5*L),c+=b>>>13,b&=8191,v=c,v+=S*L,v+=E*N,v+=A*C,v+=k*j,v+=x*T,c=v>>>13,v&=8191,v+=I*(5*F),v+=B*(5*q),v+=O*(5*D),v+=R*(5*z),v+=P*(5*U),c+=v>>>13,v&=8191,y=c,y+=S*U,y+=E*L,y+=A*N,y+=k*C,y+=x*j,c=y>>>13,y&=8191,y+=I*T,y+=B*(5*F),y+=O*(5*q),y+=R*(5*D),y+=P*(5*z),c+=y>>>13,y&=8191,m=c,m+=S*z,m+=E*U,m+=A*L,m+=k*N,m+=x*C,c=m>>>13,m&=8191,m+=I*j,m+=B*T,m+=O*(5*F),m+=R*(5*q),m+=P*(5*D),c+=m>>>13,m&=8191,g=c,g+=S*D,g+=E*z,g+=A*U,g+=k*L,g+=x*N,c=g>>>13,g&=8191,g+=I*C,g+=B*j,g+=O*T,g+=R*(5*F),g+=P*(5*q),c+=g>>>13,g&=8191,w=c,w+=S*q,w+=E*D,w+=A*z,w+=k*U,w+=x*L,c=w>>>13,w&=8191,w+=I*N,w+=B*C,w+=O*j,w+=R*T,w+=P*(5*F),c+=w>>>13,w&=8191,_=c,_+=S*F,_+=E*q,_+=A*D,_+=k*z,_+=x*U,c=_>>>13,_&=8191,_+=I*L,_+=B*N,_+=O*C,_+=R*j,_+=P*T,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+d|0,d=8191&c,c>>>=13,l+=c,S=d,E=l,A=p,k=b,x=v,I=y,B=m,O=g,R=w,P=_,e+=16,r-=16;this.h[0]=S,this.h[1]=E,this.h[2]=A,this.h[3]=k,this.h[4]=x,this.h[5]=I,this.h[6]=B,this.h[7]=O,this.h[8]=R,this.h[9]=P},lt.prototype.finish=function(t,e){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;t[e+0]=this.h[0]>>>0&255,t[e+1]=this.h[0]>>>8&255,t[e+2]=this.h[1]>>>0&255,t[e+3]=this.h[1]>>>8&255,t[e+4]=this.h[2]>>>0&255,t[e+5]=this.h[2]>>>8&255,t[e+6]=this.h[3]>>>0&255,t[e+7]=this.h[3]>>>8&255,t[e+8]=this.h[4]>>>0&255,t[e+9]=this.h[4]>>>8&255,t[e+10]=this.h[5]>>>0&255,t[e+11]=this.h[5]>>>8&255,t[e+12]=this.h[6]>>>0&255,t[e+13]=this.h[6]>>>8&255,t[e+14]=this.h[7]>>>0&255,t[e+15]=this.h[7]>>>8&255},lt.prototype.update=function(t,e,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(t,e,i),e+=i,r-=i),r){for(n=0;n=0},t.sign.keyPair=function(){var t=new Uint8Array(Rt),e=new Uint8Array(Pt);return G(t,e),{publicKey:t,secretKey:e}},t.sign.keyPair.fromSecretKey=function(t){if($(t),t.length!==Pt)throw new Error("bad secret key size");for(var e=new Uint8Array(Rt),r=0;r0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function n(t){return 3*t.length/4-r(t)}function i(t){var e,n,i,o,a,f,s=t.length;a=r(t),f=new h(3*s/4-a),i=a>0?s-4:s;var c=0;for(e=0,n=0;e>16&255,f[c++]=o>>8&255,f[c++]=255&o;return 2===a?(o=u[t.charCodeAt(e)]<<2|u[t.charCodeAt(e+1)]>>4,f[c++]=255&o):1===a&&(o=u[t.charCodeAt(e)]<<10|u[t.charCodeAt(e+1)]<<4|u[t.charCodeAt(e+2)]>>2,f[c++]=o>>8&255,f[c++]=255&o),f}function o(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function a(t,e,r){for(var n,i=[],a=e;ah?h:u+f));return 1===n?(e=t[r-1],i+=s[e>>2],i+=s[e<<4&63],i+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=s[e>>10],i+=s[e>>4&63],i+=s[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=n,e.toByteArray=i,e.fromByteArray=f;for(var s=[],u=[],h="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,l=c.length;d>1,h=-7,c=r?i-1:0,d=r?-1:1,l=t[e+c];for(c+=d,o=l&(1<<-h)-1,l>>=-h,h+=f;h>0;o=256*o+t[e+c],c+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=d,h-=8);if(0===o)o=1-u;else{if(o===s)return a?NaN:(l?-1:1)*(1/0);a+=Math.pow(2,n),o-=u}return(l?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,f,s,u=8*o-i-1,h=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,p=n?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+c>=1?d/s:d*Math.pow(2,1-c),e*s>=2&&(a++,s/=2),a+c>=h?(f=0,a=h):a+c>=1?(f=(e*s-1)*Math.pow(2,i),a+=c):(f=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+l]=255&f,l+=p,f/=256,i-=8);for(a=a<0;t[r+l]=255&a,l+=p,a/=256,u-=8);t[r+l-p]|=128*b}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){function n(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError("invalid suite type");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return o(t,i.key,i.iv)}function i(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError("invalid suite type");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return a(t,i.key,i.iv)}function o(t,e,r){if(t=t.toLowerCase(),d[t])return u.createCipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function a(t,e,r){if(t=t.toLowerCase(),d[t])return u.createDecipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function f(){return Object.keys(c).concat(u.getCiphers())}var s=r(146),u=r(494),h=r(498),c=r(499),d=r(95);e.createCipher=e.Cipher=n,e.createCipheriv=e.Cipheriv=o,e.createDecipher=e.Decipher=i,e.createDecipheriv=e.Decipheriv=a,e.listCiphers=e.getCiphers=f},function(t,e,r){function n(){return Object.keys(a)}var i=r(496);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv;var o=r(495);e.createDecipher=e.Decipher=o.createDecipher,e.createDecipheriv=e.Decipheriv=o.createDecipheriv;var a=r(95);e.listCiphers=e.getCiphers=n},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(u.call(this),this._cache=new i,this._last=void 0,this._cipher=new s.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(t){for(var e=t[15],r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(208),CBC:r(204),CFB:r(205),CFB8:r(207),CFB1:r(206),OFB:r(209),CTR:r(96),GCM:r(96)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(94),s=r(97),u=r(2),h=r(95),c=r(146),d=r(210),l=r(203);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){i.call(this);var r,n=t.mode.toLowerCase(),o=f[n];r=t.decrypt?"decrypt":"encrypt";var a=t.key;"des-ede"!==n&&"des-ede-cbc"!==n||(a=e.concat([a,a.slice(0,8)]));var s=t.iv;this._des=o.create({key:a,iv:s,type:r})}var i=r(500),o=r(145),a=r(2),f={"des-ede3-cbc":o.CBC.instantiate(o.EDE),"des-ede3":o.EDE,"des-ede-cbc":o.CBC.instantiate(o.EDE),"des-ede":o.EDE,"des-cbc":o.CBC.instantiate(o.DES),"des-ecb":o.DES};f.des=f["des-cbc"],f.des3=f["des-ede3-cbc"],t.exports=n,a(n,i),n.prototype._update=function(t){return new e(this._des.update(t))},n.prototype._final=function(){return new e(this._des.final())}}).call(e,r(1).Buffer)},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,r){(function(e){function n(t){i.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._decoder=null,this._encoding=null}var i=r(31).Transform,o=r(2),a=r(52).StringDecoder;t.exports=n,o(n,i),n.prototype.update=function(t,r,n){"string"==typeof t&&(t=new e(t,r));var i=this._update(t);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},n.prototype.setAutoPadding=function(){},n.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},n.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},n.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},n.prototype._transform=function(t,e,r){var n;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){n=t}finally{r(n)}},n.prototype._flush=function(t){var e;try{this.push(this._final())}catch(t){e=t}finally{t(e)}},n.prototype._finalOrDigest=function(t){var r=this._final()||new e("");return t&&(r=this._toString(r,t,!0)),r},n.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new a(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var n=this._decoder.write(t);return r&&(n+=this._decoder.end()),n}}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t){o.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e0;n--)e+=this._buffer(t,e),r+=this._flushBuffer(i,r);return e+=this._buffer(t,e),i},n.prototype.final=function(t){var e;t&&(e=this.update(t));var r;return r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e>>1];r=s.r28shl(r,a),n=s.r28shl(n,a),s.pc2(r,n,t.keys,i)}},i.prototype._update=function(t,e,r,n){var i=this._desState,o=s.readUInt32BE(t,e),a=s.readUInt32BE(t,e+4);s.ip(o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],"encrypt"===this.type?this._encrypt(i,o,a,i.tmp,0):this._decrypt(i,o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],s.writeUInt32BE(r,o,n),s.writeUInt32BE(r,a,n+4)},i.prototype._pad=function(t,e){for(var r=t.length-e,n=e;n>>0,o=l}s.rip(a,o,n,i)},i.prototype._decrypt=function(t,e,r,n,i){for(var o=r,a=e,f=t.keys.length-2;f>=0;f-=2){var u=t.keys[f],h=t.keys[f+1];s.expand(o,t.tmp,0),u^=t.tmp[0],h^=t.tmp[1];var c=s.substitute(u,h),d=s.permute(c),l=o;o=(a^d)>>>0,a=l}s.rip(o,a,n,i)}},function(t,e,r){"use strict";function n(t,e){o.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),i=e.slice(16,24);"encrypt"===t?this.ciphers=[u.create({type:"encrypt",key:r}),u.create({type:"decrypt",key:n}),u.create({type:"encrypt",key:i})]:this.ciphers=[u.create({type:"decrypt",key:i}),u.create({type:"encrypt",key:n}),u.create({type:"decrypt",key:r})]}function i(t){s.call(this,t);var e=new n(this.type,this.options.key);this._edeState=e}var o=r(98),a=r(2),f=r(145),s=f.Cipher,u=f.DES;a(i,s),t.exports=i,i.create=function(t){return new i(t)},i.prototype._update=function(t,e,r,n){var i=this._edeState;i.ciphers[0]._update(t,e,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},i.prototype._pad=u.prototype._pad,i.prototype._unpad=u.prototype._unpad},function(t,e){"use strict";e.readUInt32BE=function(t,e){var r=t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e];return r>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,n){for(var i=0,o=0,a=6;a>=0;a-=2){for(var f=0;f<=24;f+=8)i<<=1,i|=e>>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>>f+a&1}for(var a=6;a>=0;a-=2){for(var f=1;f<=25;f+=8)o<<=1,o|=e>>>f+a&1;for(var f=1;f<=25;f+=8)o<<=1,o|=t>>>f+a&1}r[n+0]=i>>>0,r[n+1]=o>>>0},e.rip=function(t,e,r,n){for(var i=0,o=0,a=0;a<4;a++)for(var f=24;f>=0;f-=8)i<<=1,i|=e>>>f+a&1,i<<=1,i|=t>>>f+a&1;for(var a=4;a<8;a++)for(var f=24;f>=0;f-=8)o<<=1,o|=e>>>f+a&1,o<<=1,o|=t>>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.pc1=function(t,e,r,n){for(var i=0,o=0,a=7;a>=5;a--){ +for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>f+a&1}for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var a=1;a<=3;a++){for(var f=0;f<=24;f+=8)o<<=1,o|=e>>f+a&1;for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1}for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,n,i){for(var o=0,a=0,f=r.length>>>1,s=0;s>>r[s]&1;for(var s=f;s>>r[s]&1;n[i+0]=o>>>0,n[i+1]=a>>>0},e.expand=function(t,e,r){var n=0,i=0;n=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=t>>>o&63;for(var o=11;o>=3;o-=4)i|=t>>>o&63,i<<=6;i|=(31&t)<<1|t>>>31,e[r+0]=n>>>0,e[r+1]=i>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,i=0;i<4;i++){var o=t>>>18-6*i&63,a=n[64*i+o];r<<=4,r|=a}for(var i=0;i<4;i++){var o=e>>>18-6*i&63,a=n[256+64*i+o];r<<=4,r|=a}return r>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>i[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var n=t.toString(2);n.length=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(18),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t,e){this.type=t,this.p=new o(e.p,16),this.red=e.prime?o.red(e.prime):o.mont(this.p),this.zero=new o(0).toRed(this.red),this.one=new o(1).toRed(this.red),this.two=new o(2).toRed(this.red),this.n=e.n&&new o(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(18),a=r(19),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error("Not implemented")},n.prototype.validate=function(){throw new Error("Not implemented")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a="affine"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return"affine"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M="affine"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){"use strict";function n(t){s.call(this,"mont",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(99),a=r(18),f=r(2),s=o.base,u=r(19),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?"":""},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";function n(t){h.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(99),f=r(19),s=r(18),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?"":""},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";function n(t){"short"===t.type?this.curve=new f.curve.short(t):"edwards"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(49),f=r(19),s=f.utils.assert;o.PresetCurve=n,i("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),i("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),i("p256",{ +type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),i("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),i("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),i("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),i("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var u;try{u=r(520)}catch(t){u=void 0}i("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",u]})},function(t,e,r){"use strict";function n(t){return this instanceof n?("string"==typeof t&&(f(o.curves.hasOwnProperty(t),"Unknown curve "+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(18),o=r(19),a=o.utils,f=a.assert,s=r(514),u=r(515);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){"object"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray("be",a),s=t.toArray("be",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,"hex");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,"The recovery param is more than two bits"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(18);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},n.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return""}},function(t,e,r){"use strict";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(18),u=r(19),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){"use strict";function n(t){if(f("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(49),o=r(19),a=o.utils,f=a.assert,s=a.parseBytes,u=r(517),h=r(518);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i=r(49),o=r(19),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?"0"+t:t}function o(t){for(var e="",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return"string"==typeof t?c.toArray(t,"hex"):t}function h(t){return new d(t,"hex","le")}var c=e,d=r(18);c.assert=function(t,e){if(!t)throw new Error(e||"Assertion failed")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return"hex"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var o=r(609);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(49),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r="",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||"Assertion failed")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){var n=r(100),i=n.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});e.RSAPrivateKey=i;var o=n.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});e.RSAPublicKey=o;var a=n.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())});e.PublicKey=a;var f=n.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),s=n.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(f),this.key("subjectPrivateKey").octstr())});e.PrivateKey=s;var u=n.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});e.EncryptedPrivateKey=u;var h=n.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});e.DSAPrivateKey=h,e.DSAparam=n.define("DSAparam",function(){this.int()});var c=n.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m,i=/^-----BEGIN (.*) KEY-----\r?\n/m,o=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m,a=r(148),f=r(219);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c="aes"+h[1],d=new e(h[2],"hex"),l=new e(h[3].replace(/\r?\n/g,""),"base64"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\r?\n/g,""),"base64")}var m=u.match(i)[1]+" KEY";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(100),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(68).Reporter,o=r(68).EncoderBuffer,a=r(68).DecoderBuffer,f=r(538),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s),h=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];t.exports=n;var c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,"Root node can have only one child")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"int"===t||"enum"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error("Choice not matched")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");var n=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?"universal":"context";null===u?null===n.use&&e.error("Tag could be ommited only for .use()"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);throw new Error("Unsupported tag: "+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return"["+JSON.stringify(t)+"]"}).join(""),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(215);e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str", +21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(216),n.pem=r(535)},function(t,e,r){function n(t){a.call(this,t),this.enc="pem"}var i=r(2),o=r(1).Buffer,a=r(216);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\r\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(224),CBC:r(220),CFB:r(221),CFB8:r(223),CFB1:r(222),OFB:r(225),CTR:r(102),GCM:r(102)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(101),s=r(103),u=r(2),h=r(147),c=r(148),d=r(226),l=r(218);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e,r,n){var a=v(e);if(a.curve){if("ecdsa"!==n)throw new Error("wrong private key type");return i(t,a)}if("dsa"===a.type){if("dsa"!==n)throw new Error("wrong private key type");return o(t,a,r)}if("rsa"!==n)throw new Error("wrong private key type");for(var f=a.modulus.byteLength(),s=[0,1];t.length+s.length+10&&r.ishrn(n),r}function u(t,r){t=s(t,r),t=t.mod(r);var n=new e(t.toArray());if(n.length=e)throw new Error("invalid sig")}var f=r(212),s=r(19),u=r(213),h=r(18),c=s.ec;t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){this.curveType=f[t],this.curveType||(this.curveType={name:t}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}function i(t,r,n){Array.isArray(t)||(t=t.toArray());var i=new e(t);if(n&&i.length0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(30),a=r(22),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error("Not implemented")},n.prototype.validate=function(){throw new Error("Not implemented")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a="affine"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return"affine"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M="affine"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){"use strict";function n(t){s.call(this,"mont",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(104),a=r(30),f=r(2),s=o.base,u=r(22),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?"":""},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";function n(t){h.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(104),f=r(22),s=r(30),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t}, +u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?"":""},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";function n(t){"short"===t.type?this.curve=new f.curve.short(t):"edwards"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(50),f=r(22),s=f.utils.assert;o.PresetCurve=n,i("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),i("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),i("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),i("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),i("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),i("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),i("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var u;try{u=r(557)}catch(t){u=void 0}i("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",u]})},function(t,e,r){"use strict";function n(t){return this instanceof n?("string"==typeof t&&(f(o.curves.hasOwnProperty(t),"Unknown curve "+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(30),o=r(22),a=o.utils,f=a.assert,s=r(551),u=r(552);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){"object"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray("be",a),s=t.toArray("be",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,"hex");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,"The recovery param is more than two bits"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(30);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},n.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return""}},function(t,e,r){"use strict";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(30),u=r(22),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){"use strict";function n(t){if(f("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(50),o=r(22),a=o.utils,f=a.assert,s=a.parseBytes,u=r(554),h=r(555);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i=r(50),o=r(22),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?"0"+t:t}function o(t){for(var e="",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return"string"==typeof t?c.toArray(t,"hex"):t}function h(t){return new d(t,"hex","le")}var c=e,d=r(30);c.assert=function(t,e){if(!t)throw new Error(e||"Assertion failed")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return"hex"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var o=r(610);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(50),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r="",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||"Assertion failed")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){"use strict";(function(t){function r(e,r){if(e.length%o!==0){var n=e.length+(o-e.length%o);e=t.concat([e,a],n)}for(var i=[],f=r?e.readInt32BE:e.readInt32LE,s=0;s>>5]|=t[r]<<24-n%32;return e}function n(t){for(var e=[],r=0;r<32*t.length;r+=8)e.push(t[r>>>5]>>>24-r%32&255);return e}function i(t,e,r){for(var n=0;n<16;n++){var i=r+n,c=e[i];e[i]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var m,g,w,_,M,S,E,A,k,x;S=m=t[0],E=g=t[1],A=w=t[2],k=_=t[3],x=M=t[4];var I;for(n=0;n<80;n+=1)I=m+e[r+d[n]]|0,I+=n<16?o(g,w,_)+v[0]:n<32?a(g,w,_)+v[1]:n<48?f(g,w,_)+v[2]:n<64?s(g,w,_)+v[3]:u(g,w,_)+v[4],I|=0,I=h(I,p[n]),I=I+M|0,m=M,M=_,_=h(w,10),w=g,g=I,I=S+e[r+l[n]]|0,I+=n<16?u(E,A,k)+y[0]:n<32?s(E,A,k)+y[1]:n<48?f(E,A,k)+y[2]:n<64?a(E,A,k)+y[3]:o(E,A,k)+y[4],I|=0,I=h(I,b[n]),I=I+x|0,S=x,x=k,k=h(A,10),A=E,E=I;I=t[1]+w+k|0,t[1]=t[2]+_+x|0,t[2]=t[3]+M+S|0,t[3]=t[4]+m+E|0,t[4]=t[0]+g+A|0,t[0]=I}function o(t,e,r){return t^e^r}function a(t,e,r){return t&e|~t&r}function f(t,e,r){return(t|~e)^r}function s(t,e,r){return t&r|e&~r}function u(t,e,r){return t^(e|~r)}function h(t,e){return t<>>32-e}function c(t){var o=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof t&&(t=new e(t,"utf8"));var a=r(t),f=8*t.length,s=8*t.length;a[f>>>5]|=128<<24-f%32,a[(f+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var u=0;u>>24)|4278255360&(h<<24|h>>>8)}var c=n(o);return new e(c)}/** @preserve +(c) 2012 by Cédric Mesnil. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +var d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];t.exports=c}).call(e,r(1).Buffer)},function(t,e,r){var e=t.exports=function(t){t=t.toLowerCase();var r=e[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};e.sha=r(569),e.sha1=r(570),e.sha224=r(571),e.sha256=r(227),e.sha384=r(572),e.sha512=r(228)},function(t,e,r){(function(e){function n(){this.init(),this._w=h,s.call(this,64,56)}function i(t){return t<<5|t>>>27}function o(t){return t<<30|t>>>2}function a(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var f=r(2),s=r(60),u=[1518500249,1859775393,-1894007588,-899497514],h=new Array(80);f(n,s),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,f=0|this._c,s=0|this._d,h=0|this._e,c=0;c<16;++c)e[c]=t.readInt32BE(4*c);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var d=0;d<80;++d){var l=~~(d/20),p=i(r)+a(l,n,f,s)+h+e[d]+u[l]|0;h=s,s=f,f=o(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=f+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=c,u.call(this,64,56)}function i(t){return t<<1|t>>>31}function o(t){return t<<5|t>>>27}function a(t){return t<<30|t>>>2}function f(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var s=r(2),u=r(60),h=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(n,u),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,s=0|this._c,u=0|this._d,c=0|this._e,d=0;d<16;++d)e[d]=t.readInt32BE(4*d);for(;d<80;++d)e[d]=i(e[d-3]^e[d-8]^e[d-14]^e[d-16]);for(var l=0;l<80;++l){var p=~~(l/20),b=o(r)+f(p,n,s,u)+c+e[l]+h[p]|0;c=u,u=s,s=a(n),n=r,r=b}this._a=r+this._a|0,this._b=n+this._b|0,this._c=s+this._c|0,this._d=u+this._d|0,this._e=c+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,64,56)}var i=r(2),o=r(227),a=r(60),f=new Array(64);i(n,o),n.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},n.prototype._hash=function(){var t=new e(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,128,112)}var i=r(2),o=r(228),a=r(60),f=new Array(160);i(n,o),n.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(48);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e){var r=new t(a[e].prime,"hex"),n=new t(a[e].gen,"hex");return new f(r,n)}function i(e,r,n,a){return t.isBuffer(r)||void 0===s[r]?i(e,"binary",r,n):(r=r||"binary",a=a||"binary",n=n||new t([2]),t.isBuffer(n)||(n=new t(n,a)),"number"==typeof e?new f(o(e,n),n,!0):(t.isBuffer(e)||(e=new t(e,r)),new f(e,n,!0)))}var o=r(229),a=r(468),f=r(574),s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=n,e.createDiffieHellman=e.DiffieHellman=i}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._pub=new s(t),this}function i(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._priv=new s(t),this}function o(t,e){var r=e.toString("hex"),n=[r,t.toString(16)].join("_");if(n in m)return m[n];var i=0;if(t.isEven()||!v.simpleSieve||!v.fermatTest(t)||!h.test(t))return i+=1,i+="02"===r||"05"===r?8:4,m[n]=i,i;h.test(t.shrn(1))||(i+=2);var o;switch(r){case"02":t.mod(c).cmp(d)&&(i+=8);break;case"05":o=t.mod(l),o.cmp(p)&&o.cmp(b)&&(i+=8);break;default:i+=4}return m[n]=i,i}function a(t,e,r){this.setGenerator(e),this.__prime=new s(t),this._prime=s.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=n,this.setPrivateKey=i):this._primeCode=8}function f(t,r){var n=new e(t.toArray());return r?n.toString(r):n}var s=r(150),u=r(230),h=new u,c=new s(24),d=new s(11),l=new s(10),p=new s(3),b=new s(7),v=r(229),y=r(61);t.exports=a;var m={};Object.defineProperty(a.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=o(this.__prime,this.__gen)),this._primeCode}}),a.prototype.generateKeys=function(){return this._priv||(this._priv=new s(y(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},a.prototype.computeSecret=function(t){t=new s(t),t=t.toRed(this._prime);var r=t.redPow(this._priv).fromRed(),n=new e(r.toArray()),i=this.getPrime();if(n.lengthr||e!==e)throw new TypeError("Bad key length")}},function(t,e,r){e.publicEncrypt=r(593),e.privateDecrypt=r(592),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var n=r(106),i=n.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});e.RSAPrivateKey=i;var o=n.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});e.RSAPublicKey=o;var a=n.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())});e.PublicKey=a;var f=n.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),s=n.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(f),this.key("subjectPrivateKey").octstr())});e.PrivateKey=s;var u=n.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});e.EncryptedPrivateKey=u;var h=n.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});e.DSAPrivateKey=h,e.DSAparam=n.define("DSAparam",function(){this.int()});var c=n.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m,i=/^-----BEGIN (.*) KEY-----\r?\n/m,o=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m,a=r(153),f=r(239);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c="aes"+h[1],d=new e(h[2],"hex"),l=new e(h[3].replace(/\r?\n/g,""),"base64"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\r?\n/g,""),"base64")}var m=u.match(i)[1]+" KEY";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(106),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(71).Reporter,o=r(71).EncoderBuffer,a=r(71).DecoderBuffer,f=r(588),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s),h=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];t.exports=n;var c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,"Root node can have only one child")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"int"===t||"enum"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error("Choice not matched")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");var n=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?"universal":"context";null===u?null===n.use&&e.error("Tag could be ommited only for .use()"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);throw new Error("Unsupported tag: "+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return"["+JSON.stringify(t)+"]"}).join(""),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(235);e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(236),n.pem=r(585)},function(t,e,r){function n(t){a.call(this,t),this.enc="pem"}var i=r(2),o=r(1).Buffer,a=r(236);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\r\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(244),CBC:r(240),CFB:r(241),CFB8:r(243),CFB1:r(242),OFB:r(245),CTR:r(108),GCM:r(108)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(107),s=r(109),u=r(2),h=r(152),c=r(153),d=r(246),l=r(238);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=(t.modulus,t.modulus.byteLength()),i=(r.length,c("sha1").update(new e("")).digest()),a=i.length;if(0!==r[0])throw new Error("decryption error");var u=r.slice(1,a+1),h=r.slice(a+1),d=s(u,f(h,a)),l=s(h,f(d,n-a-1));if(o(i,l.slice(0,a)))throw new Error("decryption error");for(var p=a;0===l[p];)p++;if(1!==l[p++])throw new Error("decryption error");return l.slice(p)}function i(t,e,r){for(var n=e.slice(0,2),i=2,o=0;0!==e[i++];)if(i>=e.length){o++;break}var a=e.slice(2,i-1);e.slice(i-1,i);if(("0002"!==n.toString("hex")&&!r||"0001"!==n.toString("hex")&&r)&&o++,a.length<8&&o++,o)throw new Error("decryption error");return e.slice(i)}function o(t,r){t=new e(t),r=new e(r);var n=0,i=t.length;t.length!==r.length&&(n++,i=Math.min(t.length,r.length));for(var o=-1;++oc||new u(r).cmp(s.modulus)>=0)throw new Error("decryption error");var l;l=o?d(new u(r),s):h(r,s);var p=new e(c-l.length);if(p.fill(0),l=e.concat([p,l],c),4===f)return n(s,l);if(1===f)return i(s,l,o);if(3===f)return l;throw new Error("unknown padding")}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=t.modulus.byteLength(),i=r.length,o=s("sha1").update(new e("")).digest(),a=o.length,d=2*a;if(i>n-d-2)throw new Error("message too long");var l=new e(n-i-d-2);l.fill(0);var p=n-a-1,b=f(a),v=h(e.concat([o,l,new e([1]),r],p),u(b,p)),y=h(b,u(v,a));return new c(e.concat([new e([0]),y,v],n))}function i(t,r,n){var i=r.length,a=t.modulus.byteLength();if(i>a-11)throw new Error("message too long");var f;return n?(f=new e(a-i-3),f.fill(255)):f=o(a-i-3),new c(e.concat([new e([0,n?1:2]),f,new e([0]),r],a))}function o(t,r){for(var n,i=new e(t),o=0,a=f(2*t),s=0;o=0)throw new Error("data too long for modulus")}return r?l(f,s):d(f,s)}}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function r(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];"."===i?t.splice(n,1):".."===i?(t.splice(n,1), +r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function n(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!i;o--){var a=o>=0?arguments[o]:t.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,i="/"===a.charAt(0))}return e=r(n(e.split("/"),function(t){return!!t}),!i).join("/"),(i?"/":"")+e||"."},e.normalize=function(t){var i=e.isAbsolute(t),o="/"===a(t,-1);return t=r(n(t.split("/"),function(t){return!!t}),!i).join("/"),t||i||(t="."),t&&o&&(t+="/"),(i?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(n(t,function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},e.relative=function(t,r){function n(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var i=n(t.split("/")),o=n(r.split("/")),a=Math.min(i.length,o.length),f=a,s=0;s0?this.tail.next=e:this.head=e,this.tail=e,++this.length},n.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},n.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},n.prototype.clear=function(){this.head=this.tail=null,this.length=0},n.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},n.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){(function(e){function r(t,e){function r(){if(!i){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(n("noDeprecation"))return t;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=r}).call(e,r(39))},function(t,e,r){t.exports=r(249)},function(t,e,r){(function(n){var i=function(){try{return r(31)}catch(t){}}();e=t.exports=r(250),e.Stream=i||e,e.Readable=e,e.Writable=r(155),e.Duplex=r(51),e.Transform=r(154),e.PassThrough=r(249),!n.browser&&"disable"===n.env.READABLE_STREAM&&i&&(t.exports=i)}).call(e,r(26))},function(t,e,r){t.exports=r(154)},function(t,e,r){t.exports=r(155)},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e,r){(function(t,n){function i(t,r){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),b(r)?n.showHidden=r:r&&e._extend(n,r),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),s(n,t,n.depth)}function o(t,e){var r=i.styles[e];return r?"["+i.colors[r][0]+"m"+t+"["+i.colors[r][1]+"m":t}function a(t,e){return t}function f(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function s(t,r,n){if(t.customInspect&&r&&k(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return g(i)||(i=s(t,i,n)),i}var o=u(t,r);if(o)return o;var a=Object.keys(r),b=f(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),A(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(k(r)){var v=r.name?": "+r.name:"";return t.stylize("[Function"+v+"]","special")}if(M(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(E(r))return t.stylize(Date.prototype.toString.call(r),"date");if(A(r))return h(r)}var y="",m=!1,w=["{","}"];if(p(r)&&(m=!0,w=["[","]"]),k(r)){var _=r.name?": "+r.name:"";y=" [Function"+_+"]"}if(M(r)&&(y=" "+RegExp.prototype.toString.call(r)),E(r)&&(y=" "+Date.prototype.toUTCString.call(r)),A(r)&&(y=" "+h(r)),0===a.length&&(!m||0==r.length))return w[0]+y+w[1];if(n<0)return M(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special");t.seen.push(r);var S;return S=m?c(t,r,n,b,a):a.map(function(e){return d(t,r,n,b,e,m)}),t.seen.pop(),l(S,y,w)}function u(t,e){if(_(e))return t.stylize("undefined","undefined");if(g(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return m(e)?t.stylize(""+e,"number"):b(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,r,n,i){for(var o=[],a=0,f=e.length;a-1&&(f=o?f.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+f.split("\n").map(function(t){return" "+t}).join("\n"))):f=t.stylize("[Circular]","special")),_(a)){if(o&&i.match(/^\d+$/))return f;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+f}function l(t,e,r){var n=0,i=t.reduce(function(t,e){return n++,e.indexOf("\n")>=0&&n++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function p(t){return Array.isArray(t)}function b(t){return"boolean"==typeof t}function v(t){return null===t}function y(t){return null==t}function m(t){return"number"==typeof t}function g(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function _(t){return void 0===t}function M(t){return S(t)&&"[object RegExp]"===I(t)}function S(t){return"object"==typeof t&&null!==t}function E(t){return S(t)&&"[object Date]"===I(t)}function A(t){return S(t)&&("[object Error]"===I(t)||t instanceof Error)}function k(t){return"function"==typeof t}function x(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function I(t){return Object.prototype.toString.call(t)}function B(t){return t<10?"0"+t.toString(10):t.toString(10)}function O(){var t=new Date,e=[B(t.getHours()),B(t.getMinutes()),B(t.getSeconds())].join(":");return[t.getDate(),C[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var P=/%[sdj%]/g;e.format=function(t){if(!g(t)){for(var e=[],r=0;r=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),f=n[r];r> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), +/* 47 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process, global) {/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.5.7 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2016 + * @license MIT + */ +/*jslint bitwise: true */ +(function () { + 'use strict'; + + var root = typeof window === 'object' ? window : {}; + var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; + if (NODE_JS) { + root = global; + } + var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports; + var HEX_CHARS = '0123456789abcdef'.split(''); + var SHAKE_PADDING = [31, 7936, 2031616, 520093696]; + var KECCAK_PADDING = [1, 256, 65536, 16777216]; + var PADDING = [6, 1536, 393216, 100663296]; + var SHIFT = [0, 8, 16, 24]; + var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, + 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, + 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, + 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, + 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]; + var BITS = [224, 256, 384, 512]; + var SHAKE_BITS = [128, 256]; + var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array']; + + var createOutputMethod = function (bits, padding, outputType) { + return function (message) { + return new Keccak(bits, padding, bits).update(message)[outputType](); + }; + }; + + var createShakeOutputMethod = function (bits, padding, outputType) { + return function (message, outputBits) { + return new Keccak(bits, padding, outputBits).update(message)[outputType](); + }; + }; + + var createMethod = function (bits, padding) { + var method = createOutputMethod(bits, padding, 'hex'); + method.create = function () { + return new Keccak(bits, padding, bits); + }; + method.update = function (message) { + return method.create().update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createOutputMethod(bits, padding, type); + } + return method; + }; + + var createShakeMethod = function (bits, padding) { + var method = createShakeOutputMethod(bits, padding, 'hex'); + method.create = function (outputBits) { + return new Keccak(bits, padding, outputBits); + }; + method.update = function (message, outputBits) { + return method.create(outputBits).update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createShakeOutputMethod(bits, padding, type); + } + return method; + }; + + var algorithms = [ + {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod}, + {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod}, + {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod} + ]; + + var methods = {}, methodNames = []; + + for (var i = 0; i < algorithms.length; ++i) { + var algorithm = algorithms[i]; + var bits = algorithm.bits; + for (var j = 0; j < bits.length; ++j) { + var methodName = algorithm.name +'_' + bits[j]; + methodNames.push(methodName); + methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding); + } + } + + function Keccak(bits, padding, outputBits) { + this.blocks = []; + this.s = []; + this.padding = padding; + this.outputBits = outputBits; + this.reset = true; + this.block = 0; + this.start = 0; + this.blockCount = (1600 - (bits << 1)) >> 5; + this.byteCount = this.blockCount << 2; + this.outputBlocks = outputBits >> 5; + this.extraBytes = (outputBits & 31) >> 3; + + for (var i = 0; i < 50; ++i) { + this.s[i] = 0; + } + } + + Keccak.prototype.update = function (message) { + var notString = typeof message !== 'string'; + if (notString && message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } + var length = message.length, blocks = this.blocks, byteCount = this.byteCount, + blockCount = this.blockCount, index = 0, s = this.s, i, code; + + while (index < length) { + if (this.reset) { + this.reset = false; + blocks[0] = this.block; + for (i = 1; i < blockCount + 1; ++i) { + blocks[i] = 0; + } + } + if (notString) { + for (i = this.start; index < length && i < byteCount; ++index) { + blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; + } + } else { + for (i = this.start; index < length && i < byteCount; ++index) { + code = message.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else { + code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } + } + } + this.lastByteIndex = i; + if (i >= byteCount) { + this.start = i - byteCount; + this.block = blocks[blockCount]; + for (i = 0; i < blockCount; ++i) { + s[i] ^= blocks[i]; + } + f(s); + this.reset = true; + } else { + this.start = i; + } + } + return this; + }; + + Keccak.prototype.finalize = function () { + var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s; + blocks[i >> 2] |= this.padding[i & 3]; + if (this.lastByteIndex === this.byteCount) { + blocks[0] = blocks[blockCount]; + for (i = 1; i < blockCount + 1; ++i) { + blocks[i] = 0; + } + } + blocks[blockCount - 1] |= 0x80000000; + for (i = 0; i < blockCount; ++i) { + s[i] ^= blocks[i]; + } + f(s); + }; + + Keccak.prototype.toString = Keccak.prototype.hex = function () { + this.finalize(); + + var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, + extraBytes = this.extraBytes, i = 0, j = 0; + var hex = '', block; + while (j < outputBlocks) { + for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) { + block = s[i]; + hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] + + HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] + + HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] + + HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F]; + } + if (j % blockCount === 0) { + f(s); + i = 0; + } + } + if (extraBytes) { + block = s[i]; + if (extraBytes > 0) { + hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F]; + } + if (extraBytes > 1) { + hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F]; + } + if (extraBytes > 2) { + hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F]; + } + } + return hex; + }; + + Keccak.prototype.arrayBuffer = function () { + this.finalize(); + + var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, + extraBytes = this.extraBytes, i = 0, j = 0; + var bytes = this.outputBits >> 3; + var buffer; + if (extraBytes) { + buffer = new ArrayBuffer((outputBlocks + 1) << 2); + } else { + buffer = new ArrayBuffer(bytes); + } + var array = new Uint32Array(buffer); + while (j < outputBlocks) { + for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) { + array[j] = s[i]; + } + if (j % blockCount === 0) { + f(s); + } + } + if (extraBytes) { + array[i] = s[i]; + buffer = buffer.slice(0, bytes); + } + return buffer; + }; + + Keccak.prototype.buffer = Keccak.prototype.arrayBuffer; + + Keccak.prototype.digest = Keccak.prototype.array = function () { + this.finalize(); + + var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, + extraBytes = this.extraBytes, i = 0, j = 0; + var array = [], offset, block; + while (j < outputBlocks) { + for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) { + offset = j << 2; + block = s[i]; + array[offset] = block & 0xFF; + array[offset + 1] = (block >> 8) & 0xFF; + array[offset + 2] = (block >> 16) & 0xFF; + array[offset + 3] = (block >> 24) & 0xFF; + } + if (j % blockCount === 0) { + f(s); + } + } + if (extraBytes) { + offset = j << 2; + block = s[i]; + if (extraBytes > 0) { + array[offset] = block & 0xFF; + } + if (extraBytes > 1) { + array[offset + 1] = (block >> 8) & 0xFF; + } + if (extraBytes > 2) { + array[offset + 2] = (block >> 16) & 0xFF; + } + } + return array; + }; + + var f = function (s) { + var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, + b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, + b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, + b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49; + for (n = 0; n < 48; n += 2) { + c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]; + c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]; + c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]; + c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]; + c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]; + c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]; + c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]; + c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]; + c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]; + c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]; + + h = c8 ^ ((c2 << 1) | (c3 >>> 31)); + l = c9 ^ ((c3 << 1) | (c2 >>> 31)); + s[0] ^= h; + s[1] ^= l; + s[10] ^= h; + s[11] ^= l; + s[20] ^= h; + s[21] ^= l; + s[30] ^= h; + s[31] ^= l; + s[40] ^= h; + s[41] ^= l; + h = c0 ^ ((c4 << 1) | (c5 >>> 31)); + l = c1 ^ ((c5 << 1) | (c4 >>> 31)); + s[2] ^= h; + s[3] ^= l; + s[12] ^= h; + s[13] ^= l; + s[22] ^= h; + s[23] ^= l; + s[32] ^= h; + s[33] ^= l; + s[42] ^= h; + s[43] ^= l; + h = c2 ^ ((c6 << 1) | (c7 >>> 31)); + l = c3 ^ ((c7 << 1) | (c6 >>> 31)); + s[4] ^= h; + s[5] ^= l; + s[14] ^= h; + s[15] ^= l; + s[24] ^= h; + s[25] ^= l; + s[34] ^= h; + s[35] ^= l; + s[44] ^= h; + s[45] ^= l; + h = c4 ^ ((c8 << 1) | (c9 >>> 31)); + l = c5 ^ ((c9 << 1) | (c8 >>> 31)); + s[6] ^= h; + s[7] ^= l; + s[16] ^= h; + s[17] ^= l; + s[26] ^= h; + s[27] ^= l; + s[36] ^= h; + s[37] ^= l; + s[46] ^= h; + s[47] ^= l; + h = c6 ^ ((c0 << 1) | (c1 >>> 31)); + l = c7 ^ ((c1 << 1) | (c0 >>> 31)); + s[8] ^= h; + s[9] ^= l; + s[18] ^= h; + s[19] ^= l; + s[28] ^= h; + s[29] ^= l; + s[38] ^= h; + s[39] ^= l; + s[48] ^= h; + s[49] ^= l; + + b0 = s[0]; + b1 = s[1]; + b32 = (s[11] << 4) | (s[10] >>> 28); + b33 = (s[10] << 4) | (s[11] >>> 28); + b14 = (s[20] << 3) | (s[21] >>> 29); + b15 = (s[21] << 3) | (s[20] >>> 29); + b46 = (s[31] << 9) | (s[30] >>> 23); + b47 = (s[30] << 9) | (s[31] >>> 23); + b28 = (s[40] << 18) | (s[41] >>> 14); + b29 = (s[41] << 18) | (s[40] >>> 14); + b20 = (s[2] << 1) | (s[3] >>> 31); + b21 = (s[3] << 1) | (s[2] >>> 31); + b2 = (s[13] << 12) | (s[12] >>> 20); + b3 = (s[12] << 12) | (s[13] >>> 20); + b34 = (s[22] << 10) | (s[23] >>> 22); + b35 = (s[23] << 10) | (s[22] >>> 22); + b16 = (s[33] << 13) | (s[32] >>> 19); + b17 = (s[32] << 13) | (s[33] >>> 19); + b48 = (s[42] << 2) | (s[43] >>> 30); + b49 = (s[43] << 2) | (s[42] >>> 30); + b40 = (s[5] << 30) | (s[4] >>> 2); + b41 = (s[4] << 30) | (s[5] >>> 2); + b22 = (s[14] << 6) | (s[15] >>> 26); + b23 = (s[15] << 6) | (s[14] >>> 26); + b4 = (s[25] << 11) | (s[24] >>> 21); + b5 = (s[24] << 11) | (s[25] >>> 21); + b36 = (s[34] << 15) | (s[35] >>> 17); + b37 = (s[35] << 15) | (s[34] >>> 17); + b18 = (s[45] << 29) | (s[44] >>> 3); + b19 = (s[44] << 29) | (s[45] >>> 3); + b10 = (s[6] << 28) | (s[7] >>> 4); + b11 = (s[7] << 28) | (s[6] >>> 4); + b42 = (s[17] << 23) | (s[16] >>> 9); + b43 = (s[16] << 23) | (s[17] >>> 9); + b24 = (s[26] << 25) | (s[27] >>> 7); + b25 = (s[27] << 25) | (s[26] >>> 7); + b6 = (s[36] << 21) | (s[37] >>> 11); + b7 = (s[37] << 21) | (s[36] >>> 11); + b38 = (s[47] << 24) | (s[46] >>> 8); + b39 = (s[46] << 24) | (s[47] >>> 8); + b30 = (s[8] << 27) | (s[9] >>> 5); + b31 = (s[9] << 27) | (s[8] >>> 5); + b12 = (s[18] << 20) | (s[19] >>> 12); + b13 = (s[19] << 20) | (s[18] >>> 12); + b44 = (s[29] << 7) | (s[28] >>> 25); + b45 = (s[28] << 7) | (s[29] >>> 25); + b26 = (s[38] << 8) | (s[39] >>> 24); + b27 = (s[39] << 8) | (s[38] >>> 24); + b8 = (s[48] << 14) | (s[49] >>> 18); + b9 = (s[49] << 14) | (s[48] >>> 18); + + s[0] = b0 ^ (~b2 & b4); + s[1] = b1 ^ (~b3 & b5); + s[10] = b10 ^ (~b12 & b14); + s[11] = b11 ^ (~b13 & b15); + s[20] = b20 ^ (~b22 & b24); + s[21] = b21 ^ (~b23 & b25); + s[30] = b30 ^ (~b32 & b34); + s[31] = b31 ^ (~b33 & b35); + s[40] = b40 ^ (~b42 & b44); + s[41] = b41 ^ (~b43 & b45); + s[2] = b2 ^ (~b4 & b6); + s[3] = b3 ^ (~b5 & b7); + s[12] = b12 ^ (~b14 & b16); + s[13] = b13 ^ (~b15 & b17); + s[22] = b22 ^ (~b24 & b26); + s[23] = b23 ^ (~b25 & b27); + s[32] = b32 ^ (~b34 & b36); + s[33] = b33 ^ (~b35 & b37); + s[42] = b42 ^ (~b44 & b46); + s[43] = b43 ^ (~b45 & b47); + s[4] = b4 ^ (~b6 & b8); + s[5] = b5 ^ (~b7 & b9); + s[14] = b14 ^ (~b16 & b18); + s[15] = b15 ^ (~b17 & b19); + s[24] = b24 ^ (~b26 & b28); + s[25] = b25 ^ (~b27 & b29); + s[34] = b34 ^ (~b36 & b38); + s[35] = b35 ^ (~b37 & b39); + s[44] = b44 ^ (~b46 & b48); + s[45] = b45 ^ (~b47 & b49); + s[6] = b6 ^ (~b8 & b0); + s[7] = b7 ^ (~b9 & b1); + s[16] = b16 ^ (~b18 & b10); + s[17] = b17 ^ (~b19 & b11); + s[26] = b26 ^ (~b28 & b20); + s[27] = b27 ^ (~b29 & b21); + s[36] = b36 ^ (~b38 & b30); + s[37] = b37 ^ (~b39 & b31); + s[46] = b46 ^ (~b48 & b40); + s[47] = b47 ^ (~b49 & b41); + s[8] = b8 ^ (~b0 & b2); + s[9] = b9 ^ (~b1 & b3); + s[18] = b18 ^ (~b10 & b12); + s[19] = b19 ^ (~b11 & b13); + s[28] = b28 ^ (~b20 & b22); + s[29] = b29 ^ (~b21 & b23); + s[38] = b38 ^ (~b30 & b32); + s[39] = b39 ^ (~b31 & b33); + s[48] = b48 ^ (~b40 & b42); + s[49] = b49 ^ (~b41 & b43); + + s[0] ^= RC[n]; + s[1] ^= RC[n + 1]; + } + }; + + if (COMMON_JS) { + module.exports = methods; + } else { + for (var i = 0; i < methodNames.length; ++i) { + root[methodNames[i]] = methods[methodNames[i]]; + } + } +})(); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(53), __webpack_require__(10))) + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +var json = typeof JSON !== 'undefined' ? JSON : __webpack_require__(50); + +module.exports = function (obj, opts) { + if (!opts) opts = {}; + if (typeof opts === 'function') opts = { cmp: opts }; + var space = opts.space || ''; + if (typeof space === 'number') space = Array(space+1).join(' '); + var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; + var replacer = opts.replacer || function(key, value) { return value; }; + + var cmp = opts.cmp && (function (f) { + return function (node) { + return function (a, b) { + var aobj = { key: a, value: node[a] }; + var bobj = { key: b, value: node[b] }; + return f(aobj, bobj); + }; + }; + })(opts.cmp); + + var seen = []; + return (function stringify (parent, key, node, level) { + var indent = space ? ('\n' + new Array(level + 1).join(space)) : ''; + var colonSeparator = space ? ': ' : ':'; + + if (node && node.toJSON && typeof node.toJSON === 'function') { + node = node.toJSON(); + } + + node = replacer.call(parent, key, node); + + if (node === undefined) { + return; + } + if (typeof node !== 'object' || node === null) { + return json.stringify(node); + } + if (isArray(node)) { + var out = []; + for (var i = 0; i < node.length; i++) { + var item = stringify(node, i, node[i], level+1) || json.stringify(null); + out.push(indent + space + item); + } + return '[' + out.join(',') + indent + ']'; + } + else { + if (seen.indexOf(node) !== -1) { + if (cycles) return json.stringify('__cycle__'); + throw new TypeError('Converting circular structure to JSON'); + } + else seen.push(node); + + var keys = objectKeys(node).sort(cmp && cmp(node)); + var out = []; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = stringify(node, key, node[key], level+1); + + if(!value) continue; + + var keyValue = json.stringify(key) + + colonSeparator + + value; + ; + out.push(indent + space + keyValue); + } + seen.splice(seen.indexOf(node), 1); + return '{' + out.join(',') + indent + '}'; + } + })({ '': obj }, '', obj, 0); +}; + +var isArray = Array.isArray || function (x) { + return {}.toString.call(x) === '[object Array]'; +}; + +var objectKeys = Object.keys || function (obj) { + var has = Object.prototype.hasOwnProperty || function () { return true }; + var keys = []; + for (var key in obj) { + if (has.call(obj, key)) keys.push(key); + } + return keys; +}; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +exports.parse = __webpack_require__(51); +exports.stringify = __webpack_require__(52); + + +/***/ }), +/* 51 */ +/***/ (function(module, exports) { + +var at, // The index of the current character + ch, // The current character + escapee = { + '"': '"', + '\\': '\\', + '/': '/', + b: '\b', + f: '\f', + n: '\n', + r: '\r', + t: '\t' + }, + text, + + error = function (m) { + // Call error when something is wrong. + throw { + name: 'SyntaxError', + message: m, + at: at, + text: text + }; + }, + + next = function (c) { + // If a c parameter is provided, verify that it matches the current character. + if (c && c !== ch) { + error("Expected '" + c + "' instead of '" + ch + "'"); + } + + // Get the next character. When there are no more characters, + // return the empty string. + + ch = text.charAt(at); + at += 1; + return ch; + }, + + number = function () { + // Parse a number value. + var number, + string = ''; + + if (ch === '-') { + string = '-'; + next('-'); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + if (ch === '.') { + string += '.'; + while (next() && ch >= '0' && ch <= '9') { + string += ch; + } + } + if (ch === 'e' || ch === 'E') { + string += ch; + next(); + if (ch === '-' || ch === '+') { + string += ch; + next(); + } + while (ch >= '0' && ch <= '9') { + string += ch; + next(); + } + } + number = +string; + if (!isFinite(number)) { + error("Bad number"); + } else { + return number; + } + }, + + string = function () { + // Parse a string value. + var hex, + i, + string = '', + uffff; + + // When parsing for string values, we must look for " and \ characters. + if (ch === '"') { + while (next()) { + if (ch === '"') { + next(); + return string; + } else if (ch === '\\') { + next(); + if (ch === 'u') { + uffff = 0; + for (i = 0; i < 4; i += 1) { + hex = parseInt(next(), 16); + if (!isFinite(hex)) { + break; + } + uffff = uffff * 16 + hex; + } + string += String.fromCharCode(uffff); + } else if (typeof escapee[ch] === 'string') { + string += escapee[ch]; + } else { + break; + } + } else { + string += ch; + } + } + } + error("Bad string"); + }, + + white = function () { + +// Skip whitespace. + + while (ch && ch <= ' ') { + next(); + } + }, + + word = function () { + +// true, false, or null. + + switch (ch) { + case 't': + next('t'); + next('r'); + next('u'); + next('e'); + return true; + case 'f': + next('f'); + next('a'); + next('l'); + next('s'); + next('e'); + return false; + case 'n': + next('n'); + next('u'); + next('l'); + next('l'); + return null; + } + error("Unexpected '" + ch + "'"); + }, + + value, // Place holder for the value function. + + array = function () { + +// Parse an array value. + + var array = []; + + if (ch === '[') { + next('['); + white(); + if (ch === ']') { + next(']'); + return array; // empty array + } + while (ch) { + array.push(value()); + white(); + if (ch === ']') { + next(']'); + return array; + } + next(','); + white(); + } + } + error("Bad array"); + }, + + object = function () { + +// Parse an object value. + + var key, + object = {}; + + if (ch === '{') { + next('{'); + white(); + if (ch === '}') { + next('}'); + return object; // empty object + } + while (ch) { + key = string(); + white(); + next(':'); + if (Object.hasOwnProperty.call(object, key)) { + error('Duplicate key "' + key + '"'); + } + object[key] = value(); + white(); + if (ch === '}') { + next('}'); + return object; + } + next(','); + white(); + } + } + error("Bad object"); + }; + +value = function () { + +// Parse a JSON value. It could be an object, an array, a string, a number, +// or a word. + + white(); + switch (ch) { + case '{': + return object(); + case '[': + return array(); + case '"': + return string(); + case '-': + return number(); + default: + return ch >= '0' && ch <= '9' ? number() : word(); + } +}; + +// Return the json_parse function. It will have access to all of the above +// functions and variables. + +module.exports = function (source, reviver) { + var result; + + text = source; + at = 0; + ch = ' '; + result = value(); + white(); + if (ch) { + error("Syntax error"); + } + + // If there is a reviver function, we recursively walk the new structure, + // passing each name/value pair to the reviver function for possible + // transformation, starting with a temporary root object that holds the result + // in an empty key. If there is not a reviver function, we simply return the + // result. + + return typeof reviver === 'function' ? (function walk(holder, key) { + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + }({'': result}, '')) : result; +}; + + +/***/ }), +/* 52 */ +/***/ (function(module, exports) { + +var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + +function quote(string) { + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; +} + +function str(key, holder) { + // Produce a string from holder[key]. + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + // JSON numbers must be finite. Encode non-finite numbers as null. + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + return String(value); + + case 'object': + if (!value) return 'null'; + gap += indent; + partial = []; + + // Array.isArray + if (Object.prototype.toString.apply(value) === '[object Array]') { + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and + // wrap them in brackets. + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be + // stringified. + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + else { + // Otherwise, iterate through all of the keys in the object. + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } +} + +module.exports = function (value, replacer, space) { + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + } + // If the space parameter is a string, it will be used as the indent string. + else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + rep = replacer; + if (replacer && typeof replacer !== 'function' + && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + return str('', {'': value}); +}; + + +/***/ }), +/* 53 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +(function(nacl) { +'use strict'; + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; +} + +function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; +} + +function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); +} + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +*/ + +var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +}; + +poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; +}; + +poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; +}; + +poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } +}; + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; +} + +function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; +} + +function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = (x[j] + 128) >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + mlen = -1; + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + mlen = n; + return mlen; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + var t, i; + for (i = 0; i < arguments.length; i++) { + if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') + throw new TypeError('unexpected type ' + t + ', use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +// TODO: Completely remove this in v0.15. +if (!nacl.util) { + nacl.util = {}; + nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { + throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); + }; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return false; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + if (arguments.length !== 2) + throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (true) { + // Node.js. + crypto = __webpack_require__(55); + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {})); + + +/***/ }), +/* 55 */ +/***/ (function(module, exports) { + +/* (ignored) */ + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(11); + + +/***/ }) +/******/ ]); +}); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBkMGRhY2MzMWUzOWI2MjQyOTBmNCIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vbm9kZS1saWJzLWJyb3dzZXIvfi9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwid2VicGFjazovLy8uL34vYmFzZS14L2luZGV4LmpzIiwid2VicGFjazovLy8uL34vYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vYnM1OC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2Nsb25lL2Nsb25lLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZpdmUtYmVsbHMtY29uZGl0aW9uL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovLy8uL34vaXNhcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2pzLXNoYTMvc3JjL3NoYTMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9qc29uLXN0YWJsZS1zdHJpbmdpZnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9qc29uaWZ5L2luZGV4LmpzIiwid2VicGFjazovLy8uL34vanNvbmlmeS9saWIvcGFyc2UuanMiLCJ3ZWJwYWNrOi8vLy4vfi9qc29uaWZ5L2xpYi9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi90d2VldG5hY2wvbmFjbC1mYXN0LmpzIiwid2VicGFjazovLy9jcnlwdG8gKGlnbm9yZWQpIl0sIm5hbWVzIjpbIkVkMjU1MTlLZXlwYWlyIiwia2V5UGFpciIsIm5hY2wiLCJzaWduIiwicHVibGljS2V5IiwiYmFzZTU4IiwiZW5jb2RlIiwicHJpdmF0ZUtleSIsInNlY3JldEtleSIsInNsaWNlIiwibWFrZUVkMjU1MTlDb25kaXRpb24iLCJwdWJsaWNLZXlCdWZmZXIiLCJkZWNvZGUiLCJlZDI1NTE5RnVsZmlsbG1lbnQiLCJjYyIsIkVkMjU1MTkiLCJzZXRQdWJsaWNLZXkiLCJjb25kaXRpb25VcmkiLCJnZXRDb25kaXRpb25VcmkiLCJtYWtlT3V0cHV0IiwiY29uZGl0aW9uIiwiYW1vdW50IiwiZGV0YWlscyIsInB1YmxpY19rZXkiLCJtYWtlQ3JlYXRlVHJhbnNhY3Rpb24iLCJhc3NldCIsIm1ldGFkYXRhIiwib3V0cHV0cyIsImFzc2V0RGVmaW5pdGlvbiIsImlzc3VlcnMiLCJpbnB1dHMiLCJtYXAiLCJpc3N1ZXIiLCJtYWtlSW5wdXRUZW1wbGF0ZSIsIm1ha2VUcmFuc2FjdGlvbiIsIm1ha2VUcmFuc2ZlclRyYW5zYWN0aW9uIiwidW5zcGVudFRyYW5zYWN0aW9uIiwiZnVsZmlsbGVkT3V0cHV0cyIsIm91dHB1dEluZGV4IiwiZnVsZmlsbGVkT3V0cHV0IiwidHJhbnNhY3Rpb25MaW5rIiwiaWQiLCJwdWJsaWNfa2V5cyIsImFzc2V0TGluayIsIm9wZXJhdGlvbiIsInNpZ25UcmFuc2FjdGlvbiIsInRyYW5zYWN0aW9uIiwicHJpdmF0ZUtleXMiLCJzaWduZWRUeCIsImNsb25lIiwiZm9yRWFjaCIsImlucHV0IiwiaW5kZXgiLCJwcml2YXRlS2V5QnVmZmVyIiwic2VyaWFsaXplZFRyYW5zYWN0aW9uIiwic2VyaWFsaXplVHJhbnNhY3Rpb25JbnRvQ2Fub25pY2FsU3RyaW5nIiwiZnVsZmlsbG1lbnRVcmkiLCJzZXJpYWxpemVVcmkiLCJmdWxmaWxsbWVudCIsIm1ha2VUcmFuc2FjdGlvblRlbXBsYXRlIiwicHVibGljS2V5cyIsImZ1bGZpbGxzIiwidHgiLCJoYXNoVHJhbnNhY3Rpb24iLCJzaGEyNTZIYXNoIiwiZGF0YSIsInNoYTMiLCJzaGEzXzI1NiIsImNyZWF0ZSIsInVwZGF0ZSIsImhleCIsInN0YWJsZVN0cmluZ2lmeSIsImEiLCJiIiwia2V5Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTztBQ1ZBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLG1EQUEyQyxjQUFjOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFBMEIsRUFBRTtBQUN2RCx5Q0FBaUMsZUFBZTtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4REFBc0QsK0RBQStEOztBQUVySDtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUNoRUE7QUFDQTtBQUNBLGlDQUFpQyxRQUFRLGdCQUFnQixVQUFVLEdBQUc7QUFDdEUsQ0FBQyxFOzs7Ozs7QUNIRDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLEU7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxnQzs7Ozs7O0FDSHZDO0FBQ0E7QUFDQSxFOzs7Ozs7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsbURBQW1EO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsVUFBVTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLHVDQUF1QyxTQUFTO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsaUJBQWlCO0FBQ2hDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsYUFBYSxpQkFBaUI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixTQUFTO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELEVBQUU7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFNBQVM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGVBQWU7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esd0JBQXdCLFFBQVE7QUFDaEM7QUFDQSxxQkFBcUIsZUFBZTtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQixTQUFTO0FBQzlCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLG1CQUFtQixjQUFjO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1REFBdUQsT0FBTztBQUM5RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsdURBQXVELE9BQU87QUFDOUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFF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QTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFNBQVM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxVQUFVO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7Ozs7O0FDakhBO0FBQ0E7O0FBRUE7Ozs7Ozs7QUNIQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLG9CQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNoUUE7QUFDQSxzRDs7Ozs7O0FDREE7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssV0FBVyxlQUFlO0FBQy9CO0FBQ0EsS0FBSztBQUNMO0FBQ0EsRTs7Ozs7O0FDcEJBLGlCQUFpQjs7QUFF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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG9DQUFvQztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsUUFBUTtBQUNsQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0EsYUFBYSxRQUFROztBQUVyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsVUFBVTtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7O0FBRUE7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixRQUFRO0FBQ3pCOztBQUVBO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0Esc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRCxzQkFBc0IsMkJBQTJCO0FBQ2pELHNCQUFzQiwyQkFBMkI7QUFDakQsc0JBQXNCLDJCQUEyQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCO0FBQ3JCLHFCQUFxQjs7QUFFckI7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0QixzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEIsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCO0FBQ3RCLHNCQUFzQjs7QUFFdEI7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0QixzQkFBc0I7O0FBRXRCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7QUFDckIscUJBQXFCOztBQUVyQjtBQUNBO0FBQ0E7O0FB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QUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYyxTQUFTO0FBQ3ZCO0FBQ0EsZ0NBQWdDLE9BQU87QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsUUFBUTs7QUFFckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsY0FBYyxRQUFRO0FBQ3RCO0FBQ0E7O0FBRUEsYUFBYSxRQUFRO0FBQ3JCLGFBQWEsUUFBUTtBQUNyQixhQUFhLFFBQVE7QUFDckIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsYUFBYSxPQUFPO0FBQ3BCLGFBQWEsUUFBUTtBQUNyQjtBQUNB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Q29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJqcy1iaWdjaGFpbmRiLXF1aWNrc3RhcnRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wianMtYmlnY2hhaW5kYi1xdWlja3N0YXJ0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDU2KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCBkMGRhY2MzMWUzOWI2MjQyOTBmNCIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gNzsgfX0pLmEgIT0gNztcbn0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2goZSl7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG4vKlxuICogRXhwb3J0IGtNYXhMZW5ndGggYWZ0ZXIgdHlwZWQgYXJyYXkgc3VwcG9ydCBpcyBkZXRlcm1pbmVkLlxuICovXG5leHBvcnRzLmtNYXhMZW5ndGggPSBrTWF4TGVuZ3RoKClcblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyICYmIC8vIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkXG4gICAgICAgIHR5cGVvZiBhcnIuc3ViYXJyYXkgPT09ICdmdW5jdGlvbicgJiYgLy8gY2hyb21lIDktMTAgbGFjayBgc3ViYXJyYXlgXG4gICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHtcbiAgcmV0dXJuIEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gICAgPyAweDdmZmZmZmZmXG4gICAgOiAweDNmZmZmZmZmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7XG4gIGlmIChrTWF4TGVuZ3RoKCkgPCBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgnKVxuICB9XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIGlmICh0aGF0ID09PSBudWxsKSB7XG4gICAgICB0aGF0ID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gICAgfVxuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZSh0aGlzLCBhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20odGhpcywgYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG4vLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi5cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmXG4gICAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgICAvLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jICh0aGF0LCBzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhudWxsLCBzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgYXJyYXkuYnl0ZUxlbmd0aCAvLyB0aGlzIHRocm93cyBpZiBgYXJyYXlgIGlzIG5vdCBhIHZhbGlkIEFycmF5QnVmZmVyXG5cbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBhcnJheVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbUFycmF5TGlrZSh0aGF0LCBhcnJheSlcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5sZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoQXJyYXlCdWZmZXIuaXNWaWV3KHN0cmluZykgfHwgc3RyaW5nIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmdcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgYW5kIGBpcy1idWZmZXJgIChpbiBTYWZhcmkgNS03KSB0byBkZXRlY3Rcbi8vIEJ1ZmZlciBpbnN0YW5jZXMuXG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoIHwgMFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICB2YXIgeSA9IGVuZCAtIHN0YXJ0XG4gIHZhciBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICB2YXIgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChpc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmXG4gICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0c1xuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWZcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnRcbiAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IHV0ZjhUb0J5dGVzKG5ldyBCdWZmZXIodmFsLCBlbmNvZGluZykudG9TdHJpbmcoKSlcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXFwvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHN0cmluZ3RyaW0gKHN0cikge1xuICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9ub2RlLWxpYnMtYnJvd3Nlci9+L2J1ZmZlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0ge3ZlcnNpb246ICcyLjQuMCd9O1xuaWYodHlwZW9mIF9fZSA9PSAnbnVtYmVyJylfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgID0gTWF0aC5jZWlsXG4gICwgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanNcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKVxuICAsIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGc7XHJcblxyXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxyXG5nID0gKGZ1bmN0aW9uKCkge1xyXG5cdHJldHVybiB0aGlzO1xyXG59KSgpO1xyXG5cclxudHJ5IHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcclxuXHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsZXZhbCkoXCJ0aGlzXCIpO1xyXG59IGNhdGNoKGUpIHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxyXG5cdGlmKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpXHJcblx0XHRnID0gd2luZG93O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5pbXBvcnQgYmFzZTU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IGNsb25lIGZyb20gJ2Nsb25lJztcbmltcG9ydCBjYyBmcm9tICdmaXZlLWJlbGxzLWNvbmRpdGlvbic7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHNoYTMgZnJvbSAnanMtc2hhMyc7XG5pbXBvcnQgc3RhYmxlU3RyaW5naWZ5IGZyb20gJ2pzb24tc3RhYmxlLXN0cmluZ2lmeSc7XG5cbi8qKlxuICogQGNsYXNzIEtleXBhaXIgRWQyNTUxOSBrZXlwYWlyIGluIGJhc2U1OCAoYXMgQmlnY2hhaW5EQiBleHBlY3RzIGJhc2U1OCBrZXlzKVxuICogQHR5cGUge09iamVjdH1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwdWJsaWNLZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcml2YXRlS2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFZDI1NTE5S2V5cGFpcigpIHtcbiAgICBjb25zdCBrZXlQYWlyID0gbmFjbC5zaWduLmtleVBhaXIoKTtcbiAgICB0aGlzLnB1YmxpY0tleSA9IGJhc2U1OC5lbmNvZGUoa2V5UGFpci5wdWJsaWNLZXkpO1xuXG4gICAgLy8gdHdlZXRuYWNsJ3MgZ2VuZXJhdGVkIHNlY3JldCBrZXkgaXMgdGhlIHNlY3JldCBrZXkgKyBwdWJsaWMga2V5IChyZXN1bHRpbmcgaW4gYSA2NC1ieXRlIGJ1ZmZlcilcbiAgICB0aGlzLnByaXZhdGVLZXkgPSBiYXNlNTguZW5jb2RlKGtleVBhaXIuc2VjcmV0S2V5LnNsaWNlKDAsIDMyKSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVkMjU1MTkgQ3J5cHRvY29uZGl0aW9uIGZyb20gYW4gRWQyNTUxOSBwdWJsaWMga2V5IHRvIHB1dCBpbnRvIGFuIE91dHB1dCBvZiBhIFRyYW5zYWN0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gcHVibGljS2V5IGJhc2U1OCBlbmNvZGVkIEVkMjU1MTkgcHVibGljIGtleSBmb3IgdGhlIHJlY2lwaWVudCBvZiB0aGUgVHJhbnNhY3Rpb25cbiAqIEByZXR1cm5zIHtvYmplY3R9IEVkMjU1MTkgQ29uZGl0aW9uICh0aGF0IHdpbGwgbmVlZCB0byB3cmFwcGVkIGluIGFuIE91dHB1dClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VFZDI1NTE5Q29uZGl0aW9uKHB1YmxpY0tleSkge1xuICAgIGNvbnN0IHB1YmxpY0tleUJ1ZmZlciA9IG5ldyBCdWZmZXIoYmFzZTU4LmRlY29kZShwdWJsaWNLZXkpKTtcblxuICAgIGNvbnN0IGVkMjU1MTlGdWxmaWxsbWVudCA9IG5ldyBjYy5FZDI1NTE5KCk7XG4gICAgZWQyNTUxOUZ1bGZpbGxtZW50LnNldFB1YmxpY0tleShwdWJsaWNLZXlCdWZmZXIpO1xuICAgIGNvbnN0IGNvbmRpdGlvblVyaSA9IGVkMjU1MTlGdWxmaWxsbWVudC5nZXRDb25kaXRpb25VcmkoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgICdkZXRhaWxzJzoge1xuICAgICAgICAgICAgJ3NpZ25hdHVyZSc6IG51bGwsXG4gICAgICAgICAgICAndHlwZV9pZCc6IDQsXG4gICAgICAgICAgICAndHlwZSc6ICdmdWxmaWxsbWVudCcsXG4gICAgICAgICAgICAnYml0bWFzayc6IDMyLFxuICAgICAgICAgICAgJ3B1YmxpY19rZXknOiBwdWJsaWNLZXksXG4gICAgICAgIH0sXG4gICAgICAgICd1cmknOiBjb25kaXRpb25VcmksXG4gICAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gT3V0cHV0IGZyb20gYSBDb25kaXRpb24uXG4gKiBOb3RlOiBBc3N1bWVzIHRoZSBnaXZlbiBDb25kaXRpb24gd2FzIGdlbmVyYXRlZCBmcm9tIGEgc2luZ2xlIHB1YmxpYyBrZXkgKGUuZy4gYSBFZDI1NTE5IENvbmRpdGlvbilcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25kaXRpb24gQ29uZGl0aW9uIChlLmcuIGEgRWQyNTUxOSBDb25kaXRpb24gZnJvbSBgbWFrZUVkMjU1MTlDb25kaXRpb24oKWApXG4gKiBAcGFyYW0ge251bWJlcn0gYW1vdW50IEFtb3VudCBvZiB0aGUgb3V0cHV0XG4gKiBAcmV0dXJucyB7b2JqZWN0fSBBbiBPdXRwdXQgdXNhYmxlIGluIGEgVHJhbnNhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VPdXRwdXQoY29uZGl0aW9uLCBhbW91bnQgPSAxKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBjb25kaXRpb24sXG4gICAgICAgICdwdWJsaWNfa2V5cyc6IFtjb25kaXRpb24uZGV0YWlscy5wdWJsaWNfa2V5XSxcbiAgICB9O1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgYENSRUFURWAgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgYGFzc2V0YCwgYG1ldGFkYXRhYCwgYW5kIGBvdXRwdXRzYCwgdG8gYmUgc2lnbmVkIGJ5XG4gKiB0aGUgYGlzc3VlcnNgLlxuICogQHBhcmFtIHtvYmplY3R9IGFzc2V0IENyZWF0ZWQgYXNzZXQncyBkYXRhXG4gKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGEgTWV0YWRhdGEgZm9yIHRoZSBUcmFuc2FjdGlvblxuICogQHBhcmFtIHtvYmplY3RbXX0gb3V0cHV0cyBBcnJheSBvZiBPdXRwdXQgb2JqZWN0cyB0byBhZGQgdG8gdGhlIFRyYW5zYWN0aW9uLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICBUaGluayBvZiB0aGVzZSBhcyB0aGUgcmVjaXBpZW50cyBvZiB0aGUgYXNzZXQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYENSRUFURWAgVHJhbnNhY3Rpb25zLCB0aGlzIHNob3VsZCB1c3VhbGx5IGp1c3QgYmUgYSBsaXN0IG9mXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dHMgd3JhcHBpbmcgRWQyNTUxOSBDb25kaXRpb25zIGdlbmVyYXRlZCBmcm9tIHRoZSBpc3N1ZXJzJyBwdWJsaWNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyAoc28gdGhhdCB0aGUgaXNzdWVycyBhcmUgdGhlIHJlY2lwaWVudHMgb2YgdGhlIGNyZWF0ZWQgYXNzZXQpLlxuICogQHBhcmFtIHsuLi5zdHJpbmdbXX0gaXNzdWVycyBQdWJsaWMga2V5IG9mIG9uZSBvciBtb3JlIGlzc3VlcnMgdG8gdGhlIGFzc2V0IGJlaW5nIGNyZWF0ZWQgYnkgdGhpc1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbi5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZTogRWFjaCBvZiB0aGUgcHJpdmF0ZSBrZXlzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIHB1YmxpY1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzIE1VU1QgYmUgdXNlZCBsYXRlciAoYW5kIGluIHRoZSBzYW1lIG9yZGVyKSB3aGVuIHNpZ25pbmcgdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zYWN0aW9uIChgc2lnblRyYW5zYWN0aW9uKClgKS5cbiAqIEByZXR1cm5zIHtvYmplY3R9IFVuc2lnbmVkIHRyYW5zYWN0aW9uIC0tIG1ha2Ugc3VyZSB0byBjYWxsIHNpZ25UcmFuc2FjdGlvbigpIG9uIGl0IGJlZm9yZVxuICogICAgICAgICAgICAgICAgICAgc2VuZGluZyBpdCBvZmYhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ3JlYXRlVHJhbnNhY3Rpb24oYXNzZXQsIG1ldGFkYXRhLCBvdXRwdXRzLCAuLi5pc3N1ZXJzKSB7XG4gICAgY29uc3QgYXNzZXREZWZpbml0aW9uID0ge1xuICAgICAgICAnZGF0YSc6IGFzc2V0IHx8IG51bGwsXG4gICAgfTtcbiAgICBjb25zdCBpbnB1dHMgPSBpc3N1ZXJzLm1hcCgoaXNzdWVyKSA9PiBtYWtlSW5wdXRUZW1wbGF0ZShbaXNzdWVyXSkpO1xuXG4gICAgcmV0dXJuIG1ha2VUcmFuc2FjdGlvbignQ1JFQVRFJywgYXNzZXREZWZpbml0aW9uLCBtZXRhZGF0YSwgb3V0cHV0cywgaW5wdXRzKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGBUUkFOU0ZFUmAgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgYGFzc2V0YCwgYG1ldGFkYXRhYCwgYW5kIGBvdXRwdXRzYCwgdGhhdCBmdWxmaWxsc1xuICogdGhlIGBmdWxmaWxsZWRPdXRwdXRzYCBvZiBgdW5zcGVudFRyYW5zYWN0aW9uYC5cbiAqIEBwYXJhbSB7b2JqZWN0fSB1bnNwZW50VHJhbnNhY3Rpb24gUHJldmlvdXMgVHJhbnNhY3Rpb24geW91IGhhdmUgY29udHJvbCBvdmVyIChpLmUuIGNhbiBmdWxmaWxsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyBPdXRwdXQgQ29uZGl0aW9uKVxuICogQHBhcmFtIHtvYmplY3R9IG1ldGFkYXRhIE1ldGFkYXRhIGZvciB0aGUgVHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7b2JqZWN0W119IG91dHB1dHMgQXJyYXkgb2YgT3V0cHV0IG9iamVjdHMgdG8gYWRkIHRvIHRoZSBUcmFuc2FjdGlvbi5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpbmsgb2YgdGhlc2UgYXMgdGhlIHJlY2lwaWVudHMgb2YgdGhlIGFzc2V0IGFmdGVyIHRoZSB0cmFuc2FjdGlvbi5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGBUUkFOU0ZFUmAgVHJhbnNhY3Rpb25zLCB0aGlzIHNob3VsZCB1c3VhbGx5IGp1c3QgYmUgYSBsaXN0IG9mXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dHMgd3JhcHBpbmcgRWQyNTUxOSBDb25kaXRpb25zIGdlbmVyYXRlZCBmcm9tIHRoZSBwdWJsaWMga2V5cyBvZlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBpZW50cy5cbiAqIEBwYXJhbSB7Li4ubnVtYmVyfSBmdWxmaWxsZWRPdXRwdXRzIEluZGljZXMgb2YgdGhlIE91dHB1dHMgaW4gYHVuc3BlbnRUcmFuc2FjdGlvbmAgdGhhdCB0aGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2FjdGlvbiBmdWxmaWxscy5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgcHVibGljIGtleXMgbGlzdGVkIGluIHRoZSBmdWxmaWxsZWQgT3V0cHV0c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZSB1c2VkIChhbmQgaW4gdGhlIHNhbWUgb3JkZXIpIHRvIHNpZ24gdGhlIFRyYW5zYWN0aW9uXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYHNpZ25UcmFuc2FjdGlvbigpYCkuXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBVbnNpZ25lZCB0cmFuc2FjdGlvbiAtLSBtYWtlIHN1cmUgdG8gY2FsbCBzaWduVHJhbnNhY3Rpb24oKSBvbiBpdCBiZWZvcmVcbiAqICAgICAgICAgICAgICAgICAgIHNlbmRpbmcgaXQgb2ZmIVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVRyYW5zZmVyVHJhbnNhY3Rpb24odW5zcGVudFRyYW5zYWN0aW9uLCBtZXRhZGF0YSwgb3V0cHV0cywgLi4uZnVsZmlsbGVkT3V0cHV0cykge1xuICAgIGNvbnN0IGlucHV0cyA9IGZ1bGZpbGxlZE91dHB1dHMubWFwKChvdXRwdXRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBmdWxmaWxsZWRPdXRwdXQgPSB1bnNwZW50VHJhbnNhY3Rpb24ub3V0cHV0c1tvdXRwdXRJbmRleF07XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uTGluayA9IHtcbiAgICAgICAgICAgICdvdXRwdXQnOiBvdXRwdXRJbmRleCxcbiAgICAgICAgICAgICd0eGlkJzogdW5zcGVudFRyYW5zYWN0aW9uLmlkLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBtYWtlSW5wdXRUZW1wbGF0ZShmdWxmaWxsZWRPdXRwdXQucHVibGljX2tleXMsIHRyYW5zYWN0aW9uTGluayk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhc3NldExpbmsgPSB7XG4gICAgICAgICdpZCc6IHVuc3BlbnRUcmFuc2FjdGlvbi5vcGVyYXRpb24gPT09ICdDUkVBVEUnID8gdW5zcGVudFRyYW5zYWN0aW9uLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5zcGVudFRyYW5zYWN0aW9uLmFzc2V0LmlkXG4gICAgfTtcblxuICAgIHJldHVybiBtYWtlVHJhbnNhY3Rpb24oJ1RSQU5TRkVSJywgYXNzZXRMaW5rLCBtZXRhZGF0YSwgb3V0cHV0cywgaW5wdXRzKTtcbn1cblxuLyoqXG4gKiBTaWduIHRoZSBnaXZlbiBgdHJhbnNhY3Rpb25gIHdpdGggdGhlIGdpdmVuIGBwcml2YXRlS2V5YHMsIHJldHVybmluZyBhIG5ldyBjb3B5IG9mIGB0cmFuc2FjdGlvbmBcbiAqIHRoYXQncyBiZWVuIHNpZ25lZC5cbiAqIE5vdGU6IE9ubHkgZ2VuZXJhdGVzIEVkMjU1MTkgRnVsZmlsbG1lbnRzLiBUaHJlc2hvbGRzIGFuZCBvdGhlciB0eXBlcyBvZiBGdWxmaWxsbWVudHMgYXJlIGxlZnQgYXNcbiAqIGFuIGV4ZXJjaXNlIGZvciB0aGUgdXNlci5cbiAqIEBwYXJhbSB7b2JqZWN0fSB0cmFuc2FjdGlvbiBUcmFuc2FjdGlvbiB0byBzaWduLiBgdHJhbnNhY3Rpb25gIGlzIG5vdCBtb2RpZmllZC5cbiAqIEBwYXJhbSB7Li4uc3RyaW5nfSBwcml2YXRlS2V5cyBQcml2YXRlIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBpc3N1ZXJzIG9mIHRoZSBgdHJhbnNhY3Rpb25gLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BlZCB0aHJvdWdoIHRvIGl0ZXJhdGl2ZWx5IHNpZ24gYW55IElucHV0IEZ1bGZpbGxtZW50cyBmb3VuZCBpblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBgdHJhbnNhY3Rpb25gLlxuICogQHJldHVybnMge29iamVjdH0gVGhlIHNpZ25lZCB2ZXJzaW9uIG9mIGB0cmFuc2FjdGlvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWduVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIC4uLnByaXZhdGVLZXlzKSB7XG4gICAgY29uc3Qgc2lnbmVkVHggPSBjbG9uZSh0cmFuc2FjdGlvbik7XG4gICAgc2lnbmVkVHguaW5wdXRzLmZvckVhY2goKGlucHV0LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBwcml2YXRlS2V5ID0gcHJpdmF0ZUtleXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBwcml2YXRlS2V5QnVmZmVyID0gbmV3IEJ1ZmZlcihiYXNlNTguZGVjb2RlKHByaXZhdGVLZXkpKTtcbiAgICAgICAgY29uc3Qgc2VyaWFsaXplZFRyYW5zYWN0aW9uID0gc2VyaWFsaXplVHJhbnNhY3Rpb25JbnRvQ2Fub25pY2FsU3RyaW5nKHRyYW5zYWN0aW9uKTtcblxuICAgICAgICBjb25zdCBlZDI1NTE5RnVsZmlsbG1lbnQgPSBuZXcgY2MuRWQyNTUxOSgpO1xuICAgICAgICBlZDI1NTE5RnVsZmlsbG1lbnQuc2lnbihuZXcgQnVmZmVyKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbiksIHByaXZhdGVLZXlCdWZmZXIpO1xuICAgICAgICBjb25zdCBmdWxmaWxsbWVudFVyaSA9IGVkMjU1MTlGdWxmaWxsbWVudC5zZXJpYWxpemVVcmkoKTtcblxuICAgICAgICBpbnB1dC5mdWxmaWxsbWVudCA9IGZ1bGZpbGxtZW50VXJpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNpZ25lZFR4O1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqXG4gKiBUcmFuc2FjdGlvbiB1dGlscyAqXG4gKioqKioqKioqKioqKioqKioqKioqL1xuXG5mdW5jdGlvbiBtYWtlVHJhbnNhY3Rpb25UZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICAnaWQnOiBudWxsLFxuICAgICAgICAnb3BlcmF0aW9uJzogbnVsbCxcbiAgICAgICAgJ291dHB1dHMnOiBbXSxcbiAgICAgICAgJ2lucHV0cyc6IFtdLFxuICAgICAgICAnbWV0YWRhdGEnOiBudWxsLFxuICAgICAgICAnYXNzZXQnOiBudWxsLFxuICAgICAgICAndmVyc2lvbic6ICcwLjknLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIG1ha2VJbnB1dFRlbXBsYXRlKHB1YmxpY0tleXMgPSBbXSwgZnVsZmlsbHMgPSBudWxsLCBmdWxmaWxsbWVudCA9IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBmdWxmaWxsbWVudCxcbiAgICAgICAgZnVsZmlsbHMsXG4gICAgICAgICdvd25lcnNfYmVmb3JlJzogcHVibGljS2V5cyxcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBtYWtlVHJhbnNhY3Rpb24ob3BlcmF0aW9uLCBhc3NldCwgbWV0YWRhdGEgPSBudWxsLCBvdXRwdXRzID0gW10sIGlucHV0cyA9IFtdKSB7XG4gICAgY29uc3QgdHggPSBtYWtlVHJhbnNhY3Rpb25UZW1wbGF0ZSgpO1xuICAgIHR4Lm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgICB0eC5hc3NldCA9IGFzc2V0O1xuICAgIHR4Lm1ldGFkYXRhID0gbWV0YWRhdGE7XG4gICAgdHguaW5wdXRzID0gaW5wdXRzO1xuICAgIHR4Lm91dHB1dHMgPSBvdXRwdXRzO1xuXG4gICAgLy8gSGFzaGluZyBtdXN0IGJlIGRvbmUgYWZ0ZXIsIGFzIHRoZSBoYXNoIGlzIG9mIHRoZSBUcmFuc2FjdGlvbiAodXAgdG8gbm93KVxuICAgIHR4LmlkID0gaGFzaFRyYW5zYWN0aW9uKHR4KTtcbiAgICByZXR1cm4gdHg7XG59XG5cbi8qKioqKioqKioqKioqKioqXG4gKiBDcnlwdG8gdXRpbHMgKlxuICoqKioqKioqKioqKioqKiovXG5cbmZ1bmN0aW9uIGhhc2hUcmFuc2FjdGlvbih0cmFuc2FjdGlvbikge1xuICAgIC8vIFNhZmVseSByZW1vdmUgYW55IHR4IGlkIGZyb20gdGhlIGdpdmVuIHRyYW5zYWN0aW9uIGZvciBoYXNoaW5nXG4gICAgY29uc3QgdHggPSB7IC4uLnRyYW5zYWN0aW9uIH07XG4gICAgZGVsZXRlIHR4LmlkO1xuXG4gICAgcmV0dXJuIHNoYTI1Nkhhc2goc2VyaWFsaXplVHJhbnNhY3Rpb25JbnRvQ2Fub25pY2FsU3RyaW5nKHR4KSk7XG59XG5cbmZ1bmN0aW9uIHNoYTI1Nkhhc2goZGF0YSkge1xuICAgIHJldHVybiBzaGEzLnNoYTNfMjU2XG4gICAgICAgIC5jcmVhdGUoKVxuICAgICAgICAudXBkYXRlKGRhdGEpXG4gICAgICAgIC5oZXgoKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplVHJhbnNhY3Rpb25JbnRvQ2Fub25pY2FsU3RyaW5nKHRyYW5zYWN0aW9uKSB7XG4gICAgLy8gQmlnY2hhaW5EQiBzaWducyBmdWxmaWxsbWVudHMgYnkgc2VyaWFsaXppbmcgdHJhbnNhY3Rpb25zIGludG8gYSBcImNhbm9uaWNhbFwiIGZvcm1hdCB3aGVyZVxuICAgIC8vIGVhY2ggZnVsZmlsbG1lbnQgVVJJIGlzIHJlbW92ZWQgYmVmb3JlIHNvcnRpbmcgdGhlIHJlbWFpbmluZyBrZXlzXG4gICAgY29uc3QgdHggPSBjbG9uZSh0cmFuc2FjdGlvbik7XG4gICAgdHguaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiB7XG4gICAgICAgIGlucHV0LmZ1bGZpbGxtZW50ID0gbnVsbDtcbiAgICB9KTtcblxuICAgIC8vIFNvcnQgdGhlIGtleXNcbiAgICByZXR1cm4gc3RhYmxlU3RyaW5naWZ5KHR4LCAoYSwgYikgPT4gKGEua2V5ID4gYi5rZXkgPyAxIDogLTEpKTtcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2luZGV4LmpzIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9hc3NpZ25cIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanNcbi8vIG1vZHVsZSBpZCA9IDEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9hc3NpZ25cIik7XG5cbnZhciBfYXNzaWduMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Fzc2lnbik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IF9hc3NpZ24yLmRlZmF1bHQgfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gYmFzZS14IGVuY29kaW5nXG4vLyBGb3JrZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvY29pbmpzL2JzNThcbi8vIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBNaWtlIEhlYXJuIGZvciBCaXRjb2luSlxuLy8gQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmNcbi8vIFBvcnRlZCB0byBKYXZhU2NyaXB0IGJ5IFN0ZWZhbiBUaG9tYXNcbi8vIE1lcmdlZCBCdWZmZXIgcmVmYWN0b3JpbmdzIGZyb20gYmFzZTU4LW5hdGl2ZSBieSBTdGVwaGVuIFBhaXJcbi8vIENvcHlyaWdodCAoYykgMjAxMyBCaXRQYXkgSW5jXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmFzZSAoQUxQSEFCRVQpIHtcbiAgdmFyIEFMUEhBQkVUX01BUCA9IHt9XG4gIHZhciBCQVNFID0gQUxQSEFCRVQubGVuZ3RoXG4gIHZhciBMRUFERVIgPSBBTFBIQUJFVC5jaGFyQXQoMClcblxuICAvLyBwcmUtY29tcHV0ZSBsb29rdXAgdGFibGVcbiAgZm9yICh2YXIgeiA9IDA7IHogPCBBTFBIQUJFVC5sZW5ndGg7IHorKykge1xuICAgIHZhciB4ID0gQUxQSEFCRVQuY2hhckF0KHopXG5cbiAgICBpZiAoQUxQSEFCRVRfTUFQW3hdICE9PSB1bmRlZmluZWQpIHRocm93IG5ldyBUeXBlRXJyb3IoeCArICcgaXMgYW1iaWd1b3VzJylcbiAgICBBTFBIQUJFVF9NQVBbeF0gPSB6XG4gIH1cblxuICBmdW5jdGlvbiBlbmNvZGUgKHNvdXJjZSkge1xuICAgIGlmIChzb3VyY2UubGVuZ3RoID09PSAwKSByZXR1cm4gJydcblxuICAgIHZhciBkaWdpdHMgPSBbMF1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgZm9yICh2YXIgaiA9IDAsIGNhcnJ5ID0gc291cmNlW2ldOyBqIDwgZGlnaXRzLmxlbmd0aDsgKytqKSB7XG4gICAgICAgIGNhcnJ5ICs9IGRpZ2l0c1tqXSA8PCA4XG4gICAgICAgIGRpZ2l0c1tqXSA9IGNhcnJ5ICUgQkFTRVxuICAgICAgICBjYXJyeSA9IChjYXJyeSAvIEJBU0UpIHwgMFxuICAgICAgfVxuXG4gICAgICB3aGlsZSAoY2FycnkgPiAwKSB7XG4gICAgICAgIGRpZ2l0cy5wdXNoKGNhcnJ5ICUgQkFTRSlcbiAgICAgICAgY2FycnkgPSAoY2FycnkgLyBCQVNFKSB8IDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc3RyaW5nID0gJydcblxuICAgIC8vIGRlYWwgd2l0aCBsZWFkaW5nIHplcm9zXG4gICAgZm9yICh2YXIgayA9IDA7IHNvdXJjZVtrXSA9PT0gMCAmJiBrIDwgc291cmNlLmxlbmd0aCAtIDE7ICsraykgc3RyaW5nICs9IEFMUEhBQkVUWzBdXG4gICAgLy8gY29udmVydCBkaWdpdHMgdG8gYSBzdHJpbmdcbiAgICBmb3IgKHZhciBxID0gZGlnaXRzLmxlbmd0aCAtIDE7IHEgPj0gMDsgLS1xKSBzdHJpbmcgKz0gQUxQSEFCRVRbZGlnaXRzW3FdXVxuXG4gICAgcmV0dXJuIHN0cmluZ1xuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlVW5zYWZlIChzdHJpbmcpIHtcbiAgICBpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuXG4gICAgdmFyIGJ5dGVzID0gWzBdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB2YWx1ZSA9IEFMUEhBQkVUX01BUFtzdHJpbmdbaV1dXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuXG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBjYXJyeSA9IHZhbHVlOyBqIDwgYnl0ZXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgY2FycnkgKz0gYnl0ZXNbal0gKiBCQVNFXG4gICAgICAgIGJ5dGVzW2pdID0gY2FycnkgJiAweGZmXG4gICAgICAgIGNhcnJ5ID4+PSA4XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcbiAgICAgICAgYnl0ZXMucHVzaChjYXJyeSAmIDB4ZmYpXG4gICAgICAgIGNhcnJ5ID4+PSA4XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGVhbCB3aXRoIGxlYWRpbmcgemVyb3NcbiAgICBmb3IgKHZhciBrID0gMDsgc3RyaW5nW2tdID09PSBMRUFERVIgJiYgayA8IHN0cmluZy5sZW5ndGggLSAxOyArK2spIHtcbiAgICAgIGJ5dGVzLnB1c2goMClcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oYnl0ZXMucmV2ZXJzZSgpKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlIChzdHJpbmcpIHtcbiAgICB2YXIgYnVmZmVyID0gZGVjb2RlVW5zYWZlKHN0cmluZylcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gYnVmZmVyXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vbi1iYXNlJyArIEJBU0UgKyAnIGNoYXJhY3RlcicpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGRlY29kZVVuc2FmZTogZGVjb2RlVW5zYWZlLFxuICAgIGRlY29kZTogZGVjb2RlXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9iYXNlLXgvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIHBsYWNlSG9sZGVyc0NvdW50IChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICAvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAgcmV0dXJuIGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NClcbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpXG5cbiAgYXJyID0gbmV3IEFycihsZW4gKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlblxuXG4gIHZhciBMID0gMFxuXG4gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9iYXNlNjQtanMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBiYXNleCA9IHJlcXVpcmUoJ2Jhc2UteCcpXG52YXIgQUxQSEFCRVQgPSAnMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5eidcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNleChBTFBIQUJFVClcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9iczU4L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgY2xvbmUgPSAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBuYXRpdmVNYXA7XG50cnkge1xuICBuYXRpdmVNYXAgPSBNYXA7XG59IGNhdGNoKF8pIHtcbiAgLy8gbWF5YmUgYSByZWZlcmVuY2UgZXJyb3IgYmVjYXVzZSBubyBgTWFwYC4gR2l2ZSBpdCBhIGR1bW15IHZhbHVlIHRoYXQgbm9cbiAgLy8gdmFsdWUgd2lsbCBldmVyIGJlIGFuIGluc3RhbmNlb2YuXG4gIG5hdGl2ZU1hcCA9IGZ1bmN0aW9uKCkge307XG59XG5cbnZhciBuYXRpdmVTZXQ7XG50cnkge1xuICBuYXRpdmVTZXQgPSBTZXQ7XG59IGNhdGNoKF8pIHtcbiAgbmF0aXZlU2V0ID0gZnVuY3Rpb24oKSB7fTtcbn1cblxudmFyIG5hdGl2ZVByb21pc2U7XG50cnkge1xuICBuYXRpdmVQcm9taXNlID0gUHJvbWlzZTtcbn0gY2F0Y2goXykge1xuICBuYXRpdmVQcm9taXNlID0gZnVuY3Rpb24oKSB7fTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgKGNvcGllcykgYW4gT2JqZWN0IHVzaW5nIGRlZXAgY29weWluZy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIGNpcmN1bGFyIHJlZmVyZW5jZXMgYnkgZGVmYXVsdCwgYnV0IGlmIHlvdSBhcmUgY2VydGFpblxuICogdGhlcmUgYXJlIG5vIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4geW91ciBvYmplY3QsIHlvdSBjYW4gc2F2ZSBzb21lIENQVSB0aW1lXG4gKiBieSBjYWxsaW5nIGNsb25lKG9iaiwgZmFsc2UpLlxuICpcbiAqIENhdXRpb246IGlmIGBjaXJjdWxhcmAgaXMgZmFsc2UgYW5kIGBwYXJlbnRgIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZXMsXG4gKiB5b3VyIHByb2dyYW0gbWF5IGVudGVyIGFuIGluZmluaXRlIGxvb3AgYW5kIGNyYXNoLlxuICpcbiAqIEBwYXJhbSBgcGFyZW50YCAtIHRoZSBvYmplY3QgdG8gYmUgY2xvbmVkXG4gKiBAcGFyYW0gYGNpcmN1bGFyYCAtIHNldCB0byB0cnVlIGlmIHRoZSBvYmplY3QgdG8gYmUgY2xvbmVkIG1heSBjb250YWluXG4gKiAgICBjaXJjdWxhciByZWZlcmVuY2VzLiAob3B0aW9uYWwgLSB0cnVlIGJ5IGRlZmF1bHQpXG4gKiBAcGFyYW0gYGRlcHRoYCAtIHNldCB0byBhIG51bWJlciBpZiB0aGUgb2JqZWN0IGlzIG9ubHkgdG8gYmUgY2xvbmVkIHRvXG4gKiAgICBhIHBhcnRpY3VsYXIgZGVwdGguIChvcHRpb25hbCAtIGRlZmF1bHRzIHRvIEluZmluaXR5KVxuICogQHBhcmFtIGBwcm90b3R5cGVgIC0gc2V0cyB0aGUgcHJvdG90eXBlIHRvIGJlIHVzZWQgd2hlbiBjbG9uaW5nIGFuIG9iamVjdC5cbiAqICAgIChvcHRpb25hbCAtIGRlZmF1bHRzIHRvIHBhcmVudCBwcm90b3R5cGUpLlxuICogQHBhcmFtIGBpbmNsdWRlTm9uRW51bWVyYWJsZWAgLSBzZXQgdG8gdHJ1ZSBpZiB0aGUgbm9uLWVudW1lcmFibGUgcHJvcGVydGllc1xuICogICAgc2hvdWxkIGJlIGNsb25lZCBhcyB3ZWxsLiBOb24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9uIHRoZSBwcm90b3R5cGVcbiAqICAgIGNoYWluIHdpbGwgYmUgaWdub3JlZC4gKG9wdGlvbmFsIC0gZmFsc2UgYnkgZGVmYXVsdClcbiovXG5mdW5jdGlvbiBjbG9uZShwYXJlbnQsIGNpcmN1bGFyLCBkZXB0aCwgcHJvdG90eXBlLCBpbmNsdWRlTm9uRW51bWVyYWJsZSkge1xuICBpZiAodHlwZW9mIGNpcmN1bGFyID09PSAnb2JqZWN0Jykge1xuICAgIGRlcHRoID0gY2lyY3VsYXIuZGVwdGg7XG4gICAgcHJvdG90eXBlID0gY2lyY3VsYXIucHJvdG90eXBlO1xuICAgIGluY2x1ZGVOb25FbnVtZXJhYmxlID0gY2lyY3VsYXIuaW5jbHVkZU5vbkVudW1lcmFibGU7XG4gICAgY2lyY3VsYXIgPSBjaXJjdWxhci5jaXJjdWxhcjtcbiAgfVxuICAvLyBtYWludGFpbiB0d28gYXJyYXlzIGZvciBjaXJjdWxhciByZWZlcmVuY2VzLCB3aGVyZSBjb3JyZXNwb25kaW5nIHBhcmVudHNcbiAgLy8gYW5kIGNoaWxkcmVuIGhhdmUgdGhlIHNhbWUgaW5kZXhcbiAgdmFyIGFsbFBhcmVudHMgPSBbXTtcbiAgdmFyIGFsbENoaWxkcmVuID0gW107XG5cbiAgdmFyIHVzZUJ1ZmZlciA9IHR5cGVvZiBCdWZmZXIgIT0gJ3VuZGVmaW5lZCc7XG5cbiAgaWYgKHR5cGVvZiBjaXJjdWxhciA9PSAndW5kZWZpbmVkJylcbiAgICBjaXJjdWxhciA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBkZXB0aCA9PSAndW5kZWZpbmVkJylcbiAgICBkZXB0aCA9IEluZmluaXR5O1xuXG4gIC8vIHJlY3Vyc2UgdGhpcyBmdW5jdGlvbiBzbyB3ZSBkb24ndCByZXNldCBhbGxQYXJlbnRzIGFuZCBhbGxDaGlsZHJlblxuICBmdW5jdGlvbiBfY2xvbmUocGFyZW50LCBkZXB0aCkge1xuICAgIC8vIGNsb25pbmcgbnVsbCBhbHdheXMgcmV0dXJucyBudWxsXG4gICAgaWYgKHBhcmVudCA9PT0gbnVsbClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgaWYgKGRlcHRoID09PSAwKVxuICAgICAgcmV0dXJuIHBhcmVudDtcblxuICAgIHZhciBjaGlsZDtcbiAgICB2YXIgcHJvdG87XG4gICAgaWYgKHR5cGVvZiBwYXJlbnQgIT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIG5hdGl2ZU1hcCkge1xuICAgICAgY2hpbGQgPSBuZXcgbmF0aXZlTWFwKCk7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBuYXRpdmVTZXQpIHtcbiAgICAgIGNoaWxkID0gbmV3IG5hdGl2ZVNldCgpO1xuICAgIH0gZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgbmF0aXZlUHJvbWlzZSkge1xuICAgICAgY2hpbGQgPSBuZXcgbmF0aXZlUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHBhcmVudC50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmVzb2x2ZShfY2xvbmUodmFsdWUsIGRlcHRoIC0gMSkpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICByZWplY3QoX2Nsb25lKGVyciwgZGVwdGggLSAxKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChjbG9uZS5fX2lzQXJyYXkocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBbXTtcbiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNSZWdFeHAocGFyZW50KSkge1xuICAgICAgY2hpbGQgPSBuZXcgUmVnRXhwKHBhcmVudC5zb3VyY2UsIF9fZ2V0UmVnRXhwRmxhZ3MocGFyZW50KSk7XG4gICAgICBpZiAocGFyZW50Lmxhc3RJbmRleCkgY2hpbGQubGFzdEluZGV4ID0gcGFyZW50Lmxhc3RJbmRleDtcbiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNEYXRlKHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gbmV3IERhdGUocGFyZW50LmdldFRpbWUoKSk7XG4gICAgfSBlbHNlIGlmICh1c2VCdWZmZXIgJiYgQnVmZmVyLmlzQnVmZmVyKHBhcmVudCkpIHtcbiAgICAgIGNoaWxkID0gbmV3IEJ1ZmZlcihwYXJlbnQubGVuZ3RoKTtcbiAgICAgIHBhcmVudC5jb3B5KGNoaWxkKTtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9IGVsc2UgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjaGlsZCA9IE9iamVjdC5jcmVhdGUocGFyZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHR5cGVvZiBwcm90b3R5cGUgPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocGFyZW50KTtcbiAgICAgICAgY2hpbGQgPSBPYmplY3QuY3JlYXRlKHByb3RvKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjaGlsZCA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTtcbiAgICAgICAgcHJvdG8gPSBwcm90b3R5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNpcmN1bGFyKSB7XG4gICAgICB2YXIgaW5kZXggPSBhbGxQYXJlbnRzLmluZGV4T2YocGFyZW50KTtcblxuICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XG4gICAgICAgIHJldHVybiBhbGxDaGlsZHJlbltpbmRleF07XG4gICAgICB9XG4gICAgICBhbGxQYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgIGFsbENoaWxkcmVuLnB1c2goY2hpbGQpO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBuYXRpdmVNYXApIHtcbiAgICAgIHZhciBrZXlJdGVyYXRvciA9IHBhcmVudC5rZXlzKCk7XG4gICAgICB3aGlsZSh0cnVlKSB7XG4gICAgICAgIHZhciBuZXh0ID0ga2V5SXRlcmF0b3IubmV4dCgpO1xuICAgICAgICBpZiAobmV4dC5kb25lKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGtleUNoaWxkID0gX2Nsb25lKG5leHQudmFsdWUsIGRlcHRoIC0gMSk7XG4gICAgICAgIHZhciB2YWx1ZUNoaWxkID0gX2Nsb25lKHBhcmVudC5nZXQobmV4dC52YWx1ZSksIGRlcHRoIC0gMSk7XG4gICAgICAgIGNoaWxkLnNldChrZXlDaGlsZCwgdmFsdWVDaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBuYXRpdmVTZXQpIHtcbiAgICAgIHZhciBpdGVyYXRvciA9IHBhcmVudC5rZXlzKCk7XG4gICAgICB3aGlsZSh0cnVlKSB7XG4gICAgICAgIHZhciBuZXh0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgICBpZiAobmV4dC5kb25lKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVudHJ5Q2hpbGQgPSBfY2xvbmUobmV4dC52YWx1ZSwgZGVwdGggLSAxKTtcbiAgICAgICAgY2hpbGQuYWRkKGVudHJ5Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgaW4gcGFyZW50KSB7XG4gICAgICB2YXIgYXR0cnM7XG4gICAgICBpZiAocHJvdG8pIHtcbiAgICAgICAgYXR0cnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF0dHJzICYmIGF0dHJzLnNldCA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY2hpbGRbaV0gPSBfY2xvbmUocGFyZW50W2ldLCBkZXB0aCAtIDEpO1xuICAgIH1cblxuICAgIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocGFyZW50KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBEb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGNsb25pbmcgYSBzeW1ib2wgYmVjYXVzZSBpdCBpcyBhIHByaW1pdGl2ZSxcbiAgICAgICAgLy8gbGlrZSBhIG51bWJlciBvciBzdHJpbmcuXG4gICAgICAgIHZhciBzeW1ib2wgPSBzeW1ib2xzW2ldO1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocGFyZW50LCBzeW1ib2wpO1xuICAgICAgICBpZiAoZGVzY3JpcHRvciAmJiAhZGVzY3JpcHRvci5lbnVtZXJhYmxlICYmICFpbmNsdWRlTm9uRW51bWVyYWJsZSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNoaWxkW3N5bWJvbF0gPSBfY2xvbmUocGFyZW50W3N5bWJvbF0sIGRlcHRoIC0gMSk7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5lbnVtZXJhYmxlKSB7XG4gICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNoaWxkLCBzeW1ib2wsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZU5vbkVudW1lcmFibGUpIHtcbiAgICAgIHZhciBhbGxQcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocGFyZW50KTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsUHJvcGVydHlOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcHJvcGVydHlOYW1lID0gYWxsUHJvcGVydHlOYW1lc1tpXTtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHBhcmVudCwgcHJvcGVydHlOYW1lKTtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY2hpbGRbcHJvcGVydHlOYW1lXSA9IF9jbG9uZShwYXJlbnRbcHJvcGVydHlOYW1lXSwgZGVwdGggLSAxKTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNoaWxkLCBwcm9wZXJ0eU5hbWUsIHtcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICByZXR1cm4gX2Nsb25lKHBhcmVudCwgZGVwdGgpO1xufVxuXG4vKipcbiAqIFNpbXBsZSBmbGF0IGNsb25lIHVzaW5nIHByb3RvdHlwZSwgYWNjZXB0cyBvbmx5IG9iamVjdHMsIHVzZWZ1bGwgZm9yIHByb3BlcnR5XG4gKiBvdmVycmlkZSBvbiBGTEFUIGNvbmZpZ3VyYXRpb24gb2JqZWN0IChubyBuZXN0ZWQgcHJvcHMpLlxuICpcbiAqIFVTRSBXSVRIIENBVVRJT04hIFRoaXMgbWF5IG5vdCBiZWhhdmUgYXMgeW91IHdpc2ggaWYgeW91IGRvIG5vdCBrbm93IGhvdyB0aGlzXG4gKiB3b3Jrcy5cbiAqL1xuY2xvbmUuY2xvbmVQcm90b3R5cGUgPSBmdW5jdGlvbiBjbG9uZVByb3RvdHlwZShwYXJlbnQpIHtcbiAgaWYgKHBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gbnVsbDtcblxuICB2YXIgYyA9IGZ1bmN0aW9uICgpIHt9O1xuICBjLnByb3RvdHlwZSA9IHBhcmVudDtcbiAgcmV0dXJuIG5ldyBjKCk7XG59O1xuXG4vLyBwcml2YXRlIHV0aWxpdHkgZnVuY3Rpb25zXG5cbmZ1bmN0aW9uIF9fb2JqVG9TdHIobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuY2xvbmUuX19vYmpUb1N0ciA9IF9fb2JqVG9TdHI7XG5cbmZ1bmN0aW9uIF9faXNEYXRlKG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBfX29ialRvU3RyKG8pID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5jbG9uZS5fX2lzRGF0ZSA9IF9faXNEYXRlO1xuXG5mdW5jdGlvbiBfX2lzQXJyYXkobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09ICdvYmplY3QnICYmIF9fb2JqVG9TdHIobykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5jbG9uZS5fX2lzQXJyYXkgPSBfX2lzQXJyYXk7XG5cbmZ1bmN0aW9uIF9faXNSZWdFeHAobykge1xuICByZXR1cm4gdHlwZW9mIG8gPT09ICdvYmplY3QnICYmIF9fb2JqVG9TdHIobykgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuY2xvbmUuX19pc1JlZ0V4cCA9IF9faXNSZWdFeHA7XG5cbmZ1bmN0aW9uIF9fZ2V0UmVnRXhwRmxhZ3MocmUpIHtcbiAgdmFyIGZsYWdzID0gJyc7XG4gIGlmIChyZS5nbG9iYWwpIGZsYWdzICs9ICdnJztcbiAgaWYgKHJlLmlnbm9yZUNhc2UpIGZsYWdzICs9ICdpJztcbiAgaWYgKHJlLm11bHRpbGluZSkgZmxhZ3MgKz0gJ20nO1xuICByZXR1cm4gZmxhZ3M7XG59XG5jbG9uZS5fX2dldFJlZ0V4cEZsYWdzID0gX19nZXRSZWdFeHBGbGFncztcblxucmV0dXJuIGNsb25lO1xufSkoKTtcblxuaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gY2xvbmU7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY2xvbmUvY2xvbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5hc3NpZ247XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzXG4vLyBtb2R1bGUgaWQgPSAxOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvTGVuZ3RoICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgdG9JbmRleCAgID0gcmVxdWlyZSgnLi9fdG8taW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oSVNfSU5DTFVERVMpe1xuICByZXR1cm4gZnVuY3Rpb24oJHRoaXMsIGVsLCBmcm9tSW5kZXgpe1xuICAgIHZhciBPICAgICAgPSB0b0lPYmplY3QoJHRoaXMpXG4gICAgICAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKVxuICAgICAgLCBpbmRleCAgPSB0b0luZGV4KGZyb21JbmRleCwgbGVuZ3RoKVxuICAgICAgLCB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgaWYoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpd2hpbGUobGVuZ3RoID4gaW5kZXgpe1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgaWYodmFsdWUgIT0gdmFsdWUpcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjdG9JbmRleCBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKWlmKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pe1xuICAgICAgaWYoT1tpbmRleF0gPT09IGVsKXJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvZi5qc1xuLy8gbW9kdWxlIGlkID0gMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgdGhhdCwgbGVuZ3RoKXtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjtcbiAgc3dpdGNoKGxlbmd0aCl7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24oYSl7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbihhLCBiLCBjKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKC8qIC4uLmFyZ3MgKi8pe1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50XG4gIC8vIGluIG9sZCBJRSB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0J1xuICAsIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgZ2xvYmFsICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBjb3JlICAgICAgPSByZXF1aXJlKCcuL19jb3JlJylcbiAgLCBjdHggICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGhpZGUgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GXG4gICAgLCBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HXG4gICAgLCBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TXG4gICAgLCBJU19QUk9UTyAgPSB0eXBlICYgJGV4cG9ydC5QXG4gICAgLCBJU19CSU5EICAgPSB0eXBlICYgJGV4cG9ydC5CXG4gICAgLCBJU19XUkFQICAgPSB0eXBlICYgJGV4cG9ydC5XXG4gICAgLCBleHBvcnRzICAgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KVxuICAgICwgZXhwUHJvdG8gID0gZXhwb3J0c1tQUk9UT1RZUEVdXG4gICAgLCB0YXJnZXQgICAgPSBJU19HTE9CQUwgPyBnbG9iYWwgOiBJU19TVEFUSUMgPyBnbG9iYWxbbmFtZV0gOiAoZ2xvYmFsW25hbWVdIHx8IHt9KVtQUk9UT1RZUEVdXG4gICAgLCBrZXksIG93biwgb3V0O1xuICBpZihJU19HTE9CQUwpc291cmNlID0gbmFtZTtcbiAgZm9yKGtleSBpbiBzb3VyY2Upe1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYob3duICYmIGtleSBpbiBleHBvcnRzKWNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24oQyl7XG4gICAgICB2YXIgRiA9IGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgICBpZih0aGlzIGluc3RhbmNlb2YgQyl7XG4gICAgICAgICAgc3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe1xuICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEM7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmKElTX1BST1RPKXtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZih0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKWhpZGUoZXhwUHJvdG8sIGtleSwgb3V0KTtcbiAgICB9XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWRcbiRleHBvcnQuRyA9IDI7ICAgLy8gZ2xvYmFsXG4kZXhwb3J0LlMgPSA0OyAgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgICAvLyBwcm90b1xuJGV4cG9ydC5CID0gMTY7ICAvLyBiaW5kXG4kZXhwb3J0LlcgPSAzMjsgIC8vIHdyYXBcbiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZVxuJGV4cG9ydC5SID0gMTI4OyAvLyByZWFsIHByb3RvIG1ldGhvZCBmb3IgYGxpYnJhcnlgIFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIGtleSl7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGRQICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyAxOS4xLjIuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlLCAuLi4pXG52YXIgZ2V0S2V5cyAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpXG4gICwgZ09QUyAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpXG4gICwgcElFICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJylcbiAgLCB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpXG4gICwgSU9iamVjdCAgPSByZXF1aXJlKCcuL19pb2JqZWN0JylcbiAgLCAkYXNzaWduICA9IE9iamVjdC5hc3NpZ247XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHZhciBBID0ge31cbiAgICAsIEIgPSB7fVxuICAgICwgUyA9IFN5bWJvbCgpXG4gICAgLCBLID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0JztcbiAgQVtTXSA9IDc7XG4gIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24oayl7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSl7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIFQgICAgID0gdG9PYmplY3QodGFyZ2V0KVxuICAgICwgYUxlbiAgPSBhcmd1bWVudHMubGVuZ3RoXG4gICAgLCBpbmRleCA9IDFcbiAgICAsIGdldFN5bWJvbHMgPSBnT1BTLmZcbiAgICAsIGlzRW51bSAgICAgPSBwSUUuZjtcbiAgd2hpbGUoYUxlbiA+IGluZGV4KXtcbiAgICB2YXIgUyAgICAgID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pXG4gICAgICAsIGtleXMgICA9IGdldFN5bWJvbHMgPyBnZXRLZXlzKFMpLmNvbmNhdChnZXRTeW1ib2xzKFMpKSA6IGdldEtleXMoUylcbiAgICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcbiAgICAgICwgaiAgICAgID0gMFxuICAgICAgLCBrZXk7XG4gICAgd2hpbGUobGVuZ3RoID4gailpZihpc0VudW0uY2FsbChTLCBrZXkgPSBrZXlzW2orK10pKVRba2V5XSA9IFNba2V5XTtcbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGFuT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJylcbiAgLCB0b1ByaW1pdGl2ZSAgICA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpXG4gICwgZFAgICAgICAgICAgICAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKXtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmKElFOF9ET01fREVGSU5FKXRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG4gIGlmKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcyl0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZigndmFsdWUnIGluIEF0dHJpYnV0ZXMpT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qc1xuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzXG4vLyBtb2R1bGUgaWQgPSAzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaGFzICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCB0b0lPYmplY3QgICAgPSByZXF1aXJlKCcuL190by1pb2JqZWN0JylcbiAgLCBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKVxuICAsIElFX1BST1RPICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmplY3QsIG5hbWVzKXtcbiAgdmFyIE8gICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwga2V5O1xuICBmb3Ioa2V5IGluIE8paWYoa2V5ICE9IElFX1BST1RPKWhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpe1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qc1xuLy8gbW9kdWxlIGlkID0gMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpXG4gICwgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKXtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtcGllLmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcCwgdmFsdWUpe1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGUgIDogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGUgICAgOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlICAgICAgIDogdmFsdWVcbiAgfTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ2tleXMnKVxuICAsIHVpZCAgICA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gc2hhcmVkW2tleV0gfHwgKHNoYXJlZFtrZXldID0gdWlkKGtleSkpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanNcbi8vIG1vZHVsZSBpZCA9IDM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nXG4gICwgc3RvcmUgID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHt9KTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgLCBtYXggICAgICAgPSBNYXRoLm1heFxuICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpbmRleCwgbGVuZ3RoKXtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgbWluICAgICAgID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgUyl7XG4gIGlmKCFpc09iamVjdChpdCkpcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICBpZih0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKXJldHVybiB2YWw7XG4gIGlmKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKXJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBpZCA9IDBcbiAgLCBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzXG4vLyBtb2R1bGUgaWQgPSA0M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7YXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJyl9KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanNcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFwiRml2ZUJlbGxzQ29uZGl0aW9uXCIsW10sZSk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5GaXZlQmVsbHNDb25kaXRpb249ZSgpOnQuRml2ZUJlbGxzQ29uZGl0aW9uPWUoKX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe2lmKHJbbl0pcmV0dXJuIHJbbl0uZXhwb3J0czt2YXIgaT1yW25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtuXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxlKSxpLmw9ITAsaS5leHBvcnRzfXZhciByPXt9O3JldHVybiBlLm09dCxlLmM9cixlLmk9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGUuZD1mdW5jdGlvbih0LGUscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0OnJ9KX0sZS5uPWZ1bmN0aW9uKHQpe3ZhciByPXQmJnQuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiB0LmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O3JldHVybiBlLmQocixcImFcIixyKSxyfSxlLm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LGUucD1cIlwiLGUoZS5zPTYxMyl9KFtmdW5jdGlvbih0LGUscil7dmFyIG49cig0KSxpPXIoMzIpLG89cigxNCksYT1yKDE1KSxmPXIoMzMpLHM9XCJwcm90b3R5cGVcIix1PWZ1bmN0aW9uKHQsZSxyKXt2YXIgaCxjLGQsbCxwPXQmdS5GLGI9dCZ1Lkcsdj10JnUuUyx5PXQmdS5QLG09dCZ1LkIsZz1iP246dj9uW2VdfHwobltlXT17fSk6KG5bZV18fHt9KVtzXSx3PWI/aTppW2VdfHwoaVtlXT17fSksXz13W3NdfHwod1tzXT17fSk7YiYmKHI9ZSk7Zm9yKGggaW4gciljPSFwJiZnJiZ2b2lkIDAhPT1nW2hdLGQ9KGM/ZzpyKVtoXSxsPW0mJmM/ZihkLG4pOnkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGQ/ZihGdW5jdGlvbi5jYWxsLGQpOmQsZyYmYShnLGgsZCx0JnUuVSksd1toXSE9ZCYmbyh3LGgsbCkseSYmX1toXSE9ZCYmKF9baF09ZCl9O24uY29yZT1pLHUuRj0xLHUuRz0yLHUuUz00LHUuUD04LHUuQj0xNix1Llc9MzIsdS5VPTY0LHUuUj0xMjgsdC5leHBvcnRzPXV9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBpKCl7dHJ5e3ZhciB0PW5ldyBVaW50OEFycmF5KDEpO3JldHVybiB0Ll9fcHJvdG9fXz17X19wcm90b19fOlVpbnQ4QXJyYXkucHJvdG90eXBlLGZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19LDQyPT09dC5mb28oKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5zdWJhcnJheSYmMD09PXQuc3ViYXJyYXkoMSwxKS5ieXRlTGVuZ3RofWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBvKCl7cmV0dXJuIHQuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gYShlLHIpe2lmKG8oKTxyKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGhcIik7cmV0dXJuIHQuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheShyKSxlLl9fcHJvdG9fXz10LnByb3RvdHlwZSk6KG51bGw9PT1lJiYoZT1uZXcgdChyKSksZS5sZW5ndGg9ciksZX1mdW5jdGlvbiB0KGUscixuKXtpZighKHQuVFlQRURfQVJSQVlfU1VQUE9SVHx8dGhpcyBpbnN0YW5jZW9mIHQpKXJldHVybiBuZXcgdChlLHIsbik7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiByKXRocm93IG5ldyBFcnJvcihcIklmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nXCIpO3JldHVybiBoKHRoaXMsZSl9cmV0dXJuIGYodGhpcyxlLHIsbil9ZnVuY3Rpb24gZih0LGUscixuKXtpZihcIm51bWJlclwiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgQXJyYXlCdWZmZXImJmUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9sKHQsZSxyLG4pOlwic3RyaW5nXCI9PXR5cGVvZiBlP2ModCxlLHIpOnAodCxlKX1mdW5jdGlvbiBzKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJyl9ZnVuY3Rpb24gdSh0LGUscixuKXtyZXR1cm4gcyhlKSxlPD0wP2EodCxlKTp2b2lkIDAhPT1yP1wic3RyaW5nXCI9PXR5cGVvZiBuP2EodCxlKS5maWxsKHIsbik6YSh0LGUpLmZpbGwocik6YSh0LGUpfWZ1bmN0aW9uIGgoZSxyKXtpZihzKHIpLGU9YShlLHI8MD8wOjB8YihyKSksIXQuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIG49MDtuPHI7KytuKWVbbl09MDtyZXR1cm4gZX1mdW5jdGlvbiBjKGUscixuKXtpZihcInN0cmluZ1wiPT10eXBlb2YgbiYmXCJcIiE9PW58fChuPVwidXRmOFwiKSwhdC5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZW5jb2RpbmdcIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIGk9MHx5KHIsbik7ZT1hKGUsaSk7dmFyIG89ZS53cml0ZShyLG4pO3JldHVybiBvIT09aSYmKGU9ZS5zbGljZSgwLG8pKSxlfWZ1bmN0aW9uIGQodCxlKXt2YXIgcj1lLmxlbmd0aDwwPzA6MHxiKGUubGVuZ3RoKTt0PWEodCxyKTtmb3IodmFyIG49MDtuPHI7bis9MSl0W25dPTI1NSZlW25dO3JldHVybiB0fWZ1bmN0aW9uIGwoZSxyLG4saSl7aWYoci5ieXRlTGVuZ3RoLG48MHx8ci5ieXRlTGVuZ3RoPG4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzXCIpO2lmKHIuYnl0ZUxlbmd0aDxuKyhpfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHNcIik7cmV0dXJuIHI9dm9pZCAwPT09biYmdm9pZCAwPT09aT9uZXcgVWludDhBcnJheShyKTp2b2lkIDA9PT1pP25ldyBVaW50OEFycmF5KHIsbik6bmV3IFVpbnQ4QXJyYXkocixuLGkpLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1yLGUuX19wcm90b19fPXQucHJvdG90eXBlKTplPWQoZSxyKSxlfWZ1bmN0aW9uIHAoZSxyKXtpZih0LmlzQnVmZmVyKHIpKXt2YXIgbj0wfGIoci5sZW5ndGgpO3JldHVybiBlPWEoZSxuKSwwPT09ZS5sZW5ndGg/ZTooci5jb3B5KGUsMCwwLG4pLGUpfWlmKHIpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmci5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8XCJsZW5ndGhcImluIHIpcmV0dXJuXCJudW1iZXJcIiE9dHlwZW9mIHIubGVuZ3RofHxaKHIubGVuZ3RoKT9hKGUsMCk6ZChlLHIpO2lmKFwiQnVmZmVyXCI9PT1yLnR5cGUmJlEoci5kYXRhKSlyZXR1cm4gZChlLHIuZGF0YSl9dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC5cIil9ZnVuY3Rpb24gYih0KXtpZih0Pj1vKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4XCIrbygpLnRvU3RyaW5nKDE2KStcIiBieXRlc1wiKTtyZXR1cm4gMHx0fWZ1bmN0aW9uIHYoZSl7cmV0dXJuK2UhPWUmJihlPTApLHQuYWxsb2MoK2UpfWZ1bmN0aW9uIHkoZSxyKXtpZih0LmlzQnVmZmVyKGUpKXJldHVybiBlLmxlbmd0aDtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgQXJyYXlCdWZmZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoO1wic3RyaW5nXCIhPXR5cGVvZiBlJiYoZT1cIlwiK2UpO3ZhciBuPWUubGVuZ3RoO2lmKDA9PT1uKXJldHVybiAwO2Zvcih2YXIgaT0hMTs7KXN3aXRjaChyKXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiBuO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2Ugdm9pZCAwOnJldHVybiBWKGUpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gMipuO2Nhc2VcImhleFwiOnJldHVybiBuPj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gWShlKS5sZW5ndGg7ZGVmYXVsdDppZihpKXJldHVybiBWKGUpLmxlbmd0aDtyPShcIlwiK3IpLnRvTG93ZXJDYXNlKCksaT0hMH19ZnVuY3Rpb24gbSh0LGUscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PWV8fGU8MCkmJihlPTApLGU+dGhpcy5sZW5ndGgpcmV0dXJuXCJcIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVyblwiXCI7aWYocj4+Pj0wLGU+Pj49MCxyPD1lKXJldHVyblwiXCI7Zm9yKHR8fCh0PVwidXRmOFwiKTs7KXN3aXRjaCh0KXtjYXNlXCJoZXhcIjpyZXR1cm4gVCh0aGlzLGUscik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIEIodGhpcyxlLHIpO2Nhc2VcImFzY2lpXCI6cmV0dXJuIFIodGhpcyxlLHIpO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiBQKHRoaXMsZSxyKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gSSh0aGlzLGUscik7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIGoodGhpcyxlLHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrdCk7dD0odCtcIlwiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGcodCxlLHIpe3ZhciBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiB3KGUscixuLGksbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuPyhpPW4sbj0wKTpuPjIxNDc0ODM2NDc/bj0yMTQ3NDgzNjQ3Om48LTIxNDc0ODM2NDgmJihuPS0yMTQ3NDgzNjQ4KSxuPStuLGlzTmFOKG4pJiYobj1vPzA6ZS5sZW5ndGgtMSksbjwwJiYobj1lLmxlbmd0aCtuKSxuPj1lLmxlbmd0aCl7aWYobylyZXR1cm4tMTtuPWUubGVuZ3RoLTF9ZWxzZSBpZihuPDApe2lmKCFvKXJldHVybi0xO249MH1pZihcInN0cmluZ1wiPT10eXBlb2YgciYmKHI9dC5mcm9tKHIsaSkpLHQuaXNCdWZmZXIocikpcmV0dXJuIDA9PT1yLmxlbmd0aD8tMTpfKGUscixuLGksbyk7aWYoXCJudW1iZXJcIj09dHlwZW9mIHIpcmV0dXJuIHImPTI1NSx0LlRZUEVEX0FSUkFZX1NVUFBPUlQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/bz9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSxyLG4pOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSxyLG4pOl8oZSxbcl0sbixpLG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXJcIil9ZnVuY3Rpb24gXyh0LGUscixuLGkpe2Z1bmN0aW9uIG8odCxlKXtyZXR1cm4gMT09PWE/dFtlXTp0LnJlYWRVSW50MTZCRShlKmEpfXZhciBhPTEsZj10Lmxlbmd0aCxzPWUubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJihuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpLFwidWNzMlwiPT09bnx8XCJ1Y3MtMlwiPT09bnx8XCJ1dGYxNmxlXCI9PT1ufHxcInV0Zi0xNmxlXCI9PT1uKSl7aWYodC5sZW5ndGg8Mnx8ZS5sZW5ndGg8MilyZXR1cm4tMTthPTIsZi89MixzLz0yLHIvPTJ9dmFyIHU7aWYoaSl7dmFyIGg9LTE7Zm9yKHU9cjt1PGY7dSsrKWlmKG8odCx1KT09PW8oZSxoPT09LTE/MDp1LWgpKXtpZihoPT09LTEmJihoPXUpLHUtaCsxPT09cylyZXR1cm4gaCphfWVsc2UgaCE9PS0xJiYodS09dS1oKSxoPS0xfWVsc2UgZm9yKHIrcz5mJiYocj1mLXMpLHU9cjt1Pj0wO3UtLSl7Zm9yKHZhciBjPSEwLGQ9MDtkPHM7ZCsrKWlmKG8odCx1K2QpIT09byhlLGQpKXtjPSExO2JyZWFrfWlmKGMpcmV0dXJuIHV9cmV0dXJuLTF9ZnVuY3Rpb24gTSh0LGUscixuKXtyPU51bWJlcihyKXx8MDt2YXIgaT10Lmxlbmd0aC1yO24/KG49TnVtYmVyKG4pLG4+aSYmKG49aSkpOm49aTt2YXIgbz1lLmxlbmd0aDtpZihvJTIhPT0wKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGhleCBzdHJpbmdcIik7bj5vLzImJihuPW8vMik7Zm9yKHZhciBhPTA7YTxuOysrYSl7dmFyIGY9cGFyc2VJbnQoZS5zdWJzdHIoMiphLDIpLDE2KTtpZihpc05hTihmKSlyZXR1cm4gYTt0W3IrYV09Zn1yZXR1cm4gYX1mdW5jdGlvbiBTKHQsZSxyLG4pe3JldHVybiBXKFYoZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gRSh0LGUscixuKXtyZXR1cm4gVyhIKGUpLHQscixuKX1mdW5jdGlvbiBBKHQsZSxyLG4pe3JldHVybiBFKHQsZSxyLG4pfWZ1bmN0aW9uIGsodCxlLHIsbil7cmV0dXJuIFcoWShlKSx0LHIsbil9ZnVuY3Rpb24geCh0LGUscixuKXtyZXR1cm4gVyhYKGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIEkodCxlLHIpe3JldHVybiAwPT09ZSYmcj09PXQubGVuZ3RoP0ouZnJvbUJ5dGVBcnJheSh0KTpKLmZyb21CeXRlQXJyYXkodC5zbGljZShlLHIpKX1mdW5jdGlvbiBCKHQsZSxyKXtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxpPWU7aTxyOyl7dmFyIG89dFtpXSxhPW51bGwsZj1vPjIzOT80Om8+MjIzPzM6bz4xOTE/MjoxO2lmKGkrZjw9cil7dmFyIHMsdSxoLGM7c3dpdGNoKGYpe2Nhc2UgMTpvPDEyOCYmKGE9byk7YnJlYWs7Y2FzZSAyOnM9dFtpKzFdLDEyOD09PSgxOTImcykmJihjPSgzMSZvKTw8Nnw2MyZzLGM+MTI3JiYoYT1jKSk7YnJlYWs7Y2FzZSAzOnM9dFtpKzFdLHU9dFtpKzJdLDEyOD09PSgxOTImcykmJjEyOD09PSgxOTImdSkmJihjPSgxNSZvKTw8MTJ8KDYzJnMpPDw2fDYzJnUsYz4yMDQ3JiYoYzw1NTI5Nnx8Yz41NzM0MykmJihhPWMpKTticmVhaztjYXNlIDQ6cz10W2krMV0sdT10W2krMl0saD10W2krM10sMTI4PT09KDE5MiZzKSYmMTI4PT09KDE5MiZ1KSYmMTI4PT09KDE5MiZoKSYmKGM9KDE1Jm8pPDwxOHwoNjMmcyk8PDEyfCg2MyZ1KTw8Nnw2MyZoLGM+NjU1MzUmJmM8MTExNDExMiYmKGE9YykpfX1udWxsPT09YT8oYT02NTUzMyxmPTEpOmE+NjU1MzUmJihhLT02NTUzNixuLnB1c2goYT4+PjEwJjEwMjN8NTUyOTYpLGE9NTYzMjB8MTAyMyZhKSxuLnB1c2goYSksaSs9Zn1yZXR1cm4gTyhuKX1mdW5jdGlvbiBPKHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8PXR0KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0KTtmb3IodmFyIHI9XCJcIixuPTA7bjxlOylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0LnNsaWNlKG4sbis9dHQpKTtyZXR1cm4gcn1mdW5jdGlvbiBSKHQsZSxyKXt2YXIgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZ0W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiBQKHQsZSxyKXt2YXIgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKHZhciBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3JldHVybiBufWZ1bmN0aW9uIFQodCxlLHIpe3ZhciBuPXQubGVuZ3RoOyghZXx8ZTwwKSYmKGU9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgaT1cIlwiLG89ZTtvPHI7KytvKWkrPUcodFtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gaih0LGUscil7Zm9yKHZhciBuPXQuc2xpY2UoZSxyKSxpPVwiXCIsbz0wO288bi5sZW5ndGg7bys9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10rMjU2Km5bbysxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gQyh0LGUscil7aWYodCUxIT09MHx8dDwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwib2Zmc2V0IGlzIG5vdCB1aW50XCIpO2lmKHQrZT5yKXRocm93IG5ldyBSYW5nZUVycm9yKFwiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKX1mdW5jdGlvbiBOKGUscixuLGksbyxhKXtpZighdC5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihyPm98fHI8YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihuK2k+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gTCh0LGUscixuKXtlPDAmJihlPTY1NTM1K2UrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbih0Lmxlbmd0aC1yLDIpO2k8bzsrK2kpdFtyK2ldPShlJjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gVSh0LGUscixuKXtlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLXIsNCk7aTxvOysraSl0W3IraV09ZT4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiB6KHQsZSxyLG4saSxvKXtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpfWZ1bmN0aW9uIEQodCxlLHIsbixpKXtyZXR1cm4gaXx8eih0LGUsciw0LDMuNDAyODIzNDY2Mzg1Mjg4NmUzOCwtMy40MDI4MjM0NjYzODUyODg2ZTM4KSwkLndyaXRlKHQsZSxyLG4sMjMsNCkscis0fWZ1bmN0aW9uIHEodCxlLHIsbixpKXtyZXR1cm4gaXx8eih0LGUsciw4LDEuNzk3NjkzMTM0ODYyMzE1N2UzMDgsLTEuNzk3NjkzMTM0ODYyMzE1N2UzMDgpLCQud3JpdGUodCxlLHIsbiw1Miw4KSxyKzh9ZnVuY3Rpb24gRih0KXtpZih0PUsodCkucmVwbGFjZShldCxcIlwiKSx0Lmxlbmd0aDwyKXJldHVyblwiXCI7Zm9yKDt0Lmxlbmd0aCU0IT09MDspdCs9XCI9XCI7cmV0dXJuIHR9ZnVuY3Rpb24gSyh0KXtyZXR1cm4gdC50cmltP3QudHJpbSgpOnQucmVwbGFjZSgvXlxccyt8XFxzKyQvZyxcIlwiKX1mdW5jdGlvbiBHKHQpe3JldHVybiB0PDE2P1wiMFwiK3QudG9TdHJpbmcoMTYpOnQudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFYodCxlKXtlPWV8fDEvMDtmb3IodmFyIHIsbj10Lmxlbmd0aCxpPW51bGwsbz1bXSxhPTA7YTxuOysrYSl7aWYocj10LmNoYXJDb2RlQXQoYSkscj41NTI5NSYmcjw1NzM0NCl7aWYoIWkpe2lmKHI+NTYzMTkpeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihhKzE9PT1uKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxpPXI7Y29udGludWV9cj0oaS01NTI5Njw8MTB8ci01NjMyMCkrNjU1MzZ9ZWxzZSBpJiYoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoaT1udWxsLHI8MTI4KXtpZigoZS09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKChlLT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigoZS09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvZGUgcG9pbnRcIik7aWYoKGUtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBIKHQpe2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKDI1NSZ0LmNoYXJDb2RlQXQocikpO3JldHVybiBlfWZ1bmN0aW9uIFgodCxlKXtmb3IodmFyIHIsbixpLG89W10sYT0wO2E8dC5sZW5ndGgmJiEoKGUtPTIpPDApOysrYSlyPXQuY2hhckNvZGVBdChhKSxuPXI+PjgsaT1yJTI1NixvLnB1c2goaSksby5wdXNoKG4pO3JldHVybiBvfWZ1bmN0aW9uIFkodCl7cmV0dXJuIEoudG9CeXRlQXJyYXkoRih0KSl9ZnVuY3Rpb24gVyh0LGUscixuKXtmb3IodmFyIGk9MDtpPG4mJiEoaStyPj1lLmxlbmd0aHx8aT49dC5sZW5ndGgpOysraSllW2krcl09dFtpXTtyZXR1cm4gaX1mdW5jdGlvbiBaKHQpe3JldHVybiB0IT09dH12YXIgSj1yKDQ5MCksJD1yKDQ5MSksUT1yKDQ5Mik7ZS5CdWZmZXI9dCxlLlNsb3dCdWZmZXI9dixlLklOU1BFQ1RfTUFYX0JZVEVTPTUwLHQuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDAhPT1uLlRZUEVEX0FSUkFZX1NVUFBPUlQ/bi5UWVBFRF9BUlJBWV9TVVBQT1JUOmkoKSxlLmtNYXhMZW5ndGg9bygpLHQucG9vbFNpemU9ODE5Mix0Ll9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz10LnByb3RvdHlwZSxlfSx0LmZyb209ZnVuY3Rpb24odCxlLHIpe3JldHVybiBmKG51bGwsdCxlLHIpfSx0LlRZUEVEX0FSUkFZX1NVUFBPUlQmJih0LnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsdC5fX3Byb3RvX189VWludDhBcnJheSxcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuc3BlY2llcyYmdFtTeW1ib2wuc3BlY2llc109PT10JiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25maWd1cmFibGU6ITB9KSksdC5hbGxvYz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHUobnVsbCx0LGUscil9LHQuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7cmV0dXJuIGgobnVsbCx0KX0sdC5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIGgobnVsbCx0KX0sdC5pc0J1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4hKG51bGw9PXR8fCF0Ll9pc0J1ZmZlcil9LHQuY29tcGFyZT1mdW5jdGlvbihlLHIpe2lmKCF0LmlzQnVmZmVyKGUpfHwhdC5pc0J1ZmZlcihyKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVyc1wiKTtpZihlPT09cilyZXR1cm4gMDtmb3IodmFyIG49ZS5sZW5ndGgsaT1yLmxlbmd0aCxvPTAsYT1NYXRoLm1pbihuLGkpO288YTsrK28paWYoZVtvXSE9PXJbb10pe249ZVtvXSxpPXJbb107YnJlYWt9cmV0dXJuIG48aT8tMTppPG4/MTowfSx0LmlzRW5jb2Rpbmc9ZnVuY3Rpb24odCl7c3dpdGNoKFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx0LmNvbmNhdD1mdW5jdGlvbihlLHIpe2lmKCFRKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdC5hbGxvYygwKTt2YXIgbjtpZih2b2lkIDA9PT1yKWZvcihyPTAsbj0wO248ZS5sZW5ndGg7KytuKXIrPWVbbl0ubGVuZ3RoO3ZhciBpPXQuYWxsb2NVbnNhZmUociksbz0wO2ZvcihuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBhPWVbbl07aWYoIXQuaXNCdWZmZXIoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7YS5jb3B5KGksbyksbys9YS5sZW5ndGh9cmV0dXJuIGl9LHQuYnl0ZUxlbmd0aD15LHQucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCx0LnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlbmd0aDtpZih0JTIhPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHNcIik7Zm9yKHZhciBlPTA7ZTx0O2UrPTIpZyh0aGlzLGUsZSsxKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5sZW5ndGg7aWYodCU0IT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzXCIpO2Zvcih2YXIgZT0wO2U8dDtlKz00KWcodGhpcyxlLGUrMyksZyh0aGlzLGUrMSxlKzIpO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmxlbmd0aDtpZih0JTghPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHNcIik7Zm9yKHZhciBlPTA7ZTx0O2UrPTgpZyh0aGlzLGUsZSs3KSxnKHRoaXMsZSsxLGUrNiksZyh0aGlzLGUrMixlKzUpLGcodGhpcyxlKzMsZSs0KTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgdD0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09dD9cIlwiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0IodGhpcywwLHQpOm0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIXQuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXJcIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09dC5jb21wYXJlKHRoaXMsZSl9LHQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgdD1cIlwiLHI9ZS5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKHQ9dGhpcy50b1N0cmluZyhcImhleFwiLDAscikubWF0Y2goLy57Mn0vZykuam9pbihcIiBcIiksdGhpcy5sZW5ndGg+ciYmKHQrPVwiIC4uLiBcIikpLFwiPEJ1ZmZlciBcIit0K1wiPlwifSx0LnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUscixuLGksbyl7aWYoIXQuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXJcIik7aWYodm9pZCAwPT09ciYmKHI9MCksdm9pZCAwPT09biYmKG49ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1pJiYoaT0wKSx2b2lkIDA9PT1vJiYobz10aGlzLmxlbmd0aCkscjwwfHxuPmUubGVuZ3RofHxpPDB8fG8+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYoaT49byYmcj49bilyZXR1cm4gMDtpZihpPj1vKXJldHVybi0xO2lmKHI+PW4pcmV0dXJuIDE7aWYocj4+Pj0wLG4+Pj49MCxpPj4+PTAsbz4+Pj0wLHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgYT1vLWksZj1uLXIscz1NYXRoLm1pbihhLGYpLHU9dGhpcy5zbGljZShpLG8pLGg9ZS5zbGljZShyLG4pLGM9MDtjPHM7KytjKWlmKHVbY10hPT1oW2NdKXthPXVbY10sZj1oW2NdO2JyZWFrfXJldHVybiBhPGY/LTE6ZjxhPzE6MH0sdC5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmluZGV4T2YodCxlLHIpIT09LTF9LHQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB3KHRoaXMsdCxlLHIsITApfSx0LnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHcodGhpcyx0LGUsciwhMSl9LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PWUpbj1cInV0ZjhcIixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQgMD09PXImJlwic3RyaW5nXCI9PXR5cGVvZiBlKW49ZSxyPXRoaXMubGVuZ3RoLGU9MDtlbHNle2lmKCFpc0Zpbml0ZShlKSl0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFwiKTtlfD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPVwidXRmOFwiKSk6KG49cixyPXZvaWQgMCl9dmFyIGk9dGhpcy5sZW5ndGgtZTtpZigodm9pZCAwPT09cnx8cj5pKSYmKHI9aSksdC5sZW5ndGg+MCYmKHI8MHx8ZTwwKXx8ZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzXCIpO258fChuPVwidXRmOFwiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gobil7Y2FzZVwiaGV4XCI6cmV0dXJuIE0odGhpcyx0LGUscik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIFModGhpcyx0LGUscik7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gRSh0aGlzLHQsZSxyKTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gQSh0aGlzLHQsZSxyKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gayh0aGlzLHQsZSxyKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4geCh0aGlzLHQsZSxyKTtkZWZhdWx0OmlmKG8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK24pO249KFwiXCIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJCdWZmZXJcIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciB0dD00MDk2O3QucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUscil7dmFyIG49dGhpcy5sZW5ndGg7ZT1+fmUscj12b2lkIDA9PT1yP246fn5yLGU8MD8oZSs9bixlPDAmJihlPTApKTplPm4mJihlPW4pLHI8MD8ocis9bixyPDAmJihyPTApKTpyPm4mJihyPW4pLHI8ZSYmKHI9ZSk7dmFyIGk7aWYodC5UWVBFRF9BUlJBWV9TVVBQT1JUKWk9dGhpcy5zdWJhcnJheShlLHIpLGkuX19wcm90b19fPXQucHJvdG90eXBlO2Vsc2V7dmFyIG89ci1lO2k9bmV3IHQobyx2b2lkIDApO2Zvcih2YXIgYT0wO2E8bzsrK2EpaVthXT10aGlzW2ErZV19cmV0dXJuIGl9LHQucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3R8PTAsZXw9MCxyfHxDKHQsZSx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbdF0saT0xLG89MDsrK288ZSYmKGkqPTI1Nik7KW4rPXRoaXNbdCtvXSppO3JldHVybiBufSx0LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKHQsZSxyKXt0fD0wLGV8PTAscnx8Qyh0LGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW3QrLS1lXSxpPTE7ZT4wJiYoaSo9MjU2KTspbis9dGhpc1t0Ky0tZV0qaTtyZXR1cm4gbn0sdC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fEModCwxLHRoaXMubGVuZ3RoKSx0aGlzW3RdfSx0LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Qyh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fSx0LnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Qyh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDh8dGhpc1t0KzFdfSx0LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Qyh0LDQsdGhpcy5sZW5ndGgpLCh0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2KSsxNjc3NzIxNip0aGlzW3QrM119LHQucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxDKHQsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1t0XSsodGhpc1t0KzFdPDwxNnx0aGlzW3QrMl08PDh8dGhpc1t0KzNdKX0sdC5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKHQsZSxyKXt0fD0wLGV8PTAscnx8Qyh0LGUsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW3RdLGk9MSxvPTA7KytvPGUmJihpKj0yNTYpOyluKz10aGlzW3Qrb10qaTtyZXR1cm4gaSo9MTI4LG4+PWkmJihuLT1NYXRoLnBvdygyLDgqZSkpLG59LHQucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbih0LGUscil7dHw9MCxlfD0wLHJ8fEModCxlLHRoaXMubGVuZ3RoKTtmb3IodmFyIG49ZSxpPTEsbz10aGlzW3QrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW3QrLS1uXSppO3JldHVybiBpKj0xMjgsbz49aSYmKG8tPU1hdGgucG93KDIsOCplKSksb30sdC5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Qyh0LDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW3RdPygyNTUtdGhpc1t0XSsxKSotMTp0aGlzW3RdfSx0LnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbih0LGUpe2V8fEModCwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW3RdfHRoaXNbdCsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdC5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24odCxlKXtlfHxDKHQsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1t0KzFdfHRoaXNbdF08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHQucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fEModCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2fHRoaXNbdCszXTw8MjR9LHQucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fEModCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdPDwyNHx0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM119LHQucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fEModCw0LHRoaXMubGVuZ3RoKSwkLnJlYWQodGhpcyx0LCEwLDIzLDQpfSx0LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbih0LGUpe3JldHVybiBlfHxDKHQsNCx0aGlzLmxlbmd0aCksJC5yZWFkKHRoaXMsdCwhMSwyMyw0KX0sdC5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV8fEModCw4LHRoaXMubGVuZ3RoKSwkLnJlYWQodGhpcyx0LCEwLDUyLDgpfSx0LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZXx8Qyh0LDgsdGhpcy5sZW5ndGgpLCQucmVhZCh0aGlzLHQsITEsNTIsOCl9LHQucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZXw9MCxyfD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqciktMTtOKHRoaXMsdCxlLHIsaSwwKX12YXIgbz0xLGE9MDtmb3IodGhpc1tlXT0yNTUmdDsrK2E8ciYmKG8qPTI1Nik7KXRoaXNbZSthXT10L28mMjU1O3JldHVybiBlK3J9LHQucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZXw9MCxyfD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqciktMTtOKHRoaXMsdCxlLHIsaSwwKX12YXIgbz1yLTEsYT0xO2Zvcih0aGlzW2Urb109MjU1JnQ7LS1vPj0wJiYoYSo9MjU2KTspdGhpc1tlK29dPXQvYSYyNTU7cmV0dXJuIGUrcn0sdC5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU9K2Uscnw9MCxufHxOKHRoaXMsZSxyLDEsMjU1LDApLHQuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1tyXT0yNTUmZSxyKzF9LHQucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBlPStlLHJ8PTAsbnx8Tih0aGlzLGUsciwyLDY1NTM1LDApLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tyXT0yNTUmZSx0aGlzW3IrMV09ZT4+PjgpOkwodGhpcyxlLHIsITApLHIrMn0sdC5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU9K2Uscnw9MCxufHxOKHRoaXMsZSxyLDIsNjU1MzUsMCksdC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3JdPWU+Pj44LHRoaXNbcisxXT0yNTUmZSk6TCh0aGlzLGUsciwhMSkscisyfSx0LnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gZT0rZSxyfD0wLG58fE4odGhpcyxlLHIsNCw0Mjk0OTY3Mjk1LDApLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tyKzNdPWU+Pj4yNCx0aGlzW3IrMl09ZT4+PjE2LHRoaXNbcisxXT1lPj4+OCx0aGlzW3JdPTI1NSZlKTpVKHRoaXMsZSxyLCEwKSxyKzR9LHQucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBlPStlLHJ8PTAsbnx8Tih0aGlzLGUsciw0LDQyOTQ5NjcyOTUsMCksdC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3JdPWU+Pj4yNCx0aGlzW3IrMV09ZT4+PjE2LHRoaXNbcisyXT1lPj4+OCx0aGlzW3IrM109MjU1JmUpOlUodGhpcyxlLHIsITEpLHIrNH0sdC5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGV8PTAsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyLTEpO04odGhpcyx0LGUscixpLTEsLWkpfXZhciBvPTAsYT0xLGY9MDtmb3IodGhpc1tlXT0yNTUmdDsrK288ciYmKGEqPTI1Nik7KXQ8MCYmMD09PWYmJjAhPT10aGlzW2Urby0xXSYmKGY9MSksdGhpc1tlK29dPSh0L2E+PjApLWYmMjU1O3JldHVybiBlK3J9LHQucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24odCxlLHIsbil7aWYodD0rdCxlfD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtOKHRoaXMsdCxlLHIsaS0xLC1pKX12YXIgbz1yLTEsYT0xLGY9MDtmb3IodGhpc1tlK29dPTI1NSZ0Oy0tbz49MCYmKGEqPTI1Nik7KXQ8MCYmMD09PWYmJjAhPT10aGlzW2UrbysxXSYmKGY9MSksdGhpc1tlK29dPSh0L2E+PjApLWYmMjU1O3JldHVybiBlK3J9LHQucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHIsbil7cmV0dXJuIGU9K2Uscnw9MCxufHxOKHRoaXMsZSxyLDEsMTI3LC0xMjgpLHQuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3JdPTI1NSZlLHIrMX0sdC5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gZT0rZSxyfD0wLG58fE4odGhpcyxlLHIsMiwzMjc2NywtMzI3NjgpLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tyXT0yNTUmZSx0aGlzW3IrMV09ZT4+PjgpOkwodGhpcyxlLHIsITApLHIrMn0sdC5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gZT0rZSxyfD0wLG58fE4odGhpcyxlLHIsMiwzMjc2NywtMzI3NjgpLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tyXT1lPj4+OCx0aGlzW3IrMV09MjU1JmUpOkwodGhpcyxlLHIsITEpLHIrMn0sdC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUscixuKXtyZXR1cm4gZT0rZSxyfD0wLG58fE4odGhpcyxlLHIsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbcl09MjU1JmUsdGhpc1tyKzFdPWU+Pj44LHRoaXNbcisyXT1lPj4+MTYsdGhpc1tyKzNdPWU+Pj4yNCk6VSh0aGlzLGUsciwhMCkscis0fSx0LnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBlPStlLHJ8PTAsbnx8Tih0aGlzLGUsciw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLHQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1tyXT1lPj4+MjQsdGhpc1tyKzFdPWU+Pj4xNix0aGlzW3IrMl09ZT4+PjgsdGhpc1tyKzNdPTI1NSZlKTpVKHRoaXMsZSxyLCExKSxyKzR9LHQucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIEQodGhpcyx0LGUsITAscil9LHQucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIEQodGhpcyx0LGUsITEscil9LHQucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBxKHRoaXMsdCxlLCEwLHIpfSx0LnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcSh0aGlzLHQsZSwhMSxyKX0sdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHIsbixpKXtpZihufHwobj0wKSxpfHwwPT09aXx8KGk9dGhpcy5sZW5ndGgpLHI+PWUubGVuZ3RoJiYocj1lLmxlbmd0aCkscnx8KHI9MCksaT4wJiZpPG4mJihpPW4pLGk9PT1uKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIik7aWYobjwwfHxuPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHNcIik7aWYoaTwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwic291cmNlRW5kIG91dCBvZiBib3VuZHNcIik7aT50aGlzLmxlbmd0aCYmKGk9dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXI8aS1uJiYoaT1lLmxlbmd0aC1yK24pO3ZhciBvLGE9aS1uO2lmKHRoaXM9PT1lJiZuPHImJnI8aSlmb3Iobz1hLTE7bz49MDstLW8pZVtvK3JdPXRoaXNbbytuXTtlbHNlIGlmKGE8MWUzfHwhdC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihvPTA7bzxhOysrbyllW28rcl09dGhpc1tvK25dO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KG4sbithKSxyKTtyZXR1cm4gYX0sdC5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHIsbixpKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHI/KGk9cixyPTAsbj10aGlzLmxlbmd0aCk6XCJzdHJpbmdcIj09dHlwZW9mIG4mJihpPW4sbj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgbz1lLmNoYXJDb2RlQXQoMCk7bzwyNTYmJihlPW8pfWlmKHZvaWQgMCE9PWkmJlwic3RyaW5nXCIhPXR5cGVvZiBpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpJiYhdC5pc0VuY29kaW5nKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIitpKX1lbHNlXCJudW1iZXJcIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHI8MHx8dGhpcy5sZW5ndGg8cnx8dGhpcy5sZW5ndGg8bil0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk91dCBvZiByYW5nZSBpbmRleFwiKTtpZihuPD1yKXJldHVybiB0aGlzO3I+Pj49MCxuPXZvaWQgMD09PW4/dGhpcy5sZW5ndGg6bj4+PjAsZXx8KGU9MCk7dmFyIGE7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpZm9yKGE9cjthPG47KythKXRoaXNbYV09ZTtlbHNle3ZhciBmPXQuaXNCdWZmZXIoZSk/ZTpWKG5ldyB0KGUsaSkudG9TdHJpbmcoKSkscz1mLmxlbmd0aDtmb3IoYT0wO2E8bi1yOysrYSl0aGlzW2Ercl09ZlthJXNdfXJldHVybiB0aGlzfTt2YXIgZXQ9L1teK1xcLzAtOUEtWmEtei1fXS9nfSkuY2FsbChlLHIoMSkuQnVmZmVyLHIoMzkpKX0sZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Quc3VwZXJfPWUsdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9OnQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIW4odCkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGFuIG9iamVjdCFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUpe3ZhciByPXQuZXhwb3J0cz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcIm51bWJlclwiPT10eXBlb2YgX19nJiYoX19nPXIpfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQ/bnVsbCE9PXQ6XCJmdW5jdGlvblwiPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDg3KShcIndrc1wiKSxpPXIoNDgpLG89cig0KS5TeW1ib2wsYT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBvLGY9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfHwoblt0XT1hJiZvW3RdfHwoYT9vOmkpKFwiU3ltYm9sLlwiK3QpKX07Zi5zdG9yZT1ufSxmdW5jdGlvbih0LGUscil7dC5leHBvcnRzPSFyKDUpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzKSxpPXIoMTc0KSxvPXIoMjkpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZj1yKDgpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LGUscil7aWYobih0KSxlPW8oZSwhMCksbihyKSxpKXRyeXtyZXR1cm4gYSh0LGUscil9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiByfHxcInNldFwiaW4gcil0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gciYmKHRbZV09ci52YWx1ZSksdH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDM4KSxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP2kobih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KG4odCkpfX0sZnVuY3Rpb24odCxlKXt2YXIgcj17fS5oYXNPd25Qcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gci5jYWxsKHQsZSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIGZ1bmN0aW9uIVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDkpLGk9cigzNyk7dC5leHBvcnRzPXIoOCk/ZnVuY3Rpb24odCxlLHIpe3JldHVybiBuLmYodCxlLGkoMSxyKSl9OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdFtlXT1yLHR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig0KSxpPXIoMTQpLG89cigxMiksYT1yKDQ4KShcInNyY1wiKSxmPVwidG9TdHJpbmdcIixzPUZ1bmN0aW9uW2ZdLHU9KFwiXCIrcykuc3BsaXQoZik7cigzMikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gcy5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGYpe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHI7cyYmKG8ocixcIm5hbWVcIil8fGkocixcIm5hbWVcIixlKSksdFtlXSE9PXImJihzJiYobyhyLGEpfHxpKHIsYSx0W2VdP1wiXCIrdFtlXTp1LmpvaW4oU3RyaW5nKGUpKSkpLHQ9PT1uP3RbZV09cjpmP3RbZV0/dFtlXT1yOmkodCxlLHIpOihkZWxldGUgdFtlXSxpKHQsZSxyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLGYsZnVuY3Rpb24oKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzJiZ0aGlzW2FdfHxzLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDUpLG89cigyNCksYT0vXCIvZyxmPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPVN0cmluZyhvKHQpKSxmPVwiPFwiK2U7cmV0dXJuXCJcIiE9PXImJihmKz1cIiBcIityKyc9XCInK1N0cmluZyhuKS5yZXBsYWNlKGEsXCImcXVvdDtcIikrJ1wiJyksZitcIj5cIitpK1wiPC9cIitlK1wiPlwifTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj17fTtyW3RdPWUoZiksbihuLlArbi5GKmkoZnVuY3Rpb24oKXt2YXIgZT1cIlwiW3RdKCdcIicpO3JldHVybiBlIT09ZS50b0xvd2VyQ2FzZSgpfHxlLnNwbGl0KCdcIicpLmxlbmd0aD4zfSksXCJTdHJpbmdcIixyKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDY1KSxpPXIoMjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbihpKHQpKX19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gaSh0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIG8uaXNCTih0KT90Oih0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCx2b2lkKG51bGwhPT10JiYoXCJsZVwiIT09ZSYmXCJiZVwiIT09ZXx8KHI9ZSxlPTEwKSx0aGlzLl9pbml0KHR8fDAsZXx8MTAscnx8XCJiZVwiKSkpKX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKHQubGVuZ3RoLHIpLG89ZTtvPGk7bysrKXt2YXIgYT10LmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiBmKHQsZSxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4odC5sZW5ndGgsciksYT1lO2E8bzthKyspe3ZhciBmPXQuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPWY+PTQ5P2YtNDkrMTA6Zj49MTc/Zi0xNysxMDpmfXJldHVybiBpfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0LmJpdExlbmd0aCgpKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXIvMjZ8MCxpPXIlMjY7ZVtyXT0odC53b3Jkc1tuXSYxPDxpKT4+Pml9cmV0dXJuIGV9ZnVuY3Rpb24gdSh0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7dmFyIG49dC5sZW5ndGgrZS5sZW5ndGh8MDtyLmxlbmd0aD1uLG49bi0xfDA7dmFyIGk9MHx0LndvcmRzWzBdLG89MHxlLndvcmRzWzBdLGE9aSpvLGY9NjcxMDg4NjMmYSxzPWEvNjcxMDg4NjR8MDtyLndvcmRzWzBdPWY7Zm9yKHZhciB1PTE7dTxuO3UrKyl7Zm9yKHZhciBoPXM+Pj4yNixjPTY3MTA4ODYzJnMsZD1NYXRoLm1pbih1LGUubGVuZ3RoLTEpLGw9TWF0aC5tYXgoMCx1LXQubGVuZ3RoKzEpO2w8PWQ7bCsrKXt2YXIgcD11LWx8MDtpPTB8dC53b3Jkc1twXSxvPTB8ZS53b3Jkc1tsXSxhPWkqbytjLGgrPWEvNjcxMDg4NjR8MCxjPTY3MTA4ODYzJmF9ci53b3Jkc1t1XT0wfGMscz0wfGh9cmV0dXJuIDAhPT1zP3Iud29yZHNbdV09MHxzOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGgodCxlLHIpe3IubmVnYXRpdmU9ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlLHIubGVuZ3RoPXQubGVuZ3RoK2UubGVuZ3RoO2Zvcih2YXIgbj0wLGk9MCxvPTA7bzxyLmxlbmd0aC0xO28rKyl7dmFyIGE9aTtpPTA7Zm9yKHZhciBmPTY3MTA4ODYzJm4scz1NYXRoLm1pbihvLGUubGVuZ3RoLTEpLHU9TWF0aC5tYXgoMCxvLXQubGVuZ3RoKzEpO3U8PXM7dSsrKXt2YXIgaD1vLXUsYz0wfHQud29yZHNbaF0sZD0wfGUud29yZHNbdV0sbD1jKmQscD02NzEwODg2MyZsO2E9YSsobC82NzEwODg2NHwwKXwwLHA9cCtmfDAsZj02NzEwODg2MyZwLGE9YSsocD4+PjI2KXwwLGkrPWE+Pj4yNixhJj02NzEwODg2M31yLndvcmRzW29dPWYsbj1hLGE9aX1yZXR1cm4gMCE9PW4/ci53b3Jkc1tvXT1uOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGModCxlLHIpe3ZhciBuPW5ldyBkO3JldHVybiBuLm11bHAodCxlLHIpfWZ1bmN0aW9uIGQodCxlKXt0aGlzLng9dCx0aGlzLnk9ZX1mdW5jdGlvbiBsKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5wPW5ldyBvKGUsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBvKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBwKCl7bC5jYWxsKHRoaXMsXCJrMjU2XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZlwiKX1mdW5jdGlvbiBiKCl7bC5jYWxsKHRoaXMsXCJwMjI0XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiKX1mdW5jdGlvbiB2KCl7bC5jYWxsKHRoaXMsXCJwMTkyXCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiKX1mdW5jdGlvbiB5KCl7bC5jYWxsKHRoaXMsXCIyNTUxOVwiLFwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiKX1mdW5jdGlvbiBtKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT1vLl9wcmltZSh0KTt0aGlzLm09ZS5wLHRoaXMucHJpbWU9ZX1lbHNlIG4odC5ndG4oMSksXCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDFcIiksdGhpcy5tPXQsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGcodCl7bS5jYWxsKHRoaXMsdCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9PTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IG8oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9XCJvYmplY3RcIj09dHlwZW9mIHQ/dC5leHBvcnRzPW86ZS5CTj1vLG8uQk49byxvLndvcmRTaXplPTI2O3ZhciB3O3RyeXt3PXIoMSkuQnVmZmVyfWNhdGNoKHQpe31vLmlzQk49ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBvfHxudWxsIT09dCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3Iud29yZFNpemU9PT1vLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHQud29yZHMpfSxvLm1heD1mdW5jdGlvbih0LGUpe3JldHVybiB0LmNtcChlKT4wP3Q6ZX0sby5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbXAoZSk8MD90OmV9LG8ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih0LGUscik7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh0LGUscik7XCJoZXhcIj09PWUmJihlPTE2KSxuKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpLHQ9dC50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZyxcIlwiKTt2YXIgaT0wO1wiLVwiPT09dFswXSYmaSsrLDE2PT09ZT90aGlzLl9wYXJzZUhleCh0LGkpOnRoaXMuX3BhcnNlQmFzZSh0LGUsaSksXCItXCI9PT10WzBdJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCksXCJsZVwiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGUscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHQsZSxyKXt0PDAmJih0aGlzLm5lZ2F0aXZlPTEsdD0tdCksdDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmdF0sdGhpcy5sZW5ndGg9MSk6dDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKHQ8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmdCx0LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLFwibGVcIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLHIpfSxvLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxyKXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aCksdC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwodC5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLGY9MDtpZihcImJlXCI9PT1yKWZvcihpPXQubGVuZ3RoLTEsbz0wO2k+PTA7aS09MylhPXRbaV18dFtpLTFdPDw4fHRbaS0yXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8ZiY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LWYmNjcxMDg4NjMsZis9MjQsZj49MjYmJihmLT0yNixvKyspO2Vsc2UgaWYoXCJsZVwiPT09cilmb3IoaT0wLG89MDtpPHQubGVuZ3RoO2krPTMpYT10W2ldfHRbaSsxXTw8OHx0W2krMl08PDE2LHRoaXMud29yZHNbb118PWE8PGYmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1mJjY3MTA4ODYzLGYrPTI0LGY+PTI2JiYoZi09MjYsbysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24odCxlKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHQubGVuZ3RoLWUpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPTA7dmFyIG4saSxvPTA7Zm9yKHI9dC5sZW5ndGgtNixuPTA7cj49ZTtyLT02KWk9YSh0LHIscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyxvKz0yNCxvPj0yNiYmKG8tPTI2LG4rKyk7cis2IT09ZSYmKGk9YSh0LGUscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGk9MTtpPD02NzEwODg2MztpKj1lKW4rKztuLS0saT1pL2V8MDtmb3IodmFyIG89dC5sZW5ndGgtcixhPW8lbixzPU1hdGgubWluKG8sby1hKStyLHU9MCxoPXI7aDxzO2grPW4pdT1mKHQsaCxoK24sZSksdGhpcy5pbXVsbihpKSx0aGlzLndvcmRzWzBdK3U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9dTp0aGlzLl9pYWRkbih1KTtpZigwIT09YSl7dmFyIGM9MTtmb3IodT1mKHQsaCx0Lmxlbmd0aCxlKSxoPTA7aDxhO2grKyljKj1lO3RoaXMuaW11bG4oYyksdGhpcy53b3Jkc1swXSt1PDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXU6dGhpcy5faWFkZG4odSl9fSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl0LndvcmRzW2VdPXRoaXMud29yZHNbZV07dC5sZW5ndGg9dGhpcy5sZW5ndGgsdC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHQucmVkPXRoaXMucmVkfSxvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0aGlzLmNvcHkodCksdH0sby5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih0KXtmb3IoO3RoaXMubGVuZ3RoPHQ7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxvLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifTt2YXIgXz1bXCJcIixcIjBcIixcIjAwXCIsXCIwMDBcIixcIjAwMDBcIixcIjAwMDAwXCIsXCIwMDAwMDBcIixcIjAwMDAwMDBcIixcIjAwMDAwMDAwXCIsXCIwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl0sTT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxTPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO28ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHQsZSl7dD10fHwxMCxlPTB8ZXx8MTt2YXIgcjtpZigxNj09PXR8fFwiaGV4XCI9PT10KXtyPVwiXCI7Zm9yKHZhciBpPTAsbz0wLGE9MDthPHRoaXMubGVuZ3RoO2ErKyl7dmFyIGY9dGhpcy53b3Jkc1thXSxzPSgxNjc3NzIxNSYoZjw8aXxvKSkudG9TdHJpbmcoMTYpO289Zj4+PjI0LWkmMTY3NzcyMTUscj0wIT09b3x8YSE9PXRoaXMubGVuZ3RoLTE/X1s2LXMubGVuZ3RoXStzK3I6cytyLGkrPTIsaT49MjYmJihpLT0yNixhLS0pfWZvcigwIT09byYmKHI9by50b1N0cmluZygxNikrcik7ci5sZW5ndGglZSE9PTA7KXI9XCIwXCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPVwiLVwiK3IpLHJ9aWYodD09PSgwfHQpJiZ0Pj0yJiZ0PD0zNil7dmFyIHU9TVt0XSxoPVNbdF07cj1cIlwiO3ZhciBjPXRoaXMuY2xvbmUoKTtmb3IoYy5uZWdhdGl2ZT0wOyFjLmlzWmVybygpOyl7dmFyIGQ9Yy5tb2RuKGgpLnRvU3RyaW5nKHQpO2M9Yy5pZGl2bihoKSxyPWMuaXNaZXJvKCk/ZCtyOl9bdS1kLmxlbmd0aF0rZCtyfWZvcih0aGlzLmlzWmVybygpJiYocj1cIjBcIityKTtyLmxlbmd0aCVlIT09MDspcj1cIjBcIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9XCItXCIrcikscn1uKCExLFwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNlwiKX0sby5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/dCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3QrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZuKCExLFwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzXCIpLDAhPT10aGlzLm5lZ2F0aXZlPy10OnR9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihcInVuZGVmaW5lZFwiIT10eXBlb2YgdyksdGhpcy50b0FycmF5TGlrZSh3LHQsZSl9LG8ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx0LGUpfSxvLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5ieXRlTGVuZ3RoKCksbz1yfHxNYXRoLm1heCgxLGkpO24oaTw9byxcImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGhcIiksbihvPjAsXCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDBcIiksdGhpcy5zdHJpcCgpO3ZhciBhLGYscz1cImxlXCI9PT1lLHU9bmV3IHQobyksaD10aGlzLmNsb25lKCk7aWYocyl7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksaC5pdXNocm4oOCksdVtmXT1hO2Zvcig7ZjxvO2YrKyl1W2ZdPTB9ZWxzZXtmb3IoZj0wO2Y8by1pO2YrKyl1W2ZdPTA7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksXG5oLml1c2hybig4KSx1W28tZi0xXT1hfXJldHVybiB1fSxNYXRoLmNsejMyP28ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24odCl7cmV0dXJuIDMyLU1hdGguY2x6MzIodCl9Om8ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24odCl7dmFyIGU9dCxyPTA7cmV0dXJuIGU+PTQwOTYmJihyKz0xMyxlPj4+PTEzKSxlPj02NCYmKHIrPTcsZT4+Pj03KSxlPj04JiYocis9NCxlPj4+PTQpLGU+PTImJihyKz0yLGU+Pj49MikscitlfSxvLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24odCl7aWYoMD09PXQpcmV0dXJuIDI2O3ZhciBlPXQscj0wO3JldHVybiAwPT09KDgxOTEmZSkmJihyKz0xMyxlPj4+PTEzKSwwPT09KDEyNyZlKSYmKHIrPTcsZT4+Pj03KSwwPT09KDE1JmUpJiYocis9NCxlPj4+PTQpLDA9PT0oMyZlKSYmKHIrPTIsZT4+Pj0yKSwwPT09KDEmZSkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLGU9dGhpcy5fY291bnRCaXRzKHQpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrZX0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgdD0wLGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tlXSk7aWYodCs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIHR9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LG8ucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbih0KXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bih0KS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LG8ucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRlc3RuKHQtMSk/dGhpcy5ub3RuKHQpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LG8ucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxvLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sby5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sby5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbih0KXtmb3IoO3RoaXMubGVuZ3RoPHQubGVuZ3RoOyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy53b3Jkc1tlXT10aGlzLndvcmRzW2VdfHQud29yZHNbZV07cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdW9yKHQpfSxvLnByb3RvdHlwZS5vcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcih0KTp0LmNsb25lKCkuaW9yKHRoaXMpfSxvLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKHQpOnQuY2xvbmUoKS5pdW9yKHRoaXMpfSxvLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbih0KXt2YXIgZTtlPXRoaXMubGVuZ3RoPnQubGVuZ3RoP3Q6dGhpcztmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mdC53b3Jkc1tyXTtyZXR1cm4gdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdWFuZCh0KX0sby5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZCh0KTp0LmNsb25lKCkuaWFuZCh0aGlzKX0sby5wcm90b3R5cGUudWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKHQpOnQuY2xvbmUoKS5pdWFuZCh0aGlzKX0sby5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24odCl7dmFyIGUscjt0aGlzLmxlbmd0aD50Lmxlbmd0aD8oZT10aGlzLHI9dCk6KGU9dCxyPXRoaXMpO2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tuXV5yLndvcmRzW25dO2lmKHRoaXMhPT1lKWZvcig7bjxlLmxlbmd0aDtuKyspdGhpcy53b3Jkc1tuXT1lLndvcmRzW25dO3JldHVybiB0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09PSh0aGlzLm5lZ2F0aXZlfHQubmVnYXRpdmUpKSx0aGlzLml1eG9yKHQpfSxvLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKHQpOnQuY2xvbmUoKS5peG9yKHRoaXMpfSxvLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IodCk6dC5jbG9uZSgpLml1eG9yKHRoaXMpfSxvLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT0wfE1hdGguY2VpbCh0LzI2KSxyPXQlMjY7dGhpcy5fZXhwYW5kKGUpLHI+MCYmZS0tO2Zvcih2YXIgaT0wO2k8ZTtpKyspdGhpcy53b3Jkc1tpXT02NzEwODg2MyZ+dGhpcy53b3Jkc1tpXTtyZXR1cm4gcj4wJiYodGhpcy53b3Jkc1tpXT1+dGhpcy53b3Jkc1tpXSY2NzEwODg2Mz4+MjYtciksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5ub3RuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW5vdG4odCl9LG8ucHJvdG90eXBlLnNldG49ZnVuY3Rpb24odCxlKXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgcj10LzI2fDAsaT10JTI2O3JldHVybiB0aGlzLl9leHBhbmQocisxKSxlP3RoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXXwxPDxpOnRoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZ+KDE8PGkpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih0KXt2YXIgZTtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCxlPXRoaXMuaXN1Yih0KSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZlKXJldHVybiB0Lm5lZ2F0aXZlPTAsZT10aGlzLmlzdWIodCksdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWduKCk7dmFyIHIsbjt0aGlzLmxlbmd0aD50Lmxlbmd0aD8ocj10aGlzLG49dCk6KHI9dCxuPXRoaXMpO2Zvcih2YXIgaT0wLG89MDtvPG4ubGVuZ3RoO28rKyllPSgwfHIud29yZHNbb10pKygwfG4ud29yZHNbb10pK2ksdGhpcy53b3Jkc1tvXT02NzEwODg2MyZlLGk9ZT4+PjI2O2Zvcig7MCE9PWkmJm88ci5sZW5ndGg7bysrKWU9KDB8ci53b3Jkc1tvXSkraSx0aGlzLndvcmRzW29dPTY3MTA4ODYzJmUsaT1lPj4+MjY7aWYodGhpcy5sZW5ndGg9ci5sZW5ndGgsMCE9PWkpdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF09aSx0aGlzLmxlbmd0aCsrO2Vsc2UgaWYociE9PXRoaXMpZm9yKDtvPHIubGVuZ3RoO28rKyl0aGlzLndvcmRzW29dPXIud29yZHNbb107cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gMCE9PXQubmVnYXRpdmUmJjA9PT10aGlzLm5lZ2F0aXZlPyh0Lm5lZ2F0aXZlPTAsZT10aGlzLnN1Yih0KSx0Lm5lZ2F0aXZlXj0xLGUpOjA9PT10Lm5lZ2F0aXZlJiYwIT09dGhpcy5uZWdhdGl2ZT8odGhpcy5uZWdhdGl2ZT0wLGU9dC5zdWIodGhpcyksdGhpcy5uZWdhdGl2ZT0xLGUpOnRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYWRkKHQpOnQuY2xvbmUoKS5pYWRkKHRoaXMpfSxvLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHQpe2lmKDAhPT10Lm5lZ2F0aXZlKXt0Lm5lZ2F0aXZlPTA7dmFyIGU9dGhpcy5pYWRkKHQpO3JldHVybiB0Lm5lZ2F0aXZlPTEsZS5fbm9ybVNpZ24oKX1pZigwIT09dGhpcy5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMuaWFkZCh0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcy5fbm9ybVNpZ24oKTt2YXIgcj10aGlzLmNtcCh0KTtpZigwPT09cilyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXMubGVuZ3RoPTEsdGhpcy53b3Jkc1swXT0wLHRoaXM7dmFyIG4saTtyPjA/KG49dGhpcyxpPXQpOihuPXQsaT10aGlzKTtmb3IodmFyIG89MCxhPTA7YTxpLmxlbmd0aDthKyspZT0oMHxuLndvcmRzW2FdKS0oMHxpLndvcmRzW2FdKStvLG89ZT4+MjYsdGhpcy53b3Jkc1thXT02NzEwODg2MyZlO2Zvcig7MCE9PW8mJmE8bi5sZW5ndGg7YSsrKWU9KDB8bi53b3Jkc1thXSkrbyxvPWU+PjI2LHRoaXMud29yZHNbYV09NjcxMDg4NjMmZTtpZigwPT09byYmYTxuLmxlbmd0aCYmbiE9PXRoaXMpZm9yKDthPG4ubGVuZ3RoO2ErKyl0aGlzLndvcmRzW2FdPW4ud29yZHNbYV07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGEpLG4hPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIodCl9O3ZhciBFPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLG8sYT10LndvcmRzLGY9ZS53b3JkcyxzPXIud29yZHMsdT0wLGg9MHxhWzBdLGM9ODE5MSZoLGQ9aD4+PjEzLGw9MHxhWzFdLHA9ODE5MSZsLGI9bD4+PjEzLHY9MHxhWzJdLHk9ODE5MSZ2LG09dj4+PjEzLGc9MHxhWzNdLHc9ODE5MSZnLF89Zz4+PjEzLE09MHxhWzRdLFM9ODE5MSZNLEU9TT4+PjEzLEE9MHxhWzVdLGs9ODE5MSZBLHg9QT4+PjEzLEk9MHxhWzZdLEI9ODE5MSZJLE89ST4+PjEzLFI9MHxhWzddLFA9ODE5MSZSLFQ9Uj4+PjEzLGo9MHxhWzhdLEM9ODE5MSZqLE49aj4+PjEzLEw9MHxhWzldLFU9ODE5MSZMLHo9TD4+PjEzLEQ9MHxmWzBdLHE9ODE5MSZELEY9RD4+PjEzLEs9MHxmWzFdLEc9ODE5MSZLLFY9Sz4+PjEzLEg9MHxmWzJdLFg9ODE5MSZILFk9SD4+PjEzLFc9MHxmWzNdLFo9ODE5MSZXLEo9Vz4+PjEzLCQ9MHxmWzRdLFE9ODE5MSYkLHR0PSQ+Pj4xMyxldD0wfGZbNV0scnQ9ODE5MSZldCxudD1ldD4+PjEzLGl0PTB8Zls2XSxvdD04MTkxJml0LGF0PWl0Pj4+MTMsZnQ9MHxmWzddLHN0PTgxOTEmZnQsdXQ9ZnQ+Pj4xMyxodD0wfGZbOF0sY3Q9ODE5MSZodCxkdD1odD4+PjEzLGx0PTB8Zls5XSxwdD04MTkxJmx0LGJ0PWx0Pj4+MTM7ci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9MTksbj1NYXRoLmltdWwoYyxxKSxpPU1hdGguaW11bChjLEYpLGk9aStNYXRoLmltdWwoZCxxKXwwLG89TWF0aC5pbXVsKGQsRik7dmFyIHZ0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyh2dD4+PjI2KXwwLHZ0Jj02NzEwODg2MyxuPU1hdGguaW11bChwLHEpLGk9TWF0aC5pbXVsKHAsRiksaT1pK01hdGguaW11bChiLHEpfDAsbz1NYXRoLmltdWwoYixGKSxuPW4rTWF0aC5pbXVsKGMsRyl8MCxpPWkrTWF0aC5pbXVsKGMsVil8MCxpPWkrTWF0aC5pbXVsKGQsRyl8MCxvPW8rTWF0aC5pbXVsKGQsVil8MDt2YXIgeXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKHl0Pj4+MjYpfDAseXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHkscSksaT1NYXRoLmltdWwoeSxGKSxpPWkrTWF0aC5pbXVsKG0scSl8MCxvPU1hdGguaW11bChtLEYpLG49bitNYXRoLmltdWwocCxHKXwwLGk9aStNYXRoLmltdWwocCxWKXwwLGk9aStNYXRoLmltdWwoYixHKXwwLG89bytNYXRoLmltdWwoYixWKXwwLG49bitNYXRoLmltdWwoYyxYKXwwLGk9aStNYXRoLmltdWwoYyxZKXwwLGk9aStNYXRoLmltdWwoZCxYKXwwLG89bytNYXRoLmltdWwoZCxZKXwwO3ZhciBtdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsobXQ+Pj4yNil8MCxtdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwodyxxKSxpPU1hdGguaW11bCh3LEYpLGk9aStNYXRoLmltdWwoXyxxKXwwLG89TWF0aC5pbXVsKF8sRiksbj1uK01hdGguaW11bCh5LEcpfDAsaT1pK01hdGguaW11bCh5LFYpfDAsaT1pK01hdGguaW11bChtLEcpfDAsbz1vK01hdGguaW11bChtLFYpfDAsbj1uK01hdGguaW11bChwLFgpfDAsaT1pK01hdGguaW11bChwLFkpfDAsaT1pK01hdGguaW11bChiLFgpfDAsbz1vK01hdGguaW11bChiLFkpfDAsbj1uK01hdGguaW11bChjLFopfDAsaT1pK01hdGguaW11bChjLEopfDAsaT1pK01hdGguaW11bChkLFopfDAsbz1vK01hdGguaW11bChkLEopfDA7dmFyIGd0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhndD4+PjI2KXwwLGd0Jj02NzEwODg2MyxuPU1hdGguaW11bChTLHEpLGk9TWF0aC5pbXVsKFMsRiksaT1pK01hdGguaW11bChFLHEpfDAsbz1NYXRoLmltdWwoRSxGKSxuPW4rTWF0aC5pbXVsKHcsRyl8MCxpPWkrTWF0aC5pbXVsKHcsVil8MCxpPWkrTWF0aC5pbXVsKF8sRyl8MCxvPW8rTWF0aC5pbXVsKF8sVil8MCxuPW4rTWF0aC5pbXVsKHksWCl8MCxpPWkrTWF0aC5pbXVsKHksWSl8MCxpPWkrTWF0aC5pbXVsKG0sWCl8MCxvPW8rTWF0aC5pbXVsKG0sWSl8MCxuPW4rTWF0aC5pbXVsKHAsWil8MCxpPWkrTWF0aC5pbXVsKHAsSil8MCxpPWkrTWF0aC5pbXVsKGIsWil8MCxvPW8rTWF0aC5pbXVsKGIsSil8MCxuPW4rTWF0aC5pbXVsKGMsUSl8MCxpPWkrTWF0aC5pbXVsKGMsdHQpfDAsaT1pK01hdGguaW11bChkLFEpfDAsbz1vK01hdGguaW11bChkLHR0KXwwO3ZhciB3dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsod3Q+Pj4yNil8MCx3dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoayxxKSxpPU1hdGguaW11bChrLEYpLGk9aStNYXRoLmltdWwoeCxxKXwwLG89TWF0aC5pbXVsKHgsRiksbj1uK01hdGguaW11bChTLEcpfDAsaT1pK01hdGguaW11bChTLFYpfDAsaT1pK01hdGguaW11bChFLEcpfDAsbz1vK01hdGguaW11bChFLFYpfDAsbj1uK01hdGguaW11bCh3LFgpfDAsaT1pK01hdGguaW11bCh3LFkpfDAsaT1pK01hdGguaW11bChfLFgpfDAsbz1vK01hdGguaW11bChfLFkpfDAsbj1uK01hdGguaW11bCh5LFopfDAsaT1pK01hdGguaW11bCh5LEopfDAsaT1pK01hdGguaW11bChtLFopfDAsbz1vK01hdGguaW11bChtLEopfDAsbj1uK01hdGguaW11bChwLFEpfDAsaT1pK01hdGguaW11bChwLHR0KXwwLGk9aStNYXRoLmltdWwoYixRKXwwLG89bytNYXRoLmltdWwoYix0dCl8MCxuPW4rTWF0aC5pbXVsKGMscnQpfDAsaT1pK01hdGguaW11bChjLG50KXwwLGk9aStNYXRoLmltdWwoZCxydCl8MCxvPW8rTWF0aC5pbXVsKGQsbnQpfDA7dmFyIF90PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhfdD4+PjI2KXwwLF90Jj02NzEwODg2MyxuPU1hdGguaW11bChCLHEpLGk9TWF0aC5pbXVsKEIsRiksaT1pK01hdGguaW11bChPLHEpfDAsbz1NYXRoLmltdWwoTyxGKSxuPW4rTWF0aC5pbXVsKGssRyl8MCxpPWkrTWF0aC5pbXVsKGssVil8MCxpPWkrTWF0aC5pbXVsKHgsRyl8MCxvPW8rTWF0aC5pbXVsKHgsVil8MCxuPW4rTWF0aC5pbXVsKFMsWCl8MCxpPWkrTWF0aC5pbXVsKFMsWSl8MCxpPWkrTWF0aC5pbXVsKEUsWCl8MCxvPW8rTWF0aC5pbXVsKEUsWSl8MCxuPW4rTWF0aC5pbXVsKHcsWil8MCxpPWkrTWF0aC5pbXVsKHcsSil8MCxpPWkrTWF0aC5pbXVsKF8sWil8MCxvPW8rTWF0aC5pbXVsKF8sSil8MCxuPW4rTWF0aC5pbXVsKHksUSl8MCxpPWkrTWF0aC5pbXVsKHksdHQpfDAsaT1pK01hdGguaW11bChtLFEpfDAsbz1vK01hdGguaW11bChtLHR0KXwwLG49bitNYXRoLmltdWwocCxydCl8MCxpPWkrTWF0aC5pbXVsKHAsbnQpfDAsaT1pK01hdGguaW11bChiLHJ0KXwwLG89bytNYXRoLmltdWwoYixudCl8MCxuPW4rTWF0aC5pbXVsKGMsb3QpfDAsaT1pK01hdGguaW11bChjLGF0KXwwLGk9aStNYXRoLmltdWwoZCxvdCl8MCxvPW8rTWF0aC5pbXVsKGQsYXQpfDA7dmFyIE10PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhNdD4+PjI2KXwwLE10Jj02NzEwODg2MyxuPU1hdGguaW11bChQLHEpLGk9TWF0aC5pbXVsKFAsRiksaT1pK01hdGguaW11bChULHEpfDAsbz1NYXRoLmltdWwoVCxGKSxuPW4rTWF0aC5pbXVsKEIsRyl8MCxpPWkrTWF0aC5pbXVsKEIsVil8MCxpPWkrTWF0aC5pbXVsKE8sRyl8MCxvPW8rTWF0aC5pbXVsKE8sVil8MCxuPW4rTWF0aC5pbXVsKGssWCl8MCxpPWkrTWF0aC5pbXVsKGssWSl8MCxpPWkrTWF0aC5pbXVsKHgsWCl8MCxvPW8rTWF0aC5pbXVsKHgsWSl8MCxuPW4rTWF0aC5pbXVsKFMsWil8MCxpPWkrTWF0aC5pbXVsKFMsSil8MCxpPWkrTWF0aC5pbXVsKEUsWil8MCxvPW8rTWF0aC5pbXVsKEUsSil8MCxuPW4rTWF0aC5pbXVsKHcsUSl8MCxpPWkrTWF0aC5pbXVsKHcsdHQpfDAsaT1pK01hdGguaW11bChfLFEpfDAsbz1vK01hdGguaW11bChfLHR0KXwwLG49bitNYXRoLmltdWwoeSxydCl8MCxpPWkrTWF0aC5pbXVsKHksbnQpfDAsaT1pK01hdGguaW11bChtLHJ0KXwwLG89bytNYXRoLmltdWwobSxudCl8MCxuPW4rTWF0aC5pbXVsKHAsb3QpfDAsaT1pK01hdGguaW11bChwLGF0KXwwLGk9aStNYXRoLmltdWwoYixvdCl8MCxvPW8rTWF0aC5pbXVsKGIsYXQpfDAsbj1uK01hdGguaW11bChjLHN0KXwwLGk9aStNYXRoLmltdWwoYyx1dCl8MCxpPWkrTWF0aC5pbXVsKGQsc3QpfDAsbz1vK01hdGguaW11bChkLHV0KXwwO3ZhciBTdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoU3Q+Pj4yNil8MCxTdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQyxxKSxpPU1hdGguaW11bChDLEYpLGk9aStNYXRoLmltdWwoTixxKXwwLG89TWF0aC5pbXVsKE4sRiksbj1uK01hdGguaW11bChQLEcpfDAsaT1pK01hdGguaW11bChQLFYpfDAsaT1pK01hdGguaW11bChULEcpfDAsbz1vK01hdGguaW11bChULFYpfDAsbj1uK01hdGguaW11bChCLFgpfDAsaT1pK01hdGguaW11bChCLFkpfDAsaT1pK01hdGguaW11bChPLFgpfDAsbz1vK01hdGguaW11bChPLFkpfDAsbj1uK01hdGguaW11bChrLFopfDAsaT1pK01hdGguaW11bChrLEopfDAsaT1pK01hdGguaW11bCh4LFopfDAsbz1vK01hdGguaW11bCh4LEopfDAsbj1uK01hdGguaW11bChTLFEpfDAsaT1pK01hdGguaW11bChTLHR0KXwwLGk9aStNYXRoLmltdWwoRSxRKXwwLG89bytNYXRoLmltdWwoRSx0dCl8MCxuPW4rTWF0aC5pbXVsKHcscnQpfDAsaT1pK01hdGguaW11bCh3LG50KXwwLGk9aStNYXRoLmltdWwoXyxydCl8MCxvPW8rTWF0aC5pbXVsKF8sbnQpfDAsbj1uK01hdGguaW11bCh5LG90KXwwLGk9aStNYXRoLmltdWwoeSxhdCl8MCxpPWkrTWF0aC5pbXVsKG0sb3QpfDAsbz1vK01hdGguaW11bChtLGF0KXwwLG49bitNYXRoLmltdWwocCxzdCl8MCxpPWkrTWF0aC5pbXVsKHAsdXQpfDAsaT1pK01hdGguaW11bChiLHN0KXwwLG89bytNYXRoLmltdWwoYix1dCl8MCxuPW4rTWF0aC5pbXVsKGMsY3QpfDAsaT1pK01hdGguaW11bChjLGR0KXwwLGk9aStNYXRoLmltdWwoZCxjdCl8MCxvPW8rTWF0aC5pbXVsKGQsZHQpfDA7dmFyIEV0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhFdD4+PjI2KXwwLEV0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLHEpLGk9TWF0aC5pbXVsKFUsRiksaT1pK01hdGguaW11bCh6LHEpfDAsbz1NYXRoLmltdWwoeixGKSxuPW4rTWF0aC5pbXVsKEMsRyl8MCxpPWkrTWF0aC5pbXVsKEMsVil8MCxpPWkrTWF0aC5pbXVsKE4sRyl8MCxvPW8rTWF0aC5pbXVsKE4sVil8MCxuPW4rTWF0aC5pbXVsKFAsWCl8MCxpPWkrTWF0aC5pbXVsKFAsWSl8MCxpPWkrTWF0aC5pbXVsKFQsWCl8MCxvPW8rTWF0aC5pbXVsKFQsWSl8MCxuPW4rTWF0aC5pbXVsKEIsWil8MCxpPWkrTWF0aC5pbXVsKEIsSil8MCxpPWkrTWF0aC5pbXVsKE8sWil8MCxvPW8rTWF0aC5pbXVsKE8sSil8MCxuPW4rTWF0aC5pbXVsKGssUSl8MCxpPWkrTWF0aC5pbXVsKGssdHQpfDAsaT1pK01hdGguaW11bCh4LFEpfDAsbz1vK01hdGguaW11bCh4LHR0KXwwLG49bitNYXRoLmltdWwoUyxydCl8MCxpPWkrTWF0aC5pbXVsKFMsbnQpfDAsaT1pK01hdGguaW11bChFLHJ0KXwwLG89bytNYXRoLmltdWwoRSxudCl8MCxuPW4rTWF0aC5pbXVsKHcsb3QpfDAsaT1pK01hdGguaW11bCh3LGF0KXwwLGk9aStNYXRoLmltdWwoXyxvdCl8MCxvPW8rTWF0aC5pbXVsKF8sYXQpfDAsbj1uK01hdGguaW11bCh5LHN0KXwwLGk9aStNYXRoLmltdWwoeSx1dCl8MCxpPWkrTWF0aC5pbXVsKG0sc3QpfDAsbz1vK01hdGguaW11bChtLHV0KXwwLG49bitNYXRoLmltdWwocCxjdCl8MCxpPWkrTWF0aC5pbXVsKHAsZHQpfDAsaT1pK01hdGguaW11bChiLGN0KXwwLG89bytNYXRoLmltdWwoYixkdCl8MCxuPW4rTWF0aC5pbXVsKGMscHQpfDAsaT1pK01hdGguaW11bChjLGJ0KXwwLGk9aStNYXRoLmltdWwoZCxwdCl8MCxvPW8rTWF0aC5pbXVsKGQsYnQpfDA7dmFyIEF0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhBdD4+PjI2KXwwLEF0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLEcpLGk9TWF0aC5pbXVsKFUsViksaT1pK01hdGguaW11bCh6LEcpfDAsbz1NYXRoLmltdWwoeixWKSxuPW4rTWF0aC5pbXVsKEMsWCl8MCxpPWkrTWF0aC5pbXVsKEMsWSl8MCxpPWkrTWF0aC5pbXVsKE4sWCl8MCxvPW8rTWF0aC5pbXVsKE4sWSl8MCxuPW4rTWF0aC5pbXVsKFAsWil8MCxpPWkrTWF0aC5pbXVsKFAsSil8MCxpPWkrTWF0aC5pbXVsKFQsWil8MCxvPW8rTWF0aC5pbXVsKFQsSil8MCxuPW4rTWF0aC5pbXVsKEIsUSl8MCxpPWkrTWF0aC5pbXVsKEIsdHQpfDAsaT1pK01hdGguaW11bChPLFEpfDAsbz1vK01hdGguaW11bChPLHR0KXwwLG49bitNYXRoLmltdWwoayxydCl8MCxpPWkrTWF0aC5pbXVsKGssbnQpfDAsaT1pK01hdGguaW11bCh4LHJ0KXwwLG89bytNYXRoLmltdWwoeCxudCl8MCxuPW4rTWF0aC5pbXVsKFMsb3QpfDAsaT1pK01hdGguaW11bChTLGF0KXwwLGk9aStNYXRoLmltdWwoRSxvdCl8MCxvPW8rTWF0aC5pbXVsKEUsYXQpfDAsbj1uK01hdGguaW11bCh3LHN0KXwwLGk9aStNYXRoLmltdWwodyx1dCl8MCxpPWkrTWF0aC5pbXVsKF8sc3QpfDAsbz1vK01hdGguaW11bChfLHV0KXwwLG49bitNYXRoLmltdWwoeSxjdCl8MCxpPWkrTWF0aC5pbXVsKHksZHQpfDAsaT1pK01hdGguaW11bChtLGN0KXwwLG89bytNYXRoLmltdWwobSxkdCl8MCxuPW4rTWF0aC5pbXVsKHAscHQpfDAsaT1pK01hdGguaW11bChwLGJ0KXwwLGk9aStNYXRoLmltdWwoYixwdCl8MCxvPW8rTWF0aC5pbXVsKGIsYnQpfDA7dmFyIGt0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhrdD4+PjI2KXwwLGt0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLFgpLGk9TWF0aC5pbXVsKFUsWSksaT1pK01hdGguaW11bCh6LFgpfDAsbz1NYXRoLmltdWwoeixZKSxuPW4rTWF0aC5pbXVsKEMsWil8MCxpPWkrTWF0aC5pbXVsKEMsSil8MCxpPWkrTWF0aC5pbXVsKE4sWil8MCxvPW8rTWF0aC5pbXVsKE4sSil8MCxuPW4rTWF0aC5pbXVsKFAsUSl8MCxpPWkrTWF0aC5pbXVsKFAsdHQpfDAsaT1pK01hdGguaW11bChULFEpfDAsbz1vK01hdGguaW11bChULHR0KXwwLG49bitNYXRoLmltdWwoQixydCl8MCxpPWkrTWF0aC5pbXVsKEIsbnQpfDAsaT1pK01hdGguaW11bChPLHJ0KXwwLG89bytNYXRoLmltdWwoTyxudCl8MCxuPW4rTWF0aC5pbXVsKGssb3QpfDAsaT1pK01hdGguaW11bChrLGF0KXwwLGk9aStNYXRoLmltdWwoeCxvdCl8MCxvPW8rTWF0aC5pbXVsKHgsYXQpfDAsbj1uK01hdGguaW11bChTLHN0KXwwLGk9aStNYXRoLmltdWwoUyx1dCl8MCxpPWkrTWF0aC5pbXVsKEUsc3QpfDAsbz1vK01hdGguaW11bChFLHV0KXwwLG49bitNYXRoLmltdWwodyxjdCl8MCxpPWkrTWF0aC5pbXVsKHcsZHQpfDAsaT1pK01hdGguaW11bChfLGN0KXwwLG89bytNYXRoLmltdWwoXyxkdCl8MCxuPW4rTWF0aC5pbXVsKHkscHQpfDAsaT1pK01hdGguaW11bCh5LGJ0KXwwLGk9aStNYXRoLmltdWwobSxwdCl8MCxvPW8rTWF0aC5pbXVsKG0sYnQpfDA7dmFyIHh0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyh4dD4+PjI2KXwwLHh0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLFopLGk9TWF0aC5pbXVsKFUsSiksaT1pK01hdGguaW11bCh6LFopfDAsbz1NYXRoLmltdWwoeixKKSxuPW4rTWF0aC5pbXVsKEMsUSl8MCxpPWkrTWF0aC5pbXVsKEMsdHQpfDAsaT1pK01hdGguaW11bChOLFEpfDAsbz1vK01hdGguaW11bChOLHR0KXwwLG49bitNYXRoLmltdWwoUCxydCl8MCxpPWkrTWF0aC5pbXVsKFAsbnQpfDAsaT1pK01hdGguaW11bChULHJ0KXwwLG89bytNYXRoLmltdWwoVCxudCl8MCxuPW4rTWF0aC5pbXVsKEIsb3QpfDAsaT1pK01hdGguaW11bChCLGF0KXwwLGk9aStNYXRoLmltdWwoTyxvdCl8MCxvPW8rTWF0aC5pbXVsKE8sYXQpfDAsbj1uK01hdGguaW11bChrLHN0KXwwLGk9aStNYXRoLmltdWwoayx1dCl8MCxpPWkrTWF0aC5pbXVsKHgsc3QpfDAsbz1vK01hdGguaW11bCh4LHV0KXwwLG49bitNYXRoLmltdWwoUyxjdCl8MCxpPWkrTWF0aC5pbXVsKFMsZHQpfDAsaT1pK01hdGguaW11bChFLGN0KXwwLG89bytNYXRoLmltdWwoRSxkdCl8MCxuPW4rTWF0aC5pbXVsKHcscHQpfDAsaT1pK01hdGguaW11bCh3LGJ0KXwwLGk9aStNYXRoLmltdWwoXyxwdCl8MCxvPW8rTWF0aC5pbXVsKF8sYnQpfDA7dmFyIEl0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhJdD4+PjI2KXwwLEl0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLFEpLGk9TWF0aC5pbXVsKFUsdHQpLGk9aStNYXRoLmltdWwoeixRKXwwLG89TWF0aC5pbXVsKHosdHQpLG49bitNYXRoLmltdWwoQyxydCl8MCxpPWkrTWF0aC5pbXVsKEMsbnQpfDAsaT1pK01hdGguaW11bChOLHJ0KXwwLG89bytNYXRoLmltdWwoTixudCl8MCxuPW4rTWF0aC5pbXVsKFAsb3QpfDAsaT1pK01hdGguaW11bChQLGF0KXwwLGk9aStNYXRoLmltdWwoVCxvdCl8MCxvPW8rTWF0aC5pbXVsKFQsYXQpfDAsbj1uK01hdGguaW11bChCLHN0KXwwLGk9aStNYXRoLmltdWwoQix1dCl8MCxpPWkrTWF0aC5pbXVsKE8sc3QpfDAsbz1vK01hdGguaW11bChPLHV0KXwwLG49bitNYXRoLmltdWwoayxjdCl8MCxpPWkrTWF0aC5pbXVsKGssZHQpfDAsaT1pK01hdGguaW11bCh4LGN0KXwwLG89bytNYXRoLmltdWwoeCxkdCl8MCxuPW4rTWF0aC5pbXVsKFMscHQpfDAsaT1pK01hdGguaW11bChTLGJ0KXwwLGk9aStNYXRoLmltdWwoRSxwdCl8MCxvPW8rTWF0aC5pbXVsKEUsYnQpfDA7dmFyIEJ0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhCdD4+PjI2KXwwLEJ0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLHJ0KSxpPU1hdGguaW11bChVLG50KSxpPWkrTWF0aC5pbXVsKHoscnQpfDAsbz1NYXRoLmltdWwoeixudCksbj1uK01hdGguaW11bChDLG90KXwwLGk9aStNYXRoLmltdWwoQyxhdCl8MCxpPWkrTWF0aC5pbXVsKE4sb3QpfDAsbz1vK01hdGguaW11bChOLGF0KXwwLG49bitNYXRoLmltdWwoUCxzdCl8MCxpPWkrTWF0aC5pbXVsKFAsdXQpfDAsaT1pK01hdGguaW11bChULHN0KXwwLG89bytNYXRoLmltdWwoVCx1dCl8MCxuPW4rTWF0aC5pbXVsKEIsY3QpfDAsaT1pK01hdGguaW11bChCLGR0KXwwLGk9aStNYXRoLmltdWwoTyxjdCl8MCxvPW8rTWF0aC5pbXVsKE8sZHQpfDAsbj1uK01hdGguaW11bChrLHB0KXwwLGk9aStNYXRoLmltdWwoayxidCl8MCxpPWkrTWF0aC5pbXVsKHgscHQpfDAsbz1vK01hdGguaW11bCh4LGJ0KXwwO3ZhciBPdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoT3Q+Pj4yNil8MCxPdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxvdCksaT1NYXRoLmltdWwoVSxhdCksaT1pK01hdGguaW11bCh6LG90KXwwLG89TWF0aC5pbXVsKHosYXQpLG49bitNYXRoLmltdWwoQyxzdCl8MCxpPWkrTWF0aC5pbXVsKEMsdXQpfDAsaT1pK01hdGguaW11bChOLHN0KXwwLG89bytNYXRoLmltdWwoTix1dCl8MCxuPW4rTWF0aC5pbXVsKFAsY3QpfDAsaT1pK01hdGguaW11bChQLGR0KXwwLGk9aStNYXRoLmltdWwoVCxjdCl8MCxvPW8rTWF0aC5pbXVsKFQsZHQpfDAsbj1uK01hdGguaW11bChCLHB0KXwwLGk9aStNYXRoLmltdWwoQixidCl8MCxpPWkrTWF0aC5pbXVsKE8scHQpfDAsbz1vK01hdGguaW11bChPLGJ0KXwwO3ZhciBSdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoUnQ+Pj4yNil8MCxSdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxzdCksaT1NYXRoLmltdWwoVSx1dCksaT1pK01hdGguaW11bCh6LHN0KXwwLG89TWF0aC5pbXVsKHosdXQpLG49bitNYXRoLmltdWwoQyxjdCl8MCxpPWkrTWF0aC5pbXVsKEMsZHQpfDAsaT1pK01hdGguaW11bChOLGN0KXwwLG89bytNYXRoLmltdWwoTixkdCl8MCxuPW4rTWF0aC5pbXVsKFAscHQpfDAsaT1pK01hdGguaW11bChQLGJ0KXwwLGk9aStNYXRoLmltdWwoVCxwdCl8MCxvPW8rTWF0aC5pbXVsKFQsYnQpfDA7dmFyIFB0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhQdD4+PjI2KXwwLFB0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLGN0KSxpPU1hdGguaW11bChVLGR0KSxpPWkrTWF0aC5pbXVsKHosY3QpfDAsbz1NYXRoLmltdWwoeixkdCksbj1uK01hdGguaW11bChDLHB0KXwwLGk9aStNYXRoLmltdWwoQyxidCl8MCxpPWkrTWF0aC5pbXVsKE4scHQpfDAsbz1vK01hdGguaW11bChOLGJ0KXwwO3ZhciBUdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoVHQ+Pj4yNil8MCxUdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxwdCksaT1NYXRoLmltdWwoVSxidCksaT1pK01hdGguaW11bCh6LHB0KXwwLG89TWF0aC5pbXVsKHosYnQpO3ZhciBqdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7cmV0dXJuIHU9KG8rKGk+Pj4xMyl8MCkrKGp0Pj4+MjYpfDAsanQmPTY3MTA4ODYzLHNbMF09dnQsc1sxXT15dCxzWzJdPW10LHNbM109Z3Qsc1s0XT13dCxzWzVdPV90LHNbNl09TXQsc1s3XT1TdCxzWzhdPUV0LHNbOV09QXQsc1sxMF09a3Qsc1sxMV09eHQsc1sxMl09SXQsc1sxM109QnQsc1sxNF09T3Qsc1sxNV09UnQsc1sxNl09UHQsc1sxN109VHQsc1sxOF09anQsMCE9PXUmJihzWzE5XT11LHIubGVuZ3RoKyspLHJ9O01hdGguaW11bHx8KEU9dSksby5wcm90b3R5cGUubXVsVG89ZnVuY3Rpb24odCxlKXt2YXIgcixuPXRoaXMubGVuZ3RoK3QubGVuZ3RoO3JldHVybiByPTEwPT09dGhpcy5sZW5ndGgmJjEwPT09dC5sZW5ndGg/RSh0aGlzLHQsZSk6bjw2Mz91KHRoaXMsdCxlKTpuPDEwMjQ/aCh0aGlzLHQsZSk6Yyh0aGlzLHQsZSl9LGQucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPW8ucHJvdG90eXBlLl9jb3VudEJpdHModCktMSxuPTA7bjx0O24rKyllW25dPXRoaXMucmV2QmluKG4scix0KTtyZXR1cm4gZX0sZC5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKHQsZSxyKXtpZigwPT09dHx8dD09PXItMSlyZXR1cm4gdDtmb3IodmFyIG49MCxpPTA7aTxlO2krKylufD0oMSZ0KTw8ZS1pLTEsdD4+PTE7cmV0dXJuIG59LGQucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24odCxlLHIsbixpLG8pe2Zvcih2YXIgYT0wO2E8bzthKyspblthXT1lW3RbYV1dLGlbYV09clt0W2FdXX0sZC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt0aGlzLnBlcm11dGUobyx0LGUscixuLGkpO2Zvcih2YXIgYT0xO2E8aTthPDw9MSlmb3IodmFyIGY9YTw8MSxzPU1hdGguY29zKDIqTWF0aC5QSS9mKSx1PU1hdGguc2luKDIqTWF0aC5QSS9mKSxoPTA7aDxpO2grPWYpZm9yKHZhciBjPXMsZD11LGw9MDtsPGE7bCsrKXt2YXIgcD1yW2grbF0sYj1uW2grbF0sdj1yW2grbCthXSx5PW5baCtsK2FdLG09Yyp2LWQqeTt5PWMqeStkKnYsdj1tLHJbaCtsXT1wK3YsbltoK2xdPWIreSxyW2grbCthXT1wLXYsbltoK2wrYV09Yi15LGwhPT1mJiYobT1zKmMtdSpkLGQ9cypkK3UqYyxjPW0pfX0sZC5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24odCxlKXt2YXIgcj0xfE1hdGgubWF4KGUsdCksbj0xJnIsaT0wO2ZvcihyPXIvMnwwO3I7cj4+Pj0xKWkrKztyZXR1cm4gMTw8aSsxK259LGQucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih0LGUscil7aWYoIShyPD0xKSlmb3IodmFyIG49MDtuPHIvMjtuKyspe3ZhciBpPXRbbl07dFtuXT10W3Itbi0xXSx0W3Itbi0xXT1pLGk9ZVtuXSxlW25dPS1lW3Itbi0xXSxlW3Itbi0xXT0taX19LGQucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49MDtuPGUvMjtuKyspe3ZhciBpPTgxOTIqTWF0aC5yb3VuZCh0WzIqbisxXS9lKStNYXRoLnJvdW5kKHRbMipuXS9lKStyO3Rbbl09NjcxMDg4NjMmaSxyPWk8NjcxMDg4NjQ/MDppLzY3MTA4ODY0fDB9cmV0dXJuIHR9LGQucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKHZhciBvPTAsYT0wO2E8ZTthKyspbys9MHx0W2FdLHJbMiphXT04MTkxJm8sbz4+Pj0xMyxyWzIqYSsxXT04MTkxJm8sbz4+Pj0xMztmb3IoYT0yKmU7YTxpOysrYSlyW2FdPTA7bigwPT09byksbigwPT09KG8mLTgxOTIpKX0sZC5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09MDtyZXR1cm4gZX0sZC5wcm90b3R5cGUubXVscD1mdW5jdGlvbih0LGUscil7dmFyIG49Mip0aGlzLmd1ZXNzTGVuMTNiKHQubGVuZ3RoLGUubGVuZ3RoKSxpPXRoaXMubWFrZVJCVChuKSxvPXRoaXMuc3R1YihuKSxhPW5ldyBBcnJheShuKSxmPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSx1PW5ldyBBcnJheShuKSxoPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKSxkPXIud29yZHM7ZC5sZW5ndGg9bix0aGlzLmNvbnZlcnQxM2IodC53b3Jkcyx0Lmxlbmd0aCxhLG4pLHRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3RoLHUsbiksdGhpcy50cmFuc2Zvcm0oYSxvLGYscyxuLGkpLHRoaXMudHJhbnNmb3JtKHUsbyxoLGMsbixpKTtmb3IodmFyIGw9MDtsPG47bCsrKXt2YXIgcD1mW2xdKmhbbF0tc1tsXSpjW2xdO3NbbF09ZltsXSpjW2xdK3NbbF0qaFtsXSxmW2xdPXB9cmV0dXJuIHRoaXMuY29uanVnYXRlKGYscyxuKSx0aGlzLnRyYW5zZm9ybShmLHMsZCxvLG4saSksdGhpcy5jb25qdWdhdGUoZCxvLG4pLHRoaXMubm9ybWFsaXplMTNiKGQsbiksci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGgsci5zdHJpcCgpfSxvLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSx0aGlzLm11bFRvKHQsZSl9LG8ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSxjKHRoaXMsdCxlKX0sby5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHQsdGhpcyl9LG8ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQpLG4odDw2NzEwODg2NCk7Zm9yKHZhciBlPTAscj0wO3I8dGhpcy5sZW5ndGg7cisrKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSp0LG89KDY3MTA4ODYzJmkpKyg2NzEwODg2MyZlKTtlPj49MjYsZSs9aS82NzEwODg2NHwwLGUrPW8+Pj4yNix0aGlzLndvcmRzW3JdPTY3MTA4ODYzJm99cmV0dXJuIDAhPT1lJiYodGhpcy53b3Jkc1tyXT1lLHRoaXMubGVuZ3RoKyspLHRoaXN9LG8ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih0KX0sby5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxvLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxvLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG5ldyBvKDEpO2Zvcih2YXIgcj10aGlzLG49MDtuPGUubGVuZ3RoJiYwPT09ZVtuXTtuKysscj1yLnNxcigpKTtpZigrK248ZS5sZW5ndGgpZm9yKHZhciBpPXIuc3FyKCk7bjxlLmxlbmd0aDtuKyssaT1pLnNxcigpKTAhPT1lW25dJiYocj1yLm11bChpKSk7cmV0dXJuIHJ9LG8ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZSxyPXQlMjYsaT0odC1yKS8yNixvPTY3MTA4ODYzPj4+MjYtcjw8MjYtcjtpZigwIT09cil7dmFyIGE9MDtmb3IoZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgZj10aGlzLndvcmRzW2VdJm8scz0oMHx0aGlzLndvcmRzW2VdKS1mPDxyO3RoaXMud29yZHNbZV09c3xhLGE9Zj4+PjI2LXJ9YSYmKHRoaXMud29yZHNbZV09YSx0aGlzLmxlbmd0aCsrKX1pZigwIT09aSl7Zm9yKGU9dGhpcy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLndvcmRzW2UraV09dGhpcy53b3Jkc1tlXTtmb3IoZT0wO2U8aTtlKyspdGhpcy53b3Jkc1tlXT0wO3RoaXMubGVuZ3RoKz1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih0KX0sby5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHQsZSxyKXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgaTtpPWU/KGUtZSUyNikvMjY6MDt2YXIgbz10JTI2LGE9TWF0aC5taW4oKHQtbykvMjYsdGhpcy5sZW5ndGgpLGY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5vPDxvLHM9cjtpZihpLT1hLGk9TWF0aC5tYXgoMCxpKSxzKXtmb3IodmFyIHU9MDt1PGE7dSsrKXMud29yZHNbdV09dGhpcy53b3Jkc1t1XTtzLmxlbmd0aD1hfWlmKDA9PT1hKTtlbHNlIGlmKHRoaXMubGVuZ3RoPmEpZm9yKHRoaXMubGVuZ3RoLT1hLHU9MDt1PHRoaXMubGVuZ3RoO3UrKyl0aGlzLndvcmRzW3VdPXRoaXMud29yZHNbdSthXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBoPTA7Zm9yKHU9dGhpcy5sZW5ndGgtMTt1Pj0wJiYoMCE9PWh8fHU+PWkpO3UtLSl7dmFyIGM9MHx0aGlzLndvcmRzW3VdO3RoaXMud29yZHNbdV09aDw8MjYtb3xjPj4+byxoPWMmZn1yZXR1cm4gcyYmMCE9PWgmJihzLndvcmRzW3MubGVuZ3RoKytdPWgpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4odCxlLHIpfSxvLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4odCl9LG8ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKHQpfSxvLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4odCl9LG8ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHQpfSxvLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsaT0xPDxlO2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiExO3ZhciBvPXRoaXMud29yZHNbcl07cmV0dXJuISEobyZpKX0sby5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPXQlMjYscj0odC1lKS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLFwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzXCIpLHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzO2lmKDAhPT1lJiZyKyssdGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCksMCE9PWUpe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+ZTw8ZTt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHQpfSxvLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih0KXtyZXR1cm4gbihcIm51bWJlclwiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDA/dGhpcy5pc3VibigtdCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx0Pyh0aGlzLndvcmRzWzBdPXQtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4odCl9LG8ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih0KXt0aGlzLndvcmRzWzBdKz10O2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbZV0+PTY3MTA4ODY0O2UrKyl0aGlzLndvcmRzW2VdLT02NzEwODg2NCxlPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2UrMV09MTp0aGlzLndvcmRzW2UrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsZSsxKSx0aGlzfSxvLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih0KXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MClyZXR1cm4gdGhpcy5pYWRkbigtdCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXQsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29yZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4odCl9LG8ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0KX0sby5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sby5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LG8ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUscil7dmFyIGksbz10Lmxlbmd0aCtyO3RoaXMuX2V4cGFuZChvKTt2YXIgYSxmPTA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7YT0oMHx0aGlzLndvcmRzW2krcl0pK2Y7dmFyIHM9KDB8dC53b3Jkc1tpXSkqZTthLT02NzEwODg2MyZzLGY9KGE+PjI2KS0ocy82NzEwODg2NHwwKSx0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYX1mb3IoO2k8dGhpcy5sZW5ndGgtcjtpKyspYT0oMHx0aGlzLndvcmRzW2krcl0pK2YsZj1hPj4yNix0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYTtpZigwPT09ZilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKGY9PT0tMSksZj0wLGk9MDtpPHRoaXMubGVuZ3RoO2krKylhPS0oMHx0aGlzLndvcmRzW2ldKStmLGY9YT4+MjYsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZhO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoLXQubGVuZ3RoLG49dGhpcy5jbG9uZSgpLGk9dCxhPTB8aS53b3Jkc1tpLmxlbmd0aC0xXSxmPXRoaXMuX2NvdW50Qml0cyhhKTtyPTI2LWYsMCE9PXImJihpPWkudXNobG4ociksbi5pdXNobG4ociksYT0wfGkud29yZHNbaS5sZW5ndGgtMV0pO3ZhciBzLHU9bi5sZW5ndGgtaS5sZW5ndGg7aWYoXCJtb2RcIiE9PWUpe3M9bmV3IG8obnVsbCkscy5sZW5ndGg9dSsxLHMud29yZHM9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IodmFyIGg9MDtoPHMubGVuZ3RoO2grKylzLndvcmRzW2hdPTB9dmFyIGM9bi5jbG9uZSgpLl9pc2hsbnN1Ym11bChpLDEsdSk7MD09PWMubmVnYXRpdmUmJihuPWMscyYmKHMud29yZHNbdV09MSkpO2Zvcih2YXIgZD11LTE7ZD49MDtkLS0pe3ZhciBsPTY3MTA4ODY0KigwfG4ud29yZHNbaS5sZW5ndGgrZF0pKygwfG4ud29yZHNbaS5sZW5ndGgrZC0xXSk7Zm9yKGw9TWF0aC5taW4obC9hfDAsNjcxMDg4NjMpLG4uX2lzaGxuc3VibXVsKGksbCxkKTswIT09bi5uZWdhdGl2ZTspbC0tLG4ubmVnYXRpdmU9MCxuLl9pc2hsbnN1Ym11bChpLDEsZCksbi5pc1plcm8oKXx8KG4ubmVnYXRpdmVePTEpO3MmJihzLndvcmRzW2RdPWwpfXJldHVybiBzJiZzLnN0cmlwKCksbi5zdHJpcCgpLFwiZGl2XCIhPT1lJiYwIT09ciYmbi5pdXNocm4ocikse2RpdjpzfHxudWxsLG1vZDpufX0sby5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSxyKXtpZihuKCF0LmlzWmVybygpKSx0aGlzLmlzWmVybygpKXJldHVybntkaXY6bmV3IG8oMCksbW9kOm5ldyBvKDApfTt2YXIgaSxhLGY7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZT8oZj10aGlzLm5lZygpLmRpdm1vZCh0LGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSksXCJkaXZcIiE9PWUmJihhPWYubW9kLm5lZygpLHImJjAhPT1hLm5lZ2F0aXZlJiZhLmlhZGQodCkpLHtkaXY6aSxtb2Q6YX0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZT8oZj10aGlzLmRpdm1vZCh0Lm5lZygpLGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSkse2RpdjppLG1vZDpmLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZ0Lm5lZ2F0aXZlKT8oZj10aGlzLm5lZygpLmRpdm1vZCh0Lm5lZygpLGUpLFwiZGl2XCIhPT1lJiYoYT1mLm1vZC5uZWcoKSxyJiYwIT09YS5uZWdhdGl2ZSYmYS5pc3ViKHQpKSx7ZGl2OmYuZGl2LG1vZDphfSk6dC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHQpPDA/e2RpdjpuZXcgbygwKSxtb2Q6dGhpc306MT09PXQubGVuZ3RoP1wiZGl2XCI9PT1lP3tkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpudWxsfTpcIm1vZFwiPT09ZT97ZGl2Om51bGwsbW9kOm5ldyBvKHRoaXMubW9kbih0LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpuZXcgbyh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHQsZSl9LG8ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcImRpdlwiLCExKS5kaXZ9LG8ucHJvdG90eXBlLm1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcIm1vZFwiLCExKS5tb2R9LG8ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsXCJtb2RcIiwhMCkubW9kfSxvLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpdm1vZCh0KTtpZihlLm1vZC5pc1plcm8oKSlyZXR1cm4gZS5kaXY7dmFyIHI9MCE9PWUuZGl2Lm5lZ2F0aXZlP2UubW9kLmlzdWIodCk6ZS5tb2Qsbj10LnVzaHJuKDEpLGk9dC5hbmRsbigxKSxvPXIuY21wKG4pO3JldHVybiBvPDB8fDE9PT1pJiYwPT09bz9lLmRpdjowIT09ZS5kaXYubmVnYXRpdmU/ZS5kaXYuaXN1Ym4oMSk6ZS5kaXYuaWFkZG4oMSl9LG8ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPSgxPDwyNikldCxyPTAsaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXI9KGUqcisoMHx0aGlzLndvcmRzW2ldKSkldDtyZXR1cm4gcn0sby5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSs2NzEwODg2NCplO3RoaXMud29yZHNbcl09aS90fDAsZT1pJXR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHQpfSxvLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9bmV3IG8oMCkscz1uZXcgbygxKSx1PTA7ZS5pc0V2ZW4oKSYmci5pc0V2ZW4oKTspZS5pdXNocm4oMSksci5pdXNocm4oMSksKyt1O2Zvcih2YXIgaD1yLmNsb25lKCksYz1lLmNsb25lKCk7IWUuaXNaZXJvKCk7KXtmb3IodmFyIGQ9MCxsPTE7MD09PShlLndvcmRzWzBdJmwpJiZkPDI2OysrZCxsPDw9MSk7aWYoZD4wKWZvcihlLml1c2hybihkKTtkLS0gPjA7KShpLmlzT2RkKCl8fGEuaXNPZGQoKSkmJihpLmlhZGQoaCksYS5pc3ViKGMpKSxpLml1c2hybigxKSxhLml1c2hybigxKTtmb3IodmFyIHA9MCxiPTE7MD09PShyLndvcmRzWzBdJmIpJiZwPDI2OysrcCxiPDw9MSk7aWYocD4wKWZvcihyLml1c2hybihwKTtwLS0gPjA7KShmLmlzT2RkKCl8fHMuaXNPZGQoKSkmJihmLmlhZGQoaCkscy5pc3ViKGMpKSxmLml1c2hybigxKSxzLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihmKSxhLmlzdWIocykpOihyLmlzdWIoZSksZi5pc3ViKGkpLHMuaXN1YihhKSl9cmV0dXJue2E6ZixiOnMsZ2NkOnIuaXVzaGxuKHUpfX0sby5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9ci5jbG9uZSgpO2UuY21wbigxKT4wJiZyLmNtcG4oMSk+MDspe2Zvcih2YXIgcz0wLHU9MTswPT09KGUud29yZHNbMF0mdSkmJnM8MjY7KytzLHU8PD0xKTtpZihzPjApZm9yKGUuaXVzaHJuKHMpO3MtLSA+MDspaS5pc09kZCgpJiZpLmlhZGQoZiksaS5pdXNocm4oMSk7Zm9yKHZhciBoPTAsYz0xOzA9PT0oci53b3Jkc1swXSZjKSYmaDwyNjsrK2gsYzw8PTEpO2lmKGg+MClmb3Ioci5pdXNocm4oaCk7aC0tID4wOylhLmlzT2RkKCkmJmEuaWFkZChmKSxhLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihhKSk6KHIuaXN1YihlKSxhLmlzdWIoaSkpfXZhciBkO3JldHVybiBkPTA9PT1lLmNtcG4oMSk/aTphLGQuY21wbigwKTwwJiZkLmlhZGQodCksZH0sby5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHQuYWJzKCk7aWYodC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgZT10aGlzLmNsb25lKCkscj10LmNsb25lKCk7ZS5uZWdhdGl2ZT0wLHIubmVnYXRpdmU9MDtmb3IodmFyIG49MDtlLmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyllLml1c2hybigxKSxyLml1c2hybigxKTtmb3IoOzspe2Zvcig7ZS5pc0V2ZW4oKTspZS5pdXNocm4oMSk7Zm9yKDtyLmlzRXZlbigpOylyLml1c2hybigxKTt2YXIgaT1lLmNtcChyKTtpZihpPDApe3ZhciBvPWU7ZT1yLHI9b31lbHNlIGlmKDA9PT1pfHwwPT09ci5jbXBuKDEpKWJyZWFrO2UuaXN1YihyKX1yZXR1cm4gci5pdXNobG4obil9LG8ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWdjZCh0KS5hLnVtb2QodCl9LG8ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT09KDEmdGhpcy53b3Jkc1swXSl9LG8ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLndvcmRzWzBdKX0sby5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud29yZHNbMF0mdH0sby5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCk7dmFyIGU9dCUyNixyPSh0LWUpLzI2LGk9MTw8ZTtpZih0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXXw9aSx0aGlzO2Zvcih2YXIgbz1pLGE9cjswIT09byYmYTx0aGlzLmxlbmd0aDthKyspe3ZhciBmPTB8dGhpcy53b3Jkc1thXTtmKz1vLG89Zj4+PjI2LGYmPTY3MTA4ODYzLHRoaXMud29yZHNbYV09Zn1yZXR1cm4gMCE9PW8mJih0aGlzLndvcmRzW2FdPW8sdGhpcy5sZW5ndGgrKyksdGhpc30sby5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LG8ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24odCl7dmFyIGU9dDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmZSlyZXR1cm4gMTt0aGlzLnN0cmlwKCk7dmFyIHI7aWYodGhpcy5sZW5ndGg+MSlyPTE7ZWxzZXtlJiYodD0tdCksbih0PD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPTB8dGhpcy53b3Jkc1swXTtyPWk9PT10PzA6aTx0Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXI6cn0sby5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHQpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGU9dGhpcy51Y21wKHQpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lOmV9LG8ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+dC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj0wfHRoaXMud29yZHNbcl0saT0wfHQud29yZHNbcl07aWYobiE9PWkpe248aT9lPS0xOm4+aSYmKGU9MSk7YnJlYWt9fXJldHVybiBlfSxvLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10aGlzLmNtcG4odCl9LG8ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dGhpcy5jbXAodCl9LG8ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KT49MH0sby5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KT49MH0sby5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk9PT0tMX0sby5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPT09LTF9LG8ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KTw9MH0sby5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KTw9MH0sby5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5jbXBuKHQpfSxvLnByb3RvdHlwZS5lcT1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXRoaXMuY21wKHQpfSxvLnJlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG0odCl9LG8ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksbigwPT09dGhpcy5uZWdhdGl2ZSxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpLHQuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh0KX0sby5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dFwiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sby5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZD10LHRoaXN9LG8ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksdGhpcy5fZm9yY2VSZWQodCl9LG8ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc2hsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5tdWwodGhpcyx0KX0sby5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5pbXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LG8ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LG8ucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LG8ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCYmIXQucmVkLFwicmVkUG93KG5vcm1hbE51bSlcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsdCl9O3ZhciBBPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07bC5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksdH0sbC5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQ7ZG8gdGhpcy5zcGxpdChyLHRoaXMudG1wKSxyPXRoaXMuaW11bEsocikscj1yLmlhZGQodGhpcy50bXApLGU9ci5iaXRMZW5ndGgoKTt3aGlsZShlPnRoaXMubik7dmFyIG49ZTx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1uPyhyLndvcmRzWzBdPTAsci5sZW5ndGg9MSk6bj4wP3IuaXN1Yih0aGlzLnApOnIuc3RyaXAoKSxyfSxsLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe3QuaXVzaHJuKHRoaXMubiwwLGUpfSxsLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbXVsKHRoaXMuayl9LGkocCxsKSxwLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj00MTk0MzAzLG49TWF0aC5taW4odC5sZW5ndGgsOSksaT0wO2k8bjtpKyspZS53b3Jkc1tpXT10LndvcmRzW2ldO2lmKGUubGVuZ3RoPW4sdC5sZW5ndGg8PTkpcmV0dXJuIHQud29yZHNbMF09MCx2b2lkKHQubGVuZ3RoPTEpO3ZhciBvPXQud29yZHNbOV07Zm9yKGUud29yZHNbZS5sZW5ndGgrK109byZyLGk9MTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPTB8dC53b3Jkc1tpXTt0LndvcmRzW2ktMTBdPShhJnIpPDw0fG8+Pj4yMixvPWF9bz4+Pj0yMix0LndvcmRzW2ktMTBdPW8sMD09PW8mJnQubGVuZ3RoPjEwP3QubGVuZ3RoLT0xMDp0Lmxlbmd0aC09OX0scC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7dC53b3Jkc1t0Lmxlbmd0aF09MCx0LndvcmRzW3QubGVuZ3RoKzFdPTAsdC5sZW5ndGgrPTI7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0wfHQud29yZHNbcl07ZSs9OTc3Km4sdC53b3Jkc1tyXT02NzEwODg2MyZlLGU9NjQqbisoZS82NzEwODg2NHwwKX1yZXR1cm4gMD09PXQud29yZHNbdC5sZW5ndGgtMV0mJih0Lmxlbmd0aC0tLDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiZ0Lmxlbmd0aC0tKSx0fSxpKGIsbCksaSh2LGwpLGkoeSxsKSx5LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfHQud29yZHNbcl0pK2UsaT02NzEwODg2MyZuO24+Pj49MjYsdC53b3Jkc1tyXT1pLGU9bn1yZXR1cm4gMCE9PWUmJih0LndvcmRzW3QubGVuZ3RoKytdPWUpLHR9LG8uX3ByaW1lPWZ1bmN0aW9uIHQoZSl7aWYoQVtlXSlyZXR1cm4gQVtlXTt2YXIgdDtpZihcImsyNTZcIj09PWUpdD1uZXcgcDtlbHNlIGlmKFwicDIyNFwiPT09ZSl0PW5ldyBiO2Vsc2UgaWYoXCJwMTkyXCI9PT1lKXQ9bmV3IHY7ZWxzZXtpZihcInAyNTUxOVwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHByaW1lIFwiK2UpO3Q9bmV3IHl9cmV0dXJuIEFbZV09dCx0fSxtLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIiksbih0LnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9LG0ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHQsZSl7bigwPT09KHQubmVnYXRpdmV8ZS5uZWdhdGl2ZSksXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSxuKHQucmVkJiZ0LnJlZD09PWUucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX0sbS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UodCkuX2ZvcmNlUmVkKHRoaXMpOnQudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlzWmVybygpP3QuY2xvbmUoKTp0aGlzLm0uc3ViKHQpLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlhZGQoZSk7XG5yZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSkscn0sbS5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuc3ViKGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRkKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LG0ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5pc3ViKGUpO3JldHVybiByLmNtcG4oMCk8MCYmci5pYWRkKHRoaXMubSkscn0sbS5wcm90b3R5cGUuc2hsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTEodCksdGhpcy5pbW9kKHQudXNobG4oZSkpfSxtLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIodCxlKSx0aGlzLmltb2QodC5pbXVsKGUpKX0sbS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeTIodCxlKSx0aGlzLmltb2QodC5tdWwoZSkpfSxtLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmltdWwodCx0LmNsb25lKCkpfSxtLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubXVsKHQsdCl9LG0ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24odCl7aWYodC5pc1plcm8oKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciBlPXRoaXMubS5hbmRsbigzKTtpZihuKGUlMj09PTEpLDM9PT1lKXt2YXIgcj10aGlzLm0uYWRkKG5ldyBvKDEpKS5pdXNocm4oMik7cmV0dXJuIHRoaXMucG93KHQscil9Zm9yKHZhciBpPXRoaXMubS5zdWJuKDEpLGE9MDshaS5pc1plcm8oKSYmMD09PWkuYW5kbG4oMSk7KWErKyxpLml1c2hybigxKTtuKCFpLmlzWmVybygpKTt2YXIgZj1uZXcgbygxKS50b1JlZCh0aGlzKSxzPWYucmVkTmVnKCksdT10aGlzLm0uc3VibigxKS5pdXNocm4oMSksaD10aGlzLm0uYml0TGVuZ3RoKCk7Zm9yKGg9bmV3IG8oMipoKmgpLnRvUmVkKHRoaXMpOzAhPT10aGlzLnBvdyhoLHUpLmNtcChzKTspaC5yZWRJQWRkKHMpO2Zvcih2YXIgYz10aGlzLnBvdyhoLGkpLGQ9dGhpcy5wb3codCxpLmFkZG4oMSkuaXVzaHJuKDEpKSxsPXRoaXMucG93KHQsaSkscD1hOzAhPT1sLmNtcChmKTspe2Zvcih2YXIgYj1sLHY9MDswIT09Yi5jbXAoZik7disrKWI9Yi5yZWRTcXIoKTtuKHY8cCk7dmFyIHk9dGhpcy5wb3coYyxuZXcgbygxKS5pdXNobG4ocC12LTEpKTtkPWQucmVkTXVsKHkpLGM9eS5yZWRTcXIoKSxsPWwucmVkTXVsKGMpLHA9dn1yZXR1cm4gZH0sbS5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0KXt2YXIgZT10Ll9pbnZtcCh0aGlzLm0pO3JldHVybiAwIT09ZS5uZWdhdGl2ZT8oZS5uZWdhdGl2ZT0wLHRoaXMuaW1vZChlKS5yZWROZWcoKSk6dGhpcy5pbW9kKGUpfSxtLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odCxlKXtpZihlLmlzWmVybygpKXJldHVybiBuZXcgbygxKTtpZigwPT09ZS5jbXBuKDEpKXJldHVybiB0LmNsb25lKCk7dmFyIHI9NCxuPW5ldyBBcnJheSgxPDxyKTtuWzBdPW5ldyBvKDEpLnRvUmVkKHRoaXMpLG5bMV09dDtmb3IodmFyIGk9MjtpPG4ubGVuZ3RoO2krKyluW2ldPXRoaXMubXVsKG5baS0xXSx0KTt2YXIgYT1uWzBdLGY9MCxzPTAsdT1lLmJpdExlbmd0aCgpJTI2O2ZvcigwPT09dSYmKHU9MjYpLGk9ZS5sZW5ndGgtMTtpPj0wO2ktLSl7Zm9yKHZhciBoPWUud29yZHNbaV0sYz11LTE7Yz49MDtjLS0pe3ZhciBkPWg+PmMmMTthIT09blswXSYmKGE9dGhpcy5zcXIoYSkpLDAhPT1kfHwwIT09Zj8oZjw8PTEsZnw9ZCxzKyssKHM9PT1yfHwwPT09aSYmMD09PWMpJiYoYT10aGlzLm11bChhLG5bZl0pLHM9MCxmPTApKTpzPTB9dT0yNn1yZXR1cm4gYX0sbS5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHQpe3ZhciBlPXQudW1vZCh0aGlzLm0pO3JldHVybiBlPT09dD9lLmNsb25lKCk6ZX0sbS5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odCl7dmFyIGU9dC5jbG9uZSgpO3JldHVybiBlLnJlZD1udWxsLGV9LG8ubW9udD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGcodCl9LGkoZyxtKSxnLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW1vZCh0LnVzaGxuKHRoaXMuc2hpZnQpKX0sZy5wcm90b3R5cGUuY29udmVydEZyb209ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbW9kKHQubXVsKHRoaXMucmludikpO3JldHVybiBlLnJlZD1udWxsLGV9LGcucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVybygpfHxlLmlzWmVybygpKXJldHVybiB0LndvcmRzWzBdPTAsdC5sZW5ndGg9MSx0O3ZhciByPXQuaW11bChlKSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxvPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/bz1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKG89aS5pYWRkKHRoaXMubSkpLG8uX2ZvcmNlUmVkKHRoaXMpfSxnLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCxlKXtpZih0LmlzWmVybygpfHxlLmlzWmVybygpKXJldHVybiBuZXcgbygwKS5fZm9yY2VSZWQodGhpcyk7dmFyIHI9dC5tdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksYT1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP2E9aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihhPWkuaWFkZCh0aGlzLm0pKSxhLl9mb3JjZVJlZCh0aGlzKX0sZy5wcm90b3R5cGUuaW52bT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmltb2QodC5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO3JldHVybiBlLl9mb3JjZVJlZCh0aGlzKX19KFwidW5kZWZpbmVkXCI9PXR5cGVvZiB0fHx0LHRoaXMpfSkuY2FsbChlLHIoOTIpKHQpKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWU7bi52ZXJzaW9uPXIoNDY1KS52ZXJzaW9uLG4udXRpbHM9cig1MjEpLG4ucmFuZD1yKDUyMiksbi5obWFjRFJCRz1yKDUxOSksbi5jdXJ2ZT1yKDk5KSxuLmN1cnZlcz1yKDUxMiksbi5lYz1yKDUxMyksbi5lZGRzYT1yKDUxNil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDY2KSxpPXIoMzcpLG89cigxNyksYT1yKDI5KSxmPXIoMTIpLHM9cigxNzQpLHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtlLmY9cig4KT91OmZ1bmN0aW9uKHQsZSl7aWYodD1vKHQpLGU9YShlLCEwKSxzKXRyeXtyZXR1cm4gdSh0LGUpfWNhdGNoKHQpe31pZihmKHQsZSkpcmV0dXJuIGkoIW4uZi5jYWxsKHQsZSksdFtlXSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxMiksaT1yKDExKSxvPXIoMTMzKShcIklFX1BST1RPXCIpLGE9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9T2JqZWN0LmdldFByb3RvdHlwZU9mfHxmdW5jdGlvbih0KXtyZXR1cm4gdD1pKHQpLG4odCxvKT90W29dOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY29uc3RydWN0b3ImJnQgaW5zdGFuY2VvZiB0LmNvbnN0cnVjdG9yP3QuY29uc3RydWN0b3IucHJvdG90eXBlOnQgaW5zdGFuY2VvZiBPYmplY3Q/YTpudWxsfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWU7bi52ZXJzaW9uPXIoNDY3KS52ZXJzaW9uLG4udXRpbHM9cig1NTgpLG4ucmFuZD1yKDU1OSksbi5obWFjRFJCRz1yKDU1Niksbi5jdXJ2ZT1yKDEwNCksbi5jdXJ2ZXM9cig1NDkpLG4uZWM9cig1NTApLG4uZWRkc2E9cig1NTMpfSxmdW5jdGlvbih0LGUpe3ZhciByPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gci5jYWxsKHQpLnNsaWNlKDgsLTEpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10KXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIit0KTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiEhdCYmbihmdW5jdGlvbigpe2U/dC5jYWxsKG51bGwsZnVuY3Rpb24oKXt9LDEpOnQuY2FsbChudWxsKX0pfX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBuKCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGkodCl7aWYoaD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigoaD09PXJ8fCFoKSYmc2V0VGltZW91dClyZXR1cm4gaD1zZXRUaW1lb3V0LHNldFRpbWVvdXQodCwwKTt0cnl7cmV0dXJuIGgodCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIGguY2FsbChudWxsLHQsMCl9Y2F0Y2goZSl7cmV0dXJuIGguY2FsbCh0aGlzLHQsMCl9fX1mdW5jdGlvbiBvKHQpe2lmKGM9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigoYz09PW58fCFjKSYmY2xlYXJUaW1lb3V0KXJldHVybiBjPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3JldHVybiBjKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gYy5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIGMuY2FsbCh0aGlzLHQpfX19ZnVuY3Rpb24gYSgpe2ImJmwmJihiPSExLGwubGVuZ3RoP3A9bC5jb25jYXQocCk6dj0tMSxwLmxlbmd0aCYmZigpKX1mdW5jdGlvbiBmKCl7aWYoIWIpe3ZhciB0PWkoYSk7Yj0hMDtmb3IodmFyIGU9cC5sZW5ndGg7ZTspe2ZvcihsPXAscD1bXTsrK3Y8ZTspbCYmbFt2XS5ydW4oKTt2PS0xLGU9cC5sZW5ndGh9bD1udWxsLGI9ITEsbyh0KX19ZnVuY3Rpb24gcyh0LGUpe3RoaXMuZnVuPXQsdGhpcy5hcnJheT1lfWZ1bmN0aW9uIHUoKXt9dmFyIGgsYyxkPXQuZXhwb3J0cz17fTshZnVuY3Rpb24oKXt0cnl7aD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6cn1jYXRjaCh0KXtoPXJ9dHJ5e2M9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpufWNhdGNoKHQpe2M9bn19KCk7dmFyIGwscD1bXSxiPSExLHY9LTE7ZC5uZXh0VGljaz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyllW3ItMV09YXJndW1lbnRzW3JdO3AucHVzaChuZXcgcyh0LGUpKSwxIT09cC5sZW5ndGh8fGJ8fGkoZil9LHMucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LGQudGl0bGU9XCJicm93c2VyXCIsZC5icm93c2VyPSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNpb249XCJcIixkLnZlcnNpb25zPXt9LGQub249dSxkLmFkZExpc3RlbmVyPXUsZC5vbmNlPXUsZC5vZmY9dSxkLnJlbW92ZUxpc3RlbmVyPXUsZC5yZW1vdmVBbGxMaXN0ZW5lcnM9dSxkLmVtaXQ9dSxkLmJpbmRpbmc9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LGQuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LGQuY2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxkLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzMyksaT1yKDY1KSxvPXIoMTEpLGE9cigxMCksZj1yKDI4Myk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MT09dCxzPTI9PXQsdT0zPT10LGg9ND09dCxjPTY9PXQsZD01PT10fHxjLGw9ZXx8ZjtyZXR1cm4gZnVuY3Rpb24oZSxmLHApe2Zvcih2YXIgYix2LHk9byhlKSxtPWkoeSksZz1uKGYscCwzKSx3PWEobS5sZW5ndGgpLF89MCxNPXI/bChlLHcpOnM/bChlLDApOnZvaWQgMDt3Pl87XysrKWlmKChkfHxfIGluIG0pJiYoYj1tW19dLHY9ZyhiLF8seSksdCkpaWYocilNW19dPXY7ZWxzZSBpZih2KXN3aXRjaCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBiO2Nhc2UgNjpyZXR1cm4gXztjYXNlIDI6TS5wdXNoKGIpfWVsc2UgaWYoaClyZXR1cm4hMTtyZXR1cm4gYz8tMTp1fHxoP2g6TX19fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMzIpLG89cig1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj0oaS5PYmplY3R8fHt9KVt0XXx8T2JqZWN0W3RdLGE9e307YVt0XT1lKHIpLG4obi5TK24uRipvKGZ1bmN0aW9uKCl7cigxKX0pLFwiT2JqZWN0XCIsYSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighbih0KSlyZXR1cm4gdDt2YXIgcixpO2lmKGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZighZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwodCkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gaSh0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIG8uaXNCTih0KT90Oih0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCx2b2lkKG51bGwhPT10JiYoXCJsZVwiIT09ZSYmXCJiZVwiIT09ZXx8KHI9ZSxlPTEwKSx0aGlzLl9pbml0KHR8fDAsZXx8MTAscnx8XCJiZVwiKSkpKX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKHQubGVuZ3RoLHIpLG89ZTtvPGk7bysrKXt2YXIgYT10LmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiBmKHQsZSxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4odC5sZW5ndGgsciksYT1lO2E8bzthKyspe3ZhciBmPXQuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPWY+PTQ5P2YtNDkrMTA6Zj49MTc/Zi0xNysxMDpmfXJldHVybiBpfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0LmJpdExlbmd0aCgpKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXIvMjZ8MCxpPXIlMjY7ZVtyXT0odC53b3Jkc1tuXSYxPDxpKT4+Pml9cmV0dXJuIGV9ZnVuY3Rpb24gdSh0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7dmFyIG49dC5sZW5ndGgrZS5sZW5ndGh8MDtyLmxlbmd0aD1uLG49bi0xfDA7dmFyIGk9MHx0LndvcmRzWzBdLG89MHxlLndvcmRzWzBdLGE9aSpvLGY9NjcxMDg4NjMmYSxzPWEvNjcxMDg4NjR8MDtyLndvcmRzWzBdPWY7Zm9yKHZhciB1PTE7dTxuO3UrKyl7Zm9yKHZhciBoPXM+Pj4yNixjPTY3MTA4ODYzJnMsZD1NYXRoLm1pbih1LGUubGVuZ3RoLTEpLGw9TWF0aC5tYXgoMCx1LXQubGVuZ3RoKzEpO2w8PWQ7bCsrKXt2YXIgcD11LWx8MDtpPTB8dC53b3Jkc1twXSxvPTB8ZS53b3Jkc1tsXSxhPWkqbytjLGgrPWEvNjcxMDg4NjR8MCxjPTY3MTA4ODYzJmF9ci53b3Jkc1t1XT0wfGMscz0wfGh9cmV0dXJuIDAhPT1zP3Iud29yZHNbdV09MHxzOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGgodCxlLHIpe3IubmVnYXRpdmU9ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlLHIubGVuZ3RoPXQubGVuZ3RoK2UubGVuZ3RoO2Zvcih2YXIgbj0wLGk9MCxvPTA7bzxyLmxlbmd0aC0xO28rKyl7dmFyIGE9aTtpPTA7Zm9yKHZhciBmPTY3MTA4ODYzJm4scz1NYXRoLm1pbihvLGUubGVuZ3RoLTEpLHU9TWF0aC5tYXgoMCxvLXQubGVuZ3RoKzEpO3U8PXM7dSsrKXt2YXIgaD1vLXUsYz0wfHQud29yZHNbaF0sZD0wfGUud29yZHNbdV0sbD1jKmQscD02NzEwODg2MyZsO2E9YSsobC82NzEwODg2NHwwKXwwLHA9cCtmfDAsZj02NzEwODg2MyZwLGE9YSsocD4+PjI2KXwwLGkrPWE+Pj4yNixhJj02NzEwODg2M31yLndvcmRzW29dPWYsbj1hLGE9aX1yZXR1cm4gMCE9PW4/ci53b3Jkc1tvXT1uOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGModCxlLHIpe3ZhciBuPW5ldyBkO3JldHVybiBuLm11bHAodCxlLHIpfWZ1bmN0aW9uIGQodCxlKXt0aGlzLng9dCx0aGlzLnk9ZX1mdW5jdGlvbiBsKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5wPW5ldyBvKGUsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBvKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBwKCl7bC5jYWxsKHRoaXMsXCJrMjU2XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZlwiKX1mdW5jdGlvbiBiKCl7bC5jYWxsKHRoaXMsXCJwMjI0XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiKX1mdW5jdGlvbiB2KCl7bC5jYWxsKHRoaXMsXCJwMTkyXCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiKX1mdW5jdGlvbiB5KCl7bC5jYWxsKHRoaXMsXCIyNTUxOVwiLFwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiKX1mdW5jdGlvbiBtKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT1vLl9wcmltZSh0KTt0aGlzLm09ZS5wLHRoaXMucHJpbWU9ZX1lbHNlIG4odC5ndG4oMSksXCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDFcIiksdGhpcy5tPXQsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGcodCl7bS5jYWxsKHRoaXMsdCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9PTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IG8oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9XCJvYmplY3RcIj09dHlwZW9mIHQ/dC5leHBvcnRzPW86ZS5CTj1vLG8uQk49byxvLndvcmRTaXplPTI2O3ZhciB3O3RyeXt3PXIoMSkuQnVmZmVyfWNhdGNoKHQpe31vLmlzQk49ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBvfHxudWxsIT09dCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3Iud29yZFNpemU9PT1vLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHQud29yZHMpfSxvLm1heD1mdW5jdGlvbih0LGUpe3JldHVybiB0LmNtcChlKT4wP3Q6ZX0sby5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbXAoZSk8MD90OmV9LG8ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih0LGUscik7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh0LGUscik7XCJoZXhcIj09PWUmJihlPTE2KSxuKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpLHQ9dC50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZyxcIlwiKTt2YXIgaT0wO1wiLVwiPT09dFswXSYmaSsrLDE2PT09ZT90aGlzLl9wYXJzZUhleCh0LGkpOnRoaXMuX3BhcnNlQmFzZSh0LGUsaSksXCItXCI9PT10WzBdJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCksXCJsZVwiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGUscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHQsZSxyKXt0PDAmJih0aGlzLm5lZ2F0aXZlPTEsdD0tdCksdDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmdF0sdGhpcy5sZW5ndGg9MSk6dDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKHQ8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmdCx0LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLFwibGVcIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLHIpfSxvLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxyKXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aCksdC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwodC5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLGY9MDtpZihcImJlXCI9PT1yKWZvcihpPXQubGVuZ3RoLTEsbz0wO2k+PTA7aS09MylhPXRbaV18dFtpLTFdPDw4fHRbaS0yXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8ZiY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LWYmNjcxMDg4NjMsZis9MjQsZj49MjYmJihmLT0yNixvKyspO2Vsc2UgaWYoXCJsZVwiPT09cilmb3IoaT0wLG89MDtpPHQubGVuZ3RoO2krPTMpYT10W2ldfHRbaSsxXTw8OHx0W2krMl08PDE2LHRoaXMud29yZHNbb118PWE8PGYmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1mJjY3MTA4ODYzLGYrPTI0LGY+PTI2JiYoZi09MjYsbysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24odCxlKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHQubGVuZ3RoLWUpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPTA7dmFyIG4saSxvPTA7Zm9yKHI9dC5sZW5ndGgtNixuPTA7cj49ZTtyLT02KWk9YSh0LHIscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyxvKz0yNCxvPj0yNiYmKG8tPTI2LG4rKyk7cis2IT09ZSYmKGk9YSh0LGUscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGk9MTtpPD02NzEwODg2MztpKj1lKW4rKztuLS0saT1pL2V8MDtmb3IodmFyIG89dC5sZW5ndGgtcixhPW8lbixzPU1hdGgubWluKG8sby1hKStyLHU9MCxoPXI7aDxzO2grPW4pdT1mKHQsaCxoK24sZSksdGhpcy5pbXVsbihpKSx0aGlzLndvcmRzWzBdK3U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9dTp0aGlzLl9pYWRkbih1KTtpZigwIT09YSl7dmFyIGM9MTtmb3IodT1mKHQsaCx0Lmxlbmd0aCxlKSxoPTA7aDxhO2grKyljKj1lO3RoaXMuaW11bG4oYyksdGhpcy53b3Jkc1swXSt1PDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXU6dGhpcy5faWFkZG4odSl9fSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl0LndvcmRzW2VdPXRoaXMud29yZHNbZV07dC5sZW5ndGg9dGhpcy5sZW5ndGgsdC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHQucmVkPXRoaXMucmVkfSxvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0aGlzLmNvcHkodCksdH0sby5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih0KXtmb3IoO3RoaXMubGVuZ3RoPHQ7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxvLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifTt2YXIgXz1bXCJcIixcIjBcIixcIjAwXCIsXCIwMDBcIixcIjAwMDBcIixcIjAwMDAwXCIsXCIwMDAwMDBcIixcIjAwMDAwMDBcIixcIjAwMDAwMDAwXCIsXCIwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl0sTT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxTPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO28ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHQsZSl7dD10fHwxMCxlPTB8ZXx8MTt2YXIgcjtpZigxNj09PXR8fFwiaGV4XCI9PT10KXtyPVwiXCI7Zm9yKHZhciBpPTAsbz0wLGE9MDthPHRoaXMubGVuZ3RoO2ErKyl7dmFyIGY9dGhpcy53b3Jkc1thXSxzPSgxNjc3NzIxNSYoZjw8aXxvKSkudG9TdHJpbmcoMTYpO289Zj4+PjI0LWkmMTY3NzcyMTUscj0wIT09b3x8YSE9PXRoaXMubGVuZ3RoLTE/X1s2LXMubGVuZ3RoXStzK3I6cytyLGkrPTIsaT49MjYmJihpLT0yNixhLS0pfWZvcigwIT09byYmKHI9by50b1N0cmluZygxNikrcik7ci5sZW5ndGglZSE9PTA7KXI9XCIwXCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPVwiLVwiK3IpLHJ9aWYodD09PSgwfHQpJiZ0Pj0yJiZ0PD0zNil7dmFyIHU9TVt0XSxoPVNbdF07cj1cIlwiO3ZhciBjPXRoaXMuY2xvbmUoKTtmb3IoYy5uZWdhdGl2ZT0wOyFjLmlzWmVybygpOyl7dmFyIGQ9Yy5tb2RuKGgpLnRvU3RyaW5nKHQpO2M9Yy5pZGl2bihoKSxyPWMuaXNaZXJvKCk/ZCtyOl9bdS1kLmxlbmd0aF0rZCtyfWZvcih0aGlzLmlzWmVybygpJiYocj1cIjBcIityKTtyLmxlbmd0aCVlIT09MDspcj1cIjBcIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9XCItXCIrcikscn1uKCExLFwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNlwiKX0sby5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/dCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3QrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZuKCExLFwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzXCIpLDAhPT10aGlzLm5lZ2F0aXZlPy10OnR9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihcInVuZGVmaW5lZFwiIT10eXBlb2YgdyksdGhpcy50b0FycmF5TGlrZSh3LHQsZSl9LG8ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx0LGUpfSxvLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5ieXRlTGVuZ3RoKCksbz1yfHxNYXRoLm1heCgxLGkpO24oaTw9byxcImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGhcIiksbihvPjAsXCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDBcIiksdGhpcy5zdHJpcCgpO3ZhciBhLGYscz1cImxlXCI9PT1lLHU9bmV3IHQobyksaD10aGlzLmNsb25lKCk7aWYocyl7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksaC5pdXNocm4oOCksdVtmXT1hO2Zvcig7ZjxvO2YrKyl1W2ZdPTB9ZWxzZXtmb3IoZj0wO2Y8by1pO2YrKyl1W2ZdPTA7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksaC5pdXNocm4oOCksdVtvLWYtMV09YX1yZXR1cm4gdX0sTWF0aC5jbHozMj9vLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3JldHVybiAzMi1NYXRoLmNsejMyKHQpfTpvLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQscj0wO3JldHVybiBlPj00MDk2JiYocis9MTMsZT4+Pj0xMyksZT49NjQmJihyKz03LGU+Pj49NyksZT49OCYmKHIrPTQsZT4+Pj00KSxlPj0yJiYocis9MixlPj4+PTIpLHIrZX0sby5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHQpe2lmKDA9PT10KXJldHVybiAyNjt2YXIgZT10LHI9MDtyZXR1cm4gMD09PSg4MTkxJmUpJiYocis9MTMsZT4+Pj0xMyksMD09PSgxMjcmZSkmJihyKz03LGU+Pj49NyksMD09PSgxNSZlKSYmKHIrPTQsZT4+Pj00KSwwPT09KDMmZSkmJihyKz0yLGU+Pj49MiksMD09PSgxJmUpJiZyKysscn0sby5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSxlPXRoaXMuX2NvdW50Qml0cyh0KTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK2V9LG8ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHQ9MCxlPTA7ZTx0aGlzLmxlbmd0aDtlKyspe3ZhciByPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbZV0pO2lmKHQrPXIsMjYhPT1yKWJyZWFrfXJldHVybiB0fSxvLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxvLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4odCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxvLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50ZXN0bih0LTEpP3RoaXMubm90bih0KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxvLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sby5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LG8ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LG8ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24odCl7Zm9yKDt0aGlzLmxlbmd0aDx0Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMud29yZHNbZV09dGhpcy53b3Jkc1tlXXx0LndvcmRzW2VdO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlvcj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih0KX0sby5wcm90b3R5cGUub3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IodCk6dC5jbG9uZSgpLmlvcih0aGlzKX0sby5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih0KTp0LmNsb25lKCkuaXVvcih0aGlzKX0sby5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24odCl7dmFyIGU7ZT10aGlzLmxlbmd0aD50Lmxlbmd0aD90OnRoaXM7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJnQud29yZHNbcl07cmV0dXJuIHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQodCl9LG8ucHJvdG90eXBlLmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQodCk6dC5jbG9uZSgpLmlhbmQodGhpcyl9LG8ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh0KTp0LmNsb25lKCkuaXVhbmQodGhpcyl9LG8ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHI7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KGU9dGhpcyxyPXQpOihlPXQscj10aGlzKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0aGlzLndvcmRzW25dPWUud29yZHNbbl1eci53b3Jkc1tuXTtpZih0aGlzIT09ZSlmb3IoO248ZS5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tuXTtyZXR1cm4gdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih0KX0sby5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih0KTp0LmNsb25lKCkuaXhvcih0aGlzKX0sby5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHQpOnQuY2xvbmUoKS5pdXhvcih0aGlzKX0sby5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIGU9MHxNYXRoLmNlaWwodC8yNikscj10JTI2O3RoaXMuX2V4cGFuZChlKSxyPjAmJmUtLTtmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMud29yZHNbaV09NjcxMDg4NjMmfnRoaXMud29yZHNbaV07cmV0dXJuIHI+MCYmKHRoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjM+PjI2LXIpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUubm90bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHQpfSxvLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHQsZSl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIHI9dC8yNnwwLGk9dCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksZT90aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl18MTw8aTp0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mfigxPDxpKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24odCl7dmFyIGU7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsZT10aGlzLmlzdWIodCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZSlyZXR1cm4gdC5uZWdhdGl2ZT0wLGU9dGhpcy5pc3ViKHQpLHQubmVnYXRpdmU9MSxlLl9ub3JtU2lnbigpO3ZhciByLG47dGhpcy5sZW5ndGg+dC5sZW5ndGg/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3IodmFyIGk9MCxvPTA7bzxuLmxlbmd0aDtvKyspZT0oMHxyLndvcmRzW29dKSsoMHxuLndvcmRzW29dKStpLHRoaXMud29yZHNbb109NjcxMDg4NjMmZSxpPWU+Pj4yNjtmb3IoOzAhPT1pJiZvPHIubGVuZ3RoO28rKyllPSgwfHIud29yZHNbb10pK2ksdGhpcy53b3Jkc1tvXT02NzEwODg2MyZlLGk9ZT4+PjI2O2lmKHRoaXMubGVuZ3RoPXIubGVuZ3RoLDAhPT1pKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWksdGhpcy5sZW5ndGgrKztlbHNlIGlmKHIhPT10aGlzKWZvcig7bzxyLmxlbmd0aDtvKyspdGhpcy53b3Jkc1tvXT1yLndvcmRzW29dO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8odC5uZWdhdGl2ZT0wLGU9dGhpcy5zdWIodCksdC5uZWdhdGl2ZV49MSxlKTowPT09dC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxlPXQuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxlKTp0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh0KTp0LmNsb25lKCkuaWFkZCh0aGlzKX0sby5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0KXtpZigwIT09dC5uZWdhdGl2ZSl7dC5uZWdhdGl2ZT0wO3ZhciBlPXRoaXMuaWFkZCh0KTtyZXR1cm4gdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQodCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIHI9dGhpcy5jbXAodCk7aWYoMD09PXIpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO3ZhciBuLGk7cj4wPyhuPXRoaXMsaT10KToobj10LGk9dGhpcyk7Zm9yKHZhciBvPTAsYT0wO2E8aS5sZW5ndGg7YSsrKWU9KDB8bi53b3Jkc1thXSktKDB8aS53b3Jkc1thXSkrbyxvPWU+PjI2LHRoaXMud29yZHNbYV09NjcxMDg4NjMmZTtmb3IoOzAhPT1vJiZhPG4ubGVuZ3RoO2ErKyllPSgwfG4ud29yZHNbYV0pK28sbz1lPj4yNix0aGlzLndvcmRzW2FdPTY3MTA4ODYzJmU7aWYoMD09PW8mJmE8bi5sZW5ndGgmJm4hPT10aGlzKWZvcig7YTxuLmxlbmd0aDthKyspdGhpcy53b3Jkc1thXT1uLndvcmRzW2FdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxhKSxuIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHQpfTt2YXIgRT1mdW5jdGlvbih0LGUscil7dmFyIG4saSxvLGE9dC53b3JkcyxmPWUud29yZHMscz1yLndvcmRzLHU9MCxoPTB8YVswXSxjPTgxOTEmaCxkPWg+Pj4xMyxsPTB8YVsxXSxwPTgxOTEmbCxiPWw+Pj4xMyx2PTB8YVsyXSx5PTgxOTEmdixtPXY+Pj4xMyxnPTB8YVszXSx3PTgxOTEmZyxfPWc+Pj4xMyxNPTB8YVs0XSxTPTgxOTEmTSxFPU0+Pj4xMyxBPTB8YVs1XSxrPTgxOTEmQSx4PUE+Pj4xMyxJPTB8YVs2XSxCPTgxOTEmSSxPPUk+Pj4xMyxSPTB8YVs3XSxQPTgxOTEmUixUPVI+Pj4xMyxqPTB8YVs4XSxDPTgxOTEmaixOPWo+Pj4xMyxMPTB8YVs5XSxVPTgxOTEmTCx6PUw+Pj4xMyxEPTB8ZlswXSxxPTgxOTEmRCxGPUQ+Pj4xMyxLPTB8ZlsxXSxHPTgxOTEmSyxWPUs+Pj4xMyxIPTB8ZlsyXSxYPTgxOTEmSCxZPUg+Pj4xMyxXPTB8ZlszXSxaPTgxOTEmVyxKPVc+Pj4xMywkPTB8Zls0XSxRPTgxOTEmJCx0dD0kPj4+MTMsZXQ9MHxmWzVdLHJ0PTgxOTEmZXQsbnQ9ZXQ+Pj4xMyxpdD0wfGZbNl0sb3Q9ODE5MSZpdCxhdD1pdD4+PjEzLGZ0PTB8Zls3XSxzdD04MTkxJmZ0LHV0PWZ0Pj4+MTMsaHQ9MHxmWzhdLGN0PTgxOTEmaHQsZHQ9aHQ+Pj4xMyxsdD0wfGZbOV0scHQ9ODE5MSZsdCxidD1sdD4+PjEzO3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPTE5LG49TWF0aC5pbXVsKGMscSksaT1NYXRoLmltdWwoYyxGKSxpPWkrTWF0aC5pbXVsKGQscSl8MCxvPU1hdGguaW11bChkLEYpO3ZhciB2dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsodnQ+Pj4yNil8MCx2dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwocCxxKSxpPU1hdGguaW11bChwLEYpLGk9aStNYXRoLmltdWwoYixxKXwwLG89TWF0aC5pbXVsKGIsRiksbj1uK01hdGguaW11bChjLEcpfDAsaT1pK01hdGguaW11bChjLFYpfDAsaT1pK01hdGguaW11bChkLEcpfDAsbz1vK01hdGguaW11bChkLFYpfDA7dmFyIHl0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyh5dD4+PjI2KXwwLHl0Jj02NzEwODg2MyxuPU1hdGguaW11bCh5LHEpLGk9TWF0aC5pbXVsKHksRiksaT1pK01hdGguaW11bChtLHEpfDAsbz1NYXRoLmltdWwobSxGKSxuPW4rTWF0aC5pbXVsKHAsRyl8MCxpPWkrTWF0aC5pbXVsKHAsVil8MCxpPWkrTWF0aC5pbXVsKGIsRyl8MCxvPW8rTWF0aC5pbXVsKGIsVil8MCxuPW4rTWF0aC5pbXVsKGMsWCl8MCxpPWkrTWF0aC5pbXVsKGMsWSl8MCxpPWkrTWF0aC5pbXVsKGQsWCl8MCxvPW8rTWF0aC5pbXVsKGQsWSl8MDt2YXIgbXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKG10Pj4+MjYpfDAsbXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHcscSksaT1NYXRoLmltdWwodyxGKSxpPWkrTWF0aC5pbXVsKF8scSl8MCxvPU1hdGguaW11bChfLEYpLG49bitNYXRoLmltdWwoeSxHKXwwLGk9aStNYXRoLmltdWwoeSxWKXwwLGk9aStNYXRoLmltdWwobSxHKXwwLG89bytNYXRoLmltdWwobSxWKXwwLG49bitNYXRoLmltdWwocCxYKXwwLGk9aStNYXRoLmltdWwocCxZKXwwLGk9aStNYXRoLmltdWwoYixYKXwwLG89bytNYXRoLmltdWwoYixZKXwwLG49bitNYXRoLmltdWwoYyxaKXwwLGk9aStNYXRoLmltdWwoYyxKKXwwLGk9aStNYXRoLmltdWwoZCxaKXwwLG89bytNYXRoLmltdWwoZCxKKXwwO3ZhciBndD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoZ3Q+Pj4yNil8MCxndCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoUyxxKSxpPU1hdGguaW11bChTLEYpLGk9aStNYXRoLmltdWwoRSxxKXwwLG89TWF0aC5pbXVsKEUsRiksbj1uK01hdGguaW11bCh3LEcpfDAsaT1pK01hdGguaW11bCh3LFYpfDAsaT1pK01hdGguaW11bChfLEcpfDAsbz1vK01hdGguaW11bChfLFYpfDAsbj1uK01hdGguaW11bCh5LFgpfDAsaT1pK01hdGguaW11bCh5LFkpfDAsaT1pK01hdGguaW11bChtLFgpfDAsbz1vK01hdGguaW11bChtLFkpfDAsbj1uK01hdGguaW11bChwLFopfDAsaT1pK01hdGguaW11bChwLEopfDAsaT1pK01hdGguaW11bChiLFopfDAsbz1vK01hdGguaW11bChiLEopfDAsbj1uK01hdGguaW11bChjLFEpfDAsaT1pK01hdGguaW11bChjLHR0KXwwLGk9aStNYXRoLmltdWwoZCxRKXwwLG89bytNYXRoLmltdWwoZCx0dCl8MDt2YXIgd3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKHd0Pj4+MjYpfDAsd3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKGsscSksaT1NYXRoLmltdWwoayxGKSxpPWkrTWF0aC5pbXVsKHgscSl8MCxvPU1hdGguaW11bCh4LEYpLG49bitNYXRoLmltdWwoUyxHKXwwLGk9aStNYXRoLmltdWwoUyxWKXwwLGk9aStNYXRoLmltdWwoRSxHKXwwLG89bytNYXRoLmltdWwoRSxWKXwwLG49bitNYXRoLmltdWwodyxYKXwwLGk9aStNYXRoLmltdWwodyxZKXwwLGk9aStNYXRoLmltdWwoXyxYKXwwLG89bytNYXRoLmltdWwoXyxZKXwwLG49bitNYXRoLmltdWwoeSxaKXwwLGk9aStNYXRoLmltdWwoeSxKKXwwLGk9aStNYXRoLmltdWwobSxaKXwwLG89bytNYXRoLmltdWwobSxKKXwwLG49bitNYXRoLmltdWwocCxRKXwwLGk9aStNYXRoLmltdWwocCx0dCl8MCxpPWkrTWF0aC5pbXVsKGIsUSl8MCxvPW8rTWF0aC5pbXVsKGIsdHQpfDAsbj1uK01hdGguaW11bChjLHJ0KXwwLGk9aStNYXRoLmltdWwoYyxudCl8MCxpPWkrTWF0aC5pbXVsKGQscnQpfDAsbz1vK01hdGguaW11bChkLG50KXwwO3ZhciBfdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoX3Q+Pj4yNil8MCxfdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixxKSxpPU1hdGguaW11bChCLEYpLGk9aStNYXRoLmltdWwoTyxxKXwwLG89TWF0aC5pbXVsKE8sRiksbj1uK01hdGguaW11bChrLEcpfDAsaT1pK01hdGguaW11bChrLFYpfDAsaT1pK01hdGguaW11bCh4LEcpfDAsbz1vK01hdGguaW11bCh4LFYpfDAsbj1uK01hdGguaW11bChTLFgpfDAsaT1pK01hdGguaW11bChTLFkpfDAsaT1pK01hdGguaW11bChFLFgpfDAsbz1vK01hdGguaW11bChFLFkpfDAsbj1uK01hdGguaW11bCh3LFopfDAsaT1pK01hdGguaW11bCh3LEopfDAsaT1pK01hdGguaW11bChfLFopfDAsbz1vK01hdGguaW11bChfLEopfDAsbj1uK01hdGguaW11bCh5LFEpfDAsaT1pK01hdGguaW11bCh5LHR0KXwwLGk9aStNYXRoLmltdWwobSxRKXwwLG89bytNYXRoLmltdWwobSx0dCl8MCxuPW4rTWF0aC5pbXVsKHAscnQpfDAsaT1pK01hdGguaW11bChwLG50KXwwLGk9aStNYXRoLmltdWwoYixydCl8MCxvPW8rTWF0aC5pbXVsKGIsbnQpfDAsbj1uK01hdGguaW11bChjLG90KXwwLGk9aStNYXRoLmltdWwoYyxhdCl8MCxpPWkrTWF0aC5pbXVsKGQsb3QpfDAsbz1vK01hdGguaW11bChkLGF0KXwwO3ZhciBNdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoTXQ+Pj4yNil8MCxNdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoUCxxKSxpPU1hdGguaW11bChQLEYpLGk9aStNYXRoLmltdWwoVCxxKXwwLG89TWF0aC5pbXVsKFQsRiksbj1uK01hdGguaW11bChCLEcpfDAsaT1pK01hdGguaW11bChCLFYpfDAsaT1pK01hdGguaW11bChPLEcpfDAsbz1vK01hdGguaW11bChPLFYpfDAsbj1uK01hdGguaW11bChrLFgpfDAsaT1pK01hdGguaW11bChrLFkpfDAsaT1pK01hdGguaW11bCh4LFgpfDAsbz1vK01hdGguaW11bCh4LFkpfDAsbj1uK01hdGguaW11bChTLFopfDAsaT1pK01hdGguaW11bChTLEopfDAsaT1pK01hdGguaW11bChFLFopfDAsbz1vK01hdGguaW11bChFLEopfDAsbj1uK01hdGguaW11bCh3LFEpfDAsaT1pK01hdGguaW11bCh3LHR0KXwwLGk9aStNYXRoLmltdWwoXyxRKXwwLG89bytNYXRoLmltdWwoXyx0dCl8MCxuPW4rTWF0aC5pbXVsKHkscnQpfDAsaT1pK01hdGguaW11bCh5LG50KXwwLGk9aStNYXRoLmltdWwobSxydCl8MCxvPW8rTWF0aC5pbXVsKG0sbnQpfDAsbj1uK01hdGguaW11bChwLG90KXwwLGk9aStNYXRoLmltdWwocCxhdCl8MCxpPWkrTWF0aC5pbXVsKGIsb3QpfDAsbz1vK01hdGguaW11bChiLGF0KXwwLG49bitNYXRoLmltdWwoYyxzdCl8MCxpPWkrTWF0aC5pbXVsKGMsdXQpfDAsaT1pK01hdGguaW11bChkLHN0KXwwLG89bytNYXRoLmltdWwoZCx1dCl8MDt2YXIgU3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFN0Pj4+MjYpfDAsU3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEMscSksaT1NYXRoLmltdWwoQyxGKSxpPWkrTWF0aC5pbXVsKE4scSl8MCxvPU1hdGguaW11bChOLEYpLG49bitNYXRoLmltdWwoUCxHKXwwLGk9aStNYXRoLmltdWwoUCxWKXwwLGk9aStNYXRoLmltdWwoVCxHKXwwLG89bytNYXRoLmltdWwoVCxWKXwwLG49bitNYXRoLmltdWwoQixYKXwwLGk9aStNYXRoLmltdWwoQixZKXwwLGk9aStNYXRoLmltdWwoTyxYKXwwLG89bytNYXRoLmltdWwoTyxZKXwwLG49bitNYXRoLmltdWwoayxaKXwwLGk9aStNYXRoLmltdWwoayxKKXwwLGk9aStNYXRoLmltdWwoeCxaKXwwLG89bytNYXRoLmltdWwoeCxKKXwwLG49bitNYXRoLmltdWwoUyxRKXwwLGk9aStNYXRoLmltdWwoUyx0dCl8MCxpPWkrTWF0aC5pbXVsKEUsUSl8MCxvPW8rTWF0aC5pbXVsKEUsdHQpfDAsbj1uK01hdGguaW11bCh3LHJ0KXwwLGk9aStNYXRoLmltdWwodyxudCl8MCxpPWkrTWF0aC5pbXVsKF8scnQpfDAsbz1vK01hdGguaW11bChfLG50KXwwLG49bitNYXRoLmltdWwoeSxvdCl8MCxpPWkrTWF0aC5pbXVsKHksYXQpfDAsaT1pK01hdGguaW11bChtLG90KXwwLG89bytNYXRoLmltdWwobSxhdCl8MCxuPW4rTWF0aC5pbXVsKHAsc3QpfDAsaT1pK01hdGguaW11bChwLHV0KXwwLGk9aStNYXRoLmltdWwoYixzdCl8MCxvPW8rTWF0aC5pbXVsKGIsdXQpfDAsbj1uK01hdGguaW11bChjLGN0KXwwLGk9aStNYXRoLmltdWwoYyxkdCl8MCxpPWkrTWF0aC5pbXVsKGQsY3QpfDAsbz1vK01hdGguaW11bChkLGR0KXwwO3ZhciBFdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoRXQ+Pj4yNil8MCxFdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxxKSxpPU1hdGguaW11bChVLEYpLGk9aStNYXRoLmltdWwoeixxKXwwLG89TWF0aC5pbXVsKHosRiksbj1uK01hdGguaW11bChDLEcpfDAsaT1pK01hdGguaW11bChDLFYpfDAsaT1pK01hdGguaW11bChOLEcpfDAsbz1vK01hdGguaW11bChOLFYpfDAsbj1uK01hdGguaW11bChQLFgpfDAsaT1pK01hdGguaW11bChQLFkpfDAsaT1pK01hdGguaW11bChULFgpfDAsbz1vK01hdGguaW11bChULFkpfDAsbj1uK01hdGguaW11bChCLFopfDAsaT1pK01hdGguaW11bChCLEopfDAsaT1pK01hdGguaW11bChPLFopfDAsbz1vK01hdGguaW11bChPLEopfDAsbj1uK01hdGguaW11bChrLFEpfDAsaT1pK01hdGguaW11bChrLHR0KXwwLGk9aStNYXRoLmltdWwoeCxRKXwwLG89bytNYXRoLmltdWwoeCx0dCl8MCxuPW4rTWF0aC5pbXVsKFMscnQpfDAsaT1pK01hdGguaW11bChTLG50KXwwLGk9aStNYXRoLmltdWwoRSxydCl8MCxvPW8rTWF0aC5pbXVsKEUsbnQpfDAsbj1uK01hdGguaW11bCh3LG90KXwwLGk9aStNYXRoLmltdWwodyxhdCl8MCxpPWkrTWF0aC5pbXVsKF8sb3QpfDAsbz1vK01hdGguaW11bChfLGF0KXwwLG49bitNYXRoLmltdWwoeSxzdCl8MCxpPWkrTWF0aC5pbXVsKHksdXQpfDAsaT1pK01hdGguaW11bChtLHN0KXwwLG89bytNYXRoLmltdWwobSx1dCl8MCxuPW4rTWF0aC5pbXVsKHAsY3QpfDAsaT1pK01hdGguaW11bChwLGR0KXwwLGk9aStNYXRoLmltdWwoYixjdCl8MCxvPW8rTWF0aC5pbXVsKGIsZHQpfDAsbj1uK01hdGguaW11bChjLHB0KXwwLGk9aStNYXRoLmltdWwoYyxidCl8MCxpPWkrTWF0aC5pbXVsKGQscHQpfDAsbz1vK01hdGguaW11bChkLGJ0KXwwO3ZhciBBdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoQXQ+Pj4yNil8MCxBdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxHKSxpPU1hdGguaW11bChVLFYpLGk9aStNYXRoLmltdWwoeixHKXwwLG89TWF0aC5pbXVsKHosViksbj1uK01hdGguaW11bChDLFgpfDAsaT1pK01hdGguaW11bChDLFkpfDAsaT1pK01hdGguaW11bChOLFgpfDAsbz1vK01hdGguaW11bChOLFkpfDAsbj1uK01hdGguaW11bChQLFopfDAsaT1pK01hdGguaW11bChQLEopfDAsaT1pK01hdGguaW11bChULFopfDAsbz1vK01hdGguaW11bChULEopfDAsbj1uK01hdGguaW11bChCLFEpfDAsaT1pK01hdGguaW11bChCLHR0KXwwLGk9aStNYXRoLmltdWwoTyxRKXwwLG89bytNYXRoLmltdWwoTyx0dCl8MCxuPW4rTWF0aC5pbXVsKGsscnQpfDAsaT1pK01hdGguaW11bChrLG50KXwwLGk9aStNYXRoLmltdWwoeCxydCl8MCxvPW8rTWF0aC5pbXVsKHgsbnQpfDAsbj1uK01hdGguaW11bChTLG90KXwwLGk9aStNYXRoLmltdWwoUyxhdCl8MCxpPWkrTWF0aC5pbXVsKEUsb3QpfDAsbz1vK01hdGguaW11bChFLGF0KXwwLG49bitNYXRoLmltdWwodyxzdCl8MCxpPWkrTWF0aC5pbXVsKHcsdXQpfDAsaT1pK01hdGguaW11bChfLHN0KXwwLG89bytNYXRoLmltdWwoXyx1dCl8MCxuPW4rTWF0aC5pbXVsKHksY3QpfDAsaT1pK01hdGguaW11bCh5LGR0KXwwLGk9aStNYXRoLmltdWwobSxjdCl8MCxvPW8rTWF0aC5pbXVsKG0sZHQpfDAsbj1uK01hdGguaW11bChwLHB0KXwwLGk9aStNYXRoLmltdWwocCxidCl8MCxpPWkrTWF0aC5pbXVsKGIscHQpfDAsbz1vK01hdGguaW11bChiLGJ0KXwwO3ZhciBrdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoa3Q+Pj4yNil8MCxrdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxYKSxpPU1hdGguaW11bChVLFkpLGk9aStNYXRoLmltdWwoeixYKXwwLG89TWF0aC5pbXVsKHosWSksbj1uK01hdGguaW11bChDLFopfDAsaT1pK01hdGguaW11bChDLEopfDAsaT1pK01hdGguaW11bChOLFopfDAsbz1vK01hdGguaW11bChOLEopfDAsbj1uK01hdGguaW11bChQLFEpfDAsaT1pK01hdGguaW11bChQLHR0KXwwLGk9aStNYXRoLmltdWwoVCxRKXwwLG89bytNYXRoLmltdWwoVCx0dCl8MCxuPW4rTWF0aC5pbXVsKEIscnQpfDAsaT1pK01hdGguaW11bChCLG50KXwwLGk9aStNYXRoLmltdWwoTyxydCl8MCxvPW8rTWF0aC5pbXVsKE8sbnQpfDAsbj1uK01hdGguaW11bChrLG90KXwwLGk9aStNYXRoLmltdWwoayxhdCl8MCxpPWkrTWF0aC5pbXVsKHgsb3QpfDAsbz1vK01hdGguaW11bCh4LGF0KXwwLG49bitNYXRoLmltdWwoUyxzdCl8MCxpPWkrTWF0aC5pbXVsKFMsdXQpfDAsaT1pK01hdGguaW11bChFLHN0KXwwLG89bytNYXRoLmltdWwoRSx1dCl8MCxuPW4rTWF0aC5pbXVsKHcsY3QpfDAsaT1pK01hdGguaW11bCh3LGR0KXwwLGk9aStNYXRoLmltdWwoXyxjdCl8MCxvPW8rTWF0aC5pbXVsKF8sZHQpfDAsbj1uK01hdGguaW11bCh5LHB0KXwwLGk9aStNYXRoLmltdWwoeSxidCl8MCxpPWkrTWF0aC5pbXVsKG0scHQpfDAsbz1vK01hdGguaW11bChtLGJ0KXwwO3ZhciB4dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoeHQ+Pj4yNil8MCx4dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxaKSxpPU1hdGguaW11bChVLEopLGk9aStNYXRoLmltdWwoeixaKXwwLG89TWF0aC5pbXVsKHosSiksbj1uK01hdGguaW11bChDLFEpfDAsaT1pK01hdGguaW11bChDLHR0KXwwLGk9aStNYXRoLmltdWwoTixRKXwwLG89bytNYXRoLmltdWwoTix0dCl8MCxuPW4rTWF0aC5pbXVsKFAscnQpfDAsaT1pK01hdGguaW11bChQLG50KXwwLGk9aStNYXRoLmltdWwoVCxydCl8MCxvPW8rTWF0aC5pbXVsKFQsbnQpfDAsbj1uK01hdGguaW11bChCLG90KXwwLGk9aStNYXRoLmltdWwoQixhdCl8MCxpPWkrTWF0aC5pbXVsKE8sb3QpfDAsbz1vK01hdGguaW11bChPLGF0KXwwLG49bitNYXRoLmltdWwoayxzdCl8MCxpPWkrTWF0aC5pbXVsKGssdXQpfDAsaT1pK01hdGguaW11bCh4LHN0KXwwLG89bytNYXRoLmltdWwoeCx1dCl8MCxuPW4rTWF0aC5pbXVsKFMsY3QpfDAsaT1pK01hdGguaW11bChTLGR0KXwwLGk9aStNYXRoLmltdWwoRSxjdCl8MCxvPW8rTWF0aC5pbXVsKEUsZHQpfDAsbj1uK01hdGguaW11bCh3LHB0KXwwLGk9aStNYXRoLmltdWwodyxidCl8MCxpPWkrTWF0aC5pbXVsKF8scHQpfDAsbz1vK01hdGguaW11bChfLGJ0KXwwO3ZhciBJdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoSXQ+Pj4yNil8MCxJdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxRKSxpPU1hdGguaW11bChVLHR0KSxpPWkrTWF0aC5pbXVsKHosUSl8MCxvPU1hdGguaW11bCh6LHR0KSxuPW4rTWF0aC5pbXVsKEMscnQpfDAsaT1pK01hdGguaW11bChDLG50KXwwLGk9aStNYXRoLmltdWwoTixydCl8MCxvPW8rTWF0aC5pbXVsKE4sbnQpfDAsbj1uK01hdGguaW11bChQLG90KXwwLGk9aStNYXRoLmltdWwoUCxhdCl8MCxpPWkrTWF0aC5pbXVsKFQsb3QpfDAsbz1vK01hdGguaW11bChULGF0KXwwLG49bitNYXRoLmltdWwoQixzdCl8MCxpPWkrTWF0aC5pbXVsKEIsdXQpfDAsaT1pK01hdGguaW11bChPLHN0KXwwLG89bytNYXRoLmltdWwoTyx1dCl8MCxuPW4rTWF0aC5pbXVsKGssY3QpfDAsaT1pK01hdGguaW11bChrLGR0KXwwLGk9aStNYXRoLmltdWwoeCxjdCl8MCxvPW8rTWF0aC5pbXVsKHgsZHQpfDAsbj1uK01hdGguaW11bChTLHB0KXwwLGk9aStNYXRoLmltdWwoUyxidCl8MCxpPWkrTWF0aC5pbXVsKEUscHQpfDAsbz1vK01hdGguaW11bChFLGJ0KXwwO3ZhciBCdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoQnQ+Pj4yNil8MCxCdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxydCksaT1NYXRoLmltdWwoVSxudCksaT1pK01hdGguaW11bCh6LHJ0KXwwLG89TWF0aC5pbXVsKHosbnQpLG49bitNYXRoLmltdWwoQyxvdCl8MCxpPWkrTWF0aC5pbXVsKEMsYXQpfDAsaT1pK01hdGguaW11bChOLG90KXwwLG89bytNYXRoLmltdWwoTixhdCl8MCxuPW4rTWF0aC5pbXVsKFAsc3QpfDAsaT1pK01hdGguaW11bChQLHV0KXwwLGk9aStNYXRoLmltdWwoVCxzdCl8MCxvPW8rTWF0aC5pbXVsKFQsdXQpfDAsbj1uK01hdGguaW11bChCLGN0KXwwLGk9aStNYXRoLmltdWwoQixkdCl8MCxpPWkrTWF0aC5pbXVsKE8sY3QpfDAsbz1vK01hdGguaW11bChPLGR0KXwwLG49bitNYXRoLmltdWwoayxwdCl8MCxpPWkrTWF0aC5pbXVsKGssYnQpfDAsaT1pK01hdGguaW11bCh4LHB0KXwwLG89bytNYXRoLmltdWwoeCxidCl8MDt2YXIgT3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKE90Pj4+MjYpfDAsT3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsb3QpLGk9TWF0aC5pbXVsKFUsYXQpLGk9aStNYXRoLmltdWwoeixvdCl8MCxvPU1hdGguaW11bCh6LGF0KSxuPW4rTWF0aC5pbXVsKEMsc3QpfDAsaT1pK01hdGguaW11bChDLHV0KXwwLGk9aStNYXRoLmltdWwoTixzdCl8MCxvPW8rTWF0aC5pbXVsKE4sdXQpfDAsbj1uK01hdGguaW11bChQLGN0KXwwLGk9aStNYXRoLmltdWwoUCxkdCl8MCxpPWkrTWF0aC5pbXVsKFQsY3QpfDAsbz1vK01hdGguaW11bChULGR0KXwwLG49bitNYXRoLmltdWwoQixwdCl8MCxpPWkrTWF0aC5pbXVsKEIsYnQpfDAsaT1pK01hdGguaW11bChPLHB0KXwwLG89bytNYXRoLmltdWwoTyxidCl8MDt2YXIgUnQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFJ0Pj4+MjYpfDAsUnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsc3QpLGk9TWF0aC5pbXVsKFUsdXQpLGk9aStNYXRoLmltdWwoeixzdCl8MCxvPU1hdGguaW11bCh6LHV0KSxuPW4rTWF0aC5pbXVsKEMsY3QpfDAsaT1pK01hdGguaW11bChDLGR0KXwwLGk9aStNYXRoLmltdWwoTixjdCl8MCxvPW8rTWF0aC5pbXVsKE4sZHQpfDAsbj1uK01hdGguaW11bChQLHB0KXwwLGk9aStNYXRoLmltdWwoUCxidCl8MCxpPWkrTWF0aC5pbXVsKFQscHQpfDAsbz1vK01hdGguaW11bChULGJ0KXwwO3ZhciBQdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoUHQ+Pj4yNil8MCxQdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxjdCksaT1NYXRoLmltdWwoVSxkdCksaT1pK01hdGguaW11bCh6LGN0KXwwLG89TWF0aC5pbXVsKHosZHQpLG49bitNYXRoLmltdWwoQyxwdCl8MCxpPWkrTWF0aC5pbXVsKEMsYnQpfDAsaT1pK01hdGguaW11bChOLHB0KXwwLG89bytNYXRoLmltdWwoTixidCl8MDt2YXIgVHQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFR0Pj4+MjYpfDAsVHQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUscHQpLGk9TWF0aC5pbXVsKFUsYnQpLGk9aStNYXRoLmltdWwoeixwdCl8MCxvPU1hdGguaW11bCh6LGJ0KTt2YXIganQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3JldHVybiB1PShvKyhpPj4+MTMpfDApKyhqdD4+PjI2KXwwLGp0Jj02NzEwODg2MyxzWzBdPXZ0LHNbMV09eXQsc1syXT1tdCxzWzNdPWd0LHNbNF09d3Qsc1s1XT1fdCxzWzZdPU10LHNbN109U3Qsc1s4XT1FdCxzWzldPUF0LHNbMTBdPWt0LHNbMTFdPXh0LHNbMTJdPUl0LHNbMTNdPUJ0LHNbMTRdPU90LHNbMTVdPVJ0LHNbMTZdPVB0LHNbMTddPVR0LHNbMThdPWp0LDAhPT11JiYoc1sxOV09dSxyLmxlbmd0aCsrKSxyfTtNYXRoLmltdWx8fChFPXUpLG8ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10aGlzLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gcj0xMD09PXRoaXMubGVuZ3RoJiYxMD09PXQubGVuZ3RoP0UodGhpcyx0LGUpOm48NjM/dSh0aGlzLHQsZSk6bjwxMDI0P2godGhpcyx0LGUpOmModGhpcyx0LGUpfSxkLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj1vLnByb3RvdHlwZS5fY291bnRCaXRzKHQpLTEsbj0wO248dDtuKyspZVtuXT10aGlzLnJldkJpbihuLHIsdCk7cmV0dXJuIGV9LGQucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbih0LGUscil7aWYoMD09PXR8fHQ9PT1yLTEpcmV0dXJuIHQ7Zm9yKHZhciBuPTAsaT0wO2k8ZTtpKyspbnw9KDEmdCk8PGUtaS0xLHQ+Pj0xO3JldHVybiBufSxkLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXtmb3IodmFyIGE9MDthPG87YSsrKW5bYV09ZVt0W2FdXSxpW2FdPXJbdFthXV19LGQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUscixuLGksbyl7dGhpcy5wZXJtdXRlKG8sdCxlLHIsbixpKTtmb3IodmFyIGE9MTthPGk7YTw8PTEpZm9yKHZhciBmPWE8PDEscz1NYXRoLmNvcygyKk1hdGguUEkvZiksdT1NYXRoLnNpbigyKk1hdGguUEkvZiksaD0wO2g8aTtoKz1mKWZvcih2YXIgYz1zLGQ9dSxsPTA7bDxhO2wrKyl7dmFyIHA9cltoK2xdLGI9bltoK2xdLHY9cltoK2wrYV0seT1uW2grbCthXSxtPWMqdi1kKnk7eT1jKnkrZCp2LHY9bSxyW2grbF09cCt2LG5baCtsXT1iK3kscltoK2wrYV09cC12LG5baCtsK2FdPWIteSxsIT09ZiYmKG09cypjLXUqZCxkPXMqZCt1KmMsYz1tKX19LGQucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MXxNYXRoLm1heChlLHQpLG49MSZyLGk9MDtmb3Iocj1yLzJ8MDtyO3I+Pj49MSlpKys7cmV0dXJuIDE8PGkrMStufSxkLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKCEocjw9MSkpZm9yKHZhciBuPTA7bjxyLzI7bisrKXt2YXIgaT10W25dO3Rbbl09dFtyLW4tMV0sdFtyLW4tMV09aSxpPWVbbl0sZVtuXT0tZVtyLW4tMV0sZVtyLW4tMV09LWl9fSxkLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPTA7bjxlLzI7bisrKXt2YXIgaT04MTkyKk1hdGgucm91bmQodFsyKm4rMV0vZSkrTWF0aC5yb3VuZCh0WzIqbl0vZSkrcjt0W25dPTY3MTA4ODYzJmkscj1pPDY3MTA4ODY0PzA6aS82NzEwODg2NHwwfXJldHVybiB0fSxkLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHQsZSxyLGkpe2Zvcih2YXIgbz0wLGE9MDthPGU7YSsrKW8rPTB8dFthXSxyWzIqYV09ODE5MSZvLG8+Pj49MTMsclsyKmErMV09ODE5MSZvLG8+Pj49MTM7Zm9yKGE9MiplO2E8aTsrK2EpclthXT0wO24oMD09PW8pLG4oMD09PShvJi04MTkyKSl9LGQucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPTA7cmV0dXJuIGV9LGQucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdGhpcy5ndWVzc0xlbjEzYih0Lmxlbmd0aCxlLmxlbmd0aCksaT10aGlzLm1ha2VSQlQobiksbz10aGlzLnN0dWIobiksYT1uZXcgQXJyYXkobiksZj1uZXcgQXJyYXkobikscz1uZXcgQXJyYXkobiksdT1uZXcgQXJyYXkobiksaD1uZXcgQXJyYXkobiksYz1uZXcgQXJyYXkobiksZD1yLndvcmRzO2QubGVuZ3RoPW4sdGhpcy5jb252ZXJ0MTNiKHQud29yZHMsdC5sZW5ndGgsYSxuKSxcbnRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3RoLHUsbiksdGhpcy50cmFuc2Zvcm0oYSxvLGYscyxuLGkpLHRoaXMudHJhbnNmb3JtKHUsbyxoLGMsbixpKTtmb3IodmFyIGw9MDtsPG47bCsrKXt2YXIgcD1mW2xdKmhbbF0tc1tsXSpjW2xdO3NbbF09ZltsXSpjW2xdK3NbbF0qaFtsXSxmW2xdPXB9cmV0dXJuIHRoaXMuY29uanVnYXRlKGYscyxuKSx0aGlzLnRyYW5zZm9ybShmLHMsZCxvLG4saSksdGhpcy5jb25qdWdhdGUoZCxvLG4pLHRoaXMubm9ybWFsaXplMTNiKGQsbiksci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGgsci5zdHJpcCgpfSxvLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSx0aGlzLm11bFRvKHQsZSl9LG8ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSxjKHRoaXMsdCxlKX0sby5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHQsdGhpcyl9LG8ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQpLG4odDw2NzEwODg2NCk7Zm9yKHZhciBlPTAscj0wO3I8dGhpcy5sZW5ndGg7cisrKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSp0LG89KDY3MTA4ODYzJmkpKyg2NzEwODg2MyZlKTtlPj49MjYsZSs9aS82NzEwODg2NHwwLGUrPW8+Pj4yNix0aGlzLndvcmRzW3JdPTY3MTA4ODYzJm99cmV0dXJuIDAhPT1lJiYodGhpcy53b3Jkc1tyXT1lLHRoaXMubGVuZ3RoKyspLHRoaXN9LG8ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih0KX0sby5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxvLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxvLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG5ldyBvKDEpO2Zvcih2YXIgcj10aGlzLG49MDtuPGUubGVuZ3RoJiYwPT09ZVtuXTtuKysscj1yLnNxcigpKTtpZigrK248ZS5sZW5ndGgpZm9yKHZhciBpPXIuc3FyKCk7bjxlLmxlbmd0aDtuKyssaT1pLnNxcigpKTAhPT1lW25dJiYocj1yLm11bChpKSk7cmV0dXJuIHJ9LG8ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZSxyPXQlMjYsaT0odC1yKS8yNixvPTY3MTA4ODYzPj4+MjYtcjw8MjYtcjtpZigwIT09cil7dmFyIGE9MDtmb3IoZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgZj10aGlzLndvcmRzW2VdJm8scz0oMHx0aGlzLndvcmRzW2VdKS1mPDxyO3RoaXMud29yZHNbZV09c3xhLGE9Zj4+PjI2LXJ9YSYmKHRoaXMud29yZHNbZV09YSx0aGlzLmxlbmd0aCsrKX1pZigwIT09aSl7Zm9yKGU9dGhpcy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLndvcmRzW2UraV09dGhpcy53b3Jkc1tlXTtmb3IoZT0wO2U8aTtlKyspdGhpcy53b3Jkc1tlXT0wO3RoaXMubGVuZ3RoKz1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih0KX0sby5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHQsZSxyKXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgaTtpPWU/KGUtZSUyNikvMjY6MDt2YXIgbz10JTI2LGE9TWF0aC5taW4oKHQtbykvMjYsdGhpcy5sZW5ndGgpLGY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5vPDxvLHM9cjtpZihpLT1hLGk9TWF0aC5tYXgoMCxpKSxzKXtmb3IodmFyIHU9MDt1PGE7dSsrKXMud29yZHNbdV09dGhpcy53b3Jkc1t1XTtzLmxlbmd0aD1hfWlmKDA9PT1hKTtlbHNlIGlmKHRoaXMubGVuZ3RoPmEpZm9yKHRoaXMubGVuZ3RoLT1hLHU9MDt1PHRoaXMubGVuZ3RoO3UrKyl0aGlzLndvcmRzW3VdPXRoaXMud29yZHNbdSthXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBoPTA7Zm9yKHU9dGhpcy5sZW5ndGgtMTt1Pj0wJiYoMCE9PWh8fHU+PWkpO3UtLSl7dmFyIGM9MHx0aGlzLndvcmRzW3VdO3RoaXMud29yZHNbdV09aDw8MjYtb3xjPj4+byxoPWMmZn1yZXR1cm4gcyYmMCE9PWgmJihzLndvcmRzW3MubGVuZ3RoKytdPWgpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4odCxlLHIpfSxvLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4odCl9LG8ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKHQpfSxvLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4odCl9LG8ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHQpfSxvLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsaT0xPDxlO2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiExO3ZhciBvPXRoaXMud29yZHNbcl07cmV0dXJuISEobyZpKX0sby5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPXQlMjYscj0odC1lKS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLFwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzXCIpLHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzO2lmKDAhPT1lJiZyKyssdGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCksMCE9PWUpe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+ZTw8ZTt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHQpfSxvLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih0KXtyZXR1cm4gbihcIm51bWJlclwiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDA/dGhpcy5pc3VibigtdCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx0Pyh0aGlzLndvcmRzWzBdPXQtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4odCl9LG8ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih0KXt0aGlzLndvcmRzWzBdKz10O2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbZV0+PTY3MTA4ODY0O2UrKyl0aGlzLndvcmRzW2VdLT02NzEwODg2NCxlPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2UrMV09MTp0aGlzLndvcmRzW2UrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsZSsxKSx0aGlzfSxvLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih0KXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MClyZXR1cm4gdGhpcy5pYWRkbigtdCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXQsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29yZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4odCl9LG8ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0KX0sby5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sby5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LG8ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUscil7dmFyIGksbz10Lmxlbmd0aCtyO3RoaXMuX2V4cGFuZChvKTt2YXIgYSxmPTA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7YT0oMHx0aGlzLndvcmRzW2krcl0pK2Y7dmFyIHM9KDB8dC53b3Jkc1tpXSkqZTthLT02NzEwODg2MyZzLGY9KGE+PjI2KS0ocy82NzEwODg2NHwwKSx0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYX1mb3IoO2k8dGhpcy5sZW5ndGgtcjtpKyspYT0oMHx0aGlzLndvcmRzW2krcl0pK2YsZj1hPj4yNix0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYTtpZigwPT09ZilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKGY9PT0tMSksZj0wLGk9MDtpPHRoaXMubGVuZ3RoO2krKylhPS0oMHx0aGlzLndvcmRzW2ldKStmLGY9YT4+MjYsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZhO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoLXQubGVuZ3RoLG49dGhpcy5jbG9uZSgpLGk9dCxhPTB8aS53b3Jkc1tpLmxlbmd0aC0xXSxmPXRoaXMuX2NvdW50Qml0cyhhKTtyPTI2LWYsMCE9PXImJihpPWkudXNobG4ociksbi5pdXNobG4ociksYT0wfGkud29yZHNbaS5sZW5ndGgtMV0pO3ZhciBzLHU9bi5sZW5ndGgtaS5sZW5ndGg7aWYoXCJtb2RcIiE9PWUpe3M9bmV3IG8obnVsbCkscy5sZW5ndGg9dSsxLHMud29yZHM9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IodmFyIGg9MDtoPHMubGVuZ3RoO2grKylzLndvcmRzW2hdPTB9dmFyIGM9bi5jbG9uZSgpLl9pc2hsbnN1Ym11bChpLDEsdSk7MD09PWMubmVnYXRpdmUmJihuPWMscyYmKHMud29yZHNbdV09MSkpO2Zvcih2YXIgZD11LTE7ZD49MDtkLS0pe3ZhciBsPTY3MTA4ODY0KigwfG4ud29yZHNbaS5sZW5ndGgrZF0pKygwfG4ud29yZHNbaS5sZW5ndGgrZC0xXSk7Zm9yKGw9TWF0aC5taW4obC9hfDAsNjcxMDg4NjMpLG4uX2lzaGxuc3VibXVsKGksbCxkKTswIT09bi5uZWdhdGl2ZTspbC0tLG4ubmVnYXRpdmU9MCxuLl9pc2hsbnN1Ym11bChpLDEsZCksbi5pc1plcm8oKXx8KG4ubmVnYXRpdmVePTEpO3MmJihzLndvcmRzW2RdPWwpfXJldHVybiBzJiZzLnN0cmlwKCksbi5zdHJpcCgpLFwiZGl2XCIhPT1lJiYwIT09ciYmbi5pdXNocm4ocikse2RpdjpzfHxudWxsLG1vZDpufX0sby5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSxyKXtpZihuKCF0LmlzWmVybygpKSx0aGlzLmlzWmVybygpKXJldHVybntkaXY6bmV3IG8oMCksbW9kOm5ldyBvKDApfTt2YXIgaSxhLGY7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZT8oZj10aGlzLm5lZygpLmRpdm1vZCh0LGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSksXCJkaXZcIiE9PWUmJihhPWYubW9kLm5lZygpLHImJjAhPT1hLm5lZ2F0aXZlJiZhLmlhZGQodCkpLHtkaXY6aSxtb2Q6YX0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZT8oZj10aGlzLmRpdm1vZCh0Lm5lZygpLGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSkse2RpdjppLG1vZDpmLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZ0Lm5lZ2F0aXZlKT8oZj10aGlzLm5lZygpLmRpdm1vZCh0Lm5lZygpLGUpLFwiZGl2XCIhPT1lJiYoYT1mLm1vZC5uZWcoKSxyJiYwIT09YS5uZWdhdGl2ZSYmYS5pc3ViKHQpKSx7ZGl2OmYuZGl2LG1vZDphfSk6dC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHQpPDA/e2RpdjpuZXcgbygwKSxtb2Q6dGhpc306MT09PXQubGVuZ3RoP1wiZGl2XCI9PT1lP3tkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpudWxsfTpcIm1vZFwiPT09ZT97ZGl2Om51bGwsbW9kOm5ldyBvKHRoaXMubW9kbih0LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpuZXcgbyh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHQsZSl9LG8ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcImRpdlwiLCExKS5kaXZ9LG8ucHJvdG90eXBlLm1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcIm1vZFwiLCExKS5tb2R9LG8ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsXCJtb2RcIiwhMCkubW9kfSxvLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpdm1vZCh0KTtpZihlLm1vZC5pc1plcm8oKSlyZXR1cm4gZS5kaXY7dmFyIHI9MCE9PWUuZGl2Lm5lZ2F0aXZlP2UubW9kLmlzdWIodCk6ZS5tb2Qsbj10LnVzaHJuKDEpLGk9dC5hbmRsbigxKSxvPXIuY21wKG4pO3JldHVybiBvPDB8fDE9PT1pJiYwPT09bz9lLmRpdjowIT09ZS5kaXYubmVnYXRpdmU/ZS5kaXYuaXN1Ym4oMSk6ZS5kaXYuaWFkZG4oMSl9LG8ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPSgxPDwyNikldCxyPTAsaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXI9KGUqcisoMHx0aGlzLndvcmRzW2ldKSkldDtyZXR1cm4gcn0sby5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSs2NzEwODg2NCplO3RoaXMud29yZHNbcl09aS90fDAsZT1pJXR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHQpfSxvLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9bmV3IG8oMCkscz1uZXcgbygxKSx1PTA7ZS5pc0V2ZW4oKSYmci5pc0V2ZW4oKTspZS5pdXNocm4oMSksci5pdXNocm4oMSksKyt1O2Zvcih2YXIgaD1yLmNsb25lKCksYz1lLmNsb25lKCk7IWUuaXNaZXJvKCk7KXtmb3IodmFyIGQ9MCxsPTE7MD09PShlLndvcmRzWzBdJmwpJiZkPDI2OysrZCxsPDw9MSk7aWYoZD4wKWZvcihlLml1c2hybihkKTtkLS0gPjA7KShpLmlzT2RkKCl8fGEuaXNPZGQoKSkmJihpLmlhZGQoaCksYS5pc3ViKGMpKSxpLml1c2hybigxKSxhLml1c2hybigxKTtmb3IodmFyIHA9MCxiPTE7MD09PShyLndvcmRzWzBdJmIpJiZwPDI2OysrcCxiPDw9MSk7aWYocD4wKWZvcihyLml1c2hybihwKTtwLS0gPjA7KShmLmlzT2RkKCl8fHMuaXNPZGQoKSkmJihmLmlhZGQoaCkscy5pc3ViKGMpKSxmLml1c2hybigxKSxzLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihmKSxhLmlzdWIocykpOihyLmlzdWIoZSksZi5pc3ViKGkpLHMuaXN1YihhKSl9cmV0dXJue2E6ZixiOnMsZ2NkOnIuaXVzaGxuKHUpfX0sby5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9ci5jbG9uZSgpO2UuY21wbigxKT4wJiZyLmNtcG4oMSk+MDspe2Zvcih2YXIgcz0wLHU9MTswPT09KGUud29yZHNbMF0mdSkmJnM8MjY7KytzLHU8PD0xKTtpZihzPjApZm9yKGUuaXVzaHJuKHMpO3MtLSA+MDspaS5pc09kZCgpJiZpLmlhZGQoZiksaS5pdXNocm4oMSk7Zm9yKHZhciBoPTAsYz0xOzA9PT0oci53b3Jkc1swXSZjKSYmaDwyNjsrK2gsYzw8PTEpO2lmKGg+MClmb3Ioci5pdXNocm4oaCk7aC0tID4wOylhLmlzT2RkKCkmJmEuaWFkZChmKSxhLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihhKSk6KHIuaXN1YihlKSxhLmlzdWIoaSkpfXZhciBkO3JldHVybiBkPTA9PT1lLmNtcG4oMSk/aTphLGQuY21wbigwKTwwJiZkLmlhZGQodCksZH0sby5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHQuYWJzKCk7aWYodC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgZT10aGlzLmNsb25lKCkscj10LmNsb25lKCk7ZS5uZWdhdGl2ZT0wLHIubmVnYXRpdmU9MDtmb3IodmFyIG49MDtlLmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyllLml1c2hybigxKSxyLml1c2hybigxKTtmb3IoOzspe2Zvcig7ZS5pc0V2ZW4oKTspZS5pdXNocm4oMSk7Zm9yKDtyLmlzRXZlbigpOylyLml1c2hybigxKTt2YXIgaT1lLmNtcChyKTtpZihpPDApe3ZhciBvPWU7ZT1yLHI9b31lbHNlIGlmKDA9PT1pfHwwPT09ci5jbXBuKDEpKWJyZWFrO2UuaXN1YihyKX1yZXR1cm4gci5pdXNobG4obil9LG8ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWdjZCh0KS5hLnVtb2QodCl9LG8ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT09KDEmdGhpcy53b3Jkc1swXSl9LG8ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLndvcmRzWzBdKX0sby5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud29yZHNbMF0mdH0sby5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCk7dmFyIGU9dCUyNixyPSh0LWUpLzI2LGk9MTw8ZTtpZih0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXXw9aSx0aGlzO2Zvcih2YXIgbz1pLGE9cjswIT09byYmYTx0aGlzLmxlbmd0aDthKyspe3ZhciBmPTB8dGhpcy53b3Jkc1thXTtmKz1vLG89Zj4+PjI2LGYmPTY3MTA4ODYzLHRoaXMud29yZHNbYV09Zn1yZXR1cm4gMCE9PW8mJih0aGlzLndvcmRzW2FdPW8sdGhpcy5sZW5ndGgrKyksdGhpc30sby5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LG8ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24odCl7dmFyIGU9dDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmZSlyZXR1cm4gMTt0aGlzLnN0cmlwKCk7dmFyIHI7aWYodGhpcy5sZW5ndGg+MSlyPTE7ZWxzZXtlJiYodD0tdCksbih0PD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPTB8dGhpcy53b3Jkc1swXTtyPWk9PT10PzA6aTx0Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXI6cn0sby5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHQpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGU9dGhpcy51Y21wKHQpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lOmV9LG8ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+dC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj0wfHRoaXMud29yZHNbcl0saT0wfHQud29yZHNbcl07aWYobiE9PWkpe248aT9lPS0xOm4+aSYmKGU9MSk7YnJlYWt9fXJldHVybiBlfSxvLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10aGlzLmNtcG4odCl9LG8ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dGhpcy5jbXAodCl9LG8ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KT49MH0sby5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KT49MH0sby5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk9PT0tMX0sby5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPT09LTF9LG8ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KTw9MH0sby5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KTw9MH0sby5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5jbXBuKHQpfSxvLnByb3RvdHlwZS5lcT1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXRoaXMuY21wKHQpfSxvLnJlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG0odCl9LG8ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksbigwPT09dGhpcy5uZWdhdGl2ZSxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpLHQuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh0KX0sby5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dFwiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sby5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZD10LHRoaXN9LG8ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksdGhpcy5fZm9yY2VSZWQodCl9LG8ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc2hsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5tdWwodGhpcyx0KX0sby5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5pbXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LG8ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LG8ucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LG8ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCYmIXQucmVkLFwicmVkUG93KG5vcm1hbE51bSlcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsdCl9O3ZhciBBPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07bC5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksdH0sbC5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQ7ZG8gdGhpcy5zcGxpdChyLHRoaXMudG1wKSxyPXRoaXMuaW11bEsocikscj1yLmlhZGQodGhpcy50bXApLGU9ci5iaXRMZW5ndGgoKTt3aGlsZShlPnRoaXMubik7dmFyIG49ZTx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1uPyhyLndvcmRzWzBdPTAsci5sZW5ndGg9MSk6bj4wP3IuaXN1Yih0aGlzLnApOnIuc3RyaXAoKSxyfSxsLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe3QuaXVzaHJuKHRoaXMubiwwLGUpfSxsLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbXVsKHRoaXMuayl9LGkocCxsKSxwLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj00MTk0MzAzLG49TWF0aC5taW4odC5sZW5ndGgsOSksaT0wO2k8bjtpKyspZS53b3Jkc1tpXT10LndvcmRzW2ldO2lmKGUubGVuZ3RoPW4sdC5sZW5ndGg8PTkpcmV0dXJuIHQud29yZHNbMF09MCx2b2lkKHQubGVuZ3RoPTEpO3ZhciBvPXQud29yZHNbOV07Zm9yKGUud29yZHNbZS5sZW5ndGgrK109byZyLGk9MTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPTB8dC53b3Jkc1tpXTt0LndvcmRzW2ktMTBdPShhJnIpPDw0fG8+Pj4yMixvPWF9bz4+Pj0yMix0LndvcmRzW2ktMTBdPW8sMD09PW8mJnQubGVuZ3RoPjEwP3QubGVuZ3RoLT0xMDp0Lmxlbmd0aC09OX0scC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7dC53b3Jkc1t0Lmxlbmd0aF09MCx0LndvcmRzW3QubGVuZ3RoKzFdPTAsdC5sZW5ndGgrPTI7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0wfHQud29yZHNbcl07ZSs9OTc3Km4sdC53b3Jkc1tyXT02NzEwODg2MyZlLGU9NjQqbisoZS82NzEwODg2NHwwKX1yZXR1cm4gMD09PXQud29yZHNbdC5sZW5ndGgtMV0mJih0Lmxlbmd0aC0tLDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiZ0Lmxlbmd0aC0tKSx0fSxpKGIsbCksaSh2LGwpLGkoeSxsKSx5LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfHQud29yZHNbcl0pK2UsaT02NzEwODg2MyZuO24+Pj49MjYsdC53b3Jkc1tyXT1pLGU9bn1yZXR1cm4gMCE9PWUmJih0LndvcmRzW3QubGVuZ3RoKytdPWUpLHR9LG8uX3ByaW1lPWZ1bmN0aW9uIHQoZSl7aWYoQVtlXSlyZXR1cm4gQVtlXTt2YXIgdDtpZihcImsyNTZcIj09PWUpdD1uZXcgcDtlbHNlIGlmKFwicDIyNFwiPT09ZSl0PW5ldyBiO2Vsc2UgaWYoXCJwMTkyXCI9PT1lKXQ9bmV3IHY7ZWxzZXtpZihcInAyNTUxOVwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHByaW1lIFwiK2UpO3Q9bmV3IHl9cmV0dXJuIEFbZV09dCx0fSxtLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIiksbih0LnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9LG0ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHQsZSl7bigwPT09KHQubmVnYXRpdmV8ZS5uZWdhdGl2ZSksXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSxuKHQucmVkJiZ0LnJlZD09PWUucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX0sbS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UodCkuX2ZvcmNlUmVkKHRoaXMpOnQudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlzWmVybygpP3QuY2xvbmUoKTp0aGlzLm0uc3ViKHQpLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlhZGQoZSk7cmV0dXJuIHIuY21wKHRoaXMubSk+PTAmJnIuaXN1Yih0aGlzLm0pLHJ9LG0ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LnN1YihlKTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHIuX2ZvcmNlUmVkKHRoaXMpfSxtLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuaXN1YihlKTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHJ9LG0ucHJvdG90eXBlLnNobD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkxKHQpLHRoaXMuaW1vZCh0LnVzaGxuKGUpKX0sbS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQuaW11bChlKSl9LG0ucHJvdG90eXBlLm11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQubXVsKGUpKX0sbS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbXVsKHQsdC5jbG9uZSgpKX0sbS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm11bCh0LHQpfSxtLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgZT10aGlzLm0uYW5kbG4oMyk7aWYobihlJTI9PT0xKSwzPT09ZSl7dmFyIHI9dGhpcy5tLmFkZChuZXcgbygxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyh0LHIpfWZvcih2YXIgaT10aGlzLm0uc3VibigxKSxhPTA7IWkuaXNaZXJvKCkmJjA9PT1pLmFuZGxuKDEpOylhKyssaS5pdXNocm4oMSk7bighaS5pc1plcm8oKSk7dmFyIGY9bmV3IG8oMSkudG9SZWQodGhpcykscz1mLnJlZE5lZygpLHU9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLGg9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihoPW5ldyBvKDIqaCpoKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coaCx1KS5jbXAocyk7KWgucmVkSUFkZChzKTtmb3IodmFyIGM9dGhpcy5wb3coaCxpKSxkPXRoaXMucG93KHQsaS5hZGRuKDEpLml1c2hybigxKSksbD10aGlzLnBvdyh0LGkpLHA9YTswIT09bC5jbXAoZik7KXtmb3IodmFyIGI9bCx2PTA7MCE9PWIuY21wKGYpO3YrKyliPWIucmVkU3FyKCk7bih2PHApO3ZhciB5PXRoaXMucG93KGMsbmV3IG8oMSkuaXVzaGxuKHAtdi0xKSk7ZD1kLnJlZE11bCh5KSxjPXkucmVkU3FyKCksbD1sLnJlZE11bChjKSxwPXZ9cmV0dXJuIGR9LG0ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7dmFyIGU9dC5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PWUubmVnYXRpdmU/KGUubmVnYXRpdmU9MCx0aGlzLmltb2QoZSkucmVkTmVnKCkpOnRoaXMuaW1vZChlKX0sbS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQsZSl7aWYoZS5pc1plcm8oKSlyZXR1cm4gbmV3IG8oMSk7aWYoMD09PWUuY21wbigxKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciByPTQsbj1uZXcgQXJyYXkoMTw8cik7blswXT1uZXcgbygxKS50b1JlZCh0aGlzKSxuWzFdPXQ7Zm9yKHZhciBpPTI7aTxuLmxlbmd0aDtpKyspbltpXT10aGlzLm11bChuW2ktMV0sdCk7dmFyIGE9blswXSxmPTAscz0wLHU9ZS5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXUmJih1PTI2KSxpPWUubGVuZ3RoLTE7aT49MDtpLS0pe2Zvcih2YXIgaD1lLndvcmRzW2ldLGM9dS0xO2M+PTA7Yy0tKXt2YXIgZD1oPj5jJjE7YSE9PW5bMF0mJihhPXRoaXMuc3FyKGEpKSwwIT09ZHx8MCE9PWY/KGY8PD0xLGZ8PWQscysrLChzPT09cnx8MD09PWkmJjA9PT1jKSYmKGE9dGhpcy5tdWwoYSxuW2ZdKSxzPTAsZj0wKSk6cz0wfXU9MjZ9cmV0dXJuIGF9LG0ucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih0KXt2YXIgZT10LnVtb2QodGhpcy5tKTtyZXR1cm4gZT09PXQ/ZS5jbG9uZSgpOmV9LG0ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xvbmUoKTtyZXR1cm4gZS5yZWQ9bnVsbCxlfSxvLm1vbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBnKHQpfSxpKGcsbSksZy5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmltb2QodC51c2hsbih0aGlzLnNoaWZ0KSl9LGcucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1vZCh0Lm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gZS5yZWQ9bnVsbCxlfSxnLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHQsZSl7aWYodC5pc1plcm8oKXx8ZS5pc1plcm8oKSlyZXR1cm4gdC53b3Jkc1swXT0wLHQubGVuZ3RoPTEsdDt2YXIgcj10LmltdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksbz1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP289aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihvPWkuaWFkZCh0aGlzLm0pKSxvLl9mb3JjZVJlZCh0aGlzKX0sZy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7aWYodC5pc1plcm8oKXx8ZS5pc1plcm8oKSlyZXR1cm4gbmV3IG8oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciByPXQubXVsKGUpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksaT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLGE9aTtyZXR1cm4gaS5jbXAodGhpcy5tKT49MD9hPWkuaXN1Yih0aGlzLm0pOmkuY21wbigwKTwwJiYoYT1pLmlhZGQodGhpcy5tKSksYS5fZm9yY2VSZWQodGhpcyl9LGcucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbW9kKHQuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtyZXR1cm4gZS5fZm9yY2VSZWQodGhpcyl9fShcInVuZGVmaW5lZFwiPT10eXBlb2YgdHx8dCx0aGlzKX0pLmNhbGwoZSxyKDkyKSh0KSl9LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7aS5jYWxsKHRoaXMpfXQuZXhwb3J0cz1uO3ZhciBpPXIoMTEwKS5FdmVudEVtaXR0ZXIsbz1yKDYwMyk7byhuLGkpLG4uUmVhZGFibGU9cig2MDApLG4uV3JpdGFibGU9cig2MDIpLG4uRHVwbGV4PXIoNTk1KSxuLlRyYW5zZm9ybT1yKDYwMSksbi5QYXNzVGhyb3VnaD1yKDU5OSksbi5TdHJlYW09bixuLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihlKXt0LndyaXRhYmxlJiYhMT09PXQud3JpdGUoZSkmJnUucGF1c2UmJnUucGF1c2UoKX1mdW5jdGlvbiBuKCl7dS5yZWFkYWJsZSYmdS5yZXN1bWUmJnUucmVzdW1lKCl9ZnVuY3Rpb24gbygpe2h8fChoPSEwLHQuZW5kKCkpfWZ1bmN0aW9uIGEoKXtofHwoaD0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3kmJnQuZGVzdHJveSgpKX1mdW5jdGlvbiBmKHQpe2lmKHMoKSwwPT09aS5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKSl0aHJvdyB0fWZ1bmN0aW9uIHMoKXt1LnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLHIpLHQucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLG4pLHUucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixvKSx1LnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixhKSx1LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixmKSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixmKSx1LnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIscyksdS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscyksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscyl9dmFyIHU9dGhpczt1Lm9uKFwiZGF0YVwiLHIpLHQub24oXCJkcmFpblwiLG4pLHQuX2lzU3RkaW98fGUmJmUuZW5kPT09ITF8fCh1Lm9uKFwiZW5kXCIsbyksdS5vbihcImNsb3NlXCIsYSkpO3ZhciBoPSExO3JldHVybiB1Lm9uKFwiZXJyb3JcIixmKSx0Lm9uKFwiZXJyb3JcIixmKSx1Lm9uKFwiZW5kXCIscyksdS5vbihcImNsb3NlXCIscyksdC5vbihcImNsb3NlXCIscyksdC5lbWl0KFwicGlwZVwiLHUpLHR9fSxmdW5jdGlvbih0LGUpe3ZhciByPXQuZXhwb3J0cz17dmVyc2lvbjpcIjIuNC4wXCJ9O1wibnVtYmVyXCI9PXR5cGVvZiBfX2UmJihfX2U9cil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDEzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKG4odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdC5jYWxsKGUscil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gdC5jYWxsKGUscixuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLG4saSl7cmV0dXJuIHQuY2FsbChlLHIsbixpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDE5MCksaT1yKDApLG89cig4NykoXCJtZXRhZGF0YVwiKSxhPW8uc3RvcmV8fChvLnN0b3JlPW5ldyhyKDE5MykpKSxmPWZ1bmN0aW9uKHQsZSxyKXt2YXIgaT1hLmdldCh0KTtpZighaSl7aWYoIXIpcmV0dXJuO2Euc2V0KHQsaT1uZXcgbil9dmFyIG89aS5nZXQoZSk7aWYoIW8pe2lmKCFyKXJldHVybjtpLnNldChlLG89bmV3IG4pfXJldHVybiBvfSxzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mKGUsciwhMSk7cmV0dXJuIHZvaWQgMCE9PW4mJm4uaGFzKHQpfSx1PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1mKGUsciwhMSk7cmV0dXJuIHZvaWQgMD09PW4/dm9pZCAwOm4uZ2V0KHQpfSxoPWZ1bmN0aW9uKHQsZSxyLG4pe2YocixuLCEwKS5zZXQodCxlKX0sYz1mdW5jdGlvbih0LGUpe3ZhciByPWYodCxlLCExKSxuPVtdO3JldHVybiByJiZyLmZvckVhY2goZnVuY3Rpb24odCxlKXtuLnB1c2goZSl9KSxufSxkPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10fHxcInN5bWJvbFwiPT10eXBlb2YgdD90OlN0cmluZyh0KX0sbD1mdW5jdGlvbih0KXtpKGkuUyxcIlJlZmxlY3RcIix0KX07dC5leHBvcnRzPXtzdG9yZTphLG1hcDpmLGhhczpzLGdldDp1LHNldDpoLGtleXM6YyxrZXk6ZCxleHA6bH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtpZihyKDgpKXt2YXIgbj1yKDQxKSxpPXIoNCksbz1yKDUpLGE9cigwKSxmPXIoODgpLHM9cigxNDApLHU9cigzMyksaD1yKDQwKSxjPXIoMzcpLGQ9cigxNCksbD1yKDQ1KSxwPXIoMzgpLGI9cigxMCksdj1yKDQ3KSx5PXIoMjkpLG09cigxMiksZz1yKDE4Nyksdz1yKDY0KSxfPXIoNiksTT1yKDExKSxTPXIoMTI1KSxFPXIoNDIpLEE9cigyMSksaz1yKDQzKS5mLHg9cigxNDIpLEk9cig0OCksQj1yKDcpLE89cigyNyksUj1yKDc4KSxQPXIoMTM0KSxUPXIoMTQzKSxqPXIoNTYpLEM9cig4NCksTj1yKDQ2KSxMPXIoMTE4KSxVPXIoMTY3KSx6PXIoOSksRD1yKDIwKSxxPXouZixGPUQuZixLPWkuUmFuZ2VFcnJvcixHPWkuVHlwZUVycm9yLFY9aS5VaW50OEFycmF5LEg9XCJBcnJheUJ1ZmZlclwiLFg9XCJTaGFyZWRcIitILFk9XCJCWVRFU19QRVJfRUxFTUVOVFwiLFc9XCJwcm90b3R5cGVcIixaPUFycmF5W1ddLEo9cy5BcnJheUJ1ZmZlciwkPXMuRGF0YVZpZXcsUT1PKDApLHR0PU8oMiksZXQ9TygzKSxydD1PKDQpLG50PU8oNSksaXQ9Tyg2KSxvdD1SKCEwKSxhdD1SKCExKSxmdD1ULnZhbHVlcyxzdD1ULmtleXMsdXQ9VC5lbnRyaWVzLGh0PVoubGFzdEluZGV4T2YsY3Q9Wi5yZWR1Y2UsZHQ9Wi5yZWR1Y2VSaWdodCxsdD1aLmpvaW4scHQ9Wi5zb3J0LGJ0PVouc2xpY2UsdnQ9Wi50b1N0cmluZyx5dD1aLnRvTG9jYWxlU3RyaW5nLG10PUIoXCJpdGVyYXRvclwiKSxndD1CKFwidG9TdHJpbmdUYWdcIiksd3Q9SShcInR5cGVkX2NvbnN0cnVjdG9yXCIpLF90PUkoXCJkZWZfY29uc3RydWN0b3JcIiksTXQ9Zi5DT05TVFIsU3Q9Zi5UWVBFRCxFdD1mLlZJRVcsQXQ9XCJXcm9uZyBsZW5ndGghXCIsa3Q9TygxLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFB0KFAodCx0W190XSksZSl9KSx4dD1vKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgVihuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdfSksSXQ9ISFWJiYhIVZbV10uc2V0JiZvKGZ1bmN0aW9uKCl7bmV3IFYoMSkuc2V0KHt9KX0pLEJ0PWZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09dCl0aHJvdyBHKEF0KTt2YXIgcj0rdCxuPWIodCk7aWYoZSYmIWcocixuKSl0aHJvdyBLKEF0KTtyZXR1cm4gbn0sT3Q9ZnVuY3Rpb24odCxlKXt2YXIgcj1wKHQpO2lmKHI8MHx8ciVlKXRocm93IEsoXCJXcm9uZyBvZmZzZXQhXCIpO3JldHVybiByfSxSdD1mdW5jdGlvbih0KXtpZihfKHQpJiZTdCBpbiB0KXJldHVybiB0O3Rocm93IEcodCtcIiBpcyBub3QgYSB0eXBlZCBhcnJheSFcIil9LFB0PWZ1bmN0aW9uKHQsZSl7aWYoIShfKHQpJiZ3dCBpbiB0KSl0aHJvdyBHKFwiSXQgaXMgbm90IGEgdHlwZWQgYXJyYXkgY29uc3RydWN0b3IhXCIpO3JldHVybiBuZXcgdChlKX0sVHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4ganQoUCh0LHRbX3RdKSxlKX0sanQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk9UHQodCxuKTtuPnI7KWlbcl09ZVtyKytdO3JldHVybiBpfSxDdD1mdW5jdGlvbih0LGUscil7cSh0LGUse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kW3JdfX0pfSxOdD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxvLGEsZj1NKHQpLHM9YXJndW1lbnRzLmxlbmd0aCxoPXM+MT9hcmd1bWVudHNbMV06dm9pZCAwLGM9dm9pZCAwIT09aCxkPXgoZik7aWYodm9pZCAwIT1kJiYhUyhkKSl7Zm9yKGE9ZC5jYWxsKGYpLG49W10sZT0wOyEobz1hLm5leHQoKSkuZG9uZTtlKyspbi5wdXNoKG8udmFsdWUpO2Y9bn1mb3IoYyYmcz4yJiYoaD11KGgsYXJndW1lbnRzWzJdLDIpKSxlPTAscj1iKGYubGVuZ3RoKSxpPVB0KHRoaXMscik7cj5lO2UrKylpW2VdPWM/aChmW2VdLGUpOmZbZV07cmV0dXJuIGl9LEx0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT1hcmd1bWVudHMubGVuZ3RoLHI9UHQodGhpcyxlKTtlPnQ7KXJbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIHJ9LFV0PSEhViYmbyhmdW5jdGlvbigpe3l0LmNhbGwobmV3IFYoMSkpfSksenQ9ZnVuY3Rpb24oKXtyZXR1cm4geXQuYXBwbHkoVXQ/YnQuY2FsbChSdCh0aGlzKSk6UnQodGhpcyksYXJndW1lbnRzKX0sRHQ9e2NvcHlXaXRoaW46ZnVuY3Rpb24odCxlKXtyZXR1cm4gVS5jYWxsKFJ0KHRoaXMpLHQsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LGV2ZXJ5OmZ1bmN0aW9uKHQpe3JldHVybiBydChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sZmlsbDpmdW5jdGlvbih0KXtyZXR1cm4gTC5hcHBseShSdCh0aGlzKSxhcmd1bWVudHMpfSxmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIFR0KHRoaXMsdHQoUnQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCkpfSxmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBudChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sZmluZEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiBpdChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sZm9yRWFjaDpmdW5jdGlvbih0KXtRKFJ0KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxpbmRleE9mOmZ1bmN0aW9uKHQpe3JldHVybiBhdChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0saW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuIG90KFJ0KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBsdC5hcHBseShSdCh0aGlzKSxhcmd1bWVudHMpfSxsYXN0SW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gaHQuYXBwbHkoUnQodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBrdChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0scmVkdWNlOmZ1bmN0aW9uKHQpe3JldHVybiBjdC5hcHBseShSdCh0aGlzKSxhcmd1bWVudHMpfSxyZWR1Y2VSaWdodDpmdW5jdGlvbih0KXtyZXR1cm4gZHQuYXBwbHkoUnQodGhpcyksYXJndW1lbnRzKX0scmV2ZXJzZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlPXRoaXMscj1SdChlKS5sZW5ndGgsbj1NYXRoLmZsb29yKHIvMiksaT0wO2k8bjspdD1lW2ldLGVbaSsrXT1lWy0tcl0sZVtyXT10O3JldHVybiBlfSxzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBldChSdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0sc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gcHQuY2FsbChSdCh0aGlzKSx0KX0sc3ViYXJyYXk6ZnVuY3Rpb24odCxlKXt2YXIgcj1SdCh0aGlzKSxuPXIubGVuZ3RoLGk9dih0LG4pO3JldHVybiBuZXcoUChyLHJbX3RdKSkoci5idWZmZXIsci5ieXRlT2Zmc2V0K2kqci5CWVRFU19QRVJfRUxFTUVOVCxiKCh2b2lkIDA9PT1lP246dihlLG4pKS1pKSl9fSxxdD1mdW5jdGlvbih0LGUpe3JldHVybiBUdCh0aGlzLGJ0LmNhbGwoUnQodGhpcyksdCxlKSl9LEZ0PWZ1bmN0aW9uKHQpe1J0KHRoaXMpO3ZhciBlPU90KGFyZ3VtZW50c1sxXSwxKSxyPXRoaXMubGVuZ3RoLG49TSh0KSxpPWIobi5sZW5ndGgpLG89MDtpZihpK2U+cil0aHJvdyBLKEF0KTtmb3IoO288aTspdGhpc1tlK29dPW5bbysrXX0sS3Q9e2VudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdXQuY2FsbChSdCh0aGlzKSl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gc3QuY2FsbChSdCh0aGlzKSl9LHZhbHVlczpmdW5jdGlvbigpe3JldHVybiBmdC5jYWxsKFJ0KHRoaXMpKX19LEd0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF8odCkmJnRbU3RdJiZcInN5bWJvbFwiIT10eXBlb2YgZSYmZSBpbiB0JiZTdHJpbmcoK2UpPT1TdHJpbmcoZSl9LFZ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEd0KHQsZT15KGUsITApKT9jKDIsdFtlXSk6Rih0LGUpfSxIdD1mdW5jdGlvbih0LGUscil7cmV0dXJuIShHdCh0LGU9eShlLCEwKSkmJl8ocikmJm0ocixcInZhbHVlXCIpKXx8bShyLFwiZ2V0XCIpfHxtKHIsXCJzZXRcIil8fHIuY29uZmlndXJhYmxlfHxtKHIsXCJ3cml0YWJsZVwiKSYmIXIud3JpdGFibGV8fG0ocixcImVudW1lcmFibGVcIikmJiFyLmVudW1lcmFibGU/cSh0LGUscik6KHRbZV09ci52YWx1ZSx0KX07TXR8fChELmY9VnQsei5mPUh0KSxhKGEuUythLkYqIU10LFwiT2JqZWN0XCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcjpWdCxkZWZpbmVQcm9wZXJ0eTpIdH0pLG8oZnVuY3Rpb24oKXt2dC5jYWxsKHt9KX0pJiYodnQ9eXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbHQuY2FsbCh0aGlzKX0pO3ZhciBYdD1sKHt9LER0KTtsKFh0LEt0KSxkKFh0LG10LEt0LnZhbHVlcyksbChYdCx7c2xpY2U6cXQsc2V0OkZ0LGNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7fSx0b1N0cmluZzp2dCx0b0xvY2FsZVN0cmluZzp6dH0pLEN0KFh0LFwiYnVmZmVyXCIsXCJiXCIpLEN0KFh0LFwiYnl0ZU9mZnNldFwiLFwib1wiKSxDdChYdCxcImJ5dGVMZW5ndGhcIixcImxcIiksQ3QoWHQsXCJsZW5ndGhcIixcImVcIikscShYdCxndCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbU3RdfX0pLHQuZXhwb3J0cz1mdW5jdGlvbih0LGUscixzKXtzPSEhczt2YXIgdT10KyhzP1wiQ2xhbXBlZFwiOlwiXCIpK1wiQXJyYXlcIixjPVwiVWludDhBcnJheVwiIT11LGw9XCJnZXRcIit0LHA9XCJzZXRcIit0LHY9aVt1XSx5PXZ8fHt9LG09diYmQSh2KSxnPSF2fHwhZi5BQlYsTT17fSxTPXYmJnZbV10seD1mdW5jdGlvbih0LHIpe3ZhciBuPXQuX2Q7cmV0dXJuIG4udltsXShyKmUrbi5vLHh0KX0sST1mdW5jdGlvbih0LHIsbil7dmFyIGk9dC5fZDtzJiYobj0obj1NYXRoLnJvdW5kKG4pKTwwPzA6bj4yNTU/MjU1OjI1NSZuKSxpLnZbcF0ociplK2kubyxuLHh0KX0sQj1mdW5jdGlvbih0LGUpe3EodCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIEkodGhpcyxlLHQpfSxlbnVtZXJhYmxlOiEwfSl9O2c/KHY9cihmdW5jdGlvbih0LHIsbixpKXtoKHQsdix1LFwiX2RcIik7dmFyIG8sYSxmLHMsYz0wLGw9MDtpZihfKHIpKXtpZighKHIgaW5zdGFuY2VvZiBKfHwocz13KHIpKT09SHx8cz09WCkpcmV0dXJuIFN0IGluIHI/anQodixyKTpOdC5jYWxsKHYscik7bz1yLGw9T3QobixlKTt2YXIgcD1yLmJ5dGVMZW5ndGg7aWYodm9pZCAwPT09aSl7aWYocCVlKXRocm93IEsoQXQpO2lmKGE9cC1sLGE8MCl0aHJvdyBLKEF0KX1lbHNlIGlmKGE9YihpKSplLGErbD5wKXRocm93IEsoQXQpO2Y9YS9lfWVsc2UgZj1CdChyLCEwKSxhPWYqZSxvPW5ldyBKKGEpO2ZvcihkKHQsXCJfZFwiLHtiOm8sbzpsLGw6YSxlOmYsdjpuZXcgJChvKX0pO2M8ZjspQih0LGMrKyl9KSxTPXZbV109RShYdCksZChTLFwiY29uc3RydWN0b3JcIix2KSk6QyhmdW5jdGlvbih0KXtuZXcgdihudWxsKSxuZXcgdih0KX0sITApfHwodj1yKGZ1bmN0aW9uKHQscixuLGkpe2godCx2LHUpO3ZhciBvO3JldHVybiBfKHIpP3IgaW5zdGFuY2VvZiBKfHwobz13KHIpKT09SHx8bz09WD92b2lkIDAhPT1pP25ldyB5KHIsT3QobixlKSxpKTp2b2lkIDAhPT1uP25ldyB5KHIsT3QobixlKSk6bmV3IHkocik6U3QgaW4gcj9qdCh2LHIpOk50LmNhbGwodixyKTpuZXcgeShCdChyLGMpKX0pLFEobSE9PUZ1bmN0aW9uLnByb3RvdHlwZT9rKHkpLmNvbmNhdChrKG0pKTprKHkpLGZ1bmN0aW9uKHQpe3QgaW4gdnx8ZCh2LHQseVt0XSl9KSx2W1ddPVMsbnx8KFMuY29uc3RydWN0b3I9dikpO3ZhciBPPVNbbXRdLFI9ISFPJiYoXCJ2YWx1ZXNcIj09Ty5uYW1lfHx2b2lkIDA9PU8ubmFtZSksUD1LdC52YWx1ZXM7ZCh2LHd0LCEwKSxkKFMsU3QsdSksZChTLEV0LCEwKSxkKFMsX3QsdiksKHM/bmV3IHYoMSlbZ3RdPT11Omd0IGluIFMpfHxxKFMsZ3Qse2dldDpmdW5jdGlvbigpe3JldHVybiB1fX0pLE1bdV09dixhKGEuRythLlcrYS5GKih2IT15KSxNKSxhKGEuUyx1LHtCWVRFU19QRVJfRUxFTUVOVDplLGZyb206TnQsb2Y6THR9KSxZIGluIFN8fGQoUyxZLGUpLGEoYS5QLHUsRHQpLE4odSksYShhLlArYS5GKkl0LHUse3NldDpGdH0pLGEoYS5QK2EuRiohUix1LEt0KSxhKGEuUCthLkYqKFMudG9TdHJpbmchPXZ0KSx1LHt0b1N0cmluZzp2dH0pLGEoYS5QK2EuRipvKGZ1bmN0aW9uKCl7bmV3IHYoMSkuc2xpY2UoKX0pLHUse3NsaWNlOnF0fSksYShhLlArYS5GKihvKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IHYoWzEsMl0pLnRvTG9jYWxlU3RyaW5nKCl9KXx8IW8oZnVuY3Rpb24oKXtTLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLHUse3RvTG9jYWxlU3RyaW5nOnp0fSksalt1XT1SP086UCxufHxSfHxkKFMsbXQsUCl9fWVsc2UgdC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNDgpKFwibWV0YVwiKSxpPXIoNiksbz1yKDEyKSxhPXIoOSkuZixmPTAscz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSx1PSFyKDUpKGZ1bmN0aW9uKCl7cmV0dXJuIHMoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSxoPWZ1bmN0aW9uKHQpe2EodCxuLHt2YWx1ZTp7aTpcIk9cIisgKytmLHc6e319fSl9LGM9ZnVuY3Rpb24odCxlKXtpZighaSh0KSlyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdD90OihcInN0cmluZ1wiPT10eXBlb2YgdD9cIlNcIjpcIlBcIikrdDtpZighbyh0LG4pKXtpZighcyh0KSlyZXR1cm5cIkZcIjtpZighZSlyZXR1cm5cIkVcIjtoKHQpfXJldHVybiB0W25dLml9LGQ9ZnVuY3Rpb24odCxlKXtpZighbyh0LG4pKXtpZighcyh0KSlyZXR1cm4hMDtpZighZSlyZXR1cm4hMTtoKHQpfXJldHVybiB0W25dLnd9LGw9ZnVuY3Rpb24odCl7cmV0dXJuIHUmJnAuTkVFRCYmcyh0KSYmIW8odCxuKSYmaCh0KSx0fSxwPXQuZXhwb3J0cz17S0VZOm4sTkVFRDohMSxmYXN0S2V5OmMsZ2V0V2VhazpkLG9uRnJlZXplOmx9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGZ1bmN0aW9uKHQsZSl7dmFyIHI9TWF0aC5jZWlsLG49TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9uOnIpKHQpfX0sZnVuY3Rpb24odCxlKXt2YXIgcjtyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCk7dHJ5e3I9cnx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfHwoMCxldmFsKShcInRoaXNcIil9Y2F0Y2godCl7XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmKHI9d2luZG93KX10LmV4cG9ydHM9cn0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbil7aWYoISh0IGluc3RhbmNlb2YgZSl8fHZvaWQgMCE9PW4mJm4gaW4gdCl0aHJvdyBUeXBlRXJyb3IocitcIjogaW5jb3JyZWN0IGludm9jYXRpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ITF9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDMpLGk9cigxODApLG89cigxMjEpLGE9cigxMzMpKFwiSUVfUFJPVE9cIiksZj1mdW5jdGlvbigpe30scz1cInByb3RvdHlwZVwiLHU9ZnVuY3Rpb24oKXt2YXIgdCxlPXIoMTIwKShcImlmcmFtZVwiKSxuPW8ubGVuZ3RoLGk9XCI8XCIsYT1cIj5cIjtmb3IoZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLHIoMTIzKS5hcHBlbmRDaGlsZChlKSxlLnNyYz1cImphdmFzY3JpcHQ6XCIsdD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCksdC53cml0ZShpK1wic2NyaXB0XCIrYStcImRvY3VtZW50LkY9T2JqZWN0XCIraStcIi9zY3JpcHRcIithKSx0LmNsb3NlKCksdT10LkY7bi0tOylkZWxldGUgdVtzXVtvW25dXTtyZXR1cm4gdSgpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4gbnVsbCE9PXQ/KGZbc109bih0KSxyPW5ldyBmLGZbc109bnVsbCxyW2FdPXQpOnI9dSgpLHZvaWQgMD09PWU/cjppKHIsZSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxODIpLGk9cigxMjEpLmNvbmNhdChcImxlbmd0aFwiLFwicHJvdG90eXBlXCIpO2UuZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxpKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDE4MiksaT1yKDEyMSk7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbih0KXtyZXR1cm4gbih0LGkpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTUpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7Zm9yKHZhciBpIGluIGUpbih0LGksZVtpXSxyKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDQpLGk9cig5KSxvPXIoOCksYT1yKDcpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9blt0XTtvJiZlJiYhZVthXSYmaS5mKGUsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMzgpLGk9TWF0aC5tYXgsbz1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD1uKHQpLHQ8MD9pKHQrZSwwKTpvKHQsZSl9fSxmdW5jdGlvbih0LGUpe3ZhciByPTAsbj1NYXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIlN5bWJvbChcIi5jb25jYXQodm9pZCAwPT09dD9cIlwiOnQsXCIpX1wiLCgrK3IrbikudG9TdHJpbmcoMzYpKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lO24udXRpbHM9cig1MjcpLG4uY29tbW9uPXIoNTIzKSxuLnNoYT1yKDUyNiksbi5yaXBlbWQ9cig1MjUpLG4uaG1hYz1yKDUyNCksbi5zaGExPW4uc2hhLnNoYTEsbi5zaGEyNTY9bi5zaGEuc2hhMjU2LG4uc2hhMjI0PW4uc2hhLnNoYTIyNCxuLnNoYTM4ND1uLnNoYS5zaGEzODQsbi5zaGE1MTI9bi5zaGEuc2hhNTEyLG4ucmlwZW1kMTYwPW4ucmlwZW1kLnJpcGVtZDE2MH0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi51dGlscz1yKDU2NCksbi5jb21tb249cig1NjApLG4uc2hhPXIoNTYzKSxuLnJpcGVtZD1yKDU2Miksbi5obWFjPXIoNTYxKSxuLnNoYTE9bi5zaGEuc2hhMSxuLnNoYTI1Nj1uLnNoYS5zaGEyNTYsbi5zaGEyMjQ9bi5zaGEuc2hhMjI0LG4uc2hhMzg0PW4uc2hhLnNoYTM4NCxuLnNoYTUxMj1uLnNoYS5zaGE1MTIsbi5yaXBlbWQxNjA9bi5yaXBlbWQucmlwZW1kMTYwfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KHUuY2FsbCh0aGlzLHQpLGguY2FsbCh0aGlzLHQpLHQmJnQucmVhZGFibGU9PT0hMSYmKHRoaXMucmVhZGFibGU9ITEpLHQmJnQud3JpdGFibGU9PT0hMSYmKHRoaXMud3JpdGFibGU9ITEpLHRoaXMuYWxsb3dIYWxmT3Blbj0hMCx0JiZ0LmFsbG93SGFsZk9wZW49PT0hMSYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSksdm9pZCB0aGlzLm9uY2UoXCJlbmRcIixpKSk6bmV3IG4odCl9ZnVuY3Rpb24gaSgpe3RoaXMuYWxsb3dIYWxmT3Blbnx8dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8ZihvLHRoaXMpfWZ1bmN0aW9uIG8odCl7dC5lbmQoKX12YXIgYT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVybiBlfTt0LmV4cG9ydHM9bjt2YXIgZj1yKDE1Nykscz1yKDczKTtzLmluaGVyaXRzPXIoNzQpO3ZhciB1PXIoMjUwKSxoPXIoMTU1KTtzLmluaGVyaXRzKG4sdSk7Zm9yKHZhciBjPWEoaC5wcm90b3R5cGUpLGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGw9Y1tkXTtuLnByb3RvdHlwZVtsXXx8KG4ucHJvdG90eXBlW2xdPWgucHJvdG90eXBlW2xdKX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2lmKHQmJiFzKHQpKXRocm93IG5ldyBFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3QpfWZ1bmN0aW9uIGkodCl7cmV0dXJuIHQudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gbyh0KXt0aGlzLmNoYXJSZWNlaXZlZD10Lmxlbmd0aCUyLHRoaXMuY2hhckxlbmd0aD10aGlzLmNoYXJSZWNlaXZlZD8yOjB9ZnVuY3Rpb24gYSh0KXt0aGlzLmNoYXJSZWNlaXZlZD10Lmxlbmd0aCUzLHRoaXMuY2hhckxlbmd0aD10aGlzLmNoYXJSZWNlaXZlZD8zOjB9dmFyIGY9cigxKS5CdWZmZXIscz1mLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKHQpe3N3aXRjaCh0JiZ0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6Y2FzZVwicmF3XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LHU9ZS5TdHJpbmdEZWNvZGVyPWZ1bmN0aW9uKHQpe3N3aXRjaCh0aGlzLmVuY29kaW5nPSh0fHxcInV0ZjhcIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLV9dLyxcIlwiKSxuKHQpLHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjhcIjp0aGlzLnN1cnJvZ2F0ZVNpemU9MzticmVhaztjYXNlXCJ1Y3MyXCI6Y2FzZVwidXRmMTZsZVwiOnRoaXMuc3Vycm9nYXRlU2l6ZT0yLHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXI9bzticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnN1cnJvZ2F0ZVNpemU9Myx0aGlzLmRldGVjdEluY29tcGxldGVDaGFyPWE7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCh0aGlzLndyaXRlPWkpfXRoaXMuY2hhckJ1ZmZlcj1uZXcgZig2KSx0aGlzLmNoYXJSZWNlaXZlZD0wLHRoaXMuY2hhckxlbmd0aD0wfTt1LnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9XCJcIjt0aGlzLmNoYXJMZW5ndGg7KXt2YXIgcj10Lmxlbmd0aD49dGhpcy5jaGFyTGVuZ3RoLXRoaXMuY2hhclJlY2VpdmVkP3RoaXMuY2hhckxlbmd0aC10aGlzLmNoYXJSZWNlaXZlZDp0Lmxlbmd0aDtpZih0LmNvcHkodGhpcy5jaGFyQnVmZmVyLHRoaXMuY2hhclJlY2VpdmVkLDAsciksdGhpcy5jaGFyUmVjZWl2ZWQrPXIsdGhpcy5jaGFyUmVjZWl2ZWQ8dGhpcy5jaGFyTGVuZ3RoKXJldHVyblwiXCI7dD10LnNsaWNlKHIsdC5sZW5ndGgpLGU9dGhpcy5jaGFyQnVmZmVyLnNsaWNlKDAsdGhpcy5jaGFyTGVuZ3RoKS50b1N0cmluZyh0aGlzLmVuY29kaW5nKTt2YXIgbj1lLmNoYXJDb2RlQXQoZS5sZW5ndGgtMSk7aWYoIShuPj01NTI5NiYmbjw9NTYzMTkpKXtpZih0aGlzLmNoYXJSZWNlaXZlZD10aGlzLmNoYXJMZW5ndGg9MCwwPT09dC5sZW5ndGgpcmV0dXJuIGU7YnJlYWt9dGhpcy5jaGFyTGVuZ3RoKz10aGlzLnN1cnJvZ2F0ZVNpemUsZT1cIlwifXRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIodCk7dmFyIGk9dC5sZW5ndGg7dGhpcy5jaGFyTGVuZ3RoJiYodC5jb3B5KHRoaXMuY2hhckJ1ZmZlciwwLHQubGVuZ3RoLXRoaXMuY2hhclJlY2VpdmVkLGkpLGktPXRoaXMuY2hhclJlY2VpdmVkKSxlKz10LnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCxpKTt2YXIgaT1lLmxlbmd0aC0xLG49ZS5jaGFyQ29kZUF0KGkpO2lmKG4+PTU1Mjk2JiZuPD01NjMxOSl7dmFyIG89dGhpcy5zdXJyb2dhdGVTaXplO3JldHVybiB0aGlzLmNoYXJMZW5ndGgrPW8sdGhpcy5jaGFyUmVjZWl2ZWQrPW8sdGhpcy5jaGFyQnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLG8sMCxvKSx0LmNvcHkodGhpcy5jaGFyQnVmZmVyLDAsMCxvKSxlLnN1YnN0cmluZygwLGkpfXJldHVybiBlfSx1LnByb3RvdHlwZS5kZXRlY3RJbmNvbXBsZXRlQ2hhcj1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg+PTM/Mzp0Lmxlbmd0aDtlPjA7ZS0tKXt2YXIgcj10W3QubGVuZ3RoLWVdO2lmKDE9PWUmJnI+PjU9PTYpe3RoaXMuY2hhckxlbmd0aD0yO2JyZWFrfWlmKGU8PTImJnI+PjQ9PTE0KXt0aGlzLmNoYXJMZW5ndGg9MzticmVha31pZihlPD0zJiZyPj4zPT0zMCl7dGhpcy5jaGFyTGVuZ3RoPTQ7YnJlYWt9fXRoaXMuY2hhclJlY2VpdmVkPWV9LHUucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT1cIlwiO2lmKHQmJnQubGVuZ3RoJiYoZT10aGlzLndyaXRlKHQpKSx0aGlzLmNoYXJSZWNlaXZlZCl7dmFyIHI9dGhpcy5jaGFyUmVjZWl2ZWQsbj10aGlzLmNoYXJCdWZmZXIsaT10aGlzLmVuY29kaW5nO2UrPW4uc2xpY2UoMCxyKS50b1N0cmluZyhpKX1yZXR1cm4gZX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xucmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9cig2MiksZj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG4odGhpcyxlKSxpKHRoaXMsKGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIG8oZSx0KSxlfShhKTt0LmV4cG9ydHM9Zn0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNykoXCJ1bnNjb3BhYmxlc1wiKSxpPUFycmF5LnByb3RvdHlwZTt2b2lkIDA9PWlbbl0mJnIoMTQpKGksbix7fSksdC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lbbl1bdF09ITB9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzMyksaT1yKDE3Niksbz1yKDEyNSksYT1yKDMpLGY9cigxMCkscz1yKDE0MiksdT17fSxoPXt9LGU9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGMsZCl7dmFyIGwscCxiLHYseT1kP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OnModCksbT1uKHIsYyxlPzI6MSksZz0wO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGl0ZXJhYmxlIVwiKTtpZihvKHkpKXtmb3IobD1mKHQubGVuZ3RoKTtsPmc7ZysrKWlmKHY9ZT9tKGEocD10W2ddKVswXSxwWzFdKTptKHRbZ10pLHY9PT11fHx2PT09aClyZXR1cm4gdn1lbHNlIGZvcihiPXkuY2FsbCh0KTshKHA9Yi5uZXh0KCkpLmRvbmU7KWlmKHY9aShiLG0scC52YWx1ZSxlKSx2PT09dXx8dj09PWgpcmV0dXJuIHZ9O2UuQlJFQUs9dSxlLlJFVFVSTj1ofSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoOSkuZixpPXIoMTIpLG89cig3KShcInRvU3RyaW5nVGFnXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUscil7dCYmIWkodD1yP3Q6dC5wcm90b3R5cGUsbykmJm4odCxvLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDI0KSxvPXIoNSksYT1yKDEzOCksZj1cIltcIithK1wiXVwiLHM9XCLigIvChVwiLHU9UmVnRXhwKFwiXlwiK2YrZitcIipcIiksaD1SZWdFeHAoZitmK1wiKiRcIiksYz1mdW5jdGlvbih0LGUscil7dmFyIGk9e30sZj1vKGZ1bmN0aW9uKCl7cmV0dXJuISFhW3RdKCl8fHNbdF0oKSE9c30pLHU9aVt0XT1mP2UoZCk6YVt0XTtyJiYoaVtyXT11KSxuKG4uUCtuLkYqZixcIlN0cmluZ1wiLGkpfSxkPWMudHJpbT1mdW5jdGlvbih0LGUpe3JldHVybiB0PVN0cmluZyhpKHQpKSwxJmUmJih0PXQucmVwbGFjZSh1LFwiXCIpKSwyJmUmJih0PXQucmVwbGFjZShoLFwiXCIpKSx0fTt0LmV4cG9ydHM9Y30sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe3UuY2FsbCh0aGlzLFwiZGlnZXN0XCIpLHRoaXMuX2hhc2g9dCx0aGlzLmJ1ZmZlcnM9W119ZnVuY3Rpb24gaSh0KXt1LmNhbGwodGhpcyxcImRpZ2VzdFwiKSx0aGlzLl9oYXNoPXR9dmFyIG89cigyKSxhPXIoMTA1KSxmPXIoNTY3KSxzPXIoNTY4KSx1PXIoNTY2KTtvKG4sdSksbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXt0aGlzLmJ1ZmZlcnMucHVzaCh0KX0sbi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5jb25jYXQodGhpcy5idWZmZXJzKSxyPXRoaXMuX2hhc2godCk7cmV0dXJuIHRoaXMuYnVmZmVycz1udWxsLHJ9LG8oaSx1KSxpLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuX2hhc2gudXBkYXRlKHQpfSxpLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGFzaC5kaWdlc3QoKX0sdC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PXQudG9Mb3dlckNhc2UoKSxcIm1kNVwiPT09dD9uZXcgbihhKTpcInJtZDE2MFwiPT09dHx8XCJyaXBlbWQxNjBcIj09PXQ/bmV3IG4oZik6bmV3IGkocyh0KSl9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKHQscil7dGhpcy5fYmxvY2s9bmV3IGUodCksdGhpcy5fZmluYWxTaXplPXIsdGhpcy5fYmxvY2tTaXplPXQsdGhpcy5fbGVuPTAsdGhpcy5fcz0wfXIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYocj1yfHxcInV0ZjhcIix0PW5ldyBlKHQscikpO2Zvcih2YXIgbj10aGlzLl9sZW4rPXQubGVuZ3RoLGk9dGhpcy5fc3x8MCxvPTAsYT10aGlzLl9ibG9jaztpPG47KXtmb3IodmFyIGY9TWF0aC5taW4odC5sZW5ndGgsbyt0aGlzLl9ibG9ja1NpemUtaSV0aGlzLl9ibG9ja1NpemUpLHM9Zi1vLHU9MDt1PHM7dSsrKWFbaSV0aGlzLl9ibG9ja1NpemUrdV09dFt1K29dO2krPXMsbys9cyxpJXRoaXMuX2Jsb2NrU2l6ZT09PTAmJnRoaXMuX3VwZGF0ZShhKX1yZXR1cm4gdGhpcy5fcz1pLHRoaXN9LHIucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbih0KXt2YXIgZT04KnRoaXMuX2xlbjt0aGlzLl9ibG9ja1t0aGlzLl9sZW4ldGhpcy5fYmxvY2tTaXplXT0xMjgsdGhpcy5fYmxvY2suZmlsbCgwLHRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemUrMSksZSUoOCp0aGlzLl9ibG9ja1NpemUpPj04KnRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSksdGhpcy5fYmxvY2sud3JpdGVJbnQzMkJFKGUsdGhpcy5fYmxvY2tTaXplLTQpO3ZhciByPXRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayl8fHRoaXMuX2hhc2goKTtyZXR1cm4gdD9yLnRvU3RyaW5nKHQpOnJ9LHIucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NcIil9LHQuZXhwb3J0cz1yfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlLHIsbil7ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcihcInNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExXCIpfWZ1bmN0aW9uIG8odCxpKXtpZih0PjY1NTM2KXRocm93IG5ldyBFcnJvcihcInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXNcIik7dmFyIG89bmV3IGUuVWludDhBcnJheSh0KTt0PjAmJmEuZ2V0UmFuZG9tVmFsdWVzKG8pO3ZhciBmPW5ldyByKG8uYnVmZmVyKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBpP24ubmV4dFRpY2soZnVuY3Rpb24oKXtpKG51bGwsZil9KTpmfXZhciBhPWUuY3J5cHRvfHxlLm1zQ3J5cHRvO2EmJmEuZ2V0UmFuZG9tVmFsdWVzP3QuZXhwb3J0cz1vOnQuZXhwb3J0cz1pfSkuY2FsbChlLHIoMzkpLHIoMSkuQnVmZmVyLHIoMjYpKX0sZnVuY3Rpb24odCxlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9ZnVuY3Rpb24gaSh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfXZhciBvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpO3ZhciBpPW4odGhpcywoZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSkuY2FsbCh0aGlzKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLFwibWVzc2FnZVwiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTp2b2lkIDAhPT10P1N0cmluZyh0KTpcIlwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksXCJuYW1lXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOmkuY29uc3RydWN0b3IubmFtZX0pLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShpLGkuY29uc3RydWN0b3IpLGl9cmV0dXJuIGkoZSx0KSxlfShFcnJvcik7dC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX12YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHImJnQoZS5wcm90b3R5cGUsciksbiYmdChlLG4pLGV9fSgpLG89cigxMTUpLGE9cig3NSksZj1yKDkwKSxzPXIoOTEpLHU9cigyMDEpLGg9cigxMTYpLGM9cigxNTkpLGQ9cigxMTMpLGw9L15jZjooWzEtOWEtZl1bMC05YS1mXXswLDN9fDApOlthLXpBLVowLTlfLV0qJC8scD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtuKHRoaXMsdCl9cmV0dXJuIGkodCxbe2tleTpcImdldFR5cGVJZFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuVFlQRV9JRH19LHtrZXk6XCJnZXRCaXRtYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5GRUFUVVJFX0JJVE1BU0t9fSx7a2V5OlwiZ2V0Q29uZGl0aW9uXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgYTtyZXR1cm4gdC5zZXRUeXBlSWQodGhpcy5nZXRUeXBlSWQoKSksdC5zZXRCaXRtYXNrKHRoaXMuZ2V0Qml0bWFzaygpKSx0LnNldEhhc2godGhpcy5nZW5lcmF0ZUhhc2goKSksdC5zZXRNYXhGdWxmaWxsbWVudExlbmd0aCh0aGlzLmNhbGN1bGF0ZU1heEZ1bGZpbGxtZW50TGVuZ3RoKCkpLHR9fSx7a2V5OlwiZ2V0Q29uZGl0aW9uVXJpXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRDb25kaXRpb24oKS5zZXJpYWxpemVVcmkoKX19LHtrZXk6XCJnZXRDb25kaXRpb25CaW5hcnlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldENvbmRpdGlvbigpLnNlcmlhbGl6ZUJpbmFyeSgpfX0se2tleTpcImdlbmVyYXRlSGFzaFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGEgc3ViY2xhc3NcIil9fSx7a2V5OlwiY2FsY3VsYXRlTWF4RnVsZmlsbG1lbnRMZW5ndGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBmO3JldHVybiB0aGlzLndyaXRlUGF5bG9hZCh0KSx0LmdldFNpemUoKX19LHtrZXk6XCJzZXJpYWxpemVVcmlcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVyblwiY2Y6XCIrdGhpcy5nZXRUeXBlSWQoKS50b1N0cmluZygxNikrXCI6XCIraC5lbmNvZGUodGhpcy5zZXJpYWxpemVQYXlsb2FkKCkpfX0se2tleTpcInNlcmlhbGl6ZUJpbmFyeVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHM7cmV0dXJuIHQud3JpdGVVSW50MTYodGhpcy5nZXRUeXBlSWQoKSksdC53cml0ZVZhck9jdGV0U3RyaW5nKHRoaXMuc2VyaWFsaXplUGF5bG9hZCgpKSx0LmdldEJ1ZmZlcigpfX0se2tleTpcInNlcmlhbGl6ZVBheWxvYWRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBzO3JldHVybiB0aGlzLndyaXRlUGF5bG9hZCh0KSx0LmdldEJ1ZmZlcigpfX0se2tleTpcInZhbGlkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIil9fV0sW3trZXk6XCJmcm9tVXJpXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHQpcmV0dXJuIGU7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiU2VyaWFsaXplZCBmdWxmaWxsbWVudCBtdXN0IGJlIGEgc3RyaW5nXCIpO3ZhciByPWUuc3BsaXQoXCI6XCIpO2lmKFwiY2ZcIiE9PXJbMF0pdGhyb3cgbmV3IGMoJ1NlcmlhbGl6ZWQgZnVsZmlsbG1lbnQgbXVzdCBzdGFydCB3aXRoIFwiY2Y6XCInKTtpZighdC5SRUdFWC5leGVjKGUpKXRocm93IG5ldyBkKFwiSW52YWxpZCBmdWxmaWxsbWVudCBmb3JtYXRcIik7dmFyIG49cGFyc2VJbnQoclsxXSwxNiksaT1oLmRlY29kZShyWzJdKSxhPW8uZ2V0Q2xhc3NGcm9tVHlwZUlkKG4pLGY9bmV3IGE7cmV0dXJuIGYucGFyc2VQYXlsb2FkKHUuZnJvbShpKSxpLmxlbmd0aCksZn19LHtrZXk6XCJmcm9tQmluYXJ5XCIsdmFsdWU6ZnVuY3Rpb24odCl7dD11LmZyb20odCk7dmFyIGU9by5nZXRDbGFzc0Zyb21UeXBlSWQodC5yZWFkVUludDE2KCkpLHI9bmV3IGUsbj10LnJlYWRMZW5ndGhQcmVmaXgoKTtyZXR1cm4gci5wYXJzZVBheWxvYWQodCxuKSxyfX1dKSx0fSgpO3AuUkVHRVg9bCx0LmV4cG9ydHM9cH0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjMpLGk9cig3KShcInRvU3RyaW5nVGFnXCIpLG89XCJBcmd1bWVudHNcIj09bihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLGE9ZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIHRbZV19Y2F0Y2godCl7fX07dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsZjtyZXR1cm4gdm9pZCAwPT09dD9cIlVuZGVmaW5lZFwiOm51bGw9PT10P1wiTnVsbFwiOlwic3RyaW5nXCI9PXR5cGVvZihyPWEoZT1PYmplY3QodCksaSkpP3I6bz9uKGUpOlwiT2JqZWN0XCI9PShmPW4oZSkpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxlZT9cIkFyZ3VtZW50c1wiOmZ9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigyMyk7dC5leHBvcnRzPU9iamVjdChcInpcIikucHJvcGVydHlJc0VudW1lcmFibGUoMCk/T2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVyblwiU3RyaW5nXCI9PW4odCk/dC5zcGxpdChcIlwiKTpPYmplY3QodCl9fSxmdW5jdGlvbih0LGUpe2UuZj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxyKXtmb3IodmFyIG49TWF0aC5taW4odC5sZW5ndGgsci5sZW5ndGgpLGk9bmV3IGUobiksbz0wO288bjsrK28paVtvXT10W29dXnJbb107cmV0dXJuIGl9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi5SZXBvcnRlcj1yKDUzMikuUmVwb3J0ZXIsbi5EZWNvZGVyQnVmZmVyPXIoMjE0KS5EZWNvZGVyQnVmZmVyLG4uRW5jb2RlckJ1ZmZlcj1yKDIxNCkuRW5jb2RlckJ1ZmZlcixuLk5vZGU9cig1MzEpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj1NYXRoLm1pbih0Lmxlbmd0aCxyLmxlbmd0aCksaT1uZXcgZShuKSxvPTA7bzxuOysrbylpW29dPXRbb11ecltvXTtyZXR1cm4gaX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoZXx8XCJBc3NlcnRpb24gZmFpbGVkXCIpfWZ1bmN0aW9uIGkodCxlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIG8odCxlLHIpe3JldHVybiBvLmlzQk4odCk/dDoodGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsdm9pZChudWxsIT09dCYmKFwibGVcIiE9PWUmJlwiYmVcIiE9PWV8fChyPWUsZT0xMCksdGhpcy5faW5pdCh0fHwwLGV8fDEwLHJ8fFwiYmVcIikpKSl9ZnVuY3Rpb24gYSh0LGUscil7Zm9yKHZhciBuPTAsaT1NYXRoLm1pbih0Lmxlbmd0aCxyKSxvPWU7bzxpO28rKyl7dmFyIGE9dC5jaGFyQ29kZUF0KG8pLTQ4O248PD00LG58PWE+PTQ5JiZhPD01ND9hLTQ5KzEwOmE+PTE3JiZhPD0yMj9hLTE3KzEwOjE1JmF9cmV0dXJuIG59ZnVuY3Rpb24gZih0LGUscixuKXtmb3IodmFyIGk9MCxvPU1hdGgubWluKHQubGVuZ3RoLHIpLGE9ZTthPG87YSsrKXt2YXIgZj10LmNoYXJDb2RlQXQoYSktNDg7aSo9bixpKz1mPj00OT9mLTQ5KzEwOmY+PTE3P2YtMTcrMTA6Zn1yZXR1cm4gaX1mdW5jdGlvbiBzKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5iaXRMZW5ndGgoKSkscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1yLzI2fDAsaT1yJTI2O2Vbcl09KHQud29yZHNbbl0mMTw8aSk+Pj5pfXJldHVybiBlfWZ1bmN0aW9uIHUodCxlLHIpe3IubmVnYXRpdmU9ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlO3ZhciBuPXQubGVuZ3RoK2UubGVuZ3RofDA7ci5sZW5ndGg9bixuPW4tMXwwO3ZhciBpPTB8dC53b3Jkc1swXSxvPTB8ZS53b3Jkc1swXSxhPWkqbyxmPTY3MTA4ODYzJmEscz1hLzY3MTA4ODY0fDA7ci53b3Jkc1swXT1mO2Zvcih2YXIgdT0xO3U8bjt1Kyspe2Zvcih2YXIgaD1zPj4+MjYsYz02NzEwODg2MyZzLGQ9TWF0aC5taW4odSxlLmxlbmd0aC0xKSxsPU1hdGgubWF4KDAsdS10Lmxlbmd0aCsxKTtsPD1kO2wrKyl7dmFyIHA9dS1sfDA7aT0wfHQud29yZHNbcF0sbz0wfGUud29yZHNbbF0sYT1pKm8rYyxoKz1hLzY3MTA4ODY0fDAsYz02NzEwODg2MyZhfXIud29yZHNbdV09MHxjLHM9MHxofXJldHVybiAwIT09cz9yLndvcmRzW3VdPTB8czpyLmxlbmd0aC0tLHIuc3RyaXAoKX1mdW5jdGlvbiBoKHQsZSxyKXtyLm5lZ2F0aXZlPWUubmVnYXRpdmVedC5uZWdhdGl2ZSxyLmxlbmd0aD10Lmxlbmd0aCtlLmxlbmd0aDtmb3IodmFyIG49MCxpPTAsbz0wO288ci5sZW5ndGgtMTtvKyspe3ZhciBhPWk7aT0wO2Zvcih2YXIgZj02NzEwODg2MyZuLHM9TWF0aC5taW4obyxlLmxlbmd0aC0xKSx1PU1hdGgubWF4KDAsby10Lmxlbmd0aCsxKTt1PD1zO3UrKyl7dmFyIGg9by11LGM9MHx0LndvcmRzW2hdLGQ9MHxlLndvcmRzW3VdLGw9YypkLHA9NjcxMDg4NjMmbDthPWErKGwvNjcxMDg4NjR8MCl8MCxwPXArZnwwLGY9NjcxMDg4NjMmcCxhPWErKHA+Pj4yNil8MCxpKz1hPj4+MjYsYSY9NjcxMDg4NjN9ci53b3Jkc1tvXT1mLG49YSxhPWl9cmV0dXJuIDAhPT1uP3Iud29yZHNbb109bjpyLmxlbmd0aC0tLHIuc3RyaXAoKX1mdW5jdGlvbiBjKHQsZSxyKXt2YXIgbj1uZXcgZDtyZXR1cm4gbi5tdWxwKHQsZSxyKX1mdW5jdGlvbiBkKHQsZSl7dGhpcy54PXQsdGhpcy55PWV9ZnVuY3Rpb24gbCh0LGUpe3RoaXMubmFtZT10LHRoaXMucD1uZXcgbyhlLDE2KSx0aGlzLm49dGhpcy5wLmJpdExlbmd0aCgpLHRoaXMuaz1uZXcgbygxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCksdGhpcy50bXA9dGhpcy5fdG1wKCl9ZnVuY3Rpb24gcCgpe2wuY2FsbCh0aGlzLFwiazI1NlwiLFwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmZcIil9ZnVuY3Rpb24gYigpe2wuY2FsbCh0aGlzLFwicDIyNFwiLFwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDFcIil9ZnVuY3Rpb24gdigpe2wuY2FsbCh0aGlzLFwicDE5MlwiLFwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmZcIil9ZnVuY3Rpb24geSgpe2wuY2FsbCh0aGlzLFwiMjU1MTlcIixcIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWRcIil9ZnVuY3Rpb24gbSh0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7dmFyIGU9by5fcHJpbWUodCk7dGhpcy5tPWUucCx0aGlzLnByaW1lPWV9ZWxzZSBuKHQuZ3RuKDEpLFwibW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxXCIpLHRoaXMubT10LHRoaXMucHJpbWU9bnVsbH1mdW5jdGlvbiBnKHQpe20uY2FsbCh0aGlzLHQpLHRoaXMuc2hpZnQ9dGhpcy5tLmJpdExlbmd0aCgpLHRoaXMuc2hpZnQlMjYhPT0wJiYodGhpcy5zaGlmdCs9MjYtdGhpcy5zaGlmdCUyNiksdGhpcy5yPW5ldyBvKDEpLml1c2hsbih0aGlzLnNoaWZ0KSx0aGlzLnIyPXRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpLHRoaXMucmludj10aGlzLnIuX2ludm1wKHRoaXMubSksdGhpcy5taW52PXRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5taW52LnVtb2QodGhpcy5yKSx0aGlzLm1pbnY9dGhpcy5yLnN1Yih0aGlzLm1pbnYpfVwib2JqZWN0XCI9PXR5cGVvZiB0P3QuZXhwb3J0cz1vOmUuQk49byxvLkJOPW8sby53b3JkU2l6ZT0yNjt2YXIgdzt0cnl7dz1yKDEpLkJ1ZmZlcn1jYXRjaCh0KXt9by5pc0JOPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygb3x8bnVsbCE9PXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZ0LmNvbnN0cnVjdG9yLndvcmRTaXplPT09by53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheSh0LndvcmRzKX0sby5tYXg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbXAoZSk+MD90OmV9LG8ubWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY21wKGUpPDA/dDplfSxvLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0LGUscil7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIodCxlLHIpO2lmKFwib2JqZWN0XCI9PXR5cGVvZiB0KXJldHVybiB0aGlzLl9pbml0QXJyYXkodCxlLHIpO1wiaGV4XCI9PT1lJiYoZT0xNiksbihlPT09KDB8ZSkmJmU+PTImJmU8PTM2KSx0PXQudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csXCJcIik7dmFyIGk9MDtcIi1cIj09PXRbMF0mJmkrKywxNj09PWU/dGhpcy5fcGFyc2VIZXgodCxpKTp0aGlzLl9wYXJzZUJhc2UodCxlLGkpLFwiLVwiPT09dFswXSYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpLFwibGVcIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLHIpfSxvLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbih0LGUscil7dDwwJiYodGhpcy5uZWdhdGl2ZT0xLHQ9LXQpLHQ8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJnRdLHRoaXMubGVuZ3RoPTEpOnQ8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmdCx0LzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToobih0PDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJnQsdC82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSxcImxlXCI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksZSxyKX0sby5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbih0LGUscil7aWYobihcIm51bWJlclwiPT10eXBlb2YgdC5sZW5ndGgpLHQubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKHQubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl0aGlzLndvcmRzW2ldPTA7dmFyIG8sYSxmPTA7aWYoXCJiZVwiPT09cilmb3IoaT10Lmxlbmd0aC0xLG89MDtpPj0wO2ktPTMpYT10W2ldfHRbaS0xXTw8OHx0W2ktMl08PDE2LHRoaXMud29yZHNbb118PWE8PGYmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1mJjY3MTA4ODYzLGYrPTI0LGY+PTI2JiYoZi09MjYsbysrKTtlbHNlIGlmKFwibGVcIj09PXIpZm9yKGk9MCxvPTA7aTx0Lmxlbmd0aDtpKz0zKWE9dFtpXXx0W2krMV08PDh8dFtpKzJdPDwxNix0aGlzLndvcmRzW29dfD1hPDxmJjY3MTA4ODYzLHRoaXMud29yZHNbbysxXT1hPj4+MjYtZiY2NzEwODg2MyxmKz0yNCxmPj0yNiYmKGYtPTI2LG8rKyk7cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuX3BhcnNlSGV4PWZ1bmN0aW9uKHQsZSl7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKCh0Lmxlbmd0aC1lKS82KSx0aGlzLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciByPTA7cjx0aGlzLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT0wO3ZhciBuLGksbz0wO2ZvcihyPXQubGVuZ3RoLTYsbj0wO3I+PWU7ci09NilpPWEodCxyLHIrNiksdGhpcy53b3Jkc1tuXXw9aTw8byY2NzEwODg2Myx0aGlzLndvcmRzW24rMV18PWk+Pj4yNi1vJjQxOTQzMDMsbys9MjQsbz49MjYmJihvLT0yNixuKyspO3IrNiE9PWUmJihpPWEodCxlLHIrNiksdGhpcy53b3Jkc1tuXXw9aTw8byY2NzEwODg2Myx0aGlzLndvcmRzW24rMV18PWk+Pj4yNi1vJjQxOTQzMDMpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuX3BhcnNlQmFzZT1mdW5jdGlvbih0LGUscil7dGhpcy53b3Jkcz1bMF0sdGhpcy5sZW5ndGg9MTtmb3IodmFyIG49MCxpPTE7aTw9NjcxMDg4NjM7aSo9ZSluKys7bi0tLGk9aS9lfDA7Zm9yKHZhciBvPXQubGVuZ3RoLXIsYT1vJW4scz1NYXRoLm1pbihvLG8tYSkrcix1PTAsaD1yO2g8cztoKz1uKXU9Zih0LGgsaCtuLGUpLHRoaXMuaW11bG4oaSksdGhpcy53b3Jkc1swXSt1PDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXU6dGhpcy5faWFkZG4odSk7aWYoMCE9PWEpe3ZhciBjPTE7Zm9yKHU9Zih0LGgsdC5sZW5ndGgsZSksaD0wO2g8YTtoKyspYyo9ZTt0aGlzLmltdWxuKGMpLHRoaXMud29yZHNbMF0rdTw2NzEwODg2ND90aGlzLndvcmRzWzBdKz11OnRoaXMuX2lhZGRuKHUpfX0sby5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXt0LndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCk7Zm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aDtlKyspdC53b3Jkc1tlXT10aGlzLndvcmRzW2VdO3QubGVuZ3RoPXRoaXMubGVuZ3RoLHQubmVnYXRpdmU9dGhpcy5uZWdhdGl2ZSx0LnJlZD10aGlzLnJlZH0sby5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgbyhudWxsKTtyZXR1cm4gdGhpcy5jb3B5KHQpLHR9LG8ucHJvdG90eXBlLl9leHBhbmQ9ZnVuY3Rpb24odCl7Zm9yKDt0aGlzLmxlbmd0aDx0Oyl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLnN0cmlwPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXTspdGhpcy5sZW5ndGgtLTtyZXR1cm4gdGhpcy5fbm9ybVNpZ24oKX0sby5wcm90b3R5cGUuX25vcm1TaWduPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF0mJih0aGlzLm5lZ2F0aXZlPTApLHRoaXN9LG8ucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5yZWQ/XCI8Qk4tUjogXCI6XCI8Qk46IFwiKSt0aGlzLnRvU3RyaW5nKDE2KStcIj5cIn07dmFyIF89W1wiXCIsXCIwXCIsXCIwMFwiLFwiMDAwXCIsXCIwMDAwXCIsXCIwMDAwMFwiLFwiMDAwMDAwXCIsXCIwMDAwMDAwXCIsXCIwMDAwMDAwMFwiLFwiMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFwiLFwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCJdLE09WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sUz1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtvLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbih0LGUpe3Q9dHx8MTAsZT0wfGV8fDE7dmFyIHI7aWYoMTY9PT10fHxcImhleFwiPT09dCl7cj1cIlwiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBmPXRoaXMud29yZHNbYV0scz0oMTY3NzcyMTUmKGY8PGl8bykpLnRvU3RyaW5nKDE2KTtvPWY+Pj4yNC1pJjE2Nzc3MjE1LHI9MCE9PW98fGEhPT10aGlzLmxlbmd0aC0xP19bNi1zLmxlbmd0aF0rcytyOnMrcixpKz0yLGk+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJWUhPT0wOylyPVwiMFwiK3I7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYocj1cIi1cIityKSxyfWlmKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpe3ZhciB1PU1bdF0saD1TW3RdO3I9XCJcIjt2YXIgYz10aGlzLmNsb25lKCk7Zm9yKGMubmVnYXRpdmU9MDshYy5pc1plcm8oKTspe3ZhciBkPWMubW9kbihoKS50b1N0cmluZyh0KTtjPWMuaWRpdm4oaCkscj1jLmlzWmVybygpP2QrcjpfW3UtZC5sZW5ndGhdK2Qrcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9XCIwXCIrcik7ci5sZW5ndGglZSE9PTA7KXI9XCIwXCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPVwiLVwiK3IpLHJ9bighMSxcIkJhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzZcIil9LG8ucHJvdG90eXBlLnRvTnVtYmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53b3Jkc1swXTtyZXR1cm4gMj09PXRoaXMubGVuZ3RoP3QrPTY3MTA4ODY0KnRoaXMud29yZHNbMV06Mz09PXRoaXMubGVuZ3RoJiYxPT09dGhpcy53b3Jkc1syXT90Kz00NTAzNTk5NjI3MzcwNDk2KzY3MTA4ODY0KnRoaXMud29yZHNbMV06dGhpcy5sZW5ndGg+MiYmbighMSxcIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0c1wiKSwwIT09dGhpcy5uZWdhdGl2ZT8tdDp0fSxvLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygxNil9LG8ucHJvdG90eXBlLnRvQnVmZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHcpLHRoaXMudG9BcnJheUxpa2Uodyx0LGUpfSxvLnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksdCxlKX0sby5wcm90b3R5cGUudG9BcnJheUxpa2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBpPXRoaXMuYnl0ZUxlbmd0aCgpLG89cnx8TWF0aC5tYXgoMSxpKTtuKGk8PW8sXCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoXCIpLG4obz4wLFwiUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwXCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxmLHM9XCJsZVwiPT09ZSx1PW5ldyB0KG8pLGg9dGhpcy5jbG9uZSgpO2lmKHMpe2ZvcihmPTA7IWguaXNaZXJvKCk7ZisrKWE9aC5hbmRsbigyNTUpLGguaXVzaHJuKDgpLHVbZl09YTtmb3IoO2Y8bztmKyspdVtmXT0wfWVsc2V7Zm9yKGY9MDtmPG8taTtmKyspdVtmXT0wO2ZvcihmPTA7IWguaXNaZXJvKCk7ZisrKWE9aC5hbmRsbigyNTUpLGguaXVzaHJuKDgpLHVbby1mLTFdPWF9cmV0dXJuIHV9LE1hdGguY2x6MzI/by5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbih0KXtyZXR1cm4gMzItTWF0aC5jbHozMih0KX06by5wcm90b3R5cGUuX2NvdW50Qml0cz1mdW5jdGlvbih0KXt2YXIgZT10LHI9MDtyZXR1cm4gZT49NDA5NiYmKHIrPTEzLGU+Pj49MTMpLGU+PTY0JiYocis9NyxlPj4+PTcpLGU+PTgmJihyKz00LGU+Pj49NCksZT49MiYmKHIrPTIsZT4+Pj0yKSxyK2V9LG8ucHJvdG90eXBlLl96ZXJvQml0cz1mdW5jdGlvbih0KXtpZigwPT09dClyZXR1cm4gMjY7dmFyIGU9dCxyPTA7cmV0dXJuIDA9PT0oODE5MSZlKSYmKHIrPTEzLGU+Pj49MTMpLDA9PT0oMTI3JmUpJiYocis9NyxlPj4+PTcpLDA9PT0oMTUmZSkmJihyKz00LGU+Pj49NCksMD09PSgzJmUpJiYocis9MixlPj4+PTIpLDA9PT0oMSZlKSYmcisrLHJ9LG8ucHJvdG90eXBlLmJpdExlbmd0aD1mdW5jdGlvbigpe3ZhciB0PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV0sZT10aGlzLl9jb3VudEJpdHModCk7cmV0dXJuIDI2Kih0aGlzLmxlbmd0aC0xKStlfSxvLnByb3RvdHlwZS56ZXJvQml0cz1mdW5jdGlvbigpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIDA7Zm9yKHZhciB0PTAsZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgcj10aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2VdKTtpZih0Kz1yLDI2IT09cilicmVha31yZXR1cm4gdH0sby5wcm90b3R5cGUuYnl0ZUxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKS84KX0sby5wcm90b3R5cGUudG9Ud29zPWZ1bmN0aW9uKHQpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT90aGlzLmFicygpLmlub3RuKHQpLmlhZGRuKDEpOnRoaXMuY2xvbmUoKX0sby5wcm90b3R5cGUuZnJvbVR3b3M9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGVzdG4odC0xKT90aGlzLm5vdG4odCkuaWFkZG4oMSkuaW5lZygpOnRoaXMuY2xvbmUoKX0sby5wcm90b3R5cGUuaXNOZWc9ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmV9LG8ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaW5lZygpfSxvLnByb3RvdHlwZS5pbmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNaZXJvKCl8fCh0aGlzLm5lZ2F0aXZlXj0xKSx0aGlzfSxvLnByb3RvdHlwZS5pdW9yPWZ1bmN0aW9uKHQpe2Zvcig7dGhpcy5sZW5ndGg8dC5sZW5ndGg7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLndvcmRzW2VdPXRoaXMud29yZHNbZV18dC53b3Jkc1tlXTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pb3I9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09PSh0aGlzLm5lZ2F0aXZlfHQubmVnYXRpdmUpKSx0aGlzLml1b3IodCl9LG8ucHJvdG90eXBlLm9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaW9yKHQpOnQuY2xvbmUoKS5pb3IodGhpcyl9LG8ucHJvdG90eXBlLnVvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1b3IodCk6dC5jbG9uZSgpLml1b3IodGhpcyl9LG8ucHJvdG90eXBlLml1YW5kPWZ1bmN0aW9uKHQpe3ZhciBlO2U9dGhpcy5sZW5ndGg+dC5sZW5ndGg/dDp0aGlzO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09dGhpcy53b3Jkc1tyXSZ0LndvcmRzW3JdO3JldHVybiB0aGlzLmxlbmd0aD1lLmxlbmd0aCx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4oMD09PSh0aGlzLm5lZ2F0aXZlfHQubmVnYXRpdmUpKSx0aGlzLml1YW5kKHQpfSxvLnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pYW5kKHQpOnQuY2xvbmUoKS5pYW5kKHRoaXMpfSxvLnByb3RvdHlwZS51YW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVhbmQodCk6dC5jbG9uZSgpLml1YW5kKHRoaXMpfSxvLnByb3RvdHlwZS5pdXhvcj1mdW5jdGlvbih0KXt2YXIgZSxyO3RoaXMubGVuZ3RoPnQubGVuZ3RoPyhlPXRoaXMscj10KTooZT10LHI9dGhpcyk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspdGhpcy53b3Jkc1tuXT1lLndvcmRzW25dXnIud29yZHNbbl07aWYodGhpcyE9PWUpZm9yKDtuPGUubGVuZ3RoO24rKyl0aGlzLndvcmRzW25dPWUud29yZHNbbl07cmV0dXJuIHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaXhvcj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXV4b3IodCl9LG8ucHJvdG90eXBlLnhvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml4b3IodCk6dC5jbG9uZSgpLml4b3IodGhpcyl9LG8ucHJvdG90eXBlLnV4b3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdXhvcih0KTp0LmNsb25lKCkuaXV4b3IodGhpcyl9LG8ucHJvdG90eXBlLmlub3RuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPTB8TWF0aC5jZWlsKHQvMjYpLHI9dCUyNjt0aGlzLl9leHBhbmQoZSkscj4wJiZlLS07Zm9yKHZhciBpPTA7aTxlO2krKyl0aGlzLndvcmRzW2ldPTY3MTA4ODYzJn50aGlzLndvcmRzW2ldO3JldHVybiByPjAmJih0aGlzLndvcmRzW2ldPX50aGlzLndvcmRzW2ldJjY3MTA4ODYzPj4yNi1yKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih0KX0sby5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbih0LGUpe24oXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+PTApO3ZhciByPXQvMjZ8MCxpPXQlMjY7cmV0dXJuIHRoaXMuX2V4cGFuZChyKzEpLGU/dGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdfDE8PGk6dGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJn4oMTw8aSksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKHQpe3ZhciBlO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZSlyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLGU9dGhpcy5pc3ViKHQpLHRoaXMubmVnYXRpdmVePTEsdGhpcy5fbm9ybVNpZ24oKTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmUpcmV0dXJuIHQubmVnYXRpdmU9MCxlPXRoaXMuaXN1Yih0KSx0Lm5lZ2F0aXZlPTEsZS5fbm9ybVNpZ24oKTt2YXIgcixuO3RoaXMubGVuZ3RoPnQubGVuZ3RoPyhyPXRoaXMsbj10KToocj10LG49dGhpcyk7Zm9yKHZhciBpPTAsbz0wO288bi5sZW5ndGg7bysrKWU9KDB8ci53b3Jkc1tvXSkrKDB8bi53b3Jkc1tvXSkraSx0aGlzLndvcmRzW29dPTY3MTA4ODYzJmUsaT1lPj4+MjY7Zm9yKDswIT09aSYmbzxyLmxlbmd0aDtvKyspZT0oMHxyLndvcmRzW29dKStpLHRoaXMud29yZHNbb109NjcxMDg4NjMmZSxpPWU+Pj4yNjtpZih0aGlzLmxlbmd0aD1yLmxlbmd0aCwwIT09aSl0aGlzLndvcmRzW3RoaXMubGVuZ3RoXT1pLHRoaXMubGVuZ3RoKys7ZWxzZSBpZihyIT09dGhpcylmb3IoO288ci5sZW5ndGg7bysrKXRoaXMud29yZHNbb109ci53b3Jkc1tvXTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiAwIT09dC5uZWdhdGl2ZSYmMD09PXRoaXMubmVnYXRpdmU/KHQubmVnYXRpdmU9MCxlPXRoaXMuc3ViKHQpLHQubmVnYXRpdmVePTEsZSk6MD09PXQubmVnYXRpdmUmJjAhPT10aGlzLm5lZ2F0aXZlPyh0aGlzLm5lZ2F0aXZlPTAsZT10LnN1Yih0aGlzKSx0aGlzLm5lZ2F0aXZlPTEsZSk6dGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhZGQodCk6dC5jbG9uZSgpLmlhZGQodGhpcyl9LG8ucHJvdG90eXBlLmlzdWI9ZnVuY3Rpb24odCl7aWYoMCE9PXQubmVnYXRpdmUpe3QubmVnYXRpdmU9MDt2YXIgZT10aGlzLmlhZGQodCk7cmV0dXJuIHQubmVnYXRpdmU9MSxlLl9ub3JtU2lnbigpfWlmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzLl9ub3JtU2lnbigpO3ZhciByPXRoaXMuY21wKHQpO2lmKDA9PT1yKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpczt2YXIgbixpO3I+MD8obj10aGlzLGk9dCk6KG49dCxpPXRoaXMpO2Zvcih2YXIgbz0wLGE9MDthPGkubGVuZ3RoO2ErKyllPSgwfG4ud29yZHNbYV0pLSgwfGkud29yZHNbYV0pK28sbz1lPj4yNix0aGlzLndvcmRzW2FdPTY3MTA4ODYzJmU7Zm9yKDswIT09byYmYTxuLmxlbmd0aDthKyspZT0oMHxuLndvcmRzW2FdKStvLG89ZT4+MjYsdGhpcy53b3Jkc1thXT02NzEwODg2MyZlO2lmKDA9PT1vJiZhPG4ubGVuZ3RoJiZuIT09dGhpcylmb3IoO2E8bi5sZW5ndGg7YSsrKXRoaXMud29yZHNbYV09bi53b3Jkc1thXTtyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsYSksbiE9PXRoaXMmJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuc3ViPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Yih0KX07dmFyIEU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksbyxhPXQud29yZHMsZj1lLndvcmRzLHM9ci53b3Jkcyx1PTAsaD0wfGFbMF0sYz04MTkxJmgsZD1oPj4+MTMsbD0wfGFbMV0scD04MTkxJmwsYj1sPj4+MTMsdj0wfGFbMl0seT04MTkxJnYsbT12Pj4+MTMsZz0wfGFbM10sdz04MTkxJmcsXz1nPj4+MTMsTT0wfGFbNF0sUz04MTkxJk0sRT1NPj4+MTMsQT0wfGFbNV0saz04MTkxJkEseD1BPj4+MTMsST0wfGFbNl0sQj04MTkxJkksTz1JPj4+MTMsUj0wfGFbN10sUD04MTkxJlIsVD1SPj4+MTMsaj0wfGFbOF0sQz04MTkxJmosTj1qPj4+MTMsTD0wfGFbOV0sVT04MTkxJkwsej1MPj4+MTMsRD0wfGZbMF0scT04MTkxJkQsRj1EPj4+MTMsSz0wfGZbMV0sRz04MTkxJkssVj1LPj4+MTMsSD0wfGZbMl0sWD04MTkxJkgsWT1IPj4+MTMsVz0wfGZbM10sWj04MTkxJlcsSj1XPj4+MTMsJD0wfGZbNF0sUT04MTkxJiQsdHQ9JD4+PjEzLGV0PTB8Zls1XSxydD04MTkxJmV0LG50PWV0Pj4+MTMsaXQ9MHxmWzZdLG90PTgxOTEmaXQsYXQ9aXQ+Pj4xMyxmdD0wfGZbN10sc3Q9ODE5MSZmdCx1dD1mdD4+PjEzLGh0PTB8Zls4XSxjdD04MTkxJmh0LGR0PWh0Pj4+MTMsbHQ9MHxmWzldLHB0PTgxOTEmbHQsYnQ9bHQ+Pj4xMztyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZSxyLmxlbmd0aD0xOSxuPU1hdGguaW11bChjLHEpLGk9TWF0aC5pbXVsKGMsRiksaT1pK01hdGguaW11bChkLHEpfDAsbz1NYXRoLmltdWwoZCxGKTt2YXIgdnQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKHZ0Pj4+MjYpfDAsdnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHAscSksaT1NYXRoLmltdWwocCxGKSxpPWkrTWF0aC5pbXVsKGIscSl8MCxvPU1hdGguaW11bChiLEYpLG49bitNYXRoLmltdWwoYyxHKXwwLGk9aStNYXRoLmltdWwoYyxWKXwwLGk9aStNYXRoLmltdWwoZCxHKXwwLG89bytNYXRoLmltdWwoZCxWKXwwO3ZhciB5dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoeXQ+Pj4yNil8MCx5dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoeSxxKSxpPU1hdGguaW11bCh5LEYpLGk9aStNYXRoLmltdWwobSxxKXwwLG89TWF0aC5pbXVsKG0sRiksbj1uK01hdGguaW11bChwLEcpfDAsaT1pK01hdGguaW11bChwLFYpfDAsaT1pK01hdGguaW11bChiLEcpfDAsbz1vK01hdGguaW11bChiLFYpfDAsbj1uK01hdGguaW11bChjLFgpfDAsaT1pK01hdGguaW11bChjLFkpfDAsaT1pK01hdGguaW11bChkLFgpfDAsbz1vK01hdGguaW11bChkLFkpfDA7dmFyIG10PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhtdD4+PjI2KXwwLG10Jj02NzEwODg2MyxuPU1hdGguaW11bCh3LHEpLGk9TWF0aC5pbXVsKHcsRiksaT1pK01hdGguaW11bChfLHEpfDAsbz1NYXRoLmltdWwoXyxGKSxuPW4rTWF0aC5pbXVsKHksRyl8MCxpPWkrTWF0aC5pbXVsKHksVil8MCxpPWkrTWF0aC5pbXVsKG0sRyl8MCxvPW8rTWF0aC5pbXVsKG0sVil8MCxuPW4rTWF0aC5pbXVsKHAsWCl8MCxpPWkrTWF0aC5pbXVsKHAsWSl8MCxpPWkrTWF0aC5pbXVsKGIsWCl8MCxvPW8rTWF0aC5pbXVsKGIsWSl8MCxuPW4rTWF0aC5pbXVsKGMsWil8MCxpPWkrTWF0aC5pbXVsKGMsSil8MCxpPWkrTWF0aC5pbXVsKGQsWil8MCxvPW8rTWF0aC5pbXVsKGQsSil8MDt2YXIgZ3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKGd0Pj4+MjYpfDAsZ3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFMscSksaT1NYXRoLmltdWwoUyxGKSxpPWkrTWF0aC5pbXVsKEUscSl8MCxvPU1hdGguaW11bChFLEYpLG49bitNYXRoLmltdWwodyxHKXwwLGk9aStNYXRoLmltdWwodyxWKXwwLGk9aStNYXRoLmltdWwoXyxHKXwwLG89bytNYXRoLmltdWwoXyxWKXwwLG49bitNYXRoLmltdWwoeSxYKXwwLGk9aStNYXRoLmltdWwoeSxZKXwwLGk9aStNYXRoLmltdWwobSxYKXwwLG89bytNYXRoLmltdWwobSxZKXwwLG49bitNYXRoLmltdWwocCxaKXwwLGk9aStNYXRoLmltdWwocCxKKXwwLGk9aStNYXRoLmltdWwoYixaKXwwLG89bytNYXRoLmltdWwoYixKKXwwLG49bitNYXRoLmltdWwoYyxRKXwwLGk9aStNYXRoLmltdWwoYyx0dCl8MCxpPWkrTWF0aC5pbXVsKGQsUSl8MCxvPW8rTWF0aC5pbXVsKGQsdHQpfDA7dmFyIHd0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyh3dD4+PjI2KXwwLHd0Jj02NzEwODg2MyxuPU1hdGguaW11bChrLHEpLGk9TWF0aC5pbXVsKGssRiksaT1pK01hdGguaW11bCh4LHEpfDAsbz1NYXRoLmltdWwoeCxGKSxuPW4rTWF0aC5pbXVsKFMsRyl8MCxpPWkrTWF0aC5pbXVsKFMsVil8MCxpPWkrTWF0aC5pbXVsKEUsRyl8MCxvPW8rTWF0aC5pbXVsKEUsVil8MCxuPW4rTWF0aC5pbXVsKHcsWCl8MCxpPWkrTWF0aC5pbXVsKHcsWSl8MCxpPWkrTWF0aC5pbXVsKF8sWCl8MCxvPW8rTWF0aC5pbXVsKF8sWSl8MCxuPW4rTWF0aC5pbXVsKHksWil8MCxpPWkrTWF0aC5pbXVsKHksSil8MCxpPWkrTWF0aC5pbXVsKG0sWil8MCxvPW8rTWF0aC5pbXVsKG0sSil8MCxuPW4rTWF0aC5pbXVsKHAsUSl8MCxpPWkrTWF0aC5pbXVsKHAsdHQpfDAsaT1pK01hdGguaW11bChiLFEpfDAsbz1vK01hdGguaW11bChiLHR0KXwwLG49bitNYXRoLmltdWwoYyxydCl8MCxpPWkrTWF0aC5pbXVsKGMsbnQpfDAsaT1pK01hdGguaW11bChkLHJ0KXwwLG89bytNYXRoLmltdWwoZCxudCl8MDt2YXIgX3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKF90Pj4+MjYpfDAsX3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEIscSksaT1NYXRoLmltdWwoQixGKSxpPWkrTWF0aC5pbXVsKE8scSl8MCxvPU1hdGguaW11bChPLEYpLG49bitNYXRoLmltdWwoayxHKXwwLGk9aStNYXRoLmltdWwoayxWKXwwLGk9aStNYXRoLmltdWwoeCxHKXwwLG89bytNYXRoLmltdWwoeCxWKXwwLG49bitNYXRoLmltdWwoUyxYKXwwLGk9aStNYXRoLmltdWwoUyxZKXwwLGk9aStNYXRoLmltdWwoRSxYKXwwLG89bytNYXRoLmltdWwoRSxZKXwwLG49bitNYXRoLmltdWwodyxaKXwwLGk9aStNYXRoLmltdWwodyxKKXwwLGk9aStNYXRoLmltdWwoXyxaKXwwLG89bytNYXRoLmltdWwoXyxKKXwwLG49bitNYXRoLmltdWwoeSxRKXwwLGk9aStNYXRoLmltdWwoeSx0dCl8MCxpPWkrTWF0aC5pbXVsKG0sUSl8MCxvPW8rTWF0aC5pbXVsKG0sdHQpfDAsbj1uK01hdGguaW11bChwLHJ0KXwwLGk9aStNYXRoLmltdWwocCxudCl8MCxpPWkrTWF0aC5pbXVsKGIscnQpfDAsbz1vK01hdGguaW11bChiLG50KXwwLG49bitNYXRoLmltdWwoYyxvdCl8MCxpPWkrTWF0aC5pbXVsKGMsYXQpfDAsaT1pK01hdGguaW11bChkLG90KXwwLG89bytNYXRoLmltdWwoZCxhdCl8MDt2YXIgTXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKE10Pj4+MjYpfDAsTXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFAscSksaT1NYXRoLmltdWwoUCxGKSxpPWkrTWF0aC5pbXVsKFQscSl8MCxvPU1hdGguaW11bChULEYpLG49bitNYXRoLmltdWwoQixHKXwwLGk9aStNYXRoLmltdWwoQixWKXwwLGk9aStNYXRoLmltdWwoTyxHKXwwLG89bytNYXRoLmltdWwoTyxWKXwwLG49bitNYXRoLmltdWwoayxYKXwwLGk9aStNYXRoLmltdWwoayxZKXwwLGk9aStNYXRoLmltdWwoeCxYKXwwLG89bytNYXRoLmltdWwoeCxZKXwwLG49bitNYXRoLmltdWwoUyxaKXwwLGk9aStNYXRoLmltdWwoUyxKKXwwLGk9aStNYXRoLmltdWwoRSxaKXwwLG89bytNYXRoLmltdWwoRSxKKXwwLG49bitNYXRoLmltdWwodyxRKXwwLGk9aStNYXRoLmltdWwodyx0dCl8MCxpPWkrTWF0aC5pbXVsKF8sUSl8MCxvPW8rTWF0aC5pbXVsKF8sdHQpfDAsbj1uK01hdGguaW11bCh5LHJ0KXwwLGk9aStNYXRoLmltdWwoeSxudCl8MCxpPWkrTWF0aC5pbXVsKG0scnQpfDAsbz1vK01hdGguaW11bChtLG50KXwwLG49bitNYXRoLmltdWwocCxvdCl8MCxpPWkrTWF0aC5pbXVsKHAsYXQpfDAsaT1pK01hdGguaW11bChiLG90KXwwLG89bytNYXRoLmltdWwoYixhdCl8MCxuPW4rTWF0aC5pbXVsKGMsc3QpfDAsaT1pK01hdGguaW11bChjLHV0KXwwLGk9aStNYXRoLmltdWwoZCxzdCl8MCxvPW8rTWF0aC5pbXVsKGQsdXQpfDA7dmFyIFN0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhTdD4+PjI2KXwwLFN0Jj02NzEwODg2MyxuPU1hdGguaW11bChDLHEpLGk9TWF0aC5pbXVsKEMsRiksaT1pK01hdGguaW11bChOLHEpfDAsbz1NYXRoLmltdWwoTixGKSxuPW4rTWF0aC5pbXVsKFAsRyl8MCxpPWkrTWF0aC5pbXVsKFAsVil8MCxpPWkrTWF0aC5pbXVsKFQsRyl8MCxvPW8rTWF0aC5pbXVsKFQsVil8MCxuPW4rTWF0aC5pbXVsKEIsWCl8MCxpPWkrTWF0aC5pbXVsKEIsWSl8MCxpPWkrTWF0aC5pbXVsKE8sWCl8MCxvPW8rTWF0aC5pbXVsKE8sWSl8MCxuPW4rTWF0aC5pbXVsKGssWil8MCxpPWkrTWF0aC5pbXVsKGssSil8MCxpPWkrTWF0aC5pbXVsKHgsWil8MCxvPW8rTWF0aC5pbXVsKHgsSil8MCxuPW4rTWF0aC5pbXVsKFMsUSl8MCxpPWkrTWF0aC5pbXVsKFMsdHQpfDAsaT1pK01hdGguaW11bChFLFEpfDAsbz1vK01hdGguaW11bChFLHR0KXwwLG49bitNYXRoLmltdWwodyxydCl8MCxpPWkrTWF0aC5pbXVsKHcsbnQpfDAsaT1pK01hdGguaW11bChfLHJ0KXwwLG89bytNYXRoLmltdWwoXyxudCl8MCxuPW4rTWF0aC5pbXVsKHksb3QpfDAsaT1pK01hdGguaW11bCh5LGF0KXwwLGk9aStNYXRoLmltdWwobSxvdCl8MCxvPW8rTWF0aC5pbXVsKG0sYXQpfDAsbj1uK01hdGguaW11bChwLHN0KXwwLGk9aStNYXRoLmltdWwocCx1dCl8MCxpPWkrTWF0aC5pbXVsKGIsc3QpfDAsbz1vK01hdGguaW11bChiLHV0KXwwLG49bitNYXRoLmltdWwoYyxjdCl8MCxpPWkrTWF0aC5pbXVsKGMsZHQpfDAsaT1pK01hdGguaW11bChkLGN0KXwwLG89bytNYXRoLmltdWwoZCxkdCl8MDt2YXIgRXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKEV0Pj4+MjYpfDAsRXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUscSksaT1NYXRoLmltdWwoVSxGKSxpPWkrTWF0aC5pbXVsKHoscSl8MCxvPU1hdGguaW11bCh6LEYpLG49bitNYXRoLmltdWwoQyxHKXwwLGk9aStNYXRoLmltdWwoQyxWKXwwLGk9aStNYXRoLmltdWwoTixHKXwwLG89bytNYXRoLmltdWwoTixWKXwwLG49bitNYXRoLmltdWwoUCxYKXwwLGk9aStNYXRoLmltdWwoUCxZKXwwLGk9aStNYXRoLmltdWwoVCxYKXwwLG89bytNYXRoLmltdWwoVCxZKXwwLG49bitNYXRoLmltdWwoQixaKXwwLGk9aStNYXRoLmltdWwoQixKKXwwLGk9aStNYXRoLmltdWwoTyxaKXwwLG89bytNYXRoLmltdWwoTyxKKXwwLG49bitNYXRoLmltdWwoayxRKXwwLGk9aStNYXRoLmltdWwoayx0dCl8MCxpPWkrTWF0aC5pbXVsKHgsUSl8MCxvPW8rTWF0aC5pbXVsKHgsdHQpfDAsbj1uK01hdGguaW11bChTLHJ0KXwwLGk9aStNYXRoLmltdWwoUyxudCl8MCxpPWkrTWF0aC5pbXVsKEUscnQpfDAsbz1vK01hdGguaW11bChFLG50KXwwLG49bitNYXRoLmltdWwodyxvdCl8MCxpPWkrTWF0aC5pbXVsKHcsYXQpfDAsaT1pK01hdGguaW11bChfLG90KXwwLG89bytNYXRoLmltdWwoXyxhdCl8MCxuPW4rTWF0aC5pbXVsKHksc3QpfDAsaT1pK01hdGguaW11bCh5LHV0KXwwLGk9aStNYXRoLmltdWwobSxzdCl8MCxvPW8rTWF0aC5pbXVsKG0sdXQpfDAsbj1uK01hdGguaW11bChwLGN0KXwwLGk9aStNYXRoLmltdWwocCxkdCl8MCxpPWkrTWF0aC5pbXVsKGIsY3QpfDAsbz1vK01hdGguaW11bChiLGR0KXwwLG49bitNYXRoLmltdWwoYyxwdCl8MCxpPWkrTWF0aC5pbXVsKGMsYnQpfDAsaT1pK01hdGguaW11bChkLHB0KXwwLG89bytNYXRoLmltdWwoZCxidCl8MDt2YXIgQXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKEF0Pj4+MjYpfDAsQXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsRyksaT1NYXRoLmltdWwoVSxWKSxpPWkrTWF0aC5pbXVsKHosRyl8MCxvPU1hdGguaW11bCh6LFYpLG49bitNYXRoLmltdWwoQyxYKXwwLGk9aStNYXRoLmltdWwoQyxZKXwwLGk9aStNYXRoLmltdWwoTixYKXwwLG89bytNYXRoLmltdWwoTixZKXwwLG49bitNYXRoLmltdWwoUCxaKXwwLGk9aStNYXRoLmltdWwoUCxKKXwwLGk9aStNYXRoLmltdWwoVCxaKXwwLG89bytNYXRoLmltdWwoVCxKKXwwLG49bitNYXRoLmltdWwoQixRKXwwLGk9aStNYXRoLmltdWwoQix0dCl8MCxpPWkrTWF0aC5pbXVsKE8sUSl8MCxvPW8rTWF0aC5pbXVsKE8sdHQpfDAsbj1uK01hdGguaW11bChrLHJ0KXwwLGk9aStNYXRoLmltdWwoayxudCl8MCxpPWkrTWF0aC5pbXVsKHgscnQpfDAsbz1vK01hdGguaW11bCh4LG50KXwwLG49bitNYXRoLmltdWwoUyxvdCl8MCxpPWkrTWF0aC5pbXVsKFMsYXQpfDAsaT1pK01hdGguaW11bChFLG90KXwwLG89bytNYXRoLmltdWwoRSxhdCl8MCxuPW4rTWF0aC5pbXVsKHcsc3QpfDAsaT1pK01hdGguaW11bCh3LHV0KXwwLGk9aStNYXRoLmltdWwoXyxzdCl8MCxvPW8rTWF0aC5pbXVsKF8sdXQpfDAsbj1uK01hdGguaW11bCh5LGN0KXwwLGk9aStNYXRoLmltdWwoeSxkdCl8MCxpPWkrTWF0aC5pbXVsKG0sY3QpfDAsbz1vK01hdGguaW11bChtLGR0KXwwLG49bitNYXRoLmltdWwocCxwdCl8MCxpPWkrTWF0aC5pbXVsKHAsYnQpfDAsaT1pK01hdGguaW11bChiLHB0KXwwLG89bytNYXRoLmltdWwoYixidCl8MDt2YXIga3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKGt0Pj4+MjYpfDAsa3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsWCksaT1NYXRoLmltdWwoVSxZKSxpPWkrTWF0aC5pbXVsKHosWCl8MCxvPU1hdGguaW11bCh6LFkpLG49bitNYXRoLmltdWwoQyxaKXwwLGk9aStNYXRoLmltdWwoQyxKKXwwLGk9aStNYXRoLmltdWwoTixaKXwwLG89bytNYXRoLmltdWwoTixKKXwwLG49bitNYXRoLmltdWwoUCxRKXwwLGk9aStNYXRoLmltdWwoUCx0dCl8MCxpPWkrTWF0aC5pbXVsKFQsUSl8MCxvPW8rTWF0aC5pbXVsKFQsdHQpfDAsbj1uK01hdGguaW11bChCLHJ0KXwwLGk9aStNYXRoLmltdWwoQixudCl8MCxpPWkrTWF0aC5pbXVsKE8scnQpfDAsbz1vK01hdGguaW11bChPLG50KXwwLG49bitNYXRoLmltdWwoayxvdCl8MCxpPWkrTWF0aC5pbXVsKGssYXQpfDAsaT1pK01hdGguaW11bCh4LG90KXwwLG89bytNYXRoLmltdWwoeCxhdCl8MCxuPW4rTWF0aC5pbXVsKFMsc3QpfDAsaT1pK01hdGguaW11bChTLHV0KXwwLGk9aStNYXRoLmltdWwoRSxzdCl8MCxvPW8rTWF0aC5pbXVsKEUsdXQpfDAsbj1uK01hdGguaW11bCh3LGN0KXwwLGk9aStNYXRoLmltdWwodyxkdCl8MCxpPWkrTWF0aC5pbXVsKF8sY3QpfDAsbz1vK01hdGguaW11bChfLGR0KXwwLG49bitNYXRoLmltdWwoeSxwdCl8MCxpPWkrTWF0aC5pbXVsKHksYnQpfDAsaT1pK01hdGguaW11bChtLHB0KXwwLG89bytNYXRoLmltdWwobSxidCl8MDt2YXIgeHQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKHh0Pj4+MjYpfDAseHQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsWiksaT1NYXRoLmltdWwoVSxKKSxpPWkrTWF0aC5pbXVsKHosWil8MCxvPU1hdGguaW11bCh6LEopLG49bitNYXRoLmltdWwoQyxRKXwwLGk9aStNYXRoLmltdWwoQyx0dCl8MCxpPWkrTWF0aC5pbXVsKE4sUSl8MCxvPW8rTWF0aC5pbXVsKE4sdHQpfDAsbj1uK01hdGguaW11bChQLHJ0KXwwLGk9aStNYXRoLmltdWwoUCxudCl8MCxpPWkrTWF0aC5pbXVsKFQscnQpfDAsbz1vK01hdGguaW11bChULG50KXwwLG49bitNYXRoLmltdWwoQixvdCl8MCxpPWkrTWF0aC5pbXVsKEIsYXQpfDAsaT1pK01hdGguaW11bChPLG90KXwwLG89bytNYXRoLmltdWwoTyxhdCl8MCxuPW4rTWF0aC5pbXVsKGssc3QpfDAsaT1pK01hdGguaW11bChrLHV0KXwwLGk9aStNYXRoLmltdWwoeCxzdCl8MCxvPW8rTWF0aC5pbXVsKHgsdXQpfDAsbj1uK01hdGguaW11bChTLGN0KXwwLGk9aStNYXRoLmltdWwoUyxkdCl8MCxpPWkrTWF0aC5pbXVsKEUsY3QpfDAsbz1vK01hdGguaW11bChFLGR0KXwwLG49bitNYXRoLmltdWwodyxwdCl8MCxpPWkrTWF0aC5pbXVsKHcsYnQpfDAsaT1pK01hdGguaW11bChfLHB0KXwwLG89bytNYXRoLmltdWwoXyxidCl8MDt2YXIgSXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKEl0Pj4+MjYpfDAsSXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsUSksaT1NYXRoLmltdWwoVSx0dCksaT1pK01hdGguaW11bCh6LFEpfDAsbz1NYXRoLmltdWwoeix0dCksbj1uK01hdGguaW11bChDLHJ0KXwwLGk9aStNYXRoLmltdWwoQyxudCl8MCxpPWkrTWF0aC5pbXVsKE4scnQpfDAsbz1vK01hdGguaW11bChOLG50KXwwLG49bitNYXRoLmltdWwoUCxvdCl8MCxpPWkrTWF0aC5pbXVsKFAsYXQpfDAsaT1pK01hdGguaW11bChULG90KXwwLG89bytNYXRoLmltdWwoVCxhdCl8MCxuPW4rTWF0aC5pbXVsKEIsc3QpfDAsaT1pK01hdGguaW11bChCLHV0KXwwLGk9aStNYXRoLmltdWwoTyxzdCl8MCxvPW8rTWF0aC5pbXVsKE8sdXQpfDAsbj1uK01hdGguaW11bChrLGN0KXwwLGk9aStNYXRoLmltdWwoayxkdCl8MCxpPWkrTWF0aC5pbXVsKHgsY3QpfDAsbz1vK01hdGguaW11bCh4LGR0KXwwLG49bitNYXRoLmltdWwoUyxwdCl8MCxpPWkrTWF0aC5pbXVsKFMsYnQpfDAsaT1pK01hdGguaW11bChFLHB0KXwwLG89bytNYXRoLmltdWwoRSxidCl8MDt2YXIgQnQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKEJ0Pj4+MjYpfDAsQnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUscnQpLGk9TWF0aC5pbXVsKFUsbnQpLGk9aStNYXRoLmltdWwoeixydCl8MCxvPU1hdGguaW11bCh6LG50KSxuPW4rTWF0aC5pbXVsKEMsb3QpfDAsaT1pK01hdGguaW11bChDLGF0KXwwLGk9aStNYXRoLmltdWwoTixvdCl8MCxvPW8rTWF0aC5pbXVsKE4sYXQpfDAsbj1uK01hdGguaW11bChQLHN0KXwwLGk9aStNYXRoLmltdWwoUCx1dCl8MCxpPWkrTWF0aC5pbXVsKFQsc3QpfDAsbz1vK01hdGguaW11bChULHV0KXwwLG49bitNYXRoLmltdWwoQixjdCl8MCxpPWkrTWF0aC5pbXVsKEIsZHQpfDAsaT1pK01hdGguaW11bChPLGN0KXwwLG89bytNYXRoLmltdWwoTyxkdCl8MCxuPW4rTWF0aC5pbXVsKGsscHQpfDAsaT1pK01hdGguaW11bChrLGJ0KXwwLGk9aStNYXRoLmltdWwoeCxwdCl8MCxvPW8rTWF0aC5pbXVsKHgsYnQpfDA7dmFyIE90PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhPdD4+PjI2KXwwLE90Jj02NzEwODg2MyxuPU1hdGguaW11bChVLG90KSxpPU1hdGguaW11bChVLGF0KSxpPWkrTWF0aC5pbXVsKHosb3QpfDAsbz1NYXRoLmltdWwoeixhdCksbj1uK01hdGguaW11bChDLHN0KXwwLGk9aStNYXRoLmltdWwoQyx1dCl8MCxpPWkrTWF0aC5pbXVsKE4sc3QpfDAsbz1vK01hdGguaW11bChOLHV0KXwwLG49bitNYXRoLmltdWwoUCxjdCl8MCxpPWkrTWF0aC5pbXVsKFAsZHQpfDAsaT1pK01hdGguaW11bChULGN0KXwwLG89bytNYXRoLmltdWwoVCxkdCl8MCxuPW4rTWF0aC5pbXVsKEIscHQpfDAsaT1pK01hdGguaW11bChCLGJ0KXwwLGk9aStNYXRoLmltdWwoTyxwdCl8MCxvPW8rTWF0aC5pbXVsKE8sYnQpfDA7dmFyIFJ0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhSdD4+PjI2KXwwLFJ0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLHN0KSxpPU1hdGguaW11bChVLHV0KSxpPWkrTWF0aC5pbXVsKHosc3QpfDAsbz1NYXRoLmltdWwoeix1dCksbj1uK01hdGguaW11bChDLGN0KXwwLGk9aStNYXRoLmltdWwoQyxkdCl8MCxpPWkrTWF0aC5pbXVsKE4sY3QpfDAsbz1vK01hdGguaW11bChOLGR0KXwwLG49bitNYXRoLmltdWwoUCxwdCl8MCxpPWkrTWF0aC5pbXVsKFAsYnQpfDAsaT1pK01hdGguaW11bChULHB0KXwwLG89bytNYXRoLmltdWwoVCxidCl8MDt2YXIgUHQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFB0Pj4+MjYpfDAsUHQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsY3QpLGk9TWF0aC5pbXVsKFUsZHQpLGk9aStNYXRoLmltdWwoeixjdCl8MCxvPU1hdGguaW11bCh6LGR0KSxuPW4rTWF0aC5pbXVsKEMscHQpfDAsaT1pK01hdGguaW11bChDLGJ0KXwwLGk9aStNYXRoLmltdWwoTixwdCl8MCxvPW8rTWF0aC5pbXVsKE4sYnQpfDA7dmFyIFR0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyhUdD4+PjI2KXwwLFR0Jj02NzEwODg2MyxuPU1hdGguaW11bChVLHB0KSxpPU1hdGguaW11bChVLGJ0KSxpPWkrTWF0aC5pbXVsKHoscHQpfDAsbz1NYXRoLmltdWwoeixidCk7dmFyIGp0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDtyZXR1cm4gdT0obysoaT4+PjEzKXwwKSsoanQ+Pj4yNil8MCxqdCY9NjcxMDg4NjMsc1swXT12dCxzWzFdPXl0LHNbMl09bXQsc1szXT1ndCxzWzRdPXd0LHNbNV09X3Qsc1s2XT1NdCxzWzddPVN0LHNbOF09RXQsc1s5XT1BdCxzWzEwXT1rdCxzWzExXT14dCxzWzEyXT1JdCxzWzEzXT1CdCxzWzE0XT1PdCxzWzE1XT1SdCxzWzE2XT1QdCxzWzE3XT1UdCxzWzE4XT1qdCwwIT09dSYmKHNbMTldPXUsci5sZW5ndGgrKykscn07TWF0aC5pbXVsfHwoRT11KSxvLnByb3RvdHlwZS5tdWxUbz1mdW5jdGlvbih0LGUpe3ZhciByLG49dGhpcy5sZW5ndGgrdC5sZW5ndGg7cmV0dXJuIHI9MTA9PT10aGlzLmxlbmd0aCYmMTA9PT10Lmxlbmd0aD9FKHRoaXMsdCxlKTpuPDYzP3UodGhpcyx0LGUpOm48MTAyND9oKHRoaXMsdCxlKTpjKHRoaXMsdCxlKX0sZC5wcm90b3R5cGUubWFrZVJCVD1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9by5wcm90b3R5cGUuX2NvdW50Qml0cyh0KS0xLG49MDtuPHQ7bisrKWVbbl09dGhpcy5yZXZCaW4obixyLHQpO3JldHVybiBlfSxkLnByb3RvdHlwZS5yZXZCaW49ZnVuY3Rpb24odCxlLHIpe2lmKDA9PT10fHx0PT09ci0xKXJldHVybiB0O2Zvcih2YXIgbj0wLGk9MDtpPGU7aSsrKW58PSgxJnQpPDxlLWktMSx0Pj49MTtyZXR1cm4gbn0sXG5kLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXtmb3IodmFyIGE9MDthPG87YSsrKW5bYV09ZVt0W2FdXSxpW2FdPXJbdFthXV19LGQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUscixuLGksbyl7dGhpcy5wZXJtdXRlKG8sdCxlLHIsbixpKTtmb3IodmFyIGE9MTthPGk7YTw8PTEpZm9yKHZhciBmPWE8PDEscz1NYXRoLmNvcygyKk1hdGguUEkvZiksdT1NYXRoLnNpbigyKk1hdGguUEkvZiksaD0wO2g8aTtoKz1mKWZvcih2YXIgYz1zLGQ9dSxsPTA7bDxhO2wrKyl7dmFyIHA9cltoK2xdLGI9bltoK2xdLHY9cltoK2wrYV0seT1uW2grbCthXSxtPWMqdi1kKnk7eT1jKnkrZCp2LHY9bSxyW2grbF09cCt2LG5baCtsXT1iK3kscltoK2wrYV09cC12LG5baCtsK2FdPWIteSxsIT09ZiYmKG09cypjLXUqZCxkPXMqZCt1KmMsYz1tKX19LGQucHJvdG90eXBlLmd1ZXNzTGVuMTNiPWZ1bmN0aW9uKHQsZSl7dmFyIHI9MXxNYXRoLm1heChlLHQpLG49MSZyLGk9MDtmb3Iocj1yLzJ8MDtyO3I+Pj49MSlpKys7cmV0dXJuIDE8PGkrMStufSxkLnByb3RvdHlwZS5jb25qdWdhdGU9ZnVuY3Rpb24odCxlLHIpe2lmKCEocjw9MSkpZm9yKHZhciBuPTA7bjxyLzI7bisrKXt2YXIgaT10W25dO3Rbbl09dFtyLW4tMV0sdFtyLW4tMV09aSxpPWVbbl0sZVtuXT0tZVtyLW4tMV0sZVtyLW4tMV09LWl9fSxkLnByb3RvdHlwZS5ub3JtYWxpemUxM2I9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9MCxuPTA7bjxlLzI7bisrKXt2YXIgaT04MTkyKk1hdGgucm91bmQodFsyKm4rMV0vZSkrTWF0aC5yb3VuZCh0WzIqbl0vZSkrcjt0W25dPTY3MTA4ODYzJmkscj1pPDY3MTA4ODY0PzA6aS82NzEwODg2NHwwfXJldHVybiB0fSxkLnByb3RvdHlwZS5jb252ZXJ0MTNiPWZ1bmN0aW9uKHQsZSxyLGkpe2Zvcih2YXIgbz0wLGE9MDthPGU7YSsrKW8rPTB8dFthXSxyWzIqYV09ODE5MSZvLG8+Pj49MTMsclsyKmErMV09ODE5MSZvLG8+Pj49MTM7Zm9yKGE9MiplO2E8aTsrK2EpclthXT0wO24oMD09PW8pLG4oMD09PShvJi04MTkyKSl9LGQucHJvdG90eXBlLnN0dWI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPTA7cmV0dXJuIGV9LGQucHJvdG90eXBlLm11bHA9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPTIqdGhpcy5ndWVzc0xlbjEzYih0Lmxlbmd0aCxlLmxlbmd0aCksaT10aGlzLm1ha2VSQlQobiksbz10aGlzLnN0dWIobiksYT1uZXcgQXJyYXkobiksZj1uZXcgQXJyYXkobikscz1uZXcgQXJyYXkobiksdT1uZXcgQXJyYXkobiksaD1uZXcgQXJyYXkobiksYz1uZXcgQXJyYXkobiksZD1yLndvcmRzO2QubGVuZ3RoPW4sdGhpcy5jb252ZXJ0MTNiKHQud29yZHMsdC5sZW5ndGgsYSxuKSx0aGlzLmNvbnZlcnQxM2IoZS53b3JkcyxlLmxlbmd0aCx1LG4pLHRoaXMudHJhbnNmb3JtKGEsbyxmLHMsbixpKSx0aGlzLnRyYW5zZm9ybSh1LG8saCxjLG4saSk7Zm9yKHZhciBsPTA7bDxuO2wrKyl7dmFyIHA9ZltsXSpoW2xdLXNbbF0qY1tsXTtzW2xdPWZbbF0qY1tsXStzW2xdKmhbbF0sZltsXT1wfXJldHVybiB0aGlzLmNvbmp1Z2F0ZShmLHMsbiksdGhpcy50cmFuc2Zvcm0oZixzLGQsbyxuLGkpLHRoaXMuY29uanVnYXRlKGQsbyxuKSx0aGlzLm5vcm1hbGl6ZTEzYihkLG4pLHIubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPXQubGVuZ3RoK2UubGVuZ3RoLHIuc3RyaXAoKX0sby5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBvKG51bGwpO3JldHVybiBlLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt0Lmxlbmd0aCksdGhpcy5tdWxUbyh0LGUpfSxvLnByb3RvdHlwZS5tdWxmPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBvKG51bGwpO3JldHVybiBlLndvcmRzPW5ldyBBcnJheSh0aGlzLmxlbmd0aCt0Lmxlbmd0aCksYyh0aGlzLHQsZSl9LG8ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyh0LHRoaXMpfSxvLnByb3RvdHlwZS5pbXVsbj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpO2Zvcih2YXIgZT0wLHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl7dmFyIGk9KDB8dGhpcy53b3Jkc1tyXSkqdCxvPSg2NzEwODg2MyZpKSsoNjcxMDg4NjMmZSk7ZT4+PTI2LGUrPWkvNjcxMDg4NjR8MCxlKz1vPj4+MjYsdGhpcy53b3Jkc1tyXT02NzEwODg2MyZvfXJldHVybiAwIT09ZSYmKHRoaXMud29yZHNbcl09ZSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxvLnByb3RvdHlwZS5tdWxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW11bG4odCl9LG8ucHJvdG90eXBlLnNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm11bCh0aGlzKX0sby5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKX0sby5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQpe3ZhciBlPXModCk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBuZXcgbygxKTtmb3IodmFyIHI9dGhpcyxuPTA7bjxlLmxlbmd0aCYmMD09PWVbbl07bisrLHI9ci5zcXIoKSk7aWYoKytuPGUubGVuZ3RoKWZvcih2YXIgaT1yLnNxcigpO248ZS5sZW5ndGg7bisrLGk9aS5zcXIoKSkwIT09ZVtuXSYmKHI9ci5tdWwoaSkpO3JldHVybiByfSxvLnByb3RvdHlwZS5pdXNobG49ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIGUscj10JTI2LGk9KHQtcikvMjYsbz02NzEwODg2Mz4+PjI2LXI8PDI2LXI7aWYoMCE9PXIpe3ZhciBhPTA7Zm9yKGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy53b3Jkc1tlXSZvLHM9KDB8dGhpcy53b3Jkc1tlXSktZjw8cjt0aGlzLndvcmRzW2VdPXN8YSxhPWY+Pj4yNi1yfWEmJih0aGlzLndvcmRzW2VdPWEsdGhpcy5sZW5ndGgrKyl9aWYoMCE9PWkpe2ZvcihlPXRoaXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy53b3Jkc1tlK2ldPXRoaXMud29yZHNbZV07Zm9yKGU9MDtlPGk7ZSsrKXRoaXMud29yZHNbZV09MDt0aGlzLmxlbmd0aCs9aX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pc2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNobG4odCl9LG8ucHJvdG90eXBlLml1c2hybj1mdW5jdGlvbih0LGUscil7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIGk7aT1lPyhlLWUlMjYpLzI2OjA7dmFyIG89dCUyNixhPU1hdGgubWluKCh0LW8pLzI2LHRoaXMubGVuZ3RoKSxmPTY3MTA4ODYzXjY3MTA4ODYzPj4+bzw8byxzPXI7aWYoaS09YSxpPU1hdGgubWF4KDAsaSkscyl7Zm9yKHZhciB1PTA7dTxhO3UrKylzLndvcmRzW3VdPXRoaXMud29yZHNbdV07cy5sZW5ndGg9YX1pZigwPT09YSk7ZWxzZSBpZih0aGlzLmxlbmd0aD5hKWZvcih0aGlzLmxlbmd0aC09YSx1PTA7dTx0aGlzLmxlbmd0aDt1KyspdGhpcy53b3Jkc1t1XT10aGlzLndvcmRzW3UrYV07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgaD0wO2Zvcih1PXRoaXMubGVuZ3RoLTE7dT49MCYmKDAhPT1ofHx1Pj1pKTt1LS0pe3ZhciBjPTB8dGhpcy53b3Jkc1t1XTt0aGlzLndvcmRzW3VdPWg8PDI2LW98Yz4+Pm8saD1jJmZ9cmV0dXJuIHMmJjAhPT1oJiYocy53b3Jkc1tzLmxlbmd0aCsrXT1oKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG4oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKHQsZSxyKX0sby5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKHQpfSxvLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbih0KX0sby5wcm90b3R5cGUuc2hybj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKHQpfSxvLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybih0KX0sby5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIGU9dCUyNixyPSh0LWUpLzI2LGk9MTw8ZTtpZih0aGlzLmxlbmd0aDw9cilyZXR1cm4hMTt2YXIgbz10aGlzLndvcmRzW3JdO3JldHVybiEhKG8maSl9LG8ucHJvdG90eXBlLmltYXNrbj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjY7aWYobigwPT09dGhpcy5uZWdhdGl2ZSxcImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVyc1wiKSx0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcztpZigwIT09ZSYmcisrLHRoaXMubGVuZ3RoPU1hdGgubWluKHIsdGhpcy5sZW5ndGgpLDAhPT1lKXt2YXIgaT02NzEwODg2M142NzEwODg2Mz4+PmU8PGU7dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSY9aX1yZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5tYXNrbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbih0KX0sby5wcm90b3R5cGUuaWFkZG49ZnVuY3Rpb24odCl7cmV0dXJuIG4oXCJudW1iZXJcIj09dHlwZW9mIHQpLG4odDw2NzEwODg2NCksdDwwP3RoaXMuaXN1Ym4oLXQpOjAhPT10aGlzLm5lZ2F0aXZlPzE9PT10aGlzLmxlbmd0aCYmKDB8dGhpcy53b3Jkc1swXSk8dD8odGhpcy53b3Jkc1swXT10LSgwfHRoaXMud29yZHNbMF0pLHRoaXMubmVnYXRpdmU9MCx0aGlzKToodGhpcy5uZWdhdGl2ZT0wLHRoaXMuaXN1Ym4odCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMpOnRoaXMuX2lhZGRuKHQpfSxvLnByb3RvdHlwZS5faWFkZG49ZnVuY3Rpb24odCl7dGhpcy53b3Jkc1swXSs9dDtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPj02NzEwODg2NDtlKyspdGhpcy53b3Jkc1tlXS09NjcxMDg4NjQsZT09PXRoaXMubGVuZ3RoLTE/dGhpcy53b3Jkc1tlKzFdPTE6dGhpcy53b3Jkc1tlKzFdKys7cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGUrMSksdGhpc30sby5wcm90b3R5cGUuaXN1Ym49ZnVuY3Rpb24odCl7aWYobihcIm51bWJlclwiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDApcmV0dXJuIHRoaXMuaWFkZG4oLXQpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbih0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT10LDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciBlPTA7ZTx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1tlXTwwO2UrKyl0aGlzLndvcmRzW2VdKz02NzEwODg2NCx0aGlzLndvcmRzW2UrMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKHQpfSxvLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4odCl9LG8ucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LG8ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxvLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24odCxlLHIpe3ZhciBpLG89dC5sZW5ndGgrcjt0aGlzLl9leHBhbmQobyk7dmFyIGEsZj0wO2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspe2E9KDB8dGhpcy53b3Jkc1tpK3JdKStmO3ZhciBzPSgwfHQud29yZHNbaV0pKmU7YS09NjcxMDg4NjMmcyxmPShhPj4yNiktKHMvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tpK3JdPTY3MTA4ODYzJmF9Zm9yKDtpPHRoaXMubGVuZ3RoLXI7aSsrKWE9KDB8dGhpcy53b3Jkc1tpK3JdKStmLGY9YT4+MjYsdGhpcy53b3Jkc1tpK3JdPTY3MTA4ODYzJmE7aWYoMD09PWYpcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IobihmPT09LTEpLGY9MCxpPTA7aTx0aGlzLmxlbmd0aDtpKyspYT0tKDB8dGhpcy53b3Jkc1tpXSkrZixmPWE+PjI2LHRoaXMud29yZHNbaV09NjcxMDg4NjMmYTtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLmxlbmd0aC10Lmxlbmd0aCxuPXRoaXMuY2xvbmUoKSxpPXQsYT0wfGkud29yZHNbaS5sZW5ndGgtMV0sZj10aGlzLl9jb3VudEJpdHMoYSk7cj0yNi1mLDAhPT1yJiYoaT1pLnVzaGxuKHIpLG4uaXVzaGxuKHIpLGE9MHxpLndvcmRzW2kubGVuZ3RoLTFdKTt2YXIgcyx1PW4ubGVuZ3RoLWkubGVuZ3RoO2lmKFwibW9kXCIhPT1lKXtzPW5ldyBvKG51bGwpLHMubGVuZ3RoPXUrMSxzLndvcmRzPW5ldyBBcnJheShzLmxlbmd0aCk7Zm9yKHZhciBoPTA7aDxzLmxlbmd0aDtoKyspcy53b3Jkc1toXT0wfXZhciBjPW4uY2xvbmUoKS5faXNobG5zdWJtdWwoaSwxLHUpOzA9PT1jLm5lZ2F0aXZlJiYobj1jLHMmJihzLndvcmRzW3VdPTEpKTtmb3IodmFyIGQ9dS0xO2Q+PTA7ZC0tKXt2YXIgbD02NzEwODg2NCooMHxuLndvcmRzW2kubGVuZ3RoK2RdKSsoMHxuLndvcmRzW2kubGVuZ3RoK2QtMV0pO2ZvcihsPU1hdGgubWluKGwvYXwwLDY3MTA4ODYzKSxuLl9pc2hsbnN1Ym11bChpLGwsZCk7MCE9PW4ubmVnYXRpdmU7KWwtLSxuLm5lZ2F0aXZlPTAsbi5faXNobG5zdWJtdWwoaSwxLGQpLG4uaXNaZXJvKCl8fChuLm5lZ2F0aXZlXj0xKTtzJiYocy53b3Jkc1tkXT1sKX1yZXR1cm4gcyYmcy5zdHJpcCgpLG4uc3RyaXAoKSxcImRpdlwiIT09ZSYmMCE9PXImJm4uaXVzaHJuKHIpLHtkaXY6c3x8bnVsbCxtb2Q6bn19LG8ucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbih0LGUscil7aWYobighdC5pc1plcm8oKSksdGhpcy5pc1plcm8oKSlyZXR1cm57ZGl2Om5ldyBvKDApLG1vZDpuZXcgbygwKX07dmFyIGksYSxmO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmU/KGY9dGhpcy5uZWcoKS5kaXZtb2QodCxlKSxcIm1vZFwiIT09ZSYmKGk9Zi5kaXYubmVnKCkpLFwiZGl2XCIhPT1lJiYoYT1mLm1vZC5uZWcoKSxyJiYwIT09YS5uZWdhdGl2ZSYmYS5pYWRkKHQpKSx7ZGl2OmksbW9kOmF9KTowPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmU/KGY9dGhpcy5kaXZtb2QodC5uZWcoKSxlKSxcIm1vZFwiIT09ZSYmKGk9Zi5kaXYubmVnKCkpLHtkaXY6aSxtb2Q6Zi5tb2R9KTowIT09KHRoaXMubmVnYXRpdmUmdC5uZWdhdGl2ZSk/KGY9dGhpcy5uZWcoKS5kaXZtb2QodC5uZWcoKSxlKSxcImRpdlwiIT09ZSYmKGE9Zi5tb2QubmVnKCksciYmMCE9PWEubmVnYXRpdmUmJmEuaXN1Yih0KSkse2RpdjpmLmRpdixtb2Q6YX0pOnQubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcCh0KTwwP3tkaXY6bmV3IG8oMCksbW9kOnRoaXN9OjE9PT10Lmxlbmd0aD9cImRpdlwiPT09ZT97ZGl2OnRoaXMuZGl2bih0LndvcmRzWzBdKSxtb2Q6bnVsbH06XCJtb2RcIj09PWU/e2RpdjpudWxsLG1vZDpuZXcgbyh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp7ZGl2OnRoaXMuZGl2bih0LndvcmRzWzBdKSxtb2Q6bmV3IG8odGhpcy5tb2RuKHQud29yZHNbMF0pKX06dGhpcy5fd29yZERpdih0LGUpfSxvLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsXCJkaXZcIiwhMSkuZGl2fSxvLnByb3RvdHlwZS5tb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsXCJtb2RcIiwhMSkubW9kfSxvLnByb3RvdHlwZS51bW9kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpdm1vZCh0LFwibW9kXCIsITApLm1vZH0sby5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kaXZtb2QodCk7aWYoZS5tb2QuaXNaZXJvKCkpcmV0dXJuIGUuZGl2O3ZhciByPTAhPT1lLmRpdi5uZWdhdGl2ZT9lLm1vZC5pc3ViKHQpOmUubW9kLG49dC51c2hybigxKSxpPXQuYW5kbG4oMSksbz1yLmNtcChuKTtyZXR1cm4gbzwwfHwxPT09aSYmMD09PW8/ZS5kaXY6MCE9PWUuZGl2Lm5lZ2F0aXZlP2UuZGl2LmlzdWJuKDEpOmUuZGl2LmlhZGRuKDEpfSxvLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKHQpe24odDw9NjcxMDg4NjMpO2Zvcih2YXIgZT0oMTw8MjYpJXQscj0wLGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSlyPShlKnIrKDB8dGhpcy53b3Jkc1tpXSkpJXQ7cmV0dXJuIHJ9LG8ucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKHQpe24odDw9NjcxMDg4NjMpO2Zvcih2YXIgZT0wLHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIGk9KDB8dGhpcy53b3Jkc1tyXSkrNjcxMDg4NjQqZTt0aGlzLndvcmRzW3JdPWkvdHwwLGU9aSV0fXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bih0KX0sby5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlKSxuKCF0LmlzWmVybygpKTt2YXIgZT10aGlzLHI9dC5jbG9uZSgpO2U9MCE9PWUubmVnYXRpdmU/ZS51bW9kKHQpOmUuY2xvbmUoKTtmb3IodmFyIGk9bmV3IG8oMSksYT1uZXcgbygwKSxmPW5ldyBvKDApLHM9bmV3IG8oMSksdT0wO2UuaXNFdmVuKCkmJnIuaXNFdmVuKCk7KWUuaXVzaHJuKDEpLHIuaXVzaHJuKDEpLCsrdTtmb3IodmFyIGg9ci5jbG9uZSgpLGM9ZS5jbG9uZSgpOyFlLmlzWmVybygpOyl7Zm9yKHZhciBkPTAsbD0xOzA9PT0oZS53b3Jkc1swXSZsKSYmZDwyNjsrK2QsbDw8PTEpO2lmKGQ+MClmb3IoZS5pdXNocm4oZCk7ZC0tID4wOykoaS5pc09kZCgpfHxhLmlzT2RkKCkpJiYoaS5pYWRkKGgpLGEuaXN1YihjKSksaS5pdXNocm4oMSksYS5pdXNocm4oMSk7Zm9yKHZhciBwPTAsYj0xOzA9PT0oci53b3Jkc1swXSZiKSYmcDwyNjsrK3AsYjw8PTEpO2lmKHA+MClmb3Ioci5pdXNocm4ocCk7cC0tID4wOykoZi5pc09kZCgpfHxzLmlzT2RkKCkpJiYoZi5pYWRkKGgpLHMuaXN1YihjKSksZi5pdXNocm4oMSkscy5pdXNocm4oMSk7ZS5jbXAocik+PTA/KGUuaXN1YihyKSxpLmlzdWIoZiksYS5pc3ViKHMpKTooci5pc3ViKGUpLGYuaXN1YihpKSxzLmlzdWIoYSkpfXJldHVybnthOmYsYjpzLGdjZDpyLml1c2hsbih1KX19LG8ucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlKSxuKCF0LmlzWmVybygpKTt2YXIgZT10aGlzLHI9dC5jbG9uZSgpO2U9MCE9PWUubmVnYXRpdmU/ZS51bW9kKHQpOmUuY2xvbmUoKTtmb3IodmFyIGk9bmV3IG8oMSksYT1uZXcgbygwKSxmPXIuY2xvbmUoKTtlLmNtcG4oMSk+MCYmci5jbXBuKDEpPjA7KXtmb3IodmFyIHM9MCx1PTE7MD09PShlLndvcmRzWzBdJnUpJiZzPDI2Oysrcyx1PDw9MSk7aWYocz4wKWZvcihlLml1c2hybihzKTtzLS0gPjA7KWkuaXNPZGQoKSYmaS5pYWRkKGYpLGkuaXVzaHJuKDEpO2Zvcih2YXIgaD0wLGM9MTswPT09KHIud29yZHNbMF0mYykmJmg8MjY7KytoLGM8PD0xKTtpZihoPjApZm9yKHIuaXVzaHJuKGgpO2gtLSA+MDspYS5pc09kZCgpJiZhLmlhZGQoZiksYS5pdXNocm4oMSk7ZS5jbXAocik+PTA/KGUuaXN1YihyKSxpLmlzdWIoYSkpOihyLmlzdWIoZSksYS5pc3ViKGkpKX12YXIgZDtyZXR1cm4gZD0wPT09ZS5jbXBuKDEpP2k6YSxkLmNtcG4oMCk8MCYmZC5pYWRkKHQpLGR9LG8ucHJvdG90eXBlLmdjZD1mdW5jdGlvbih0KXtpZih0aGlzLmlzWmVybygpKXJldHVybiB0LmFicygpO2lmKHQuaXNaZXJvKCkpcmV0dXJuIHRoaXMuYWJzKCk7dmFyIGU9dGhpcy5jbG9uZSgpLHI9dC5jbG9uZSgpO2UubmVnYXRpdmU9MCxyLm5lZ2F0aXZlPTA7Zm9yKHZhciBuPTA7ZS5pc0V2ZW4oKSYmci5pc0V2ZW4oKTtuKyspZS5pdXNocm4oMSksci5pdXNocm4oMSk7Zm9yKDs7KXtmb3IoO2UuaXNFdmVuKCk7KWUuaXVzaHJuKDEpO2Zvcig7ci5pc0V2ZW4oKTspci5pdXNocm4oMSk7dmFyIGk9ZS5jbXAocik7aWYoaTwwKXt2YXIgbz1lO2U9cixyPW99ZWxzZSBpZigwPT09aXx8MD09PXIuY21wbigxKSlicmVhaztlLmlzdWIocil9cmV0dXJuIHIuaXVzaGxuKG4pfSxvLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVnY2QodCkuYS51bW9kKHQpfSxvLnByb3RvdHlwZS5pc0V2ZW49ZnVuY3Rpb24oKXtyZXR1cm4gMD09PSgxJnRoaXMud29yZHNbMF0pfSxvLnByb3RvdHlwZS5pc09kZD1mdW5jdGlvbigpe3JldHVybiAxPT09KDEmdGhpcy53b3Jkc1swXSl9LG8ucHJvdG90eXBlLmFuZGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndvcmRzWzBdJnR9LG8ucHJvdG90eXBlLmJpbmNuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQpO3ZhciBlPXQlMjYscj0odC1lKS8yNixpPTE8PGU7aWYodGhpcy5sZW5ndGg8PXIpcmV0dXJuIHRoaXMuX2V4cGFuZChyKzEpLHRoaXMud29yZHNbcl18PWksdGhpcztmb3IodmFyIG89aSxhPXI7MCE9PW8mJmE8dGhpcy5sZW5ndGg7YSsrKXt2YXIgZj0wfHRoaXMud29yZHNbYV07Zis9byxvPWY+Pj4yNixmJj02NzEwODg2Myx0aGlzLndvcmRzW2FdPWZ9cmV0dXJuIDAhPT1vJiYodGhpcy53b3Jkc1thXT1vLHRoaXMubGVuZ3RoKyspLHRoaXN9LG8ucHJvdG90eXBlLmlzWmVybz1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdfSxvLnByb3RvdHlwZS5jbXBuPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIWUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJmUpcmV0dXJuIDE7dGhpcy5zdHJpcCgpO3ZhciByO2lmKHRoaXMubGVuZ3RoPjEpcj0xO2Vsc2V7ZSYmKHQ9LXQpLG4odDw9NjcxMDg4NjMsXCJOdW1iZXIgaXMgdG9vIGJpZ1wiKTt2YXIgaT0wfHRoaXMud29yZHNbMF07cj1pPT09dD8wOmk8dD8tMToxfXJldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1yOnJ9LG8ucHJvdG90eXBlLmNtcD1mdW5jdGlvbih0KXtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PXQubmVnYXRpdmUpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT10Lm5lZ2F0aXZlKXJldHVybiAxO3ZhciBlPXRoaXMudWNtcCh0KTtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtZTplfSxvLnByb3RvdHlwZS51Y21wPWZ1bmN0aW9uKHQpe2lmKHRoaXMubGVuZ3RoPnQubGVuZ3RoKXJldHVybiAxO2lmKHRoaXMubGVuZ3RoPHQubGVuZ3RoKXJldHVybi0xO2Zvcih2YXIgZT0wLHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIG49MHx0aGlzLndvcmRzW3JdLGk9MHx0LndvcmRzW3JdO2lmKG4hPT1pKXtuPGk/ZT0tMTpuPmkmJihlPTEpO2JyZWFrfX1yZXR1cm4gZX0sby5wcm90b3R5cGUuZ3RuPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dGhpcy5jbXBuKHQpfSxvLnByb3RvdHlwZS5ndD1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXRoaXMuY21wKHQpfSxvLnByb3RvdHlwZS5ndGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk+PTB9LG8ucHJvdG90eXBlLmd0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXAodCk+PTB9LG8ucHJvdG90eXBlLmx0bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXBuKHQpPT09LTF9LG8ucHJvdG90eXBlLmx0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KT09PS0xfSxvLnByb3RvdHlwZS5sdGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk8PTB9LG8ucHJvdG90eXBlLmx0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXAodCk8PTB9LG8ucHJvdG90eXBlLmVxbj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXRoaXMuY21wbih0KX0sby5wcm90b3R5cGUuZXE9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10aGlzLmNtcCh0KX0sby5yZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtKHQpfSxvLnByb3RvdHlwZS50b1JlZD1mdW5jdGlvbih0KXtyZXR1cm4gbighdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpLG4oMD09PXRoaXMubmVnYXRpdmUsXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSx0LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQodCl9LG8ucHJvdG90eXBlLmZyb21SZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksdGhpcy5yZWQuY29udmVydEZyb20odGhpcyl9LG8ucHJvdG90eXBlLl9mb3JjZVJlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZWQ9dCx0aGlzfSxvLnByb3RvdHlwZS5mb3JjZVJlZD1mdW5jdGlvbih0KXtyZXR1cm4gbighdGhpcy5yZWQsXCJBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0XCIpLHRoaXMuX2ZvcmNlUmVkKHQpfSxvLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLmFkZCh0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRJQWRkPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLFwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuaWFkZCh0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLnN1Yih0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKHQpe3JldHVybiBuKHRoaXMucmVkLFwicmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuaXN1Yih0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRTaGw9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLnNobCh0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRNdWw9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsdCksdGhpcy5yZWQubXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsdCksdGhpcy5yZWQuaW11bCh0aGlzLHQpfSxvLnByb3RvdHlwZS5yZWRTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FyKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRJU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXJ0KHRoaXMpfSxvLnByb3RvdHlwZS5yZWRJbnZtPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pbnZtKHRoaXMpfSxvLnByb3RvdHlwZS5yZWROZWc9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxvLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQmJiF0LnJlZCxcInJlZFBvdyhub3JtYWxOdW0pXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnBvdyh0aGlzLHQpfTt2YXIgQT17azI1NjpudWxsLHAyMjQ6bnVsbCxwMTkyOm51bGwscDI1NTE5Om51bGx9O2wucHJvdG90eXBlLl90bXA9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgbyhudWxsKTtyZXR1cm4gdC53b3Jkcz1uZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubi8xMykpLHR9LGwucHJvdG90eXBlLmlyZWR1Y2U9ZnVuY3Rpb24odCl7dmFyIGUscj10O2RvIHRoaXMuc3BsaXQocix0aGlzLnRtcCkscj10aGlzLmltdWxLKHIpLHI9ci5pYWRkKHRoaXMudG1wKSxlPXIuYml0TGVuZ3RoKCk7d2hpbGUoZT50aGlzLm4pO3ZhciBuPWU8dGhpcy5uPy0xOnIudWNtcCh0aGlzLnApO3JldHVybiAwPT09bj8oci53b3Jkc1swXT0wLHIubGVuZ3RoPTEpOm4+MD9yLmlzdWIodGhpcy5wKTpyLnN0cmlwKCkscn0sbC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odCxlKXt0Lml1c2hybih0aGlzLm4sMCxlKX0sbC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW11bCh0aGlzLmspfSxpKHAsbCkscC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9NDE5NDMwMyxuPU1hdGgubWluKHQubGVuZ3RoLDkpLGk9MDtpPG47aSsrKWUud29yZHNbaV09dC53b3Jkc1tpXTtpZihlLmxlbmd0aD1uLHQubGVuZ3RoPD05KXJldHVybiB0LndvcmRzWzBdPTAsdm9pZCh0Lmxlbmd0aD0xKTt2YXIgbz10LndvcmRzWzldO2ZvcihlLndvcmRzW2UubGVuZ3RoKytdPW8mcixpPTEwO2k8dC5sZW5ndGg7aSsrKXt2YXIgYT0wfHQud29yZHNbaV07dC53b3Jkc1tpLTEwXT0oYSZyKTw8NHxvPj4+MjIsbz1hfW8+Pj49MjIsdC53b3Jkc1tpLTEwXT1vLDA9PT1vJiZ0Lmxlbmd0aD4xMD90Lmxlbmd0aC09MTA6dC5sZW5ndGgtPTl9LHAucHJvdG90eXBlLmltdWxLPWZ1bmN0aW9uKHQpe3Qud29yZHNbdC5sZW5ndGhdPTAsdC53b3Jkc1t0Lmxlbmd0aCsxXT0wLHQubGVuZ3RoKz0yO2Zvcih2YXIgZT0wLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49MHx0LndvcmRzW3JdO2UrPTk3NypuLHQud29yZHNbcl09NjcxMDg4NjMmZSxlPTY0Km4rKGUvNjcxMDg4NjR8MCl9cmV0dXJuIDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiYodC5sZW5ndGgtLSwwPT09dC53b3Jkc1t0Lmxlbmd0aC0xXSYmdC5sZW5ndGgtLSksdH0saShiLGwpLGkodixsKSxpKHksbCkseS5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0xOSooMHx0LndvcmRzW3JdKStlLGk9NjcxMDg4NjMmbjtuPj4+PTI2LHQud29yZHNbcl09aSxlPW59cmV0dXJuIDAhPT1lJiYodC53b3Jkc1t0Lmxlbmd0aCsrXT1lKSx0fSxvLl9wcmltZT1mdW5jdGlvbiB0KGUpe2lmKEFbZV0pcmV0dXJuIEFbZV07dmFyIHQ7aWYoXCJrMjU2XCI9PT1lKXQ9bmV3IHA7ZWxzZSBpZihcInAyMjRcIj09PWUpdD1uZXcgYjtlbHNlIGlmKFwicDE5MlwiPT09ZSl0PW5ldyB2O2Vsc2V7aWYoXCJwMjU1MTlcIiE9PWUpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBwcmltZSBcIitlKTt0PW5ldyB5fXJldHVybiBBW2VdPXQsdH0sbS5wcm90b3R5cGUuX3ZlcmlmeTE9ZnVuY3Rpb24odCl7bigwPT09dC5uZWdhdGl2ZSxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpLG4odC5yZWQsXCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpfSxtLnByb3RvdHlwZS5fdmVyaWZ5Mj1mdW5jdGlvbih0LGUpe24oMD09PSh0Lm5lZ2F0aXZlfGUubmVnYXRpdmUpLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIiksbih0LnJlZCYmdC5yZWQ9PT1lLnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9LG0ucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKHQpLl9mb3JjZVJlZCh0aGlzKTp0LnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LG0ucHJvdG90eXBlLm5lZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc1plcm8oKT90LmNsb25lKCk6dGhpcy5tLnN1Yih0KS5fZm9yY2VSZWQodGhpcyl9LG0ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmFkZChlKTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LG0ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5pYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSxtLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCxlKXt0aGlzLl92ZXJpZnkyKHQsZSk7dmFyIHI9dC5zdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlzdWIoZSk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSxtLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5MSh0KSx0aGlzLmltb2QodC51c2hsbihlKSl9LG0ucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih0LGUpLHRoaXMuaW1vZCh0LmltdWwoZSkpfSxtLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fdmVyaWZ5Mih0LGUpLHRoaXMuaW1vZCh0Lm11bChlKSl9LG0ucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW11bCh0LHQuY2xvbmUoKSl9LG0ucHJvdG90eXBlLnNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tdWwodCx0KX0sbS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbih0KXtpZih0LmlzWmVybygpKXJldHVybiB0LmNsb25lKCk7dmFyIGU9dGhpcy5tLmFuZGxuKDMpO2lmKG4oZSUyPT09MSksMz09PWUpe3ZhciByPXRoaXMubS5hZGQobmV3IG8oMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3codCxyKX1mb3IodmFyIGk9dGhpcy5tLnN1Ym4oMSksYT0wOyFpLmlzWmVybygpJiYwPT09aS5hbmRsbigxKTspYSsrLGkuaXVzaHJuKDEpO24oIWkuaXNaZXJvKCkpO3ZhciBmPW5ldyBvKDEpLnRvUmVkKHRoaXMpLHM9Zi5yZWROZWcoKSx1PXRoaXMubS5zdWJuKDEpLml1c2hybigxKSxoPXRoaXMubS5iaXRMZW5ndGgoKTtmb3IoaD1uZXcgbygyKmgqaCkudG9SZWQodGhpcyk7MCE9PXRoaXMucG93KGgsdSkuY21wKHMpOyloLnJlZElBZGQocyk7Zm9yKHZhciBjPXRoaXMucG93KGgsaSksZD10aGlzLnBvdyh0LGkuYWRkbigxKS5pdXNocm4oMSkpLGw9dGhpcy5wb3codCxpKSxwPWE7MCE9PWwuY21wKGYpOyl7Zm9yKHZhciBiPWwsdj0wOzAhPT1iLmNtcChmKTt2KyspYj1iLnJlZFNxcigpO24odjxwKTt2YXIgeT10aGlzLnBvdyhjLG5ldyBvKDEpLml1c2hsbihwLXYtMSkpO2Q9ZC5yZWRNdWwoeSksYz15LnJlZFNxcigpLGw9bC5yZWRNdWwoYykscD12fXJldHVybiBkfSxtLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3ZhciBlPXQuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT1lLm5lZ2F0aXZlPyhlLm5lZ2F0aXZlPTAsdGhpcy5pbW9kKGUpLnJlZE5lZygpKTp0aGlzLmltb2QoZSl9LG0ucHJvdG90eXBlLnBvdz1mdW5jdGlvbih0LGUpe2lmKGUuaXNaZXJvKCkpcmV0dXJuIG5ldyBvKDEpO2lmKDA9PT1lLmNtcG4oMSkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgcj00LG49bmV3IEFycmF5KDE8PHIpO25bMF09bmV3IG8oMSkudG9SZWQodGhpcyksblsxXT10O2Zvcih2YXIgaT0yO2k8bi5sZW5ndGg7aSsrKW5baV09dGhpcy5tdWwobltpLTFdLHQpO3ZhciBhPW5bMF0sZj0wLHM9MCx1PWUuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT11JiYodT0yNiksaT1lLmxlbmd0aC0xO2k+PTA7aS0tKXtmb3IodmFyIGg9ZS53b3Jkc1tpXSxjPXUtMTtjPj0wO2MtLSl7dmFyIGQ9aD4+YyYxO2EhPT1uWzBdJiYoYT10aGlzLnNxcihhKSksMCE9PWR8fDAhPT1mPyhmPDw9MSxmfD1kLHMrKywocz09PXJ8fDA9PT1pJiYwPT09YykmJihhPXRoaXMubXVsKGEsbltmXSkscz0wLGY9MCkpOnM9MH11PTI2fXJldHVybiBhfSxtLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24odCl7dmFyIGU9dC51bW9kKHRoaXMubSk7cmV0dXJuIGU9PT10P2UuY2xvbmUoKTplfSxtLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0KXt2YXIgZT10LmNsb25lKCk7cmV0dXJuIGUucmVkPW51bGwsZX0sby5tb250PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZyh0KX0saShnLG0pLGcucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbW9kKHQudXNobG4odGhpcy5zaGlmdCkpfSxnLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmltb2QodC5tdWwodGhpcy5yaW52KSk7cmV0dXJuIGUucmVkPW51bGwsZX0sZy5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0LGUpe2lmKHQuaXNaZXJvKCl8fGUuaXNaZXJvKCkpcmV0dXJuIHQud29yZHNbMF09MCx0Lmxlbmd0aD0xLHQ7dmFyIHI9dC5pbXVsKGUpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksaT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLG89aTtyZXR1cm4gaS5jbXAodGhpcy5tKT49MD9vPWkuaXN1Yih0aGlzLm0pOmkuY21wbigwKTwwJiYobz1pLmlhZGQodGhpcy5tKSksby5fZm9yY2VSZWQodGhpcyl9LGcucHJvdG90eXBlLm11bD1mdW5jdGlvbih0LGUpe2lmKHQuaXNaZXJvKCl8fGUuaXNaZXJvKCkpcmV0dXJuIG5ldyBvKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgcj10Lm11bChlKSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxhPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/YT1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKGE9aS5pYWRkKHRoaXMubSkpLGEuX2ZvcmNlUmVkKHRoaXMpfSxnLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1vZCh0Ll9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7cmV0dXJuIGUuX2ZvcmNlUmVkKHRoaXMpfX0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHR8fHQsdGhpcyl9KS5jYWxsKGUscig5MikodCkpfSxmdW5jdGlvbih0LGUscil7dmFyIG49ZTtuLlJlcG9ydGVyPXIoNTgyKS5SZXBvcnRlcixuLkRlY29kZXJCdWZmZXI9cigyMzQpLkRlY29kZXJCdWZmZXIsbi5FbmNvZGVyQnVmZmVyPXIoMjM0KS5FbmNvZGVyQnVmZmVyLG4uTm9kZT1yKDU4MSl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQscil7Zm9yKHZhciBuPU1hdGgubWluKHQubGVuZ3RoLHIubGVuZ3RoKSxpPW5ldyBlKG4pLG89MDtvPG47KytvKWlbb109dFtvXV5yW29dO3JldHVybiBpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5KHQpOlwiW29iamVjdCBBcnJheV1cIj09PXYodCl9ZnVuY3Rpb24gbih0KXtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIHR9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbnVsbD09PXR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbD09dH1mdW5jdGlvbiBhKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGYodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHR9ZnVuY3Rpb24gcyh0KXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdH1mdW5jdGlvbiB1KHQpe3JldHVybiB2b2lkIDA9PT10fWZ1bmN0aW9uIGgodCl7cmV0dXJuXCJbb2JqZWN0IFJlZ0V4cF1cIj09PXYodCl9ZnVuY3Rpb24gYyh0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gZCh0KXtyZXR1cm5cIltvYmplY3QgRGF0ZV1cIj09PXYodCl9ZnVuY3Rpb24gbCh0KXtyZXR1cm5cIltvYmplY3QgRXJyb3JdXCI9PT12KHQpfHx0IGluc3RhbmNlb2YgRXJyb3J9ZnVuY3Rpb24gcCh0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGw9PT10fHxcImJvb2xlYW5cIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0fHxcInN0cmluZ1wiPT10eXBlb2YgdHx8XCJzeW1ib2xcIj09dHlwZW9mIHR8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIHYodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1lLmlzQXJyYXk9cixlLmlzQm9vbGVhbj1uLGUuaXNOdWxsPWksZS5pc051bGxPclVuZGVmaW5lZD1vLGUuaXNOdW1iZXI9YSxlLmlzU3RyaW5nPWYsZS5pc1N5bWJvbD1zLGUuaXNVbmRlZmluZWQ9dSxlLmlzUmVnRXhwPWgsZS5pc09iamVjdD1jLGUuaXNEYXRlPWQsZS5pc0Vycm9yPWwsZS5pc0Z1bmN0aW9uPXAsZS5pc1ByaW1pdGl2ZT1iLGUuaXNCdWZmZXI9dC5pc0J1ZmZlcn0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSl7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT90LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pfTp0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX12YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHImJnQoZS5wcm90b3R5cGUsciksbiYmdChlLG4pLGV9fSgpLG89cigxMTUpLGE9cigxNTkpLGY9cigxMTMpLHM9cig1MyksdT1yKDExNiksaD1yKDIwMSksYz1yKDkxKSxkPXIoMTYyKSxsPS9eY2M6KFsxLTlhLWZdWzAtOWEtZl17MCwzfXwwKTpbMS05YS1mXVswLTlhLWZdezAsMTV9OlthLXpBLVowLTlfLV17MCw4Nn06KFsxLTldWzAtOV17MCwxN318MCkkLyxwPS9eY2M6KFsxLTlhLWZdWzAtOWEtZl17MCwzfXwwKTpbMS05YS1mXVswLTlhLWZdezAsN306W2EtekEtWjAtOV8tXXswLDg2fTooWzEtOV1bMC05XXswLDE3fXwwKSQvLGI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bih0aGlzLHQpfXJldHVybiBpKHQsW3trZXk6XCJnZXRUeXBlSWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGV9fSx7a2V5Olwic2V0VHlwZUlkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy50eXBlPXR9fSx7a2V5OlwiZ2V0Qml0bWFza1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYml0bWFza319LHtrZXk6XCJzZXRCaXRtYXNrXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5iaXRtYXNrPXR9fSx7a2V5OlwiZ2V0SGFzaFwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaGFzaCl0aHJvdyBuZXcgcyhcIkhhc2ggbm90IHNldFwiKTtyZXR1cm4gdGhpcy5oYXNofX0se2tleTpcInNldEhhc2hcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiSGFzaCBtdXN0IGJlIGEgQnVmZmVyXCIpO3RoaXMuaGFzaD10fX0se2tleTpcImdldE1heEZ1bGZpbGxtZW50TGVuZ3RoXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihcIm51bWJlclwiIT10eXBlb2YgdGhpcy5tYXhGdWxmaWxsbWVudExlbmd0aCl0aHJvdyBuZXcgcyhcIk1heGltdW0gZnVsZmlsbG1lbnQgbGVuZ3RoIG5vdCBzZXRcIik7cmV0dXJuIHRoaXMubWF4RnVsZmlsbG1lbnRMZW5ndGh9fSx7a2V5Olwic2V0TWF4RnVsZmlsbG1lbnRMZW5ndGhcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVsZmlsbG1lbnQgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlclwiKTtpZih0PDApdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bGZpbGxtZW50IGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIG9yIHplcm9cIik7dGhpcy5tYXhGdWxmaWxsbWVudExlbmd0aD10fX0se2tleTpcInNlcmlhbGl6ZVVyaVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuXCJjYzpcIit0aGlzLmdldFR5cGVJZCgpLnRvU3RyaW5nKDE2KStcIjpcIit0aGlzLmdldEJpdG1hc2soKS50b1N0cmluZygxNikrXCI6XCIrdS5lbmNvZGUodGhpcy5nZXRIYXNoKCkpK1wiOlwiK3RoaXMuZ2V0TWF4RnVsZmlsbG1lbnRMZW5ndGgoKX19LHtrZXk6XCJzZXJpYWxpemVCaW5hcnlcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBjO3JldHVybiB0LndyaXRlVUludDE2KHRoaXMuZ2V0VHlwZUlkKCkpLHQud3JpdGVWYXJVSW50KHRoaXMuZ2V0Qml0bWFzaygpKSx0LndyaXRlVmFyT2N0ZXRTdHJpbmcodGhpcy5nZXRIYXNoKCkpLHQud3JpdGVWYXJVSW50KHRoaXMuZ2V0TWF4RnVsZmlsbG1lbnRMZW5ndGgoKSksdC5nZXRCdWZmZXIoKX19LHtrZXk6XCJwYXJzZUJpbmFyeVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0VHlwZUlkKHQucmVhZFVJbnQxNigpKSx0aGlzLnNldEJpdG1hc2sodC5yZWFkVmFyVUludCgpKSx0aGlzLnNldEhhc2godC5yZWFkVmFyT2N0ZXRTdHJpbmcoKSksdGhpcy5zZXRNYXhGdWxmaWxsbWVudExlbmd0aCh0LnJlYWRWYXJVSW50KCkpfX0se2tleTpcInZhbGlkYXRlXCIsdmFsdWU6ZnVuY3Rpb24oKXtpZihvLmdldENsYXNzRnJvbVR5cGVJZCh0aGlzLmdldFR5cGVJZCgpKSx0aGlzLmdldEJpdG1hc2soKT50Lk1BWF9TQUZFX0JJVE1BU0spdGhyb3cgbmV3IEVycm9yKFwiQml0bWFzayB0b28gbGFyZ2UgdG8gYmUgc2FmZWx5IHJlcHJlc2VudGVkXCIpO2lmKHRoaXMuZ2V0Qml0bWFzaygpJn50LlNVUFBPUlRFRF9CSVRNQVNLKXRocm93IG5ldyBFcnJvcihcIkNvbmRpdGlvbiByZXF1ZXN0ZWQgdW5zdXBwb3J0ZWQgZmVhdHVyZSBzdWl0ZXNcIik7aWYodGhpcy5nZXRNYXhGdWxmaWxsbWVudExlbmd0aCgpPnQuTUFYX0ZVTEZJTExNRU5UX0xFTkdUSCl0aHJvdyBuZXcgRXJyb3IoXCJDb25kaXRpb24gcmVxdWVzdGVkIHRvbyBsYXJnZSBvZiBhIG1heCBmdWxmaWxsbWVudCBzaXplXCIpO3JldHVybiEwfX1dLFt7a2V5OlwiZnJvbVVyaVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiB0KXJldHVybiBlO2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIlNlcmlhbGl6ZWQgY29uZGl0aW9uIG11c3QgYmUgYSBzdHJpbmdcIik7dmFyIHI9ZS5zcGxpdChcIjpcIik7aWYoXCJjY1wiIT09clswXSl0aHJvdyBuZXcgYSgnU2VyaWFsaXplZCBjb25kaXRpb24gbXVzdCBzdGFydCB3aXRoIFwiY2M6XCInKTtpZighdC5SRUdFWF9TVFJJQ1QuZXhlYyhlKSl0aHJvdyBuZXcgZihcIkludmFsaWQgY29uZGl0aW9uIGZvcm1hdFwiKTt2YXIgbj1uZXcgdDtyZXR1cm4gbi5zZXRUeXBlSWQocGFyc2VJbnQoclsxXSwxNikpLG4uc2V0Qml0bWFzayhwYXJzZUludChyWzJdLDE2KSksbi5zZXRIYXNoKHUuZGVjb2RlKHJbM10pKSxuLnNldE1heEZ1bGZpbGxtZW50TGVuZ3RoKHBhcnNlSW50KHJbNF0sMTApKSxufX0se2tleTpcImZyb21CaW5hcnlcIix2YWx1ZTpmdW5jdGlvbihlKXtlPWguZnJvbShlKTt2YXIgcj1uZXcgdDtyZXR1cm4gci5wYXJzZUJpbmFyeShlKSxyfX1dKSx0fSgpO2IuTUFYX1NBRkVfQklUTUFTSz00Mjk0OTY3Mjk1LGIuU1VQUE9SVEVEX0JJVE1BU0s9NjMsYi5NQVhfRlVMRklMTE1FTlRfTEVOR1RIPTY1NTM1LGIuUkVHRVg9bCxiLlJFR0VYX1NUUklDVD1wLHQuZXhwb3J0cz1ifSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxmPXIoNjMpLHM9cigxMTQpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBuKHRoaXMsZSksaSh0aGlzLChlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBvKGUsdCksYShlLFt7a2V5OlwiZ2VuZXJhdGVIYXNoXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcyhcInNoYTI1NlwiKTtyZXR1cm4gdGhpcy53cml0ZUhhc2hQYXlsb2FkKHQpLHQuZ2V0RGlnZXN0KCl9fV0pLGV9KGYpO3QuZXhwb3J0cz11fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdD9udWxsIT09dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTcpLGk9cigxMCksbz1yKDQ3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscixhKXt2YXIgZixzPW4oZSksdT1pKHMubGVuZ3RoKSxoPW8oYSx1KTtpZih0JiZyIT1yKXtmb3IoO3U+aDspaWYoZj1zW2grK10sZiE9ZilyZXR1cm4hMH1lbHNlIGZvcig7dT5oO2grKylpZigodHx8aCBpbiBzKSYmc1toXT09PXIpcmV0dXJuIHR8fGh8fDA7cmV0dXJuIXQmJi0xfX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDQpLGk9cigwKSxvPXIoMTUpLGE9cig0NSksZj1yKDM2KSxzPXIoNTUpLHU9cig0MCksaD1yKDYpLGM9cig1KSxkPXIoODQpLGw9cig1NykscD1yKDEyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGIsdix5KXt2YXIgbT1uW3RdLGc9bSx3PXY/XCJzZXRcIjpcImFkZFwiLF89ZyYmZy5wcm90b3R5cGUsTT17fSxTPWZ1bmN0aW9uKHQpe3ZhciBlPV9bdF07byhfLHQsXCJkZWxldGVcIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKHkmJiFoKHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06XCJoYXNcIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKHkmJiFoKHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06XCJnZXRcIj09dD9mdW5jdGlvbih0KXtyZXR1cm4geSYmIWgodCk/dm9pZCAwOmUuY2FsbCh0aGlzLDA9PT10PzA6dCl9OlwiYWRkXCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIGUuY2FsbCh0aGlzLDA9PT10PzA6dCksdGhpc306ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0LHIpLHRoaXN9KX07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZyYmKHl8fF8uZm9yRWFjaCYmIWMoZnVuY3Rpb24oKXsobmV3IGcpLmVudHJpZXMoKS5uZXh0KCl9KSkpe3ZhciBFPW5ldyBnLEE9RVt3XSh5P3t9Oi0wLDEpIT1FLGs9YyhmdW5jdGlvbigpe0UuaGFzKDEpfSkseD1kKGZ1bmN0aW9uKHQpe25ldyBnKHQpfSksST0heSYmYyhmdW5jdGlvbigpe2Zvcih2YXIgdD1uZXcgZyxlPTU7ZS0tOyl0W3ddKGUsZSk7cmV0dXJuIXQuaGFzKC0wKX0pO3h8fChnPWUoZnVuY3Rpb24oZSxyKXt1KGUsZyx0KTt2YXIgbj1wKG5ldyBtLGUsZyk7cmV0dXJuIHZvaWQgMCE9ciYmcyhyLHYsblt3XSxuKSxufSksZy5wcm90b3R5cGU9XyxfLmNvbnN0cnVjdG9yPWcpLChrfHxJKSYmKFMoXCJkZWxldGVcIiksUyhcImhhc1wiKSx2JiZTKFwiZ2V0XCIpKSwoSXx8QSkmJlModykseSYmXy5jbGVhciYmZGVsZXRlIF8uY2xlYXJ9ZWxzZSBnPWIuZ2V0Q29uc3RydWN0b3IoZSx0LHYsdyksYShnLnByb3RvdHlwZSxyKSxmLk5FRUQ9ITA7cmV0dXJuIGwoZyx0KSxNW3RdPWcsaShpLkcraS5XK2kuRiooZyE9bSksTSkseXx8Yi5zZXRTdHJvbmcoZyx0LHYpLGd9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxNCksaT1yKDE1KSxvPXIoNSksYT1yKDI0KSxmPXIoNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgcz1mKHQpLHU9cihhLHMsXCJcIlt0XSksaD11WzBdLGM9dVsxXTtvKGZ1bmN0aW9uKCl7dmFyIGU9e307cmV0dXJuIGVbc109ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9XCJcIlt0XShlKX0pJiYoaShTdHJpbmcucHJvdG90eXBlLHQsaCksbihSZWdFeHAucHJvdG90eXBlLHMsMj09ZT9mdW5jdGlvbih0LGUpe3JldHVybiBjLmNhbGwodCx0aGlzLGUpfTpmdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKHQsdGhpcyl9KSl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdD1uKHRoaXMpLGU9XCJcIjtyZXR1cm4gdC5nbG9iYWwmJihlKz1cImdcIiksdC5pZ25vcmVDYXNlJiYoZSs9XCJpXCIpLHQubXVsdGlsaW5lJiYoZSs9XCJtXCIpLHQudW5pY29kZSYmKGUrPVwidVwiKSx0LnN0aWNreSYmKGUrPVwieVwiKSxlfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXZvaWQgMD09PXI7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG4/dCgpOnQuY2FsbChyKTtjYXNlIDE6cmV0dXJuIG4/dChlWzBdKTp0LmNhbGwocixlWzBdKTtjYXNlIDI6cmV0dXJuIG4/dChlWzBdLGVbMV0pOnQuY2FsbChyLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuP3QoZVswXSxlWzFdLGVbMl0pOnQuY2FsbChyLGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIG4/dChlWzBdLGVbMV0sZVsyXSxlWzNdKTp0LmNhbGwocixlWzBdLGVbMV0sZVsyXSxlWzNdKX1yZXR1cm4gdC5hcHBseShyLGUpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNiksaT1yKDIzKSxvPXIoNykoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG4odCkmJih2b2lkIDAhPT0oZT10W29dKT8hIWU6XCJSZWdFeHBcIj09aSh0KSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig3KShcIml0ZXJhdG9yXCIpLGk9ITE7dHJ5e3ZhciBvPVs3XVtuXSgpO28ucmV0dXJuPWZ1bmN0aW9uKCl7aT0hMH0sQXJyYXkuZnJvbShvLGZ1bmN0aW9uKCl7dGhyb3cgMn0pfWNhdGNoKHQpe310LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighZSYmIWkpcmV0dXJuITE7dmFyIHI9ITE7dHJ5e3ZhciBvPVs3XSxhPW9bbl0oKTthLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpyPSEwfX0sb1tuXT1mdW5jdGlvbigpe3JldHVybiBhfSx0KG8pfWNhdGNoKHQpe31yZXR1cm4gcn19LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9cig0MSl8fCFyKDUpKGZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5yYW5kb20oKTtfX2RlZmluZVNldHRlcl9fLmNhbGwobnVsbCx0LGZ1bmN0aW9uKCl7fSksZGVsZXRlIHIoNClbdF19KX0sZnVuY3Rpb24odCxlKXtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNCksaT1cIl9fY29yZS1qc19zaGFyZWRfX1wiLG89bltpXXx8KG5baV09e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gb1t0XXx8KG9bdF09e30pfX0sZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixpPXIoNCksbz1yKDE0KSxhPXIoNDgpLGY9YShcInR5cGVkX2FycmF5XCIpLHM9YShcInZpZXdcIiksdT0hKCFpLkFycmF5QnVmZmVyfHwhaS5EYXRhVmlldyksaD11LGM9MCxkPTksbD1cIkludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XCIuc3BsaXQoXCIsXCIpO2M8ZDspKG49aVtsW2MrK11dKT8obyhuLnByb3RvdHlwZSxmLCEwKSxvKG4ucHJvdG90eXBlLHMsITApKTpoPSExO3QuZXhwb3J0cz17QUJWOnUsQ09OU1RSOmgsVFlQRUQ6ZixWSUVXOnN9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdD9udWxsIT09dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1yKDQ3Mil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9cig0NzQpfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdC53ZWJwYWNrUG9seWZpbGx8fCh0LmRlcHJlY2F0ZT1mdW5jdGlvbigpe30sdC5wYXRocz1bXSx0LmNoaWxkcmVufHwodC5jaGlsZHJlbj1bXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJsb2FkZWRcIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQubH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlkXCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0Lml9fSksdC53ZWJwYWNrUG9seWZpbGw9MSksdH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtlLnJhbmRvbUJ5dGVzPWUucm5nPWUucHNldWRvUmFuZG9tQnl0ZXM9ZS5wcm5nPXIoNjEpLGUuY3JlYXRlSGFzaD1lLkhhc2g9cig1OSksZS5jcmVhdGVIbWFjPWUuSG1hYz1yKDE0OSk7dmFyIG49W1wic2hhMVwiLFwic2hhMjI0XCIsXCJzaGEyNTZcIixcInNoYTM4NFwiLFwic2hhNTEyXCIsXCJtZDVcIixcInJtZDE2MFwiXS5jb25jYXQoT2JqZWN0LmtleXMocigyMTEpKSk7ZS5nZXRIYXNoZXM9ZnVuY3Rpb24oKXtyZXR1cm4gbn07dmFyIGk9cigxNTEpO2UucGJrZGYyPWkucGJrZGYyLGUucGJrZGYyU3luYz1pLnBia2RmMlN5bmM7dmFyIG89cig0OTMpO1tcIkNpcGhlclwiLFwiY3JlYXRlQ2lwaGVyXCIsXCJDaXBoZXJpdlwiLFwiY3JlYXRlQ2lwaGVyaXZcIixcIkRlY2lwaGVyXCIsXCJjcmVhdGVEZWNpcGhlclwiLFwiRGVjaXBoZXJpdlwiLFwiY3JlYXRlRGVjaXBoZXJpdlwiLFwiZ2V0Q2lwaGVyc1wiLFwibGlzdENpcGhlcnNcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPW9bdF19KTt2YXIgYT1yKDU3Myk7W1wiRGlmZmllSGVsbG1hbkdyb3VwXCIsXCJjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXBcIixcImdldERpZmZpZUhlbGxtYW5cIixcImNyZWF0ZURpZmZpZUhlbGxtYW5cIixcIkRpZmZpZUhlbGxtYW5cIl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPWFbdF19KTt2YXIgZj1yKDUwNik7W1wiY3JlYXRlU2lnblwiLFwiU2lnblwiLFwiY3JlYXRlVmVyaWZ5XCIsXCJWZXJpZnlcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPWZbdF19KSxlLmNyZWF0ZUVDREg9cig1NDQpO3ZhciBzPXIoNTc3KTtbXCJwdWJsaWNFbmNyeXB0XCIsXCJwcml2YXRlRW5jcnlwdFwiLFwicHVibGljRGVjcnlwdFwiLFwicHJpdmF0ZURlY3J5cHRcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXNbdF19KSxbXCJjcmVhdGVDcmVkZW50aWFsc1wiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdF09ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoW1wic29ycnksIFwiK3QrXCIgaXMgbm90IGltcGxlbWVudGVkIHlldFwiLFwid2UgYWNjZXB0IHB1bGwgcmVxdWVzdHNcIixcImh0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeVwiXS5qb2luKFwiXFxuXCIpKX19KX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKHQpe3ZhciBlLHI7cmV0dXJuIGU9dD5mfHx0PDA/KHI9TWF0aC5hYnModCklZix0PDA/Zi1yOnIpOnR9ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO3QrKyl0W2VdPTA7cmV0dXJuITF9ZnVuY3Rpb24gaSgpe3RoaXMuU0JPWD1bXSx0aGlzLklOVl9TQk9YPVtdLHRoaXMuU1VCX01JWD1bW10sW10sW10sW11dLHRoaXMuSU5WX1NVQl9NSVg9W1tdLFtdLFtdLFtdXSx0aGlzLmluaXQoKSx0aGlzLlJDT049WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPXQubGVuZ3RoLzQscj1uZXcgQXJyYXkoZSksbj0tMTsrK248ZTspcltuXT10LnJlYWRVSW50MzJCRSg0Km4pO3JldHVybiByfWZ1bmN0aW9uIGEodCl7dGhpcy5fa2V5PW8odCksdGhpcy5fZG9SZXNldCgpfXZhciBmPU1hdGgucG93KDIsMzIpO2kucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLG8sYSxmLHMsdTtmb3IodD1mdW5jdGlvbigpe3ZhciB0LHI7Zm9yKHI9W10sZT10PTA7dDwyNTY7ZT0rK3QpZTwxMjg/ci5wdXNoKGU8PDEpOnIucHVzaChlPDwxXjI4Myk7cmV0dXJuIHJ9KCksaT0wLHM9MCxlPXU9MDt1PDI1NjtlPSsrdSlyPXNeczw8MV5zPDwyXnM8PDNeczw8NCxyPXI+Pj44XjI1NSZyXjk5LHRoaXMuU0JPWFtpXT1yLHRoaXMuSU5WX1NCT1hbcl09aSxvPXRbaV0sYT10W29dLGY9dFthXSxuPTI1Nyp0W3JdXjE2ODQzMDA4KnIsdGhpcy5TVUJfTUlYWzBdW2ldPW48PDI0fG4+Pj44LHRoaXMuU1VCX01JWFsxXVtpXT1uPDwxNnxuPj4+MTYsdGhpcy5TVUJfTUlYWzJdW2ldPW48PDh8bj4+PjI0LHRoaXMuU1VCX01JWFszXVtpXT1uLG49MTY4NDMwMDkqZl42NTUzNyphXjI1NypvXjE2ODQzMDA4KmksdGhpcy5JTlZfU1VCX01JWFswXVtyXT1uPDwyNHxuPj4+OCx0aGlzLklOVl9TVUJfTUlYWzFdW3JdPW48PDE2fG4+Pj4xNix0aGlzLklOVl9TVUJfTUlYWzJdW3JdPW48PDh8bj4+PjI0LHRoaXMuSU5WX1NVQl9NSVhbM11bcl09biwwPT09aT9pPXM9MTooaT1vXnRbdFt0W2Zeb11dXSxzXj10W3Rbc11dKTtyZXR1cm4hMH07dmFyIHM9bmV3IGk7YS5ibG9ja1NpemU9MTYsYS5wcm90b3R5cGUuYmxvY2tTaXplPWEuYmxvY2tTaXplLGEua2V5U2l6ZT0zMixhLnByb3RvdHlwZS5rZXlTaXplPWEua2V5U2l6ZSxhLnByb3RvdHlwZS5fZG9SZXNldD1mdW5jdGlvbigpe3ZhciB0LGUscixuLGksbztmb3Iocj10aGlzLl9rZXksZT1yLmxlbmd0aCx0aGlzLl9uUm91bmRzPWUrNixpPTQqKHRoaXMuX25Sb3VuZHMrMSksdGhpcy5fa2V5U2NoZWR1bGU9W10sbj0wO248aTtuKyspdGhpcy5fa2V5U2NoZWR1bGVbbl09bjxlP3Jbbl06KG89dGhpcy5fa2V5U2NoZWR1bGVbbi0xXSxuJWU9PT0wPyhvPW88PDh8bz4+PjI0LG89cy5TQk9YW28+Pj4yNF08PDI0fHMuU0JPWFtvPj4+MTYmMjU1XTw8MTZ8cy5TQk9YW28+Pj44JjI1NV08PDh8cy5TQk9YWzI1NSZvXSxvXj1zLlJDT05bbi9lfDBdPDwyNCk6ZT42JiZuJWU9PT00P289cy5TQk9YW28+Pj4yNF08PDI0fHMuU0JPWFtvPj4+MTYmMjU1XTw8MTZ8cy5TQk9YW28+Pj44JjI1NV08PDh8cy5TQk9YWzI1NSZvXTp2b2lkIDAsdGhpcy5fa2V5U2NoZWR1bGVbbi1lXV5vKTtmb3IodGhpcy5faW52S2V5U2NoZWR1bGU9W10sdD0wO3Q8aTt0Kyspbj1pLXQsbz10aGlzLl9rZXlTY2hlZHVsZVtuLSh0JTQ/MDo0KV0sdGhpcy5faW52S2V5U2NoZWR1bGVbdF09dDw0fHxuPD00P286cy5JTlZfU1VCX01JWFswXVtzLlNCT1hbbz4+PjI0XV1ecy5JTlZfU1VCX01JWFsxXVtzLlNCT1hbbz4+PjE2JjI1NV1dXnMuSU5WX1NVQl9NSVhbMl1bcy5TQk9YW28+Pj44JjI1NV1dXnMuSU5WX1NVQl9NSVhbM11bcy5TQk9YWzI1NSZvXV07XG5yZXR1cm4hMH0sYS5wcm90b3R5cGUuZW5jcnlwdEJsb2NrPWZ1bmN0aW9uKGUpe2U9byhuZXcgdChlKSk7dmFyIHI9dGhpcy5fZG9DcnlwdEJsb2NrKGUsdGhpcy5fa2V5U2NoZWR1bGUscy5TVUJfTUlYLHMuU0JPWCksbj1uZXcgdCgxNik7cmV0dXJuIG4ud3JpdGVVSW50MzJCRShyWzBdLDApLG4ud3JpdGVVSW50MzJCRShyWzFdLDQpLG4ud3JpdGVVSW50MzJCRShyWzJdLDgpLG4ud3JpdGVVSW50MzJCRShyWzNdLDEyKSxufSxhLnByb3RvdHlwZS5kZWNyeXB0QmxvY2s9ZnVuY3Rpb24oZSl7ZT1vKG5ldyB0KGUpKTt2YXIgcj1bZVszXSxlWzFdXTtlWzFdPXJbMF0sZVszXT1yWzFdO3ZhciBuPXRoaXMuX2RvQ3J5cHRCbG9jayhlLHRoaXMuX2ludktleVNjaGVkdWxlLHMuSU5WX1NVQl9NSVgscy5JTlZfU0JPWCksaT1uZXcgdCgxNik7cmV0dXJuIGkud3JpdGVVSW50MzJCRShuWzBdLDApLGkud3JpdGVVSW50MzJCRShuWzNdLDQpLGkud3JpdGVVSW50MzJCRShuWzJdLDgpLGkud3JpdGVVSW50MzJCRShuWzFdLDEyKSxpfSxhLnByb3RvdHlwZS5zY3J1Yj1mdW5jdGlvbigpe24odGhpcy5fa2V5U2NoZWR1bGUpLG4odGhpcy5faW52S2V5U2NoZWR1bGUpLG4odGhpcy5fa2V5KX0sYS5wcm90b3R5cGUuX2RvQ3J5cHRCbG9jaz1mdW5jdGlvbih0LGUsbixpKXt2YXIgbyxhLGYscyx1LGgsYyxkLGw7YT10WzBdXmVbMF0sZj10WzFdXmVbMV0scz10WzJdXmVbMl0sdT10WzNdXmVbM10sbz00O2Zvcih2YXIgcD0xO3A8dGhpcy5fblJvdW5kcztwKyspaD1uWzBdW2E+Pj4yNF1eblsxXVtmPj4+MTYmMjU1XV5uWzJdW3M+Pj44JjI1NV1eblszXVsyNTUmdV1eZVtvKytdLGM9blswXVtmPj4+MjRdXm5bMV1bcz4+PjE2JjI1NV1eblsyXVt1Pj4+OCYyNTVdXm5bM11bMjU1JmFdXmVbbysrXSxkPW5bMF1bcz4+PjI0XV5uWzFdW3U+Pj4xNiYyNTVdXm5bMl1bYT4+PjgmMjU1XV5uWzNdWzI1NSZmXV5lW28rK10sbD1uWzBdW3U+Pj4yNF1eblsxXVthPj4+MTYmMjU1XV5uWzJdW2Y+Pj44JjI1NV1eblszXVsyNTUmc11eZVtvKytdLGE9aCxmPWMscz1kLHU9bDtyZXR1cm4gaD0oaVthPj4+MjRdPDwyNHxpW2Y+Pj4xNiYyNTVdPDwxNnxpW3M+Pj44JjI1NV08PDh8aVsyNTUmdV0pXmVbbysrXSxjPShpW2Y+Pj4yNF08PDI0fGlbcz4+PjE2JjI1NV08PDE2fGlbdT4+PjgmMjU1XTw8OHxpWzI1NSZhXSleZVtvKytdLGQ9KGlbcz4+PjI0XTw8MjR8aVt1Pj4+MTYmMjU1XTw8MTZ8aVthPj4+OCYyNTVdPDw4fGlbMjU1JmZdKV5lW28rK10sbD0oaVt1Pj4+MjRdPDwyNHxpW2E+Pj4xNiYyNTVdPDwxNnxpW2Y+Pj44JjI1NV08PDh8aVsyNTUmc10pXmVbbysrXSxbcihoKSxyKGMpLHIoZCkscihsKV19LGUuQUVTPWF9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUpe2VbXCJhZXMtMTI4LWVjYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjowLG1vZGU6XCJFQ0JcIix0eXBlOlwiYmxvY2tcIn0sZVtcImFlcy0xOTItZWNiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjAsbW9kZTpcIkVDQlwiLHR5cGU6XCJibG9ja1wifSxlW1wiYWVzLTI1Ni1lY2JcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MCxtb2RlOlwiRUNCXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMTI4LWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMTkyLWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjE5MixpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMjU2LWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjI1NixpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGUuYWVzMTI4PWVbXCJhZXMtMTI4LWNiY1wiXSxlLmFlczE5Mj1lW1wiYWVzLTE5Mi1jYmNcIl0sZS5hZXMyNTY9ZVtcImFlcy0yNTYtY2JjXCJdLGVbXCJhZXMtMTI4LWNmYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtY2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTkyLWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTkyLWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LW9mYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiT0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1vZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIk9GQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtb2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJPRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWN0clwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ1RSXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jdHJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNUUlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtY3RyXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDVFJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWdjbVwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxMixtb2RlOlwiR0NNXCIsdHlwZTpcImF1dGhcIn0sZVtcImFlcy0xOTItZ2NtXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjEyLG1vZGU6XCJHQ01cIix0eXBlOlwiYXV0aFwifSxlW1wiYWVzLTI1Ni1nY21cIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTIsbW9kZTpcIkdDTVwiLHR5cGU6XCJhdXRoXCJ9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlLHI9dC5sZW5ndGg7ci0tOyl7aWYoZT10LnJlYWRVSW50OChyKSwyNTUhPT1lKXtlKyssdC53cml0ZVVJbnQ4KGUscik7YnJlYWt9dC53cml0ZVVJbnQ4KDAscil9fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5fY2lwaGVyLmVuY3J5cHRCbG9jayh0Ll9wcmV2KTtyZXR1cm4gbih0Ll9wcmV2KSxlfXZhciBvPXIoNjcpO2UuZW5jcnlwdD1mdW5jdGlvbihlLHIpe2Zvcig7ZS5fY2FjaGUubGVuZ3RoPHIubGVuZ3RoOyllLl9jYWNoZT10LmNvbmNhdChbZS5fY2FjaGUsaShlKV0pO3ZhciBuPWUuX2NhY2hlLnNsaWNlKDAsci5sZW5ndGgpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShyLmxlbmd0aCksbyhyLG4pfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtpLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT1cInN0cmluZ1wiPT10eXBlb2YgdCx0aGlzLmhhc2hNb2RlP3RoaXNbdF09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9dmFyIGk9cigzMSkuVHJhbnNmb3JtLG89cigyKSxhPXIoNTIpLlN0cmluZ0RlY29kZXI7dC5leHBvcnRzPW4sbyhuLGkpLG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIsbil7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQscikpO3ZhciBpPXRoaXMuX3VwZGF0ZSh0KTtyZXR1cm4gdGhpcy5oYXNoTW9kZT90aGlzOihuJiYoaT10aGlzLl90b1N0cmluZyhpLG4pKSxpKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxuLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZSh0KTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKHQpKX1jYXRjaCh0KXtuPXR9ZmluYWxseXtyKG4pfX0sbi5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXt0aGlzLnB1c2godGhpcy5fZmluYWwoKSl9Y2F0Y2godCl7ZT10fWZpbmFsbHl7dChlKX19LG4ucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX2ZpbmFsKCl8fG5ldyBlKFwiXCIpO3JldHVybiB0JiYocj10aGlzLl90b1N0cmluZyhyLHQsITApKSxyfSxuLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBhKGUpLHRoaXMuX2VuY29kaW5nPWUpLHRoaXMuX2VuY29kaW5nIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzXCIpO3ZhciBuPXRoaXMuX2RlY29kZXIud3JpdGUodCk7cmV0dXJuIHImJihuKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxufX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9dC5leHBvcnRzPXIsci5lcXVhbD1mdW5jdGlvbih0LGUscil7aWYodCE9ZSl0aHJvdyBuZXcgRXJyb3Iocnx8XCJBc3NlcnRpb24gZmFpbGVkOiBcIit0K1wiICE9IFwiK2UpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPWU7bi5iYXNlPXIoNTA4KSxuLnNob3J0PXIoNTExKSxuLm1vbnQ9cig1MTApLG4uZWR3YXJkcz1yKDUwOSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lO24uYmlnbnVtPXIoMTgpLG4uZGVmaW5lPXIoNTMwKS5kZWZpbmUsbi5iYXNlPXIoNjgpLG4uY29uc3RhbnRzPXIoMjE1KSxuLmRlY29kZXJzPXIoNTM0KSxuLmVuY29kZXJzPXIoNTM2KX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKHQpe3ZhciBlLHI7cmV0dXJuIGU9dD5mfHx0PDA/KHI9TWF0aC5hYnModCklZix0PDA/Zi1yOnIpOnR9ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO3QrKyl0W2VdPTA7cmV0dXJuITF9ZnVuY3Rpb24gaSgpe3RoaXMuU0JPWD1bXSx0aGlzLklOVl9TQk9YPVtdLHRoaXMuU1VCX01JWD1bW10sW10sW10sW11dLHRoaXMuSU5WX1NVQl9NSVg9W1tdLFtdLFtdLFtdXSx0aGlzLmluaXQoKSx0aGlzLlJDT049WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPXQubGVuZ3RoLzQscj1uZXcgQXJyYXkoZSksbj0tMTsrK248ZTspcltuXT10LnJlYWRVSW50MzJCRSg0Km4pO3JldHVybiByfWZ1bmN0aW9uIGEodCl7dGhpcy5fa2V5PW8odCksdGhpcy5fZG9SZXNldCgpfXZhciBmPU1hdGgucG93KDIsMzIpO2kucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLG8sYSxmLHMsdTtmb3IodD1mdW5jdGlvbigpe3ZhciB0LHI7Zm9yKHI9W10sZT10PTA7dDwyNTY7ZT0rK3QpZTwxMjg/ci5wdXNoKGU8PDEpOnIucHVzaChlPDwxXjI4Myk7cmV0dXJuIHJ9KCksaT0wLHM9MCxlPXU9MDt1PDI1NjtlPSsrdSlyPXNeczw8MV5zPDwyXnM8PDNeczw8NCxyPXI+Pj44XjI1NSZyXjk5LHRoaXMuU0JPWFtpXT1yLHRoaXMuSU5WX1NCT1hbcl09aSxvPXRbaV0sYT10W29dLGY9dFthXSxuPTI1Nyp0W3JdXjE2ODQzMDA4KnIsdGhpcy5TVUJfTUlYWzBdW2ldPW48PDI0fG4+Pj44LHRoaXMuU1VCX01JWFsxXVtpXT1uPDwxNnxuPj4+MTYsdGhpcy5TVUJfTUlYWzJdW2ldPW48PDh8bj4+PjI0LHRoaXMuU1VCX01JWFszXVtpXT1uLG49MTY4NDMwMDkqZl42NTUzNyphXjI1NypvXjE2ODQzMDA4KmksdGhpcy5JTlZfU1VCX01JWFswXVtyXT1uPDwyNHxuPj4+OCx0aGlzLklOVl9TVUJfTUlYWzFdW3JdPW48PDE2fG4+Pj4xNix0aGlzLklOVl9TVUJfTUlYWzJdW3JdPW48PDh8bj4+PjI0LHRoaXMuSU5WX1NVQl9NSVhbM11bcl09biwwPT09aT9pPXM9MTooaT1vXnRbdFt0W2Zeb11dXSxzXj10W3Rbc11dKTtyZXR1cm4hMH07dmFyIHM9bmV3IGk7YS5ibG9ja1NpemU9MTYsYS5wcm90b3R5cGUuYmxvY2tTaXplPWEuYmxvY2tTaXplLGEua2V5U2l6ZT0zMixhLnByb3RvdHlwZS5rZXlTaXplPWEua2V5U2l6ZSxhLnByb3RvdHlwZS5fZG9SZXNldD1mdW5jdGlvbigpe3ZhciB0LGUscixuLGksbztmb3Iocj10aGlzLl9rZXksZT1yLmxlbmd0aCx0aGlzLl9uUm91bmRzPWUrNixpPTQqKHRoaXMuX25Sb3VuZHMrMSksdGhpcy5fa2V5U2NoZWR1bGU9W10sbj0wO248aTtuKyspdGhpcy5fa2V5U2NoZWR1bGVbbl09bjxlP3Jbbl06KG89dGhpcy5fa2V5U2NoZWR1bGVbbi0xXSxuJWU9PT0wPyhvPW88PDh8bz4+PjI0LG89cy5TQk9YW28+Pj4yNF08PDI0fHMuU0JPWFtvPj4+MTYmMjU1XTw8MTZ8cy5TQk9YW28+Pj44JjI1NV08PDh8cy5TQk9YWzI1NSZvXSxvXj1zLlJDT05bbi9lfDBdPDwyNCk6ZT42JiZuJWU9PT00P289cy5TQk9YW28+Pj4yNF08PDI0fHMuU0JPWFtvPj4+MTYmMjU1XTw8MTZ8cy5TQk9YW28+Pj44JjI1NV08PDh8cy5TQk9YWzI1NSZvXTp2b2lkIDAsdGhpcy5fa2V5U2NoZWR1bGVbbi1lXV5vKTtmb3IodGhpcy5faW52S2V5U2NoZWR1bGU9W10sdD0wO3Q8aTt0Kyspbj1pLXQsbz10aGlzLl9rZXlTY2hlZHVsZVtuLSh0JTQ/MDo0KV0sdGhpcy5faW52S2V5U2NoZWR1bGVbdF09dDw0fHxuPD00P286cy5JTlZfU1VCX01JWFswXVtzLlNCT1hbbz4+PjI0XV1ecy5JTlZfU1VCX01JWFsxXVtzLlNCT1hbbz4+PjE2JjI1NV1dXnMuSU5WX1NVQl9NSVhbMl1bcy5TQk9YW28+Pj44JjI1NV1dXnMuSU5WX1NVQl9NSVhbM11bcy5TQk9YWzI1NSZvXV07cmV0dXJuITB9LGEucHJvdG90eXBlLmVuY3J5cHRCbG9jaz1mdW5jdGlvbihlKXtlPW8obmV3IHQoZSkpO3ZhciByPXRoaXMuX2RvQ3J5cHRCbG9jayhlLHRoaXMuX2tleVNjaGVkdWxlLHMuU1VCX01JWCxzLlNCT1gpLG49bmV3IHQoMTYpO3JldHVybiBuLndyaXRlVUludDMyQkUoclswXSwwKSxuLndyaXRlVUludDMyQkUoclsxXSw0KSxuLndyaXRlVUludDMyQkUoclsyXSw4KSxuLndyaXRlVUludDMyQkUoclszXSwxMiksbn0sYS5wcm90b3R5cGUuZGVjcnlwdEJsb2NrPWZ1bmN0aW9uKGUpe2U9byhuZXcgdChlKSk7dmFyIHI9W2VbM10sZVsxXV07ZVsxXT1yWzBdLGVbM109clsxXTt2YXIgbj10aGlzLl9kb0NyeXB0QmxvY2soZSx0aGlzLl9pbnZLZXlTY2hlZHVsZSxzLklOVl9TVUJfTUlYLHMuSU5WX1NCT1gpLGk9bmV3IHQoMTYpO3JldHVybiBpLndyaXRlVUludDMyQkUoblswXSwwKSxpLndyaXRlVUludDMyQkUoblszXSw0KSxpLndyaXRlVUludDMyQkUoblsyXSw4KSxpLndyaXRlVUludDMyQkUoblsxXSwxMiksaX0sYS5wcm90b3R5cGUuc2NydWI9ZnVuY3Rpb24oKXtuKHRoaXMuX2tleVNjaGVkdWxlKSxuKHRoaXMuX2ludktleVNjaGVkdWxlKSxuKHRoaXMuX2tleSl9LGEucHJvdG90eXBlLl9kb0NyeXB0QmxvY2s9ZnVuY3Rpb24odCxlLG4saSl7dmFyIG8sYSxmLHMsdSxoLGMsZCxsO2E9dFswXV5lWzBdLGY9dFsxXV5lWzFdLHM9dFsyXV5lWzJdLHU9dFszXV5lWzNdLG89NDtmb3IodmFyIHA9MTtwPHRoaXMuX25Sb3VuZHM7cCsrKWg9blswXVthPj4+MjRdXm5bMV1bZj4+PjE2JjI1NV1eblsyXVtzPj4+OCYyNTVdXm5bM11bMjU1JnVdXmVbbysrXSxjPW5bMF1bZj4+PjI0XV5uWzFdW3M+Pj4xNiYyNTVdXm5bMl1bdT4+PjgmMjU1XV5uWzNdWzI1NSZhXV5lW28rK10sZD1uWzBdW3M+Pj4yNF1eblsxXVt1Pj4+MTYmMjU1XV5uWzJdW2E+Pj44JjI1NV1eblszXVsyNTUmZl1eZVtvKytdLGw9blswXVt1Pj4+MjRdXm5bMV1bYT4+PjE2JjI1NV1eblsyXVtmPj4+OCYyNTVdXm5bM11bMjU1JnNdXmVbbysrXSxhPWgsZj1jLHM9ZCx1PWw7cmV0dXJuIGg9KGlbYT4+PjI0XTw8MjR8aVtmPj4+MTYmMjU1XTw8MTZ8aVtzPj4+OCYyNTVdPDw4fGlbMjU1JnVdKV5lW28rK10sYz0oaVtmPj4+MjRdPDwyNHxpW3M+Pj4xNiYyNTVdPDwxNnxpW3U+Pj44JjI1NV08PDh8aVsyNTUmYV0pXmVbbysrXSxkPShpW3M+Pj4yNF08PDI0fGlbdT4+PjE2JjI1NV08PDE2fGlbYT4+PjgmMjU1XTw8OHxpWzI1NSZmXSleZVtvKytdLGw9KGlbdT4+PjI0XTw8MjR8aVthPj4+MTYmMjU1XTw8MTZ8aVtmPj4+OCYyNTVdPDw4fGlbMjU1JnNdKV5lW28rK10sW3IoaCkscihjKSxyKGQpLHIobCldfSxlLkFFUz1hfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZSxyPXQubGVuZ3RoO3ItLTspe2lmKGU9dC5yZWFkVUludDgociksMjU1IT09ZSl7ZSsrLHQud3JpdGVVSW50OChlLHIpO2JyZWFrfXQud3JpdGVVSW50OCgwLHIpfX1mdW5jdGlvbiBpKHQpe3ZhciBlPXQuX2NpcGhlci5lbmNyeXB0QmxvY2sodC5fcHJldik7cmV0dXJuIG4odC5fcHJldiksZX12YXIgbz1yKDY5KTtlLmVuY3J5cHQ9ZnVuY3Rpb24oZSxyKXtmb3IoO2UuX2NhY2hlLmxlbmd0aDxyLmxlbmd0aDspZS5fY2FjaGU9dC5jb25jYXQoW2UuX2NhY2hlLGkoZSldKTt2YXIgbj1lLl9jYWNoZS5zbGljZSgwLHIubGVuZ3RoKTtyZXR1cm4gZS5fY2FjaGU9ZS5fY2FjaGUuc2xpY2Uoci5sZW5ndGgpLG8ocixuKX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7aS5jYWxsKHRoaXMpLHRoaXMuaGFzaE1vZGU9XCJzdHJpbmdcIj09dHlwZW9mIHQsdGhpcy5oYXNoTW9kZT90aGlzW3RdPXRoaXMuX2ZpbmFsT3JEaWdlc3Q6dGhpcy5maW5hbD10aGlzLl9maW5hbE9yRGlnZXN0LHRoaXMuX2RlY29kZXI9bnVsbCx0aGlzLl9lbmNvZGluZz1udWxsfXZhciBpPXIoMzEpLlRyYW5zZm9ybSxvPXIoMiksYT1yKDUyKS5TdHJpbmdEZWNvZGVyO3QuZXhwb3J0cz1uLG8obixpKSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxyLG4pe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1uZXcgZSh0LHIpKTt2YXIgaT10aGlzLl91cGRhdGUodCk7cmV0dXJuIHRoaXMuaGFzaE1vZGU/dGhpczoobiYmKGk9dGhpcy5fdG9TdHJpbmcoaSxuKSksaSl9LG4ucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKCl7fSxuLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcInRyeWluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcInRyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxuLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbjt0cnl7dGhpcy5oYXNoTW9kZT90aGlzLl91cGRhdGUodCk6dGhpcy5wdXNoKHRoaXMuX3VwZGF0ZSh0KSl9Y2F0Y2godCl7bj10fWZpbmFsbHl7cihuKX19LG4ucHJvdG90eXBlLl9mbHVzaD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7dGhpcy5wdXNoKHRoaXMuX2ZpbmFsKCkpfWNhdGNoKHQpe2U9dH1maW5hbGx5e3QoZSl9fSxuLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9maW5hbCgpfHxuZXcgZShcIlwiKTtyZXR1cm4gdCYmKHI9dGhpcy5fdG9TdHJpbmcocix0LCEwKSkscn0sbi5wcm90b3R5cGUuX3RvU3RyaW5nPWZ1bmN0aW9uKHQsZSxyKXtpZih0aGlzLl9kZWNvZGVyfHwodGhpcy5fZGVjb2Rlcj1uZXcgYShlKSx0aGlzLl9lbmNvZGluZz1lKSx0aGlzLl9lbmNvZGluZyE9PWUpdGhyb3cgbmV3IEVycm9yKFwiY2FuJ3Qgc3dpdGNoIGVuY29kaW5nc1wiKTt2YXIgbj10aGlzLl9kZWNvZGVyLndyaXRlKHQpO3JldHVybiByJiYobis9dGhpcy5fZGVjb2Rlci5lbmQoKSksbn19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49ZTtuLmJhc2U9cig1NDUpLG4uc2hvcnQ9cig1NDgpLG4ubW9udD1yKDU0Nyksbi5lZHdhcmRzPXIoNTQ2KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXt0W2U+PjVdfD0xMjg8PGUlMzIsdFsoZSs2ND4+Pjk8PDQpKzE0XT1lO2Zvcih2YXIgcj0xNzMyNTg0MTkzLG49LTI3MTczMzg3OSxpPS0xNzMyNTg0MTk0LGg9MjcxNzMzODc4LGM9MDtjPHQubGVuZ3RoO2MrPTE2KXt2YXIgZD1yLGw9bixwPWksYj1oO3I9byhyLG4saSxoLHRbYyswXSw3LC02ODA4NzY5MzYpLGg9byhoLHIsbixpLHRbYysxXSwxMiwtMzg5NTY0NTg2KSxpPW8oaSxoLHIsbix0W2MrMl0sMTcsNjA2MTA1ODE5KSxuPW8obixpLGgscix0W2MrM10sMjIsLTEwNDQ1MjUzMzApLHI9byhyLG4saSxoLHRbYys0XSw3LC0xNzY0MTg4OTcpLGg9byhoLHIsbixpLHRbYys1XSwxMiwxMjAwMDgwNDI2KSxpPW8oaSxoLHIsbix0W2MrNl0sMTcsLTE0NzMyMzEzNDEpLG49byhuLGksaCxyLHRbYys3XSwyMiwtNDU3MDU5ODMpLHI9byhyLG4saSxoLHRbYys4XSw3LDE3NzAwMzU0MTYpLGg9byhoLHIsbixpLHRbYys5XSwxMiwtMTk1ODQxNDQxNyksaT1vKGksaCxyLG4sdFtjKzEwXSwxNywtNDIwNjMpLG49byhuLGksaCxyLHRbYysxMV0sMjIsLTE5OTA0MDQxNjIpLHI9byhyLG4saSxoLHRbYysxMl0sNywxODA0NjAzNjgyKSxoPW8oaCxyLG4saSx0W2MrMTNdLDEyLC00MDM0MTEwMSksaT1vKGksaCxyLG4sdFtjKzE0XSwxNywtMTUwMjAwMjI5MCksbj1vKG4saSxoLHIsdFtjKzE1XSwyMiwxMjM2NTM1MzI5KSxyPWEocixuLGksaCx0W2MrMV0sNSwtMTY1Nzk2NTEwKSxoPWEoaCxyLG4saSx0W2MrNl0sOSwtMTA2OTUwMTYzMiksaT1hKGksaCxyLG4sdFtjKzExXSwxNCw2NDM3MTc3MTMpLG49YShuLGksaCxyLHRbYyswXSwyMCwtMzczODk3MzAyKSxyPWEocixuLGksaCx0W2MrNV0sNSwtNzAxNTU4NjkxKSxoPWEoaCxyLG4saSx0W2MrMTBdLDksMzgwMTYwODMpLGk9YShpLGgscixuLHRbYysxNV0sMTQsLTY2MDQ3ODMzNSksbj1hKG4saSxoLHIsdFtjKzRdLDIwLC00MDU1Mzc4NDgpLHI9YShyLG4saSxoLHRbYys5XSw1LDU2ODQ0NjQzOCksaD1hKGgscixuLGksdFtjKzE0XSw5LC0xMDE5ODAzNjkwKSxpPWEoaSxoLHIsbix0W2MrM10sMTQsLTE4NzM2Mzk2MSksbj1hKG4saSxoLHIsdFtjKzhdLDIwLDExNjM1MzE1MDEpLHI9YShyLG4saSxoLHRbYysxM10sNSwtMTQ0NDY4MTQ2NyksaD1hKGgscixuLGksdFtjKzJdLDksLTUxNDAzNzg0KSxpPWEoaSxoLHIsbix0W2MrN10sMTQsMTczNTMyODQ3Myksbj1hKG4saSxoLHIsdFtjKzEyXSwyMCwtMTkyNjYwNzczNCkscj1mKHIsbixpLGgsdFtjKzVdLDQsLTM3ODU1OCksaD1mKGgscixuLGksdFtjKzhdLDExLC0yMDIyNTc0NDYzKSxpPWYoaSxoLHIsbix0W2MrMTFdLDE2LDE4MzkwMzA1NjIpLG49ZihuLGksaCxyLHRbYysxNF0sMjMsLTM1MzA5NTU2KSxyPWYocixuLGksaCx0W2MrMV0sNCwtMTUzMDk5MjA2MCksaD1mKGgscixuLGksdFtjKzRdLDExLDEyNzI4OTMzNTMpLGk9ZihpLGgscixuLHRbYys3XSwxNiwtMTU1NDk3NjMyKSxuPWYobixpLGgscix0W2MrMTBdLDIzLC0xMDk0NzMwNjQwKSxyPWYocixuLGksaCx0W2MrMTNdLDQsNjgxMjc5MTc0KSxoPWYoaCxyLG4saSx0W2MrMF0sMTEsLTM1ODUzNzIyMiksaT1mKGksaCxyLG4sdFtjKzNdLDE2LC03MjI1MjE5NzkpLG49ZihuLGksaCxyLHRbYys2XSwyMyw3NjAyOTE4OSkscj1mKHIsbixpLGgsdFtjKzldLDQsLTY0MDM2NDQ4NyksaD1mKGgscixuLGksdFtjKzEyXSwxMSwtNDIxODE1ODM1KSxpPWYoaSxoLHIsbix0W2MrMTVdLDE2LDUzMDc0MjUyMCksbj1mKG4saSxoLHIsdFtjKzJdLDIzLC05OTUzMzg2NTEpLHI9cyhyLG4saSxoLHRbYyswXSw2LC0xOTg2MzA4NDQpLGg9cyhoLHIsbixpLHRbYys3XSwxMCwxMTI2ODkxNDE1KSxpPXMoaSxoLHIsbix0W2MrMTRdLDE1LC0xNDE2MzU0OTA1KSxuPXMobixpLGgscix0W2MrNV0sMjEsLTU3NDM0MDU1KSxyPXMocixuLGksaCx0W2MrMTJdLDYsMTcwMDQ4NTU3MSksaD1zKGgscixuLGksdFtjKzNdLDEwLC0xODk0OTg2NjA2KSxpPXMoaSxoLHIsbix0W2MrMTBdLDE1LC0xMDUxNTIzKSxuPXMobixpLGgscix0W2MrMV0sMjEsLTIwNTQ5MjI3OTkpLHI9cyhyLG4saSxoLHRbYys4XSw2LDE4NzMzMTMzNTkpLGg9cyhoLHIsbixpLHRbYysxNV0sMTAsLTMwNjExNzQ0KSxpPXMoaSxoLHIsbix0W2MrNl0sMTUsLTE1NjAxOTgzODApLG49cyhuLGksaCxyLHRbYysxM10sMjEsMTMwOTE1MTY0OSkscj1zKHIsbixpLGgsdFtjKzRdLDYsLTE0NTUyMzA3MCksaD1zKGgscixuLGksdFtjKzExXSwxMCwtMTEyMDIxMDM3OSksaT1zKGksaCxyLG4sdFtjKzJdLDE1LDcxODc4NzI1OSksbj1zKG4saSxoLHIsdFtjKzldLDIxLC0zNDM0ODU1NTEpLHI9dShyLGQpLG49dShuLGwpLGk9dShpLHApLGg9dShoLGIpfXJldHVybiBBcnJheShyLG4saSxoKX1mdW5jdGlvbiBpKHQsZSxyLG4saSxvKXtyZXR1cm4gdShoKHUodShlLHQpLHUobixvKSksaSkscil9ZnVuY3Rpb24gbyh0LGUscixuLG8sYSxmKXtyZXR1cm4gaShlJnJ8fmUmbix0LGUsbyxhLGYpfWZ1bmN0aW9uIGEodCxlLHIsbixvLGEsZil7cmV0dXJuIGkoZSZufHImfm4sdCxlLG8sYSxmKX1mdW5jdGlvbiBmKHQsZSxyLG4sbyxhLGYpe3JldHVybiBpKGVecl5uLHQsZSxvLGEsZil9ZnVuY3Rpb24gcyh0LGUscixuLG8sYSxmKXtyZXR1cm4gaShyXihlfH5uKSx0LGUsbyxhLGYpfWZ1bmN0aW9uIHUodCxlKXt2YXIgcj0oNjU1MzUmdCkrKDY1NTM1JmUpLG49KHQ+PjE2KSsoZT4+MTYpKyhyPj4xNik7cmV0dXJuIG48PDE2fDY1NTM1JnJ9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0PDxlfHQ+Pj4zMi1lfXZhciBjPXIoNTY1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGMuaGFzaCh0LG4sMTYpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi5iaWdudW09cig3MCksbi5kZWZpbmU9cig1ODApLmRlZmluZSxuLmJhc2U9cig3MSksbi5jb25zdGFudHM9cigyMzUpLG4uZGVjb2RlcnM9cig1ODQpLG4uZW5jb2RlcnM9cig1ODYpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIodCl7dmFyIGUscjtyZXR1cm4gZT10PmZ8fHQ8MD8ocj1NYXRoLmFicyh0KSVmLHQ8MD9mLXI6cik6dH1mdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7dCsrKXRbZV09MDtyZXR1cm4hMX1mdW5jdGlvbiBpKCl7dGhpcy5TQk9YPVtdLHRoaXMuSU5WX1NCT1g9W10sdGhpcy5TVUJfTUlYPVtbXSxbXSxbXSxbXV0sdGhpcy5JTlZfU1VCX01JWD1bW10sW10sW10sW11dLHRoaXMuaW5pdCgpLHRoaXMuUkNPTj1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF19ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9dC5sZW5ndGgvNCxyPW5ldyBBcnJheShlKSxuPS0xOysrbjxlOylyW25dPXQucmVhZFVJbnQzMkJFKDQqbik7cmV0dXJuIHJ9ZnVuY3Rpb24gYSh0KXt0aGlzLl9rZXk9byh0KSx0aGlzLl9kb1Jlc2V0KCl9dmFyIGY9TWF0aC5wb3coMiwzMik7aS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3ZhciB0LGUscixuLGksbyxhLGYscyx1O2Zvcih0PWZ1bmN0aW9uKCl7dmFyIHQscjtmb3Iocj1bXSxlPXQ9MDt0PDI1NjtlPSsrdCllPDEyOD9yLnB1c2goZTw8MSk6ci5wdXNoKGU8PDFeMjgzKTtyZXR1cm4gcn0oKSxpPTAscz0wLGU9dT0wO3U8MjU2O2U9Kyt1KXI9c15zPDwxXnM8PDJeczw8M15zPDw0LHI9cj4+PjheMjU1JnJeOTksdGhpcy5TQk9YW2ldPXIsdGhpcy5JTlZfU0JPWFtyXT1pLG89dFtpXSxhPXRbb10sZj10W2FdLG49MjU3KnRbcl1eMTY4NDMwMDgqcix0aGlzLlNVQl9NSVhbMF1baV09bjw8MjR8bj4+PjgsdGhpcy5TVUJfTUlYWzFdW2ldPW48PDE2fG4+Pj4xNix0aGlzLlNVQl9NSVhbMl1baV09bjw8OHxuPj4+MjQsdGhpcy5TVUJfTUlYWzNdW2ldPW4sbj0xNjg0MzAwOSpmXjY1NTM3KmFeMjU3Km9eMTY4NDMwMDgqaSx0aGlzLklOVl9TVUJfTUlYWzBdW3JdPW48PDI0fG4+Pj44LHRoaXMuSU5WX1NVQl9NSVhbMV1bcl09bjw8MTZ8bj4+PjE2LHRoaXMuSU5WX1NVQl9NSVhbMl1bcl09bjw8OHxuPj4+MjQsdGhpcy5JTlZfU1VCX01JWFszXVtyXT1uLDA9PT1pP2k9cz0xOihpPW9edFt0W3RbZl5vXV1dLHNePXRbdFtzXV0pO3JldHVybiEwfTt2YXIgcz1uZXcgaTthLmJsb2NrU2l6ZT0xNixhLnByb3RvdHlwZS5ibG9ja1NpemU9YS5ibG9ja1NpemUsYS5rZXlTaXplPTMyLGEucHJvdG90eXBlLmtleVNpemU9YS5rZXlTaXplLGEucHJvdG90eXBlLl9kb1Jlc2V0PWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4saSxvO2ZvcihyPXRoaXMuX2tleSxlPXIubGVuZ3RoLHRoaXMuX25Sb3VuZHM9ZSs2LGk9NCoodGhpcy5fblJvdW5kcysxKSx0aGlzLl9rZXlTY2hlZHVsZT1bXSxuPTA7bjxpO24rKyl0aGlzLl9rZXlTY2hlZHVsZVtuXT1uPGU/cltuXToobz10aGlzLl9rZXlTY2hlZHVsZVtuLTFdLG4lZT09PTA/KG89bzw8OHxvPj4+MjQsbz1zLlNCT1hbbz4+PjI0XTw8MjR8cy5TQk9YW28+Pj4xNiYyNTVdPDwxNnxzLlNCT1hbbz4+PjgmMjU1XTw8OHxzLlNCT1hbMjU1Jm9dLG9ePXMuUkNPTltuL2V8MF08PDI0KTplPjYmJm4lZT09PTQ/bz1zLlNCT1hbbz4+PjI0XTw8MjR8cy5TQk9YW28+Pj4xNiYyNTVdPDwxNnxzLlNCT1hbbz4+PjgmMjU1XTw8OHxzLlNCT1hbMjU1Jm9dOnZvaWQgMCx0aGlzLl9rZXlTY2hlZHVsZVtuLWVdXm8pO2Zvcih0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSx0PTA7dDxpO3QrKyluPWktdCxvPXRoaXMuX2tleVNjaGVkdWxlW24tKHQlND8wOjQpXSx0aGlzLl9pbnZLZXlTY2hlZHVsZVt0XT10PDR8fG48PTQ/bzpzLklOVl9TVUJfTUlYWzBdW3MuU0JPWFtvPj4+MjRdXV5zLklOVl9TVUJfTUlYWzFdW3MuU0JPWFtvPj4+MTYmMjU1XV1ecy5JTlZfU1VCX01JWFsyXVtzLlNCT1hbbz4+PjgmMjU1XV1ecy5JTlZfU1VCX01JWFszXVtzLlNCT1hbMjU1Jm9dXTtyZXR1cm4hMH0sYS5wcm90b3R5cGUuZW5jcnlwdEJsb2NrPWZ1bmN0aW9uKGUpe2U9byhuZXcgdChlKSk7dmFyIHI9dGhpcy5fZG9DcnlwdEJsb2NrKGUsdGhpcy5fa2V5U2NoZWR1bGUscy5TVUJfTUlYLHMuU0JPWCksbj1uZXcgdCgxNik7cmV0dXJuIG4ud3JpdGVVSW50MzJCRShyWzBdLDApLG4ud3JpdGVVSW50MzJCRShyWzFdLDQpLG4ud3JpdGVVSW50MzJCRShyWzJdLDgpLG4ud3JpdGVVSW50MzJCRShyWzNdLDEyKSxufSxhLnByb3RvdHlwZS5kZWNyeXB0QmxvY2s9ZnVuY3Rpb24oZSl7ZT1vKG5ldyB0KGUpKTt2YXIgcj1bZVszXSxlWzFdXTtlWzFdPXJbMF0sZVszXT1yWzFdO3ZhciBuPXRoaXMuX2RvQ3J5cHRCbG9jayhlLHRoaXMuX2ludktleVNjaGVkdWxlLHMuSU5WX1NVQl9NSVgscy5JTlZfU0JPWCksaT1uZXcgdCgxNik7cmV0dXJuIGkud3JpdGVVSW50MzJCRShuWzBdLDApLGkud3JpdGVVSW50MzJCRShuWzNdLDQpLGkud3JpdGVVSW50MzJCRShuWzJdLDgpLGkud3JpdGVVSW50MzJCRShuWzFdLDEyKSxpfSxhLnByb3RvdHlwZS5zY3J1Yj1mdW5jdGlvbigpe24odGhpcy5fa2V5U2NoZWR1bGUpLG4odGhpcy5faW52S2V5U2NoZWR1bGUpLG4odGhpcy5fa2V5KX0sYS5wcm90b3R5cGUuX2RvQ3J5cHRCbG9jaz1mdW5jdGlvbih0LGUsbixpKXt2YXIgbyxhLGYscyx1LGgsYyxkLGw7YT10WzBdXmVbMF0sZj10WzFdXmVbMV0scz10WzJdXmVbMl0sdT10WzNdXmVbM10sbz00O2Zvcih2YXIgcD0xO3A8dGhpcy5fblJvdW5kcztwKyspaD1uWzBdW2E+Pj4yNF1eblsxXVtmPj4+MTYmMjU1XV5uWzJdW3M+Pj44JjI1NV1eblszXVsyNTUmdV1eZVtvKytdLGM9blswXVtmPj4+MjRdXm5bMV1bcz4+PjE2JjI1NV1eblsyXVt1Pj4+OCYyNTVdXm5bM11bMjU1JmFdXmVbbysrXSxkPW5bMF1bcz4+PjI0XV5uWzFdW3U+Pj4xNiYyNTVdXm5bMl1bYT4+PjgmMjU1XV5uWzNdWzI1NSZmXV5lW28rK10sbD1uWzBdW3U+Pj4yNF1eblsxXVthPj4+MTYmMjU1XV5uWzJdW2Y+Pj44JjI1NV1eblszXVsyNTUmc11eZVtvKytdLGE9aCxmPWMscz1kLHU9bDtyZXR1cm4gaD0oaVthPj4+MjRdPDwyNHxpW2Y+Pj4xNiYyNTVdPDwxNnxpW3M+Pj44JjI1NV08PDh8aVsyNTUmdV0pXmVbbysrXSxjPShpW2Y+Pj4yNF08PDI0fGlbcz4+PjE2JjI1NV08PDE2fGlbdT4+PjgmMjU1XTw8OHxpWzI1NSZhXSleZVtvKytdLGQ9KGlbcz4+PjI0XTw8MjR8aVt1Pj4+MTYmMjU1XTw8MTZ8aVthPj4+OCYyNTVdPDw4fGlbMjU1JmZdKV5lW28rK10sbD0oaVt1Pj4+MjRdPDwyNHxpW2E+Pj4xNiYyNTVdPDwxNnxpW2Y+Pj44JjI1NV08PDh8aVsyNTUmc10pXmVbbysrXSxbcihoKSxyKGMpLHIoZCkscihsKV19LGUuQUVTPWF9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBlLHI9dC5sZW5ndGg7ci0tOyl7aWYoZT10LnJlYWRVSW50OChyKSwyNTUhPT1lKXtlKyssdC53cml0ZVVJbnQ4KGUscik7YnJlYWt9dC53cml0ZVVJbnQ4KDAscil9fWZ1bmN0aW9uIGkodCl7dmFyIGU9dC5fY2lwaGVyLmVuY3J5cHRCbG9jayh0Ll9wcmV2KTtyZXR1cm4gbih0Ll9wcmV2KSxlfXZhciBvPXIoNzIpO2UuZW5jcnlwdD1mdW5jdGlvbihlLHIpe2Zvcig7ZS5fY2FjaGUubGVuZ3RoPHIubGVuZ3RoOyllLl9jYWNoZT10LmNvbmNhdChbZS5fY2FjaGUsaShlKV0pO3ZhciBuPWUuX2NhY2hlLnNsaWNlKDAsci5sZW5ndGgpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShyLmxlbmd0aCksbyhyLG4pfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtpLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT1cInN0cmluZ1wiPT10eXBlb2YgdCx0aGlzLmhhc2hNb2RlP3RoaXNbdF09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9dmFyIGk9cigzMSkuVHJhbnNmb3JtLG89cigyKSxhPXIoNTIpLlN0cmluZ0RlY29kZXI7dC5leHBvcnRzPW4sbyhuLGkpLG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIsbil7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQscikpO3ZhciBpPXRoaXMuX3VwZGF0ZSh0KTtyZXR1cm4gdGhpcy5oYXNoTW9kZT90aGlzOihuJiYoaT10aGlzLl90b1N0cmluZyhpLG4pKSxpKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxuLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZSh0KTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKHQpKX1jYXRjaCh0KXtuPXR9ZmluYWxseXtyKG4pfX0sbi5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXt0aGlzLnB1c2godGhpcy5fZmluYWwoKSl9Y2F0Y2godCl7ZT10fWZpbmFsbHl7dChlKX19LG4ucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX2ZpbmFsKCl8fG5ldyBlKFwiXCIpO3JldHVybiB0JiYocj10aGlzLl90b1N0cmluZyhyLHQsITApKSxyfSxuLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBhKGUpLHRoaXMuX2VuY29kaW5nPWUpLHRoaXMuX2VuY29kaW5nIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzXCIpO3ZhciBuPXRoaXMuX2RlY29kZXIud3JpdGUodCk7cmV0dXJuIHImJihuKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxufX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuX2V2ZW50cz10aGlzLl9ldmVudHN8fHt9LHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH1mdW5jdGlvbiBuKHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHR9ZnVuY3Rpb24gaSh0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdH1mdW5jdGlvbiBvKHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dH1mdW5jdGlvbiBhKHQpe3JldHVybiB2b2lkIDA9PT10fXQuZXhwb3J0cz1yLHIuRXZlbnRFbWl0dGVyPXIsci5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAsci5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDAsci5kZWZhdWx0TWF4TGlzdGVuZXJzPTEwLHIucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih0KXtpZighaSh0KXx8dDwwfHxpc05hTih0KSl0aHJvdyBUeXBlRXJyb3IoXCJuIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXJcIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz10LHRoaXN9LHIucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7dmFyIGUscixpLGYscyx1O2lmKHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksXCJlcnJvclwiPT09dCYmKCF0aGlzLl9ldmVudHMuZXJyb3J8fG8odGhpcy5fZXZlbnRzLmVycm9yKSYmIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKXtpZihlPWFyZ3VtZW50c1sxXSxlIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgZTt2YXIgaD1uZXcgRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCBcImVycm9yXCIgZXZlbnQuICgnK2UrXCIpXCIpO3Rocm93IGguY29udGV4dD1lLGh9aWYocj10aGlzLl9ldmVudHNbdF0sYShyKSlyZXR1cm4hMTtpZihuKHIpKXN3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDE6ci5jYWxsKHRoaXMpO2JyZWFrO2Nhc2UgMjpyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0pO2JyZWFrO2Nhc2UgMzpyLmNhbGwodGhpcyxhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKTticmVhaztkZWZhdWx0OmY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHIuYXBwbHkodGhpcyxmKX1lbHNlIGlmKG8ocikpZm9yKGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLHU9ci5zbGljZSgpLGk9dS5sZW5ndGgscz0wO3M8aTtzKyspdVtzXS5hcHBseSh0aGlzLGYpO3JldHVybiEwfSxyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3ZhciBpO2lmKCFuKGUpKXRocm93IFR5cGVFcnJvcihcImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvblwiKTtyZXR1cm4gdGhpcy5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPXt9KSx0aGlzLl9ldmVudHMubmV3TGlzdGVuZXImJnRoaXMuZW1pdChcIm5ld0xpc3RlbmVyXCIsdCxuKGUubGlzdGVuZXIpP2UubGlzdGVuZXI6ZSksdGhpcy5fZXZlbnRzW3RdP28odGhpcy5fZXZlbnRzW3RdKT90aGlzLl9ldmVudHNbdF0ucHVzaChlKTp0aGlzLl9ldmVudHNbdF09W3RoaXMuX2V2ZW50c1t0XSxlXTp0aGlzLl9ldmVudHNbdF09ZSxvKHRoaXMuX2V2ZW50c1t0XSkmJiF0aGlzLl9ldmVudHNbdF0ud2FybmVkJiYoaT1hKHRoaXMuX21heExpc3RlbmVycyk/ci5kZWZhdWx0TWF4TGlzdGVuZXJzOnRoaXMuX21heExpc3RlbmVycyxpJiZpPjAmJnRoaXMuX2V2ZW50c1t0XS5sZW5ndGg+aSYmKHRoaXMuX2V2ZW50c1t0XS53YXJuZWQ9ITAsY29uc29sZS5lcnJvcihcIihub2RlKSB3YXJuaW5nOiBwb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuXCIsdGhpcy5fZXZlbnRzW3RdLmxlbmd0aCksXCJmdW5jdGlvblwiPT10eXBlb2YgY29uc29sZS50cmFjZSYmY29uc29sZS50cmFjZSgpKSksdGhpc30sci5wcm90b3R5cGUub249ci5wcm90b3R5cGUuYWRkTGlzdGVuZXIsci5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUxpc3RlbmVyKHQsciksaXx8KGk9ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfWlmKCFuKGUpKXRocm93IFR5cGVFcnJvcihcImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvblwiKTt2YXIgaT0hMTtyZXR1cm4gci5saXN0ZW5lcj1lLHRoaXMub24odCxyKSx0aGlzfSxyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3ZhciByLGksYSxmO2lmKCFuKGUpKXRocm93IFR5cGVFcnJvcihcImxpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvblwiKTtpZighdGhpcy5fZXZlbnRzfHwhdGhpcy5fZXZlbnRzW3RdKXJldHVybiB0aGlzO2lmKHI9dGhpcy5fZXZlbnRzW3RdLGE9ci5sZW5ndGgsaT0tMSxyPT09ZXx8bihyLmxpc3RlbmVyKSYmci5saXN0ZW5lcj09PWUpZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSx0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxlKTtlbHNlIGlmKG8ocikpe2ZvcihmPWE7Zi0tID4wOylpZihyW2ZdPT09ZXx8cltmXS5saXN0ZW5lciYmcltmXS5saXN0ZW5lcj09PWUpe2k9ZjticmVha31pZihpPDApcmV0dXJuIHRoaXM7MT09PXIubGVuZ3RoPyhyLmxlbmd0aD0wLGRlbGV0ZSB0aGlzLl9ldmVudHNbdF0pOnIuc3BsaWNlKGksMSksdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoXCJyZW1vdmVMaXN0ZW5lclwiLHQsZSl9cmV0dXJuIHRoaXN9LHIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZSxyO2lmKCF0aGlzLl9ldmVudHMpcmV0dXJuIHRoaXM7aWYoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fZXZlbnRzPXt9OnRoaXMuX2V2ZW50c1t0XSYmZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSx0aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoZSBpbiB0aGlzLl9ldmVudHMpXCJyZW1vdmVMaXN0ZW5lclwiIT09ZSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoZSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFwicmVtb3ZlTGlzdGVuZXJcIiksdGhpcy5fZXZlbnRzPXt9LHRoaXN9aWYocj10aGlzLl9ldmVudHNbdF0sbihyKSl0aGlzLnJlbW92ZUxpc3RlbmVyKHQscik7ZWxzZSBpZihyKWZvcig7ci5sZW5ndGg7KXRoaXMucmVtb3ZlTGlzdGVuZXIodCxyW3IubGVuZ3RoLTFdKTtyZXR1cm4gZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSx0aGlzfSxyLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGU9dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHNbdF0/bih0aGlzLl9ldmVudHNbdF0pP1t0aGlzLl9ldmVudHNbdF1dOnRoaXMuX2V2ZW50c1t0XS5zbGljZSgpOltdfSxyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2V2ZW50cyl7dmFyIGU9dGhpcy5fZXZlbnRzW3RdO2lmKG4oZSkpcmV0dXJuIDE7aWYoZSlyZXR1cm4gZS5sZW5ndGh9cmV0dXJuIDB9LHIubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmxpc3RlbmVyQ291bnQoZSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17bmV3SW52YWxpZEFzbjFFcnJvcjpmdW5jdGlvbih0KXt2YXIgZT1uZXcgRXJyb3I7cmV0dXJuIGUubmFtZT1cIkludmFsaWRBc24xRXJyb3JcIixlLm1lc3NhZ2U9dHx8XCJcIixlfX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtFT0M6MCxCb29sZWFuOjEsSW50ZWdlcjoyLEJpdFN0cmluZzozLE9jdGV0U3RyaW5nOjQsTnVsbDo1LE9JRDo2LE9iamVjdERlc2NyaXB0b3I6NyxFeHRlcm5hbDo4LFJlYWw6OSxFbnVtZXJhdGlvbjoxMCxQRFY6MTEsVXRmOFN0cmluZzoxMixSZWxhdGl2ZU9JRDoxMyxTZXF1ZW5jZToxNixTZXQ6MTcsTnVtZXJpY1N0cmluZzoxOCxQcmludGFibGVTdHJpbmc6MTksVDYxU3RyaW5nOjIwLFZpZGVvdGV4U3RyaW5nOjIxLElBNVN0cmluZzoyMixVVENUaW1lOjIzLEdlbmVyYWxpemVkVGltZToyNCxHcmFwaGljU3RyaW5nOjI1LFZpc2libGVTdHJpbmc6MjYsR2VuZXJhbFN0cmluZzoyOCxVbml2ZXJzYWxTdHJpbmc6MjksQ2hhcmFjdGVyU3RyaW5nOjMwLEJNUFN0cmluZzozMSxDb25zdHJ1Y3RvcjozMixDb250ZXh0OjEyOH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9ZnVuY3Rpb24gbyh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfXZhciBhPXIoNjIpLGY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBuKHRoaXMsZSksaSh0aGlzLChlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBvKGUsdCksZX0oYSk7dC5leHBvcnRzPWZ9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9ZnVuY3Rpb24gbyh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfXZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksZj1yKDkzKSxzPXIoOTEpLHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0KXtuKHRoaXMsZSk7dmFyIHI9aSh0aGlzLChlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKS5jYWxsKHRoaXMpKTtyZXR1cm4gci5oYXNoPWYuY3JlYXRlSGFzaCh0KSxyfXJldHVybiBvKGUsdCksYShlLFt7a2V5Olwid3JpdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmhhc2gudXBkYXRlKHQpfX0se2tleTpcImdldERpZ2VzdFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzaC5kaWdlc3QoKX19XSxbe2tleTpcImdldExlbmd0aFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBmLmNyZWF0ZUhhc2godCkuZGlnZXN0KCkubGVuZ3RofX1dKSxlfShzKTt0LmV4cG9ydHM9dX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksbz1yKDI2MSksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtuKHRoaXMsdCl9cmV0dXJuIGkodCxudWxsLFt7a2V5OlwiZ2V0Q2xhc3NGcm9tVHlwZUlkXCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZT5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUil0aHJvdyBuZXcgbyhcIlR5cGUgXCIrZStcIiBpcyBub3Qgc3VwcG9ydGVkXCIpO3ZhciByPSEwLG49ITEsaT12b2lkIDA7dHJ5e2Zvcih2YXIgYSxmPXQucmVnaXN0ZXJlZFR5cGVzW1N5bWJvbC5pdGVyYXRvcl0oKTshKHI9KGE9Zi5uZXh0KCkpLmRvbmUpO3I9ITApe3ZhciBzPWEudmFsdWU7aWYoZT09PXMudHlwZUlkKXJldHVybiBzLkNsYXNzfX1jYXRjaCh0KXtuPSEwLGk9dH1maW5hbGx5e3RyeXshciYmZi5yZXR1cm4mJmYucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IGl9fXRocm93IG5ldyBvKFwiVHlwZSBcIitlK1wiIGlzIG5vdCBzdXBwb3J0ZWRcIil9fSx7a2V5OlwicmVnaXN0ZXJUeXBlXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dC5yZWdpc3RlcmVkVHlwZXMucHVzaCh7dHlwZUlkOmUuVFlQRV9JRCxDbGFzczplfSl9fV0pLHR9KCk7YS5yZWdpc3RlcmVkVHlwZXM9W10sdC5leHBvcnRzPWF9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3IodGhpcyx0KX1yZXR1cm4gbih0LG51bGwsW3trZXk6XCJkZWNvZGVcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgcj10LnJlcGxhY2UoL1xcLS9nLFwiK1wiKS5yZXBsYWNlKC9fL2csXCIvXCIpO3JldHVybiBuZXcgZShyLFwiYmFzZTY0XCIpfX0se2tleTpcImVuY29kZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKFwiYmFzZTY0XCIpLnJlcGxhY2UoLz0vZyxcIlwiKS5yZXBsYWNlKC9cXCsvZyxcIi1cIikucmVwbGFjZSgvXFwvL2csXCJfXCIpfX1dKSx0fSgpO3QuZXhwb3J0cz1pfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe3QuZXhwb3J0cz0hcigxNjQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxMSksaT1yKDQ3KSxvPXIoMTApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtmb3IodmFyIGU9bih0aGlzKSxyPW8oZS5sZW5ndGgpLGE9YXJndW1lbnRzLmxlbmd0aCxmPWkoYT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAscikscz1hPjI/YXJndW1lbnRzWzJdOnZvaWQgMCx1PXZvaWQgMD09PXM/cjppKHMscik7dT5mOyllW2YrK109dDtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDkpLGk9cigzNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtlIGluIHQ/bi5mKHQsZSxpKDAscikpOnRbZV09cn19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDYpLGk9cig0KS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KHQpOnt9fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9XCJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2ZcIi5zcGxpdChcIixcIil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDcpKFwibWF0Y2hcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPS8uLzt0cnl7XCIvLi9cIlt0XShlKX1jYXRjaChyKXt0cnl7cmV0dXJuIGVbbl09ITEsIVwiLy4vXCJbdF0oZSl9Y2F0Y2godCl7fX1yZXR1cm4hMH19LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9cig0KS5kb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KSxpPXIoMTMyKS5zZXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbyxhPWUuY29uc3RydWN0b3I7cmV0dXJuIGEhPT1yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiYobz1hLnByb3RvdHlwZSkhPT1yLnByb3RvdHlwZSYmbihvKSYmaSYmaSh0LG8pLHR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig1NiksaT1yKDcpKFwiaXRlcmF0b3JcIiksbz1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYobi5BcnJheT09PXR8fG9baV09PT10KX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDIzKTt0LmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJBcnJheVwiPT1uKHQpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNDIpLGk9cigzNyksbz1yKDU3KSxhPXt9O3IoMTQpKGEscig3KShcIml0ZXJhdG9yXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3QucHJvdG90eXBlPW4oYSx7bmV4dDppKDEscil9KSxvKHQsZStcIiBJdGVyYXRvclwiKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDQxKSxpPXIoMCksbz1yKDE1KSxhPXIoMTQpLGY9cigxMikscz1yKDU2KSx1PXIoMTI3KSxoPXIoNTcpLGM9cigyMSksZD1yKDcpKFwiaXRlcmF0b3JcIiksbD0hKFtdLmtleXMmJlwibmV4dFwiaW5bXS5rZXlzKCkpLHA9XCJAQGl0ZXJhdG9yXCIsYj1cImtleXNcIix2PVwidmFsdWVzXCIseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsbSxnLHcsXyl7dShyLGUsbSk7dmFyIE0sUyxFLEE9ZnVuY3Rpb24odCl7aWYoIWwmJnQgaW4gQilyZXR1cm4gQlt0XTtzd2l0Y2godCl7Y2FzZSBiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLHQpfTtjYXNlIHY6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzLHQpfX0saz1lK1wiIEl0ZXJhdG9yXCIseD1nPT12LEk9ITEsQj10LnByb3RvdHlwZSxPPUJbZF18fEJbcF18fGcmJkJbZ10sUj1PfHxBKGcpLFA9Zz94P0EoXCJlbnRyaWVzXCIpOlI6dm9pZCAwLFQ9XCJBcnJheVwiPT1lP0IuZW50cmllc3x8TzpPO2lmKFQmJihFPWMoVC5jYWxsKG5ldyB0KSksRSE9PU9iamVjdC5wcm90b3R5cGUmJihoKEUsaywhMCksbnx8ZihFLGQpfHxhKEUsZCx5KSkpLHgmJk8mJk8ubmFtZSE9PXYmJihJPSEwLFI9ZnVuY3Rpb24oKXtyZXR1cm4gTy5jYWxsKHRoaXMpfSksbiYmIV98fCFsJiYhSSYmQltkXXx8YShCLGQsUiksc1tlXT1SLHNba109eSxnKWlmKE09e3ZhbHVlczp4P1I6QSh2KSxrZXlzOnc/UjpBKGIpLGVudHJpZXM6UH0sXylmb3IoUyBpbiBNKVMgaW4gQnx8byhCLFMsTVtTXSk7ZWxzZSBpKGkuUCtpLkYqKGx8fEkpLGUsTSk7cmV0dXJuIE19fSxmdW5jdGlvbih0LGUpe3ZhciByPU1hdGguZXhwbTE7dC5leHBvcnRzPSFyfHxyKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fHIoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8cigtMmUtMTcpIT0tMmUtMTc/ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OnQ+LTFlLTYmJnQ8MWUtNj90K3QqdC8yOk1hdGguZXhwKHQpLTF9OnJ9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPU1hdGguc2lnbnx8ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KXx8dCE9dD90OnQ8MD8tMToxfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNCksaT1yKDEzOSkuc2V0LG89bi5NdXRhdGlvbk9ic2VydmVyfHxuLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsYT1uLnByb2Nlc3MsZj1uLlByb21pc2Uscz1cInByb2Nlc3NcIj09cigyMykoYSk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLHU9ZnVuY3Rpb24oKXt2YXIgbixpO2ZvcihzJiYobj1hLmRvbWFpbikmJm4uZXhpdCgpO3Q7KXtpPXQuZm4sdD10Lm5leHQ7dHJ5e2koKX1jYXRjaChuKXt0aHJvdyB0P3IoKTplPXZvaWQgMCxufX1lPXZvaWQgMCxuJiZuLmVudGVyKCl9O2lmKHMpcj1mdW5jdGlvbigpe2EubmV4dFRpY2sodSl9O2Vsc2UgaWYobyl7dmFyIGg9ITAsYz1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtuZXcgbyh1KS5vYnNlcnZlKGMse2NoYXJhY3RlckRhdGE6ITB9KSxyPWZ1bmN0aW9uKCl7Yy5kYXRhPWg9IWh9fWVsc2UgaWYoZiYmZi5yZXNvbHZlKXt2YXIgZD1mLnJlc29sdmUoKTtyPWZ1bmN0aW9uKCl7ZC50aGVuKHUpfX1lbHNlIHI9ZnVuY3Rpb24oKXtpLmNhbGwobix1KX07cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPXtmbjpuLG5leHQ6dm9pZCAwfTtlJiYoZS5uZXh0PWkpLHR8fCh0PWkscigpKSxlPWl9fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNiksaT1yKDMpLG89ZnVuY3Rpb24odCxlKXtpZihpKHQpLCFuKGUpJiZudWxsIT09ZSl0aHJvdyBUeXBlRXJyb3IoZStcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIil9O3QuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KFwiX19wcm90b19fXCJpbnt9P2Z1bmN0aW9uKHQsZSxuKXt0cnl7bj1yKDMzKShGdW5jdGlvbi5jYWxsLHIoMjApLmYoT2JqZWN0LnByb3RvdHlwZSxcIl9fcHJvdG9fX1wiKS5zZXQsMiksbih0LFtdKSxlPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaCh0KXtlPSEwfXJldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBvKHQsciksZT90Ll9fcHJvdG9fXz1yOm4odCxyKSx0fX0oe30sITEpOnZvaWQgMCksY2hlY2s6b319LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDg3KShcImtleXNcIiksaT1yKDQ4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5bdF18fChuW3RdPWkodCkpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMyksaT1yKDEzKSxvPXIoNykoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciByLGE9bih0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gdm9pZCAwPT09YXx8dm9pZCAwPT0ocj1uKGEpW29dKT9lOmkocil9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzOCksaT1yKDI0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG8sYSxmPVN0cmluZyhpKGUpKSxzPW4ociksdT1mLmxlbmd0aDtyZXR1cm4gczwwfHxzPj11P3Q/XCJcIjp2b2lkIDA6KG89Zi5jaGFyQ29kZUF0KHMpLG88NTUyOTZ8fG8+NTYzMTl8fHMrMT09PXV8fChhPWYuY2hhckNvZGVBdChzKzEpKTw1NjMyMHx8YT41NzM0Mz90P2YuY2hhckF0KHMpOm86dD9mLnNsaWNlKHMscysyKTooby01NTI5Njw8MTApKyhhLTU2MzIwKSs2NTUzNil9fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoODMpLGk9cigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXtpZihuKGUpKXRocm93IFR5cGVFcnJvcihcIlN0cmluZyNcIityK1wiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4IVwiKTtyZXR1cm4gU3RyaW5nKGkodCkpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMzgpLGk9cigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVN0cmluZyhpKHRoaXMpKSxyPVwiXCIsbz1uKHQpO2lmKG88MHx8bz09MS8wKXRocm93IFJhbmdlRXJyb3IoXCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZVwiKTtmb3IoO28+MDsobz4+Pj0xKSYmKGUrPWUpKTEmbyYmKHIrPWUpO3JldHVybiByfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9XCJcXHRcXG5cXHZcXGZcXHIgwqDhmoDhoI7igIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcXHUyMDI4XFx1MjAyOVxcdWZlZmZcIn0sZnVuY3Rpb24odCxlLHIpe3ZhciBuLGksbyxhPXIoMzMpLGY9cig4Mikscz1yKDEyMyksdT1yKDEyMCksaD1yKDQpLGM9aC5wcm9jZXNzLGQ9aC5zZXRJbW1lZGlhdGUsbD1oLmNsZWFySW1tZWRpYXRlLHA9aC5NZXNzYWdlQ2hhbm5lbCxiPTAsdj17fSx5PVwib25yZWFkeXN0YXRlY2hhbmdlXCIsbT1mdW5jdGlvbigpe3ZhciB0PSt0aGlzO2lmKHYuaGFzT3duUHJvcGVydHkodCkpe3ZhciBlPXZbdF07ZGVsZXRlIHZbdF0sZSgpfX0sZz1mdW5jdGlvbih0KXttLmNhbGwodC5kYXRhKX07ZCYmbHx8KGQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MTthcmd1bWVudHMubGVuZ3RoPnI7KWUucHVzaChhcmd1bWVudHNbcisrXSk7cmV0dXJuIHZbKytiXT1mdW5jdGlvbigpe2YoXCJmdW5jdGlvblwiPT10eXBlb2YgdD90OkZ1bmN0aW9uKHQpLGUpfSxuKGIpLGJ9LGw9ZnVuY3Rpb24odCl7ZGVsZXRlIHZbdF19LFwicHJvY2Vzc1wiPT1yKDIzKShjKT9uPWZ1bmN0aW9uKHQpe2MubmV4dFRpY2soYShtLHQsMSkpfTpwPyhpPW5ldyBwLG89aS5wb3J0MixpLnBvcnQxLm9ubWVzc2FnZT1nLG49YShvLnBvc3RNZXNzYWdlLG8sMSkpOmguYWRkRXZlbnRMaXN0ZW5lciYmXCJmdW5jdGlvblwiPT10eXBlb2YgcG9zdE1lc3NhZ2UmJiFoLmltcG9ydFNjcmlwdHM/KG49ZnVuY3Rpb24odCl7aC5wb3N0TWVzc2FnZSh0K1wiXCIsXCIqXCIpfSxoLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsZywhMSkpOm49eSBpbiB1KFwic2NyaXB0XCIpP2Z1bmN0aW9uKHQpe3MuYXBwZW5kQ2hpbGQodShcInNjcmlwdFwiKSlbeV09ZnVuY3Rpb24oKXtzLnJlbW92ZUNoaWxkKHRoaXMpLG0uY2FsbCh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoYShtLHQsMSksMCl9KSx0LmV4cG9ydHM9e3NldDpkLGNsZWFyOmx9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig0KSxpPXIoOCksbz1yKDQxKSxhPXIoODgpLGY9cigxNCkscz1yKDQ1KSx1PXIoNSksaD1yKDQwKSxjPXIoMzgpLGQ9cigxMCksbD1yKDQzKS5mLHA9cig5KS5mLGI9cigxMTgpLHY9cig1NykseT1cIkFycmF5QnVmZmVyXCIsbT1cIkRhdGFWaWV3XCIsZz1cInByb3RvdHlwZVwiLHc9XCJXcm9uZyBsZW5ndGghXCIsXz1cIldyb25nIGluZGV4IVwiLE09blt5XSxTPW5bbV0sRT1uLk1hdGgsQT1uLlJhbmdlRXJyb3Isaz1uLkluZmluaXR5LHg9TSxJPUUuYWJzLEI9RS5wb3csTz1FLmZsb29yLFI9RS5sb2csUD1FLkxOMixUPVwiYnVmZmVyXCIsaj1cImJ5dGVMZW5ndGhcIixDPVwiYnl0ZU9mZnNldFwiLE49aT9cIl9iXCI6VCxMPWk/XCJfbFwiOmosVT1pP1wiX29cIjpDLHo9ZnVuY3Rpb24odCxlLHIpe1xudmFyIG4saSxvLGE9QXJyYXkociksZj04KnItZS0xLHM9KDE8PGYpLTEsdT1zPj4xLGg9MjM9PT1lP0IoMiwtMjQpLUIoMiwtNzcpOjAsYz0wLGQ9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PUkodCksdCE9dHx8dD09PWs/KGk9dCE9dD8xOjAsbj1zKToobj1PKFIodCkvUCksdCoobz1CKDIsLW4pKTwxJiYobi0tLG8qPTIpLHQrPW4rdT49MT9oL286aCpCKDIsMS11KSx0Km8+PTImJihuKyssby89Miksbit1Pj1zPyhpPTAsbj1zKTpuK3U+PTE/KGk9KHQqby0xKSpCKDIsZSksbis9dSk6KGk9dCpCKDIsdS0xKSpCKDIsZSksbj0wKSk7ZT49ODthW2MrK109MjU1JmksaS89MjU2LGUtPTgpO2ZvcihuPW48PGV8aSxmKz1lO2Y+MDthW2MrK109MjU1Jm4sbi89MjU2LGYtPTgpO3JldHVybiBhWy0tY118PTEyOCpkLGF9LEQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLGk9OCpyLWUtMSxvPSgxPDxpKS0xLGE9bz4+MSxmPWktNyxzPXItMSx1PXRbcy0tXSxoPTEyNyZ1O2Zvcih1Pj49NztmPjA7aD0yNTYqaCt0W3NdLHMtLSxmLT04KTtmb3Iobj1oJigxPDwtZiktMSxoPj49LWYsZis9ZTtmPjA7bj0yNTYqbit0W3NdLHMtLSxmLT04KTtpZigwPT09aCloPTEtYTtlbHNle2lmKGg9PT1vKXJldHVybiBuP05hTjp1Py1rOms7bis9QigyLGUpLGgtPWF9cmV0dXJuKHU/LTE6MSkqbipCKDIsaC1lKX0scT1mdW5jdGlvbih0KXtyZXR1cm4gdFszXTw8MjR8dFsyXTw8MTZ8dFsxXTw8OHx0WzBdfSxGPWZ1bmN0aW9uKHQpe3JldHVyblsyNTUmdF19LEs9ZnVuY3Rpb24odCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1XX0sRz1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTUsdD4+MTYmMjU1LHQ+PjI0JjI1NV19LFY9ZnVuY3Rpb24odCl7cmV0dXJuIHoodCw1Miw4KX0sSD1mdW5jdGlvbih0KXtyZXR1cm4geih0LDIzLDQpfSxYPWZ1bmN0aW9uKHQsZSxyKXtwKHRbZ10sZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbcl19fSl9LFk9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9K3Isbz1jKGkpO2lmKGkhPW98fG88MHx8bytlPnRbTF0pdGhyb3cgQShfKTt2YXIgYT10W05dLl9iLGY9byt0W1VdLHM9YS5zbGljZShmLGYrZSk7cmV0dXJuIG4/czpzLnJldmVyc2UoKX0sVz1mdW5jdGlvbih0LGUscixuLGksbyl7dmFyIGE9K3IsZj1jKGEpO2lmKGEhPWZ8fGY8MHx8ZitlPnRbTF0pdGhyb3cgQShfKTtmb3IodmFyIHM9dFtOXS5fYix1PWYrdFtVXSxoPW4oK2kpLGQ9MDtkPGU7ZCsrKXNbdStkXT1oW28/ZDplLWQtMV19LFo9ZnVuY3Rpb24odCxlKXtoKHQsTSx5KTt2YXIgcj0rZSxuPWQocik7aWYociE9bil0aHJvdyBBKHcpO3JldHVybiBufTtpZihhLkFCVil7aWYoIXUoZnVuY3Rpb24oKXtuZXcgTX0pfHwhdShmdW5jdGlvbigpe25ldyBNKC41KX0pKXtNPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeChaKHRoaXMsdCkpfTtmb3IodmFyIEosJD1NW2ddPXhbZ10sUT1sKHgpLHR0PTA7US5sZW5ndGg+dHQ7KShKPVFbdHQrK10paW4gTXx8ZihNLEoseFtKXSk7b3x8KCQuY29uc3RydWN0b3I9TSl9dmFyIGV0PW5ldyBTKG5ldyBNKDIpKSxydD1TW2ddLnNldEludDg7ZXQuc2V0SW50OCgwLDIxNDc0ODM2NDgpLGV0LnNldEludDgoMSwyMTQ3NDgzNjQ5KSwhZXQuZ2V0SW50OCgwKSYmZXQuZ2V0SW50OCgxKXx8cyhTW2ddLHtzZXRJbnQ4OmZ1bmN0aW9uKHQsZSl7cnQuY2FsbCh0aGlzLHQsZTw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXtydC5jYWxsKHRoaXMsdCxlPDwyND4+MjQpfX0sITApfWVsc2UgTT1mdW5jdGlvbih0KXt2YXIgZT1aKHRoaXMsdCk7dGhpcy5fYj1iLmNhbGwoQXJyYXkoZSksMCksdGhpc1tMXT1lfSxTPWZ1bmN0aW9uKHQsZSxyKXtoKHRoaXMsUyxtKSxoKHQsTSxtKTt2YXIgbj10W0xdLGk9YyhlKTtpZihpPDB8fGk+bil0aHJvdyBBKFwiV3Jvbmcgb2Zmc2V0IVwiKTtpZihyPXZvaWQgMD09PXI/bi1pOmQociksaStyPm4pdGhyb3cgQSh3KTt0aGlzW05dPXQsdGhpc1tVXT1pLHRoaXNbTF09cn0saSYmKFgoTSxqLFwiX2xcIiksWChTLFQsXCJfYlwiKSxYKFMsaixcIl9sXCIpLFgoUyxDLFwiX29cIikpLHMoU1tnXSx7Z2V0SW50ODpmdW5jdGlvbih0KXtyZXR1cm4gWSh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24odCl7cmV0dXJuIFkodGhpcywxLHQpWzBdfSxnZXRJbnQxNjpmdW5jdGlvbih0KXt2YXIgZT1ZKHRoaXMsMix0LGFyZ3VtZW50c1sxXSk7cmV0dXJuKGVbMV08PDh8ZVswXSk8PDE2Pj4xNn0sZ2V0VWludDE2OmZ1bmN0aW9uKHQpe3ZhciBlPVkodGhpcywyLHQsYXJndW1lbnRzWzFdKTtyZXR1cm4gZVsxXTw8OHxlWzBdfSxnZXRJbnQzMjpmdW5jdGlvbih0KXtyZXR1cm4gcShZKHRoaXMsNCx0LGFyZ3VtZW50c1sxXSkpfSxnZXRVaW50MzI6ZnVuY3Rpb24odCl7cmV0dXJuIHEoWSh0aGlzLDQsdCxhcmd1bWVudHNbMV0pKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24odCl7cmV0dXJuIEQoWSh0aGlzLDQsdCxhcmd1bWVudHNbMV0pLDIzLDQpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKHQpe3JldHVybiBEKFkodGhpcyw4LHQsYXJndW1lbnRzWzFdKSw1Miw4KX0sc2V0SW50ODpmdW5jdGlvbih0LGUpe1codGhpcywxLHQsRixlKX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXtXKHRoaXMsMSx0LEYsZSl9LHNldEludDE2OmZ1bmN0aW9uKHQsZSl7Vyh0aGlzLDIsdCxLLGUsYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uKHQsZSl7Vyh0aGlzLDIsdCxLLGUsYXJndW1lbnRzWzJdKX0sc2V0SW50MzI6ZnVuY3Rpb24odCxlKXtXKHRoaXMsNCx0LEcsZSxhcmd1bWVudHNbMl0pfSxzZXRVaW50MzI6ZnVuY3Rpb24odCxlKXtXKHRoaXMsNCx0LEcsZSxhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKHQsZSl7Vyh0aGlzLDQsdCxILGUsYXJndW1lbnRzWzJdKX0sc2V0RmxvYXQ2NDpmdW5jdGlvbih0LGUpe1codGhpcyw4LHQsVixlLGFyZ3VtZW50c1syXSl9fSk7dihNLHkpLHYoUyxtKSxmKFNbZ10sYS5WSUVXLCEwKSxlW3ldPU0sZVttXT1TfSxmdW5jdGlvbih0LGUscil7dmFyIG49cig0KSxpPXIoMzIpLG89cig0MSksYT1yKDE4OSksZj1yKDkpLmY7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkuU3ltYm9sfHwoaS5TeW1ib2w9bz97fTpuLlN5bWJvbHx8e30pO1wiX1wiPT10LmNoYXJBdCgwKXx8dCBpbiBlfHxmKGUsdCx7dmFsdWU6YS5mKHQpfSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2NCksaT1yKDcpKFwiaXRlcmF0b3JcIiksbz1yKDU2KTt0LmV4cG9ydHM9cigzMikuZ2V0SXRlcmF0b3JNZXRob2Q9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXJldHVybiB0W2ldfHx0W1wiQEBpdGVyYXRvclwiXXx8b1tuKHQpXX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDU0KSxpPXIoMTc3KSxvPXIoNTYpLGE9cigxNyk7dC5leHBvcnRzPXIoMTI4KShBcnJheSxcIkFycmF5XCIsZnVuY3Rpb24odCxlKXt0aGlzLl90PWEodCksdGhpcy5faT0wLHRoaXMuX2s9ZX0sZnVuY3Rpb24oKXt2YXIgdD10aGlzLl90LGU9dGhpcy5fayxyPXRoaXMuX2krKztyZXR1cm4hdHx8cj49dC5sZW5ndGg/KHRoaXMuX3Q9dm9pZCAwLGkoMSkpOlwia2V5c1wiPT1lP2koMCxyKTpcInZhbHVlc1wiPT1lP2koMCx0W3JdKTppKDAsW3IsdFtyXV0pfSxcInZhbHVlc1wiKSxvLkFyZ3VtZW50cz1vLkFycmF5LG4oXCJrZXlzXCIpLG4oXCJ2YWx1ZXNcIiksbihcImVudHJpZXNcIil9LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9IXIoMTk5KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2UudXRpbHM9cig1MDUpLGUuQ2lwaGVyPXIoNTAyKSxlLkRFUz1yKDUwMyksZS5DQkM9cig1MDEpLGUuRURFPXIoNTA0KX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscixuLG8pe2UuaXNCdWZmZXIodCl8fCh0PW5ldyBlKHQsXCJiaW5hcnlcIikpLHImJiFlLmlzQnVmZmVyKHIpJiYocj1uZXcgZShyLFwiYmluYXJ5XCIpKSxuLz04LG89b3x8MDtmb3IodmFyIGEsZixzPTAsdT0wLGg9bmV3IGUobiksYz1uZXcgZShvKSxkPTAsbD1bXTs7KXtpZihkKys+MCYmbC5wdXNoKGEpLGwucHVzaCh0KSxyJiZsLnB1c2gociksYT1pKGUuY29uY2F0KGwpKSxsPVtdLGY9MCxuPjApZm9yKDs7KXtpZigwPT09bilicmVhaztpZihmPT09YS5sZW5ndGgpYnJlYWs7aFtzKytdPWFbZl0sbi0tLGYrK31pZihvPjAmJmYhPT1hLmxlbmd0aClmb3IoOzspe2lmKDA9PT1vKWJyZWFrO2lmKGY9PT1hLmxlbmd0aClicmVhaztjW3UrK109YVtmXSxvLS0sZisrfWlmKDA9PT1uJiYwPT09bylicmVha31mb3IoZj0wO2Y8YS5sZW5ndGg7ZisrKWFbZl09MDtyZXR1cm57a2V5OmgsaXY6Y319dmFyIGk9cigxMDUpO3QuZXhwb3J0cz1ufSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlKXtlW1wiYWVzLTEyOC1lY2JcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MCxtb2RlOlwiRUNCXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMTkyLWVjYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjE5MixpdjowLG1vZGU6XCJFQ0JcIix0eXBlOlwiYmxvY2tcIn0sZVtcImFlcy0yNTYtZWNiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjAsbW9kZTpcIkVDQlwiLHR5cGU6XCJibG9ja1wifSxlW1wiYWVzLTEyOC1jYmNcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNCQ1wiLHR5cGU6XCJibG9ja1wifSxlW1wiYWVzLTE5Mi1jYmNcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNCQ1wiLHR5cGU6XCJibG9ja1wifSxlW1wiYWVzLTI1Ni1jYmNcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTYsbW9kZTpcIkNCQ1wiLHR5cGU6XCJibG9ja1wifSxlLmFlczEyOD1lW1wiYWVzLTEyOC1jYmNcIl0sZS5hZXMxOTI9ZVtcImFlcy0xOTItY2JjXCJdLGUuYWVzMjU2PWVbXCJhZXMtMjU2LWNiY1wiXSxlW1wiYWVzLTEyOC1jZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNGQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0xOTItY2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjE2LG1vZGU6XCJDRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWNmYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjI1NixpdjoxNixtb2RlOlwiQ0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTEyOC1jZmI4XCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTI4LGl2OjE2LG1vZGU6XCJDRkI4XCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jZmI4XCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjE2LG1vZGU6XCJDRkI4XCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTI1Ni1jZmI4XCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDRkI4XCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTEyOC1jZmIxXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTI4LGl2OjE2LG1vZGU6XCJDRkIxXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jZmIxXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjE2LG1vZGU6XCJDRkIxXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTI1Ni1jZmIxXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDRkIxXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTEyOC1vZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIk9GQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0xOTItb2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjE2LG1vZGU6XCJPRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LW9mYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjI1NixpdjoxNixtb2RlOlwiT0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTEyOC1jdHJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNUUlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0xOTItY3RyXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjE2LG1vZGU6XCJDVFJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWN0clwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjI1NixpdjoxNixtb2RlOlwiQ1RSXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTEyOC1nY21cIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTIsbW9kZTpcIkdDTVwiLHR5cGU6XCJhdXRoXCJ9LGVbXCJhZXMtMTkyLWdjbVwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjE5MixpdjoxMixtb2RlOlwiR0NNXCIsdHlwZTpcImF1dGhcIn0sZVtcImFlcy0yNTYtZ2NtXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjEyLG1vZGU6XCJHQ01cIix0eXBlOlwiYXV0aFwifX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscixuLG8pe2UuaXNCdWZmZXIodCl8fCh0PW5ldyBlKHQsXCJiaW5hcnlcIikpLHImJiFlLmlzQnVmZmVyKHIpJiYocj1uZXcgZShyLFwiYmluYXJ5XCIpKSxuLz04LG89b3x8MDtmb3IodmFyIGEsZixzPTAsdT0wLGg9bmV3IGUobiksYz1uZXcgZShvKSxkPTAsbD1bXTs7KXtpZihkKys+MCYmbC5wdXNoKGEpLGwucHVzaCh0KSxyJiZsLnB1c2gociksYT1pKGUuY29uY2F0KGwpKSxsPVtdLGY9MCxuPjApZm9yKDs7KXtpZigwPT09bilicmVhaztpZihmPT09YS5sZW5ndGgpYnJlYWs7aFtzKytdPWFbZl0sbi0tLGYrK31pZihvPjAmJmYhPT1hLmxlbmd0aClmb3IoOzspe2lmKDA9PT1vKWJyZWFrO2lmKGY9PT1hLmxlbmd0aClicmVhaztjW3UrK109YVtmXSxvLS0sZisrfWlmKDA9PT1uJiYwPT09bylicmVha31mb3IoZj0wO2Y8YS5sZW5ndGg7ZisrKWFbZl09MDtyZXR1cm57a2V5OmgsaXY6Y319dmFyIGk9cigxMDUpO3QuZXhwb3J0cz1ufSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscil7YS5jYWxsKHRoaXMpLHQ9dC50b0xvd2VyQ2FzZSgpLFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1uZXcgZShyKSk7dmFyIG49XCJzaGE1MTJcIj09PXR8fFwic2hhMzg0XCI9PT10PzEyODo2NDt0aGlzLl9hbGc9dCx0aGlzLl9rZXk9cixyLmxlbmd0aD5uP3I9aSh0KS51cGRhdGUocikuZGlnZXN0KCk6ci5sZW5ndGg8biYmKHI9ZS5jb25jYXQoW3IsZl0sbikpO2Zvcih2YXIgbz10aGlzLl9pcGFkPW5ldyBlKG4pLHM9dGhpcy5fb3BhZD1uZXcgZShuKSx1PTA7dTxuO3UrKylvW3VdPTU0XnJbdV0sc1t1XT05Ml5yW3VdO3RoaXMuX2hhc2g9aSh0KS51cGRhdGUobyl9dmFyIGk9cig1OSksbz1yKDIpLGE9cigzMSkuVHJhbnNmb3JtLGY9bmV3IGUoMTI4KTtmLmZpbGwoMCksbyhuLGEpLG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9oYXNoLnVwZGF0ZSh0LGUpLHRoaXN9LG4ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3RoaXMuX2hhc2gudXBkYXRlKHQpLHIoKX0sbi5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHQpe3RoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKSx0KCl9LG4ucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9oYXNoLmRpZ2VzdCgpO3JldHVybiBpKHRoaXMuX2FsZykudXBkYXRlKHRoaXMuX29wYWQpLnVwZGF0ZShlKS5kaWdlc3QodCl9LHQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgbih0LGUpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gaSh0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIG8uaXNCTih0KT90Oih0aGlzLm5lZ2F0aXZlPTAsdGhpcy53b3Jkcz1udWxsLHRoaXMubGVuZ3RoPTAsdGhpcy5yZWQ9bnVsbCx2b2lkKG51bGwhPT10JiYoXCJsZVwiIT09ZSYmXCJiZVwiIT09ZXx8KHI9ZSxlPTEwKSx0aGlzLl9pbml0KHR8fDAsZXx8MTAscnx8XCJiZVwiKSkpKX1mdW5jdGlvbiBhKHQsZSxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKHQubGVuZ3RoLHIpLG89ZTtvPGk7bysrKXt2YXIgYT10LmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiBmKHQsZSxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4odC5sZW5ndGgsciksYT1lO2E8bzthKyspe3ZhciBmPXQuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPWY+PTQ5P2YtNDkrMTA6Zj49MTc/Zi0xNysxMDpmfXJldHVybiBpfWZ1bmN0aW9uIHModCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0LmJpdExlbmd0aCgpKSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPXIvMjZ8MCxpPXIlMjY7ZVtyXT0odC53b3Jkc1tuXSYxPDxpKT4+Pml9cmV0dXJuIGV9ZnVuY3Rpb24gdSh0LGUscil7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmU7dmFyIG49dC5sZW5ndGgrZS5sZW5ndGh8MDtyLmxlbmd0aD1uLG49bi0xfDA7dmFyIGk9MHx0LndvcmRzWzBdLG89MHxlLndvcmRzWzBdLGE9aSpvLGY9NjcxMDg4NjMmYSxzPWEvNjcxMDg4NjR8MDtyLndvcmRzWzBdPWY7Zm9yKHZhciB1PTE7dTxuO3UrKyl7Zm9yKHZhciBoPXM+Pj4yNixjPTY3MTA4ODYzJnMsZD1NYXRoLm1pbih1LGUubGVuZ3RoLTEpLGw9TWF0aC5tYXgoMCx1LXQubGVuZ3RoKzEpO2w8PWQ7bCsrKXt2YXIgcD11LWx8MDtpPTB8dC53b3Jkc1twXSxvPTB8ZS53b3Jkc1tsXSxhPWkqbytjLGgrPWEvNjcxMDg4NjR8MCxjPTY3MTA4ODYzJmF9ci53b3Jkc1t1XT0wfGMscz0wfGh9cmV0dXJuIDAhPT1zP3Iud29yZHNbdV09MHxzOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGgodCxlLHIpe3IubmVnYXRpdmU9ZS5uZWdhdGl2ZV50Lm5lZ2F0aXZlLHIubGVuZ3RoPXQubGVuZ3RoK2UubGVuZ3RoO2Zvcih2YXIgbj0wLGk9MCxvPTA7bzxyLmxlbmd0aC0xO28rKyl7dmFyIGE9aTtpPTA7Zm9yKHZhciBmPTY3MTA4ODYzJm4scz1NYXRoLm1pbihvLGUubGVuZ3RoLTEpLHU9TWF0aC5tYXgoMCxvLXQubGVuZ3RoKzEpO3U8PXM7dSsrKXt2YXIgaD1vLXUsYz0wfHQud29yZHNbaF0sZD0wfGUud29yZHNbdV0sbD1jKmQscD02NzEwODg2MyZsO2E9YSsobC82NzEwODg2NHwwKXwwLHA9cCtmfDAsZj02NzEwODg2MyZwLGE9YSsocD4+PjI2KXwwLGkrPWE+Pj4yNixhJj02NzEwODg2M31yLndvcmRzW29dPWYsbj1hLGE9aX1yZXR1cm4gMCE9PW4/ci53b3Jkc1tvXT1uOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGModCxlLHIpe3ZhciBuPW5ldyBkO3JldHVybiBuLm11bHAodCxlLHIpfWZ1bmN0aW9uIGQodCxlKXt0aGlzLng9dCx0aGlzLnk9ZX1mdW5jdGlvbiBsKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5wPW5ldyBvKGUsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBvKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBwKCl7bC5jYWxsKHRoaXMsXCJrMjU2XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZlwiKX1mdW5jdGlvbiBiKCl7bC5jYWxsKHRoaXMsXCJwMjI0XCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiKX1mdW5jdGlvbiB2KCl7bC5jYWxsKHRoaXMsXCJwMTkyXCIsXCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiKX1mdW5jdGlvbiB5KCl7bC5jYWxsKHRoaXMsXCIyNTUxOVwiLFwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiKX1mdW5jdGlvbiBtKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT1vLl9wcmltZSh0KTt0aGlzLm09ZS5wLHRoaXMucHJpbWU9ZX1lbHNlIG4odC5ndG4oMSksXCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDFcIiksdGhpcy5tPXQsdGhpcy5wcmltZT1udWxsfWZ1bmN0aW9uIGcodCl7bS5jYWxsKHRoaXMsdCksdGhpcy5zaGlmdD10aGlzLm0uYml0TGVuZ3RoKCksdGhpcy5zaGlmdCUyNiE9PTAmJih0aGlzLnNoaWZ0Kz0yNi10aGlzLnNoaWZ0JTI2KSx0aGlzLnI9bmV3IG8oMSkuaXVzaGxuKHRoaXMuc2hpZnQpLHRoaXMucjI9dGhpcy5pbW9kKHRoaXMuci5zcXIoKSksdGhpcy5yaW52PXRoaXMuci5faW52bXAodGhpcy5tKSx0aGlzLm1pbnY9dGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pLHRoaXMubWludj10aGlzLm1pbnYudW1vZCh0aGlzLnIpLHRoaXMubWludj10aGlzLnIuc3ViKHRoaXMubWludil9XCJvYmplY3RcIj09dHlwZW9mIHQ/dC5leHBvcnRzPW86ZS5CTj1vLG8uQk49byxvLndvcmRTaXplPTI2O3ZhciB3O3RyeXt3PXIoMSkuQnVmZmVyfWNhdGNoKHQpe31vLmlzQk49ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBvfHxudWxsIT09dCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJnQuY29uc3RydWN0b3Iud29yZFNpemU9PT1vLndvcmRTaXplJiZBcnJheS5pc0FycmF5KHQud29yZHMpfSxvLm1heD1mdW5jdGlvbih0LGUpe3JldHVybiB0LmNtcChlKT4wP3Q6ZX0sby5taW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbXAoZSk8MD90OmV9LG8ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdClyZXR1cm4gdGhpcy5faW5pdE51bWJlcih0LGUscik7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQpcmV0dXJuIHRoaXMuX2luaXRBcnJheSh0LGUscik7XCJoZXhcIj09PWUmJihlPTE2KSxuKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpLHQ9dC50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZyxcIlwiKTt2YXIgaT0wO1wiLVwiPT09dFswXSYmaSsrLDE2PT09ZT90aGlzLl9wYXJzZUhleCh0LGkpOnRoaXMuX3BhcnNlQmFzZSh0LGUsaSksXCItXCI9PT10WzBdJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCksXCJsZVwiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLGUscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKHQsZSxyKXt0PDAmJih0aGlzLm5lZ2F0aXZlPTEsdD0tdCksdDw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmdF0sdGhpcy5sZW5ndGg9MSk6dDw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZ0LHQvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKHQ8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmdCx0LzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLFwibGVcIj09PXImJnRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSxlLHIpfSxvLnByb3RvdHlwZS5faW5pdEFycmF5PWZ1bmN0aW9uKHQsZSxyKXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0Lmxlbmd0aCksdC5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwodC5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLGY9MDtpZihcImJlXCI9PT1yKWZvcihpPXQubGVuZ3RoLTEsbz0wO2k+PTA7aS09MylhPXRbaV18dFtpLTFdPDw4fHRbaS0yXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8ZiY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LWYmNjcxMDg4NjMsZis9MjQsZj49MjYmJihmLT0yNixvKyspO2Vsc2UgaWYoXCJsZVwiPT09cilmb3IoaT0wLG89MDtpPHQubGVuZ3RoO2krPTMpYT10W2ldfHRbaSsxXTw8OHx0W2krMl08PDE2LHRoaXMud29yZHNbb118PWE8PGYmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1mJjY3MTA4ODYzLGYrPTI0LGY+PTI2JiYoZi09MjYsbysrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24odCxlKXt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoKHQubGVuZ3RoLWUpLzYpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHI9MDtyPHRoaXMubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPTA7dmFyIG4saSxvPTA7Zm9yKHI9dC5sZW5ndGgtNixuPTA7cj49ZTtyLT02KWk9YSh0LHIscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyxvKz0yNCxvPj0yNiYmKG8tPTI2LG4rKyk7cis2IT09ZSYmKGk9YSh0LGUscis2KSx0aGlzLndvcmRzW25dfD1pPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbbisxXXw9aT4+PjI2LW8mNDE5NDMwMyksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGk9MTtpPD02NzEwODg2MztpKj1lKW4rKztuLS0saT1pL2V8MDtmb3IodmFyIG89dC5sZW5ndGgtcixhPW8lbixzPU1hdGgubWluKG8sby1hKStyLHU9MCxoPXI7aDxzO2grPW4pdT1mKHQsaCxoK24sZSksdGhpcy5pbXVsbihpKSx0aGlzLndvcmRzWzBdK3U8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9dTp0aGlzLl9pYWRkbih1KTtpZigwIT09YSl7dmFyIGM9MTtmb3IodT1mKHQsaCx0Lmxlbmd0aCxlKSxoPTA7aDxhO2grKyljKj1lO3RoaXMuaW11bG4oYyksdGhpcy53b3Jkc1swXSt1PDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXU6dGhpcy5faWFkZG4odSl9fSxvLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3Qud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoO2UrKyl0LndvcmRzW2VdPXRoaXMud29yZHNbZV07dC5sZW5ndGg9dGhpcy5sZW5ndGgsdC5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLHQucmVkPXRoaXMucmVkfSxvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0aGlzLmNvcHkodCksdH0sby5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbih0KXtmb3IoO3RoaXMubGVuZ3RoPHQ7KXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXtmb3IoO3RoaXMubGVuZ3RoPjEmJjA9PT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdOyl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxvLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sby5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD9cIjxCTi1SOiBcIjpcIjxCTjogXCIpK3RoaXMudG9TdHJpbmcoMTYpK1wiPlwifTt2YXIgXz1bXCJcIixcIjBcIixcIjAwXCIsXCIwMDBcIixcIjAwMDBcIixcIjAwMDAwXCIsXCIwMDAwMDBcIixcIjAwMDAwMDBcIixcIjAwMDAwMDAwXCIsXCIwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwXCIsXCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixcIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIl0sTT1bMCwwLDI1LDE2LDEyLDExLDEwLDksOCw4LDcsNyw3LDcsNiw2LDYsNiw2LDYsNiw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1XSxTPVswLDAsMzM1NTQ0MzIsNDMwNDY3MjEsMTY3NzcyMTYsNDg4MjgxMjUsNjA0NjYxNzYsNDAzNTM2MDcsMTY3NzcyMTYsNDMwNDY3MjEsMWU3LDE5NDg3MTcxLDM1ODMxODA4LDYyNzQ4NTE3LDc1Mjk1MzYsMTEzOTA2MjUsMTY3NzcyMTYsMjQxMzc1NjksMzQwMTIyMjQsNDcwNDU4ODEsNjRlNiw0MDg0MTAxLDUxNTM2MzIsNjQzNjM0Myw3OTYyNjI0LDk3NjU2MjUsMTE4ODEzNzYsMTQzNDg5MDcsMTcyMTAzNjgsMjA1MTExNDksMjQzZTUsMjg2MjkxNTEsMzM1NTQ0MzIsMzkxMzUzOTMsNDU0MzU0MjQsNTI1MjE4NzUsNjA0NjYxNzZdO28ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKHQsZSl7dD10fHwxMCxlPTB8ZXx8MTt2YXIgcjtpZigxNj09PXR8fFwiaGV4XCI9PT10KXtyPVwiXCI7Zm9yKHZhciBpPTAsbz0wLGE9MDthPHRoaXMubGVuZ3RoO2ErKyl7dmFyIGY9dGhpcy53b3Jkc1thXSxzPSgxNjc3NzIxNSYoZjw8aXxvKSkudG9TdHJpbmcoMTYpO289Zj4+PjI0LWkmMTY3NzcyMTUscj0wIT09b3x8YSE9PXRoaXMubGVuZ3RoLTE/X1s2LXMubGVuZ3RoXStzK3I6cytyLGkrPTIsaT49MjYmJihpLT0yNixhLS0pfWZvcigwIT09byYmKHI9by50b1N0cmluZygxNikrcik7ci5sZW5ndGglZSE9PTA7KXI9XCIwXCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPVwiLVwiK3IpLHJ9aWYodD09PSgwfHQpJiZ0Pj0yJiZ0PD0zNil7dmFyIHU9TVt0XSxoPVNbdF07cj1cIlwiO3ZhciBjPXRoaXMuY2xvbmUoKTtmb3IoYy5uZWdhdGl2ZT0wOyFjLmlzWmVybygpOyl7dmFyIGQ9Yy5tb2RuKGgpLnRvU3RyaW5nKHQpO2M9Yy5pZGl2bihoKSxyPWMuaXNaZXJvKCk/ZCtyOl9bdS1kLmxlbmd0aF0rZCtyfWZvcih0aGlzLmlzWmVybygpJiYocj1cIjBcIityKTtyLmxlbmd0aCVlIT09MDspcj1cIjBcIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9XCItXCIrcikscn1uKCExLFwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNlwiKX0sby5wcm90b3R5cGUudG9OdW1iZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzWzBdO3JldHVybiAyPT09dGhpcy5sZW5ndGg/dCs9NjcxMDg4NjQqdGhpcy53b3Jkc1sxXTozPT09dGhpcy5sZW5ndGgmJjE9PT10aGlzLndvcmRzWzJdP3QrPTQ1MDM1OTk2MjczNzA0OTYrNjcxMDg4NjQqdGhpcy53b3Jkc1sxXTp0aGlzLmxlbmd0aD4yJiZuKCExLFwiTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzXCIpLDAhPT10aGlzLm5lZ2F0aXZlPy10OnR9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbihcInVuZGVmaW5lZFwiIT10eXBlb2YgdyksdGhpcy50b0FycmF5TGlrZSh3LHQsZSl9LG8ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSx0LGUpfSxvLnByb3RvdHlwZS50b0FycmF5TGlrZT1mdW5jdGlvbih0LGUscil7dmFyIGk9dGhpcy5ieXRlTGVuZ3RoKCksbz1yfHxNYXRoLm1heCgxLGkpO24oaTw9byxcImJ5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGhcIiksbihvPjAsXCJSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDBcIiksdGhpcy5zdHJpcCgpO3ZhciBhLGYscz1cImxlXCI9PT1lLHU9bmV3IHQobyksaD10aGlzLmNsb25lKCk7aWYocyl7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksaC5pdXNocm4oOCksdVtmXT1hO2Zvcig7ZjxvO2YrKyl1W2ZdPTB9ZWxzZXtmb3IoZj0wO2Y8by1pO2YrKyl1W2ZdPTA7Zm9yKGY9MDshaC5pc1plcm8oKTtmKyspYT1oLmFuZGxuKDI1NSksaC5pdXNocm4oOCksdVtvLWYtMV09YX1yZXR1cm4gdX0sTWF0aC5jbHozMj9vLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3JldHVybiAzMi1NYXRoLmNsejMyKHQpfTpvLnByb3RvdHlwZS5fY291bnRCaXRzPWZ1bmN0aW9uKHQpe3ZhciBlPXQscj0wO3JldHVybiBlPj00MDk2JiYocis9MTMsZT4+Pj0xMyksZT49NjQmJihyKz03LGU+Pj49NyksZT49OCYmKHIrPTQsZT4+Pj00KSxlPj0yJiYocis9MixlPj4+PTIpLHIrZX0sby5wcm90b3R5cGUuX3plcm9CaXRzPWZ1bmN0aW9uKHQpe2lmKDA9PT10KXJldHVybiAyNjt2YXIgZT10LHI9MDtyZXR1cm4gMD09PSg4MTkxJmUpJiYocis9MTMsZT4+Pj0xMyksMD09PSgxMjcmZSkmJihyKz03LGU+Pj49NyksMD09PSgxNSZlKSYmKHIrPTQsZT4+Pj00KSwwPT09KDMmZSkmJihyKz0yLGU+Pj49MiksMD09PSgxJmUpJiZyKysscn0sby5wcm90b3R5cGUuYml0TGVuZ3RoPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSxlPXRoaXMuX2NvdW50Qml0cyh0KTtyZXR1cm4gMjYqKHRoaXMubGVuZ3RoLTEpK2V9LG8ucHJvdG90eXBlLnplcm9CaXRzPWZ1bmN0aW9uKCl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gMDtmb3IodmFyIHQ9MCxlPTA7ZTx0aGlzLmxlbmd0aDtlKyspe3ZhciByPXRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbZV0pO2lmKHQrPXIsMjYhPT1yKWJyZWFrfXJldHVybiB0fSxvLnByb3RvdHlwZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpLzgpfSxvLnByb3RvdHlwZS50b1R3b3M9ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlP3RoaXMuYWJzKCkuaW5vdG4odCkuaWFkZG4oMSk6dGhpcy5jbG9uZSgpfSxvLnByb3RvdHlwZS5mcm9tVHdvcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50ZXN0bih0LTEpP3RoaXMubm90bih0KS5pYWRkbigxKS5pbmVnKCk6dGhpcy5jbG9uZSgpfSxvLnByb3RvdHlwZS5pc05lZz1mdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZX0sby5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCl9LG8ucHJvdG90eXBlLmluZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1plcm8oKXx8KHRoaXMubmVnYXRpdmVePTEpLHRoaXN9LG8ucHJvdG90eXBlLml1b3I9ZnVuY3Rpb24odCl7Zm9yKDt0aGlzLmxlbmd0aDx0Lmxlbmd0aDspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRoaXMud29yZHNbZV09dGhpcy53b3Jkc1tlXXx0LndvcmRzW2VdO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlvcj1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVvcih0KX0sby5wcm90b3R5cGUub3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pb3IodCk6dC5jbG9uZSgpLmlvcih0aGlzKX0sby5wcm90b3R5cGUudW9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXVvcih0KTp0LmNsb25lKCkuaXVvcih0aGlzKX0sby5wcm90b3R5cGUuaXVhbmQ9ZnVuY3Rpb24odCl7dmFyIGU7ZT10aGlzLmxlbmd0aD50Lmxlbmd0aD90OnRoaXM7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdGhpcy53b3Jkc1tyXT10aGlzLndvcmRzW3JdJnQud29yZHNbcl07cmV0dXJuIHRoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuaWFuZD1mdW5jdGlvbih0KXtyZXR1cm4gbigwPT09KHRoaXMubmVnYXRpdmV8dC5uZWdhdGl2ZSkpLHRoaXMuaXVhbmQodCl9LG8ucHJvdG90eXBlLmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLmlhbmQodCk6dC5jbG9uZSgpLmlhbmQodGhpcyl9LG8ucHJvdG90eXBlLnVhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubGVuZ3RoPnQubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdWFuZCh0KTp0LmNsb25lKCkuaXVhbmQodGhpcyl9LG8ucHJvdG90eXBlLml1eG9yPWZ1bmN0aW9uKHQpe3ZhciBlLHI7dGhpcy5sZW5ndGg+dC5sZW5ndGg/KGU9dGhpcyxyPXQpOihlPXQscj10aGlzKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl0aGlzLndvcmRzW25dPWUud29yZHNbbl1eci53b3Jkc1tuXTtpZih0aGlzIT09ZSlmb3IoO248ZS5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09ZS53b3Jkc1tuXTtyZXR1cm4gdGhpcy5sZW5ndGg9ZS5sZW5ndGgsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5peG9yPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSksdGhpcy5pdXhvcih0KX0sby5wcm90b3R5cGUueG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaXhvcih0KTp0LmNsb25lKCkuaXhvcih0aGlzKX0sby5wcm90b3R5cGUudXhvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sZW5ndGg+dC5sZW5ndGg/dGhpcy5jbG9uZSgpLml1eG9yKHQpOnQuY2xvbmUoKS5pdXhvcih0aGlzKX0sby5wcm90b3R5cGUuaW5vdG49ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIGU9MHxNYXRoLmNlaWwodC8yNikscj10JTI2O3RoaXMuX2V4cGFuZChlKSxyPjAmJmUtLTtmb3IodmFyIGk9MDtpPGU7aSsrKXRoaXMud29yZHNbaV09NjcxMDg4NjMmfnRoaXMud29yZHNbaV07cmV0dXJuIHI+MCYmKHRoaXMud29yZHNbaV09fnRoaXMud29yZHNbaV0mNjcxMDg4NjM+PjI2LXIpLHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUubm90bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHQpfSxvLnByb3RvdHlwZS5zZXRuPWZ1bmN0aW9uKHQsZSl7bihcIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCk7dmFyIHI9dC8yNnwwLGk9dCUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksZT90aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl18MTw8aTp0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mfigxPDxpKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24odCl7dmFyIGU7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT10Lm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsZT10aGlzLmlzdWIodCksdGhpcy5uZWdhdGl2ZV49MSx0aGlzLl9ub3JtU2lnbigpO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZSlyZXR1cm4gdC5uZWdhdGl2ZT0wLGU9dGhpcy5pc3ViKHQpLHQubmVnYXRpdmU9MSxlLl9ub3JtU2lnbigpO3ZhciByLG47dGhpcy5sZW5ndGg+dC5sZW5ndGg/KHI9dGhpcyxuPXQpOihyPXQsbj10aGlzKTtmb3IodmFyIGk9MCxvPTA7bzxuLmxlbmd0aDtvKyspZT0oMHxyLndvcmRzW29dKSsoMHxuLndvcmRzW29dKStpLHRoaXMud29yZHNbb109NjcxMDg4NjMmZSxpPWU+Pj4yNjtmb3IoOzAhPT1pJiZvPHIubGVuZ3RoO28rKyllPSgwfHIud29yZHNbb10pK2ksdGhpcy53b3Jkc1tvXT02NzEwODg2MyZlLGk9ZT4+PjI2O2lmKHRoaXMubGVuZ3RoPXIubGVuZ3RoLDAhPT1pKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWksdGhpcy5sZW5ndGgrKztlbHNlIGlmKHIhPT10aGlzKWZvcig7bzxyLmxlbmd0aDtvKyspdGhpcy53b3Jkc1tvXT1yLndvcmRzW29dO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8odC5uZWdhdGl2ZT0wLGU9dGhpcy5zdWIodCksdC5uZWdhdGl2ZV49MSxlKTowPT09dC5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCxlPXQuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSxlKTp0aGlzLmxlbmd0aD50Lmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZCh0KTp0LmNsb25lKCkuaWFkZCh0aGlzKX0sby5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbih0KXtpZigwIT09dC5uZWdhdGl2ZSl7dC5uZWdhdGl2ZT0wO3ZhciBlPXRoaXMuaWFkZCh0KTtyZXR1cm4gdC5uZWdhdGl2ZT0xLGUuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQodCksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIHI9dGhpcy5jbXAodCk7aWYoMD09PXIpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmxlbmd0aD0xLHRoaXMud29yZHNbMF09MCx0aGlzO3ZhciBuLGk7cj4wPyhuPXRoaXMsaT10KToobj10LGk9dGhpcyk7Zm9yKHZhciBvPTAsYT0wO2E8aS5sZW5ndGg7YSsrKWU9KDB8bi53b3Jkc1thXSktKDB8aS53b3Jkc1thXSkrbyxvPWU+PjI2LHRoaXMud29yZHNbYV09NjcxMDg4NjMmZTtmb3IoOzAhPT1vJiZhPG4ubGVuZ3RoO2ErKyllPSgwfG4ud29yZHNbYV0pK28sbz1lPj4yNix0aGlzLndvcmRzW2FdPTY3MTA4ODYzJmU7aWYoMD09PW8mJmE8bi5sZW5ndGgmJm4hPT10aGlzKWZvcig7YTxuLmxlbmd0aDthKyspdGhpcy53b3Jkc1thXT1uLndvcmRzW2FdO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCxhKSxuIT09dGhpcyYmKHRoaXMubmVnYXRpdmU9MSksdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKHQpfTt2YXIgRT1mdW5jdGlvbih0LGUscil7dmFyIG4saSxvLGE9dC53b3JkcyxmPWUud29yZHMscz1yLndvcmRzLHU9MCxoPTB8YVswXSxjPTgxOTEmaCxkPWg+Pj4xMyxsPTB8YVsxXSxwPTgxOTEmbCxiPWw+Pj4xMyx2PTB8YVsyXSx5PTgxOTEmdixtPXY+Pj4xMyxnPTB8YVszXSx3PTgxOTEmZyxfPWc+Pj4xMyxNPTB8YVs0XSxTPTgxOTEmTSxFPU0+Pj4xMyxBPTB8YVs1XSxrPTgxOTEmQSx4PUE+Pj4xMyxJPTB8YVs2XSxCPTgxOTEmSSxPPUk+Pj4xMyxSPTB8YVs3XSxQPTgxOTEmUixUPVI+Pj4xMyxqPTB8YVs4XSxDPTgxOTEmaixOPWo+Pj4xMyxMPTB8YVs5XSxVPTgxOTEmTCx6PUw+Pj4xMyxEPTB8ZlswXSxxPTgxOTEmRCxGPUQ+Pj4xMyxLPTB8ZlsxXSxHPTgxOTEmSyxWPUs+Pj4xMyxIPTB8ZlsyXSxYPTgxOTEmSCxZPUg+Pj4xMyxXPTB8ZlszXSxaPTgxOTEmVyxKPVc+Pj4xMywkPTB8Zls0XSxRPTgxOTEmJCx0dD0kPj4+MTMsZXQ9MHxmWzVdLHJ0PTgxOTEmZXQsbnQ9ZXQ+Pj4xMyxpdD0wfGZbNl0sb3Q9ODE5MSZpdCxhdD1pdD4+PjEzLGZ0PTB8Zls3XSxzdD04MTkxJmZ0LHV0PWZ0Pj4+MTMsaHQ9MHxmWzhdLGN0PTgxOTEmaHQsZHQ9aHQ+Pj4xMyxsdD0wfGZbOV0scHQ9ODE5MSZsdCxidD1sdD4+PjEzO3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPTE5LG49TWF0aC5pbXVsKGMscSksaT1NYXRoLmltdWwoYyxGKSxpPWkrTWF0aC5pbXVsKGQscSl8MCxvPU1hdGguaW11bChkLEYpO3ZhciB2dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsodnQ+Pj4yNil8MCx2dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwocCxxKSxpPU1hdGguaW11bChwLEYpLGk9aStNYXRoLmltdWwoYixxKXwwLG89TWF0aC5pbXVsKGIsRiksbj1uK01hdGguaW11bChjLEcpfDAsaT1pK01hdGguaW11bChjLFYpfDAsaT1pK01hdGguaW11bChkLEcpfDAsbz1vK01hdGguaW11bChkLFYpfDA7dmFyIHl0PSh1K258MCkrKCg4MTkxJmkpPDwxMyl8MDt1PShvKyhpPj4+MTMpfDApKyh5dD4+PjI2KXwwLHl0Jj02NzEwODg2MyxuPU1hdGguaW11bCh5LHEpLGk9TWF0aC5pbXVsKHksRiksaT1pK01hdGguaW11bChtLHEpfDAsbz1NYXRoLmltdWwobSxGKSxuPW4rTWF0aC5pbXVsKHAsRyl8MCxpPWkrTWF0aC5pbXVsKHAsVil8MCxpPWkrTWF0aC5pbXVsKGIsRyl8MCxvPW8rTWF0aC5pbXVsKGIsVil8MCxuPW4rTWF0aC5pbXVsKGMsWCl8MCxpPWkrTWF0aC5pbXVsKGMsWSl8MCxpPWkrTWF0aC5pbXVsKGQsWCl8MCxvPW8rTWF0aC5pbXVsKGQsWSl8MDt2YXIgbXQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKG10Pj4+MjYpfDAsbXQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKHcscSksaT1NYXRoLmltdWwodyxGKSxpPWkrTWF0aC5pbXVsKF8scSl8MCxvPU1hdGguaW11bChfLEYpLG49bitNYXRoLmltdWwoeSxHKXwwLGk9aStNYXRoLmltdWwoeSxWKXwwLGk9aStNYXRoLmltdWwobSxHKXwwLG89bytNYXRoLmltdWwobSxWKXwwLG49bitNYXRoLmltdWwocCxYKXwwLGk9aStNYXRoLmltdWwocCxZKXwwLGk9aStNYXRoLmltdWwoYixYKXwwLG89bytNYXRoLmltdWwoYixZKXwwLG49bitNYXRoLmltdWwoYyxaKXwwLGk9aStNYXRoLmltdWwoYyxKKXwwLGk9aStNYXRoLmltdWwoZCxaKXwwLG89bytNYXRoLmltdWwoZCxKKXwwO3ZhciBndD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoZ3Q+Pj4yNil8MCxndCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoUyxxKSxpPU1hdGguaW11bChTLEYpLGk9aStNYXRoLmltdWwoRSxxKXwwLG89TWF0aC5pbXVsKEUsRiksbj1uK01hdGguaW11bCh3LEcpfDAsaT1pK01hdGguaW11bCh3LFYpfDAsaT1pK01hdGguaW11bChfLEcpfDAsbz1vK01hdGguaW11bChfLFYpfDAsbj1uK01hdGguaW11bCh5LFgpfDAsaT1pK01hdGguaW11bCh5LFkpfDAsaT1pK01hdGguaW11bChtLFgpfDAsbz1vK01hdGguaW11bChtLFkpfDAsbj1uK01hdGguaW11bChwLFopfDAsaT1pK01hdGguaW11bChwLEopfDAsaT1pK01hdGguaW11bChiLFopfDAsbz1vK01hdGguaW11bChiLEopfDAsbj1uK01hdGguaW11bChjLFEpfDAsaT1pK01hdGguaW11bChjLHR0KXwwLGk9aStNYXRoLmltdWwoZCxRKXwwLG89bytNYXRoLmltdWwoZCx0dCl8MDt2YXIgd3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKHd0Pj4+MjYpfDAsd3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKGsscSksaT1NYXRoLmltdWwoayxGKSxpPWkrTWF0aC5pbXVsKHgscSl8MCxvPU1hdGguaW11bCh4LEYpLG49bitNYXRoLmltdWwoUyxHKXwwLGk9aStNYXRoLmltdWwoUyxWKXwwLGk9aStNYXRoLmltdWwoRSxHKXwwLG89bytNYXRoLmltdWwoRSxWKXwwLG49bitNYXRoLmltdWwodyxYKXwwLGk9aStNYXRoLmltdWwodyxZKXwwLGk9aStNYXRoLmltdWwoXyxYKXwwLG89bytNYXRoLmltdWwoXyxZKXwwLG49bitNYXRoLmltdWwoeSxaKXwwLGk9aStNYXRoLmltdWwoeSxKKXwwLGk9aStNYXRoLmltdWwobSxaKXwwLG89bytNYXRoLmltdWwobSxKKXwwLG49bitNYXRoLmltdWwocCxRKXwwLGk9aStNYXRoLmltdWwocCx0dCl8MCxpPWkrTWF0aC5pbXVsKGIsUSl8MCxvPW8rTWF0aC5pbXVsKGIsdHQpfDAsbj1uK01hdGguaW11bChjLHJ0KXwwLGk9aStNYXRoLmltdWwoYyxudCl8MCxpPWkrTWF0aC5pbXVsKGQscnQpfDAsbz1vK01hdGguaW11bChkLG50KXwwO3ZhciBfdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoX3Q+Pj4yNil8MCxfdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoQixxKSxpPU1hdGguaW11bChCLEYpLGk9aStNYXRoLmltdWwoTyxxKXwwLG89TWF0aC5pbXVsKE8sRiksbj1uK01hdGguaW11bChrLEcpfDAsaT1pK01hdGguaW11bChrLFYpfDAsaT1pK01hdGguaW11bCh4LEcpfDAsbz1vK01hdGguaW11bCh4LFYpfDAsbj1uK01hdGguaW11bChTLFgpfDAsaT1pK01hdGguaW11bChTLFkpfDAsaT1pK01hdGguaW11bChFLFgpfDAsbz1vK01hdGguaW11bChFLFkpfDAsbj1uK01hdGguaW11bCh3LFopfDAsaT1pK01hdGguaW11bCh3LEopfDAsaT1pK01hdGguaW11bChfLFopfDAsbz1vK01hdGguaW11bChfLEopfDAsbj1uK01hdGguaW11bCh5LFEpfDAsaT1pK01hdGguaW11bCh5LHR0KXwwLGk9aStNYXRoLmltdWwobSxRKXwwLG89bytNYXRoLmltdWwobSx0dCl8MCxuPW4rTWF0aC5pbXVsKHAscnQpfDAsaT1pK01hdGguaW11bChwLG50KXwwLGk9aStNYXRoLmltdWwoYixydCl8MCxvPW8rTWF0aC5pbXVsKGIsbnQpfDAsbj1uK01hdGguaW11bChjLG90KXwwLGk9aStNYXRoLmltdWwoYyxhdCl8MCxpPWkrTWF0aC5pbXVsKGQsb3QpfDAsbz1vK01hdGguaW11bChkLGF0KXwwO3ZhciBNdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoTXQ+Pj4yNil8MCxNdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoUCxxKSxpPU1hdGguaW11bChQLEYpLGk9aStNYXRoLmltdWwoVCxxKXwwLG89TWF0aC5pbXVsKFQsRiksbj1uK01hdGguaW11bChCLEcpfDAsaT1pK01hdGguaW11bChCLFYpfDAsaT1pK01hdGguaW11bChPLEcpfDAsbz1vK01hdGguaW11bChPLFYpfDAsbj1uK01hdGguaW11bChrLFgpfDAsaT1pK01hdGguaW11bChrLFkpfDAsaT1pK01hdGguaW11bCh4LFgpfDAsbz1vK01hdGguaW11bCh4LFkpfDAsbj1uK01hdGguaW11bChTLFopfDAsaT1pK01hdGguaW11bChTLEopfDAsaT1pK01hdGguaW11bChFLFopfDAsbz1vK01hdGguaW11bChFLEopfDAsbj1uK01hdGguaW11bCh3LFEpfDAsaT1pK01hdGguaW11bCh3LHR0KXwwLGk9aStNYXRoLmltdWwoXyxRKXwwLG89bytNYXRoLmltdWwoXyx0dCl8MCxuPW4rTWF0aC5pbXVsKHkscnQpfDAsaT1pK01hdGguaW11bCh5LG50KXwwLGk9aStNYXRoLmltdWwobSxydCl8MCxvPW8rTWF0aC5pbXVsKG0sbnQpfDAsbj1uK01hdGguaW11bChwLG90KXwwLGk9aStNYXRoLmltdWwocCxhdCl8MCxpPWkrTWF0aC5pbXVsKGIsb3QpfDAsbz1vK01hdGguaW11bChiLGF0KXwwLG49bitNYXRoLmltdWwoYyxzdCl8MCxpPWkrTWF0aC5pbXVsKGMsdXQpfDAsaT1pK01hdGguaW11bChkLHN0KXwwLG89bytNYXRoLmltdWwoZCx1dCl8MDt2YXIgU3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFN0Pj4+MjYpfDAsU3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKEMscSksaT1NYXRoLmltdWwoQyxGKSxpPWkrTWF0aC5pbXVsKE4scSl8MCxvPU1hdGguaW11bChOLEYpLG49bitNYXRoLmltdWwoUCxHKXwwLGk9aStNYXRoLmltdWwoUCxWKXwwLGk9aStNYXRoLmltdWwoVCxHKXwwLG89bytNYXRoLmltdWwoVCxWKXwwLG49bitNYXRoLmltdWwoQixYKXwwLGk9aStNYXRoLmltdWwoQixZKXwwLGk9aStNYXRoLmltdWwoTyxYKXwwLG89bytNYXRoLmltdWwoTyxZKXwwLG49bitNYXRoLmltdWwoayxaKXwwLGk9aStNYXRoLmltdWwoayxKKXwwLGk9aStNYXRoLmltdWwoeCxaKXwwLG89bytNYXRoLmltdWwoeCxKKXwwLG49bitNYXRoLmltdWwoUyxRKXwwLGk9aStNYXRoLmltdWwoUyx0dCl8MCxpPWkrTWF0aC5pbXVsKEUsUSl8MCxvPW8rTWF0aC5pbXVsKEUsdHQpfDAsbj1uK01hdGguaW11bCh3LHJ0KXwwLGk9aStNYXRoLmltdWwodyxudCl8MCxpPWkrTWF0aC5pbXVsKF8scnQpfDAsbz1vK01hdGguaW11bChfLG50KXwwLG49bitNYXRoLmltdWwoeSxvdCl8MCxpPWkrTWF0aC5pbXVsKHksYXQpfDAsaT1pK01hdGguaW11bChtLG90KXwwLG89bytNYXRoLmltdWwobSxhdCl8MCxuPW4rTWF0aC5pbXVsKHAsc3QpfDAsaT1pK01hdGguaW11bChwLHV0KXwwLGk9aStNYXRoLmltdWwoYixzdCl8MCxvPW8rTWF0aC5pbXVsKGIsdXQpfDAsbj1uK01hdGguaW11bChjLGN0KXwwLGk9aStNYXRoLmltdWwoYyxkdCl8MCxpPWkrTWF0aC5pbXVsKGQsY3QpfDAsbz1vK01hdGguaW11bChkLGR0KXwwO3ZhciBFdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoRXQ+Pj4yNil8MCxFdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxxKSxpPU1hdGguaW11bChVLEYpLGk9aStNYXRoLmltdWwoeixxKXwwLG89TWF0aC5pbXVsKHosRiksbj1uK01hdGguaW11bChDLEcpfDAsaT1pK01hdGguaW11bChDLFYpfDAsaT1pK01hdGguaW11bChOLEcpfDAsbz1vK01hdGguaW11bChOLFYpfDAsbj1uK01hdGguaW11bChQLFgpfDAsaT1pK01hdGguaW11bChQLFkpfDAsaT1pK01hdGguaW11bChULFgpfDAsbz1vK01hdGguaW11bChULFkpfDAsbj1uK01hdGguaW11bChCLFopfDAsaT1pK01hdGguaW11bChCLEopfDAsaT1pK01hdGguaW11bChPLFopfDAsbz1vK01hdGguaW11bChPLEopfDAsbj1uK01hdGguaW11bChrLFEpfDAsaT1pK01hdGguaW11bChrLHR0KXwwLGk9aStNYXRoLmltdWwoeCxRKXwwLG89bytNYXRoLmltdWwoeCx0dCl8MCxuPW4rTWF0aC5pbXVsKFMscnQpfDAsaT1pK01hdGguaW11bChTLG50KXwwLGk9aStNYXRoLmltdWwoRSxydCl8MCxvPW8rTWF0aC5pbXVsKEUsbnQpfDAsbj1uK01hdGguaW11bCh3LG90KXwwLGk9aStNYXRoLmltdWwodyxhdCl8MCxpPWkrTWF0aC5pbXVsKF8sb3QpfDAsbz1vK01hdGguaW11bChfLGF0KXwwLG49bitNYXRoLmltdWwoeSxzdCl8MCxpPWkrTWF0aC5pbXVsKHksdXQpfDAsaT1pK01hdGguaW11bChtLHN0KXwwLG89bytNYXRoLmltdWwobSx1dCl8MCxuPW4rTWF0aC5pbXVsKHAsY3QpfDAsaT1pK01hdGguaW11bChwLGR0KXwwLGk9aStNYXRoLmltdWwoYixjdCl8MCxvPW8rTWF0aC5pbXVsKGIsZHQpfDAsbj1uK01hdGguaW11bChjLHB0KXwwLGk9aStNYXRoLmltdWwoYyxidCl8MCxpPWkrTWF0aC5pbXVsKGQscHQpfDAsbz1vK01hdGguaW11bChkLGJ0KXwwO3ZhciBBdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoQXQ+Pj4yNil8MCxBdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxHKSxpPU1hdGguaW11bChVLFYpLGk9aStNYXRoLmltdWwoeixHKXwwLG89TWF0aC5pbXVsKHosViksbj1uK01hdGguaW11bChDLFgpfDAsaT1pK01hdGguaW11bChDLFkpfDAsaT1pK01hdGguaW11bChOLFgpfDAsbz1vK01hdGguaW11bChOLFkpfDAsbj1uK01hdGguaW11bChQLFopfDAsaT1pK01hdGguaW11bChQLEopfDAsaT1pK01hdGguaW11bChULFopfDAsbz1vK01hdGguaW11bChULEopfDAsbj1uK01hdGguaW11bChCLFEpfDAsaT1pK01hdGguaW11bChCLHR0KXwwLGk9aStNYXRoLmltdWwoTyxRKXwwLG89bytNYXRoLmltdWwoTyx0dCl8MCxuPW4rTWF0aC5pbXVsKGsscnQpfDAsaT1pK01hdGguaW11bChrLG50KXwwLGk9aStNYXRoLmltdWwoeCxydCl8MCxvPW8rTWF0aC5pbXVsKHgsbnQpfDAsbj1uK01hdGguaW11bChTLG90KXwwLGk9aStNYXRoLmltdWwoUyxhdCl8MCxpPWkrTWF0aC5pbXVsKEUsb3QpfDAsbz1vK01hdGguaW11bChFLGF0KXwwLG49bitNYXRoLmltdWwodyxzdCl8MCxpPWkrTWF0aC5pbXVsKHcsdXQpfDAsaT1pK01hdGguaW11bChfLHN0KXwwLG89bytNYXRoLmltdWwoXyx1dCl8MCxuPW4rTWF0aC5pbXVsKHksY3QpfDAsaT1pK01hdGguaW11bCh5LGR0KXwwLGk9aStNYXRoLmltdWwobSxjdCl8MCxvPW8rTWF0aC5pbXVsKG0sZHQpfDAsbj1uK01hdGguaW11bChwLHB0KXwwLGk9aStNYXRoLmltdWwocCxidCl8MCxpPWkrTWF0aC5pbXVsKGIscHQpfDAsbz1vK01hdGguaW11bChiLGJ0KXwwO3ZhciBrdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoa3Q+Pj4yNil8MCxrdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxYKSxpPU1hdGguaW11bChVLFkpLGk9aStNYXRoLmltdWwoeixYKXwwLG89TWF0aC5pbXVsKHosWSksbj1uK01hdGguaW11bChDLFopfDAsaT1pK01hdGguaW11bChDLEopfDAsaT1pK01hdGguaW11bChOLFopfDAsbz1vK01hdGguaW11bChOLEopfDAsbj1uK01hdGguaW11bChQLFEpfDAsaT1pK01hdGguaW11bChQLHR0KXwwLGk9aStNYXRoLmltdWwoVCxRKXwwLG89bytNYXRoLmltdWwoVCx0dCl8MCxuPW4rTWF0aC5pbXVsKEIscnQpfDAsaT1pK01hdGguaW11bChCLG50KXwwLGk9aStNYXRoLmltdWwoTyxydCl8MCxvPW8rTWF0aC5pbXVsKE8sbnQpfDAsbj1uK01hdGguaW11bChrLG90KXwwLGk9aStNYXRoLmltdWwoayxhdCl8MCxpPWkrTWF0aC5pbXVsKHgsb3QpfDAsbz1vK01hdGguaW11bCh4LGF0KXwwLG49bitNYXRoLmltdWwoUyxzdCl8MCxpPWkrTWF0aC5pbXVsKFMsdXQpfDAsaT1pK01hdGguaW11bChFLHN0KXwwLG89bytNYXRoLmltdWwoRSx1dCl8MCxuPW4rTWF0aC5pbXVsKHcsY3QpfDAsaT1pK01hdGguaW11bCh3LGR0KXwwLGk9aStNYXRoLmltdWwoXyxjdCl8MCxvPW8rTWF0aC5pbXVsKF8sZHQpfDAsbj1uK01hdGguaW11bCh5LHB0KXwwLGk9aStNYXRoLmltdWwoeSxidCl8MCxpPWkrTWF0aC5pbXVsKG0scHQpfDAsbz1vK01hdGguaW11bChtLGJ0KXwwO3ZhciB4dD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoeHQ+Pj4yNil8MCx4dCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxaKSxpPU1hdGguaW11bChVLEopLGk9aStNYXRoLmltdWwoeixaKXwwLG89TWF0aC5pbXVsKHosSiksbj1uK01hdGguaW11bChDLFEpfDAsaT1pK01hdGguaW11bChDLHR0KXwwLGk9aStNYXRoLmltdWwoTixRKXwwLG89bytNYXRoLmltdWwoTix0dCl8MCxuPW4rTWF0aC5pbXVsKFAscnQpfDAsaT1pK01hdGguaW11bChQLG50KXwwLGk9aStNYXRoLmltdWwoVCxydCl8MCxvPW8rTWF0aC5pbXVsKFQsbnQpfDAsbj1uK01hdGguaW11bChCLG90KXwwLGk9aStNYXRoLmltdWwoQixhdCl8MCxpPWkrTWF0aC5pbXVsKE8sb3QpfDAsbz1vK01hdGguaW11bChPLGF0KXwwLG49bitNYXRoLmltdWwoayxzdCl8MCxpPWkrTWF0aC5pbXVsKGssdXQpfDAsaT1pK01hdGguaW11bCh4LHN0KXwwLG89bytNYXRoLmltdWwoeCx1dCl8MCxuPW4rTWF0aC5pbXVsKFMsY3QpfDAsaT1pK01hdGguaW11bChTLGR0KXwwLGk9aStNYXRoLmltdWwoRSxjdCl8MCxvPW8rTWF0aC5pbXVsKEUsZHQpfDAsbj1uK01hdGguaW11bCh3LHB0KXwwLGk9aStNYXRoLmltdWwodyxidCl8MCxpPWkrTWF0aC5pbXVsKF8scHQpfDAsbz1vK01hdGguaW11bChfLGJ0KXwwO3ZhciBJdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoSXQ+Pj4yNil8MCxJdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxRKSxpPU1hdGguaW11bChVLHR0KSxpPWkrTWF0aC5pbXVsKHosUSl8MCxvPU1hdGguaW11bCh6LHR0KSxuPW4rTWF0aC5pbXVsKEMscnQpfDAsaT1pK01hdGguaW11bChDLG50KXwwLGk9aStNYXRoLmltdWwoTixydCl8MCxvPW8rTWF0aC5pbXVsKE4sbnQpfDAsbj1uK01hdGguaW11bChQLG90KXwwLGk9aStNYXRoLmltdWwoUCxhdCl8MCxpPWkrTWF0aC5pbXVsKFQsb3QpfDAsbz1vK01hdGguaW11bChULGF0KXwwLG49bitNYXRoLmltdWwoQixzdCl8MCxpPWkrTWF0aC5pbXVsKEIsdXQpfDAsaT1pK01hdGguaW11bChPLHN0KXwwLG89bytNYXRoLmltdWwoTyx1dCl8MCxuPW4rTWF0aC5pbXVsKGssY3QpfDAsaT1pK01hdGguaW11bChrLGR0KXwwLGk9aStNYXRoLmltdWwoeCxjdCl8MCxvPW8rTWF0aC5pbXVsKHgsZHQpfDAsbj1uK01hdGguaW11bChTLHB0KXwwLGk9aStNYXRoLmltdWwoUyxidCl8MCxpPWkrTWF0aC5pbXVsKEUscHQpfDAsbz1vK01hdGguaW11bChFLGJ0KXwwO3ZhciBCdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoQnQ+Pj4yNil8MCxCdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxydCksaT1NYXRoLmltdWwoVSxudCksaT1pK01hdGguaW11bCh6LHJ0KXwwLG89TWF0aC5pbXVsKHosbnQpLG49bitNYXRoLmltdWwoQyxvdCl8MCxpPWkrTWF0aC5pbXVsKEMsYXQpfDAsaT1pK01hdGguaW11bChOLG90KXwwLG89bytNYXRoLmltdWwoTixhdCl8MCxuPW4rTWF0aC5pbXVsKFAsc3QpfDAsaT1pK01hdGguaW11bChQLHV0KXwwLGk9aStNYXRoLmltdWwoVCxzdCl8MCxvPW8rTWF0aC5pbXVsKFQsdXQpfDAsbj1uK01hdGguaW11bChCLGN0KXwwLGk9aStNYXRoLmltdWwoQixkdCl8MCxpPWkrTWF0aC5pbXVsKE8sY3QpfDAsbz1vK01hdGguaW11bChPLGR0KXwwLG49bitNYXRoLmltdWwoayxwdCl8MCxpPWkrTWF0aC5pbXVsKGssYnQpfDAsaT1pK01hdGguaW11bCh4LHB0KXwwLG89bytNYXRoLmltdWwoeCxidCl8MDt2YXIgT3Q9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKE90Pj4+MjYpfDAsT3QmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsb3QpLGk9TWF0aC5pbXVsKFUsYXQpLGk9aStNYXRoLmltdWwoeixvdCl8MCxvPU1hdGguaW11bCh6LGF0KSxuPW4rTWF0aC5pbXVsKEMsc3QpfDAsaT1pK01hdGguaW11bChDLHV0KXwwLGk9aStNYXRoLmltdWwoTixzdCl8MCxvPW8rTWF0aC5pbXVsKE4sdXQpfDAsbj1uK01hdGguaW11bChQLGN0KXwwLGk9aStNYXRoLmltdWwoUCxkdCl8MCxpPWkrTWF0aC5pbXVsKFQsY3QpfDAsbz1vK01hdGguaW11bChULGR0KXwwLG49bitNYXRoLmltdWwoQixwdCl8MCxpPWkrTWF0aC5pbXVsKEIsYnQpfDAsaT1pK01hdGguaW11bChPLHB0KXwwLG89bytNYXRoLmltdWwoTyxidCl8MDt2YXIgUnQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFJ0Pj4+MjYpfDAsUnQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUsc3QpLGk9TWF0aC5pbXVsKFUsdXQpLGk9aStNYXRoLmltdWwoeixzdCl8MCxvPU1hdGguaW11bCh6LHV0KSxuPW4rTWF0aC5pbXVsKEMsY3QpfDAsaT1pK01hdGguaW11bChDLGR0KXwwLGk9aStNYXRoLmltdWwoTixjdCl8MCxvPW8rTWF0aC5pbXVsKE4sZHQpfDAsbj1uK01hdGguaW11bChQLHB0KXwwLGk9aStNYXRoLmltdWwoUCxidCl8MCxpPWkrTWF0aC5pbXVsKFQscHQpfDAsbz1vK01hdGguaW11bChULGJ0KXwwO3ZhciBQdD0odStufDApKygoODE5MSZpKTw8MTMpfDA7dT0obysoaT4+PjEzKXwwKSsoUHQ+Pj4yNil8MCxQdCY9NjcxMDg4NjMsbj1NYXRoLmltdWwoVSxjdCksaT1NYXRoLmltdWwoVSxkdCksaT1pK01hdGguaW11bCh6LGN0KXwwLG89TWF0aC5pbXVsKHosZHQpLG49bitNYXRoLmltdWwoQyxwdCl8MCxpPWkrTWF0aC5pbXVsKEMsYnQpfDAsaT1pK01hdGguaW11bChOLHB0KXwwLG89bytNYXRoLmltdWwoTixidCl8MDt2YXIgVHQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3U9KG8rKGk+Pj4xMyl8MCkrKFR0Pj4+MjYpfDAsVHQmPTY3MTA4ODYzLG49TWF0aC5pbXVsKFUscHQpLGk9TWF0aC5pbXVsKFUsYnQpLGk9aStNYXRoLmltdWwoeixwdCl8MCxvPU1hdGguaW11bCh6LGJ0KTt2YXIganQ9KHUrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO3JldHVybiB1PShvKyhpPj4+MTMpfDApKyhqdD4+PjI2KXwwLGp0Jj02NzEwODg2MyxzWzBdPXZ0LHNbMV09eXQsc1syXT1tdCxzWzNdPWd0LHNbNF09d3Qsc1s1XT1fdCxzWzZdPU10LHNbN109U3Qsc1s4XT1FdCxzWzldPUF0LHNbMTBdPWt0LHNbMTFdPXh0LHNbMTJdPUl0LHNbMTNdPUJ0LHNbMTRdPU90LHNbMTVdPVJ0LHNbMTZdPVB0LHNbMTddPVR0LHNbMThdPWp0LDAhPT11JiYoc1sxOV09dSxyLmxlbmd0aCsrKSxyfTtNYXRoLmltdWx8fChFPXUpLG8ucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10aGlzLmxlbmd0aCt0Lmxlbmd0aDtyZXR1cm4gcj0xMD09PXRoaXMubGVuZ3RoJiYxMD09PXQubGVuZ3RoP0UodGhpcyx0LGUpOm48NjM/dSh0aGlzLHQsZSk6bjwxMDI0P2godGhpcyx0LGUpOmModGhpcyx0LGUpfSxkLnByb3RvdHlwZS5tYWtlUkJUPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodCkscj1vLnByb3RvdHlwZS5fY291bnRCaXRzKHQpLTEsbj0wO248dDtuKyspZVtuXT10aGlzLnJldkJpbihuLHIsdCk7cmV0dXJuIGV9LGQucHJvdG90eXBlLnJldkJpbj1mdW5jdGlvbih0LGUscil7aWYoMD09PXR8fHQ9PT1yLTEpcmV0dXJuIHQ7Zm9yKHZhciBuPTAsaT0wO2k8ZTtpKyspbnw9KDEmdCk8PGUtaS0xLHQ+Pj0xO3JldHVybiBufSxkLnByb3RvdHlwZS5wZXJtdXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXtmb3IodmFyIGE9MDthPG87YSsrKW5bYV09ZVt0W2FdXSxpW2FdPXJbdFthXV19LGQucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUscixuLGksbyl7dGhpcy5wZXJtdXRlKG8sdCxlLHIsbixpKTtmb3IodmFyIGE9MTthPGk7YTw8PTEpZm9yKHZhciBmPWE8PDEscz1NYXRoLmNvcygyKk1hdGguUEkvZiksdT1NYXRoLnNpbigyKk1hdGguUEkvZiksaD0wO2g8aTtoKz1mKWZvcih2YXIgYz1zLGQ9dSxsPTA7bDxhO2wrKyl7dmFyIHA9cltoK2xdLGI9bltoK2xdLHY9cltoK2wrYV0seT1uW2grbCthXSxtPWMqdi1kKnk7eT1jKnkrZCp2LHY9bSxyW2grbF09cCt2LG5baCtsXT1iK3kscltoK2wrYV09cC12LG5baCtsK2FdPWIteSxcbmwhPT1mJiYobT1zKmMtdSpkLGQ9cypkK3UqYyxjPW0pfX0sZC5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24odCxlKXt2YXIgcj0xfE1hdGgubWF4KGUsdCksbj0xJnIsaT0wO2ZvcihyPXIvMnwwO3I7cj4+Pj0xKWkrKztyZXR1cm4gMTw8aSsxK259LGQucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbih0LGUscil7aWYoIShyPD0xKSlmb3IodmFyIG49MDtuPHIvMjtuKyspe3ZhciBpPXRbbl07dFtuXT10W3Itbi0xXSx0W3Itbi0xXT1pLGk9ZVtuXSxlW25dPS1lW3Itbi0xXSxlW3Itbi0xXT0taX19LGQucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49MDtuPGUvMjtuKyspe3ZhciBpPTgxOTIqTWF0aC5yb3VuZCh0WzIqbisxXS9lKStNYXRoLnJvdW5kKHRbMipuXS9lKStyO3Rbbl09NjcxMDg4NjMmaSxyPWk8NjcxMDg4NjQ/MDppLzY3MTA4ODY0fDB9cmV0dXJuIHR9LGQucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKHZhciBvPTAsYT0wO2E8ZTthKyspbys9MHx0W2FdLHJbMiphXT04MTkxJm8sbz4+Pj0xMyxyWzIqYSsxXT04MTkxJm8sbz4+Pj0xMztmb3IoYT0yKmU7YTxpOysrYSlyW2FdPTA7bigwPT09byksbigwPT09KG8mLTgxOTIpKX0sZC5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09MDtyZXR1cm4gZX0sZC5wcm90b3R5cGUubXVscD1mdW5jdGlvbih0LGUscil7dmFyIG49Mip0aGlzLmd1ZXNzTGVuMTNiKHQubGVuZ3RoLGUubGVuZ3RoKSxpPXRoaXMubWFrZVJCVChuKSxvPXRoaXMuc3R1YihuKSxhPW5ldyBBcnJheShuKSxmPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSx1PW5ldyBBcnJheShuKSxoPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKSxkPXIud29yZHM7ZC5sZW5ndGg9bix0aGlzLmNvbnZlcnQxM2IodC53b3Jkcyx0Lmxlbmd0aCxhLG4pLHRoaXMuY29udmVydDEzYihlLndvcmRzLGUubGVuZ3RoLHUsbiksdGhpcy50cmFuc2Zvcm0oYSxvLGYscyxuLGkpLHRoaXMudHJhbnNmb3JtKHUsbyxoLGMsbixpKTtmb3IodmFyIGw9MDtsPG47bCsrKXt2YXIgcD1mW2xdKmhbbF0tc1tsXSpjW2xdO3NbbF09ZltsXSpjW2xdK3NbbF0qaFtsXSxmW2xdPXB9cmV0dXJuIHRoaXMuY29uanVnYXRlKGYscyxuKSx0aGlzLnRyYW5zZm9ybShmLHMsZCxvLG4saSksdGhpcy5jb25qdWdhdGUoZCxvLG4pLHRoaXMubm9ybWFsaXplMTNiKGQsbiksci5uZWdhdGl2ZT10Lm5lZ2F0aXZlXmUubmVnYXRpdmUsci5sZW5ndGg9dC5sZW5ndGgrZS5sZW5ndGgsci5zdHJpcCgpfSxvLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSx0aGlzLm11bFRvKHQsZSl9LG8ucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK3QubGVuZ3RoKSxjKHRoaXMsdCxlKX0sby5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKHQsdGhpcyl9LG8ucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQpLG4odDw2NzEwODg2NCk7Zm9yKHZhciBlPTAscj0wO3I8dGhpcy5sZW5ndGg7cisrKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSp0LG89KDY3MTA4ODYzJmkpKyg2NzEwODg2MyZlKTtlPj49MjYsZSs9aS82NzEwODg2NHwwLGUrPW8+Pj4yNix0aGlzLndvcmRzW3JdPTY3MTA4ODYzJm99cmV0dXJuIDAhPT1lJiYodGhpcy53b3Jkc1tyXT1lLHRoaXMubGVuZ3RoKyspLHRoaXN9LG8ucHJvdG90eXBlLm11bG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbih0KX0sby5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXVsKHRoaXMpfSxvLnByb3RvdHlwZS5pc3FyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpfSxvLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24odCl7dmFyIGU9cyh0KTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG5ldyBvKDEpO2Zvcih2YXIgcj10aGlzLG49MDtuPGUubGVuZ3RoJiYwPT09ZVtuXTtuKysscj1yLnNxcigpKTtpZigrK248ZS5sZW5ndGgpZm9yKHZhciBpPXIuc3FyKCk7bjxlLmxlbmd0aDtuKyssaT1pLnNxcigpKTAhPT1lW25dJiYocj1yLm11bChpKSk7cmV0dXJuIHJ9LG8ucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZSxyPXQlMjYsaT0odC1yKS8yNixvPTY3MTA4ODYzPj4+MjYtcjw8MjYtcjtpZigwIT09cil7dmFyIGE9MDtmb3IoZT0wO2U8dGhpcy5sZW5ndGg7ZSsrKXt2YXIgZj10aGlzLndvcmRzW2VdJm8scz0oMHx0aGlzLndvcmRzW2VdKS1mPDxyO3RoaXMud29yZHNbZV09c3xhLGE9Zj4+PjI2LXJ9YSYmKHRoaXMud29yZHNbZV09YSx0aGlzLmxlbmd0aCsrKX1pZigwIT09aSl7Zm9yKGU9dGhpcy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLndvcmRzW2UraV09dGhpcy53b3Jkc1tlXTtmb3IoZT0wO2U8aTtlKyspdGhpcy53b3Jkc1tlXT0wO3RoaXMubGVuZ3RoKz1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiBuKDA9PT10aGlzLm5lZ2F0aXZlKSx0aGlzLml1c2hsbih0KX0sby5wcm90b3R5cGUuaXVzaHJuPWZ1bmN0aW9uKHQsZSxyKXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgaTtpPWU/KGUtZSUyNikvMjY6MDt2YXIgbz10JTI2LGE9TWF0aC5taW4oKHQtbykvMjYsdGhpcy5sZW5ndGgpLGY9NjcxMDg4NjNeNjcxMDg4NjM+Pj5vPDxvLHM9cjtpZihpLT1hLGk9TWF0aC5tYXgoMCxpKSxzKXtmb3IodmFyIHU9MDt1PGE7dSsrKXMud29yZHNbdV09dGhpcy53b3Jkc1t1XTtzLmxlbmd0aD1hfWlmKDA9PT1hKTtlbHNlIGlmKHRoaXMubGVuZ3RoPmEpZm9yKHRoaXMubGVuZ3RoLT1hLHU9MDt1PHRoaXMubGVuZ3RoO3UrKyl0aGlzLndvcmRzW3VdPXRoaXMud29yZHNbdSthXTtlbHNlIHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xO3ZhciBoPTA7Zm9yKHU9dGhpcy5sZW5ndGgtMTt1Pj0wJiYoMCE9PWh8fHU+PWkpO3UtLSl7dmFyIGM9MHx0aGlzLndvcmRzW3VdO3RoaXMud29yZHNbdV09aDw8MjYtb3xjPj4+byxoPWMmZn1yZXR1cm4gcyYmMCE9PWgmJihzLndvcmRzW3MubGVuZ3RoKytdPWgpLDA9PT10aGlzLmxlbmd0aCYmKHRoaXMud29yZHNbMF09MCx0aGlzLmxlbmd0aD0xKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLmlzaHJuPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbigwPT09dGhpcy5uZWdhdGl2ZSksdGhpcy5pdXNocm4odCxlLHIpfSxvLnByb3RvdHlwZS5zaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNobG4odCl9LG8ucHJvdG90eXBlLnVzaGxuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKHQpfSxvLnByb3RvdHlwZS5zaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXNocm4odCl9LG8ucHJvdG90eXBlLnVzaHJuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKHQpfSxvLnByb3RvdHlwZS50ZXN0bj1mdW5jdGlvbih0KXtuKFwibnVtYmVyXCI9PXR5cGVvZiB0JiZ0Pj0wKTt2YXIgZT10JTI2LHI9KHQtZSkvMjYsaT0xPDxlO2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiExO3ZhciBvPXRoaXMud29yZHNbcl07cmV0dXJuISEobyZpKX0sby5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKHQpe24oXCJudW1iZXJcIj09dHlwZW9mIHQmJnQ+PTApO3ZhciBlPXQlMjYscj0odC1lKS8yNjtpZihuKDA9PT10aGlzLm5lZ2F0aXZlLFwiaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzXCIpLHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzO2lmKDAhPT1lJiZyKyssdGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCksMCE9PWUpe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+ZTw8ZTt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKHQpfSxvLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbih0KXtyZXR1cm4gbihcIm51bWJlclwiPT10eXBlb2YgdCksbih0PDY3MTA4ODY0KSx0PDA/dGhpcy5pc3VibigtdCk6MCE9PXRoaXMubmVnYXRpdmU/MT09PXRoaXMubGVuZ3RoJiYoMHx0aGlzLndvcmRzWzBdKTx0Pyh0aGlzLndvcmRzWzBdPXQtKDB8dGhpcy53b3Jkc1swXSksdGhpcy5uZWdhdGl2ZT0wLHRoaXMpOih0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pc3Vibih0KSx0aGlzLm5lZ2F0aXZlPTEsdGhpcyk6dGhpcy5faWFkZG4odCl9LG8ucHJvdG90eXBlLl9pYWRkbj1mdW5jdGlvbih0KXt0aGlzLndvcmRzWzBdKz10O2Zvcih2YXIgZT0wO2U8dGhpcy5sZW5ndGgmJnRoaXMud29yZHNbZV0+PTY3MTA4ODY0O2UrKyl0aGlzLndvcmRzW2VdLT02NzEwODg2NCxlPT09dGhpcy5sZW5ndGgtMT90aGlzLndvcmRzW2UrMV09MTp0aGlzLndvcmRzW2UrMV0rKztyZXR1cm4gdGhpcy5sZW5ndGg9TWF0aC5tYXgodGhpcy5sZW5ndGgsZSsxKSx0aGlzfSxvLnByb3RvdHlwZS5pc3Vibj1mdW5jdGlvbih0KXtpZihuKFwibnVtYmVyXCI9PXR5cGVvZiB0KSxuKHQ8NjcxMDg4NjQpLHQ8MClyZXR1cm4gdGhpcy5pYWRkbigtdCk7aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGRuKHQpLHRoaXMubmVnYXRpdmU9MSx0aGlzO2lmKHRoaXMud29yZHNbMF0tPXQsMT09PXRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzWzBdPDApdGhpcy53b3Jkc1swXT0tdGhpcy53b3Jkc1swXSx0aGlzLm5lZ2F0aXZlPTE7ZWxzZSBmb3IodmFyIGU9MDtlPHRoaXMubGVuZ3RoJiZ0aGlzLndvcmRzW2VdPDA7ZSsrKXRoaXMud29yZHNbZV0rPTY3MTA4ODY0LHRoaXMud29yZHNbZSsxXS09MTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5hZGRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNsb25lKCkuaWFkZG4odCl9LG8ucHJvdG90eXBlLnN1Ym49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pc3Vibih0KX0sby5wcm90b3R5cGUuaWFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpc30sby5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCl9LG8ucHJvdG90eXBlLl9pc2hsbnN1Ym11bD1mdW5jdGlvbih0LGUscil7dmFyIGksbz10Lmxlbmd0aCtyO3RoaXMuX2V4cGFuZChvKTt2YXIgYSxmPTA7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyl7YT0oMHx0aGlzLndvcmRzW2krcl0pK2Y7dmFyIHM9KDB8dC53b3Jkc1tpXSkqZTthLT02NzEwODg2MyZzLGY9KGE+PjI2KS0ocy82NzEwODg2NHwwKSx0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYX1mb3IoO2k8dGhpcy5sZW5ndGgtcjtpKyspYT0oMHx0aGlzLndvcmRzW2krcl0pK2YsZj1hPj4yNix0aGlzLndvcmRzW2krcl09NjcxMDg4NjMmYTtpZigwPT09ZilyZXR1cm4gdGhpcy5zdHJpcCgpO2ZvcihuKGY9PT0tMSksZj0wLGk9MDtpPHRoaXMubGVuZ3RoO2krKylhPS0oMHx0aGlzLndvcmRzW2ldKStmLGY9YT4+MjYsdGhpcy53b3Jkc1tpXT02NzEwODg2MyZhO3JldHVybiB0aGlzLm5lZ2F0aXZlPTEsdGhpcy5zdHJpcCgpfSxvLnByb3RvdHlwZS5fd29yZERpdj1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMubGVuZ3RoLXQubGVuZ3RoLG49dGhpcy5jbG9uZSgpLGk9dCxhPTB8aS53b3Jkc1tpLmxlbmd0aC0xXSxmPXRoaXMuX2NvdW50Qml0cyhhKTtyPTI2LWYsMCE9PXImJihpPWkudXNobG4ociksbi5pdXNobG4ociksYT0wfGkud29yZHNbaS5sZW5ndGgtMV0pO3ZhciBzLHU9bi5sZW5ndGgtaS5sZW5ndGg7aWYoXCJtb2RcIiE9PWUpe3M9bmV3IG8obnVsbCkscy5sZW5ndGg9dSsxLHMud29yZHM9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IodmFyIGg9MDtoPHMubGVuZ3RoO2grKylzLndvcmRzW2hdPTB9dmFyIGM9bi5jbG9uZSgpLl9pc2hsbnN1Ym11bChpLDEsdSk7MD09PWMubmVnYXRpdmUmJihuPWMscyYmKHMud29yZHNbdV09MSkpO2Zvcih2YXIgZD11LTE7ZD49MDtkLS0pe3ZhciBsPTY3MTA4ODY0KigwfG4ud29yZHNbaS5sZW5ndGgrZF0pKygwfG4ud29yZHNbaS5sZW5ndGgrZC0xXSk7Zm9yKGw9TWF0aC5taW4obC9hfDAsNjcxMDg4NjMpLG4uX2lzaGxuc3VibXVsKGksbCxkKTswIT09bi5uZWdhdGl2ZTspbC0tLG4ubmVnYXRpdmU9MCxuLl9pc2hsbnN1Ym11bChpLDEsZCksbi5pc1plcm8oKXx8KG4ubmVnYXRpdmVePTEpO3MmJihzLndvcmRzW2RdPWwpfXJldHVybiBzJiZzLnN0cmlwKCksbi5zdHJpcCgpLFwiZGl2XCIhPT1lJiYwIT09ciYmbi5pdXNocm4ocikse2RpdjpzfHxudWxsLG1vZDpufX0sby5wcm90b3R5cGUuZGl2bW9kPWZ1bmN0aW9uKHQsZSxyKXtpZihuKCF0LmlzWmVybygpKSx0aGlzLmlzWmVybygpKXJldHVybntkaXY6bmV3IG8oMCksbW9kOm5ldyBvKDApfTt2YXIgaSxhLGY7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZT8oZj10aGlzLm5lZygpLmRpdm1vZCh0LGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSksXCJkaXZcIiE9PWUmJihhPWYubW9kLm5lZygpLHImJjAhPT1hLm5lZ2F0aXZlJiZhLmlhZGQodCkpLHtkaXY6aSxtb2Q6YX0pOjA9PT10aGlzLm5lZ2F0aXZlJiYwIT09dC5uZWdhdGl2ZT8oZj10aGlzLmRpdm1vZCh0Lm5lZygpLGUpLFwibW9kXCIhPT1lJiYoaT1mLmRpdi5uZWcoKSkse2RpdjppLG1vZDpmLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZ0Lm5lZ2F0aXZlKT8oZj10aGlzLm5lZygpLmRpdm1vZCh0Lm5lZygpLGUpLFwiZGl2XCIhPT1lJiYoYT1mLm1vZC5uZWcoKSxyJiYwIT09YS5uZWdhdGl2ZSYmYS5pc3ViKHQpKSx7ZGl2OmYuZGl2LG1vZDphfSk6dC5sZW5ndGg+dGhpcy5sZW5ndGh8fHRoaXMuY21wKHQpPDA/e2RpdjpuZXcgbygwKSxtb2Q6dGhpc306MT09PXQubGVuZ3RoP1wiZGl2XCI9PT1lP3tkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpudWxsfTpcIm1vZFwiPT09ZT97ZGl2Om51bGwsbW9kOm5ldyBvKHRoaXMubW9kbih0LndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKHQud29yZHNbMF0pLG1vZDpuZXcgbyh0aGlzLm1vZG4odC53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KHQsZSl9LG8ucHJvdG90eXBlLmRpdj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcImRpdlwiLCExKS5kaXZ9LG8ucHJvdG90eXBlLm1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXZtb2QodCxcIm1vZFwiLCExKS5tb2R9LG8ucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGl2bW9kKHQsXCJtb2RcIiwhMCkubW9kfSxvLnByb3RvdHlwZS5kaXZSb3VuZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRpdm1vZCh0KTtpZihlLm1vZC5pc1plcm8oKSlyZXR1cm4gZS5kaXY7dmFyIHI9MCE9PWUuZGl2Lm5lZ2F0aXZlP2UubW9kLmlzdWIodCk6ZS5tb2Qsbj10LnVzaHJuKDEpLGk9dC5hbmRsbigxKSxvPXIuY21wKG4pO3JldHVybiBvPDB8fDE9PT1pJiYwPT09bz9lLmRpdjowIT09ZS5kaXYubmVnYXRpdmU/ZS5kaXYuaXN1Ym4oMSk6ZS5kaXYuaWFkZG4oMSl9LG8ucHJvdG90eXBlLm1vZG49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPSgxPDwyNikldCxyPTAsaT10aGlzLmxlbmd0aC0xO2k+PTA7aS0tKXI9KGUqcisoMHx0aGlzLndvcmRzW2ldKSkldDtyZXR1cm4gcn0sby5wcm90b3R5cGUuaWRpdm49ZnVuY3Rpb24odCl7bih0PD02NzEwODg2Myk7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgaT0oMHx0aGlzLndvcmRzW3JdKSs2NzEwODg2NCplO3RoaXMud29yZHNbcl09aS90fDAsZT1pJXR9cmV0dXJuIHRoaXMuc3RyaXAoKX0sby5wcm90b3R5cGUuZGl2bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKHQpfSxvLnByb3RvdHlwZS5lZ2NkPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9bmV3IG8oMCkscz1uZXcgbygxKSx1PTA7ZS5pc0V2ZW4oKSYmci5pc0V2ZW4oKTspZS5pdXNocm4oMSksci5pdXNocm4oMSksKyt1O2Zvcih2YXIgaD1yLmNsb25lKCksYz1lLmNsb25lKCk7IWUuaXNaZXJvKCk7KXtmb3IodmFyIGQ9MCxsPTE7MD09PShlLndvcmRzWzBdJmwpJiZkPDI2OysrZCxsPDw9MSk7aWYoZD4wKWZvcihlLml1c2hybihkKTtkLS0gPjA7KShpLmlzT2RkKCl8fGEuaXNPZGQoKSkmJihpLmlhZGQoaCksYS5pc3ViKGMpKSxpLml1c2hybigxKSxhLml1c2hybigxKTtmb3IodmFyIHA9MCxiPTE7MD09PShyLndvcmRzWzBdJmIpJiZwPDI2OysrcCxiPDw9MSk7aWYocD4wKWZvcihyLml1c2hybihwKTtwLS0gPjA7KShmLmlzT2RkKCl8fHMuaXNPZGQoKSkmJihmLmlhZGQoaCkscy5pc3ViKGMpKSxmLml1c2hybigxKSxzLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihmKSxhLmlzdWIocykpOihyLmlzdWIoZSksZi5pc3ViKGkpLHMuaXN1YihhKSl9cmV0dXJue2E6ZixiOnMsZ2NkOnIuaXVzaGxuKHUpfX0sby5wcm90b3R5cGUuX2ludm1wPWZ1bmN0aW9uKHQpe24oMD09PXQubmVnYXRpdmUpLG4oIXQuaXNaZXJvKCkpO3ZhciBlPXRoaXMscj10LmNsb25lKCk7ZT0wIT09ZS5uZWdhdGl2ZT9lLnVtb2QodCk6ZS5jbG9uZSgpO2Zvcih2YXIgaT1uZXcgbygxKSxhPW5ldyBvKDApLGY9ci5jbG9uZSgpO2UuY21wbigxKT4wJiZyLmNtcG4oMSk+MDspe2Zvcih2YXIgcz0wLHU9MTswPT09KGUud29yZHNbMF0mdSkmJnM8MjY7KytzLHU8PD0xKTtpZihzPjApZm9yKGUuaXVzaHJuKHMpO3MtLSA+MDspaS5pc09kZCgpJiZpLmlhZGQoZiksaS5pdXNocm4oMSk7Zm9yKHZhciBoPTAsYz0xOzA9PT0oci53b3Jkc1swXSZjKSYmaDwyNjsrK2gsYzw8PTEpO2lmKGg+MClmb3Ioci5pdXNocm4oaCk7aC0tID4wOylhLmlzT2RkKCkmJmEuaWFkZChmKSxhLml1c2hybigxKTtlLmNtcChyKT49MD8oZS5pc3ViKHIpLGkuaXN1YihhKSk6KHIuaXN1YihlKSxhLmlzdWIoaSkpfXZhciBkO3JldHVybiBkPTA9PT1lLmNtcG4oMSk/aTphLGQuY21wbigwKTwwJiZkLmlhZGQodCksZH0sby5wcm90b3R5cGUuZ2NkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHQuYWJzKCk7aWYodC5pc1plcm8oKSlyZXR1cm4gdGhpcy5hYnMoKTt2YXIgZT10aGlzLmNsb25lKCkscj10LmNsb25lKCk7ZS5uZWdhdGl2ZT0wLHIubmVnYXRpdmU9MDtmb3IodmFyIG49MDtlLmlzRXZlbigpJiZyLmlzRXZlbigpO24rKyllLml1c2hybigxKSxyLml1c2hybigxKTtmb3IoOzspe2Zvcig7ZS5pc0V2ZW4oKTspZS5pdXNocm4oMSk7Zm9yKDtyLmlzRXZlbigpOylyLml1c2hybigxKTt2YXIgaT1lLmNtcChyKTtpZihpPDApe3ZhciBvPWU7ZT1yLHI9b31lbHNlIGlmKDA9PT1pfHwwPT09ci5jbXBuKDEpKWJyZWFrO2UuaXN1YihyKX1yZXR1cm4gci5pdXNobG4obil9LG8ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWdjZCh0KS5hLnVtb2QodCl9LG8ucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT09KDEmdGhpcy53b3Jkc1swXSl9LG8ucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLndvcmRzWzBdKX0sby5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMud29yZHNbMF0mdH0sby5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24odCl7bihcIm51bWJlclwiPT10eXBlb2YgdCk7dmFyIGU9dCUyNixyPSh0LWUpLzI2LGk9MTw8ZTtpZih0aGlzLmxlbmd0aDw9cilyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXXw9aSx0aGlzO2Zvcih2YXIgbz1pLGE9cjswIT09byYmYTx0aGlzLmxlbmd0aDthKyspe3ZhciBmPTB8dGhpcy53b3Jkc1thXTtmKz1vLG89Zj4+PjI2LGYmPTY3MTA4ODYzLHRoaXMud29yZHNbYV09Zn1yZXR1cm4gMCE9PW8mJih0aGlzLndvcmRzW2FdPW8sdGhpcy5sZW5ndGgrKyksdGhpc30sby5wcm90b3R5cGUuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT10aGlzLmxlbmd0aCYmMD09PXRoaXMud29yZHNbMF19LG8ucHJvdG90eXBlLmNtcG49ZnVuY3Rpb24odCl7dmFyIGU9dDwwO2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYhZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmZSlyZXR1cm4gMTt0aGlzLnN0cmlwKCk7dmFyIHI7aWYodGhpcy5sZW5ndGg+MSlyPTE7ZWxzZXtlJiYodD0tdCksbih0PD02NzEwODg2MyxcIk51bWJlciBpcyB0b28gYmlnXCIpO3ZhciBpPTB8dGhpcy53b3Jkc1swXTtyPWk9PT10PzA6aTx0Py0xOjF9cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXI6cn0sby5wcm90b3R5cGUuY21wPWZ1bmN0aW9uKHQpe2lmKDAhPT10aGlzLm5lZ2F0aXZlJiYwPT09dC5uZWdhdGl2ZSlyZXR1cm4tMTtpZigwPT09dGhpcy5uZWdhdGl2ZSYmMCE9PXQubmVnYXRpdmUpcmV0dXJuIDE7dmFyIGU9dGhpcy51Y21wKHQpO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZT8wfC1lOmV9LG8ucHJvdG90eXBlLnVjbXA9ZnVuY3Rpb24odCl7aWYodGhpcy5sZW5ndGg+dC5sZW5ndGgpcmV0dXJuIDE7aWYodGhpcy5sZW5ndGg8dC5sZW5ndGgpcmV0dXJuLTE7Zm9yKHZhciBlPTAscj10aGlzLmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbj0wfHRoaXMud29yZHNbcl0saT0wfHQud29yZHNbcl07aWYobiE9PWkpe248aT9lPS0xOm4+aSYmKGU9MSk7YnJlYWt9fXJldHVybiBlfSxvLnByb3RvdHlwZS5ndG49ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10aGlzLmNtcG4odCl9LG8ucHJvdG90eXBlLmd0PWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dGhpcy5jbXAodCl9LG8ucHJvdG90eXBlLmd0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KT49MH0sby5wcm90b3R5cGUuZ3RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KT49MH0sby5wcm90b3R5cGUubHRuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcG4odCk9PT0tMX0sby5wcm90b3R5cGUubHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wKHQpPT09LTF9LG8ucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY21wbih0KTw9MH0sby5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNtcCh0KTw9MH0sby5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5jbXBuKHQpfSxvLnByb3RvdHlwZS5lcT1mdW5jdGlvbih0KXtyZXR1cm4gMD09PXRoaXMuY21wKHQpfSxvLnJlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG0odCl9LG8ucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksbigwPT09dGhpcy5uZWdhdGl2ZSxcInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzXCIpLHQuY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZCh0KX0sby5wcm90b3R5cGUuZnJvbVJlZD1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwiZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dFwiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sby5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlZD10LHRoaXN9LG8ucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKHQpe3JldHVybiBuKCF0aGlzLnJlZCxcIkFscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHRcIiksdGhpcy5fZm9yY2VSZWQodCl9LG8ucHJvdG90eXBlLnJlZEFkZD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElBZGQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pYWRkKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZElTdWI9ZnVuY3Rpb24odCl7cmV0dXJuIG4odGhpcy5yZWQsXCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5pc3ViKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNobD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuc2hsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5tdWwodGhpcyx0KX0sby5wcm90b3R5cGUucmVkSU11bD1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIiksdGhpcy5yZWQuX3ZlcmlmeTIodGhpcyx0KSx0aGlzLnJlZC5pbXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLnJlZFNxcj1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmlzcXIodGhpcyl9LG8ucHJvdG90eXBlLnJlZFNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLnNxcnQodGhpcyl9LG8ucHJvdG90eXBlLnJlZEludm09ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCxcInJlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzXCIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LG8ucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLFwicmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5uZWcodGhpcyl9LG8ucHJvdG90eXBlLnJlZFBvdz1mdW5jdGlvbih0KXtyZXR1cm4gbih0aGlzLnJlZCYmIXQucmVkLFwicmVkUG93KG5vcm1hbE51bSlcIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQucG93KHRoaXMsdCl9O3ZhciBBPXtrMjU2Om51bGwscDIyNDpudWxsLHAxOTI6bnVsbCxwMjU1MTk6bnVsbH07bC5wcm90b3R5cGUuX3RtcD1mdW5jdGlvbigpe3ZhciB0PW5ldyBvKG51bGwpO3JldHVybiB0LndvcmRzPW5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uLzEzKSksdH0sbC5wcm90b3R5cGUuaXJlZHVjZT1mdW5jdGlvbih0KXt2YXIgZSxyPXQ7ZG8gdGhpcy5zcGxpdChyLHRoaXMudG1wKSxyPXRoaXMuaW11bEsocikscj1yLmlhZGQodGhpcy50bXApLGU9ci5iaXRMZW5ndGgoKTt3aGlsZShlPnRoaXMubik7dmFyIG49ZTx0aGlzLm4/LTE6ci51Y21wKHRoaXMucCk7cmV0dXJuIDA9PT1uPyhyLndvcmRzWzBdPTAsci5sZW5ndGg9MSk6bj4wP3IuaXN1Yih0aGlzLnApOnIuc3RyaXAoKSxyfSxsLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe3QuaXVzaHJuKHRoaXMubiwwLGUpfSxsLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtyZXR1cm4gdC5pbXVsKHRoaXMuayl9LGkocCxsKSxwLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj00MTk0MzAzLG49TWF0aC5taW4odC5sZW5ndGgsOSksaT0wO2k8bjtpKyspZS53b3Jkc1tpXT10LndvcmRzW2ldO2lmKGUubGVuZ3RoPW4sdC5sZW5ndGg8PTkpcmV0dXJuIHQud29yZHNbMF09MCx2b2lkKHQubGVuZ3RoPTEpO3ZhciBvPXQud29yZHNbOV07Zm9yKGUud29yZHNbZS5sZW5ndGgrK109byZyLGk9MTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBhPTB8dC53b3Jkc1tpXTt0LndvcmRzW2ktMTBdPShhJnIpPDw0fG8+Pj4yMixvPWF9bz4+Pj0yMix0LndvcmRzW2ktMTBdPW8sMD09PW8mJnQubGVuZ3RoPjEwP3QubGVuZ3RoLT0xMDp0Lmxlbmd0aC09OX0scC5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24odCl7dC53b3Jkc1t0Lmxlbmd0aF09MCx0LndvcmRzW3QubGVuZ3RoKzFdPTAsdC5sZW5ndGgrPTI7Zm9yKHZhciBlPTAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj0wfHQud29yZHNbcl07ZSs9OTc3Km4sdC53b3Jkc1tyXT02NzEwODg2MyZlLGU9NjQqbisoZS82NzEwODg2NHwwKX1yZXR1cm4gMD09PXQud29yZHNbdC5sZW5ndGgtMV0mJih0Lmxlbmd0aC0tLDA9PT10LndvcmRzW3QubGVuZ3RoLTFdJiZ0Lmxlbmd0aC0tKSx0fSxpKGIsbCksaSh2LGwpLGkoeSxsKSx5LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfHQud29yZHNbcl0pK2UsaT02NzEwODg2MyZuO24+Pj49MjYsdC53b3Jkc1tyXT1pLGU9bn1yZXR1cm4gMCE9PWUmJih0LndvcmRzW3QubGVuZ3RoKytdPWUpLHR9LG8uX3ByaW1lPWZ1bmN0aW9uIHQoZSl7aWYoQVtlXSlyZXR1cm4gQVtlXTt2YXIgdDtpZihcImsyNTZcIj09PWUpdD1uZXcgcDtlbHNlIGlmKFwicDIyNFwiPT09ZSl0PW5ldyBiO2Vsc2UgaWYoXCJwMTkyXCI9PT1lKXQ9bmV3IHY7ZWxzZXtpZihcInAyNTUxOVwiIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHByaW1lIFwiK2UpO3Q9bmV3IHl9cmV0dXJuIEFbZV09dCx0fSxtLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbih0KXtuKDA9PT10Lm5lZ2F0aXZlLFwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXNcIiksbih0LnJlZCxcInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnNcIil9LG0ucHJvdG90eXBlLl92ZXJpZnkyPWZ1bmN0aW9uKHQsZSl7bigwPT09KHQubmVnYXRpdmV8ZS5uZWdhdGl2ZSksXCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlc1wiKSxuKHQucmVkJiZ0LnJlZD09PWUucmVkLFwicmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVyc1wiKX0sbS5wcm90b3R5cGUuaW1vZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcmltZT90aGlzLnByaW1lLmlyZWR1Y2UodCkuX2ZvcmNlUmVkKHRoaXMpOnQudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlzWmVybygpP3QuY2xvbmUoKTp0aGlzLm0uc3ViKHQpLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuYWRkKGUpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sbS5wcm90b3R5cGUuaWFkZD1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LmlhZGQoZSk7cmV0dXJuIHIuY21wKHRoaXMubSk+PTAmJnIuaXN1Yih0aGlzLm0pLHJ9LG0ucHJvdG90eXBlLnN1Yj1mdW5jdGlvbih0LGUpe3RoaXMuX3ZlcmlmeTIodCxlKTt2YXIgcj10LnN1YihlKTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHIuX2ZvcmNlUmVkKHRoaXMpfSxtLnByb3RvdHlwZS5pc3ViPWZ1bmN0aW9uKHQsZSl7dGhpcy5fdmVyaWZ5Mih0LGUpO3ZhciByPXQuaXN1YihlKTtyZXR1cm4gci5jbXBuKDApPDAmJnIuaWFkZCh0aGlzLm0pLHJ9LG0ucHJvdG90eXBlLnNobD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkxKHQpLHRoaXMuaW1vZCh0LnVzaGxuKGUpKX0sbS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQuaW11bChlKSl9LG0ucHJvdG90eXBlLm11bD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl92ZXJpZnkyKHQsZSksdGhpcy5pbW9kKHQubXVsKGUpKX0sbS5wcm90b3R5cGUuaXNxcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbXVsKHQsdC5jbG9uZSgpKX0sbS5wcm90b3R5cGUuc3FyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm11bCh0LHQpfSxtLnByb3RvdHlwZS5zcXJ0PWZ1bmN0aW9uKHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIHQuY2xvbmUoKTt2YXIgZT10aGlzLm0uYW5kbG4oMyk7aWYobihlJTI9PT0xKSwzPT09ZSl7dmFyIHI9dGhpcy5tLmFkZChuZXcgbygxKSkuaXVzaHJuKDIpO3JldHVybiB0aGlzLnBvdyh0LHIpfWZvcih2YXIgaT10aGlzLm0uc3VibigxKSxhPTA7IWkuaXNaZXJvKCkmJjA9PT1pLmFuZGxuKDEpOylhKyssaS5pdXNocm4oMSk7bighaS5pc1plcm8oKSk7dmFyIGY9bmV3IG8oMSkudG9SZWQodGhpcykscz1mLnJlZE5lZygpLHU9dGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpLGg9dGhpcy5tLmJpdExlbmd0aCgpO2ZvcihoPW5ldyBvKDIqaCpoKS50b1JlZCh0aGlzKTswIT09dGhpcy5wb3coaCx1KS5jbXAocyk7KWgucmVkSUFkZChzKTtmb3IodmFyIGM9dGhpcy5wb3coaCxpKSxkPXRoaXMucG93KHQsaS5hZGRuKDEpLml1c2hybigxKSksbD10aGlzLnBvdyh0LGkpLHA9YTswIT09bC5jbXAoZik7KXtmb3IodmFyIGI9bCx2PTA7MCE9PWIuY21wKGYpO3YrKyliPWIucmVkU3FyKCk7bih2PHApO3ZhciB5PXRoaXMucG93KGMsbmV3IG8oMSkuaXVzaGxuKHAtdi0xKSk7ZD1kLnJlZE11bCh5KSxjPXkucmVkU3FyKCksbD1sLnJlZE11bChjKSxwPXZ9cmV0dXJuIGR9LG0ucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7dmFyIGU9dC5faW52bXAodGhpcy5tKTtyZXR1cm4gMCE9PWUubmVnYXRpdmU/KGUubmVnYXRpdmU9MCx0aGlzLmltb2QoZSkucmVkTmVnKCkpOnRoaXMuaW1vZChlKX0sbS5wcm90b3R5cGUucG93PWZ1bmN0aW9uKHQsZSl7aWYoZS5pc1plcm8oKSlyZXR1cm4gbmV3IG8oMSk7aWYoMD09PWUuY21wbigxKSlyZXR1cm4gdC5jbG9uZSgpO3ZhciByPTQsbj1uZXcgQXJyYXkoMTw8cik7blswXT1uZXcgbygxKS50b1JlZCh0aGlzKSxuWzFdPXQ7Zm9yKHZhciBpPTI7aTxuLmxlbmd0aDtpKyspbltpXT10aGlzLm11bChuW2ktMV0sdCk7dmFyIGE9blswXSxmPTAscz0wLHU9ZS5iaXRMZW5ndGgoKSUyNjtmb3IoMD09PXUmJih1PTI2KSxpPWUubGVuZ3RoLTE7aT49MDtpLS0pe2Zvcih2YXIgaD1lLndvcmRzW2ldLGM9dS0xO2M+PTA7Yy0tKXt2YXIgZD1oPj5jJjE7YSE9PW5bMF0mJihhPXRoaXMuc3FyKGEpKSwwIT09ZHx8MCE9PWY/KGY8PD0xLGZ8PWQscysrLChzPT09cnx8MD09PWkmJjA9PT1jKSYmKGE9dGhpcy5tdWwoYSxuW2ZdKSxzPTAsZj0wKSk6cz0wfXU9MjZ9cmV0dXJuIGF9LG0ucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbih0KXt2YXIgZT10LnVtb2QodGhpcy5tKTtyZXR1cm4gZT09PXQ/ZS5jbG9uZSgpOmV9LG0ucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xvbmUoKTtyZXR1cm4gZS5yZWQ9bnVsbCxlfSxvLm1vbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBnKHQpfSxpKGcsbSksZy5wcm90b3R5cGUuY29udmVydFRvPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmltb2QodC51c2hsbih0aGlzLnNoaWZ0KSl9LGcucHJvdG90eXBlLmNvbnZlcnRGcm9tPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW1vZCh0Lm11bCh0aGlzLnJpbnYpKTtyZXR1cm4gZS5yZWQ9bnVsbCxlfSxnLnByb3RvdHlwZS5pbXVsPWZ1bmN0aW9uKHQsZSl7aWYodC5pc1plcm8oKXx8ZS5pc1plcm8oKSlyZXR1cm4gdC53b3Jkc1swXT0wLHQubGVuZ3RoPTEsdDt2YXIgcj10LmltdWwoZSksbj1yLm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKSxpPXIuaXN1YihuKS5pdXNocm4odGhpcy5zaGlmdCksbz1pO3JldHVybiBpLmNtcCh0aGlzLm0pPj0wP289aS5pc3ViKHRoaXMubSk6aS5jbXBuKDApPDAmJihvPWkuaWFkZCh0aGlzLm0pKSxvLl9mb3JjZVJlZCh0aGlzKX0sZy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7aWYodC5pc1plcm8oKXx8ZS5pc1plcm8oKSlyZXR1cm4gbmV3IG8oMCkuX2ZvcmNlUmVkKHRoaXMpO3ZhciByPXQubXVsKGUpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksaT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLGE9aTtyZXR1cm4gaS5jbXAodGhpcy5tKT49MD9hPWkuaXN1Yih0aGlzLm0pOmkuY21wbigwKTwwJiYoYT1pLmlhZGQodGhpcy5tKSksYS5fZm9yY2VSZWQodGhpcyl9LGcucHJvdG90eXBlLmludm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5pbW9kKHQuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtyZXR1cm4gZS5fZm9yY2VSZWQodGhpcyl9fShcInVuZGVmaW5lZFwiPT10eXBlb2YgdHx8dCx0aGlzKX0pLmNhbGwoZSxyKDkyKSh0KSl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCxuKXt2YXIgaT1yKDE0OSksbz1yKDU3Nik7ZS5wYmtkZjI9ZnVuY3Rpb24odCxyLG4saSxhLGYpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJihmPWEsYT12b2lkIDApLG8obixpKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBmKXRocm93IG5ldyBFcnJvcihcIk5vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMlwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZihudWxsLGUucGJrZGYyU3luYyh0LHIsbixpLGEpKX0pfTt2YXIgYTtpZih0LmJyb3dzZXIpYT1cInV0Zi04XCI7ZWxzZXt2YXIgZj1wYXJzZUludCh0LnZlcnNpb24uc3BsaXQoXCIuXCIpWzBdLnNsaWNlKDEpLDEwKTthPWY+PTY/XCJ1dGYtOFwiOlwiYmluYXJ5XCJ9ZS5wYmtkZjJTeW5jPWZ1bmN0aW9uKHQsZSxyLGYscyl7bi5pc0J1ZmZlcih0KXx8KHQ9bmV3IG4odCxhKSksbi5pc0J1ZmZlcihlKXx8KGU9bmV3IG4oZSxhKSksbyhyLGYpLHM9c3x8XCJzaGExXCI7dmFyIHUsaD0xLGM9bmV3IG4oZiksZD1uZXcgbihlLmxlbmd0aCs0KTtlLmNvcHkoZCwwLDAsZS5sZW5ndGgpO2Zvcih2YXIgbCxwLGI9MTtiPD1oO2IrKyl7ZC53cml0ZVVJbnQzMkJFKGIsZS5sZW5ndGgpO3ZhciB2PWkocyx0KS51cGRhdGUoZCkuZGlnZXN0KCk7dXx8KHU9di5sZW5ndGgscD1uZXcgbih1KSxoPU1hdGguY2VpbChmL3UpLGw9Zi0oaC0xKSp1KSx2LmNvcHkocCwwLDAsdSk7Zm9yKHZhciB5PTE7eTxyO3krKyl7dj1pKHMsdCkudXBkYXRlKHYpLmRpZ2VzdCgpO2Zvcih2YXIgbT0wO208dTttKyspcFttXV49dlttXX12YXIgZz0oYi0xKSp1LHc9Yj09PWg/bDp1O3AuY29weShjLGcsMCx3KX1yZXR1cm4gY319KS5jYWxsKGUscigyNikscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUpe2VbXCJhZXMtMTI4LWVjYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjowLG1vZGU6XCJFQ0JcIix0eXBlOlwiYmxvY2tcIn0sZVtcImFlcy0xOTItZWNiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjAsbW9kZTpcIkVDQlwiLHR5cGU6XCJibG9ja1wifSxlW1wiYWVzLTI1Ni1lY2JcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MCxtb2RlOlwiRUNCXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMTI4LWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMTkyLWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjE5MixpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGVbXCJhZXMtMjU2LWNiY1wiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjI1NixpdjoxNixtb2RlOlwiQ0JDXCIsdHlwZTpcImJsb2NrXCJ9LGUuYWVzMTI4PWVbXCJhZXMtMTI4LWNiY1wiXSxlLmFlczE5Mj1lW1wiYWVzLTE5Mi1jYmNcIl0sZS5hZXMyNTY9ZVtcImFlcy0yNTYtY2JjXCJdLGVbXCJhZXMtMTI4LWNmYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtY2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTkyLWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWNmYjhcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTYsbW9kZTpcIkNGQjhcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxMjgsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTkyLWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMjU2LWNmYjFcIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTYsbW9kZTpcIkNGQjFcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LW9mYlwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiT0ZCXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1vZmJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIk9GQlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtb2ZiXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJPRkJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWN0clwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxNixtb2RlOlwiQ1RSXCIsdHlwZTpcInN0cmVhbVwifSxlW1wiYWVzLTE5Mi1jdHJcIl09e2NpcGhlcjpcIkFFU1wiLGtleToxOTIsaXY6MTYsbW9kZTpcIkNUUlwiLHR5cGU6XCJzdHJlYW1cIn0sZVtcImFlcy0yNTYtY3RyXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MjU2LGl2OjE2LG1vZGU6XCJDVFJcIix0eXBlOlwic3RyZWFtXCJ9LGVbXCJhZXMtMTI4LWdjbVwiXT17Y2lwaGVyOlwiQUVTXCIsa2V5OjEyOCxpdjoxMixtb2RlOlwiR0NNXCIsdHlwZTpcImF1dGhcIn0sZVtcImFlcy0xOTItZ2NtXCJdPXtjaXBoZXI6XCJBRVNcIixrZXk6MTkyLGl2OjEyLG1vZGU6XCJHQ01cIix0eXBlOlwiYXV0aFwifSxlW1wiYWVzLTI1Ni1nY21cIl09e2NpcGhlcjpcIkFFU1wiLGtleToyNTYsaXY6MTIsbW9kZTpcIkdDTVwiLHR5cGU6XCJhdXRoXCJ9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxyLG4sbyl7ZS5pc0J1ZmZlcih0KXx8KHQ9bmV3IGUodCxcImJpbmFyeVwiKSksciYmIWUuaXNCdWZmZXIocikmJihyPW5ldyBlKHIsXCJiaW5hcnlcIikpLG4vPTgsbz1vfHwwO2Zvcih2YXIgYSxmLHM9MCx1PTAsaD1uZXcgZShuKSxjPW5ldyBlKG8pLGQ9MCxsPVtdOzspe2lmKGQrKz4wJiZsLnB1c2goYSksbC5wdXNoKHQpLHImJmwucHVzaChyKSxhPWkoZS5jb25jYXQobCkpLGw9W10sZj0wLG4+MClmb3IoOzspe2lmKDA9PT1uKWJyZWFrO2lmKGY9PT1hLmxlbmd0aClicmVhaztoW3MrK109YVtmXSxuLS0sZisrfWlmKG8+MCYmZiE9PWEubGVuZ3RoKWZvcig7Oyl7aWYoMD09PW8pYnJlYWs7aWYoZj09PWEubGVuZ3RoKWJyZWFrO2NbdSsrXT1hW2ZdLG8tLSxmKyt9aWYoMD09PW4mJjA9PT1vKWJyZWFrfWZvcihmPTA7ZjxhLmxlbmd0aDtmKyspYVtmXT0wO3JldHVybntrZXk6aCxpdjpjfX12YXIgaT1yKDEwNSk7dC5leHBvcnRzPW59KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0KXt0aGlzLmFmdGVyVHJhbnNmb3JtPWZ1bmN0aW9uKGUscil7cmV0dXJuIGkodCxlLHIpfSx0aGlzLm5lZWRUcmFuc2Zvcm09ITEsdGhpcy50cmFuc2Zvcm1pbmc9ITEsdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWNodW5rPW51bGwsdGhpcy53cml0ZWVuY29kaW5nPW51bGx9ZnVuY3Rpb24gaSh0LGUscil7dmFyIG49dC5fdHJhbnNmb3JtU3RhdGU7bi50cmFuc2Zvcm1pbmc9ITE7dmFyIGk9bi53cml0ZWNiO2lmKCFpKXJldHVybiB0LmVtaXQoXCJlcnJvclwiLG5ldyBFcnJvcihcIm5vIHdyaXRlY2IgaW4gVHJhbnNmb3JtIGNsYXNzXCIpKTtuLndyaXRlY2h1bms9bnVsbCxuLndyaXRlY2I9bnVsbCxudWxsIT09ciYmdm9pZCAwIT09ciYmdC5wdXNoKHIpLGkoZSk7dmFyIG89dC5fcmVhZGFibGVTdGF0ZTtvLnJlYWRpbmc9ITEsKG8ubmVlZFJlYWRhYmxlfHxvLmxlbmd0aDxvLmhpZ2hXYXRlck1hcmspJiZ0Ll9yZWFkKG8uaGlnaFdhdGVyTWFyayl9ZnVuY3Rpb24gbyh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSlyZXR1cm4gbmV3IG8odCk7Zi5jYWxsKHRoaXMsdCksdGhpcy5fdHJhbnNmb3JtU3RhdGU9bmV3IG4odGhpcyk7dmFyIGU9dGhpczt0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPXQudHJhbnNmb3JtKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZsdXNoJiYodGhpcy5fZmx1c2g9dC5mbHVzaCkpLHRoaXMub25jZShcInByZWZpbmlzaFwiLGZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcy5fZmx1c2g/dGhpcy5fZmx1c2goZnVuY3Rpb24odCl7YShlLHQpfSk6YShlKX0pfWZ1bmN0aW9uIGEodCxlKXtpZihlKXJldHVybiB0LmVtaXQoXCJlcnJvclwiLGUpO3ZhciByPXQuX3dyaXRhYmxlU3RhdGUsbj10Ll90cmFuc2Zvcm1TdGF0ZTtpZihyLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDBcIik7aWYobi50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZ1wiKTtyZXR1cm4gdC5wdXNoKG51bGwpfXQuZXhwb3J0cz1vO3ZhciBmPXIoNTEpLHM9cig3Myk7cy5pbmhlcml0cz1yKDc0KSxzLmluaGVyaXRzKG8sZiksby5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLGYucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHQsZSl9LG8ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX0sby5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtpZihuLndyaXRlY2I9cixuLndyaXRlY2h1bms9dCxuLndyaXRlZW5jb2Rpbmc9ZSwhbi50cmFuc2Zvcm1pbmcpe3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7KG4ubmVlZFRyYW5zZm9ybXx8aS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX19LG8ucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3RyYW5zZm9ybVN0YXRlO251bGwhPT1lLndyaXRlY2h1bmsmJmUud3JpdGVjYiYmIWUudHJhbnNmb3JtaW5nPyhlLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oZS53cml0ZWNodW5rLGUud3JpdGVlbmNvZGluZyxlLmFmdGVyVHJhbnNmb3JtKSk6ZS5uZWVkVHJhbnNmb3JtPSEwfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt9ZnVuY3Rpb24gbyh0LGUscil7dGhpcy5jaHVuaz10LHRoaXMuZW5jb2Rpbmc9ZSx0aGlzLmNhbGxiYWNrPXIsdGhpcy5uZXh0PW51bGx9ZnVuY3Rpb24gYSh0LGUpe1I9Unx8cig1MSksdD10fHx7fSx0aGlzLm9iamVjdE1vZGU9ISF0Lm9iamVjdE1vZGUsZSBpbnN0YW5jZW9mIFImJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXQud3JpdGFibGVPYmplY3RNb2RlKTt2YXIgbj10LmhpZ2hXYXRlck1hcmssaT10aGlzLm9iamVjdE1vZGU/MTY6MTYzODQ7dGhpcy5oaWdoV2F0ZXJNYXJrPW58fDA9PT1uP246aSx0aGlzLmhpZ2hXYXRlck1hcms9fn50aGlzLmhpZ2hXYXRlck1hcmssdGhpcy5uZWVkRHJhaW49ITEsdGhpcy5lbmRpbmc9ITEsdGhpcy5lbmRlZD0hMSx0aGlzLmZpbmlzaGVkPSExO3ZhciBvPXQuZGVjb2RlU3RyaW5ncz09PSExO3RoaXMuZGVjb2RlU3RyaW5ncz0hbyx0aGlzLmRlZmF1bHRFbmNvZGluZz10LmRlZmF1bHRFbmNvZGluZ3x8XCJ1dGY4XCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbih0KXtiKGUsdCl9LHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IFModGhpcyl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gUj1SfHxyKDUxKSx0aGlzIGluc3RhbmNlb2YgZnx8dGhpcyBpbnN0YW5jZW9mIFI/KHRoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IGEodCx0aGlzKSx0aGlzLndyaXRhYmxlPSEwLHQmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LndyaXRlJiYodGhpcy5fd3JpdGU9dC53cml0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdC53cml0ZXYmJih0aGlzLl93cml0ZXY9dC53cml0ZXYpKSx2b2lkIHguY2FsbCh0aGlzKSk6bmV3IGYodCl9ZnVuY3Rpb24gcyh0LGUpe3ZhciByPW5ldyBFcnJvcihcIndyaXRlIGFmdGVyIGVuZFwiKTt0LmVtaXQoXCJlcnJvclwiLHIpLEUoZSxyKX1mdW5jdGlvbiB1KHQsZSxyLG4pe3ZhciBpPSEwLG89ITE7cmV0dXJuIG51bGw9PT1yP289bmV3IFR5cGVFcnJvcihcIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtXCIpOkIuaXNCdWZmZXIocil8fFwic3RyaW5nXCI9PXR5cGVvZiByfHx2b2lkIDA9PT1yfHxlLm9iamVjdE1vZGV8fChvPW5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rXCIpKSxvJiYodC5lbWl0KFwiZXJyb3JcIixvKSxFKG4sbyksaT0hMSksaX1mdW5jdGlvbiBoKHQsZSxyKXtyZXR1cm4gdC5vYmplY3RNb2RlfHx0LmRlY29kZVN0cmluZ3M9PT0hMXx8XCJzdHJpbmdcIiE9dHlwZW9mIGV8fChlPU8uZnJvbShlLHIpKSxlfWZ1bmN0aW9uIGModCxlLHIsbixpKXtyPWgoZSxyLG4pLEIuaXNCdWZmZXIocikmJihuPVwiYnVmZmVyXCIpO3ZhciBhPWUub2JqZWN0TW9kZT8xOnIubGVuZ3RoO2UubGVuZ3RoKz1hO3ZhciBmPWUubGVuZ3RoPGUuaGlnaFdhdGVyTWFyaztpZihmfHwoZS5uZWVkRHJhaW49ITApLGUud3JpdGluZ3x8ZS5jb3JrZWQpe3ZhciBzPWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bmV3IG8ocixuLGkpLHM/cy5uZXh0PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDplLmJ1ZmZlcmVkUmVxdWVzdD1lLmxhc3RCdWZmZXJlZFJlcXVlc3QsZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIGQodCxlLCExLGEscixuLGkpO3JldHVybiBmfWZ1bmN0aW9uIGQodCxlLHIsbixpLG8sYSl7ZS53cml0ZWxlbj1uLGUud3JpdGVjYj1hLGUud3JpdGluZz0hMCxlLnN5bmM9ITAscj90Ll93cml0ZXYoaSxlLm9ud3JpdGUpOnQuX3dyaXRlKGksbyxlLm9ud3JpdGUpLGUuc3luYz0hMX1mdW5jdGlvbiBsKHQsZSxyLG4saSl7LS1lLnBlbmRpbmdjYixyP0UoaSxuKTppKG4pLHQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHQuZW1pdChcImVycm9yXCIsbil9ZnVuY3Rpb24gcCh0KXt0LndyaXRpbmc9ITEsdC53cml0ZWNiPW51bGwsdC5sZW5ndGgtPXQud3JpdGVsZW4sdC53cml0ZWxlbj0wfWZ1bmN0aW9uIGIodCxlKXt2YXIgcj10Ll93cml0YWJsZVN0YXRlLG49ci5zeW5jLGk9ci53cml0ZWNiO2lmKHAociksZSlsKHQscixuLGUsaSk7ZWxzZXt2YXIgbz1nKHIpO298fHIuY29ya2VkfHxyLmJ1ZmZlclByb2Nlc3Npbmd8fCFyLmJ1ZmZlcmVkUmVxdWVzdHx8bSh0LHIpLG4/QSh2LHQscixvLGkpOnYodCxyLG8saSl9fWZ1bmN0aW9uIHYodCxlLHIsbil7cnx8eSh0LGUpLGUucGVuZGluZ2NiLS0sbigpLF8odCxlKX1mdW5jdGlvbiB5KHQsZSl7MD09PWUubGVuZ3RoJiZlLm5lZWREcmFpbiYmKGUubmVlZERyYWluPSExLHQuZW1pdChcImRyYWluXCIpKX1mdW5jdGlvbiBtKHQsZSl7ZS5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciByPWUuYnVmZmVyZWRSZXF1ZXN0O2lmKHQuX3dyaXRldiYmciYmci5uZXh0KXt2YXIgbj1lLmJ1ZmZlcmVkUmVxdWVzdENvdW50LGk9bmV3IEFycmF5KG4pLG89ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7by5lbnRyeT1yO2Zvcih2YXIgYT0wO3I7KWlbYV09cixyPXIubmV4dCxhKz0xO2QodCxlLCEwLGUubGVuZ3RoLGksXCJcIixvLmZpbmlzaCksZS5wZW5kaW5nY2IrKyxlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxvLm5leHQ/KGUuY29ya2VkUmVxdWVzdHNGcmVlPW8ubmV4dCxvLm5leHQ9bnVsbCk6ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IFMoZSl9ZWxzZXtmb3IoO3I7KXt2YXIgZj1yLmNodW5rLHM9ci5lbmNvZGluZyx1PXIuY2FsbGJhY2ssaD1lLm9iamVjdE1vZGU/MTpmLmxlbmd0aDtpZihkKHQsZSwhMSxoLGYscyx1KSxyPXIubmV4dCxlLndyaXRpbmcpYnJlYWt9bnVsbD09PXImJihlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9ZS5idWZmZXJlZFJlcXVlc3RDb3VudD0wLGUuYnVmZmVyZWRSZXF1ZXN0PXIsZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIGcodCl7cmV0dXJuIHQuZW5kaW5nJiYwPT09dC5sZW5ndGgmJm51bGw9PT10LmJ1ZmZlcmVkUmVxdWVzdCYmIXQuZmluaXNoZWQmJiF0LndyaXRpbmd9ZnVuY3Rpb24gdyh0LGUpe2UucHJlZmluaXNoZWR8fChlLnByZWZpbmlzaGVkPSEwLHQuZW1pdChcInByZWZpbmlzaFwiKSl9ZnVuY3Rpb24gXyh0LGUpe3ZhciByPWcoZSk7cmV0dXJuIHImJigwPT09ZS5wZW5kaW5nY2I/KHcodCxlKSxlLmZpbmlzaGVkPSEwLHQuZW1pdChcImZpbmlzaFwiKSk6dyh0LGUpKSxyfWZ1bmN0aW9uIE0odCxlLHIpe2UuZW5kaW5nPSEwLF8odCxlKSxyJiYoZS5maW5pc2hlZD9FKHIpOnQub25jZShcImZpbmlzaFwiLHIpKSxlLmVuZGVkPSEwLHQud3JpdGFibGU9ITF9ZnVuY3Rpb24gUyh0KXt2YXIgZT10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbihyKXt2YXIgbj1lLmVudHJ5O2ZvcihlLmVudHJ5PW51bGw7bjspe3ZhciBpPW4uY2FsbGJhY2s7dC5wZW5kaW5nY2ItLSxpKHIpLG49bi5uZXh0fXQuY29ya2VkUmVxdWVzdHNGcmVlP3QuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9ZTp0LmNvcmtlZFJlcXVlc3RzRnJlZT1lfX10LmV4cG9ydHM9Zjt2YXIgRT1yKDE1NyksQT0hZS5icm93c2VyJiZbXCJ2MC4xMFwiLFwidjAuOS5cIl0uaW5kZXhPZihlLnZlcnNpb24uc2xpY2UoMCw1KSk+LTE/bjpFO2YuV3JpdGFibGVTdGF0ZT1hO3ZhciBrPXIoNzMpO2suaW5oZXJpdHM9cig3NCk7dmFyIHgsST17ZGVwcmVjYXRlOnIoNTk4KX07IWZ1bmN0aW9uKCl7dHJ5e3g9cigzMSl9Y2F0Y2godCl7fWZpbmFsbHl7eHx8KHg9cigxMTApLkV2ZW50RW1pdHRlcil9fSgpO3ZhciBCPXIoMSkuQnVmZmVyLE89cigxNTYpO2suaW5oZXJpdHMoZix4KTt2YXIgUjthLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJlZFJlcXVlc3QsZT1bXTt0OyllLnB1c2godCksdD10Lm5leHQ7cmV0dXJuIGV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6SS5kZXByZWNhdGUoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0sXCJfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciBpbnN0ZWFkLlwiKX0pfWNhdGNoKHQpe319KCk7dmFyIFI7Zi5wcm90b3R5cGUucGlwZT1mdW5jdGlvbigpe3RoaXMuZW1pdChcImVycm9yXCIsbmV3IEVycm9yKFwiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZVwiKSl9LGYucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlLG89ITE7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLEIuaXNCdWZmZXIodCk/ZT1cImJ1ZmZlclwiOmV8fChlPW4uZGVmYXVsdEVuY29kaW5nKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiYocj1pKSxuLmVuZGVkP3ModGhpcyxyKTp1KHRoaXMsbix0LHIpJiYobi5wZW5kaW5nY2IrKyxvPWModGhpcyxuLHQsZSxyKSksb30sZi5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dyaXRhYmxlU3RhdGU7dC5jb3JrZWQrK30sZi5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fd3JpdGFibGVTdGF0ZTt0LmNvcmtlZCYmKHQuY29ya2VkLS0sdC53cml0aW5nfHx0LmNvcmtlZHx8dC5maW5pc2hlZHx8dC5idWZmZXJQcm9jZXNzaW5nfHwhdC5idWZmZXJlZFJlcXVlc3R8fG0odGhpcyx0KSl9LGYucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbih0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9dC50b0xvd2VyQ2FzZSgpKSwhKFtcImhleFwiLFwidXRmOFwiLFwidXRmLThcIixcImFzY2lpXCIsXCJiaW5hcnlcIixcImJhc2U2NFwiLFwidWNzMlwiLFwidWNzLTJcIixcInV0ZjE2bGVcIixcInV0Zi0xNmxlXCIsXCJyYXdcIl0uaW5kZXhPZigodCtcIlwiKS50b0xvd2VyQ2FzZSgpKT4tMSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3QpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz10LHRoaXN9LGYucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbih0LGUscil7cihuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpfSxmLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsZi5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlO1wiZnVuY3Rpb25cIj09dHlwZW9mIHQ/KHI9dCx0PW51bGwsZT1udWxsKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksbnVsbCE9PXQmJnZvaWQgMCE9PXQmJnRoaXMud3JpdGUodCxlKSxuLmNvcmtlZCYmKG4uY29ya2VkPTEsdGhpcy51bmNvcmsoKSksbi5lbmRpbmd8fG4uZmluaXNoZWR8fE0odGhpcyxuLHIpfX0pLmNhbGwoZSxyKDI2KSxyKDE1OCkuc2V0SW1tZWRpYXRlKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDEpLGk9bi5CdWZmZXIsbz1uLlNsb3dCdWZmZXIsYT1uLmtNYXhMZW5ndGh8fDIxNDc0ODM2NDc7ZS5hbGxvYz1mdW5jdGlvbih0LGUscil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5hbGxvYylyZXR1cm4gaS5hbGxvYyh0LGUscik7aWYoXCJudW1iZXJcIj09dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kaW5nIG11c3Qgbm90IGJlIG51bWJlclwiKTtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwic2l6ZSBtdXN0IGJlIGEgbnVtYmVyXCIpO2lmKHQ+YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNpemUgaXMgdG9vIGxhcmdlXCIpO3ZhciBuPXIsbz1lO3ZvaWQgMD09PW8mJihuPXZvaWQgMCxvPTApO3ZhciBmPW5ldyBpKHQpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBvKWZvcih2YXIgcz1uZXcgaShvLG4pLHU9cy5sZW5ndGgsaD0tMTsrK2g8dDspZltoXT1zW2gldV07ZWxzZSBmLmZpbGwobyk7cmV0dXJuIGZ9LGUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgaS5hbGxvY1Vuc2FmZSlyZXR1cm4gaS5hbGxvY1Vuc2FmZSh0KTtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwic2l6ZSBtdXN0IGJlIGEgbnVtYmVyXCIpO2lmKHQ+YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInNpemUgaXMgdG9vIGxhcmdlXCIpO3JldHVybiBuZXcgaSh0KX0sZS5mcm9tPWZ1bmN0aW9uKGUscixuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmZyb20mJighdC5VaW50OEFycmF5fHxVaW50OEFycmF5LmZyb20hPT1pLmZyb20pKXJldHVybiBpLmZyb20oZSxyLG4pO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuZXcgaShlLHIpO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXt2YXIgbz1yO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBuZXcgaShlKTtcInVuZGVmaW5lZFwiPT10eXBlb2YgbyYmKG89MCk7dmFyIGE9bjtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgYSYmKGE9ZS5ieXRlTGVuZ3RoLW8pLG8+PWUuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHNcIik7aWYoYT5lLmJ5dGVMZW5ndGgtbyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHNcIik7cmV0dXJuIG5ldyBpKGUuc2xpY2UobyxvK2EpKX1pZihpLmlzQnVmZmVyKGUpKXt2YXIgZj1uZXcgaShlLmxlbmd0aCk7cmV0dXJuIGUuY29weShmLDAsMCxlLmxlbmd0aCksZn1pZihlKXtpZihBcnJheS5pc0FycmF5KGUpfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgQXJyYXlCdWZmZXImJmUuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fFwibGVuZ3RoXCJpbiBlKXJldHVybiBuZXcgaShlKTtpZihcIkJ1ZmZlclwiPT09ZS50eXBlJiZBcnJheS5pc0FycmF5KGUuZGF0YSkpcmV0dXJuIG5ldyBpKGUuZGF0YSl9dGhyb3cgbmV3IFR5cGVFcnJvcihcIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC5cIil9LGUuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuYWxsb2NVbnNhZmVTbG93KXJldHVybiBpLmFsbG9jVW5zYWZlU2xvdyh0KTtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwic2l6ZSBtdXN0IGJlIGEgbnVtYmVyXCIpO2lmKHQ+PWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzaXplIGlzIHRvbyBsYXJnZVwiKTtyZXR1cm4gbmV3IG8odCl9fSkuY2FsbChlLHIoMzkpKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKHQscixuLGkpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYWxsYmFja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO3ZhciBvLGEsZj1hcmd1bWVudHMubGVuZ3RoO3N3aXRjaChmKXtjYXNlIDA6Y2FzZSAxOnJldHVybiBlLm5leHRUaWNrKHQpO2Nhc2UgMjpyZXR1cm4gZS5uZXh0VGljayhmdW5jdGlvbigpe3QuY2FsbChudWxsLHIpfSk7Y2FzZSAzOnJldHVybiBlLm5leHRUaWNrKGZ1bmN0aW9uKCl7dC5jYWxsKG51bGwscixuKX0pO2Nhc2UgNDpyZXR1cm4gZS5uZXh0VGljayhmdW5jdGlvbigpe3QuY2FsbChudWxsLHIsbixpKX0pO2RlZmF1bHQ6Zm9yKG89bmV3IEFycmF5KGYtMSksYT0wO2E8by5sZW5ndGg7KW9bYSsrXT1hcmd1bWVudHNbYV07cmV0dXJuIGUubmV4dFRpY2soZnVuY3Rpb24oKXt0LmFwcGx5KG51bGwsbyl9KX19IWUudmVyc2lvbnx8MD09PWUudmVyc2lvbi5pbmRleE9mKFwidjAuXCIpfHwwPT09ZS52ZXJzaW9uLmluZGV4T2YoXCJ2MS5cIikmJjAhPT1lLnZlcnNpb24uaW5kZXhPZihcInYxLjguXCIpP3QuZXhwb3J0cz1yOnQuZXhwb3J0cz1lLm5leHRUaWNrO1xufSkuY2FsbChlLHIoMjYpKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGkodCxlKXt0aGlzLl9pZD10LHRoaXMuX2NsZWFyRm49ZX12YXIgbz1yKDI2KS5uZXh0VGljayxhPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSxmPUFycmF5LnByb3RvdHlwZS5zbGljZSxzPXt9LHU9MDtlLnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkoYS5jYWxsKHNldFRpbWVvdXQsd2luZG93LGFyZ3VtZW50cyksY2xlYXJUaW1lb3V0KX0sZS5zZXRJbnRlcnZhbD1mdW5jdGlvbigpe3JldHVybiBuZXcgaShhLmNhbGwoc2V0SW50ZXJ2YWwsd2luZG93LGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LGUuY2xlYXJUaW1lb3V0PWUuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbih0KXt0LmNsb3NlKCl9LGkucHJvdG90eXBlLnVucmVmPWkucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30saS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LHRoaXMuX2lkKX0sZS5lbnJvbGw9ZnVuY3Rpb24odCxlKXtjbGVhclRpbWVvdXQodC5faWRsZVRpbWVvdXRJZCksdC5faWRsZVRpbWVvdXQ9ZX0sZS51bmVucm9sbD1mdW5jdGlvbih0KXtjbGVhclRpbWVvdXQodC5faWRsZVRpbWVvdXRJZCksdC5faWRsZVRpbWVvdXQ9LTF9LGUuX3VucmVmQWN0aXZlPWUuYWN0aXZlPWZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0Ll9pZGxlVGltZW91dElkKTt2YXIgZT10Ll9pZGxlVGltZW91dDtlPj0wJiYodC5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5fb25UaW1lb3V0JiZ0Ll9vblRpbWVvdXQoKX0sZSkpfSxlLnNldEltbWVkaWF0ZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24odCl7dmFyIHI9dSsrLG49IShhcmd1bWVudHMubGVuZ3RoPDIpJiZmLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBzW3JdPSEwLG8oZnVuY3Rpb24oKXtzW3JdJiYobj90LmFwcGx5KG51bGwsbik6dC5jYWxsKG51bGwpLGUuY2xlYXJJbW1lZGlhdGUocikpfSkscn0sZS5jbGVhckltbWVkaWF0ZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP246ZnVuY3Rpb24odCl7ZGVsZXRlIHNbdF19fSkuY2FsbChlLHIoMTU4KS5zZXRJbW1lZGlhdGUscigxNTgpLmNsZWFySW1tZWRpYXRlKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9cig2MiksZj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG4odGhpcyxlKSxpKHRoaXMsKGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIG8oZSx0KSxlfShhKTt0LmV4cG9ydHM9Zn0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9cig2MiksZj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG4odGhpcyxlKSxpKHRoaXMsKGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIG8oZSx0KSxlfShhKTt0LmV4cG9ydHM9Zn0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX12YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHImJnQoZS5wcm90b3R5cGUsciksbiYmdChlLG4pLGV9fSgpLG89cigyNTcpLkJlcixhPTY1NTM3LGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bih0aGlzLHQpfXJldHVybiBpKHQsbnVsbCxbe2tleTpcIm1vZHVsdXNUb1BlbVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKDA9PT10WzBdKXRocm93IG5ldyBFcnJvcihcIk1vZHVsdXMgbWF5IG5vdCBzdGFydCB3aXRoIHplcm9cIik7MTI4JnRbMF0mJih0PWUuY29uY2F0KFtuZXcgZShbMF0pLHRdKSk7dmFyIHI9bmV3IG8uV3JpdGVyO3JldHVybiByLnN0YXJ0U2VxdWVuY2UoKSxyLndyaXRlQnVmZmVyKHQsMiksci53cml0ZUludChhKSxyLmVuZFNlcXVlbmNlKCksXCItLS0tLUJFR0lOIFJTQSBQVUJMSUMgS0VZLS0tLS1cXG5cIityLmJ1ZmZlci50b1N0cmluZyhcImJhc2U2NFwiKS5tYXRjaCgvLnsxLDY0fS9nKS5qb2luKFwiXFxuXCIpK1wiXFxuLS0tLS1FTkQgUlNBIFBVQkxJQyBLRVktLS0tLVxcblwifX0se2tleTpcIm1vZHVsdXNGcm9tUHJpdmF0ZUtleVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciByPXQucmVwbGFjZShcIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS1cIixcIlwiKS5yZXBsYWNlKFwiLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS1cIixcIlwiKS5yZXBsYWNlKC9cXHMrfFxcblxccnxcXG58XFxyJC9nbSxcIlwiKSxuPW5ldyBlKHIsXCJiYXNlNjRcIiksaT1uZXcgby5SZWFkZXIobik7aS5yZWFkU2VxdWVuY2UoKSxpLnJlYWRTdHJpbmcoMiwhMCk7dmFyIGE9aS5yZWFkU3RyaW5nKDIsITApO3JldHVybiAwPT09YVswXT9hLnNsaWNlKDEpOmF9fV0pLHR9KCk7dC5leHBvcnRzPWZ9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7cigyODEpLHQuZXhwb3J0cz1yKDE2MykuTnVtYmVyLmlzSW50ZWdlcn0sZnVuY3Rpb24odCxlKXt2YXIgcj10LmV4cG9ydHM9e3ZlcnNpb246XCIyLjQuMFwifTtcIm51bWJlclwiPT10eXBlb2YgX19lJiYoX19lPXIpfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxlKXt2YXIgcj10LmV4cG9ydHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XCJudW1iZXJcIj09dHlwZW9mIF9fZyYmKF9fZz1yKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0JiZcIk51bWJlclwiIT1uKHQpKXRocm93IFR5cGVFcnJvcihlKTtyZXR1cm4rdH19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDExKSxpPXIoNDcpLG89cigxMCk7dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bih0aGlzKSxhPW8oci5sZW5ndGgpLGY9aSh0LGEpLHM9aShlLGEpLHU9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsaD1NYXRoLm1pbigodm9pZCAwPT09dT9hOmkodSxhKSktcyxhLWYpLGM9MTtmb3IoczxmJiZmPHMraCYmKGM9LTEscys9aC0xLGYrPWgtMSk7aC0tID4wOylzIGluIHI/cltmXT1yW3NdOmRlbGV0ZSByW2ZdLGYrPWMscys9YztyZXR1cm4gcn19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDU1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1bXTtyZXR1cm4gbih0LCExLHIucHVzaCxyLGUpLHJ9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxMyksaT1yKDExKSxvPXIoNjUpLGE9cigxMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGYscyl7bihlKTt2YXIgdT1pKHQpLGg9byh1KSxjPWEodS5sZW5ndGgpLGQ9cz9jLTE6MCxsPXM/LTE6MTtpZihyPDIpZm9yKDs7KXtpZihkIGluIGgpe2Y9aFtkXSxkKz1sO2JyZWFrfWlmKGQrPWwscz9kPDA6Yzw9ZCl0aHJvdyBUeXBlRXJyb3IoXCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlXCIpfWZvcig7cz9kPj0wOmM+ZDtkKz1sKWQgaW4gaCYmKGY9ZShmLGhbZF0sZCx1KSk7cmV0dXJuIGZ9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxMyksaT1yKDYpLG89cig4MiksYT1bXS5zbGljZSxmPXt9LHM9ZnVuY3Rpb24odCxlLHIpe2lmKCEoZSBpbiBmKSl7Zm9yKHZhciBuPVtdLGk9MDtpPGU7aSsrKW5baV09XCJhW1wiK2krXCJdXCI7ZltlXT1GdW5jdGlvbihcIkYsYVwiLFwicmV0dXJuIG5ldyBGKFwiK24uam9pbihcIixcIikrXCIpXCIpfXJldHVybiBmW2VdKHQscil9O3QuZXhwb3J0cz1GdW5jdGlvbi5iaW5kfHxmdW5jdGlvbih0KXt2YXIgZT1uKHRoaXMpLHI9YS5jYWxsKGFyZ3VtZW50cywxKSxmPWZ1bmN0aW9uKCl7dmFyIG49ci5jb25jYXQoYS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgZj9zKGUsbi5sZW5ndGgsbik6byhlLG4sdCl9O3JldHVybiBpKGUucHJvdG90eXBlKSYmKGYucHJvdG90eXBlPWUucHJvdG90eXBlKSxmfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoOSkuZixpPXIoNDIpLG89cig0NSksYT1yKDMzKSxmPXIoNDApLHM9cigyNCksdT1yKDU1KSxoPXIoMTI4KSxjPXIoMTc3KSxkPXIoNDYpLGw9cig4KSxwPXIoMzYpLmZhc3RLZXksYj1sP1wiX3NcIjpcInNpemVcIix2PWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1wKGUpO2lmKFwiRlwiIT09bilyZXR1cm4gdC5faVtuXTtmb3Iocj10Ll9mO3I7cj1yLm4paWYoci5rPT1lKXJldHVybiByfTt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxyLGgpe3ZhciBjPXQoZnVuY3Rpb24odCxuKXtmKHQsYyxlLFwiX2lcIiksdC5faT1pKG51bGwpLHQuX2Y9dm9pZCAwLHQuX2w9dm9pZCAwLHRbYl09MCx2b2lkIDAhPW4mJnUobixyLHRbaF0sdCl9KTtyZXR1cm4gbyhjLnByb3RvdHlwZSx7Y2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXQuX2kscj10Ll9mO3I7cj1yLm4pci5yPSEwLHIucCYmKHIucD1yLnAubj12b2lkIDApLGRlbGV0ZSBlW3IuaV07dC5fZj10Ll9sPXZvaWQgMCx0W2JdPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9dihlLHQpO2lmKHIpe3ZhciBuPXIubixpPXIucDtkZWxldGUgZS5faVtyLmldLHIucj0hMCxpJiYoaS5uPW4pLG4mJihuLnA9aSksZS5fZj09ciYmKGUuX2Y9biksZS5fbD09ciYmKGUuX2w9aSksZVtiXS0tfXJldHVybiEhcn0sZm9yRWFjaDpmdW5jdGlvbih0KXtmKHRoaXMsYyxcImZvckVhY2hcIik7Zm9yKHZhciBlLHI9YSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO2U9ZT9lLm46dGhpcy5fZjspZm9yKHIoZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5wfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF2KHRoaXMsdCl9fSksbCYmbihjLnByb3RvdHlwZSxcInNpemVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHModGhpc1tiXSl9fSksY30sZGVmOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLG89dih0LGUpO3JldHVybiBvP28udj1yOih0Ll9sPW89e2k6aT1wKGUsITApLGs6ZSx2OnIscDpuPXQuX2wsbjp2b2lkIDAscjohMX0sdC5fZnx8KHQuX2Y9byksbiYmKG4ubj1vKSx0W2JdKyssXCJGXCIhPT1pJiYodC5faVtpXT1vKSksdH0sZ2V0RW50cnk6dixzZXRTdHJvbmc6ZnVuY3Rpb24odCxlLHIpe2godCxlLGZ1bmN0aW9uKHQsZSl7dGhpcy5fdD10LHRoaXMuX2s9ZSx0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXQuX2sscj10Ll9sO3ImJnIucjspcj1yLnA7cmV0dXJuIHQuX3QmJih0Ll9sPXI9cj9yLm46dC5fdC5fZik/XCJrZXlzXCI9PWU/YygwLHIuayk6XCJ2YWx1ZXNcIj09ZT9jKDAsci52KTpjKDAsW3IuayxyLnZdKToodC5fdD12b2lkIDAsYygxKSl9LHI/XCJlbnRyaWVzXCI6XCJ2YWx1ZXNcIiwhciwhMCksZChlKX19fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2NCksaT1yKDE2OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2lmKG4odGhpcykhPXQpdGhyb3cgVHlwZUVycm9yKHQrXCIjdG9KU09OIGlzbid0IGdlbmVyaWNcIik7cmV0dXJuIGkodGhpcyl9fX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNDUpLGk9cigzNikuZ2V0V2VhayxvPXIoMyksYT1yKDYpLGY9cig0MCkscz1yKDU1KSx1PXIoMjcpLGg9cigxMiksYz11KDUpLGQ9dSg2KSxsPTAscD1mdW5jdGlvbih0KXtyZXR1cm4gdC5fbHx8KHQuX2w9bmV3IGIpfSxiPWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSx2PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGModC5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09ZX0pfTtiLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXYodGhpcyx0KTtpZihlKXJldHVybiBlWzFdfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF2KHRoaXMsdCl9LHNldDpmdW5jdGlvbih0LGUpe3ZhciByPXYodGhpcyx0KTtyP3JbMV09ZTp0aGlzLmEucHVzaChbdCxlXSl9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT1kKHRoaXMuYSxmdW5jdGlvbihlKXtyZXR1cm4gZVswXT09PXR9KTtyZXR1cm5+ZSYmdGhpcy5hLnNwbGljZShlLDEpLCEhfmV9fSx0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxyLG8pe3ZhciB1PXQoZnVuY3Rpb24odCxuKXtmKHQsdSxlLFwiX2lcIiksdC5faT1sKyssdC5fbD12b2lkIDAsdm9pZCAwIT1uJiZzKG4scix0W29dLHQpfSk7cmV0dXJuIG4odS5wcm90b3R5cGUse2RlbGV0ZTpmdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT1pKHQpO3JldHVybiBlPT09ITA/cCh0aGlzKS5kZWxldGUodCk6ZSYmaChlLHRoaXMuX2kpJiZkZWxldGUgZVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKHQpe2lmKCFhKHQpKXJldHVybiExO3ZhciBlPWkodCk7cmV0dXJuIGU9PT0hMD9wKHRoaXMpLmhhcyh0KTplJiZoKGUsdGhpcy5faSl9fSksdX0sZGVmOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1pKG8oZSksITApO3JldHVybiBuPT09ITA/cCh0KS5zZXQoZSxyKTpuW3QuX2ldPXIsdH0sdWZzdG9yZTpwfX0sZnVuY3Rpb24odCxlLHIpe3QuZXhwb3J0cz0hcig4KSYmIXIoNSkoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHIoMTIwKShcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KSxpPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiFuKHQpJiZpc0Zpbml0ZSh0KSYmaSh0KT09PXR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIsaSl7dHJ5e3JldHVybiBpP2UobihyKVswXSxyWzFdKTplKHIpfWNhdGNoKGUpe3ZhciBvPXQucmV0dXJuO3Rocm93IHZvaWQgMCE9PW8mJm4oby5jYWxsKHQpKSxlfX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3ZhbHVlOmUsZG9uZTohIXR9fX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9TWF0aC5sb2cxcHx8ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpPi0xZS04JiZ0PDFlLTg/dC10KnQvMjpNYXRoLmxvZygxK3QpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNDQpLGk9cig4Niksbz1yKDY2KSxhPXIoMTEpLGY9cig2NSkscz1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0hc3x8cig1KShmdW5jdGlvbigpe3ZhciB0PXt9LGU9e30scj1TeW1ib2woKSxuPVwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIjtyZXR1cm4gdFtyXT03LG4uc3BsaXQoXCJcIikuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPXR9KSw3IT1zKHt9LHQpW3JdfHxPYmplY3Qua2V5cyhzKHt9LGUpKS5qb2luKFwiXCIpIT1ufSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9YSh0KSxzPWFyZ3VtZW50cy5sZW5ndGgsdT0xLGg9aS5mLGM9by5mO3M+dTspZm9yKHZhciBkLGw9Zihhcmd1bWVudHNbdSsrXSkscD1oP24obCkuY29uY2F0KGgobCkpOm4obCksYj1wLmxlbmd0aCx2PTA7Yj52OyljLmNhbGwobCxkPXBbdisrXSkmJihyW2RdPWxbZF0pO3JldHVybiByfTpzfSxmdW5jdGlvbih0LGUscil7dmFyIG49cig5KSxpPXIoMyksbz1yKDQ0KTt0LmV4cG9ydHM9cig4KT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe2kodCk7Zm9yKHZhciByLGE9byhlKSxmPWEubGVuZ3RoLHM9MDtmPnM7KW4uZih0LHI9YVtzKytdLGVbcl0pO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTcpLGk9cig0MykuZixvPXt9LnRvU3RyaW5nLGE9XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLGY9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBpKHQpfWNhdGNoKHQpe3JldHVybiBhLnNsaWNlKCl9fTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gYSYmXCJbb2JqZWN0IFdpbmRvd11cIj09by5jYWxsKHQpP2YodCk6aShuKHQpKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDEyKSxpPXIoMTcpLG89cig3OCkoITEpLGE9cigxMzMpKFwiSUVfUFJPVE9cIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsZj1pKHQpLHM9MCx1PVtdO2ZvcihyIGluIGYpciE9YSYmbihmLHIpJiZ1LnB1c2gocik7Zm9yKDtlLmxlbmd0aD5zOyluKGYscj1lW3MrK10pJiYofm8odSxyKXx8dS5wdXNoKHIpKTtyZXR1cm4gdX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQ0KSxpPXIoMTcpLG89cig2NikuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcixhPWkoZSksZj1uKGEpLHM9Zi5sZW5ndGgsdT0wLGg9W107cz51OylvLmNhbGwoYSxyPWZbdSsrXSkmJmgucHVzaCh0P1tyLGFbcl1dOmFbcl0pO3JldHVybiBofX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQzKSxpPXIoODYpLG89cigzKSxhPXIoNCkuUmVmbGVjdDt0LmV4cG9ydHM9YSYmYS5vd25LZXlzfHxmdW5jdGlvbih0KXt2YXIgZT1uLmYobyh0KSkscj1pLmY7cmV0dXJuIHI/ZS5jb25jYXQocih0KSk6ZX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQpLnBhcnNlRmxvYXQsaT1yKDU4KS50cmltO3QuZXhwb3J0cz0xL24ocigxMzgpK1wiLTBcIikhPT0tKDEvMCk/ZnVuY3Rpb24odCl7dmFyIGU9aShTdHJpbmcodCksMykscj1uKGUpO3JldHVybiAwPT09ciYmXCItXCI9PWUuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQpLnBhcnNlSW50LGk9cig1OCkudHJpbSxvPXIoMTM4KSxhPS9eW1xcLStdPzBbeFhdLzt0LmV4cG9ydHM9OCE9PW4obytcIjA4XCIpfHwyMiE9PW4obytcIjB4MTZcIik/ZnVuY3Rpb24odCxlKXt2YXIgcj1pKFN0cmluZyh0KSwzKTtyZXR1cm4gbihyLGU+Pj4wfHwoYS50ZXN0KHIpPzE2OjEwKSl9Om59LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPU9iamVjdC5pc3x8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWU/MCE9PXR8fDEvdD09PTEvZTp0IT10JiZlIT1lfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTApLGk9cigxMzcpLG89cigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLGEpe3ZhciBmPVN0cmluZyhvKHQpKSxzPWYubGVuZ3RoLHU9dm9pZCAwPT09cj9cIiBcIjpTdHJpbmcociksaD1uKGUpO2lmKGg8PXN8fFwiXCI9PXUpcmV0dXJuIGY7dmFyIGM9aC1zLGQ9aS5jYWxsKHUsTWF0aC5jZWlsKGMvdS5sZW5ndGgpKTtyZXR1cm4gZC5sZW5ndGg+YyYmKGQ9ZC5zbGljZSgwLGMpKSxhP2QrZjpmK2R9fSxmdW5jdGlvbih0LGUscil7ZS5mPXIoNyl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE3MSk7dC5leHBvcnRzPXIoNzkpKFwiTWFwXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPW4uZ2V0RW50cnkodGhpcyx0KTtyZXR1cm4gZSYmZS52fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5kZWYodGhpcywwPT09dD8wOnQsZSl9fSxuLCEwKX0sZnVuY3Rpb24odCxlLHIpe3IoOCkmJlwiZ1wiIT0vLi9nLmZsYWdzJiZyKDkpLmYoUmVnRXhwLnByb3RvdHlwZSxcImZsYWdzXCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6cig4MSl9KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMTcxKTt0LmV4cG9ydHM9cig3OSkoXCJTZXRcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKX19LHthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIG4uZGVmKHRoaXMsdD0wPT09dD8wOnQsdCl9fSxuKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigyNykoMCksbz1yKDE1KSxhPXIoMzYpLGY9cigxNzkpLHM9cigxNzMpLHU9cig2KSxoPWEuZ2V0V2VhayxjPU9iamVjdC5pc0V4dGVuc2libGUsZD1zLnVmc3RvcmUsbD17fSxwPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sYj17Z2V0OmZ1bmN0aW9uKHQpe2lmKHUodCkpe3ZhciBlPWgodCk7cmV0dXJuIGU9PT0hMD9kKHRoaXMpLmdldCh0KTplP2VbdGhpcy5faV06dm9pZCAwfX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHMuZGVmKHRoaXMsdCxlKX19LHY9dC5leHBvcnRzPXIoNzkpKFwiV2Vha01hcFwiLHAsYixzLCEwLCEwKTs3IT0obmV3IHYpLnNldCgoT2JqZWN0LmZyZWV6ZXx8T2JqZWN0KShsKSw3KS5nZXQobCkmJihuPXMuZ2V0Q29uc3RydWN0b3IocCksZihuLnByb3RvdHlwZSxiKSxhLk5FRUQ9ITAsaShbXCJkZWxldGVcIixcImhhc1wiLFwiZ2V0XCIsXCJzZXRcIl0sZnVuY3Rpb24odCl7dmFyIGU9di5wcm90b3R5cGUscj1lW3RdO28oZSx0LGZ1bmN0aW9uKGUsaSl7aWYodShlKSYmIWMoZSkpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyBuKTt2YXIgbz10aGlzLl9mW3RdKGUsaSk7cmV0dXJuXCJzZXRcIj09dD90aGlzOm99cmV0dXJuIHIuY2FsbCh0aGlzLGUsaSl9KX0pKX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQpe3Rocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrdCtcIicuXCIpfXIua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSxyLnJlc29sdmU9cix0LmV4cG9ydHM9cixyLmlkPTE5NH0sZnVuY3Rpb24odCxlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBuKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9ZnVuY3Rpb24gaSh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfXZhciBvPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpO3ZhciBpPW4odGhpcyxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkuY2FsbCh0aGlzKSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLFwibWVzc2FnZVwiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTp2b2lkIDAhPT10P1N0cmluZyh0KTpcIlwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksXCJuYW1lXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOmkuY29uc3RydWN0b3IubmFtZX0pLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShpLGkuY29uc3RydWN0b3IpLGl9cmV0dXJuIGkoZSx0KSxlfShFcnJvcik7dC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxyKXtyKDQ4NiksdC5leHBvcnRzPXIoMTk3KS5OdW1iZXIuaXNJbnRlZ2VyfSxmdW5jdGlvbih0LGUpe3ZhciByPXQuZXhwb3J0cz17dmVyc2lvbjpcIjIuNC4wXCJ9O1wibnVtYmVyXCI9PXR5cGVvZiBfX2UmJihfX2U9cil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDIwMCksaT1yKDE5Nyksbz1yKDQ3OCksYT1yKDQ4MCksZj1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24odCxlLHIpe3ZhciB1LGgsYyxkPXQmcy5GLGw9dCZzLkcscD10JnMuUyxiPXQmcy5QLHY9dCZzLkIseT10JnMuVyxtPWw/aTppW2VdfHwoaVtlXT17fSksZz1tW2ZdLHc9bD9uOnA/bltlXToobltlXXx8e30pW2ZdO2wmJihyPWUpO2Zvcih1IGluIHIpaD0hZCYmdyYmdm9pZCAwIT09d1t1XSxoJiZ1IGluIG18fChjPWg/d1t1XTpyW3VdLG1bdV09bCYmXCJmdW5jdGlvblwiIT10eXBlb2Ygd1t1XT9yW3VdOnYmJmg/byhjLG4pOnkmJndbdV09PWM/ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSxyLG4pe2lmKHRoaXMgaW5zdGFuY2VvZiB0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KGUpO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZSxyKX1yZXR1cm4gbmV3IHQoZSxyLG4pfXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGVbZl09dFtmXSxlfShjKTpiJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBjP28oRnVuY3Rpb24uY2FsbCxjKTpjLGImJigobS52aXJ0dWFsfHwobS52aXJ0dWFsPXt9KSlbdV09Yyx0JnMuUiYmZyYmIWdbdV0mJmEoZyx1LGMpKSl9O3MuRj0xLHMuRz0yLHMuUz00LHMuUD04LHMuQj0xNixzLlc9MzIscy5VPTY0LHMuUj0xMjgsdC5leHBvcnRzPXN9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4hIXQoKX1jYXRjaCh0KXtyZXR1cm4hMH19fSxmdW5jdGlvbih0LGUpe3ZhciByPXQuZXhwb3J0cz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcIm51bWJlclwiPT10eXBlb2YgX19nJiYoX19nPXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPXIoNDczKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXsvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5mdW5jdGlvbiBuKHQsZSl7aWYodD09PWUpcmV0dXJuIDA7Zm9yKHZhciByPXQubGVuZ3RoLG49ZS5sZW5ndGgsaT0wLG89TWF0aC5taW4ocixuKTtpPG87KytpKWlmKHRbaV0hPT1lW2ldKXtyPXRbaV0sbj1lW2ldO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH1mdW5jdGlvbiBpKHQpe3JldHVybiBlLkJ1ZmZlciYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5CdWZmZXIuaXNCdWZmZXI/ZS5CdWZmZXIuaXNCdWZmZXIodCk6IShudWxsPT10fHwhdC5faXNCdWZmZXIpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX1mdW5jdGlvbiBhKHQpe3JldHVybiFpKHQpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5BcnJheUJ1ZmZlciYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcodCk6ISF0JiYodCBpbnN0YW5jZW9mIERhdGFWaWV3fHwhISh0LmJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpKSl9ZnVuY3Rpb24gZih0KXtpZih3LmlzRnVuY3Rpb24odCkpe2lmKFMpcmV0dXJuIHQubmFtZTt2YXIgZT10LnRvU3RyaW5nKCkscj1lLm1hdGNoKEEpO3JldHVybiByJiZyWzFdfX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dC5sZW5ndGg8ZT90OnQuc2xpY2UoMCxlKTp0fWZ1bmN0aW9uIHUodCl7aWYoU3x8IXcuaXNGdW5jdGlvbih0KSlyZXR1cm4gdy5pbnNwZWN0KHQpO3ZhciBlPWYodCkscj1lP1wiOiBcIitlOlwiXCI7cmV0dXJuXCJbRnVuY3Rpb25cIityK1wiXVwifWZ1bmN0aW9uIGgodCl7cmV0dXJuIHModSh0LmFjdHVhbCksMTI4KStcIiBcIit0Lm9wZXJhdG9yK1wiIFwiK3ModSh0LmV4cGVjdGVkKSwxMjgpfWZ1bmN0aW9uIGModCxlLHIsbixpKXt0aHJvdyBuZXcgRS5Bc3NlcnRpb25FcnJvcih7bWVzc2FnZTpyLGFjdHVhbDp0LGV4cGVjdGVkOmUsb3BlcmF0b3I6bixzdGFja1N0YXJ0RnVuY3Rpb246aX0pfWZ1bmN0aW9uIGQodCxlKXt0fHxjKHQsITAsZSxcIj09XCIsRS5vayl9ZnVuY3Rpb24gbCh0LGUscixmKXtpZih0PT09ZSlyZXR1cm4hMDtpZihpKHQpJiZpKGUpKXJldHVybiAwPT09bih0LGUpO2lmKHcuaXNEYXRlKHQpJiZ3LmlzRGF0ZShlKSlyZXR1cm4gdC5nZXRUaW1lKCk9PT1lLmdldFRpbWUoKTtpZih3LmlzUmVnRXhwKHQpJiZ3LmlzUmVnRXhwKGUpKXJldHVybiB0LnNvdXJjZT09PWUuc291cmNlJiZ0Lmdsb2JhbD09PWUuZ2xvYmFsJiZ0Lm11bHRpbGluZT09PWUubXVsdGlsaW5lJiZ0Lmxhc3RJbmRleD09PWUubGFzdEluZGV4JiZ0Lmlnbm9yZUNhc2U9PT1lLmlnbm9yZUNhc2U7aWYobnVsbCE9PXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0fHxudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUpe2lmKGEodCkmJmEoZSkmJm8odCk9PT1vKGUpJiYhKHQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpKXJldHVybiAwPT09bihuZXcgVWludDhBcnJheSh0LmJ1ZmZlciksbmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpKTtpZihpKHQpIT09aShlKSlyZXR1cm4hMTtmPWZ8fHthY3R1YWw6W10sZXhwZWN0ZWQ6W119O3ZhciBzPWYuYWN0dWFsLmluZGV4T2YodCk7cmV0dXJuIHMhPT0tMSYmcz09PWYuZXhwZWN0ZWQuaW5kZXhPZihlKXx8KGYuYWN0dWFsLnB1c2godCksZi5leHBlY3RlZC5wdXNoKGUpLGIodCxlLHIsZikpfXJldHVybiByP3Q9PT1lOnQ9PWV9ZnVuY3Rpb24gcCh0KXtyZXR1cm5cIltvYmplY3QgQXJndW1lbnRzXVwiPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gYih0LGUscixuKXtpZihudWxsPT09dHx8dm9pZCAwPT09dHx8bnVsbD09PWV8fHZvaWQgMD09PWUpcmV0dXJuITE7aWYody5pc1ByaW1pdGl2ZSh0KXx8dy5pc1ByaW1pdGl2ZShlKSlyZXR1cm4gdD09PWU7aWYociYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKXJldHVybiExO3ZhciBpPXAodCksbz1wKGUpO2lmKGkmJiFvfHwhaSYmbylyZXR1cm4hMTtpZihpKXJldHVybiB0PU0uY2FsbCh0KSxlPU0uY2FsbChlKSxsKHQsZSxyKTt2YXIgYSxmLHM9ayh0KSx1PWsoZSk7aWYocy5sZW5ndGghPT11Lmxlbmd0aClyZXR1cm4hMTtmb3Iocy5zb3J0KCksdS5zb3J0KCksZj1zLmxlbmd0aC0xO2Y+PTA7Zi0tKWlmKHNbZl0hPT11W2ZdKXJldHVybiExO2ZvcihmPXMubGVuZ3RoLTE7Zj49MDtmLS0paWYoYT1zW2ZdLCFsKHRbYV0sZVthXSxyLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHYodCxlLHIpe2wodCxlLCEwKSYmYyh0LGUscixcIm5vdERlZXBTdHJpY3RFcXVhbFwiLHYpfWZ1bmN0aW9uIHkodCxlKXtpZighdHx8IWUpcmV0dXJuITE7aWYoXCJbb2JqZWN0IFJlZ0V4cF1cIj09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiBlLnRlc3QodCk7dHJ5e2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiEwfWNhdGNoKHQpe31yZXR1cm4hRXJyb3IuaXNQcm90b3R5cGVPZihlKSYmZS5jYWxsKHt9LHQpPT09ITB9ZnVuY3Rpb24gbSh0KXt2YXIgZTt0cnl7dCgpfWNhdGNoKHQpe2U9dH1yZXR1cm4gZX1mdW5jdGlvbiBnKHQsZSxyLG4pe3ZhciBpO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJibG9ja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1wic3RyaW5nXCI9PXR5cGVvZiByJiYobj1yLHI9bnVsbCksaT1tKGUpLG49KHImJnIubmFtZT9cIiAoXCIrci5uYW1lK1wiKS5cIjpcIi5cIikrKG4/XCIgXCIrbjpcIi5cIiksdCYmIWkmJmMoaSxyLFwiTWlzc2luZyBleHBlY3RlZCBleGNlcHRpb25cIituKTt2YXIgbz1cInN0cmluZ1wiPT10eXBlb2YgbixhPSF0JiZ3LmlzRXJyb3IoaSksZj0hdCYmaSYmIXI7aWYoKGEmJm8mJnkoaSxyKXx8ZikmJmMoaSxyLFwiR290IHVud2FudGVkIGV4Y2VwdGlvblwiK24pLHQmJmkmJnImJiF5KGkscil8fCF0JiZpKXRocm93IGl9dmFyIHc9cig2MDYpLF89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxNPUFycmF5LnByb3RvdHlwZS5zbGljZSxTPWZ1bmN0aW9uKCl7cmV0dXJuXCJmb29cIj09PWZ1bmN0aW9uKCl7fS5uYW1lfSgpLEU9dC5leHBvcnRzPWQsQT0vXFxzKmZ1bmN0aW9uXFxzKyhbXlxcKFxcc10qKVxccyovO0UuQXNzZXJ0aW9uRXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5uYW1lPVwiQXNzZXJ0aW9uRXJyb3JcIix0aGlzLmFjdHVhbD10LmFjdHVhbCx0aGlzLmV4cGVjdGVkPXQuZXhwZWN0ZWQsdGhpcy5vcGVyYXRvcj10Lm9wZXJhdG9yLHQubWVzc2FnZT8odGhpcy5tZXNzYWdlPXQubWVzc2FnZSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITEpOih0aGlzLm1lc3NhZ2U9aCh0aGlzKSx0aGlzLmdlbmVyYXRlZE1lc3NhZ2U9ITApO3ZhciBlPXQuc3RhY2tTdGFydEZ1bmN0aW9ufHxjO2lmKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsZSk7ZWxzZXt2YXIgcj1uZXcgRXJyb3I7aWYoci5zdGFjayl7dmFyIG49ci5zdGFjayxpPWYoZSksbz1uLmluZGV4T2YoXCJcXG5cIitpKTtpZihvPj0wKXt2YXIgYT1uLmluZGV4T2YoXCJcXG5cIixvKzEpO249bi5zdWJzdHJpbmcoYSsxKX10aGlzLnN0YWNrPW59fX0sdy5pbmhlcml0cyhFLkFzc2VydGlvbkVycm9yLEVycm9yKSxFLmZhaWw9YyxFLm9rPWQsRS5lcXVhbD1mdW5jdGlvbih0LGUscil7dCE9ZSYmYyh0LGUscixcIj09XCIsRS5lcXVhbCl9LEUubm90RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3Q9PWUmJmModCxlLHIsXCIhPVwiLEUubm90RXF1YWwpfSxFLmRlZXBFcXVhbD1mdW5jdGlvbih0LGUscil7bCh0LGUsITEpfHxjKHQsZSxyLFwiZGVlcEVxdWFsXCIsRS5kZWVwRXF1YWwpfSxFLmRlZXBTdHJpY3RFcXVhbD1mdW5jdGlvbih0LGUscil7bCh0LGUsITApfHxjKHQsZSxyLFwiZGVlcFN0cmljdEVxdWFsXCIsRS5kZWVwU3RyaWN0RXF1YWwpfSxFLm5vdERlZXBFcXVhbD1mdW5jdGlvbih0LGUscil7bCh0LGUsITEpJiZjKHQsZSxyLFwibm90RGVlcEVxdWFsXCIsRS5ub3REZWVwRXF1YWwpfSxFLm5vdERlZXBTdHJpY3RFcXVhbD12LEUuc3RyaWN0RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3QhPT1lJiZjKHQsZSxyLFwiPT09XCIsRS5zdHJpY3RFcXVhbCl9LEUubm90U3RyaWN0RXF1YWw9ZnVuY3Rpb24odCxlLHIpe3Q9PT1lJiZjKHQsZSxyLFwiIT09XCIsRS5ub3RTdHJpY3RFcXVhbCl9LEUudGhyb3dzPWZ1bmN0aW9uKHQsZSxyKXtnKCEwLHQsZSxyKX0sRS5kb2VzTm90VGhyb3c9ZnVuY3Rpb24odCxlLHIpe2coITEsdCxlLHIpfSxFLmlmRXJyb3I9ZnVuY3Rpb24odCl7aWYodCl0aHJvdyB0fTt2YXIgaz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpXy5jYWxsKHQscikmJmUucHVzaChyKTtyZXR1cm4gZX19KS5jYWxsKGUscigzOSkpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxyLGksZil7aWYoISh0aGlzIGluc3RhbmNlb2YgbikpcmV0dXJuIG5ldyBuKHQscixpKTthLmNhbGwodGhpcyksdGhpcy5fZmluSUQ9ZS5jb25jYXQoW2ksbmV3IGUoWzAsMCwwLDFdKV0pLGk9ZS5jb25jYXQoW2ksbmV3IGUoWzAsMCwwLDJdKV0pLHRoaXMuX2NpcGhlcj1uZXcgby5BRVMociksdGhpcy5fcHJldj1uZXcgZShpLmxlbmd0aCksdGhpcy5fY2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fc2VjQ2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fZGVjcnlwdD1mLHRoaXMuX2FsZW49MCx0aGlzLl9sZW49MCxpLmNvcHkodGhpcy5fcHJldiksdGhpcy5fbW9kZT10O3ZhciB1PW5ldyBlKDQpO3UuZmlsbCgwKSx0aGlzLl9naGFzaD1uZXcgcyh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHUpKSx0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj0wO3QubGVuZ3RoIT09ZS5sZW5ndGgmJnIrKztmb3IodmFyIG49TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLGk9LTE7KytpPG47KXIrPXRbaV1eZVtpXTtyZXR1cm4gcn12YXIgbz1yKDk0KSxhPXIoOTcpLGY9cigyKSxzPXIoNDk3KSx1PXIoNjcpO2YobixhKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9jYWxsZWQmJnRoaXMuX2FsZW4pe3ZhciByPTE2LXRoaXMuX2FsZW4lMTY7cjwxNiYmKHI9bmV3IGUociksci5maWxsKDApLHRoaXMuX2doYXNoLnVwZGF0ZShyKSl9dGhpcy5fY2FsbGVkPSEwO3ZhciBuPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHQpO3JldHVybiB0aGlzLl9kZWNyeXB0P3RoaXMuX2doYXNoLnVwZGF0ZSh0KTp0aGlzLl9naGFzaC51cGRhdGUobiksdGhpcy5fbGVuKz10Lmxlbmd0aCxufSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5fYXV0aFRhZyl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGFcIik7dmFyIHQ9dSh0aGlzLl9naGFzaC5maW5hbCg4KnRoaXMuX2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlzLl9kZWNyeXB0KXtpZihpKHQsdGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhXCIpfWVsc2UgdGhpcy5fYXV0aFRhZz10O3RoaXMuX2NpcGhlci5zY3J1YigpfSxuLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2RlY3J5cHQmJmUuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpcmV0dXJuIHRoaXMuX2F1dGhUYWc7dGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2RlY3J5cHQpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIik7dGhpcy5fYXV0aFRhZz10fSxuLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24odCl7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRpbmcgdG8gc2V0IEFBRCBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKTt0aGlzLl9naGFzaC51cGRhdGUodCksdGhpcy5fYWxlbis9dC5sZW5ndGh9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNjcpO2UuZW5jcnlwdD1mdW5jdGlvbih0LGUpe3ZhciByPW4oZSx0Ll9wcmV2KTtyZXR1cm4gdC5fcHJldj10Ll9jaXBoZXIuZW5jcnlwdEJsb2NrKHIpLHQuX3ByZXZ9LGUuZGVjcnlwdD1mdW5jdGlvbih0LGUpe3ZhciByPXQuX3ByZXY7dC5fcHJldj1lO3ZhciBpPXQuX2NpcGhlci5kZWNyeXB0QmxvY2soZSk7cmV0dXJuIG4oaSxyKX19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHIsbil7dmFyIG89ci5sZW5ndGgsYT1pKHIsZS5fY2FjaGUpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShvKSxlLl9wcmV2PXQuY29uY2F0KFtlLl9wcmV2LG4/cjphXSksYX12YXIgaT1yKDY3KTtlLmVuY3J5cHQ9ZnVuY3Rpb24oZSxyLGkpe2Zvcih2YXIgbyxhPW5ldyB0KFwiXCIpO3IubGVuZ3RoOyl7aWYoMD09PWUuX2NhY2hlLmxlbmd0aCYmKGUuX2NhY2hlPWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldiksZS5fcHJldj1uZXcgdChcIlwiKSksIShlLl9jYWNoZS5sZW5ndGg8PXIubGVuZ3RoKSl7YT10LmNvbmNhdChbYSxuKGUscixpKV0pO2JyZWFrfW89ZS5fY2FjaGUubGVuZ3RoLGE9dC5jb25jYXQoW2EsbihlLHIuc2xpY2UoMCxvKSxpKV0pLHI9ci5zbGljZShvKX1yZXR1cm4gYX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIodCxlLHIpe2Zvcih2YXIgaSxvLGEsZj0tMSxzPTgsdT0wOysrZjxzOylpPXQuX2NpcGhlci5lbmNyeXB0QmxvY2sodC5fcHJldiksbz1lJjE8PDctZj8xMjg6MCxhPWlbMF1ebyx1Kz0oMTI4JmEpPj5mJTgsdC5fcHJldj1uKHQuX3ByZXYscj9vOmEpO3JldHVybiB1fWZ1bmN0aW9uIG4oZSxyKXt2YXIgbj1lLmxlbmd0aCxpPS0xLG89bmV3IHQoZS5sZW5ndGgpO2ZvcihlPXQuY29uY2F0KFtlLG5ldyB0KFtyXSldKTsrK2k8bjspb1tpXT1lW2ldPDwxfGVbaSsxXT4+NztyZXR1cm4gb31lLmVuY3J5cHQ9ZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgbz1uLmxlbmd0aCxhPW5ldyB0KG8pLGY9LTE7KytmPG87KWFbZl09cihlLG5bZl0saSk7cmV0dXJuIGF9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUscixuKXt2YXIgaT1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGUuX3ByZXYpLG89aVswXV5yO3JldHVybiBlLl9wcmV2PXQuY29uY2F0KFtlLl9wcmV2LnNsaWNlKDEpLG5ldyB0KFtuP3I6b10pXSksb31lLmVuY3J5cHQ9ZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgbz1uLmxlbmd0aCxhPW5ldyB0KG8pLGY9LTE7KytmPG87KWFbZl09cihlLG5bZl0saSk7cmV0dXJuIGF9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlKXtlLmVuY3J5cHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fY2lwaGVyLmVuY3J5cHRCbG9jayhlKX0sZS5kZWNyeXB0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NpcGhlci5kZWNyeXB0QmxvY2soZSl9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQuX3ByZXY9dC5fY2lwaGVyLmVuY3J5cHRCbG9jayh0Ll9wcmV2KSx0Ll9wcmV2fXZhciBpPXIoNjcpO2UuZW5jcnlwdD1mdW5jdGlvbihlLHIpe2Zvcig7ZS5fY2FjaGUubGVuZ3RoPHIubGVuZ3RoOyllLl9jYWNoZT10LmNvbmNhdChbZS5fY2FjaGUsbihlKV0pO3ZhciBvPWUuX2NhY2hlLnNsaWNlKDAsci5sZW5ndGgpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShyLmxlbmd0aCksaShyLG8pfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0LHIsYSxmKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KG8uY2FsbCh0aGlzKSx0aGlzLl9jaXBoZXI9bmV3IGkuQUVTKHIpLHRoaXMuX3ByZXY9bmV3IGUoYS5sZW5ndGgpLHRoaXMuX2NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX3NlY0NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX2RlY3J5cHQ9ZixhLmNvcHkodGhpcy5fcHJldiksdm9pZCh0aGlzLl9tb2RlPXQpKTpuZXcgbih0LHIsYSl9dmFyIGk9cig5NCksbz1yKDk3KSxhPXIoMik7YShuLG8pLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHQsdGhpcy5fZGVjcnlwdCl9LG4ucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3RoaXMuX2NpcGhlci5zY3J1YigpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCl7ZVtcIlJTQS1TSEEyMjRcIl09ZS5zaGEyMjRXaXRoUlNBRW5jcnlwdGlvbj17c2lnbjpcInJzYVwiLGhhc2g6XCJzaGEyMjRcIixpZDpuZXcgdChcIjMwMmQzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwNDA1MDAwNDFjXCIsXCJoZXhcIil9LGVbXCJSU0EtU0hBMjU2XCJdPWUuc2hhMjU2V2l0aFJTQUVuY3J5cHRpb249e3NpZ246XCJyc2FcIixoYXNoOlwic2hhMjU2XCIsaWQ6bmV3IHQoXCIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMFwiLFwiaGV4XCIpfSxlW1wiUlNBLVNIQTM4NFwiXT1lLnNoYTM4NFdpdGhSU0FFbmNyeXB0aW9uPXtzaWduOlwicnNhXCIsaGFzaDpcInNoYTM4NFwiLGlkOm5ldyB0KFwiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzBcIixcImhleFwiKX0sZVtcIlJTQS1TSEE1MTJcIl09ZS5zaGE1MTJXaXRoUlNBRW5jcnlwdGlvbj17c2lnbjpcInJzYVwiLGhhc2g6XCJzaGE1MTJcIixpZDpuZXcgdChcIjMwNTEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMzA1MDAwNDQwXCIsXCJoZXhcIil9LGVbXCJSU0EtU0hBMVwiXT17c2lnbjpcInJzYVwiLGhhc2g6XCJzaGExXCIsaWQ6bmV3IHQoXCIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTRcIixcImhleFwiKX0sZVtcImVjZHNhLXdpdGgtU0hBMVwiXT17c2lnbjpcImVjZHNhXCIsaGFzaDpcInNoYTFcIixpZDpuZXcgdChcIlwiLFwiaGV4XCIpfSxlLkRTQT1lW1wiRFNBLVNIQTFcIl09ZVtcIkRTQS1TSEFcIl09e3NpZ246XCJkc2FcIixoYXNoOlwic2hhMVwiLGlkOm5ldyB0KFwiXCIsXCJoZXhcIil9LGVbXCJEU0EtU0hBMjI0XCJdPWVbXCJEU0EtV0lUSC1TSEEyMjRcIl09e3NpZ246XCJkc2FcIixoYXNoOlwic2hhMjI0XCIsaWQ6bmV3IHQoXCJcIixcImhleFwiKX0sZVtcIkRTQS1TSEEyNTZcIl09ZVtcIkRTQS1XSVRILVNIQTI1NlwiXT17c2lnbjpcImRzYVwiLGhhc2g6XCJzaGEyNTZcIixpZDpuZXcgdChcIlwiLFwiaGV4XCIpfSxlW1wiRFNBLVNIQTM4NFwiXT1lW1wiRFNBLVdJVEgtU0hBMzg0XCJdPXtzaWduOlwiZHNhXCIsaGFzaDpcInNoYTM4NFwiLGlkOm5ldyB0KFwiXCIsXCJoZXhcIil9LGVbXCJEU0EtU0hBNTEyXCJdPWVbXCJEU0EtV0lUSC1TSEE1MTJcIl09e3NpZ246XCJkc2FcIixoYXNoOlwic2hhNTEyXCIsaWQ6bmV3IHQoXCJcIixcImhleFwiKX0sZVtcIkRTQS1SSVBFTUQxNjBcIl09e3NpZ246XCJkc2FcIixoYXNoOlwicm1kMTYwXCIsaWQ6bmV3IHQoXCJcIixcImhleFwiKX0sZVtcIlJTQS1SSVBFTUQxNjBcIl09ZS5yaXBlbWQxNjBXaXRoUlNBPXtzaWduOlwicnNhXCIsaGFzaDpcInJtZDE2MFwiLGlkOm5ldyB0KFwiMzAyMTMwMDkwNjA1MmIyNDAzMDIwMTA1MDAwNDE0XCIsXCJoZXhcIil9LGVbXCJSU0EtTUQ1XCJdPWUubWQ1V2l0aFJTQUVuY3J5cHRpb249e3NpZ246XCJyc2FcIixoYXNoOlwibWQ1XCIsaWQ6bmV3IHQoXCIzMDIwMzAwYzA2MDgyYTg2NDg4NmY3MGQwMjA1MDUwMDA0MTBcIixcImhleFwiKX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO2VbXCIxLjMuMTMyLjAuMTBcIl09XCJzZWNwMjU2azFcIixlW1wiMS4zLjEzMi4wLjMzXCJdPVwicDIyNFwiLGVbXCIxLjIuODQwLjEwMDQ1LjMuMS4xXCJdPVwicDE5MlwiLGVbXCIxLjIuODQwLjEwMDQ1LjMuMS43XCJdPVwicDI1NlwiLGVbXCIxLjMuMTMyLjAuMzRcIl09XCJwMzg0XCIsZVtcIjEuMy4xMzIuMC4zNVwiXT1cInA1MjFcIn0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe3ZhciByO1wib2JqZWN0XCIhPXR5cGVvZiB0fHxlLmlzQnVmZmVyKHQpfHwocj10LnBhc3NwaHJhc2UsdD10LmtleSksXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQpKTt2YXIgbixhLHM9Zih0LHIpLHU9cy50YWcsaD1zLmRhdGE7c3dpdGNoKHUpe2Nhc2VcIlBVQkxJQyBLRVlcIjpzd2l0Y2goYT1vLlB1YmxpY0tleS5kZWNvZGUoaCxcImRlclwiKSxuPWEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKFwiLlwiKSl7Y2FzZVwiMS4yLjg0MC4xMTM1NDkuMS4xLjFcIjpyZXR1cm4gby5SU0FQdWJsaWNLZXkuZGVjb2RlKGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLFwiZGVyXCIpO2Nhc2VcIjEuMi44NDAuMTAwNDUuMi4xXCI6cmV0dXJuIGEuc3ViamVjdFByaXZhdGVLZXk9YS5zdWJqZWN0UHVibGljS2V5LHt0eXBlOlwiZWNcIixkYXRhOmF9O2Nhc2VcIjEuMi44NDAuMTAwNDAuNC4xXCI6cmV0dXJuIGEuYWxnb3JpdGhtLnBhcmFtcy5wdWJfa2V5PW8uRFNBcGFyYW0uZGVjb2RlKGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLFwiZGVyXCIpLHt0eXBlOlwiZHNhXCIsZGF0YTphLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgaWQgXCIrbil9dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgdHlwZSBcIit1KTtjYXNlXCJFTkNSWVBURUQgUFJJVkFURSBLRVlcIjpoPW8uRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoaCxcImRlclwiKSxoPWkoaCxyKTtjYXNlXCJQUklWQVRFIEtFWVwiOnN3aXRjaChhPW8uUHJpdmF0ZUtleS5kZWNvZGUoaCxcImRlclwiKSxuPWEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKFwiLlwiKSl7Y2FzZVwiMS4yLjg0MC4xMTM1NDkuMS4xLjFcIjpyZXR1cm4gby5SU0FQcml2YXRlS2V5LmRlY29kZShhLnN1YmplY3RQcml2YXRlS2V5LFwiZGVyXCIpO2Nhc2VcIjEuMi44NDAuMTAwNDUuMi4xXCI6cmV0dXJue2N1cnZlOmEuYWxnb3JpdGhtLmN1cnZlLHByaXZhdGVLZXk6by5FQ1ByaXZhdGVLZXkuZGVjb2RlKGEuc3ViamVjdFByaXZhdGVLZXksXCJkZXJcIikucHJpdmF0ZUtleX07Y2FzZVwiMS4yLjg0MC4xMDA0MC40LjFcIjpyZXR1cm4gYS5hbGdvcml0aG0ucGFyYW1zLnByaXZfa2V5PW8uRFNBcGFyYW0uZGVjb2RlKGEuc3ViamVjdFByaXZhdGVLZXksXCJkZXJcIikse3R5cGU6XCJkc2FcIixwYXJhbXM6YS5hbGdvcml0aG0ucGFyYW1zfTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcInVua25vd24ga2V5IGlkIFwiK24pfXRocm93IG5ldyBFcnJvcihcInVua25vd24ga2V5IHR5cGUgXCIrdSk7Y2FzZVwiUlNBIFBVQkxJQyBLRVlcIjpyZXR1cm4gby5SU0FQdWJsaWNLZXkuZGVjb2RlKGgsXCJkZXJcIik7Y2FzZVwiUlNBIFBSSVZBVEUgS0VZXCI6cmV0dXJuIG8uUlNBUHJpdmF0ZUtleS5kZWNvZGUoaCxcImRlclwiKTtjYXNlXCJEU0EgUFJJVkFURSBLRVlcIjpyZXR1cm57dHlwZTpcImRzYVwiLHBhcmFtczpvLkRTQVByaXZhdGVLZXkuZGVjb2RlKGgsXCJkZXJcIil9O2Nhc2VcIkVDIFBSSVZBVEUgS0VZXCI6cmV0dXJuIGg9by5FQ1ByaXZhdGVLZXkuZGVjb2RlKGgsXCJkZXJcIikse2N1cnZlOmgucGFyYW1ldGVycy52YWx1ZSxwcml2YXRlS2V5OmgucHJpdmF0ZUtleX07ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSB0eXBlIFwiK3UpfX1mdW5jdGlvbiBpKHQscil7dmFyIG49dC5hbGdvcml0aG0uZGVjcnlwdC5rZGUua2RlcGFyYW1zLnNhbHQsaT1wYXJzZUludCh0LmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwxMCksbz1hW3QuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLmFsZ28uam9pbihcIi5cIildLGY9dC5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXYsaD10LnN1YmplY3RQcml2YXRlS2V5LGM9cGFyc2VJbnQoby5zcGxpdChcIi1cIilbMV0sMTApLzgsZD11LnBia2RmMlN5bmMocixuLGksYyksbD1zLmNyZWF0ZURlY2lwaGVyaXYobyxkLGYpLHA9W107cmV0dXJuIHAucHVzaChsLnVwZGF0ZShoKSkscC5wdXNoKGwuZmluYWwoKSksZS5jb25jYXQocCl9dmFyIG89cig1MjgpLGE9cig0NjYpLGY9cig1MjkpLHM9cigyMTkpLHU9cigxNTEpO3QuZXhwb3J0cz1uLG4uc2lnbmF0dXJlPW8uc2lnbmF0dXJlfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gYS5jYWxsKHRoaXMsZSksZi5pc0J1ZmZlcih0KT8odGhpcy5iYXNlPXQsdGhpcy5vZmZzZXQ9MCx2b2lkKHRoaXMubGVuZ3RoPXQubGVuZ3RoKSk6dm9pZCB0aGlzLmVycm9yKFwiSW5wdXQgbm90IEJ1ZmZlclwiKX1mdW5jdGlvbiBpKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSl0aGlzLmxlbmd0aD0wLHRoaXMudmFsdWU9dC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpfHwodD1uZXcgaSh0LGUpKSx0aGlzLmxlbmd0aCs9dC5sZW5ndGgsdH0sdGhpcyk7ZWxzZSBpZihcIm51bWJlclwiPT10eXBlb2YgdCl7aWYoISgwPD10JiZ0PD0yNTUpKXJldHVybiBlLmVycm9yKFwibm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZVwiKTt0aGlzLnZhbHVlPXQsdGhpcy5sZW5ndGg9MX1lbHNlIGlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRoaXMudmFsdWU9dCx0aGlzLmxlbmd0aD1mLmJ5dGVMZW5ndGgodCk7ZWxzZXtpZighZi5pc0J1ZmZlcih0KSlyZXR1cm4gZS5lcnJvcihcIlVuc3VwcG9ydGVkIHR5cGU6IFwiK3R5cGVvZiB0KTt0aGlzLnZhbHVlPXQsdGhpcy5sZW5ndGg9dC5sZW5ndGh9fXZhciBvPXIoMiksYT1yKDY4KS5SZXBvcnRlcixmPXIoMSkuQnVmZmVyO28obixhKSxlLkRlY29kZXJCdWZmZXI9bixuLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKCl7cmV0dXJue29mZnNldDp0aGlzLm9mZnNldCxyZXBvcnRlcjphLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcyl9fSxuLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBuKHRoaXMuYmFzZSk7cmV0dXJuIGUub2Zmc2V0PXQub2Zmc2V0LGUubGVuZ3RoPXRoaXMub2Zmc2V0LHRoaXMub2Zmc2V0PXQub2Zmc2V0LGEucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLHQucmVwb3J0ZXIpLGV9LG4ucHJvdG90eXBlLmlzRW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQ9PT10aGlzLmxlbmd0aH0sbi5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9mZnNldCsxPD10aGlzLmxlbmd0aD90aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssITApOnRoaXMuZXJyb3IodHx8XCJEZWNvZGVyQnVmZmVyIG92ZXJydW5cIil9LG4ucHJvdG90eXBlLnNraXA9ZnVuY3Rpb24odCxlKXtpZighKHRoaXMub2Zmc2V0K3Q8PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpcy5lcnJvcihlfHxcIkRlY29kZXJCdWZmZXIgb3ZlcnJ1blwiKTt2YXIgcj1uZXcgbih0aGlzLmJhc2UpO3JldHVybiByLl9yZXBvcnRlclN0YXRlPXRoaXMuX3JlcG9ydGVyU3RhdGUsci5vZmZzZXQ9dGhpcy5vZmZzZXQsci5sZW5ndGg9dGhpcy5vZmZzZXQrdCx0aGlzLm9mZnNldCs9dCxyfSxuLnByb3RvdHlwZS5yYXc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYmFzZS5zbGljZSh0P3Qub2Zmc2V0OnRoaXMub2Zmc2V0LHRoaXMubGVuZ3RoKX0sZS5FbmNvZGVyQnVmZmVyPWksaS5wcm90b3R5cGUuam9pbj1mdW5jdGlvbih0LGUpe3JldHVybiB0fHwodD1uZXcgZih0aGlzLmxlbmd0aCkpLGV8fChlPTApLDA9PT10aGlzLmxlbmd0aD90OihBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpP3RoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihyKXtyLmpvaW4odCxlKSxlKz1yLmxlbmd0aH0pOihcIm51bWJlclwiPT10eXBlb2YgdGhpcy52YWx1ZT90W2VdPXRoaXMudmFsdWU6XCJzdHJpbmdcIj09dHlwZW9mIHRoaXMudmFsdWU/dC53cml0ZSh0aGlzLnZhbHVlLGUpOmYuaXNCdWZmZXIodGhpcy52YWx1ZSkmJnRoaXMudmFsdWUuY29weSh0LGUpLGUrPXRoaXMubGVuZ3RoKSx0KX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lO24uX3JldmVyc2U9ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7KDB8cik9PXImJihyfD0wKTt2YXIgbj10W3JdO2Vbbl09cn0pLGV9LG4uZGVyPXIoNTMzKX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5lbmM9XCJkZXJcIix0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZW50aXR5PXQsdGhpcy50cmVlPW5ldyBpLHRoaXMudHJlZS5faW5pdCh0LmJvZHkpfWZ1bmN0aW9uIGkodCl7dS5Ob2RlLmNhbGwodGhpcyxcImRlclwiLHQpfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj10LnJlYWRVSW50OChlKTtpZih0LmlzRXJyb3IocikpcmV0dXJuIHI7dmFyIG49Yy50YWdDbGFzc1tyPj42XSxpPTA9PT0oMzImcik7aWYoMzE9PT0oMzEmcikpe3ZhciBvPXI7Zm9yKHI9MDsxMjg9PT0oMTI4Jm8pOyl7aWYobz10LnJlYWRVSW50OChlKSx0LmlzRXJyb3IobykpcmV0dXJuIG87cjw8PTcscnw9MTI3Jm99fWVsc2UgciY9MzE7dmFyIGE9Yy50YWdbcl07cmV0dXJue2NsczpuLHByaW1pdGl2ZTppLHRhZzpyLHRhZ1N0cjphfX1mdW5jdGlvbiBhKHQsZSxyKXt2YXIgbj10LnJlYWRVSW50OChyKTtpZih0LmlzRXJyb3IobikpcmV0dXJuIG47aWYoIWUmJjEyOD09PW4pcmV0dXJuIG51bGw7aWYoMD09PSgxMjgmbikpcmV0dXJuIG47dmFyIGk9MTI3Jm47aWYoaT49NClyZXR1cm4gdC5lcnJvcihcImxlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmdcIik7bj0wO2Zvcih2YXIgbz0wO288aTtvKyspe248PD04O3ZhciBhPXQucmVhZFVJbnQ4KHIpO2lmKHQuaXNFcnJvcihhKSlyZXR1cm4gYTtufD1hfXJldHVybiBufXZhciBmPXIoMikscz1yKDEwMCksdT1zLmJhc2UsaD1zLmJpZ251bSxjPXMuY29uc3RhbnRzLmRlcjt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHUuRGVjb2RlckJ1ZmZlcnx8KHQ9bmV3IHUuRGVjb2RlckJ1ZmZlcih0LGUpKSx0aGlzLnRyZWUuX2RlY29kZSh0LGUpfSxmKGksdS5Ob2RlKSxpLnByb3RvdHlwZS5fcGVla1RhZz1mdW5jdGlvbih0LGUscil7aWYodC5pc0VtcHR5KCkpcmV0dXJuITE7dmFyIG49dC5zYXZlKCksaT1vKHQsJ0ZhaWxlZCB0byBwZWVrIHRhZzogXCInK2UrJ1wiJyk7cmV0dXJuIHQuaXNFcnJvcihpKT9pOih0LnJlc3RvcmUobiksaS50YWc9PT1lfHxpLnRhZ1N0cj09PWV8fGkudGFnU3RyK1wib2ZcIj09PWV8fHIpfSxpLnByb3RvdHlwZS5fZGVjb2RlVGFnPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1vKHQsJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mIFwiJytlKydcIicpO2lmKHQuaXNFcnJvcihuKSlyZXR1cm4gbjt2YXIgaT1hKHQsbi5wcmltaXRpdmUsJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJytlKydcIicpO2lmKHQuaXNFcnJvcihpKSlyZXR1cm4gaTtpZighciYmbi50YWchPT1lJiZuLnRhZ1N0ciE9PWUmJm4udGFnU3RyK1wib2ZcIiE9PWUpcmV0dXJuIHQuZXJyb3IoJ0ZhaWxlZCB0byBtYXRjaCB0YWc6IFwiJytlKydcIicpO2lmKG4ucHJpbWl0aXZlfHxudWxsIT09aSlyZXR1cm4gdC5za2lwKGksJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicrZSsnXCInKTt2YXIgZj10LnNhdmUoKSxzPXRoaXMuX3NraXBVbnRpbEVuZCh0LCdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiBcIicrdGhpcy50YWcrJ1wiJyk7cmV0dXJuIHQuaXNFcnJvcihzKT9zOihpPXQub2Zmc2V0LWYub2Zmc2V0LHQucmVzdG9yZShmKSx0LnNraXAoaSwnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJytlKydcIicpKX0saS5wcm90b3R5cGUuX3NraXBVbnRpbEVuZD1mdW5jdGlvbih0LGUpe2Zvcig7Oyl7dmFyIHI9byh0LGUpO2lmKHQuaXNFcnJvcihyKSlyZXR1cm4gcjt2YXIgbj1hKHQsci5wcmltaXRpdmUsZSk7aWYodC5pc0Vycm9yKG4pKXJldHVybiBuO3ZhciBpO2lmKGk9ci5wcmltaXRpdmV8fG51bGwhPT1uP3Quc2tpcChuKTp0aGlzLl9za2lwVW50aWxFbmQodCxlKSx0LmlzRXJyb3IoaSkpcmV0dXJuIGk7aWYoXCJlbmRcIj09PXIudGFnU3RyKWJyZWFrfX0saS5wcm90b3R5cGUuX2RlY29kZUxpc3Q9ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBpPVtdOyF0LmlzRW1wdHkoKTspe3ZhciBvPXRoaXMuX3BlZWtUYWcodCxcImVuZFwiKTtpZih0LmlzRXJyb3IobykpcmV0dXJuIG87dmFyIGE9ci5kZWNvZGUodCxcImRlclwiLG4pO2lmKHQuaXNFcnJvcihhKSYmbylicmVhaztpLnB1c2goYSl9cmV0dXJuIGl9LGkucHJvdG90eXBlLl9kZWNvZGVTdHI9ZnVuY3Rpb24odCxlKXtpZihcImJpdHN0clwiPT09ZSl7dmFyIHI9dC5yZWFkVUludDgoKTtyZXR1cm4gdC5pc0Vycm9yKHIpP3I6e3VudXNlZDpyLGRhdGE6dC5yYXcoKX19aWYoXCJibXBzdHJcIj09PWUpe3ZhciBuPXQucmF3KCk7aWYobi5sZW5ndGglMj09PTEpcmV0dXJuIHQuZXJyb3IoXCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaFwiKTtmb3IodmFyIGk9XCJcIixvPTA7bzxuLmxlbmd0aC8yO28rKylpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG4ucmVhZFVJbnQxNkJFKDIqbykpO3JldHVybiBpfWlmKFwibnVtc3RyXCI9PT1lKXt2YXIgYT10LnJhdygpLnRvU3RyaW5nKFwiYXNjaWlcIik7cmV0dXJuIHRoaXMuX2lzTnVtc3RyKGEpP2E6dC5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVyc1wiKX1pZihcIm9jdHN0clwiPT09ZSlyZXR1cm4gdC5yYXcoKTtpZihcInByaW50c3RyXCI9PT1lKXt2YXIgZj10LnJhdygpLnRvU3RyaW5nKFwiYXNjaWlcIik7cmV0dXJuIHRoaXMuX2lzUHJpbnRzdHIoZik/Zjp0LmVycm9yKFwiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnNcIil9cmV0dXJuL3N0ciQvLnRlc3QoZSk/dC5yYXcoKS50b1N0cmluZygpOnQuZXJyb3IoXCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogXCIrZStcIiB1bnN1cHBvcnRlZFwiKX0saS5wcm90b3R5cGUuX2RlY29kZU9iamlkPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4saT1bXSxvPTA7IXQuaXNFbXB0eSgpOyl7dmFyIGE9dC5yZWFkVUludDgoKTtvPDw9NyxvfD0xMjcmYSwwPT09KDEyOCZhKSYmKGkucHVzaChvKSxvPTApfTEyOCZhJiZpLnB1c2gobyk7dmFyIGY9aVswXS80MHwwLHM9aVswXSU0MDtpZihuPXI/aTpbZixzXS5jb25jYXQoaS5zbGljZSgxKSksZSl7dmFyIHU9ZVtuLmpvaW4oXCIgXCIpXTt2b2lkIDA9PT11JiYodT1lW24uam9pbihcIi5cIildKSx2b2lkIDAhPT11JiYobj11KX1yZXR1cm4gbn0saS5wcm90b3R5cGUuX2RlY29kZVRpbWU9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnJhdygpLnRvU3RyaW5nKCk7aWYoXCJnZW50aW1lXCI9PT1lKXZhciBuPTB8ci5zbGljZSgwLDQpLGk9MHxyLnNsaWNlKDQsNiksbz0wfHIuc2xpY2UoNiw4KSxhPTB8ci5zbGljZSg4LDEwKSxmPTB8ci5zbGljZSgxMCwxMikscz0wfHIuc2xpY2UoMTIsMTQpO2Vsc2V7aWYoXCJ1dGN0aW1lXCIhPT1lKXJldHVybiB0LmVycm9yKFwiRGVjb2RpbmcgXCIrZStcIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO3ZhciBuPTB8ci5zbGljZSgwLDIpLGk9MHxyLnNsaWNlKDIsNCksbz0wfHIuc2xpY2UoNCw2KSxhPTB8ci5zbGljZSg2LDgpLGY9MHxyLnNsaWNlKDgsMTApLHM9MHxyLnNsaWNlKDEwLDEyKTtuPW48NzA/MmUzK246MTkwMCtufXJldHVybiBEYXRlLlVUQyhuLGktMSxvLGEsZixzLDApfSxpLnByb3RvdHlwZS5fZGVjb2RlTnVsbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0saS5wcm90b3R5cGUuX2RlY29kZUJvb2w9ZnVuY3Rpb24odCl7dmFyIGU9dC5yZWFkVUludDgoKTtyZXR1cm4gdC5pc0Vycm9yKGUpP2U6MCE9PWV9LGkucHJvdG90eXBlLl9kZWNvZGVJbnQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10LnJhdygpLG49bmV3IGgocik7cmV0dXJuIGUmJihuPWVbbi50b1N0cmluZygxMCldfHxuKSxufSxpLnByb3RvdHlwZS5fdXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHQ9dChlKSksdC5fZ2V0RGVjb2RlcihcImRlclwiKS50cmVlfX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5lbmM9XCJkZXJcIix0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZW50aXR5PXQsdGhpcy50cmVlPW5ldyBpLHRoaXMudHJlZS5faW5pdCh0LmJvZHkpfWZ1bmN0aW9uIGkodCl7aC5Ob2RlLmNhbGwodGhpcyxcImRlclwiLHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQ8MTA/XCIwXCIrdDp0fWZ1bmN0aW9uIGEodCxlLHIsbil7dmFyIGk7aWYoXCJzZXFvZlwiPT09dD90PVwic2VxXCI6XCJzZXRvZlwiPT09dCYmKHQ9XCJzZXRcIiksYy50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkodCkpaT1jLnRhZ0J5TmFtZVt0XTtlbHNle2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0fHwoMHx0KSE9PXQpcmV0dXJuIG4uZXJyb3IoXCJVbmtub3duIHRhZzogXCIrdCk7aT10fXJldHVybiBpPj0zMT9uLmVycm9yKFwiTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkXCIpOihlfHwoaXw9MzIpLGl8PWMudGFnQ2xhc3NCeU5hbWVbcnx8XCJ1bml2ZXJzYWxcIl08PDYpfXZhciBmPXIoMikscz1yKDEpLkJ1ZmZlcix1PXIoMTAwKSxoPXUuYmFzZSxjPXUuY29uc3RhbnRzLmRlcjt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy50cmVlLl9lbmNvZGUodCxlKS5qb2luKCl9LGYoaSxoLk5vZGUpLGkucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGU9ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9YSh0LGUscix0aGlzLnJlcG9ydGVyKTtpZihuLmxlbmd0aDwxMjgpe3ZhciBvPW5ldyBzKDIpO3JldHVybiBvWzBdPWksb1sxXT1uLmxlbmd0aCx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtvLG5dKX1mb3IodmFyIGY9MSx1PW4ubGVuZ3RoO3U+PTI1Njt1Pj49OClmKys7dmFyIG89bmV3IHMoMitmKTtvWzBdPWksb1sxXT0xMjh8Zjtmb3IodmFyIHU9MStmLGg9bi5sZW5ndGg7aD4wO3UtLSxoPj49OClvW3VdPTI1NSZoO3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFtvLG5dKX0saS5wcm90b3R5cGUuX2VuY29kZVN0cj1mdW5jdGlvbih0LGUpe2lmKFwiYml0c3RyXCI9PT1lKXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswfHQudW51c2VkLHQuZGF0YV0pO2lmKFwiYm1wc3RyXCI9PT1lKXtmb3IodmFyIHI9bmV3IHMoMip0Lmxlbmd0aCksbj0wO248dC5sZW5ndGg7bisrKXIud3JpdGVVSW50MTZCRSh0LmNoYXJDb2RlQXQobiksMipuKTtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihyKX1yZXR1cm5cIm51bXN0clwiPT09ZT90aGlzLl9pc051bXN0cih0KT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHQpOnRoaXMucmVwb3J0ZXIuZXJyb3IoXCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzIG9ubHkgZGlnaXRzIGFuZCBzcGFjZVwiKTpcInByaW50c3RyXCI9PT1lP3RoaXMuX2lzUHJpbnRzdHIodCk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0KTp0aGlzLnJlcG9ydGVyLmVycm9yKFwiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzIG9ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggcGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sIHF1ZXN0aW9uIG1hcmtcIik6L3N0ciQvLnRlc3QoZSk/dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0KTp0aGlzLnJlcG9ydGVyLmVycm9yKFwiRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IFwiK2UrXCIgdW5zdXBwb3J0ZWRcIil9LGkucHJvdG90eXBlLl9lbmNvZGVPYmppZD1mdW5jdGlvbih0LGUscil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKCFlKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwic3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZFwiKTtpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcIm9iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwXCIpO3Q9ZVt0XS5zcGxpdCgvW1xcc1xcLl0rL2cpO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl18PTB9ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt0PXQuc2xpY2UoKTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dfD0wfWlmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwib2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgZ290OiBcIitKU09OLnN0cmluZ2lmeSh0KSk7aWYoIXIpe2lmKHRbMV0+PTQwKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwiU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CXCIpO3Quc3BsaWNlKDAsMiw0MCp0WzBdK3RbMV0pfWZvcih2YXIgaT0wLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIG89dFtuXTtmb3IoaSsrO28+PTEyODtvPj49NylpKyt9Zm9yKHZhciBhPW5ldyBzKGkpLGY9YS5sZW5ndGgtMSxuPXQubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciBvPXRbbl07Zm9yKGFbZi0tXT0xMjcmbzsobz4+PTcpPjA7KWFbZi0tXT0xMjh8MTI3Jm99cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoYSl9LGkucHJvdG90eXBlLl9lbmNvZGVUaW1lPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1uZXcgRGF0ZSh0KTtyZXR1cm5cImdlbnRpbWVcIj09PWU/cj1bbyhuLmdldEZ1bGxZZWFyKCkpLG8obi5nZXRVVENNb250aCgpKzEpLG8obi5nZXRVVENEYXRlKCkpLG8obi5nZXRVVENIb3VycygpKSxvKG4uZ2V0VVRDTWludXRlcygpKSxvKG4uZ2V0VVRDU2Vjb25kcygpKSxcIlpcIl0uam9pbihcIlwiKTpcInV0Y3RpbWVcIj09PWU/cj1bbyhuLmdldEZ1bGxZZWFyKCklMTAwKSxvKG4uZ2V0VVRDTW9udGgoKSsxKSxvKG4uZ2V0VVRDRGF0ZSgpKSxvKG4uZ2V0VVRDSG91cnMoKSksbyhuLmdldFVUQ01pbnV0ZXMoKSksbyhuLmdldFVUQ1NlY29uZHMoKSksXCJaXCJdLmpvaW4oXCJcIik6dGhpcy5yZXBvcnRlci5lcnJvcihcIkVuY29kaW5nIFwiK2UrXCIgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKSx0aGlzLl9lbmNvZGVTdHIocixcIm9jdHN0clwiKX0saS5wcm90b3R5cGUuX2VuY29kZU51bGw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihcIlwiKX0saS5wcm90b3R5cGUuX2VuY29kZUludD1mdW5jdGlvbih0LGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXtpZighZSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcIlN0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXBcIik7aWYoIWUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJWYWx1ZXMgbWFwIGRvZXNuJ3QgY29udGFpbjogXCIrSlNPTi5zdHJpbmdpZnkodCkpO3Q9ZVt0XX1pZihcIm51bWJlclwiIT10eXBlb2YgdCYmIXMuaXNCdWZmZXIodCkpe3ZhciByPXQudG9BcnJheSgpOyF0LnNpZ24mJjEyOCZyWzBdJiZyLnVuc2hpZnQoMCksdD1uZXcgcyhyKX1pZihzLmlzQnVmZmVyKHQpKXt2YXIgbj10Lmxlbmd0aDswPT09dC5sZW5ndGgmJm4rKzt2YXIgaT1uZXcgcyhuKTtyZXR1cm4gdC5jb3B5KGkpLDA9PT10Lmxlbmd0aCYmKGlbMF09MCksdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihpKX1pZih0PDEyOClyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0KTtpZih0PDI1NilyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCx0XSk7Zm9yKHZhciBuPTEsbz10O28+PTI1NjtvPj49OCluKys7Zm9yKHZhciBpPW5ldyBBcnJheShuKSxvPWkubGVuZ3RoLTE7bz49MDtvLS0paVtvXT0yNTUmdCx0Pj49ODtyZXR1cm4gMTI4JmlbMF0mJmkudW5zaGlmdCgwKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG5ldyBzKGkpKX0saS5wcm90b3R5cGUuX2VuY29kZUJvb2w9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodD8yNTU6MCl9LGkucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24odCxlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10KGUpKSx0Ll9nZXRFbmNvZGVyKFwiZGVyXCIpLnRyZWV9LGkucHJvdG90eXBlLl9za2lwRGVmYXVsdD1mdW5jdGlvbih0LGUscil7dmFyIG4saT10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PWkuZGVmYXVsdClyZXR1cm4hMTt2YXIgbz10LmpvaW4oKTtpZih2b2lkIDA9PT1pLmRlZmF1bHRCdWZmZXImJihpLmRlZmF1bHRCdWZmZXI9dGhpcy5fZW5jb2RlVmFsdWUoaS5kZWZhdWx0LGUscikuam9pbigpKSxvLmxlbmd0aCE9PWkuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpcmV0dXJuITE7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylpZihvW25dIT09aS5kZWZhdWx0QnVmZmVyW25dKXJldHVybiExO3JldHVybiEwfX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscixpLGYpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXJldHVybiBuZXcgbih0LHIsaSk7YS5jYWxsKHRoaXMpLHRoaXMuX2ZpbklEPWUuY29uY2F0KFtpLG5ldyBlKFswLDAsMCwxXSldKSxpPWUuY29uY2F0KFtpLG5ldyBlKFswLDAsMCwyXSldKSx0aGlzLl9jaXBoZXI9bmV3IG8uQUVTKHIpLHRoaXMuX3ByZXY9bmV3IGUoaS5sZW5ndGgpLHRoaXMuX2NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX3NlY0NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX2RlY3J5cHQ9Zix0aGlzLl9hbGVuPTAsdGhpcy5fbGVuPTAsaS5jb3B5KHRoaXMuX3ByZXYpLHRoaXMuX21vZGU9dDt2YXIgdT1uZXcgZSg0KTt1LmZpbGwoMCksdGhpcy5fZ2hhc2g9bmV3IHModGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh1KSksdGhpcy5fYXV0aFRhZz1udWxsLHRoaXMuX2NhbGxlZD0hMX1mdW5jdGlvbiBpKHQsZSl7dmFyIHI9MDt0Lmxlbmd0aCE9PWUubGVuZ3RoJiZyKys7Zm9yKHZhciBuPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKSxpPS0xOysraTxuOylyKz10W2ldXmVbaV07cmV0dXJuIHJ9dmFyIG89cigxMDEpLGE9cigxMDMpLGY9cigyKSxzPXIoNTQxKSx1PXIoNjkpO2YobixhKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLl9jYWxsZWQmJnRoaXMuX2FsZW4pe3ZhciByPTE2LXRoaXMuX2FsZW4lMTY7cjwxNiYmKHI9bmV3IGUociksci5maWxsKDApLHRoaXMuX2doYXNoLnVwZGF0ZShyKSl9dGhpcy5fY2FsbGVkPSEwO3ZhciBuPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHQpO3JldHVybiB0aGlzLl9kZWNyeXB0P3RoaXMuX2doYXNoLnVwZGF0ZSh0KTp0aGlzLl9naGFzaC51cGRhdGUobiksdGhpcy5fbGVuKz10Lmxlbmd0aCxufSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZWNyeXB0JiYhdGhpcy5fYXV0aFRhZyl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGFcIik7dmFyIHQ9dSh0aGlzLl9naGFzaC5maW5hbCg4KnRoaXMuX2FsZW4sOCp0aGlzLl9sZW4pLHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKTtpZih0aGlzLl9kZWNyeXB0KXtpZihpKHQsdGhpcy5fYXV0aFRhZykpdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhXCIpfWVsc2UgdGhpcy5fYXV0aFRhZz10O3RoaXMuX2NpcGhlci5zY3J1YigpfSxuLnByb3RvdHlwZS5nZXRBdXRoVGFnPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2RlY3J5cHQmJmUuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpcmV0dXJuIHRoaXMuX2F1dGhUYWc7dGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLnNldEF1dGhUYWc9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2RlY3J5cHQpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBzZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIik7dGhpcy5fYXV0aFRhZz10fSxuLnByb3RvdHlwZS5zZXRBQUQ9ZnVuY3Rpb24odCl7aWYodGhpcy5fY2FsbGVkKXRocm93IG5ldyBFcnJvcihcIkF0dGVtcHRpbmcgdG8gc2V0IEFBRCBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKTt0aGlzLl9naGFzaC51cGRhdGUodCksdGhpcy5fYWxlbis9dC5sZW5ndGh9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gT2JqZWN0LmtleXMoYSl9dmFyIGk9cig1NDApO2UuY3JlYXRlQ2lwaGVyPWUuQ2lwaGVyPWkuY3JlYXRlQ2lwaGVyLGUuY3JlYXRlQ2lwaGVyaXY9ZS5DaXBoZXJpdj1pLmNyZWF0ZUNpcGhlcml2O3ZhciBvPXIoNTM5KTtlLmNyZWF0ZURlY2lwaGVyPWUuRGVjaXBoZXI9by5jcmVhdGVEZWNpcGhlcixlLmNyZWF0ZURlY2lwaGVyaXY9ZS5EZWNpcGhlcml2PW8uY3JlYXRlRGVjaXBoZXJpdjt2YXIgYT1yKDE0Nyk7ZS5saXN0Q2lwaGVycz1lLmdldENpcGhlcnM9bn0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNjkpO2UuZW5jcnlwdD1mdW5jdGlvbih0LGUpe3ZhciByPW4oZSx0Ll9wcmV2KTtyZXR1cm4gdC5fcHJldj10Ll9jaXBoZXIuZW5jcnlwdEJsb2NrKHIpLHQuX3ByZXZ9LGUuZGVjcnlwdD1mdW5jdGlvbih0LGUpe3ZhciByPXQuX3ByZXY7dC5fcHJldj1lO3ZhciBpPXQuX2NpcGhlci5kZWNyeXB0QmxvY2soZSk7cmV0dXJuIG4oaSxyKX19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHIsbil7dmFyIG89ci5sZW5ndGgsYT1pKHIsZS5fY2FjaGUpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShvKSxlLl9wcmV2PXQuY29uY2F0KFtlLl9wcmV2LG4/cjphXSksYX12YXIgaT1yKDY5KTtlLmVuY3J5cHQ9ZnVuY3Rpb24oZSxyLGkpe2Zvcih2YXIgbyxhPW5ldyB0KFwiXCIpO3IubGVuZ3RoOyl7aWYoMD09PWUuX2NhY2hlLmxlbmd0aCYmKGUuX2NhY2hlPWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldiksZS5fcHJldj1uZXcgdChcIlwiKSksIShlLl9jYWNoZS5sZW5ndGg8PXIubGVuZ3RoKSl7YT10LmNvbmNhdChbYSxuKGUscixpKV0pO2JyZWFrfW89ZS5fY2FjaGUubGVuZ3RoLGE9dC5jb25jYXQoW2EsbihlLHIuc2xpY2UoMCxvKSxpKV0pLHI9ci5zbGljZShvKX1yZXR1cm4gYX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIodCxlLHIpe2Zvcih2YXIgaSxvLGEsZj0tMSxzPTgsdT0wOysrZjxzOylpPXQuX2NpcGhlci5lbmNyeXB0QmxvY2sodC5fcHJldiksbz1lJjE8PDctZj8xMjg6MCxhPWlbMF1ebyx1Kz0oMTI4JmEpPj5mJTgsdC5fcHJldj1uKHQuX3ByZXYscj9vOmEpO3JldHVybiB1fWZ1bmN0aW9uIG4oZSxyKXt2YXIgbj1lLmxlbmd0aCxpPS0xLG89bmV3IHQoZS5sZW5ndGgpO2ZvcihlPXQuY29uY2F0KFtlLG5ldyB0KFtyXSldKTsrK2k8bjspb1tpXT1lW2ldPDwxfGVbaSsxXT4+NztyZXR1cm4gb31lLmVuY3J5cHQ9ZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgbz1uLmxlbmd0aCxhPW5ldyB0KG8pLGY9LTE7KytmPG87KWFbZl09cihlLG5bZl0saSk7cmV0dXJuIGF9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUscixuKXt2YXIgaT1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGUuX3ByZXYpLG89aVswXV5yO3JldHVybiBlLl9wcmV2PXQuY29uY2F0KFtlLl9wcmV2LnNsaWNlKDEpLG5ldyB0KFtuP3I6b10pXSksb31lLmVuY3J5cHQ9ZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgbz1uLmxlbmd0aCxhPW5ldyB0KG8pLGY9LTE7KytmPG87KWFbZl09cihlLG5bZl0saSk7cmV0dXJuIGF9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlKXtlLmVuY3J5cHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fY2lwaGVyLmVuY3J5cHRCbG9jayhlKX0sZS5kZWNyeXB0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX2NpcGhlci5kZWNyeXB0QmxvY2soZSl9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQuX3ByZXY9dC5fY2lwaGVyLmVuY3J5cHRCbG9jayh0Ll9wcmV2KSx0Ll9wcmV2fXZhciBpPXIoNjkpO2UuZW5jcnlwdD1mdW5jdGlvbihlLHIpe2Zvcig7ZS5fY2FjaGUubGVuZ3RoPHIubGVuZ3RoOyllLl9jYWNoZT10LmNvbmNhdChbZS5fY2FjaGUsbihlKV0pO3ZhciBvPWUuX2NhY2hlLnNsaWNlKDAsci5sZW5ndGgpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShyLmxlbmd0aCksaShyLG8pfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0LHIsYSxmKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KG8uY2FsbCh0aGlzKSx0aGlzLl9jaXBoZXI9bmV3IGkuQUVTKHIpLHRoaXMuX3ByZXY9bmV3IGUoYS5sZW5ndGgpLHRoaXMuX2NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX3NlY0NhY2hlPW5ldyBlKFwiXCIpLHRoaXMuX2RlY3J5cHQ9ZixhLmNvcHkodGhpcy5fcHJldiksdm9pZCh0aGlzLl9tb2RlPXQpKTpuZXcgbih0LHIsYSl9dmFyIGk9cigxMDEpLG89cigxMDMpLGE9cigyKTthKG4sbyksdC5leHBvcnRzPW4sbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCx0aGlzLl9kZWNyeXB0KX0sbi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dGhpcy5fY2lwaGVyLnNjcnViKCl9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7dGhpcy5pbml0KCksdGhpcy5fdz1sLGMuY2FsbCh0aGlzLDY0LDU2KX1mdW5jdGlvbiBpKHQsZSxyKXtyZXR1cm4gcl50JihlXnIpfWZ1bmN0aW9uIG8odCxlLHIpe3JldHVybiB0JmV8ciYodHxlKX1mdW5jdGlvbiBhKHQpe3JldHVybih0Pj4+Mnx0PDwzMCleKHQ+Pj4xM3x0PDwxOSleKHQ+Pj4yMnx0PDwxMCl9ZnVuY3Rpb24gZih0KXtyZXR1cm4odD4+PjZ8dDw8MjYpXih0Pj4+MTF8dDw8MjEpXih0Pj4+MjV8dDw8Nyl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4odD4+Pjd8dDw8MjUpXih0Pj4+MTh8dDw8MTQpXnQ+Pj4zfWZ1bmN0aW9uIHUodCl7cmV0dXJuKHQ+Pj4xN3x0PDwxNSleKHQ+Pj4xOXx0PDwxMyledD4+PjEwfXZhciBoPXIoMiksYz1yKDYwKSxkPVsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdLGw9bmV3IEFycmF5KDY0KTtoKG4sYyksbi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTE3NzkwMzM3MDMsdGhpcy5fYj0zMTQ0MTM0Mjc3LHRoaXMuX2M9MTAxMzkwNDI0Mix0aGlzLl9kPTI3NzM0ODA3NjIsdGhpcy5fZT0xMzU5ODkzMTE5LHRoaXMuX2Y9MjYwMDgyMjkyNCx0aGlzLl9nPTUyODczNDYzNSx0aGlzLl9oPTE1NDE0NTkyMjUsdGhpc30sbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fdyxyPTB8dGhpcy5fYSxuPTB8dGhpcy5fYixoPTB8dGhpcy5fYyxjPTB8dGhpcy5fZCxsPTB8dGhpcy5fZSxwPTB8dGhpcy5fZixiPTB8dGhpcy5fZyx2PTB8dGhpcy5faCx5PTA7eTwxNjsrK3kpZVt5XT10LnJlYWRJbnQzMkJFKDQqeSk7Zm9yKDt5PDY0OysreSllW3ldPXUoZVt5LTJdKStlW3ktN10rcyhlW3ktMTVdKStlW3ktMTZdfDA7Zm9yKHZhciBtPTA7bTw2NDsrK20pe3ZhciBnPXYrZihsKStpKGwscCxiKStkW21dK2VbbV18MCx3PWEocikrbyhyLG4saCl8MDt2PWIsYj1wLHA9bCxsPWMrZ3wwLGM9aCxoPW4sbj1yLHI9Zyt3fDB9dGhpcy5fYT1yK3RoaXMuX2F8MCx0aGlzLl9iPW4rdGhpcy5fYnwwLHRoaXMuX2M9aCt0aGlzLl9jfDAsdGhpcy5fZD1jK3RoaXMuX2R8MCx0aGlzLl9lPWwrdGhpcy5fZXwwLHRoaXMuX2Y9cCt0aGlzLl9mfDAsdGhpcy5fZz1iK3RoaXMuX2d8MCx0aGlzLl9oPXYrdGhpcy5faHwwfSxuLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciB0PW5ldyBlKDMyKTtyZXR1cm4gdC53cml0ZUludDMyQkUodGhpcy5fYSwwKSx0LndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHQud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksdC53cml0ZUludDMyQkUodGhpcy5fZCwxMiksdC53cml0ZUludDMyQkUodGhpcy5fZSwxNiksdC53cml0ZUludDMyQkUodGhpcy5fZiwyMCksdC53cml0ZUludDMyQkUodGhpcy5fZywyNCksdC53cml0ZUludDMyQkUodGhpcy5faCwyOCksdH0sdC5leHBvcnRzPW59KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmluaXQoKSx0aGlzLl93PXYscC5jYWxsKHRoaXMsMTI4LDExMil9ZnVuY3Rpb24gaSh0LGUscil7cmV0dXJuIHJedCYoZV5yKX1mdW5jdGlvbiBvKHQsZSxyKXtyZXR1cm4gdCZlfHImKHR8ZSl9ZnVuY3Rpb24gYSh0LGUpe3JldHVybih0Pj4+Mjh8ZTw8NCleKGU+Pj4yfHQ8PDMwKV4oZT4+Pjd8dDw8MjUpfWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4odD4+PjE0fGU8PDE4KV4odD4+PjE4fGU8PDE0KV4oZT4+Pjl8dDw8MjMpfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4odD4+PjF8ZTw8MzEpXih0Pj4+OHxlPDwyNCledD4+Pjd9ZnVuY3Rpb24gdSh0LGUpe3JldHVybih0Pj4+MXxlPDwzMSleKHQ+Pj44fGU8PDI0KV4odD4+Pjd8ZTw8MjUpfWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4odD4+PjE5fGU8PDEzKV4oZT4+PjI5fHQ8PDMpXnQ+Pj42fWZ1bmN0aW9uIGModCxlKXtyZXR1cm4odD4+PjE5fGU8PDEzKV4oZT4+PjI5fHQ8PDMpXih0Pj4+NnxlPDwyNil9ZnVuY3Rpb24gZCh0LGUpe3JldHVybiB0Pj4+MDxlPj4+MD8xOjB9dmFyIGw9cigyKSxwPXIoNjApLGI9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSx2PW5ldyBBcnJheSgxNjApO2wobixwKSxuLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FoPTE3NzkwMzM3MDMsdGhpcy5fYmg9MzE0NDEzNDI3Nyx0aGlzLl9jaD0xMDEzOTA0MjQyLHRoaXMuX2RoPTI3NzM0ODA3NjIsdGhpcy5fZWg9MTM1OTg5MzExOSx0aGlzLl9maD0yNjAwODIyOTI0LHRoaXMuX2doPTUyODczNDYzNSx0aGlzLl9oaD0xNTQxNDU5MjI1LHRoaXMuX2FsPTQwODkyMzU3MjAsdGhpcy5fYmw9MjIyNzg3MzU5NSx0aGlzLl9jbD00MjcxMTc1NzIzLHRoaXMuX2RsPTE1OTU3NTAxMjksdGhpcy5fZWw9MjkxNzU2NTEzNyx0aGlzLl9mbD03MjU1MTExOTksdGhpcy5fZ2w9NDIxNTM4OTU0Nyx0aGlzLl9obD0zMjcwMzMyMDksdGhpc30sbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fdyxyPTB8dGhpcy5fYWgsbj0wfHRoaXMuX2JoLGw9MHx0aGlzLl9jaCxwPTB8dGhpcy5fZGgsdj0wfHRoaXMuX2VoLHk9MHx0aGlzLl9maCxtPTB8dGhpcy5fZ2gsZz0wfHRoaXMuX2hoLHc9MHx0aGlzLl9hbCxfPTB8dGhpcy5fYmwsTT0wfHRoaXMuX2NsLFM9MHx0aGlzLl9kbCxFPTB8dGhpcy5fZWwsQT0wfHRoaXMuX2ZsLGs9MHx0aGlzLl9nbCx4PTB8dGhpcy5faGwsST0wO0k8MzI7SSs9MillW0ldPXQucmVhZEludDMyQkUoNCpJKSxlW0krMV09dC5yZWFkSW50MzJCRSg0KkkrNCk7Zm9yKDtJPDE2MDtJKz0yKXt2YXIgQj1lW0ktMzBdLE89ZVtJLTMwKzFdLFI9cyhCLE8pLFA9dShPLEIpO1xuQj1lW0ktNF0sTz1lW0ktNCsxXTt2YXIgVD1oKEIsTyksaj1jKE8sQiksQz1lW0ktMTRdLE49ZVtJLTE0KzFdLEw9ZVtJLTMyXSxVPWVbSS0zMisxXSx6PVArTnwwLEQ9UitDK2QoeixQKXwwO3o9eitqfDAsRD1EK1QrZCh6LGopfDAsej16K1V8MCxEPUQrTCtkKHosVSl8MCxlW0ldPUQsZVtJKzFdPXp9Zm9yKHZhciBxPTA7cTwxNjA7cSs9Mil7RD1lW3FdLHo9ZVtxKzFdO3ZhciBGPW8ocixuLGwpLEs9byh3LF8sTSksRz1hKHIsdyksVj1hKHcsciksSD1mKHYsRSksWD1mKEUsdiksWT1iW3FdLFc9YltxKzFdLFo9aSh2LHksbSksSj1pKEUsQSxrKSwkPXgrWHwwLFE9ZytIK2QoJCx4KXwwOyQ9JCtKfDAsUT1RK1orZCgkLEopfDAsJD0kK1d8MCxRPVErWStkKCQsVyl8MCwkPSQrenwwLFE9UStEK2QoJCx6KXwwO3ZhciB0dD1WK0t8MCxldD1HK0YrZCh0dCxWKXwwO2c9bSx4PWssbT15LGs9QSx5PXYsQT1FLEU9UyskfDAsdj1wK1ErZChFLFMpfDAscD1sLFM9TSxsPW4sTT1fLG49cixfPXcsdz0kK3R0fDAscj1RK2V0K2QodywkKXwwfXRoaXMuX2FsPXRoaXMuX2FsK3d8MCx0aGlzLl9ibD10aGlzLl9ibCtffDAsdGhpcy5fY2w9dGhpcy5fY2wrTXwwLHRoaXMuX2RsPXRoaXMuX2RsK1N8MCx0aGlzLl9lbD10aGlzLl9lbCtFfDAsdGhpcy5fZmw9dGhpcy5fZmwrQXwwLHRoaXMuX2dsPXRoaXMuX2dsK2t8MCx0aGlzLl9obD10aGlzLl9obCt4fDAsdGhpcy5fYWg9dGhpcy5fYWgrcitkKHRoaXMuX2FsLHcpfDAsdGhpcy5fYmg9dGhpcy5fYmgrbitkKHRoaXMuX2JsLF8pfDAsdGhpcy5fY2g9dGhpcy5fY2grbCtkKHRoaXMuX2NsLE0pfDAsdGhpcy5fZGg9dGhpcy5fZGgrcCtkKHRoaXMuX2RsLFMpfDAsdGhpcy5fZWg9dGhpcy5fZWgrditkKHRoaXMuX2VsLEUpfDAsdGhpcy5fZmg9dGhpcy5fZmgreStkKHRoaXMuX2ZsLEEpfDAsdGhpcy5fZ2g9dGhpcy5fZ2grbStkKHRoaXMuX2dsLGspfDAsdGhpcy5faGg9dGhpcy5faGgrZytkKHRoaXMuX2hsLHgpfDB9LG4ucHJvdG90eXBlLl9oYXNoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7ci53cml0ZUludDMyQkUodCxuKSxyLndyaXRlSW50MzJCRShlLG4rNCl9dmFyIHI9bmV3IGUoNjQpO3JldHVybiB0KHRoaXMuX2FoLHRoaXMuX2FsLDApLHQodGhpcy5fYmgsdGhpcy5fYmwsOCksdCh0aGlzLl9jaCx0aGlzLl9jbCwxNiksdCh0aGlzLl9kaCx0aGlzLl9kbCwyNCksdCh0aGlzLl9laCx0aGlzLl9lbCwzMiksdCh0aGlzLl9maCx0aGlzLl9mbCw0MCksdCh0aGlzLl9naCx0aGlzLl9nbCw0OCksdCh0aGlzLl9oaCx0aGlzLl9obCw1Nikscn0sdC5leHBvcnRzPW59KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe2lmKG51bGwhPT1nKXJldHVybiBnO3ZhciB0PTEwNDg1NzYsZT1bXTtlWzBdPTI7Zm9yKHZhciByPTEsbj0zO248dDtuKz0yKXtmb3IodmFyIGk9TWF0aC5jZWlsKE1hdGguc3FydChuKSksbz0wO288ciYmZVtvXTw9aSYmbiVlW29dIT09MDtvKyspO3IhPT1vJiZlW29dPD1pfHwoZVtyKytdPW4pfXJldHVybiBnPWUsZX1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1uKCkscj0wO3I8ZS5sZW5ndGg7cisrKWlmKDA9PT10Lm1vZG4oZVtyXSkpcmV0dXJuIDA9PT10LmNtcG4oZVtyXSk7cmV0dXJuITB9ZnVuY3Rpb24gbyh0KXt2YXIgZT1zLm1vbnQodCk7cmV0dXJuIDA9PT1sLnRvUmVkKGUpLnJlZFBvdyh0LnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpfWZ1bmN0aW9uIGEodCxlKXtpZih0PDE2KXJldHVybiBuZXcgcygyPT09ZXx8NT09PWU/WzE0MCwxMjNdOlsxNDAsMzldKTtlPW5ldyBzKGUpO2Zvcih2YXIgcixuOzspe2ZvcihyPW5ldyBzKGYoTWF0aC5jZWlsKHQvOCkpKTtyLmJpdExlbmd0aCgpPnQ7KXIuaXNocm4oMSk7aWYoci5pc0V2ZW4oKSYmci5pYWRkKGQpLHIudGVzdG4oMSl8fHIuaWFkZChsKSxlLmNtcChsKSl7aWYoIWUuY21wKHApKWZvcig7ci5tb2QoYikuY21wKHYpOylyLmlhZGQobSl9ZWxzZSBmb3IoO3IubW9kKHUpLmNtcCh5KTspci5pYWRkKG0pO2lmKG49ci5zaHJuKDEpLGkobikmJmkocikmJm8obikmJm8ocikmJmMudGVzdChuKSYmYy50ZXN0KHIpKXJldHVybiByfX12YXIgZj1yKDYxKTt0LmV4cG9ydHM9YSxhLnNpbXBsZVNpZXZlPWksYS5mZXJtYXRUZXN0PW87dmFyIHM9cigxNTApLHU9bmV3IHMoMjQpLGg9cigyMzApLGM9bmV3IGgsZD1uZXcgcygxKSxsPW5ldyBzKDIpLHA9bmV3IHMoNSksYj0obmV3IHMoMTYpLG5ldyBzKDgpLG5ldyBzKDEwKSksdj1uZXcgcygzKSx5PShuZXcgcyg3KSxuZXcgcygxMSkpLG09bmV3IHMoNCksZz0obmV3IHMoMTIpLG51bGwpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt0aGlzLnJhbmQ9dHx8bmV3IG8uUmFuZH12YXIgaT1yKDE1MCksbz1yKDU3NSk7dC5leHBvcnRzPW4sbi5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBuKHQpfSxuLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih0KXt2YXIgZT10LmJpdExlbmd0aCgpLHI9dGhpcy5yYW5kLmdlbmVyYXRlKE1hdGguY2VpbChlLzgpKTtyWzBdfD0zO3ZhciBuPTcmZTtyZXR1cm4gMCE9PW4mJihyW3IubGVuZ3RoLTFdPj49Ny1uKSxuZXcgaShyKX0sbi5wcm90b3R5cGUudGVzdD1mdW5jdGlvbih0LGUscil7dmFyIG49dC5iaXRMZW5ndGgoKSxvPWkubW9udCh0KSxhPW5ldyBpKDEpLnRvUmVkKG8pO2V8fChlPU1hdGgubWF4KDEsbi80OHwwKSk7Zm9yKHZhciBmPXQuc3VibigxKSxzPWYuc3VibigxKSx1PTA7IWYudGVzdG4odSk7dSsrKTtmb3IodmFyIGg9dC5zaHJuKHUpLGM9Zi50b1JlZChvKSxkPSEwO2U+MDtlLS0pe3ZhciBsPXRoaXMuX3JhbmQocyk7ciYmcihsKTt2YXIgcD1sLnRvUmVkKG8pLnJlZFBvdyhoKTtpZigwIT09cC5jbXAoYSkmJjAhPT1wLmNtcChjKSl7Zm9yKHZhciBiPTE7Yjx1O2IrKyl7aWYocD1wLnJlZFNxcigpLDA9PT1wLmNtcChhKSlyZXR1cm4hMTtpZigwPT09cC5jbXAoYykpYnJlYWt9aWYoYj09PXUpcmV0dXJuITF9fXJldHVybiBkfSxuLnByb3RvdHlwZS5nZXREaXZpc29yPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5iaXRMZW5ndGgoKSxuPWkubW9udCh0KSxvPW5ldyBpKDEpLnRvUmVkKG4pO2V8fChlPU1hdGgubWF4KDEsci80OHwwKSk7Zm9yKHZhciBhPXQuc3VibigxKSxmPWEuc3VibigxKSxzPTA7IWEudGVzdG4ocyk7cysrKTtmb3IodmFyIHU9dC5zaHJuKHMpLGg9YS50b1JlZChuKTtlPjA7ZS0tKXt2YXIgYz10aGlzLl9yYW5kKGYpLGQ9dC5nY2QoYyk7aWYoMCE9PWQuY21wbigxKSlyZXR1cm4gZDt2YXIgbD1jLnRvUmVkKG4pLnJlZFBvdyh1KTtpZigwIT09bC5jbXAobykmJjAhPT1sLmNtcChoKSl7Zm9yKHZhciBwPTE7cDxzO3ArKyl7aWYobD1sLnJlZFNxcigpLDA9PT1sLmNtcChvKSlyZXR1cm4gbC5mcm9tUmVkKCkuc3VibigxKS5nY2QodCk7aWYoMD09PWwuY21wKGgpKWJyZWFrfWlmKHA9PT1zKXJldHVybiBsPWwucmVkU3FyKCksbC5mcm9tUmVkKCkuc3VibigxKS5nY2QodCl9fXJldHVybiExfX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe3ZhciByPW5ldyBlKDQpO3JldHVybiByLndyaXRlVUludDMyQkUodCwwKSxyfXZhciBpPXIoNTkpO3QuZXhwb3J0cz1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbyxhPW5ldyBlKFwiXCIpLGY9MDthLmxlbmd0aDxyOylvPW4oZisrKSxhPWUuY29uY2F0KFthLGkoXCJzaGExXCIpLnVwZGF0ZSh0KS51cGRhdGUobykuZGlnZXN0KCldKTtyZXR1cm4gYS5zbGljZSgwLHIpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXt2YXIgZT1vKHQpLHI9ZS50b1JlZChhLm1vbnQodC5tb2R1bHVzKSkucmVkUG93KG5ldyBhKHQucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7cmV0dXJue2JsaW5kZXI6cix1bmJsaW5kZXI6ZS5pbnZtKHQubW9kdWx1cyl9fWZ1bmN0aW9uIGkodCxyKXt2YXIgaT1uKHIpLG89ci5tb2R1bHVzLmJ5dGVMZW5ndGgoKSxmPShhLm1vbnQoci5tb2R1bHVzKSxuZXcgYSh0KS5tdWwoaS5ibGluZGVyKS51bW9kKHIubW9kdWx1cykpLHM9Zi50b1JlZChhLm1vbnQoci5wcmltZTEpKSx1PWYudG9SZWQoYS5tb250KHIucHJpbWUyKSksaD1yLmNvZWZmaWNpZW50LGM9ci5wcmltZTEsZD1yLnByaW1lMixsPXMucmVkUG93KHIuZXhwb25lbnQxKSxwPXUucmVkUG93KHIuZXhwb25lbnQyKTtsPWwuZnJvbVJlZCgpLHA9cC5mcm9tUmVkKCk7dmFyIGI9bC5pc3ViKHApLmltdWwoaCkudW1vZChjKTtyZXR1cm4gYi5pbXVsKGQpLHAuaWFkZChiKSxuZXcgZShwLmltdWwoaS51bmJsaW5kZXIpLnVtb2Qoci5tb2R1bHVzKS50b0FycmF5KCExLG8pKX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT10Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpLHI9bmV3IGEoZihlKSk7ci5jbXAodC5tb2R1bHVzKT49MHx8IXIudW1vZCh0LnByaW1lMSl8fCFyLnVtb2QodC5wcmltZTIpOylyPW5ldyBhKGYoZSkpO3JldHVybiByfXZhciBhPXIoNzApLGY9cig2MSk7dC5leHBvcnRzPWksaS5nZXRyPW99KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7dmFyIHI7XCJvYmplY3RcIiE9dHlwZW9mIHR8fGUuaXNCdWZmZXIodCl8fChyPXQucGFzc3BocmFzZSx0PXQua2V5KSxcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bmV3IGUodCkpO3ZhciBuLGEscz1mKHQsciksdT1zLnRhZyxoPXMuZGF0YTtzd2l0Y2godSl7Y2FzZVwiUFVCTElDIEtFWVwiOnN3aXRjaChhPW8uUHVibGljS2V5LmRlY29kZShoLFwiZGVyXCIpLG49YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oXCIuXCIpKXtjYXNlXCIxLjIuODQwLjExMzU0OS4xLjEuMVwiOnJldHVybiBvLlJTQVB1YmxpY0tleS5kZWNvZGUoYS5zdWJqZWN0UHVibGljS2V5LmRhdGEsXCJkZXJcIik7Y2FzZVwiMS4yLjg0MC4xMDA0NS4yLjFcIjpyZXR1cm4gYS5zdWJqZWN0UHJpdmF0ZUtleT1hLnN1YmplY3RQdWJsaWNLZXkse3R5cGU6XCJlY1wiLGRhdGE6YX07Y2FzZVwiMS4yLjg0MC4xMDA0MC40LjFcIjpyZXR1cm4gYS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXk9by5EU0FwYXJhbS5kZWNvZGUoYS5zdWJqZWN0UHVibGljS2V5LmRhdGEsXCJkZXJcIikse3R5cGU6XCJkc2FcIixkYXRhOmEuYWxnb3JpdGhtLnBhcmFtc307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSBpZCBcIituKX10aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGtleSB0eXBlIFwiK3UpO2Nhc2VcIkVOQ1JZUFRFRCBQUklWQVRFIEtFWVwiOmg9by5FbmNyeXB0ZWRQcml2YXRlS2V5LmRlY29kZShoLFwiZGVyXCIpLGg9aShoLHIpO2Nhc2VcIlBSSVZBVEUgS0VZXCI6c3dpdGNoKGE9by5Qcml2YXRlS2V5LmRlY29kZShoLFwiZGVyXCIpLG49YS5hbGdvcml0aG0uYWxnb3JpdGhtLmpvaW4oXCIuXCIpKXtjYXNlXCIxLjIuODQwLjExMzU0OS4xLjEuMVwiOnJldHVybiBvLlJTQVByaXZhdGVLZXkuZGVjb2RlKGEuc3ViamVjdFByaXZhdGVLZXksXCJkZXJcIik7Y2FzZVwiMS4yLjg0MC4xMDA0NS4yLjFcIjpyZXR1cm57Y3VydmU6YS5hbGdvcml0aG0uY3VydmUscHJpdmF0ZUtleTpvLkVDUHJpdmF0ZUtleS5kZWNvZGUoYS5zdWJqZWN0UHJpdmF0ZUtleSxcImRlclwiKS5wcml2YXRlS2V5fTtjYXNlXCIxLjIuODQwLjEwMDQwLjQuMVwiOnJldHVybiBhLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXk9by5EU0FwYXJhbS5kZWNvZGUoYS5zdWJqZWN0UHJpdmF0ZUtleSxcImRlclwiKSx7dHlwZTpcImRzYVwiLHBhcmFtczphLmFsZ29yaXRobS5wYXJhbXN9O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgaWQgXCIrbil9dGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBrZXkgdHlwZSBcIit1KTtjYXNlXCJSU0EgUFVCTElDIEtFWVwiOnJldHVybiBvLlJTQVB1YmxpY0tleS5kZWNvZGUoaCxcImRlclwiKTtjYXNlXCJSU0EgUFJJVkFURSBLRVlcIjpyZXR1cm4gby5SU0FQcml2YXRlS2V5LmRlY29kZShoLFwiZGVyXCIpO2Nhc2VcIkRTQSBQUklWQVRFIEtFWVwiOnJldHVybnt0eXBlOlwiZHNhXCIscGFyYW1zOm8uRFNBUHJpdmF0ZUtleS5kZWNvZGUoaCxcImRlclwiKX07Y2FzZVwiRUMgUFJJVkFURSBLRVlcIjpyZXR1cm4gaD1vLkVDUHJpdmF0ZUtleS5kZWNvZGUoaCxcImRlclwiKSx7Y3VydmU6aC5wYXJhbWV0ZXJzLnZhbHVlLHByaXZhdGVLZXk6aC5wcml2YXRlS2V5fTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcInVua25vd24ga2V5IHR5cGUgXCIrdSl9fWZ1bmN0aW9uIGkodCxyKXt2YXIgbj10LmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdCxpPXBhcnNlSW50KHQuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLDEwKSxvPWFbdC5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKFwiLlwiKV0sZj10LmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5pdixoPXQuc3ViamVjdFByaXZhdGVLZXksYz1wYXJzZUludChvLnNwbGl0KFwiLVwiKVsxXSwxMCkvOCxkPXUucGJrZGYyU3luYyhyLG4saSxjKSxsPXMuY3JlYXRlRGVjaXBoZXJpdihvLGQsZikscD1bXTtyZXR1cm4gcC5wdXNoKGwudXBkYXRlKGgpKSxwLnB1c2gobC5maW5hbCgpKSxlLmNvbmNhdChwKX12YXIgbz1yKDU3OCksYT1yKDQ2OSksZj1yKDU3OSkscz1yKDIzOSksdT1yKDE1MSk7dC5leHBvcnRzPW4sbi5zaWduYXR1cmU9by5zaWduYXR1cmV9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3JldHVybiBhLmNhbGwodGhpcyxlKSxmLmlzQnVmZmVyKHQpPyh0aGlzLmJhc2U9dCx0aGlzLm9mZnNldD0wLHZvaWQodGhpcy5sZW5ndGg9dC5sZW5ndGgpKTp2b2lkIHRoaXMuZXJyb3IoXCJJbnB1dCBub3QgQnVmZmVyXCIpfWZ1bmN0aW9uIGkodCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXRoaXMubGVuZ3RoPTAsdGhpcy52YWx1ZT10Lm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGl8fCh0PW5ldyBpKHQsZSkpLHRoaXMubGVuZ3RoKz10Lmxlbmd0aCx0fSx0aGlzKTtlbHNlIGlmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXtpZighKDA8PXQmJnQ8PTI1NSkpcmV0dXJuIGUuZXJyb3IoXCJub24tYnl0ZSBFbmNvZGVyQnVmZmVyIHZhbHVlXCIpO3RoaXMudmFsdWU9dCx0aGlzLmxlbmd0aD0xfWVsc2UgaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdGhpcy52YWx1ZT10LHRoaXMubGVuZ3RoPWYuYnl0ZUxlbmd0aCh0KTtlbHNle2lmKCFmLmlzQnVmZmVyKHQpKXJldHVybiBlLmVycm9yKFwiVW5zdXBwb3J0ZWQgdHlwZTogXCIrdHlwZW9mIHQpO3RoaXMudmFsdWU9dCx0aGlzLmxlbmd0aD10Lmxlbmd0aH19dmFyIG89cigyKSxhPXIoNzEpLlJlcG9ydGVyLGY9cigxKS5CdWZmZXI7byhuLGEpLGUuRGVjb2RlckJ1ZmZlcj1uLG4ucHJvdG90eXBlLnNhdmU9ZnVuY3Rpb24oKXtyZXR1cm57b2Zmc2V0OnRoaXMub2Zmc2V0LHJlcG9ydGVyOmEucHJvdG90eXBlLnNhdmUuY2FsbCh0aGlzKX19LG4ucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IG4odGhpcy5iYXNlKTtyZXR1cm4gZS5vZmZzZXQ9dC5vZmZzZXQsZS5sZW5ndGg9dGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQ9dC5vZmZzZXQsYS5wcm90b3R5cGUucmVzdG9yZS5jYWxsKHRoaXMsdC5yZXBvcnRlciksZX0sbi5wcm90b3R5cGUuaXNFbXB0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9mZnNldD09PXRoaXMubGVuZ3RofSxuLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub2Zmc2V0KzE8PXRoaXMubGVuZ3RoP3RoaXMuYmFzZS5yZWFkVUludDgodGhpcy5vZmZzZXQrKywhMCk6dGhpcy5lcnJvcih0fHxcIkRlY29kZXJCdWZmZXIgb3ZlcnJ1blwiKX0sbi5wcm90b3R5cGUuc2tpcD1mdW5jdGlvbih0LGUpe2lmKCEodGhpcy5vZmZzZXQrdDw9dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzLmVycm9yKGV8fFwiRGVjb2RlckJ1ZmZlciBvdmVycnVuXCIpO3ZhciByPW5ldyBuKHRoaXMuYmFzZSk7cmV0dXJuIHIuX3JlcG9ydGVyU3RhdGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxyLm9mZnNldD10aGlzLm9mZnNldCxyLmxlbmd0aD10aGlzLm9mZnNldCt0LHRoaXMub2Zmc2V0Kz10LHJ9LG4ucHJvdG90eXBlLnJhdz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHQ/dC5vZmZzZXQ6dGhpcy5vZmZzZXQsdGhpcy5sZW5ndGgpfSxlLkVuY29kZXJCdWZmZXI9aSxpLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHR8fCh0PW5ldyBmKHRoaXMubGVuZ3RoKSksZXx8KGU9MCksMD09PXRoaXMubGVuZ3RoP3Q6KEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSk/dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3Iuam9pbih0LGUpLGUrPXIubGVuZ3RofSk6KFwibnVtYmVyXCI9PXR5cGVvZiB0aGlzLnZhbHVlP3RbZV09dGhpcy52YWx1ZTpcInN0cmluZ1wiPT10eXBlb2YgdGhpcy52YWx1ZT90LndyaXRlKHRoaXMudmFsdWUsZSk6Zi5pc0J1ZmZlcih0aGlzLnZhbHVlKSYmdGhpcy52YWx1ZS5jb3B5KHQsZSksZSs9dGhpcy5sZW5ndGgpLHQpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi5fcmV2ZXJzZT1mdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXsoMHxyKT09ciYmKHJ8PTApO3ZhciBuPXRbcl07ZVtuXT1yfSksZX0sbi5kZXI9cig1ODMpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt0aGlzLmVuYz1cImRlclwiLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5lbnRpdHk9dCx0aGlzLnRyZWU9bmV3IGksdGhpcy50cmVlLl9pbml0KHQuYm9keSl9ZnVuY3Rpb24gaSh0KXt1Lk5vZGUuY2FsbCh0aGlzLFwiZGVyXCIsdCl9ZnVuY3Rpb24gbyh0LGUpe3ZhciByPXQucmVhZFVJbnQ4KGUpO2lmKHQuaXNFcnJvcihyKSlyZXR1cm4gcjt2YXIgbj1jLnRhZ0NsYXNzW3I+PjZdLGk9MD09PSgzMiZyKTtpZigzMT09PSgzMSZyKSl7dmFyIG89cjtmb3Iocj0wOzEyOD09PSgxMjgmbyk7KXtpZihvPXQucmVhZFVJbnQ4KGUpLHQuaXNFcnJvcihvKSlyZXR1cm4gbztyPDw9NyxyfD0xMjcmb319ZWxzZSByJj0zMTt2YXIgYT1jLnRhZ1tyXTtyZXR1cm57Y2xzOm4scHJpbWl0aXZlOmksdGFnOnIsdGFnU3RyOmF9fWZ1bmN0aW9uIGEodCxlLHIpe3ZhciBuPXQucmVhZFVJbnQ4KHIpO2lmKHQuaXNFcnJvcihuKSlyZXR1cm4gbjtpZighZSYmMTI4PT09bilyZXR1cm4gbnVsbDtpZigwPT09KDEyOCZuKSlyZXR1cm4gbjt2YXIgaT0xMjcmbjtpZihpPj00KXJldHVybiB0LmVycm9yKFwibGVuZ3RoIG9jdGVjdCBpcyB0b28gbG9uZ1wiKTtuPTA7Zm9yKHZhciBvPTA7bzxpO28rKyl7bjw8PTg7dmFyIGE9dC5yZWFkVUludDgocik7aWYodC5pc0Vycm9yKGEpKXJldHVybiBhO258PWF9cmV0dXJuIG59dmFyIGY9cigyKSxzPXIoMTA2KSx1PXMuYmFzZSxoPXMuYmlnbnVtLGM9cy5jb25zdGFudHMuZGVyO3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbih0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgdS5EZWNvZGVyQnVmZmVyfHwodD1uZXcgdS5EZWNvZGVyQnVmZmVyKHQsZSkpLHRoaXMudHJlZS5fZGVjb2RlKHQsZSl9LGYoaSx1Lk5vZGUpLGkucHJvdG90eXBlLl9wZWVrVGFnPWZ1bmN0aW9uKHQsZSxyKXtpZih0LmlzRW1wdHkoKSlyZXR1cm4hMTt2YXIgbj10LnNhdmUoKSxpPW8odCwnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicrZSsnXCInKTtyZXR1cm4gdC5pc0Vycm9yKGkpP2k6KHQucmVzdG9yZShuKSxpLnRhZz09PWV8fGkudGFnU3RyPT09ZXx8aS50YWdTdHIrXCJvZlwiPT09ZXx8cil9LGkucHJvdG90eXBlLl9kZWNvZGVUYWc9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPW8odCwnRmFpbGVkIHRvIGRlY29kZSB0YWcgb2YgXCInK2UrJ1wiJyk7aWYodC5pc0Vycm9yKG4pKXJldHVybiBuO3ZhciBpPWEodCxuLnByaW1pdGl2ZSwnRmFpbGVkIHRvIGdldCBsZW5ndGggb2YgXCInK2UrJ1wiJyk7aWYodC5pc0Vycm9yKGkpKXJldHVybiBpO2lmKCFyJiZuLnRhZyE9PWUmJm4udGFnU3RyIT09ZSYmbi50YWdTdHIrXCJvZlwiIT09ZSlyZXR1cm4gdC5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInK2UrJ1wiJyk7aWYobi5wcmltaXRpdmV8fG51bGwhPT1pKXJldHVybiB0LnNraXAoaSwnRmFpbGVkIHRvIG1hdGNoIGJvZHkgb2Y6IFwiJytlKydcIicpO3ZhciBmPXQuc2F2ZSgpLHM9dGhpcy5fc2tpcFVudGlsRW5kKHQsJ0ZhaWxlZCB0byBza2lwIGluZGVmaW5pdGUgbGVuZ3RoIGJvZHk6IFwiJyt0aGlzLnRhZysnXCInKTtyZXR1cm4gdC5pc0Vycm9yKHMpP3M6KGk9dC5vZmZzZXQtZi5vZmZzZXQsdC5yZXN0b3JlKGYpLHQuc2tpcChpLCdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInK2UrJ1wiJykpfSxpLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kPWZ1bmN0aW9uKHQsZSl7Zm9yKDs7KXt2YXIgcj1vKHQsZSk7aWYodC5pc0Vycm9yKHIpKXJldHVybiByO3ZhciBuPWEodCxyLnByaW1pdGl2ZSxlKTtpZih0LmlzRXJyb3IobikpcmV0dXJuIG47dmFyIGk7aWYoaT1yLnByaW1pdGl2ZXx8bnVsbCE9PW4/dC5za2lwKG4pOnRoaXMuX3NraXBVbnRpbEVuZCh0LGUpLHQuaXNFcnJvcihpKSlyZXR1cm4gaTtpZihcImVuZFwiPT09ci50YWdTdHIpYnJlYWt9fSxpLnByb3RvdHlwZS5fZGVjb2RlTGlzdD1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9W107IXQuaXNFbXB0eSgpOyl7dmFyIG89dGhpcy5fcGVla1RhZyh0LFwiZW5kXCIpO2lmKHQuaXNFcnJvcihvKSlyZXR1cm4gbzt2YXIgYT1yLmRlY29kZSh0LFwiZGVyXCIsbik7aWYodC5pc0Vycm9yKGEpJiZvKWJyZWFrO2kucHVzaChhKX1yZXR1cm4gaX0saS5wcm90b3R5cGUuX2RlY29kZVN0cj1mdW5jdGlvbih0LGUpe2lmKFwiYml0c3RyXCI9PT1lKXt2YXIgcj10LnJlYWRVSW50OCgpO3JldHVybiB0LmlzRXJyb3Iocik/cjp7dW51c2VkOnIsZGF0YTp0LnJhdygpfX1pZihcImJtcHN0clwiPT09ZSl7dmFyIG49dC5yYXcoKTtpZihuLmxlbmd0aCUyPT09MSlyZXR1cm4gdC5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBibXBzdHIgbGVuZ3RoIG1pc21hdGNoXCIpO2Zvcih2YXIgaT1cIlwiLG89MDtvPG4ubGVuZ3RoLzI7bysrKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUobi5yZWFkVUludDE2QkUoMipvKSk7cmV0dXJuIGl9aWYoXCJudW1zdHJcIj09PWUpe3ZhciBhPXQucmF3KCkudG9TdHJpbmcoXCJhc2NpaVwiKTtyZXR1cm4gdGhpcy5faXNOdW1zdHIoYSk/YTp0LmVycm9yKFwiRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IG51bXN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzXCIpfWlmKFwib2N0c3RyXCI9PT1lKXJldHVybiB0LnJhdygpO2lmKFwicHJpbnRzdHJcIj09PWUpe3ZhciBmPXQucmF3KCkudG9TdHJpbmcoXCJhc2NpaVwiKTtyZXR1cm4gdGhpcy5faXNQcmludHN0cihmKT9mOnQuZXJyb3IoXCJEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVyc1wiKX1yZXR1cm4vc3RyJC8udGVzdChlKT90LnJhdygpLnRvU3RyaW5nKCk6dC5lcnJvcihcIkRlY29kaW5nIG9mIHN0cmluZyB0eXBlOiBcIitlK1wiIHVuc3VwcG9ydGVkXCIpfSxpLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQ9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixpPVtdLG89MDshdC5pc0VtcHR5KCk7KXt2YXIgYT10LnJlYWRVSW50OCgpO288PD03LG98PTEyNyZhLDA9PT0oMTI4JmEpJiYoaS5wdXNoKG8pLG89MCl9MTI4JmEmJmkucHVzaChvKTt2YXIgZj1pWzBdLzQwfDAscz1pWzBdJTQwO2lmKG49cj9pOltmLHNdLmNvbmNhdChpLnNsaWNlKDEpKSxlKXt2YXIgdT1lW24uam9pbihcIiBcIildO3ZvaWQgMD09PXUmJih1PWVbbi5qb2luKFwiLlwiKV0pLHZvaWQgMCE9PXUmJihuPXUpfXJldHVybiBufSxpLnByb3RvdHlwZS5fZGVjb2RlVGltZT1mdW5jdGlvbih0LGUpe3ZhciByPXQucmF3KCkudG9TdHJpbmcoKTtpZihcImdlbnRpbWVcIj09PWUpdmFyIG49MHxyLnNsaWNlKDAsNCksaT0wfHIuc2xpY2UoNCw2KSxvPTB8ci5zbGljZSg2LDgpLGE9MHxyLnNsaWNlKDgsMTApLGY9MHxyLnNsaWNlKDEwLDEyKSxzPTB8ci5zbGljZSgxMiwxNCk7ZWxzZXtpZihcInV0Y3RpbWVcIiE9PWUpcmV0dXJuIHQuZXJyb3IoXCJEZWNvZGluZyBcIitlK1wiIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7dmFyIG49MHxyLnNsaWNlKDAsMiksaT0wfHIuc2xpY2UoMiw0KSxvPTB8ci5zbGljZSg0LDYpLGE9MHxyLnNsaWNlKDYsOCksZj0wfHIuc2xpY2UoOCwxMCkscz0wfHIuc2xpY2UoMTAsMTIpO249bjw3MD8yZTMrbjoxOTAwK259cmV0dXJuIERhdGUuVVRDKG4saS0xLG8sYSxmLHMsMCl9LGkucHJvdG90eXBlLl9kZWNvZGVOdWxsPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSxpLnByb3RvdHlwZS5fZGVjb2RlQm9vbD1mdW5jdGlvbih0KXt2YXIgZT10LnJlYWRVSW50OCgpO3JldHVybiB0LmlzRXJyb3IoZSk/ZTowIT09ZX0saS5wcm90b3R5cGUuX2RlY29kZUludD1mdW5jdGlvbih0LGUpe3ZhciByPXQucmF3KCksbj1uZXcgaChyKTtyZXR1cm4gZSYmKG49ZVtuLnRvU3RyaW5nKDEwKV18fG4pLG59LGkucHJvdG90eXBlLl91c2U9ZnVuY3Rpb24odCxlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10KGUpKSx0Ll9nZXREZWNvZGVyKFwiZGVyXCIpLnRyZWV9fSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt0aGlzLmVuYz1cImRlclwiLHRoaXMubmFtZT10Lm5hbWUsdGhpcy5lbnRpdHk9dCx0aGlzLnRyZWU9bmV3IGksdGhpcy50cmVlLl9pbml0KHQuYm9keSl9ZnVuY3Rpb24gaSh0KXtoLk5vZGUuY2FsbCh0aGlzLFwiZGVyXCIsdCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDwxMD9cIjBcIit0OnR9ZnVuY3Rpb24gYSh0LGUscixuKXt2YXIgaTtpZihcInNlcW9mXCI9PT10P3Q9XCJzZXFcIjpcInNldG9mXCI9PT10JiYodD1cInNldFwiKSxjLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eSh0KSlpPWMudGFnQnlOYW1lW3RdO2Vsc2V7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHR8fCgwfHQpIT09dClyZXR1cm4gbi5lcnJvcihcIlVua25vd24gdGFnOiBcIit0KTtpPXR9cmV0dXJuIGk+PTMxP24uZXJyb3IoXCJNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWRcIik6KGV8fChpfD0zMiksaXw9Yy50YWdDbGFzc0J5TmFtZVtyfHxcInVuaXZlcnNhbFwiXTw8Nil9dmFyIGY9cigyKSxzPXIoMSkuQnVmZmVyLHU9cigxMDYpLGg9dS5iYXNlLGM9dS5jb25zdGFudHMuZGVyO3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnRyZWUuX2VuY29kZSh0LGUpLmpvaW4oKX0sZihpLGguTm9kZSksaS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT1hKHQsZSxyLHRoaXMucmVwb3J0ZXIpO2lmKG4ubGVuZ3RoPDEyOCl7dmFyIG89bmV3IHMoMik7cmV0dXJuIG9bMF09aSxvWzFdPW4ubGVuZ3RoLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW28sbl0pfWZvcih2YXIgZj0xLHU9bi5sZW5ndGg7dT49MjU2O3U+Pj04KWYrKzt2YXIgbz1uZXcgcygyK2YpO29bMF09aSxvWzFdPTEyOHxmO2Zvcih2YXIgdT0xK2YsaD1uLmxlbmd0aDtoPjA7dS0tLGg+Pj04KW9bdV09MjU1Jmg7cmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoW28sbl0pfSxpLnByb3RvdHlwZS5fZW5jb2RlU3RyPWZ1bmN0aW9uKHQsZSl7aWYoXCJiaXRzdHJcIj09PWUpcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzB8dC51bnVzZWQsdC5kYXRhXSk7aWYoXCJibXBzdHJcIj09PWUpe2Zvcih2YXIgcj1uZXcgcygyKnQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspci53cml0ZVVJbnQxNkJFKHQuY2hhckNvZGVBdChuKSwyKm4pO3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHIpfXJldHVyblwibnVtc3RyXCI9PT1lP3RoaXMuX2lzTnVtc3RyKHQpP3RoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodCk6dGhpcy5yZXBvcnRlci5lcnJvcihcIkVuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgb25seSBkaWdpdHMgYW5kIHNwYWNlXCIpOlwicHJpbnRzdHJcIj09PWU/dGhpcy5faXNQcmludHN0cih0KT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHQpOnRoaXMucmVwb3J0ZXIuZXJyb3IoXCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCBwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCBkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgcXVlc3Rpb24gbWFya1wiKTovc3RyJC8udGVzdChlKT90aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHQpOnRoaXMucmVwb3J0ZXIuZXJyb3IoXCJFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogXCIrZStcIiB1bnN1cHBvcnRlZFwiKX0saS5wcm90b3R5cGUuX2VuY29kZU9iamlkPWZ1bmN0aW9uKHQsZSxyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYoIWUpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kXCIpO2lmKCFlLmhhc093blByb3BlcnR5KHQpKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwib2JqaWQgbm90IGZvdW5kIGluIHZhbHVlcyBtYXBcIik7dD1lW3RdLnNwbGl0KC9bXFxzXFwuXSsvZyk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXXw9MH1lbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3Q9dC5zbGljZSgpO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl18PTB9aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCBnb3Q6IFwiK0pTT04uc3RyaW5naWZ5KHQpKTtpZighcil7aWYodFsxXT49NDApcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoXCJTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0JcIik7dC5zcGxpY2UoMCwyLDQwKnRbMF0rdFsxXSl9Zm9yKHZhciBpPTAsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgbz10W25dO2ZvcihpKys7bz49MTI4O28+Pj03KWkrK31mb3IodmFyIGE9bmV3IHMoaSksZj1hLmxlbmd0aC0xLG49dC5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIG89dFtuXTtmb3IoYVtmLS1dPTEyNyZvOyhvPj49Nyk+MDspYVtmLS1dPTEyOHwxMjcmb31yZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihhKX0saS5wcm90b3R5cGUuX2VuY29kZVRpbWU9ZnVuY3Rpb24odCxlKXt2YXIgcixuPW5ldyBEYXRlKHQpO3JldHVyblwiZ2VudGltZVwiPT09ZT9yPVtvKG4uZ2V0RnVsbFllYXIoKSksbyhuLmdldFVUQ01vbnRoKCkrMSksbyhuLmdldFVUQ0RhdGUoKSksbyhuLmdldFVUQ0hvdXJzKCkpLG8obi5nZXRVVENNaW51dGVzKCkpLG8obi5nZXRVVENTZWNvbmRzKCkpLFwiWlwiXS5qb2luKFwiXCIpOlwidXRjdGltZVwiPT09ZT9yPVtvKG4uZ2V0RnVsbFllYXIoKSUxMDApLG8obi5nZXRVVENNb250aCgpKzEpLG8obi5nZXRVVENEYXRlKCkpLG8obi5nZXRVVENIb3VycygpKSxvKG4uZ2V0VVRDTWludXRlcygpKSxvKG4uZ2V0VVRDU2Vjb25kcygpKSxcIlpcIl0uam9pbihcIlwiKTp0aGlzLnJlcG9ydGVyLmVycm9yKFwiRW5jb2RpbmcgXCIrZStcIiB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpLHRoaXMuX2VuY29kZVN0cihyLFwib2N0c3RyXCIpfSxpLnByb3RvdHlwZS5fZW5jb2RlTnVsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFwiXCIpfSxpLnByb3RvdHlwZS5fZW5jb2RlSW50PWZ1bmN0aW9uKHQsZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKCFlKXJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKFwiU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcFwiKTtpZighZS5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcihcIlZhbHVlcyBtYXAgZG9lc24ndCBjb250YWluOiBcIitKU09OLnN0cmluZ2lmeSh0KSk7dD1lW3RdfWlmKFwibnVtYmVyXCIhPXR5cGVvZiB0JiYhcy5pc0J1ZmZlcih0KSl7dmFyIHI9dC50b0FycmF5KCk7IXQuc2lnbiYmMTI4JnJbMF0mJnIudW5zaGlmdCgwKSx0PW5ldyBzKHIpfWlmKHMuaXNCdWZmZXIodCkpe3ZhciBuPXQubGVuZ3RoOzA9PT10Lmxlbmd0aCYmbisrO3ZhciBpPW5ldyBzKG4pO3JldHVybiB0LmNvcHkoaSksMD09PXQubGVuZ3RoJiYoaVswXT0wKSx0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGkpfWlmKHQ8MTI4KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHQpO2lmKHQ8MjU2KXJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFswLHRdKTtmb3IodmFyIG49MSxvPXQ7bz49MjU2O28+Pj04KW4rKztmb3IodmFyIGk9bmV3IEFycmF5KG4pLG89aS5sZW5ndGgtMTtvPj0wO28tLSlpW29dPTI1NSZ0LHQ+Pj04O3JldHVybiAxMjgmaVswXSYmaS51bnNoaWZ0KDApLHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobmV3IHMoaSkpfSxpLnByb3RvdHlwZS5fZW5jb2RlQm9vbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0PzI1NTowKX0saS5wcm90b3R5cGUuX3VzZT1mdW5jdGlvbih0LGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJih0PXQoZSkpLHQuX2dldEVuY29kZXIoXCJkZXJcIikudHJlZX0saS5wcm90b3R5cGUuX3NraXBEZWZhdWx0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPXRoaXMuX2Jhc2VTdGF0ZTtpZihudWxsPT09aS5kZWZhdWx0KXJldHVybiExO3ZhciBvPXQuam9pbigpO2lmKHZvaWQgMD09PWkuZGVmYXVsdEJ1ZmZlciYmKGkuZGVmYXVsdEJ1ZmZlcj10aGlzLl9lbmNvZGVWYWx1ZShpLmRlZmF1bHQsZSxyKS5qb2luKCkpLG8ubGVuZ3RoIT09aS5kZWZhdWx0QnVmZmVyLmxlbmd0aClyZXR1cm4hMTtmb3Iobj0wO248by5sZW5ndGg7bisrKWlmKG9bbl0hPT1pLmRlZmF1bHRCdWZmZXJbbl0pcmV0dXJuITE7cmV0dXJuITB9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxyLGksZil7aWYoISh0aGlzIGluc3RhbmNlb2YgbikpcmV0dXJuIG5ldyBuKHQscixpKTthLmNhbGwodGhpcyksdGhpcy5fZmluSUQ9ZS5jb25jYXQoW2ksbmV3IGUoWzAsMCwwLDFdKV0pLGk9ZS5jb25jYXQoW2ksbmV3IGUoWzAsMCwwLDJdKV0pLHRoaXMuX2NpcGhlcj1uZXcgby5BRVMociksdGhpcy5fcHJldj1uZXcgZShpLmxlbmd0aCksdGhpcy5fY2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fc2VjQ2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fZGVjcnlwdD1mLHRoaXMuX2FsZW49MCx0aGlzLl9sZW49MCxpLmNvcHkodGhpcy5fcHJldiksdGhpcy5fbW9kZT10O3ZhciB1PW5ldyBlKDQpO3UuZmlsbCgwKSx0aGlzLl9naGFzaD1uZXcgcyh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHUpKSx0aGlzLl9hdXRoVGFnPW51bGwsdGhpcy5fY2FsbGVkPSExfWZ1bmN0aW9uIGkodCxlKXt2YXIgcj0wO3QubGVuZ3RoIT09ZS5sZW5ndGgmJnIrKztmb3IodmFyIG49TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpLGk9LTE7KytpPG47KXIrPXRbaV1eZVtpXTtyZXR1cm4gcn12YXIgbz1yKDEwNyksYT1yKDEwOSksZj1yKDIpLHM9cig1OTEpLHU9cig3Mik7ZihuLGEpLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2NhbGxlZCYmdGhpcy5fYWxlbil7dmFyIHI9MTYtdGhpcy5fYWxlbiUxNjtyPDE2JiYocj1uZXcgZShyKSxyLmZpbGwoMCksdGhpcy5fZ2hhc2gudXBkYXRlKHIpKX10aGlzLl9jYWxsZWQ9ITA7dmFyIG49dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCk7cmV0dXJuIHRoaXMuX2RlY3J5cHQ/dGhpcy5fZ2hhc2gudXBkYXRlKHQpOnRoaXMuX2doYXNoLnVwZGF0ZShuKSx0aGlzLl9sZW4rPXQubGVuZ3RoLG59LG4ucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe2lmKHRoaXMuX2RlY3J5cHQmJiF0aGlzLl9hdXRoVGFnKXRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YVwiKTt2YXIgdD11KHRoaXMuX2doYXNoLmZpbmFsKDgqdGhpcy5fYWxlbiw4KnRoaXMuX2xlbiksdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0aGlzLl9maW5JRCkpO2lmKHRoaXMuX2RlY3J5cHQpe2lmKGkodCx0aGlzLl9hdXRoVGFnKSl0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGFcIil9ZWxzZSB0aGlzLl9hdXRoVGFnPXQ7dGhpcy5fY2lwaGVyLnNjcnViKCl9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXtpZighdGhpcy5fZGVjcnlwdCYmZS5pc0J1ZmZlcih0aGlzLl9hdXRoVGFnKSlyZXR1cm4gdGhpcy5fYXV0aFRhZzt0aHJvdyBuZXcgRXJyb3IoXCJBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QXV0aFRhZz1mdW5jdGlvbih0KXtpZighdGhpcy5fZGVjcnlwdCl0aHJvdyBuZXcgRXJyb3IoXCJBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKTt0aGlzLl9hdXRoVGFnPXR9LG4ucHJvdG90eXBlLnNldEFBRD1mdW5jdGlvbih0KXtpZih0aGlzLl9jYWxsZWQpdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpO3RoaXMuX2doYXNoLnVwZGF0ZSh0KSx0aGlzLl9hbGVuKz10Lmxlbmd0aH19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBPYmplY3Qua2V5cyhhKX12YXIgaT1yKDU5MCk7ZS5jcmVhdGVDaXBoZXI9ZS5DaXBoZXI9aS5jcmVhdGVDaXBoZXIsZS5jcmVhdGVDaXBoZXJpdj1lLkNpcGhlcml2PWkuY3JlYXRlQ2lwaGVyaXY7dmFyIG89cig1ODkpO2UuY3JlYXRlRGVjaXBoZXI9ZS5EZWNpcGhlcj1vLmNyZWF0ZURlY2lwaGVyLGUuY3JlYXRlRGVjaXBoZXJpdj1lLkRlY2lwaGVyaXY9by5jcmVhdGVEZWNpcGhlcml2O3ZhciBhPXIoMTUyKTtlLmxpc3RDaXBoZXJzPWUuZ2V0Q2lwaGVycz1ufSxmdW5jdGlvbih0LGUscil7dmFyIG49cig3Mik7ZS5lbmNyeXB0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bihlLHQuX3ByZXYpO3JldHVybiB0Ll9wcmV2PXQuX2NpcGhlci5lbmNyeXB0QmxvY2sociksdC5fcHJldn0sZS5kZWNyeXB0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fcHJldjt0Ll9wcmV2PWU7dmFyIGk9dC5fY2lwaGVyLmRlY3J5cHRCbG9jayhlKTtyZXR1cm4gbihpLHIpfX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUscixuKXt2YXIgbz1yLmxlbmd0aCxhPWkocixlLl9jYWNoZSk7cmV0dXJuIGUuX2NhY2hlPWUuX2NhY2hlLnNsaWNlKG8pLGUuX3ByZXY9dC5jb25jYXQoW2UuX3ByZXYsbj9yOmFdKSxhfXZhciBpPXIoNzIpO2UuZW5jcnlwdD1mdW5jdGlvbihlLHIsaSl7Zm9yKHZhciBvLGE9bmV3IHQoXCJcIik7ci5sZW5ndGg7KXtpZigwPT09ZS5fY2FjaGUubGVuZ3RoJiYoZS5fY2FjaGU9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhlLl9wcmV2KSxlLl9wcmV2PW5ldyB0KFwiXCIpKSwhKGUuX2NhY2hlLmxlbmd0aDw9ci5sZW5ndGgpKXthPXQuY29uY2F0KFthLG4oZSxyLGkpXSk7YnJlYWt9bz1lLl9jYWNoZS5sZW5ndGgsYT10LmNvbmNhdChbYSxuKGUsci5zbGljZSgwLG8pLGkpXSkscj1yLnNsaWNlKG8pfXJldHVybiBhfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0LGUscil7Zm9yKHZhciBpLG8sYSxmPS0xLHM9OCx1PTA7KytmPHM7KWk9dC5fY2lwaGVyLmVuY3J5cHRCbG9jayh0Ll9wcmV2KSxvPWUmMTw8Ny1mPzEyODowLGE9aVswXV5vLHUrPSgxMjgmYSk+PmYlOCx0Ll9wcmV2PW4odC5fcHJldixyP286YSk7cmV0dXJuIHV9ZnVuY3Rpb24gbihlLHIpe3ZhciBuPWUubGVuZ3RoLGk9LTEsbz1uZXcgdChlLmxlbmd0aCk7Zm9yKGU9dC5jb25jYXQoW2UsbmV3IHQoW3JdKV0pOysraTxuOylvW2ldPWVbaV08PDF8ZVtpKzFdPj43O3JldHVybiBvfWUuZW5jcnlwdD1mdW5jdGlvbihlLG4saSl7Zm9yKHZhciBvPW4ubGVuZ3RoLGE9bmV3IHQobyksZj0tMTsrK2Y8bzspYVtmXT1yKGUsbltmXSxpKTtyZXR1cm4gYX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSxyLG4pe3ZhciBpPWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldiksbz1pWzBdXnI7cmV0dXJuIGUuX3ByZXY9dC5jb25jYXQoW2UuX3ByZXYuc2xpY2UoMSksbmV3IHQoW24/cjpvXSldKSxvfWUuZW5jcnlwdD1mdW5jdGlvbihlLG4saSl7Zm9yKHZhciBvPW4ubGVuZ3RoLGE9bmV3IHQobyksZj0tMTsrK2Y8bzspYVtmXT1yKGUsbltmXSxpKTtyZXR1cm4gYX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUpe2UuZW5jcnlwdD1mdW5jdGlvbih0LGUpe3JldHVybiB0Ll9jaXBoZXIuZW5jcnlwdEJsb2NrKGUpfSxlLmRlY3J5cHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5fY2lwaGVyLmRlY3J5cHRCbG9jayhlKX19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5fcHJldj10Ll9jaXBoZXIuZW5jcnlwdEJsb2NrKHQuX3ByZXYpLHQuX3ByZXZ9dmFyIGk9cig3Mik7ZS5lbmNyeXB0PWZ1bmN0aW9uKGUscil7Zm9yKDtlLl9jYWNoZS5sZW5ndGg8ci5sZW5ndGg7KWUuX2NhY2hlPXQuY29uY2F0KFtlLl9jYWNoZSxuKGUpXSk7dmFyIG89ZS5fY2FjaGUuc2xpY2UoMCxyLmxlbmd0aCk7cmV0dXJuIGUuX2NhY2hlPWUuX2NhY2hlLnNsaWNlKHIubGVuZ3RoKSxpKHIsbyl9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscixhLGYpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8oby5jYWxsKHRoaXMpLHRoaXMuX2NpcGhlcj1uZXcgaS5BRVMociksdGhpcy5fcHJldj1uZXcgZShhLmxlbmd0aCksdGhpcy5fY2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fc2VjQ2FjaGU9bmV3IGUoXCJcIiksdGhpcy5fZGVjcnlwdD1mLGEuY29weSh0aGlzLl9wcmV2KSx2b2lkKHRoaXMuX21vZGU9dCkpOm5ldyBuKHQscixhKX12YXIgaT1yKDEwNyksbz1yKDEwOSksYT1yKDIpO2EobixvKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcyx0LHRoaXMuX2RlY3J5cHQpfSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt0aGlzLl9jaXBoZXIuc2NydWIoKX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxyKXtyZXR1cm4gbmV3IGUodC50b1JlZChpLm1vbnQoci5tb2R1bHVzKSkucmVkUG93KG5ldyBpKHIucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCkudG9BcnJheSgpKX12YXIgaT1yKDcwKTt0LmV4cG9ydHM9bn0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49LTE7KytuPHI7KXRbbl1ePWVbbl07cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/dm9pZCBpLmNhbGwodGhpcyx0KTpuZXcgbih0KX10LmV4cG9ydHM9bjt2YXIgaT1yKDE1NCksbz1yKDczKTtvLmluaGVyaXRzPXIoNzQpLG8uaW5oZXJpdHMobixpKSxuLnByb3RvdHlwZS5fdHJhbnNmb3JtPWZ1bmN0aW9uKHQsZSxyKXtyKG51bGwsdCl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlLHIpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQucHJlcGVuZExpc3RlbmVyP3QucHJlcGVuZExpc3RlbmVyKGUscik6dm9pZCh0Ll9ldmVudHMmJnQuX2V2ZW50c1tlXT9PKHQuX2V2ZW50c1tlXSk/dC5fZXZlbnRzW2VdLnVuc2hpZnQocik6dC5fZXZlbnRzW2VdPVtyLHQuX2V2ZW50c1tlXV06dC5vbihlLHIpKX1mdW5jdGlvbiBpKHQsZSl7RD1EfHxyKDUxKSx0PXR8fHt9LHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxlIGluc3RhbmNlb2YgRCYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhdC5yZWFkYWJsZU9iamVjdE1vZGUpO3ZhciBuPXQuaGlnaFdhdGVyTWFyayxpPXRoaXMub2JqZWN0TW9kZT8xNjoxNjM4NDt0aGlzLmhpZ2hXYXRlck1hcms9bnx8MD09PW4/bjppLHRoaXMuaGlnaFdhdGVyTWFyaz1+fnRoaXMuaGlnaFdhdGVyTWFyayx0aGlzLmJ1ZmZlcj1uZXcgeix0aGlzLmxlbmd0aD0wLHRoaXMucGlwZXM9bnVsbCx0aGlzLnBpcGVzQ291bnQ9MCx0aGlzLmZsb3dpbmc9bnVsbCx0aGlzLmVuZGVkPSExLHRoaXMuZW5kRW1pdHRlZD0hMSx0aGlzLnJlYWRpbmc9ITEsdGhpcy5zeW5jPSEwLHRoaXMubmVlZFJlYWRhYmxlPSExLHRoaXMuZW1pdHRlZFJlYWRhYmxlPSExLHRoaXMucmVhZGFibGVMaXN0ZW5pbmc9ITEsdGhpcy5yZXN1bWVTY2hlZHVsZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMucmFuT3V0PSExLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLHQuZW5jb2RpbmcmJihVfHwoVT1yKDUyKS5TdHJpbmdEZWNvZGVyKSx0aGlzLmRlY29kZXI9bmV3IFUodC5lbmNvZGluZyksdGhpcy5lbmNvZGluZz10LmVuY29kaW5nKX1mdW5jdGlvbiBvKHQpe3JldHVybiBEPUR8fHIoNTEpLHRoaXMgaW5zdGFuY2VvZiBvPyh0aGlzLl9yZWFkYWJsZVN0YXRlPW5ldyBpKHQsdGhpcyksdGhpcy5yZWFkYWJsZT0hMCx0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlYWQmJih0aGlzLl9yZWFkPXQucmVhZCksdm9pZCBSLmNhbGwodGhpcykpOm5ldyBvKHQpfWZ1bmN0aW9uIGEodCxlLHIsbixpKXt2YXIgbz1oKGUscik7aWYobyl0LmVtaXQoXCJlcnJvclwiLG8pO2Vsc2UgaWYobnVsbD09PXIpZS5yZWFkaW5nPSExLGModCxlKTtlbHNlIGlmKGUub2JqZWN0TW9kZXx8ciYmci5sZW5ndGg+MClpZihlLmVuZGVkJiYhaSl7dmFyIGE9bmV3IEVycm9yKFwic3RyZWFtLnB1c2goKSBhZnRlciBFT0ZcIik7dC5lbWl0KFwiZXJyb3JcIixhKX1lbHNlIGlmKGUuZW5kRW1pdHRlZCYmaSl7dmFyIHM9bmV3IEVycm9yKFwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnRcIik7dC5lbWl0KFwiZXJyb3JcIixzKX1lbHNle3ZhciB1OyFlLmRlY29kZXJ8fGl8fG58fChyPWUuZGVjb2Rlci53cml0ZShyKSx1PSFlLm9iamVjdE1vZGUmJjA9PT1yLmxlbmd0aCksaXx8KGUucmVhZGluZz0hMSksdXx8KGUuZmxvd2luZyYmMD09PWUubGVuZ3RoJiYhZS5zeW5jPyh0LmVtaXQoXCJkYXRhXCIsciksdC5yZWFkKDApKTooZS5sZW5ndGgrPWUub2JqZWN0TW9kZT8xOnIubGVuZ3RoLGk/ZS5idWZmZXIudW5zaGlmdChyKTplLmJ1ZmZlci5wdXNoKHIpLGUubmVlZFJlYWRhYmxlJiZkKHQpKSkscCh0LGUpfWVsc2UgaXx8KGUucmVhZGluZz0hMSk7cmV0dXJuIGYoZSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4hdC5lbmRlZCYmKHQubmVlZFJlYWRhYmxlfHx0Lmxlbmd0aDx0LmhpZ2hXYXRlck1hcmt8fDA9PT10Lmxlbmd0aCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdD49cT90PXE6KHQtLSx0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCx0fD10Pj4+MTYsdCsrKSx0fWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gdDw9MHx8MD09PWUubGVuZ3RoJiZlLmVuZGVkPzA6ZS5vYmplY3RNb2RlPzE6dCE9PXQ/ZS5mbG93aW5nJiZlLmxlbmd0aD9lLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOmUubGVuZ3RoOih0PmUuaGlnaFdhdGVyTWFyayYmKGUuaGlnaFdhdGVyTWFyaz1zKHQpKSx0PD1lLmxlbmd0aD90OmUuZW5kZWQ/ZS5sZW5ndGg6KGUubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBoKHQsZSl7dmFyIHI9bnVsbDtyZXR1cm4gVC5pc0J1ZmZlcihlKXx8XCJzdHJpbmdcIj09dHlwZW9mIGV8fG51bGw9PT1lfHx2b2lkIDA9PT1lfHx0Lm9iamVjdE1vZGV8fChyPW5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rXCIpKSxyfWZ1bmN0aW9uIGModCxlKXtpZighZS5lbmRlZCl7aWYoZS5kZWNvZGVyKXt2YXIgcj1lLmRlY29kZXIuZW5kKCk7ciYmci5sZW5ndGgmJihlLmJ1ZmZlci5wdXNoKHIpLGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCl9ZS5lbmRlZD0hMCxkKHQpfX1mdW5jdGlvbiBkKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7ZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChMKFwiZW1pdFJlYWRhYmxlXCIsZS5mbG93aW5nKSxlLmVtaXR0ZWRSZWFkYWJsZT0hMCxlLnN5bmM/QihsLHQpOmwodCkpfWZ1bmN0aW9uIGwodCl7TChcImVtaXQgcmVhZGFibGVcIiksdC5lbWl0KFwicmVhZGFibGVcIiksdyh0KX1mdW5jdGlvbiBwKHQsZSl7ZS5yZWFkaW5nTW9yZXx8KGUucmVhZGluZ01vcmU9ITAsQihiLHQsZSkpfWZ1bmN0aW9uIGIodCxlKXtmb3IodmFyIHI9ZS5sZW5ndGg7IWUucmVhZGluZyYmIWUuZmxvd2luZyYmIWUuZW5kZWQmJmUubGVuZ3RoPGUuaGlnaFdhdGVyTWFyayYmKEwoXCJtYXliZVJlYWRNb3JlIHJlYWQgMFwiKSx0LnJlYWQoMCksciE9PWUubGVuZ3RoKTspcj1lLmxlbmd0aDtlLnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIHYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtMKFwicGlwZU9uRHJhaW5cIixlLmF3YWl0RHJhaW4pLGUuYXdhaXREcmFpbiYmZS5hd2FpdERyYWluLS0sMD09PWUuYXdhaXREcmFpbiYmUCh0LFwiZGF0YVwiKSYmKGUuZmxvd2luZz0hMCx3KHQpKX19ZnVuY3Rpb24geSh0KXtMKFwicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwXCIpLHQucmVhZCgwKX1mdW5jdGlvbiBtKHQsZSl7ZS5yZXN1bWVTY2hlZHVsZWR8fChlLnJlc3VtZVNjaGVkdWxlZD0hMCxCKGcsdCxlKSl9ZnVuY3Rpb24gZyh0LGUpe2UucmVhZGluZ3x8KEwoXCJyZXN1bWUgcmVhZCAwXCIpLHQucmVhZCgwKSksZS5yZXN1bWVTY2hlZHVsZWQ9ITEsZS5hd2FpdERyYWluPTAsdC5lbWl0KFwicmVzdW1lXCIpLHcodCksZS5mbG93aW5nJiYhZS5yZWFkaW5nJiZ0LnJlYWQoMCl9ZnVuY3Rpb24gdyh0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO2ZvcihMKFwiZmxvd1wiLGUuZmxvd2luZyk7ZS5mbG93aW5nJiZudWxsIT09dC5yZWFkKCk7KTt9ZnVuY3Rpb24gXyh0LGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgcjtyZXR1cm4gZS5vYmplY3RNb2RlP3I9ZS5idWZmZXIuc2hpZnQoKTohdHx8dD49ZS5sZW5ndGg/KHI9ZS5kZWNvZGVyP2UuYnVmZmVyLmpvaW4oXCJcIik6MT09PWUuYnVmZmVyLmxlbmd0aD9lLmJ1ZmZlci5oZWFkLmRhdGE6ZS5idWZmZXIuY29uY2F0KGUubGVuZ3RoKSxlLmJ1ZmZlci5jbGVhcigpKTpyPU0odCxlLmJ1ZmZlcixlLmRlY29kZXIpLHJ9ZnVuY3Rpb24gTSh0LGUscil7dmFyIG47cmV0dXJuIHQ8ZS5oZWFkLmRhdGEubGVuZ3RoPyhuPWUuaGVhZC5kYXRhLnNsaWNlKDAsdCksZS5oZWFkLmRhdGE9ZS5oZWFkLmRhdGEuc2xpY2UodCkpOm49dD09PWUuaGVhZC5kYXRhLmxlbmd0aD9lLnNoaWZ0KCk6cj9TKHQsZSk6RSh0LGUpLG59ZnVuY3Rpb24gUyh0LGUpe3ZhciByPWUuaGVhZCxuPTEsaT1yLmRhdGE7Zm9yKHQtPWkubGVuZ3RoO3I9ci5uZXh0Oyl7dmFyIG89ci5kYXRhLGE9dD5vLmxlbmd0aD9vLmxlbmd0aDp0O2lmKGkrPWE9PT1vLmxlbmd0aD9vOm8uc2xpY2UoMCx0KSx0LT1hLDA9PT10KXthPT09by5sZW5ndGg/KCsrbixyLm5leHQ/ZS5oZWFkPXIubmV4dDplLmhlYWQ9ZS50YWlsPW51bGwpOihlLmhlYWQ9cixyLmRhdGE9by5zbGljZShhKSk7YnJlYWt9KytufXJldHVybiBlLmxlbmd0aC09bixpfWZ1bmN0aW9uIEUodCxlKXt2YXIgcj1qLmFsbG9jVW5zYWZlKHQpLG49ZS5oZWFkLGk9MTtmb3Iobi5kYXRhLmNvcHkociksdC09bi5kYXRhLmxlbmd0aDtuPW4ubmV4dDspe3ZhciBvPW4uZGF0YSxhPXQ+by5sZW5ndGg/by5sZW5ndGg6dDtpZihvLmNvcHkocixyLmxlbmd0aC10LDAsYSksdC09YSwwPT09dCl7YT09PW8ubGVuZ3RoPygrK2ksbi5uZXh0P2UuaGVhZD1uLm5leHQ6ZS5oZWFkPWUudGFpbD1udWxsKTooZS5oZWFkPW4sbi5kYXRhPW8uc2xpY2UoYSkpO2JyZWFrfSsraX1yZXR1cm4gZS5sZW5ndGgtPWkscn1mdW5jdGlvbiBBKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7aWYoZS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoJ1wiZW5kUmVhZGFibGUoKVwiIGNhbGxlZCBvbiBub24tZW1wdHkgc3RyZWFtJyk7ZS5lbmRFbWl0dGVkfHwoZS5lbmRlZD0hMCxCKGssZSx0KSl9ZnVuY3Rpb24gayh0LGUpe3QuZW5kRW1pdHRlZHx8MCE9PXQubGVuZ3RofHwodC5lbmRFbWl0dGVkPSEwLGUucmVhZGFibGU9ITEsZS5lbWl0KFwiZW5kXCIpKX1mdW5jdGlvbiB4KHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisrKWUodFtyXSxyKX1mdW5jdGlvbiBJKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisrKWlmKHRbcl09PT1lKXJldHVybiByO3JldHVybi0xfXQuZXhwb3J0cz1vO3ZhciBCPXIoMTU3KSxPPXIoNTk3KTtvLlJlYWRhYmxlU3RhdGU9aTt2YXIgUixQPShyKDExMCkuRXZlbnRFbWl0dGVyLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGlzdGVuZXJzKGUpLmxlbmd0aH0pOyFmdW5jdGlvbigpe3RyeXtSPXIoMzEpfWNhdGNoKHQpe31maW5hbGx5e1J8fChSPXIoMTEwKS5FdmVudEVtaXR0ZXIpfX0oKTt2YXIgVD1yKDEpLkJ1ZmZlcixqPXIoMTU2KSxDPXIoNzMpO0MuaW5oZXJpdHM9cig3NCk7dmFyIE49cig2MTIpLEw9dm9pZCAwO0w9TiYmTi5kZWJ1Z2xvZz9OLmRlYnVnbG9nKFwic3RyZWFtXCIpOmZ1bmN0aW9uKCl7fTt2YXIgVSx6PXIoNTk2KTtDLmluaGVyaXRzKG8sUik7dmFyIEQsRDtvLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gci5vYmplY3RNb2RlfHxcInN0cmluZ1wiIT10eXBlb2YgdHx8KGU9ZXx8ci5kZWZhdWx0RW5jb2RpbmcsZSE9PXIuZW5jb2RpbmcmJih0PWouZnJvbSh0LGUpLGU9XCJcIikpLGEodGhpcyxyLHQsZSwhMSl9LG8ucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gYSh0aGlzLGUsdCxcIlwiLCEwKX0sby5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPT09ITF9LG8ucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBVfHwoVT1yKDUyKS5TdHJpbmdEZWNvZGVyKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9bmV3IFUodCksdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10LHRoaXN9O3ZhciBxPTgzODg2MDg7by5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0KXtMKFwicmVhZFwiLHQpLHQ9cGFyc2VJbnQodCwxMCk7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXQ7aWYoMCE9PXQmJihlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PXQmJmUubmVlZFJlYWRhYmxlJiYoZS5sZW5ndGg+PWUuaGlnaFdhdGVyTWFya3x8ZS5lbmRlZCkpcmV0dXJuIEwoXCJyZWFkOiBlbWl0UmVhZGFibGVcIixlLmxlbmd0aCxlLmVuZGVkKSwwPT09ZS5sZW5ndGgmJmUuZW5kZWQ/QSh0aGlzKTpkKHRoaXMpLG51bGw7aWYodD11KHQsZSksMD09PXQmJmUuZW5kZWQpcmV0dXJuIDA9PT1lLmxlbmd0aCYmQSh0aGlzKSxudWxsO3ZhciBuPWUubmVlZFJlYWRhYmxlO0woXCJuZWVkIHJlYWRhYmxlXCIsbiksKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtdDxlLmhpZ2hXYXRlck1hcmspJiYobj0hMCxMKFwibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmtcIixuKSksZS5lbmRlZHx8ZS5yZWFkaW5nPyhuPSExLEwoXCJyZWFkaW5nIG9yIGVuZGVkXCIsbikpOm4mJihMKFwiZG8gcmVhZFwiKSxlLnJlYWRpbmc9ITAsZS5zeW5jPSEwLDA9PT1lLmxlbmd0aCYmKGUubmVlZFJlYWRhYmxlPSEwKSx0aGlzLl9yZWFkKGUuaGlnaFdhdGVyTWFyayksZS5zeW5jPSExLGUucmVhZGluZ3x8KHQ9dShyLGUpKSk7dmFyIGk7cmV0dXJuIGk9dD4wP18odCxlKTpudWxsLG51bGw9PT1pPyhlLm5lZWRSZWFkYWJsZT0hMCx0PTApOmUubGVuZ3RoLT10LDA9PT1lLmxlbmd0aCYmKGUuZW5kZWR8fChlLm5lZWRSZWFkYWJsZT0hMCksciE9PXQmJmUuZW5kZWQmJkEodGhpcykpLG51bGwhPT1pJiZ0aGlzLmVtaXQoXCJkYXRhXCIsaSksaX0sby5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24odCl7dGhpcy5lbWl0KFwiZXJyb3JcIixuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpfSxvLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gaSh0KXtMKFwib251bnBpcGVcIiksdD09PWQmJmEoKX1mdW5jdGlvbiBvKCl7TChcIm9uZW5kXCIpLHQuZW5kKCl9ZnVuY3Rpb24gYSgpe0woXCJjbGVhbnVwXCIpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHUpLHQucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixoKSx0LnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIix5KSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixzKSx0LnJlbW92ZUxpc3RlbmVyKFwidW5waXBlXCIsaSksZC5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLG8pLGQucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixhKSxkLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGYpLG09ITAsIWwuYXdhaXREcmFpbnx8dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUubmVlZERyYWlufHx5KCl9ZnVuY3Rpb24gZihlKXtMKFwib25kYXRhXCIpLGc9ITE7dmFyIHI9dC53cml0ZShlKTshMSE9PXJ8fGd8fCgoMT09PWwucGlwZXNDb3VudCYmbC5waXBlcz09PXR8fGwucGlwZXNDb3VudD4xJiZJKGwucGlwZXMsdCkhPT0tMSkmJiFtJiYoTChcImZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZVwiLGQuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbiksZC5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKyssZz0hMCksZC5wYXVzZSgpKX1mdW5jdGlvbiBzKGUpe0woXCJvbmVycm9yXCIsZSksYygpLHQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHMpLDA9PT1QKHQsXCJlcnJvclwiKSYmdC5lbWl0KFwiZXJyb3JcIixlKX1mdW5jdGlvbiB1KCl7dC5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGgpLGMoKX1mdW5jdGlvbiBoKCl7TChcIm9uZmluaXNoXCIpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHUpLGMoKX1mdW5jdGlvbiBjKCl7TChcInVucGlwZVwiKSxkLnVucGlwZSh0KX12YXIgZD10aGlzLGw9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2gobC5waXBlc0NvdW50KXtjYXNlIDA6bC5waXBlcz10O2JyZWFrO2Nhc2UgMTpsLnBpcGVzPVtsLnBpcGVzLHRdO2JyZWFrO2RlZmF1bHQ6bC5waXBlcy5wdXNoKHQpfWwucGlwZXNDb3VudCs9MSxMKFwicGlwZSBjb3VudD0lZCBvcHRzPSVqXCIsbC5waXBlc0NvdW50LHIpO3ZhciBwPSghcnx8ci5lbmQhPT0hMSkmJnQhPT1lLnN0ZG91dCYmdCE9PWUuc3RkZXJyLGI9cD9vOmE7bC5lbmRFbWl0dGVkP0IoYik6ZC5vbmNlKFwiZW5kXCIsYiksdC5vbihcInVucGlwZVwiLGkpO3ZhciB5PXYoZCk7dC5vbihcImRyYWluXCIseSk7dmFyIG09ITEsZz0hMTtyZXR1cm4gZC5vbihcImRhdGFcIixmKSxuKHQsXCJlcnJvclwiLHMpLHQub25jZShcImNsb3NlXCIsdSksdC5vbmNlKFwiZmluaXNoXCIsaCksdC5lbWl0KFwicGlwZVwiLGQpLGwuZmxvd2luZ3x8KEwoXCJwaXBlIHJlc3VtZVwiKSxkLnJlc3VtZSgpKSx0fSxvLnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZTtpZigwPT09ZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1lLnBpcGVzQ291bnQpcmV0dXJuIHQmJnQhPT1lLnBpcGVzP3RoaXM6KHR8fCh0PWUucGlwZXMpLGUucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITEsdCYmdC5lbWl0KFwidW5waXBlXCIsdGhpcyksdGhpcyk7aWYoIXQpe3ZhciByPWUucGlwZXMsbj1lLnBpcGVzQ291bnQ7ZS5waXBlcz1udWxsLGUucGlwZXNDb3VudD0wLGUuZmxvd2luZz0hMTtmb3IodmFyIGk9MDtpPG47aSsrKXJbaV0uZW1pdChcInVucGlwZVwiLHRoaXMpO3JldHVybiB0aGlzfXZhciBvPUkoZS5waXBlcyx0KTtyZXR1cm4gbz09PS0xP3RoaXM6KGUucGlwZXMuc3BsaWNlKG8sMSksZS5waXBlc0NvdW50LT0xLDE9PT1lLnBpcGVzQ291bnQmJihlLnBpcGVzPWUucGlwZXNbMF0pLHQuZW1pdChcInVucGlwZVwiLHRoaXMpLHRoaXMpfSxvLnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3ZhciByPVIucHJvdG90eXBlLm9uLmNhbGwodGhpcyx0LGUpO2lmKFwiZGF0YVwiPT09dCl0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmchPT0hMSYmdGhpcy5yZXN1bWUoKTtlbHNlIGlmKFwicmVhZGFibGVcIj09PXQpe3ZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGU7bi5lbmRFbWl0dGVkfHxuLnJlYWRhYmxlTGlzdGVuaW5nfHwobi5yZWFkYWJsZUxpc3RlbmluZz1uLm5lZWRSZWFkYWJsZT0hMCxuLmVtaXR0ZWRSZWFkYWJsZT0hMSxuLnJlYWRpbmc/bi5sZW5ndGgmJmQodGhpcyxuKTpCKHksdGhpcykpfXJldHVybiByfSxvLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1vLnByb3RvdHlwZS5vbixvLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiB0LmZsb3dpbmd8fChMKFwicmVzdW1lXCIpLHQuZmxvd2luZz0hMCxtKHRoaXMsdCkpLHRoaXN9LG8ucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIEwoXCJjYWxsIHBhdXNlIGZsb3dpbmc9JWpcIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYoTChcInBhdXNlXCIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoXCJwYXVzZVwiKSksdGhpc30sby5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlLHI9ITEsbj10aGlzO3Qub24oXCJlbmRcIixmdW5jdGlvbigpe2lmKEwoXCJ3cmFwcGVkIGVuZFwiKSxlLmRlY29kZXImJiFlLmVuZGVkKXt2YXIgdD1lLmRlY29kZXIuZW5kKCk7dCYmdC5sZW5ndGgmJm4ucHVzaCh0KX1uLnB1c2gobnVsbCl9KSx0Lm9uKFwiZGF0YVwiLGZ1bmN0aW9uKGkpe2lmKEwoXCJ3cmFwcGVkIGRhdGFcIiksZS5kZWNvZGVyJiYoaT1lLmRlY29kZXIud3JpdGUoaSkpLCghZS5vYmplY3RNb2RlfHxudWxsIT09aSYmdm9pZCAwIT09aSkmJihlLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSl7dmFyIG89bi5wdXNoKGkpO298fChyPSEwLHQucGF1c2UoKSl9fSk7Zm9yKHZhciBpIGluIHQpdm9pZCAwPT09dGhpc1tpXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdFtpXSYmKHRoaXNbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRbZV0uYXBwbHkodCxhcmd1bWVudHMpfX0oaSkpO3ZhciBvPVtcImVycm9yXCIsXCJjbG9zZVwiLFwiZGVzdHJveVwiLFwicGF1c2VcIixcInJlc3VtZVwiXTtyZXR1cm4geChvLGZ1bmN0aW9uKGUpe3Qub24oZSxuLmVtaXQuYmluZChuLGUpKX0pLG4uX3JlYWQ9ZnVuY3Rpb24oZSl7TChcIndyYXBwZWQgX3JlYWRcIixlKSxyJiYocj0hMSx0LnJlc3VtZSgpKX0sbn0sby5fZnJvbUxpc3Q9X30pLmNhbGwoZSxyKDI2KSl9LGZ1bmN0aW9uKG1vZHVsZSxleHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pe2Z1bmN0aW9uIENvbnRleHQoKXt9dmFyIGluZGV4T2Y9X193ZWJwYWNrX3JlcXVpcmVfXyg2MDcpLE9iamVjdF9rZXlzPWZ1bmN0aW9uKHQpe2lmKE9iamVjdC5rZXlzKXJldHVybiBPYmplY3Qua2V5cyh0KTt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2gocik7cmV0dXJuIGV9LGZvckVhY2g9ZnVuY3Rpb24odCxlKXtpZih0LmZvckVhY2gpcmV0dXJuIHQuZm9yRWFjaChlKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyllKHRbcl0scix0KX0sZGVmaW5lUHJvcD1mdW5jdGlvbigpe3RyeXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LFwiX1wiLHt9KSxmdW5jdGlvbih0LGUscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7d3JpdGFibGU6ITAsZW51bWVyYWJsZTohMSxcbmNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpyfSl9fWNhdGNoKHQpe3JldHVybiBmdW5jdGlvbih0LGUscil7dFtlXT1yfX19KCksZ2xvYmFscz1bXCJBcnJheVwiLFwiQm9vbGVhblwiLFwiRGF0ZVwiLFwiRXJyb3JcIixcIkV2YWxFcnJvclwiLFwiRnVuY3Rpb25cIixcIkluZmluaXR5XCIsXCJKU09OXCIsXCJNYXRoXCIsXCJOYU5cIixcIk51bWJlclwiLFwiT2JqZWN0XCIsXCJSYW5nZUVycm9yXCIsXCJSZWZlcmVuY2VFcnJvclwiLFwiUmVnRXhwXCIsXCJTdHJpbmdcIixcIlN5bnRheEVycm9yXCIsXCJUeXBlRXJyb3JcIixcIlVSSUVycm9yXCIsXCJkZWNvZGVVUklcIixcImRlY29kZVVSSUNvbXBvbmVudFwiLFwiZW5jb2RlVVJJXCIsXCJlbmNvZGVVUklDb21wb25lbnRcIixcImVzY2FwZVwiLFwiZXZhbFwiLFwiaXNGaW5pdGVcIixcImlzTmFOXCIsXCJwYXJzZUZsb2F0XCIsXCJwYXJzZUludFwiLFwidW5kZWZpbmVkXCIsXCJ1bmVzY2FwZVwiXTtDb250ZXh0LnByb3RvdHlwZT17fTt2YXIgU2NyaXB0PWV4cG9ydHMuU2NyaXB0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgU2NyaXB0P3ZvaWQodGhpcy5jb2RlPXQpOm5ldyBTY3JpcHQodCl9O1NjcmlwdC5wcm90b3R5cGUucnVuSW5Db250ZXh0PWZ1bmN0aW9uKHQpe2lmKCEodCBpbnN0YW5jZW9mIENvbnRleHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlmcmFtZVwiKTtlLnN0eWxlfHwoZS5zdHlsZT17fSksZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7dmFyIHI9ZS5jb250ZW50V2luZG93LG49ci5ldmFsLGk9ci5leGVjU2NyaXB0OyFuJiZpJiYoaS5jYWxsKHIsXCJudWxsXCIpLG49ci5ldmFsKSxmb3JFYWNoKE9iamVjdF9rZXlzKHQpLGZ1bmN0aW9uKGUpe3JbZV09dFtlXX0pLGZvckVhY2goZ2xvYmFscyxmdW5jdGlvbihlKXt0W2VdJiYocltlXT10W2VdKX0pO3ZhciBvPU9iamVjdF9rZXlzKHIpLGE9bi5jYWxsKHIsdGhpcy5jb2RlKTtyZXR1cm4gZm9yRWFjaChPYmplY3Rfa2V5cyhyKSxmdW5jdGlvbihlKXsoZSBpbiB0fHxpbmRleE9mKG8sZSk9PT0tMSkmJih0W2VdPXJbZV0pfSksZm9yRWFjaChnbG9iYWxzLGZ1bmN0aW9uKGUpe2UgaW4gdHx8ZGVmaW5lUHJvcCh0LGUscltlXSl9KSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpLGF9LFNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBldmFsKHRoaXMuY29kZSl9LFNjcmlwdC5wcm90b3R5cGUucnVuSW5OZXdDb250ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPVNjcmlwdC5jcmVhdGVDb250ZXh0KHQpLHI9dGhpcy5ydW5JbkNvbnRleHQoZSk7cmV0dXJuIGZvckVhY2goT2JqZWN0X2tleXMoZSksZnVuY3Rpb24ocil7dFtyXT1lW3JdfSkscn0sZm9yRWFjaChPYmplY3Rfa2V5cyhTY3JpcHQucHJvdG90eXBlKSxmdW5jdGlvbih0KXtleHBvcnRzW3RdPVNjcmlwdFt0XT1mdW5jdGlvbihlKXt2YXIgcj1TY3JpcHQoZSk7cmV0dXJuIHJbdF0uYXBwbHkocixbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9fSksZXhwb3J0cy5jcmVhdGVTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGV4cG9ydHMuU2NyaXB0KHQpfSxleHBvcnRzLmNyZWF0ZUNvbnRleHQ9U2NyaXB0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IENvbnRleHQ7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJmZvckVhY2goT2JqZWN0X2tleXModCksZnVuY3Rpb24ocil7ZVtyXT10W3JdfSksZX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7dmFyIG49cig3NSksaT1yKDYzKSxvPXIoMTE1KSxhPXIoMjY0KSxmPXIoMjYzKSxzPXIoMjY2KSx1PXIoMjY1KSxoPXIoMjYyKSxjPXIoMTE2KSxkPW5ldyBlKDApLGw9ZnVuY3Rpb24odCl7dmFyIGU9bi5mcm9tVXJpKHQpO3JldHVybiBlLnZhbGlkYXRlKCl9LHA9ZnVuY3Rpb24odCxyLG4pe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBuJiYobj1kKSwhZS5pc0J1ZmZlcihuKSl0aHJvdyBuZXcgRXJyb3IoXCJNZXNzYWdlIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBCdWZmZXJcIik7dmFyIG89aS5mcm9tVXJpKHQpLGE9by5nZXRDb25kaXRpb25VcmkoKTtpZihhIT09cil0aHJvdyBuZXcgRXJyb3IoXCJGdWxmaWxsbWVudCBkb2VzIG5vdCBtYXRjaCBjb25kaXRpb24gKGV4cGVjdGVkOiBcIityK1wiLCBhY3R1YWw6IFwiK2ErXCIpXCIpO3JldHVybiBvLnZhbGlkYXRlKG4pfSxiPWZ1bmN0aW9uKHQpe3ZhciBlPWkuZnJvbVVyaSh0KTtyZXR1cm4gZS5nZXRDb25kaXRpb25VcmkoKX07by5yZWdpc3RlclR5cGUoYSksby5yZWdpc3RlclR5cGUoZiksby5yZWdpc3RlclR5cGUocyksby5yZWdpc3RlclR5cGUodSksby5yZWdpc3RlclR5cGUoaCksdC5leHBvcnRzPXtDb25kaXRpb246bixGdWxmaWxsbWVudDppLFR5cGVSZWdpc3RyeTpvLFByZWltYWdlU2hhMjU2OmEsUnNhU2hhMjU2OnUsUHJlZml4U2hhMjU2OmYsVGhyZXNob2xkU2hhMjU2OnMsRWQyNTUxOTpoLHZhbGlkYXRlQ29uZGl0aW9uOmwsdmFsaWRhdGVGdWxmaWxsbWVudDpwLGZ1bGZpbGxtZW50VG9Db25kaXRpb246YixiYXNlNjR1cmw6Yyxmcm9tQ29uZGl0aW9uVXJpOm4uZnJvbVVyaS5iaW5kKG4pLGZyb21Db25kaXRpb25CaW5hcnk6bi5mcm9tQmluYXJ5LmJpbmQobiksZnJvbUZ1bGZpbGxtZW50VXJpOmkuZnJvbVVyaS5iaW5kKGkpLGZyb21GdWxmaWxsbWVudEJpbmFyeTppLmZyb21CaW5hcnkuYmluZChpKX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLHIpe3RbZV18fE9iamVjdFtuXSh0LGUse3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx2YWx1ZTpyfSl9aWYocig0NjEpLHIoMjY4KSxyKDI2OSksdC5fYmFiZWxQb2x5ZmlsbCl0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IG9uZSBpbnN0YW5jZSBvZiBiYWJlbC1wb2x5ZmlsbCBpcyBhbGxvd2VkXCIpO3QuX2JhYmVsUG9seWZpbGw9ITA7dmFyIG49XCJkZWZpbmVQcm9wZXJ0eVwiO2UoU3RyaW5nLnByb3RvdHlwZSxcInBhZExlZnRcIixcIlwiLnBhZFN0YXJ0KSxlKFN0cmluZy5wcm90b3R5cGUsXCJwYWRSaWdodFwiLFwiXCIucGFkRW5kKSxcInBvcCxyZXZlcnNlLHNoaWZ0LGtleXMsdmFsdWVzLGVudHJpZXMsaW5kZXhPZixldmVyeSxzb21lLGZvckVhY2gsbWFwLGZpbHRlcixmaW5kLGZpbmRJbmRleCxpbmNsdWRlcyxqb2luLHNsaWNlLGNvbmNhdCxwdXNoLHNwbGljZSx1bnNoaWZ0LHNvcnQsbGFzdEluZGV4T2YscmVkdWNlLHJlZHVjZVJpZ2h0LGNvcHlXaXRoaW4sZmlsbFwiLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1tdW3RdJiZlKEFycmF5LHQsRnVuY3Rpb24uY2FsbC5iaW5kKFtdW3RdKSl9KX0pLmNhbGwoZSxyKDM5KSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDExMSksaT1yKDExMiksbz1yKDI1NSksYT1yKDI1Nik7dC5leHBvcnRzPXtSZWFkZXI6byxXcml0ZXI6YX07Zm9yKHZhciBmIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShmKSYmKHQuZXhwb3J0c1tmXT1pW2ZdKTtmb3IodmFyIHMgaW4gbiluLmhhc093blByb3BlcnR5KHMpJiYodC5leHBvcnRzW3NdPW5bc10pfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7aWYoIXR8fCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJkYXRhIG11c3QgYmUgYSBub2RlIEJ1ZmZlclwiKTt0aGlzLl9idWY9dCx0aGlzLl9zaXplPXQubGVuZ3RoLHRoaXMuX2xlbj0wLHRoaXMuX29mZnNldD0wfXZhciBpPXIoMjAyKSxvPXIoMTEyKSxhPXIoMTExKSxmPWEubmV3SW52YWxpZEFzbjFFcnJvcjtPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXCJsZW5ndGhcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSxcIm9mZnNldFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vZmZzZXR9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLFwicmVtYWluXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zaXplLXRoaXMuX29mZnNldH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXCJidWZmZXJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2J1Zi5zbGljZSh0aGlzLl9vZmZzZXQpfX0pLG4ucHJvdG90eXBlLnJlYWRCeXRlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3NpemUtdGhpcy5fb2Zmc2V0PDEpcmV0dXJuIG51bGw7dmFyIGU9MjU1JnRoaXMuX2J1Zlt0aGlzLl9vZmZzZXRdO3JldHVybiB0fHwodGhpcy5fb2Zmc2V0Kz0xKSxlfSxuLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhZEJ5dGUoITApfSxuLnByb3RvdHlwZS5yZWFkTGVuZ3RoPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQmJih0PXRoaXMuX29mZnNldCksdD49dGhpcy5fc2l6ZSlyZXR1cm4gbnVsbDt2YXIgZT0yNTUmdGhpcy5fYnVmW3QrK107aWYobnVsbD09PWUpcmV0dXJuIG51bGw7aWYoMTI4PT0oMTI4JmUpKXtpZihlJj0xMjcsMD09ZSl0aHJvdyBmKFwiSW5kZWZpbml0ZSBsZW5ndGggbm90IHN1cHBvcnRlZFwiKTtpZihlPjQpdGhyb3cgZihcImVuY29kaW5nIHRvbyBsb25nXCIpO2lmKHRoaXMuX3NpemUtdDxlKXJldHVybiBudWxsO3RoaXMuX2xlbj0wO2Zvcih2YXIgcj0wO3I8ZTtyKyspdGhpcy5fbGVuPSh0aGlzLl9sZW48PDgpKygyNTUmdGhpcy5fYnVmW3QrK10pfWVsc2UgdGhpcy5fbGVuPWU7cmV0dXJuIHR9LG4ucHJvdG90eXBlLnJlYWRTZXF1ZW5jZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBlZWsoKTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtpZih2b2lkIDAhPT10JiZ0IT09ZSl0aHJvdyBmKFwiRXhwZWN0ZWQgMHhcIit0LnRvU3RyaW5nKDE2KStcIjogZ290IDB4XCIrZS50b1N0cmluZygxNikpO3ZhciByPXRoaXMucmVhZExlbmd0aCh0aGlzLl9vZmZzZXQrMSk7cmV0dXJuIG51bGw9PT1yP251bGw6KHRoaXMuX29mZnNldD1yLGUpfSxuLnByb3RvdHlwZS5yZWFkSW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRUYWcoby5JbnRlZ2VyKX0sbi5wcm90b3R5cGUucmVhZEJvb2xlYW49ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMuX3JlYWRUYWcoby5Cb29sZWFuKX0sbi5wcm90b3R5cGUucmVhZEVudW1lcmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRUYWcoby5FbnVtZXJhdGlvbil9LG4ucHJvdG90eXBlLnJlYWRTdHJpbmc9ZnVuY3Rpb24odCxyKXt0fHwodD1vLk9jdGV0U3RyaW5nKTt2YXIgbj10aGlzLnBlZWsoKTtpZihudWxsPT09bilyZXR1cm4gbnVsbDtpZihuIT09dCl0aHJvdyBmKFwiRXhwZWN0ZWQgMHhcIit0LnRvU3RyaW5nKDE2KStcIjogZ290IDB4XCIrbi50b1N0cmluZygxNikpO3ZhciBpPXRoaXMucmVhZExlbmd0aCh0aGlzLl9vZmZzZXQrMSk7aWYobnVsbD09PWkpcmV0dXJuIG51bGw7aWYodGhpcy5sZW5ndGg+dGhpcy5fc2l6ZS1pKXJldHVybiBudWxsO2lmKHRoaXMuX29mZnNldD1pLDA9PT10aGlzLmxlbmd0aClyZXR1cm4gcj9uZXcgZSgwKTpcIlwiO3ZhciBhPXRoaXMuX2J1Zi5zbGljZSh0aGlzLl9vZmZzZXQsdGhpcy5fb2Zmc2V0K3RoaXMubGVuZ3RoKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz10aGlzLmxlbmd0aCxyP2E6YS50b1N0cmluZyhcInV0ZjhcIil9LG4ucHJvdG90eXBlLnJlYWRPSUQ9ZnVuY3Rpb24odCl7dHx8KHQ9by5PSUQpO3ZhciBlPXRoaXMucmVhZFN0cmluZyh0LCEwKTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtmb3IodmFyIHI9W10sbj0wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGE9MjU1JmVbaV07bjw8PTcsbis9MTI3JmEsMD09KDEyOCZhKSYmKHIucHVzaChuKSxuPTApfXJldHVybiBuPXIuc2hpZnQoKSxyLnVuc2hpZnQobiU0MCksci51bnNoaWZ0KG4vNDA+PjApLHIuam9pbihcIi5cIil9LG4ucHJvdG90eXBlLl9yZWFkVGFnPWZ1bmN0aW9uKHQpe2kub2sodm9pZCAwIT09dCk7dmFyIGU9dGhpcy5wZWVrKCk7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7aWYoZSE9PXQpdGhyb3cgZihcIkV4cGVjdGVkIDB4XCIrdC50b1N0cmluZygxNikrXCI6IGdvdCAweFwiK2UudG9TdHJpbmcoMTYpKTt2YXIgcj10aGlzLnJlYWRMZW5ndGgodGhpcy5fb2Zmc2V0KzEpO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHRoaXMubGVuZ3RoPjQpdGhyb3cgZihcIkludGVnZXIgdG9vIGxvbmc6IFwiK3RoaXMubGVuZ3RoKTtpZih0aGlzLmxlbmd0aD50aGlzLl9zaXplLXIpcmV0dXJuIG51bGw7dGhpcy5fb2Zmc2V0PXI7Zm9yKHZhciBuPXRoaXMuX2J1Zlt0aGlzLl9vZmZzZXRdLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspbzw8PTgsb3w9MjU1JnRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK107cmV0dXJuIDEyOD09KDEyOCZuKSYmNCE9PWEmJihvLT0xPDw4KmEpLG8+PjB9LHQuZXhwb3J0cz1ufSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsZSl7by5vayh0KSxvLmVxdWFsKHR5cGVvZiB0LFwib2JqZWN0XCIpLG8ub2soZSksby5lcXVhbCh0eXBlb2YgZSxcIm9iamVjdFwiKTt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKHIpe2lmKCFlW3JdKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixuKX19KSxlfWZ1bmN0aW9uIGkodCl7dD1uKHMsdHx8e30pLHRoaXMuX2J1Zj1uZXcgZSh0LnNpemV8fDEwMjQpLHRoaXMuX3NpemU9dGhpcy5fYnVmLmxlbmd0aCx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9vcHRpb25zPXQsdGhpcy5fc2VxPVtdfXZhciBvPXIoMjAyKSxhPXIoMTEyKSxmPXIoMTExKSxzPShmLm5ld0ludmFsaWRBc24xRXJyb3Ise3NpemU6MTAyNCxncm93dGhGYWN0b3I6OH0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9zZXEubGVuZ3RoKXRocm93IG5ldyBJbnZhbGlkQXNuMUVycm9yKHRoaXMuX3NlcS5sZW5ndGgrXCIgdW5lbmRlZCBzZXF1ZW5jZShzKVwiKTtyZXR1cm4gdGhpcy5fYnVmLnNsaWNlKDAsdGhpcy5fb2Zmc2V0KX19KSxpLnByb3RvdHlwZS53cml0ZUJ5dGU9ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImFyZ3VtZW50IG11c3QgYmUgYSBOdW1iZXJcIik7dGhpcy5fZW5zdXJlKDEpLHRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK109dH0saS5wcm90b3R5cGUud3JpdGVJbnQ9ZnVuY3Rpb24odCxlKXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgbXVzdCBiZSBhIE51bWJlclwiKTtcIm51bWJlclwiIT10eXBlb2YgZSYmKGU9YS5JbnRlZ2VyKTtmb3IodmFyIHI9NDsoMD09PSg0Mjg2NTc4Njg4JnQpfHwoNDI4NjU3ODY4OCZ0KT09PS04Mzg4NjA4KSYmcj4xOylyLS0sdDw8PTg7aWYocj40KXRocm93IG5ldyBJbnZhbGlkQXNuMUVycm9yKFwiQkVSIGludHMgY2Fubm90IGJlID4gMHhmZmZmZmZmZlwiKTtmb3IodGhpcy5fZW5zdXJlKDIrciksdGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT1lLHRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK109cjtyLS0gPjA7KXRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK109KDQyNzgxOTAwODAmdCk+Pj4yNCx0PDw9OH0saS5wcm90b3R5cGUud3JpdGVOdWxsPWZ1bmN0aW9uKCl7dGhpcy53cml0ZUJ5dGUoYS5OdWxsKSx0aGlzLndyaXRlQnl0ZSgwKX0saS5wcm90b3R5cGUud3JpdGVFbnVtZXJhdGlvbj1mdW5jdGlvbih0LGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGEgTnVtYmVyXCIpO3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiBlJiYoZT1hLkVudW1lcmF0aW9uKSx0aGlzLndyaXRlSW50KHQsZSl9LGkucHJvdG90eXBlLndyaXRlQm9vbGVhbj1mdW5jdGlvbih0LGUpe2lmKFwiYm9vbGVhblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgbXVzdCBiZSBhIEJvb2xlYW5cIik7XCJudW1iZXJcIiE9dHlwZW9mIGUmJihlPWEuQm9vbGVhbiksdGhpcy5fZW5zdXJlKDMpLHRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK109ZSx0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPTEsdGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT10PzI1NTowfSxpLnByb3RvdHlwZS53cml0ZVN0cmluZz1mdW5jdGlvbih0LHIpe2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nICh3YXM6IFwiK3R5cGVvZiB0K1wiKVwiKTtcIm51bWJlclwiIT10eXBlb2YgciYmKHI9YS5PY3RldFN0cmluZyk7dmFyIG49ZS5ieXRlTGVuZ3RoKHQpO3RoaXMud3JpdGVCeXRlKHIpLHRoaXMud3JpdGVMZW5ndGgobiksbiYmKHRoaXMuX2Vuc3VyZShuKSx0aGlzLl9idWYud3JpdGUodCx0aGlzLl9vZmZzZXQpLHRoaXMuX29mZnNldCs9bil9LGkucHJvdG90eXBlLndyaXRlQnVmZmVyPWZ1bmN0aW9uKHQscil7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcihcInRhZyBtdXN0IGJlIGEgbnVtYmVyXCIpO2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGEgYnVmZmVyXCIpO3RoaXMud3JpdGVCeXRlKHIpLHRoaXMud3JpdGVMZW5ndGgodC5sZW5ndGgpLHRoaXMuX2Vuc3VyZSh0Lmxlbmd0aCksdC5jb3B5KHRoaXMuX2J1Zix0aGlzLl9vZmZzZXQsMCx0Lmxlbmd0aCksdGhpcy5fb2Zmc2V0Kz10Lmxlbmd0aH0saS5wcm90b3R5cGUud3JpdGVTdHJpbmdBcnJheT1mdW5jdGlvbih0KXtpZighdCBpbnN0YW5jZW9mIEFycmF5KXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5W1N0cmluZ11cIik7dmFyIGU9dGhpczt0LmZvckVhY2goZnVuY3Rpb24odCl7ZS53cml0ZVN0cmluZyh0KX0pfSxpLnByb3RvdHlwZS53cml0ZU9JRD1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIodCxlKXtlPDEyOD90LnB1c2goZSk6ZTwxNjM4ND8odC5wdXNoKGU+Pj43fDEyOCksdC5wdXNoKDEyNyZlKSk6ZTwyMDk3MTUyPyh0LnB1c2goZT4+PjE0fDEyOCksdC5wdXNoKDI1NSYoZT4+Pjd8MTI4KSksdC5wdXNoKDEyNyZlKSk6ZTwyNjg0MzU0NTY/KHQucHVzaChlPj4+MjF8MTI4KSx0LnB1c2goMjU1JihlPj4+MTR8MTI4KSksdC5wdXNoKDI1NSYoZT4+Pjd8MTI4KSksdC5wdXNoKDEyNyZlKSk6KHQucHVzaCgyNTUmKGU+Pj4yOHwxMjgpKSx0LnB1c2goMjU1JihlPj4+MjF8MTI4KSksdC5wdXNoKDI1NSYoZT4+PjE0fDEyOCkpLHQucHVzaCgyNTUmKGU+Pj43fDEyOCkpLHQucHVzaCgxMjcmZSkpfWlmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nXCIpO2lmKFwibnVtYmVyXCIhPXR5cGVvZiBlJiYoZT1hLk9JRCksIS9eKFswLTldK1xcLil7Myx9WzAtOV0rJC8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoXCJhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBPSUQgc3RyaW5nXCIpO3ZhciBuPXQuc3BsaXQoXCIuXCIpLGk9W107aS5wdXNoKDQwKnBhcnNlSW50KG5bMF0sMTApK3BhcnNlSW50KG5bMV0sMTApKSxuLnNsaWNlKDIpLmZvckVhY2goZnVuY3Rpb24odCl7cihpLHBhcnNlSW50KHQsMTApKX0pO3ZhciBvPXRoaXM7dGhpcy5fZW5zdXJlKDIraS5sZW5ndGgpLHRoaXMud3JpdGVCeXRlKGUpLHRoaXMud3JpdGVMZW5ndGgoaS5sZW5ndGgpLGkuZm9yRWFjaChmdW5jdGlvbih0KXtvLndyaXRlQnl0ZSh0KX0pfSxpLnByb3RvdHlwZS53cml0ZUxlbmd0aD1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXJndW1lbnQgbXVzdCBiZSBhIE51bWJlclwiKTtpZih0aGlzLl9lbnN1cmUoNCksdDw9MTI3KXRoaXMuX2J1Zlt0aGlzLl9vZmZzZXQrK109dDtlbHNlIGlmKHQ8PTI1NSl0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPTEyOSx0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPXQ7ZWxzZSBpZih0PD02NTUzNSl0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPTEzMCx0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPXQ+PjgsdGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT10O2Vsc2V7aWYoISh0PD0xNjc3NzIxNSkpdGhyb3cgbmV3IEludmFsaWRBc24xRVJyb3IoXCJMZW5ndGggdG9vIGxvbmcgKD4gNCBieXRlcylcIik7dGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT0xMzEsdGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT10Pj4xNix0aGlzLl9idWZbdGhpcy5fb2Zmc2V0KytdPXQ+PjgsdGhpcy5fYnVmW3RoaXMuX29mZnNldCsrXT10fX0saS5wcm90b3R5cGUuc3RhcnRTZXF1ZW5jZT1mdW5jdGlvbih0KXtcIm51bWJlclwiIT10eXBlb2YgdCYmKHQ9YS5TZXF1ZW5jZXxhLkNvbnN0cnVjdG9yKSx0aGlzLndyaXRlQnl0ZSh0KSx0aGlzLl9zZXEucHVzaCh0aGlzLl9vZmZzZXQpLHRoaXMuX2Vuc3VyZSgzKSx0aGlzLl9vZmZzZXQrPTN9LGkucHJvdG90eXBlLmVuZFNlcXVlbmNlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc2VxLnBvcCgpLGU9dCszLHI9dGhpcy5fb2Zmc2V0LWU7aWYocjw9MTI3KXRoaXMuX3NoaWZ0KGUsciwtMiksdGhpcy5fYnVmW3RdPXI7ZWxzZSBpZihyPD0yNTUpdGhpcy5fc2hpZnQoZSxyLC0xKSx0aGlzLl9idWZbdF09MTI5LHRoaXMuX2J1Zlt0KzFdPXI7ZWxzZSBpZihyPD02NTUzNSl0aGlzLl9idWZbdF09MTMwLHRoaXMuX2J1Zlt0KzFdPXI+PjgsdGhpcy5fYnVmW3QrMl09cjtlbHNle2lmKCEocjw9MTY3NzcyMTUpKXRocm93IG5ldyBJbnZhbGlkQXNuMUVycm9yKFwiU2VxdWVuY2UgdG9vIGxvbmdcIik7dGhpcy5fc2hpZnQoZSxyLDEpLHRoaXMuX2J1Zlt0XT0xMzEsdGhpcy5fYnVmW3QrMV09cj4+MTYsdGhpcy5fYnVmW3QrMl09cj4+OCx0aGlzLl9idWZbdCszXT1yfX0saS5wcm90b3R5cGUuX3NoaWZ0PWZ1bmN0aW9uKHQsZSxyKXtvLm9rKHZvaWQgMCE9PXQpLG8ub2sodm9pZCAwIT09ZSksby5vayhyKSx0aGlzLl9idWYuY29weSh0aGlzLl9idWYsdCtyLHQsdCtlKSx0aGlzLl9vZmZzZXQrPXJ9LGkucHJvdG90eXBlLl9lbnN1cmU9ZnVuY3Rpb24odCl7aWYoby5vayh0KSx0aGlzLl9zaXplLXRoaXMuX29mZnNldDx0KXt2YXIgcj10aGlzLl9zaXplKnRoaXMuX29wdGlvbnMuZ3Jvd3RoRmFjdG9yO3ItdGhpcy5fb2Zmc2V0PHQmJihyKz10KTt2YXIgbj1uZXcgZShyKTt0aGlzLl9idWYuY29weShuLDAsMCx0aGlzLl9vZmZzZXQpLHRoaXMuX2J1Zj1uLHRoaXMuX3NpemU9cn19LHQuZXhwb3J0cz1pfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjU0KTt0LmV4cG9ydHM9e0JlcjpuLEJlclJlYWRlcjpuLlJlYWRlcixCZXJXcml0ZXI6bi5Xcml0ZXJ9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksbz1yKDkzKSxhPXIoMTE0KSxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlKXtuKHRoaXMsdCksZT1lfHx7fSx0aGlzLmhhc2hBbGdvcml0aG09ZS5oYXNoQWxnb3JpdGhtfHxcInNoYTI1NlwiLHRoaXMuaGFzaExlbmd0aD1hLmdldExlbmd0aCh0aGlzLmhhc2hBbGdvcml0aG0pLHRoaXMuc2FsdExlbmd0aD10aGlzLmhhc2hMZW5ndGh9cmV0dXJuIGkodCxbe2tleTpcImdlbmVyYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIG49bmV3IGUociksaT1NYXRoLmNlaWwoci90aGlzLmhhc2hMZW5ndGgpLGE9MDthPGk7YSsrKXt2YXIgZj1uZXcgZSg0KTtmLndyaXRlSW50MzJCRShhLDApO3ZhciBzPW8uY3JlYXRlSGFzaCh0aGlzLmhhc2hBbGdvcml0aG0pLnVwZGF0ZSh0KS51cGRhdGUoZikuZGlnZXN0KCk7cy5jb3B5KG4sYSp0aGlzLmhhc2hMZW5ndGgpfXJldHVybiBufX1dKSx0fSgpO3QuZXhwb3J0cz1mfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX12YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHImJnQoZS5wcm90b3R5cGUsciksbiYmdChlLG4pLGV9fSgpLG89cig5MyksYT1yKDI1OCksZj1yKDI2Nykscz1yKDExNCksdT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7bih0aGlzLHQpLGU9ZXx8e30sdGhpcy5oYXNoQWxnb3JpdGhtPWUuaGFzaEFsZ29yaXRobXx8XCJzaGEyNTZcIix0aGlzLmhhc2hMZW5ndGg9cy5nZXRMZW5ndGgodGhpcy5oYXNoQWxnb3JpdGhtKSx0aGlzLnNhbHRMZW5ndGg9dGhpcy5oYXNoTGVuZ3RofXJldHVybiBpKHQsW3trZXk6XCJlbmNvZGVcIix2YWx1ZTpmdW5jdGlvbih0LHIpe3ZhciBuPU1hdGguY2VpbChyLzgpLGk9by5jcmVhdGVIYXNoKHRoaXMuaGFzaEFsZ29yaXRobSkudXBkYXRlKHQpLmRpZ2VzdCgpO2lmKG48dGhpcy5oYXNoTGVuZ3RoK3RoaXMuc2FsdExlbmd0aCsyKXRocm93IG5ldyBFcnJvcihcIkVuY29kaW5nIGVycm9yOiBSU0EgbW9kdWx1cyBpcyB0b28gc21hbGwgZm9yIFwiK3RoaXMuaGFzaEFsZ29yaXRobSk7dmFyIHM9by5yYW5kb21CeXRlcyh0aGlzLnNhbHRMZW5ndGgpLHU9by5jcmVhdGVIYXNoKHRoaXMuaGFzaEFsZ29yaXRobSkudXBkYXRlKG5ldyBlKDgpLmZpbGwoMCkpLnVwZGF0ZShpKS51cGRhdGUocykuZGlnZXN0KCksaD1lLmNvbmNhdChbbmV3IGUobi10aGlzLnNhbHRMZW5ndGgtdGhpcy5oYXNoTGVuZ3RoLTIpLmZpbGwoMCksbmV3IGUoWzFdKSxzXSksYz1uZXcgYSh7aGFzaEFsZ29yaXRobTp0aGlzLmhhc2hBbGdvcml0aG19KSxkPWMuZ2VuZXJhdGUodSxuLXRoaXMuaGFzaExlbmd0aC0xKSxsPWYoaCxkKTtyZXR1cm4gbFswXSY9MjU1Pj4+OCpuLXIsZS5jb25jYXQoW2wsdSxuZXcgZShbMTg4XSldKX19LHtrZXk6XCJ2ZXJpZnlcIix2YWx1ZTpmdW5jdGlvbih0LHIsbil7dmFyIGk9TWF0aC5jZWlsKG4vOCkscz1vLmNyZWF0ZUhhc2godGhpcy5oYXNoQWxnb3JpdGhtKS51cGRhdGUodCkuZGlnZXN0KCk7aWYoaTx0aGlzLmhhc2hMZW5ndGgrdGhpcy5zYWx0TGVuZ3RoKzIpcmV0dXJuITE7aWYoMTg4IT09cltyLmxlbmd0aC0xXSlyZXR1cm4hMTt2YXIgdT1pLXRoaXMuaGFzaExlbmd0aC0xLGg9ci5zbGljZSgwLHUpLGM9ci5zbGljZSh1LHUrdGhpcy5oYXNoTGVuZ3RoKSxkPTI1NT4+PjgqaS1uO2lmKGhbMF0mfmQpcmV0dXJuITE7dmFyIGw9bmV3IGEoe2hhc2hBbGdvcml0aG06dGhpcy5oYXNoQWxnb3JpdGhtfSkscD1sLmdlbmVyYXRlKGMsaS10aGlzLmhhc2hMZW5ndGgtMSksYj1mKGgscCk7YlswXSY9ZDtmb3IodmFyIHY9aS10aGlzLmhhc2hMZW5ndGgtdGhpcy5zYWx0TGVuZ3RoLTIseT0wO3k8djt5KyspaWYoMCE9PWJbeV0pcmV0dXJuITE7aWYoMSE9PWJbdl0pcmV0dXJuITE7dmFyIG09Yi5zbGljZShiLmxlbmd0aC10aGlzLnNhbHRMZW5ndGgpLGc9by5jcmVhdGVIYXNoKHRoaXMuaGFzaEFsZ29yaXRobSkudXBkYXRlKG5ldyBlKDgpLmZpbGwoMCkpLnVwZGF0ZShzKS51cGRhdGUobSkuZGlnZXN0KCk7cmV0dXJuIDA9PT1lLmNvbXBhcmUoYyxnKX19XSksdH0oKTt1LkVNUFRZX0JVRkZFUj1uZXcgZSgwKSx0LmV4cG9ydHM9dX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxvPXIoOTMpLGE9cig0NjQpLGY9cigyNTkpLHM9cigxNjEpLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe24odGhpcyx0KSxlPWV8fHt9LHRoaXMuaGFzaEFsZ29yaXRobT1lLmhhc2hBbGdvcml0aG18fFwic2hhMjU2XCIsdGhpcy5wc3M9bmV3IGYoe2hhc2hBbGdvcml0aG06dGhpcy5oYXNoQWxnb3JpdGhtfSl9cmV0dXJuIGkodCxbe2tleTpcInNpZ25cIix2YWx1ZTpmdW5jdGlvbihyLG4pe3ZhciBpPXMubW9kdWx1c0Zyb21Qcml2YXRlS2V5KHIpLGY9aVswXS50b1N0cmluZygyKS5sZW5ndGgsdT04KihpLmxlbmd0aC0xKStmLGg9dGhpcy5wc3MuZW5jb2RlKG4sdS0xKSxjPWgubGVuZ3RoPGkubGVuZ3RoP2UuY29uY2F0KFt0LlpFUk9fQllURSxoXSk6aDtyZXR1cm4gby5wcml2YXRlRW5jcnlwdCh7a2V5OnIscGFkZGluZzphLlJTQV9OT19QQURESU5HfSxjKX19LHtrZXk6XCJ2ZXJpZnlcIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG49cy5tb2R1bHVzVG9QZW0odCksaT1vLnB1YmxpY0RlY3J5cHQoe2tleTpuLHBhZGRpbmc6YS5SU0FfTk9fUEFERElOR30sciksZj10WzBdLnRvU3RyaW5nKDIpLmxlbmd0aCx1PTgqKHQubGVuZ3RoLTEpK2YsaD11JTg9PT0xP2kuc2xpY2UoMSk6aTtyZXR1cm4gdGhpcy5wc3MudmVyaWZ5KGUsaCx1LTEpfX1dKSx0fSgpO3UuWkVST19CWVRFPW5ldyBlKFswXSksdC5leHBvcnRzPXV9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaSh0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfWZ1bmN0aW9uIG8odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX12YXIgYT1yKDYyKSxmPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbih0aGlzLGUpLGkodGhpcywoZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gbyhlLHQpLGV9KGEpO3QuZXhwb3J0cz1mfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxmPXIoNDg4KSxzPXIoNjMpLHU9cig1MyksaD1yKDE2MCksYz12b2lkIDA7dHJ5e2M9cig0NjIpfWNhdGNoKHQpe312YXIgZD1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7bih0aGlzLHIpO3ZhciB0PWkodGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzKSk7cmV0dXJuIHQucHVibGljS2V5PW51bGwsdC5zaWduYXR1cmU9bnVsbCx0fXJldHVybiBvKHIsdCksYShyLFt7a2V5Olwic2V0UHVibGljS2V5XCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIWUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlB1YmxpYyBrZXkgbXVzdCBiZSBhIEJ1ZmZlciwgd2FzOiBcIit0KTtpZigzMiE9PXQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIlB1YmxpYyBrZXkgbXVzdCBiZSAzMiBieXRlcywgd2FzOiBcIit0Lmxlbmd0aCk7dGhpcy5wdWJsaWNLZXk9dH19LHtrZXk6XCJzZXRTaWduYXR1cmVcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2lnbmF0dXJlIG11c3QgYmUgYSBCdWZmZXIsIHdhczogXCIrdCk7aWYoNjQhPT10Lmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJTaWduYXR1cmUgbXVzdCBiZSA2NCBieXRlcywgd2FzOiBcIit0Lmxlbmd0aCk7dGhpcy5zaWduYXR1cmU9dH19LHtrZXk6XCJzaWduXCIsdmFsdWU6ZnVuY3Rpb24odCxyKXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgdShcIk1lc3NhZ2UgbXVzdCBiZSBhIEJ1ZmZlclwiKTtpZighZS5pc0J1ZmZlcihyKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBrZXkgbXVzdCBiZSBhIEJ1ZmZlciwgd2FzOiBcIityKTtpZigzMiE9PXIubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIlByaXZhdGUga2V5IG11c3QgYmUgMzIgYnl0ZXMsIHdhczogXCIrci5sZW5ndGgpO2lmKGMpe3ZhciBuPWMuTWFrZUtleXBhaXIocik7dGhpcy5zZXRQdWJsaWNLZXkobi5wdWJsaWNLZXkpLHRoaXMuc2lnbmF0dXJlPWMuU2lnbih0LG4pfWVsc2V7dmFyIGk9Zi5zaWduLmtleVBhaXIuZnJvbVNlZWQocik7dGhpcy5zZXRQdWJsaWNLZXkobmV3IGUoaS5wdWJsaWNLZXkpKSx0aGlzLnNpZ25hdHVyZT1uZXcgZShmLnNpZ24uZGV0YWNoZWQodCxpLnNlY3JldEtleSkpfX19LHtrZXk6XCJnZW5lcmF0ZUhhc2hcIix2YWx1ZTpmdW5jdGlvbigpe2lmKCF0aGlzLnB1YmxpY0tleSl0aHJvdyBuZXcgdShcIlJlcXVpcmVzIGEgcHVibGljIGtleVwiKTtyZXR1cm4gdGhpcy5wdWJsaWNLZXl9fSx7a2V5OlwicGFyc2VQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXRQdWJsaWNLZXkodC5yZWFkT2N0ZXRTdHJpbmcoci5QVUJLRVlfTEVOR1RIKSksdGhpcy5zZXRTaWduYXR1cmUodC5yZWFkT2N0ZXRTdHJpbmcoci5TSUdOQVRVUkVfTEVOR1RIKSl9fSx7a2V5Olwid3JpdGVQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dC53cml0ZU9jdGV0U3RyaW5nKHRoaXMucHVibGljS2V5LHIuUFVCS0VZX0xFTkdUSCksdC53cml0ZU9jdGV0U3RyaW5nKHRoaXMuc2lnbmF0dXJlLHIuU0lHTkFUVVJFX0xFTkdUSCl9fSx7a2V5OlwiY2FsY3VsYXRlTWF4RnVsZmlsbG1lbnRMZW5ndGhcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiByLkZVTEZJTExNRU5UX0xFTkdUSH19LHtrZXk6XCJ2YWxpZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJNZXNzYWdlIG11c3QgYmUgYSBCdWZmZXJcIik7dmFyIHI9dm9pZCAwO2lmKHI9Yz9jLlZlcmlmeSh0LHRoaXMuc2lnbmF0dXJlLHRoaXMucHVibGljS2V5KTpmLnNpZ24uZGV0YWNoZWQudmVyaWZ5KHQsdGhpcy5zaWduYXR1cmUsdGhpcy5wdWJsaWNLZXkpLHIhPT0hMCl0aHJvdyBuZXcgaChcIkludmFsaWQgZWQyNTUxOSBzaWduYXR1cmVcIik7cmV0dXJuITB9fV0pLHJ9KHMpO2QuVFlQRV9JRD00LGQuRkVBVFVSRV9CSVRNQVNLPTMyLGQuUFVCS0VZX0xFTkdUSD0zMixkLlNJR05BVFVSRV9MRU5HVEg9NjQsZC5GVUxGSUxMTUVOVF9MRU5HVEg9ZC5QVUJLRVlfTEVOR1RIK2QuU0lHTkFUVVJFX0xFTkdUSCx0LmV4cG9ydHM9ZH0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9ZnVuY3Rpb24gaSh0LGUpe2lmKCF0KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4hZXx8XCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/dDplfWZ1bmN0aW9uIG8odCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX12YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHImJnQoZS5wcm90b3R5cGUsciksbiYmdChlLG4pLGV9fSgpLGY9ZnVuY3Rpb24gdChlLHIsbil7bnVsbD09PWUmJihlPUZ1bmN0aW9uLnByb3RvdHlwZSk7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO2lmKHZvaWQgMD09PWkpe3ZhciBvPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PW8/dm9pZCAwOnQobyxyLG4pfWlmKFwidmFsdWVcImluIGkpcmV0dXJuIGkudmFsdWU7dmFyIGE9aS5nZXQ7aWYodm9pZCAwIT09YSlyZXR1cm4gYS5jYWxsKG4pfSxzPXIoNzUpLHU9cig2MyksaD1yKDc2KSxjPXIoOTApLGQ9cig1MyksbD1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7bih0aGlzLHIpO3ZhciB0PWkodGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzKSk7cmV0dXJuIHQuc3ViY29uZGl0aW9uPW51bGwsdH1yZXR1cm4gbyhyLHQpLGEocixbe2tleTpcInNldFN1YmNvbmRpdGlvblwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXQ9cy5mcm9tVXJpKHQpO2Vsc2UgaWYoISh0IGluc3RhbmNlb2YgcykpdGhyb3cgbmV3IEVycm9yKFwiU3ViY29uZGl0aW9ucyBtdXN0IGJlIFVSSXMgb3Igb2JqZWN0cyBvZiB0eXBlIENvbmRpdGlvblwiKTt0aGlzLnN1YmNvbmRpdGlvbj10fX0se2tleTpcInNldFN1YmZ1bGZpbGxtZW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdD11LmZyb21VcmkodCk7ZWxzZSBpZighKHQgaW5zdGFuY2VvZiB1KSl0aHJvdyBuZXcgRXJyb3IoXCJTdWJmdWxmaWxsbWVudHMgbXVzdCBiZSBvYmplY3RzIG9mIHR5cGUgRnVsZmlsbG1lbnRcIik7dGhpcy5zdWJjb25kaXRpb249dH19LHtrZXk6XCJzZXRQcmVmaXhcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJlZml4IG11c3QgYmUgYSBCdWZmZXIsIHdhczogXCIrdCk7dGhpcy5wcmVmaXg9dH19LHtrZXk6XCJnZXRCaXRtYXNrXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZihyLnByb3RvdHlwZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyLnByb3RvdHlwZSksXCJnZXRCaXRtYXNrXCIsdGhpcykuY2FsbCh0aGlzKXx0aGlzLnN1YmNvbmRpdGlvbi5nZXRCaXRtYXNrKCl9fSx7a2V5Olwid3JpdGVIYXNoUGF5bG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLnN1YmNvbmRpdGlvbil0aHJvdyBuZXcgZChcIlJlcXVpcmVzIHN1YmNvbmRpdGlvblwiKTt0LndyaXRlVmFyT2N0ZXRTdHJpbmcodGhpcy5wcmVmaXgpLHQud3JpdGUodGhpcy5zdWJjb25kaXRpb24gaW5zdGFuY2VvZiBzP3RoaXMuc3ViY29uZGl0aW9uLnNlcmlhbGl6ZUJpbmFyeSgpOnRoaXMuc3ViY29uZGl0aW9uLmdldENvbmRpdGlvbkJpbmFyeSgpKX19LHtrZXk6XCJjYWxjdWxhdGVNYXhGdWxmaWxsbWVudExlbmd0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5zdWJjb25kaXRpb24gaW5zdGFuY2VvZiBzP3RoaXMuc3ViY29uZGl0aW9uLmdldE1heEZ1bGZpbGxtZW50TGVuZ3RoKCk6dGhpcy5zdWJjb25kaXRpb24uZ2V0Q29uZGl0aW9uKCkuZ2V0TWF4RnVsZmlsbG1lbnRMZW5ndGgoKSxlPW5ldyBjO3JldHVybiBlLndyaXRlVmFyT2N0ZXRTdHJpbmcodGhpcy5wcmVmaXgpLGUuc2tpcCh0KSxlLmdldFNpemUoKX19LHtrZXk6XCJwYXJzZVBheWxvYWRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNldFByZWZpeCh0LnJlYWRWYXJPY3RldFN0cmluZygpKSx0aGlzLnNldFN1YmZ1bGZpbGxtZW50KHUuZnJvbUJpbmFyeSh0KSl9fSx7a2V5Olwid3JpdGVQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoISh0aGlzLnN1YmNvbmRpdGlvbiBpbnN0YW5jZW9mIHUpKXRocm93IG5ldyBFcnJvcihcIlN1YmNvbmRpdGlvbiBtdXN0IGJlIGZ1bGZpbGxlZFwiKTt0LndyaXRlVmFyT2N0ZXRTdHJpbmcodGhpcy5wcmVmaXgpLHQud3JpdGUodGhpcy5zdWJjb25kaXRpb24uc2VyaWFsaXplQmluYXJ5KCkpfX0se2tleTpcInZhbGlkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoISh0aGlzLnN1YmNvbmRpdGlvbiBpbnN0YW5jZW9mIHUpKXRocm93IG5ldyBFcnJvcihcIlN1YmNvbmRpdGlvbiBpcyBub3QgYSBmdWxmaWxsbWVudFwiKTtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgRXJyb3IoXCJNZXNzYWdlIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBCdWZmZXIsIHdhczogXCIrdCk7cmV0dXJuIHRoaXMuc3ViY29uZGl0aW9uLnZhbGlkYXRlKGUuY29uY2F0KFt0aGlzLnByZWZpeCx0XSkpfX1dKSxyfShoKTtsLlRZUEVfSUQ9MSxsLkZFQVRVUkVfQklUTUFTSz01LGwucHJvdG90eXBlLnNldFN1YmNvbmRpdGlvblVyaT1sLnByb3RvdHlwZS5zZXRTdWJjb25kaXRpb24sbC5wcm90b3R5cGUuc2V0U3ViZnVsZmlsbG1lbnRVcmk9bC5wcm90b3R5cGUuc2V0U3ViZnVsZmlsbG1lbnQsdC5leHBvcnRzPWx9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxmPXIoNzYpLHM9cig1MyksdT1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxpKHRoaXMsKHIuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YocikpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIG8ocix0KSxhKHIsW3trZXk6XCJ3cml0ZUhhc2hQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMucHJlaW1hZ2UpdGhyb3cgbmV3IHMoXCJDb3VsZCBub3QgY2FsY3VsYXRlIGhhc2gsIG5vIHByZWltYWdlIHByb3ZpZGVkXCIpO3Qud3JpdGUodGhpcy5wcmVpbWFnZSl9fSx7a2V5Olwic2V0UHJlaW1hZ2VcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJlaW1hZ2UgbXVzdCBiZSBhIGJ1ZmZlciwgd2FzOiBcIit0KTt0aGlzLnByZWltYWdlPXR9fSx7a2V5OlwicGFyc2VQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLnNldFByZWltYWdlKHQucmVhZChlKSl9fSx7a2V5Olwid3JpdGVQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMucHJlaW1hZ2UpdGhyb3cgbmV3IHMoXCJQcmVpbWFnZSBtdXN0IGJlIHNwZWNpZmllZFwiKTt0LndyaXRlKHRoaXMucHJlaW1hZ2UpfX0se2tleTpcInZhbGlkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuITB9fV0pLHJ9KGYpO3UuVFlQRV9JRD0wLHUuRkVBVFVSRV9CSVRNQVNLPTMsdC5leHBvcnRzPXV9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxmPXIoMjYwKSxzPXIoMTYxKSx1PXIoNzYpLGg9cig5MCksYz1yKDUzKSxkPXIoMTYwKSxsPW5ldyBmLHA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcigpe24odGhpcyxyKTt2YXIgdD1pKHRoaXMsKHIuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YocikpLmNhbGwodGhpcykpO3JldHVybiB0Lm1vZHVsdXM9bnVsbCx0LnNpZ25hdHVyZT1udWxsLHR9cmV0dXJuIG8ocix0KSxhKHIsW3trZXk6XCJ3cml0ZUNvbW1vbkhlYWRlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLm1vZHVsdXMpdGhyb3cgbmV3IGMoXCJSZXF1aXJlcyBhIHB1YmxpYyBtb2R1bHVzXCIpO3Qud3JpdGVWYXJPY3RldFN0cmluZyh0aGlzLm1vZHVsdXMpfX0se2tleTpcInNldFB1YmxpY01vZHVsdXNcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighZS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiTW9kdWx1cyBtdXN0IGJlIGEgYnVmZmVyLCB3YXM6IFwiK3QpO2lmKDA9PT10WzBdKXRocm93IG5ldyBFcnJvcihcIk1vZHVsdXMgbWF5IG5vdCBjb250YWluIGxlYWRpbmcgemVyb3NcIik7aWYodC5sZW5ndGg+NTEyfHx0Lmxlbmd0aDwxMjgpdGhyb3cgbmV3IEVycm9yKFwiTW9kdWx1cyBtdXN0IGJlIGJldHdlZW4gMTI4IGJ5dGVzICgxMDE3IGJpdHMpIGFuZCA1MTIgYnl0ZXMgKDQwOTYgYml0cyksIHdhczogXCIrdC5sZW5ndGgrXCIgYnl0ZXNcIik7dGhpcy5tb2R1bHVzPXR9fSx7a2V5Olwic2V0U2lnbmF0dXJlXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIWUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNpZ25hdHVyZSBtdXN0IGJlIGEgYnVmZmVyLCB3YXM6IFwiK3QpO3RoaXMuc2lnbmF0dXJlPXR9fSx7a2V5Olwic2lnblwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5tb2R1bHVzfHx0aGlzLnNldFB1YmxpY01vZHVsdXMocy5tb2R1bHVzRnJvbVByaXZhdGVLZXkoZSkpLHRoaXMuc2lnbmF0dXJlPWwuc2lnbihlLHQpfX0se2tleTpcIndyaXRlSGFzaFBheWxvYWRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLndyaXRlQ29tbW9uSGVhZGVyKHQpfX0se2tleTpcInBhcnNlUGF5bG9hZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuc2V0UHVibGljTW9kdWx1cyh0LnJlYWRWYXJPY3RldFN0cmluZygpKSx0aGlzLnNldFNpZ25hdHVyZSh0LnJlYWRWYXJPY3RldFN0cmluZygpKX19LHtrZXk6XCJ3cml0ZVBheWxvYWRcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5zaWduYXR1cmUpdGhyb3cgbmV3IGMoXCJSZXF1aXJlcyBhIHNpZ25hdHVyZVwiKTt0aGlzLndyaXRlQ29tbW9uSGVhZGVyKHQpLHQud3JpdGVWYXJPY3RldFN0cmluZyh0aGlzLnNpZ25hdHVyZSl9fSx7a2V5OlwiY2FsY3VsYXRlTWF4RnVsZmlsbG1lbnRMZW5ndGhcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PW5ldyBoO2lmKCF0aGlzLm1vZHVsdXMpdGhyb3cgbmV3IGMoXCJSZXF1aXJlcyBhIHB1YmxpYyBtb2R1bHVzXCIpO3JldHVybiB0aGlzLndyaXRlQ29tbW9uSGVhZGVyKHQpLHQud3JpdGVWYXJPY3RldFN0cmluZyh0aGlzLm1vZHVsdXMpLHQuZ2V0U2l6ZSgpfX0se2tleTpcInZhbGlkYXRlXCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoIWUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IEVycm9yKFwiTWVzc2FnZSBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgQnVmZmVyLCB3YXM6IFwiK3QpO3ZhciByPWwudmVyaWZ5KHRoaXMubW9kdWx1cyx0LHRoaXMuc2lnbmF0dXJlKTtpZighcil0aHJvdyBuZXcgZChcIkludmFsaWQgUlNBIHNpZ25hdHVyZVwiKTtyZXR1cm4hMH19XSkscn0odSk7cC5UWVBFX0lEPTMscC5GRUFUVVJFX0JJVE1BU0s9MTcsdC5leHBvcnRzPXB9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfX0oKSxmPWZ1bmN0aW9uIHQoZSxyLG4pe251bGw9PT1lJiYoZT1GdW5jdGlvbi5wcm90b3R5cGUpO3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtpZih2b2lkIDA9PT1pKXt2YXIgbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT1vP3ZvaWQgMDp0KG8scixuKX1pZihcInZhbHVlXCJpbiBpKXJldHVybiBpLnZhbHVlO3ZhciBhPWkuZ2V0O2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEuY2FsbChuKX0scz1yKDc1KSx1PXIoNjMpLGg9cig3NiksYz1yKDkwKSxkPXIoOTEpLGw9cig1MykscD1yKDExMyksYj1yKDE2Miksdj1uZXcgZSgwKSx5PVwiY29uZGl0aW9uXCIsbT1cImZ1bGZpbGxtZW50XCIsZz1mdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7bih0aGlzLHIpO3ZhciB0PWkodGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzKSk7cmV0dXJuIHQudGhyZXNob2xkPW51bGwsdC5zdWJjb25kaXRpb25zPVtdLHR9cmV0dXJuIG8ocix0KSxhKHIsW3trZXk6XCJhZGRTdWJjb25kaXRpb25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXQ9cy5mcm9tVXJpKHQpO2Vsc2UgaWYoISh0IGluc3RhbmNlb2YgcykpdGhyb3cgbmV3IEVycm9yKFwiU3ViY29uZGl0aW9ucyBtdXN0IGJlIFVSSXMgb3Igb2JqZWN0cyBvZiB0eXBlIENvbmRpdGlvblwiKTtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZSllPTE7ZWxzZSBpZighYihlKXx8ZTwxKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIHdlaWdodCwgbm90IGFuIGludGVnZXI6IFwiK2UpO3RoaXMuc3ViY29uZGl0aW9ucy5wdXNoKHt0eXBlOnksYm9keTp0LHdlaWdodDplfSl9fSx7a2V5OlwiYWRkU3ViZnVsZmlsbG1lbnRcIix2YWx1ZTpmdW5jdGlvbih0LGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXQ9dS5mcm9tVXJpKHQpO2Vsc2UgaWYoISh0IGluc3RhbmNlb2YgdSkpdGhyb3cgbmV3IEVycm9yKFwiU3ViZnVsZmlsbG1lbnRzIG11c3QgYmUgVVJJcyBvciBvYmplY3RzIG9mIHR5cGUgRnVsZmlsbG1lbnRcIik7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGUpZT0xO2Vsc2UgaWYoIWIoZSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB3ZWlnaHQsIG5vdCBhbiBpbnRlZ2VyOiBcIitlKTt0aGlzLnN1YmNvbmRpdGlvbnMucHVzaCh7dHlwZTptLGJvZHk6dCx3ZWlnaHQ6ZX0pfX0se2tleTpcInNldFRocmVzaG9sZFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCFiKHQpfHx0PDEpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlRocmVzaG9sZCBtdXN0IGJlIGEgaW50ZWdlciBncmVhdGVyIHRoYW4gemVybywgd2FzOiBcIit0KTt0aGlzLnRocmVzaG9sZD10fX0se2tleTpcImdldEJpdG1hc2tcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWYoci5wcm90b3R5cGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2Yoci5wcm90b3R5cGUpLFwiZ2V0Qml0bWFza1wiLHRoaXMpLmNhbGwodGhpcyksZT0hMCxuPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIG8sYT10aGlzLnN1YmNvbmRpdGlvbnNbU3ltYm9sLml0ZXJhdG9yXSgpOyEoZT0obz1hLm5leHQoKSkuZG9uZSk7ZT0hMCl7dmFyIHM9by52YWx1ZTt0fD1zLmJvZHkuZ2V0Qml0bWFzaygpfX1jYXRjaCh0KXtuPSEwLGk9dH1maW5hbGx5e3RyeXshZSYmYS5yZXR1cm4mJmEucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IGl9fXJldHVybiB0fX0se2tleTpcIndyaXRlSGFzaFBheWxvYWRcIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdGhpcy5zdWJjb25kaXRpb25zLmxlbmd0aCl0aHJvdyBuZXcgbChcIlJlcXVpcmVzIHN1YmNvbmRpdGlvbnNcIik7dmFyIGU9dGhpcy5zdWJjb25kaXRpb25zLm1hcChmdW5jdGlvbih0KXt2YXIgZT1uZXcgZDtyZXR1cm4gZS53cml0ZVZhclVJbnQodC53ZWlnaHQpLGUud3JpdGUodC50eXBlPT09bT90LmJvZHkuZ2V0Q29uZGl0aW9uQmluYXJ5KCk6dC5ib2R5LnNlcmlhbGl6ZUJpbmFyeSgpKSxlLmdldEJ1ZmZlcigpfSkscj10aGlzLmNvbnN0cnVjdG9yLnNvcnRCdWZmZXJzKGUpO3Qud3JpdGVVSW50MzIodGhpcy50aHJlc2hvbGQpLHQud3JpdGVWYXJVSW50KHIubGVuZ3RoKSxyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQud3JpdGUoZSl9KX19LHtrZXk6XCJjYWxjdWxhdGVNYXhGdWxmaWxsbWVudExlbmd0aFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPTAscj10aGlzLnN1YmNvbmRpdGlvbnMubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPXQuY29uc3RydWN0b3IucHJlZGljdFN1YmNvbmRpdGlvbkxlbmd0aChyKSxpPXQuY29uc3RydWN0b3IucHJlZGljdFN1YmZ1bGZpbGxtZW50TGVuZ3RoKHIpO3JldHVybiBlKz1uLHt3ZWlnaHQ6ci53ZWlnaHQsc2l6ZTppLW59fSkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBlLndlaWdodC10LndlaWdodH0pLG49ZSt0aGlzLmNvbnN0cnVjdG9yLmNhbGN1bGF0ZVdvcnN0Q2FzZUxlbmd0aCh0aGlzLnRocmVzaG9sZCxyKTtpZihuPT09LSgxLzApKXRocm93IG5ldyBsKFwiSW5zdWZmaWNpZW50IHN1YmNvbmRpdGlvbnMvd2VpZ2h0cyB0byBtZWV0IHRoZSB0aHJlc2hvbGRcIik7dmFyIGk9bmV3IGM7cmV0dXJuIGkud3JpdGVVSW50MzIodGhpcy50aHJlc2hvbGQpLGkud3JpdGVWYXJVSW50KHRoaXMuc3ViY29uZGl0aW9ucy5sZW5ndGgpLHRoaXMuc3ViY29uZGl0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2kud3JpdGVVSW50OCgpLDEhPT10LndlaWdodCYmaS53cml0ZVVJbnQzMih0LndlaWdodCl9KSxpLnNraXAobiksaS5nZXRTaXplKCl9fSx7a2V5OlwicGFyc2VQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5zZXRUaHJlc2hvbGQodC5yZWFkVmFyVUludCgpKTtmb3IodmFyIGU9dC5yZWFkVmFyVUludCgpLHI9MDtyPGU7cisrKXt2YXIgbj10LnJlYWRWYXJVSW50KCksaT10LnJlYWRWYXJPY3RldFN0cmluZygpLG89dC5yZWFkVmFyT2N0ZXRTdHJpbmcoKTtpZihpLmxlbmd0aCYmby5sZW5ndGgpdGhyb3cgbmV3IHAoXCJTdWJjb25kaXRpb25zIG1heSBub3QgcHJvdmlkZSBib3RoIHN1YmNvbmRpdGlvbiBhbmQgZnVsZmlsbG1lbnQuXCIpO2lmKGkubGVuZ3RoKXRoaXMuYWRkU3ViZnVsZmlsbG1lbnQodS5mcm9tQmluYXJ5KGkpLG4pO2Vsc2V7aWYoIW8ubGVuZ3RoKXRocm93IG5ldyBwKFwiU3ViY29uZGl0aW9ucyBtdXN0IHByb3ZpZGUgZWl0aGVyIHN1YmNvbmRpdGlvbiBvciBmdWxmaWxsbWVudC5cIik7dGhpcy5hZGRTdWJjb25kaXRpb24ocy5mcm9tQmluYXJ5KG8pLG4pfX19fSx7a2V5Olwid3JpdGVQYXlsb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdWJjb25kaXRpb25zLm1hcChmdW5jdGlvbih0LGUpe3JldHVybiB0LnR5cGU9PT1tP09iamVjdC5hc3NpZ24oe30sdCx7aW5kZXg6ZSxzaXplOnQuYm9keS5zZXJpYWxpemVCaW5hcnkoKS5sZW5ndGgsb21pdFNpemU6dC5ib2R5LmdldENvbmRpdGlvbkJpbmFyeSgpLmxlbmd0aH0pOm51bGx9KS5maWx0ZXIoQm9vbGVhbikscj10aGlzLmNvbnN0cnVjdG9yLmNhbGN1bGF0ZVNtYWxsZXN0VmFsaWRGdWxmaWxsbWVudFNldCh0aGlzLnRocmVzaG9sZCxlKS5zZXQsbj10aGlzLnN1YmNvbmRpdGlvbnMubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudHlwZT09PW0mJnIuaW5kZXhPZihlKT09PS0xP09iamVjdC5hc3NpZ24oe30sdCx7dHlwZTp5LGJvZHk6dC5ib2R5LmdldENvbmRpdGlvbigpfSk6dH0pLGk9bi5tYXAoZnVuY3Rpb24odCl7dmFyIGU9bmV3IGQ7cmV0dXJuIGUud3JpdGVWYXJVSW50KHQud2VpZ2h0KSxlLndyaXRlVmFyT2N0ZXRTdHJpbmcodC50eXBlPT09bT90LmJvZHkuc2VyaWFsaXplQmluYXJ5KCk6diksZS53cml0ZVZhck9jdGV0U3RyaW5nKHQudHlwZT09PXk/dC5ib2R5LnNlcmlhbGl6ZUJpbmFyeSgpOnYpLGUuZ2V0QnVmZmVyKCl9KSxvPXRoaXMuY29uc3RydWN0b3Iuc29ydEJ1ZmZlcnMoaSk7dC53cml0ZVZhclVJbnQodGhpcy50aHJlc2hvbGQpLHQud3JpdGVWYXJVSW50KG8ubGVuZ3RoKSxvLmZvckVhY2godC53cml0ZS5iaW5kKHQpKX19LHtrZXk6XCJ2YWxpZGF0ZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3ViY29uZGl0aW9ucy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PW19KSxyPTEvMCxuPWUucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHI9TWF0aC5taW4ocixlLndlaWdodCksdCtlLndlaWdodH0sMCk7aWYobjx0aGlzLnRocmVzaG9sZCl0aHJvdyBuZXcgRXJyb3IoXCJUaHJlc2hvbGQgbm90IG1ldFwiKTtpZih0aGlzLnRocmVzaG9sZCtyPD1uKXRocm93IG5ldyBFcnJvcihcIkZ1bGZpbGxtZW50IGlzIG5vdCBtaW5pbWFsXCIpO3JldHVybiBlLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBlLmJvZHkudmFsaWRhdGUodCl9KX19XSxbe2tleTpcInByZWRpY3RTdWJjb25kaXRpb25MZW5ndGhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09bT90LmJvZHkuZ2V0Q29uZGl0aW9uQmluYXJ5KCkubGVuZ3RoOnQuYm9keS5zZXJpYWxpemVCaW5hcnkoKS5sZW5ndGh9fSx7a2V5OlwicHJlZGljdFN1YmZ1bGZpbGxtZW50TGVuZ3RoXCIsXG52YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LnR5cGU9PT1tP3QuYm9keS5nZXRDb25kaXRpb24oKS5nZXRNYXhGdWxmaWxsbWVudExlbmd0aCgpOnQuYm9keS5nZXRNYXhGdWxmaWxsbWVudExlbmd0aCgpLHI9bmV3IGM7cmV0dXJuIHIud3JpdGVVSW50MTYoKSxyLndyaXRlVmFyT2N0ZXRTdHJpbmcoe2xlbmd0aDplfSksci5nZXRTaXplKCl9fSx7a2V5OlwiY2FsY3VsYXRlV29yc3RDYXNlTGVuZ3RoXCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIpe2lmKHI9cnx8MCx0PD0wKXJldHVybiAwO2lmKHI8ZS5sZW5ndGgpe3ZhciBuPWVbcl07cmV0dXJuIE1hdGgubWF4KG4uc2l6ZSt0aGlzLmNhbGN1bGF0ZVdvcnN0Q2FzZUxlbmd0aCh0LW4ud2VpZ2h0LGUscisxKSx0aGlzLmNhbGN1bGF0ZVdvcnN0Q2FzZUxlbmd0aCh0LGUscisxKSl9cmV0dXJuLSgxLzApfX0se2tleTpcImNhbGN1bGF0ZVNtYWxsZXN0VmFsaWRGdWxmaWxsbWVudFNldFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXtpZihyPXJ8fHtpbmRleDowLHNpemU6MCxzZXQ6W119LHQ8PTApcmV0dXJue3NpemU6ci5zaXplLHNldDpyLnNldH07aWYoci5pbmRleDxlLmxlbmd0aCl7dmFyIG49ZVtyLmluZGV4XSxpPXRoaXMuY2FsY3VsYXRlU21hbGxlc3RWYWxpZEZ1bGZpbGxtZW50U2V0KHQtbi53ZWlnaHQsZSx7c2l6ZTpyLnNpemUrbi5zaXplLGluZGV4OnIuaW5kZXgrMSxzZXQ6ci5zZXQuY29uY2F0KG4uaW5kZXgpfSksbz10aGlzLmNhbGN1bGF0ZVNtYWxsZXN0VmFsaWRGdWxmaWxsbWVudFNldCh0LGUse3NpemU6ci5zaXplK24ub21pdFNpemUsaW5kZXg6ci5pbmRleCsxLHNldDpyLnNldH0pO3JldHVybiBpLnNpemU8by5zaXplP2k6b31yZXR1cm57c2l6ZToxLzB9fX0se2tleTpcInNvcnRCdWZmZXJzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKHQscil7cmV0dXJuIHQubGVuZ3RoIT09ci5sZW5ndGg/dC5sZW5ndGgtci5sZW5ndGg6ZS5jb21wYXJlKHQscil9KX19XSkscn0oaCk7Zy5UWVBFX0lEPTIsZy5GRUFUVVJFX0JJVE1BU0s9OSxnLnByb3RvdHlwZS5hZGRTdWJjb25kaXRpb25Vcmk9Zy5wcm90b3R5cGUuYWRkU3ViY29uZGl0aW9uLGcucHJvdG90eXBlLmFkZFN1YmZ1bGZpbGxtZW50VXJpPWcucHJvdG90eXBlLmFkZFN1YmZ1bGZpbGxtZW50LHQuZXhwb3J0cz1nfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiOyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKHQscil7aWYoIWUuaXNCdWZmZXIodCl8fCFlLmlzQnVmZmVyKHIpKXRocm93IG5ldyBFcnJvcihcIkFyZ3VtZW50cyBtdXN0IGJlIGJ1ZmZlcnNcIik7aWYodC5sZW5ndGghPT1yLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXJzIG11c3QgYmUgdGhlIHNhbWUgbGVuZ3RoXCIpO2Zvcih2YXIgbj1uZXcgZSh0Lmxlbmd0aCksaT0wO2k8dC5sZW5ndGg7aSsrKW5baV09dFtpXV5yW2ldO3JldHVybiBufXQuZXhwb3J0cz1yfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlLHIpeyFmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSxyLG4pe3ZhciBpPU9iamVjdC5jcmVhdGUoKGV8fG8pLnByb3RvdHlwZSksYT1uZXcgcChufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1jKHQscixhKSxpfWZ1bmN0aW9uIGkodCxlLHIpe3RyeXtyZXR1cm57dHlwZTpcIm5vcm1hbFwiLGFyZzp0LmNhbGwoZSxyKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6XCJ0aHJvd1wiLGFyZzp0fX19ZnVuY3Rpb24gbygpe31mdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gcyh0KXtbXCJuZXh0XCIsXCJ0aHJvd1wiLFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dFtlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKGUsdCl9fSl9ZnVuY3Rpb24gdSh0KXt0aGlzLmFyZz10fWZ1bmN0aW9uIGgodCl7ZnVuY3Rpb24gZShyLG4sbyxhKXt2YXIgZj1pKHRbcl0sdCxuKTtpZihcInRocm93XCIhPT1mLnR5cGUpe3ZhciBzPWYuYXJnLGg9cy52YWx1ZTtyZXR1cm4gaCBpbnN0YW5jZW9mIHU/UHJvbWlzZS5yZXNvbHZlKGguYXJnKS50aGVuKGZ1bmN0aW9uKHQpe2UoXCJuZXh0XCIsdCxvLGEpfSxmdW5jdGlvbih0KXtlKFwidGhyb3dcIix0LG8sYSl9KTpQcm9taXNlLnJlc29sdmUoaCkudGhlbihmdW5jdGlvbih0KXtzLnZhbHVlPXQsbyhzKX0sYSl9YShmLmFyZyl9ZnVuY3Rpb24gbih0LHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obixpKXtlKHQscixuLGkpfSl9cmV0dXJuIG89bz9vLnRoZW4obixuKTpuKCl9XCJvYmplY3RcIj09dHlwZW9mIHImJnIuZG9tYWluJiYoZT1yLmRvbWFpbi5iaW5kKGUpKTt2YXIgbzt0aGlzLl9pbnZva2U9bn1mdW5jdGlvbiBjKHQsZSxyKXt2YXIgbj1FO3JldHVybiBmdW5jdGlvbihvLGEpe2lmKG49PT1rKXRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7aWYobj09PXgpe2lmKFwidGhyb3dcIj09PW8pdGhyb3cgYTtyZXR1cm4gdigpfWZvcig7Oyl7dmFyIGY9ci5kZWxlZ2F0ZTtpZihmKXtpZihcInJldHVyblwiPT09b3x8XCJ0aHJvd1wiPT09byYmZi5pdGVyYXRvcltvXT09PXkpe3IuZGVsZWdhdGU9bnVsbDt2YXIgcz1mLml0ZXJhdG9yLnJldHVybjtpZihzKXt2YXIgdT1pKHMsZi5pdGVyYXRvcixhKTtpZihcInRocm93XCI9PT11LnR5cGUpe289XCJ0aHJvd1wiLGE9dS5hcmc7Y29udGludWV9fWlmKFwicmV0dXJuXCI9PT1vKWNvbnRpbnVlfXZhciB1PWkoZi5pdGVyYXRvcltvXSxmLml0ZXJhdG9yLGEpO2lmKFwidGhyb3dcIj09PXUudHlwZSl7ci5kZWxlZ2F0ZT1udWxsLG89XCJ0aHJvd1wiLGE9dS5hcmc7Y29udGludWV9bz1cIm5leHRcIixhPXk7dmFyIGg9dS5hcmc7aWYoIWguZG9uZSlyZXR1cm4gbj1BLGg7cltmLnJlc3VsdE5hbWVdPWgudmFsdWUsci5uZXh0PWYubmV4dExvYyxyLmRlbGVnYXRlPW51bGx9aWYoXCJuZXh0XCI9PT1vKXIuc2VudD1yLl9zZW50PWE7ZWxzZSBpZihcInRocm93XCI9PT1vKXtpZihuPT09RSl0aHJvdyBuPXgsYTtyLmRpc3BhdGNoRXhjZXB0aW9uKGEpJiYobz1cIm5leHRcIixhPXkpfWVsc2VcInJldHVyblwiPT09byYmci5hYnJ1cHQoXCJyZXR1cm5cIixhKTtuPWs7dmFyIHU9aSh0LGUscik7aWYoXCJub3JtYWxcIj09PXUudHlwZSl7bj1yLmRvbmU/eDpBO3ZhciBoPXt2YWx1ZTp1LmFyZyxkb25lOnIuZG9uZX07aWYodS5hcmchPT1JKXJldHVybiBoO3IuZGVsZWdhdGUmJlwibmV4dFwiPT09byYmKGE9eSl9ZWxzZVwidGhyb3dcIj09PXUudHlwZSYmKG49eCxvPVwidGhyb3dcIixhPXUuYXJnKX19fWZ1bmN0aW9uIGQodCl7dmFyIGU9e3RyeUxvYzp0WzBdfTsxIGluIHQmJihlLmNhdGNoTG9jPXRbMV0pLDIgaW4gdCYmKGUuZmluYWxseUxvYz10WzJdLGUuYWZ0ZXJMb2M9dFszXSksdGhpcy50cnlFbnRyaWVzLnB1c2goZSl9ZnVuY3Rpb24gbCh0KXt2YXIgZT10LmNvbXBsZXRpb258fHt9O2UudHlwZT1cIm5vcm1hbFwiLGRlbGV0ZSBlLmFyZyx0LmNvbXBsZXRpb249ZX1mdW5jdGlvbiBwKHQpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzpcInJvb3RcIn1dLHQuZm9yRWFjaChkLHRoaXMpLHRoaXMucmVzZXQoITApfWZ1bmN0aW9uIGIodCl7aWYodCl7dmFyIGU9dFt3XTtpZihlKXJldHVybiBlLmNhbGwodCk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5uZXh0KXJldHVybiB0O2lmKCFpc05hTih0Lmxlbmd0aCkpe3ZhciByPS0xLG49ZnVuY3Rpb24gZSgpe2Zvcig7KytyPHQubGVuZ3RoOylpZihtLmNhbGwodCxyKSlyZXR1cm4gZS52YWx1ZT10W3JdLGUuZG9uZT0hMSxlO3JldHVybiBlLnZhbHVlPXksZS5kb25lPSEwLGV9O3JldHVybiBuLm5leHQ9bn19cmV0dXJue25leHQ6dn19ZnVuY3Rpb24gdigpe3JldHVybnt2YWx1ZTp5LGRvbmU6ITB9fXZhciB5LG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxnPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sdz1nLml0ZXJhdG9yfHxcIkBAaXRlcmF0b3JcIixfPWcudG9TdHJpbmdUYWd8fFwiQEB0b1N0cmluZ1RhZ1wiLE09XCJvYmplY3RcIj09dHlwZW9mIHQsUz1lLnJlZ2VuZXJhdG9yUnVudGltZTtpZihTKXJldHVybiB2b2lkKE0mJih0LmV4cG9ydHM9UykpO1M9ZS5yZWdlbmVyYXRvclJ1bnRpbWU9TT90LmV4cG9ydHM6e30sUy53cmFwPW47dmFyIEU9XCJzdXNwZW5kZWRTdGFydFwiLEE9XCJzdXNwZW5kZWRZaWVsZFwiLGs9XCJleGVjdXRpbmdcIix4PVwiY29tcGxldGVkXCIsST17fSxCPWYucHJvdG90eXBlPW8ucHJvdG90eXBlO2EucHJvdG90eXBlPUIuY29uc3RydWN0b3I9ZixmLmNvbnN0cnVjdG9yPWEsZltfXT1hLmRpc3BsYXlOYW1lPVwiR2VuZXJhdG9yRnVuY3Rpb25cIixTLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIWUmJihlPT09YXx8XCJHZW5lcmF0b3JGdW5jdGlvblwiPT09KGUuZGlzcGxheU5hbWV8fGUubmFtZSkpfSxTLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxmKToodC5fX3Byb3RvX189ZixfIGluIHR8fCh0W19dPVwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQiksdH0sUy5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHUodCl9LHMoaC5wcm90b3R5cGUpLFMuYXN5bmM9ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89bmV3IGgobih0LGUscixpKSk7cmV0dXJuIFMuaXNHZW5lcmF0b3JGdW5jdGlvbihlKT9vOm8ubmV4dCgpLnRoZW4oZnVuY3Rpb24odCl7cmV0dXJuIHQuZG9uZT90LnZhbHVlOm8ubmV4dCgpfSl9LHMoQiksQlt3XT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxCW19dPVwiR2VuZXJhdG9yXCIsQi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiW29iamVjdCBHZW5lcmF0b3JdXCJ9LFMua2V5cz1mdW5jdGlvbih0KXt2YXIgZT1bXTtmb3IodmFyIHIgaW4gdCllLnB1c2gocik7cmV0dXJuIGUucmV2ZXJzZSgpLGZ1bmN0aW9uIHIoKXtmb3IoO2UubGVuZ3RoOyl7dmFyIG49ZS5wb3AoKTtpZihuIGluIHQpcmV0dXJuIHIudmFsdWU9bixyLmRvbmU9ITEscn1yZXR1cm4gci5kb25lPSEwLHJ9fSxTLnZhbHVlcz1iLHAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwLHJlc2V0OmZ1bmN0aW9uKHQpe2lmKHRoaXMucHJldj0wLHRoaXMubmV4dD0wLHRoaXMuc2VudD10aGlzLl9zZW50PXksdGhpcy5kb25lPSExLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChsKSwhdClmb3IodmFyIGUgaW4gdGhpcylcInRcIj09PWUuY2hhckF0KDApJiZtLmNhbGwodGhpcyxlKSYmIWlzTmFOKCtlLnNsaWNlKDEpKSYmKHRoaXNbZV09eSl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIHQ9dGhpcy50cnlFbnRyaWVzWzBdLGU9dC5jb21wbGV0aW9uO2lmKFwidGhyb3dcIj09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIG8udHlwZT1cInRocm93XCIsby5hcmc9dCxyLm5leHQ9ZSwhIW59aWYodGhpcy5kb25lKXRocm93IHQ7Zm9yKHZhciByPXRoaXMsbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBpPXRoaXMudHJ5RW50cmllc1tuXSxvPWkuY29tcGxldGlvbjtpZihcInJvb3RcIj09PWkudHJ5TG9jKXJldHVybiBlKFwiZW5kXCIpO2lmKGkudHJ5TG9jPD10aGlzLnByZXYpe3ZhciBhPW0uY2FsbChpLFwiY2F0Y2hMb2NcIiksZj1tLmNhbGwoaSxcImZpbmFsbHlMb2NcIik7aWYoYSYmZil7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIGUoaS5jYXRjaExvYywhMCk7aWYodGhpcy5wcmV2PGkuZmluYWxseUxvYylyZXR1cm4gZShpLmZpbmFsbHlMb2MpfWVsc2UgaWYoYSl7aWYodGhpcy5wcmV2PGkuY2F0Y2hMb2MpcmV0dXJuIGUoaS5jYXRjaExvYywhMCl9ZWxzZXtpZighZil0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBlKGkuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBuPXRoaXMudHJ5RW50cmllc1tyXTtpZihuLnRyeUxvYzw9dGhpcy5wcmV2JiZtLmNhbGwobixcImZpbmFsbHlMb2NcIikmJnRoaXMucHJldjxuLmZpbmFsbHlMb2Mpe3ZhciBpPW47YnJlYWt9fWkmJihcImJyZWFrXCI9PT10fHxcImNvbnRpbnVlXCI9PT10KSYmaS50cnlMb2M8PWUmJmU8PWkuZmluYWxseUxvYyYmKGk9bnVsbCk7dmFyIG89aT9pLmNvbXBsZXRpb246e307cmV0dXJuIG8udHlwZT10LG8uYXJnPWUsaT90aGlzLm5leHQ9aS5maW5hbGx5TG9jOnRoaXMuY29tcGxldGUobyksSX0sY29tcGxldGU6ZnVuY3Rpb24odCxlKXtpZihcInRocm93XCI9PT10LnR5cGUpdGhyb3cgdC5hcmc7XCJicmVha1wiPT09dC50eXBlfHxcImNvbnRpbnVlXCI9PT10LnR5cGU/dGhpcy5uZXh0PXQuYXJnOlwicmV0dXJuXCI9PT10LnR5cGU/KHRoaXMucnZhbD10LmFyZyx0aGlzLm5leHQ9XCJlbmRcIik6XCJub3JtYWxcIj09PXQudHlwZSYmZSYmKHRoaXMubmV4dD1lKX0sZmluaXNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7ZT49MDstLWUpe3ZhciByPXRoaXMudHJ5RW50cmllc1tlXTtpZihyLmZpbmFsbHlMb2M9PT10KXJldHVybiB0aGlzLmNvbXBsZXRlKHIuY29tcGxldGlvbixyLmFmdGVyTG9jKSxsKHIpLEl9fSxjYXRjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2U+PTA7LS1lKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbZV07aWYoci50cnlMb2M9PT10KXt2YXIgbj1yLmNvbXBsZXRpb247aWYoXCJ0aHJvd1wiPT09bi50eXBlKXt2YXIgaT1uLmFyZztsKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpiKHQpLHJlc3VsdE5hbWU6ZSxuZXh0TG9jOnJ9LEl9fX0oXCJvYmplY3RcIj09dHlwZW9mIGU/ZTpcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93P3dpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSkuY2FsbChlLHIoMzkpLHIoMjYpKX0sZnVuY3Rpb24odCxlLHIpe3IoMjkwKSx0LmV4cG9ydHM9cigzMikuUmVnRXhwLmVzY2FwZX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSBmdW5jdGlvbiFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig3Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFuKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhbiBvYmplY3QhXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjcwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKG4odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdC5jYWxsKGUscil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gdC5jYWxsKGUscixuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLG4saSl7cmV0dXJuIHQuY2FsbChlLHIsbixpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDc3KSxpPXIoMTY1KS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KHQpOnt9fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTY1KSxpPXIoMTYzKSxvPXIoMjcyKSxhPXIoMjc1KSxmPVwicHJvdG90eXBlXCIscz1mdW5jdGlvbih0LGUscil7dmFyIHUsaCxjLGQ9dCZzLkYsbD10JnMuRyxwPXQmcy5TLGI9dCZzLlAsdj10JnMuQix5PXQmcy5XLG09bD9pOmlbZV18fChpW2VdPXt9KSxnPW1bZl0sdz1sP246cD9uW2VdOihuW2VdfHx7fSlbZl07bCYmKHI9ZSk7Zm9yKHUgaW4gciloPSFkJiZ3JiZ2b2lkIDAhPT13W3VdLGgmJnUgaW4gbXx8KGM9aD93W3VdOnJbdV0sbVt1XT1sJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB3W3VdP3JbdV06diYmaD9vKGMsbik6eSYmd1t1XT09Yz9mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlLHIsbil7aWYodGhpcyBpbnN0YW5jZW9mIHQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQoZSk7Y2FzZSAyOnJldHVybiBuZXcgdChlLHIpfXJldHVybiBuZXcgdChlLHIsbil9cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gZVtmXT10W2ZdLGV9KGMpOmImJlwiZnVuY3Rpb25cIj09dHlwZW9mIGM/byhGdW5jdGlvbi5jYWxsLGMpOmMsYiYmKChtLnZpcnR1YWx8fChtLnZpcnR1YWw9e30pKVt1XT1jLHQmcy5SJiZnJiYhZ1t1XSYmYShnLHUsYykpKX07cy5GPTEscy5HPTIscy5TPTQscy5QPTgscy5CPTE2LHMuVz0zMixzLlU9NjQscy5SPTEyOCx0LmV4cG9ydHM9c30sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjc4KSxpPXIoMjc5KTt0LmV4cG9ydHM9cigxMTcpP2Z1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbi5mKHQsZSxpKDEscikpfTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cix0fX0sZnVuY3Rpb24odCxlLHIpe3QuZXhwb3J0cz0hcigxMTcpJiYhcigxNjQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDI3MykoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNzcpLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIW4odCkmJmlzRmluaXRlKHQpJiZpKHQpPT09dH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDI3MSksaT1yKDI3Niksbz1yKDI4MCksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5mPXIoMTE3KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxlLHIpe2lmKG4odCksZT1vKGUsITApLG4ociksaSl0cnl7cmV0dXJuIGEodCxlLHIpfWNhdGNoKHQpe31pZihcImdldFwiaW4gcnx8XCJzZXRcImluIHIpdGhyb3cgVHlwZUVycm9yKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhXCIpO3JldHVyblwidmFsdWVcImluIHImJih0W2VdPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDc3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighbih0KSlyZXR1cm4gdDt2YXIgcixpO2lmKGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZighZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwodCkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDI3NCk7bihuLlMsXCJOdW1iZXJcIix7aXNJbnRlZ2VyOnIoMjc3KX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KSxpPXIoMTI2KSxvPXIoNykoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gaSh0KSYmKGU9dC5jb25zdHJ1Y3RvcixcImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHxlIT09QXJyYXkmJiFpKGUucHJvdG90eXBlKXx8KGU9dm9pZCAwKSxuKGUpJiYoZT1lW29dLG51bGw9PT1lJiYoZT12b2lkIDApKSksdm9pZCAwPT09ZT9BcnJheTplfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMjgyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3KG4odCkpKGUpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMyksaT1yKDI5KSxvPVwibnVtYmVyXCI7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCIhPT10JiZ0IT09byYmXCJkZWZhdWx0XCIhPT10KXRocm93IFR5cGVFcnJvcihcIkluY29ycmVjdCBoaW50XCIpO3JldHVybiBpKG4odGhpcyksdCE9byl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig0NCksaT1yKDg2KSxvPXIoNjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT1uKHQpLHI9aS5mO2lmKHIpZm9yKHZhciBhLGY9cih0KSxzPW8uZix1PTA7Zi5sZW5ndGg+dTspcy5jYWxsKHQsYT1mW3UrK10pJiZlLnB1c2goYSk7cmV0dXJuIGV9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig0NCksaT1yKDE3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIsbz1pKHQpLGE9bihvKSxmPWEubGVuZ3RoLHM9MDtmPnM7KWlmKG9bcj1hW3MrK11dPT09ZSlyZXR1cm4gcn19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDI4OCksaT1yKDgyKSxvPXIoMTMpO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgdD1vKHRoaXMpLGU9YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KGUpLGE9MCxmPW4uXyxzPSExO2U+YTspKHJbYV09YXJndW1lbnRzW2ErK10pPT09ZiYmKHM9ITApO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLG89dGhpcyxhPWFyZ3VtZW50cy5sZW5ndGgsdT0wLGg9MDtpZighcyYmIWEpcmV0dXJuIGkodCxyLG8pO2lmKG49ci5zbGljZSgpLHMpZm9yKDtlPnU7dSsrKW5bdV09PT1mJiYoblt1XT1hcmd1bWVudHNbaCsrXSk7Zm9yKDthPmg7KW4ucHVzaChhcmd1bWVudHNbaCsrXSk7cmV0dXJuIGkodCxuLG8pfX19LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9cig0KX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgcj1lPT09T2JqZWN0KGUpP2Z1bmN0aW9uKHQpe3JldHVybiBlW3RdfTplO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UodCxyKX19fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMjg5KSgvW1xcXFxeJCorPy4oKXxbXFxde31dL2csXCJcXFxcJCZcIik7bihuLlMsXCJSZWdFeHBcIix7ZXNjYXBlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUCxcIkFycmF5XCIse2NvcHlXaXRoaW46cigxNjcpfSkscig1NCkoXCJjb3B5V2l0aGluXCIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMjcpKDQpO24obi5QK24uRiohcigyNSkoW10uZXZlcnksITApLFwiQXJyYXlcIix7ZXZlcnk6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5QLFwiQXJyYXlcIix7ZmlsbDpyKDExOCl9KSxyKDU0KShcImZpbGxcIil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigyNykoMik7bihuLlArbi5GKiFyKDI1KShbXS5maWx0ZXIsITApLFwiQXJyYXlcIix7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMjcpKDYpLG89XCJmaW5kSW5kZXhcIixhPSEwO28gaW5bXSYmQXJyYXkoMSlbb10oZnVuY3Rpb24oKXthPSExfSksbihuLlArbi5GKmEsXCJBcnJheVwiLHtmaW5kSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxyKDU0KShvKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDI3KSg1KSxvPVwiZmluZFwiLGE9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe2E9ITF9KSxuKG4uUCtuLkYqYSxcIkFycmF5XCIse2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxyKDU0KShvKX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDI3KSgwKSxvPXIoMjUpKFtdLmZvckVhY2gsITApO24obi5QK24uRiohbyxcIkFycmF5XCIse2ZvckVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDMzKSxpPXIoMCksbz1yKDExKSxhPXIoMTc2KSxmPXIoMTI1KSxzPXIoMTApLHU9cigxMTkpLGg9cigxNDIpO2koaS5TK2kuRiohcig4NCkoZnVuY3Rpb24odCl7QXJyYXkuZnJvbSh0KX0pLFwiQXJyYXlcIix7ZnJvbTpmdW5jdGlvbih0KXt2YXIgZSxyLGksYyxkPW8odCksbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzP3RoaXM6QXJyYXkscD1hcmd1bWVudHMubGVuZ3RoLGI9cD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsdj12b2lkIDAhPT1iLHk9MCxtPWgoZCk7aWYodiYmKGI9bihiLHA+Mj9hcmd1bWVudHNbMl06dm9pZCAwLDIpKSx2b2lkIDA9PW18fGw9PUFycmF5JiZmKG0pKWZvcihlPXMoZC5sZW5ndGgpLHI9bmV3IGwoZSk7ZT55O3krKyl1KHIseSx2P2IoZFt5XSx5KTpkW3ldKTtlbHNlIGZvcihjPW0uY2FsbChkKSxyPW5ldyBsOyEoaT1jLm5leHQoKSkuZG9uZTt5KyspdShyLHksdj9hKGMsYixbaS52YWx1ZSx5XSwhMCk6aS52YWx1ZSk7cmV0dXJuIHIubGVuZ3RoPXkscn19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDc4KSghMSksbz1bXS5pbmRleE9mLGE9ISFvJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7bihuLlArbi5GKihhfHwhcigyNSkobykpLFwiQXJyYXlcIix7aW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gYT9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDppKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIkFycmF5XCIse2lzQXJyYXk6cigxMjYpfSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxNyksbz1bXS5qb2luO24obi5QK24uRioocig2NSkhPU9iamVjdHx8IXIoMjUpKG8pKSxcIkFycmF5XCIse2pvaW46ZnVuY3Rpb24odCl7cmV0dXJuIG8uY2FsbChpKHRoaXMpLHZvaWQgMD09PXQ/XCIsXCI6dCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxNyksbz1yKDM4KSxhPXIoMTApLGY9W10ubGFzdEluZGV4T2Yscz0hIWYmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDA7bihuLlArbi5GKihzfHwhcigyNSkoZikpLFwiQXJyYXlcIix7bGFzdEluZGV4T2Y6ZnVuY3Rpb24odCl7aWYocylyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9aSh0aGlzKSxyPWEoZS5sZW5ndGgpLG49ci0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihuPU1hdGgubWluKG4sbyhhcmd1bWVudHNbMV0pKSksbjwwJiYobj1yK24pO24+PTA7bi0tKWlmKG4gaW4gZSYmZVtuXT09PXQpcmV0dXJuIG58fDA7cmV0dXJuLTF9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigyNykoMSk7bihuLlArbi5GKiFyKDI1KShbXS5tYXAsITApLFwiQXJyYXlcIix7bWFwOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTE5KTtuKG4uUytuLkYqcig1KShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIShBcnJheS5vZi5jYWxsKHQpaW5zdGFuY2VvZiB0KX0pLFwiQXJyYXlcIix7b2Y6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcoXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShlKTtlPnQ7KWkocix0LGFyZ3VtZW50c1t0KytdKTtyZXR1cm4gci5sZW5ndGg9ZSxyfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTY5KTtuKG4uUCtuLkYqIXIoMjUpKFtdLnJlZHVjZVJpZ2h0LCEwKSxcIkFycmF5XCIse3JlZHVjZVJpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxNjkpO24obi5QK24uRiohcigyNSkoW10ucmVkdWNlLCEwKSxcIkFycmF5XCIse3JlZHVjZTpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHNbMV0sITEpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTIzKSxvPXIoMjMpLGE9cig0NyksZj1yKDEwKSxzPVtdLnNsaWNlO24obi5QK24uRipyKDUpKGZ1bmN0aW9uKCl7aSYmcy5jYWxsKGkpfSksXCJBcnJheVwiLHtzbGljZTpmdW5jdGlvbih0LGUpe3ZhciByPWYodGhpcy5sZW5ndGgpLG49byh0aGlzKTtpZihlPXZvaWQgMD09PWU/cjplLFwiQXJyYXlcIj09bilyZXR1cm4gcy5jYWxsKHRoaXMsdCxlKTtmb3IodmFyIGk9YSh0LHIpLHU9YShlLHIpLGg9Zih1LWkpLGM9QXJyYXkoaCksZD0wO2Q8aDtkKyspY1tkXT1cIlN0cmluZ1wiPT1uP3RoaXMuY2hhckF0KGkrZCk6dGhpc1tpK2RdO3JldHVybiBjfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMjcpKDMpO24obi5QK24uRiohcigyNSkoW10uc29tZSwhMCksXCJBcnJheVwiLHtzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTMpLG89cigxMSksYT1yKDUpLGY9W10uc29ydCxzPVsxLDIsM107bihuLlArbi5GKihhKGZ1bmN0aW9uKCl7cy5zb3J0KHZvaWQgMCl9KXx8IWEoZnVuY3Rpb24oKXtzLnNvcnQobnVsbCl9KXx8IXIoMjUpKGYpKSxcIkFycmF5XCIse3NvcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/Zi5jYWxsKG8odGhpcykpOmYuY2FsbChvKHRoaXMpLGkodCkpfX0pfSxmdW5jdGlvbih0LGUscil7cig0NikoXCJBcnJheVwiKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMsXCJEYXRlXCIse25vdzpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoNSksbz1EYXRlLnByb3RvdHlwZS5nZXRUaW1lLGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+OT90OlwiMFwiK3R9O24obi5QK24uRiooaShmdW5jdGlvbigpe3JldHVyblwiMDM4NS0wNy0yNVQwNzowNjozOS45OTlaXCIhPW5ldyBEYXRlKC01ZTEzLTEpLnRvSVNPU3RyaW5nKCl9KXx8IWkoZnVuY3Rpb24oKXtuZXcgRGF0ZShOYU4pLnRvSVNPU3RyaW5nKCl9KSksXCJEYXRlXCIse3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7aWYoIWlzRmluaXRlKG8uY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcihcIkludmFsaWQgdGltZSB2YWx1ZVwiKTt2YXIgdD10aGlzLGU9dC5nZXRVVENGdWxsWWVhcigpLHI9dC5nZXRVVENNaWxsaXNlY29uZHMoKSxuPWU8MD9cIi1cIjplPjk5OTk/XCIrXCI6XCJcIjtyZXR1cm4gbisoXCIwMDAwMFwiK01hdGguYWJzKGUpKS5zbGljZShuPy02Oi00KStcIi1cIithKHQuZ2V0VVRDTW9udGgoKSsxKStcIi1cIithKHQuZ2V0VVRDRGF0ZSgpKStcIlRcIithKHQuZ2V0VVRDSG91cnMoKSkrXCI6XCIrYSh0LmdldFVUQ01pbnV0ZXMoKSkrXCI6XCIrYSh0LmdldFVUQ1NlY29uZHMoKSkrXCIuXCIrKHI+OTk/cjpcIjBcIithKHIpKStcIlpcIn19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDExKSxvPXIoMjkpO24obi5QK24uRipyKDUpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSxcIkRhdGVcIix7dG9KU09OOmZ1bmN0aW9uKHQpe3ZhciBlPWkodGhpcykscj1vKGUpO3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiByfHxpc0Zpbml0ZShyKT9lLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNykoXCJ0b1ByaW1pdGl2ZVwiKSxpPURhdGUucHJvdG90eXBlO24gaW4gaXx8cigxNCkoaSxuLHIoMjg0KSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1EYXRlLnByb3RvdHlwZSxpPVwiSW52YWxpZCBEYXRlXCIsbz1cInRvU3RyaW5nXCIsYT1uW29dLGY9bi5nZXRUaW1lO25ldyBEYXRlKE5hTikrXCJcIiE9aSYmcigxNSkobixvLGZ1bmN0aW9uKCl7dmFyIHQ9Zi5jYWxsKHRoaXMpO3JldHVybiB0PT09dD9hLmNhbGwodGhpcyk6aX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUCxcIkZ1bmN0aW9uXCIse2JpbmQ6cigxNzApfSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDYpLGk9cigyMSksbz1yKDcpKFwiaGFzSW5zdGFuY2VcIiksYT1GdW5jdGlvbi5wcm90b3R5cGU7byBpbiBhfHxyKDkpLmYoYSxvLHt2YWx1ZTpmdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0aGlzfHwhbih0KSlyZXR1cm4hMTtpZighbih0aGlzLnByb3RvdHlwZSkpcmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzO2Zvcig7dD1pKHQpOylpZih0aGlzLnByb3RvdHlwZT09PXQpcmV0dXJuITA7cmV0dXJuITF9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDkpLmYsaT1yKDM3KSxvPXIoMTIpLGE9RnVuY3Rpb24ucHJvdG90eXBlLGY9L15cXHMqZnVuY3Rpb24gKFteIChdKikvLHM9XCJuYW1lXCIsdT1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfTtzIGluIGF8fHIoOCkmJm4oYSxzLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dHJ5e3ZhciB0PXRoaXMsZT0oXCJcIit0KS5tYXRjaChmKVsxXTtyZXR1cm4gbyh0LHMpfHwhdSh0KXx8bih0LHMsaSg1LGUpKSxlfWNhdGNoKHQpe3JldHVyblwiXCJ9fX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTc4KSxvPU1hdGguc3FydCxhPU1hdGguYWNvc2g7bihuLlMrbi5GKiEoYSYmNzEwPT1NYXRoLmZsb29yKGEoTnVtYmVyLk1BWF9WQUxVRSkpJiZhKDEvMCk9PTEvMCksXCJNYXRoXCIse2Fjb3NoOmZ1bmN0aW9uKHQpe3JldHVybih0PSt0KTwxP05hTjp0Pjk0OTA2MjY1LjYyNDI1MTU2P01hdGgubG9nKHQpK01hdGguTE4yOmkodC0xK28odC0xKSpvKHQrMSkpfX0pfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtyZXR1cm4gaXNGaW5pdGUodD0rdCkmJjAhPXQ/dDwwPy1uKC10KTpNYXRoLmxvZyh0K01hdGguc3FydCh0KnQrMSkpOnR9dmFyIGk9cigwKSxvPU1hdGguYXNpbmg7aShpLlMraS5GKiEobyYmMS9vKDApPjApLFwiTWF0aFwiLHthc2luaDpufSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9TWF0aC5hdGFuaDtuKG4uUytuLkYqIShpJiYxL2koLTApPDApLFwiTWF0aFwiLHthdGFuaDpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6TWF0aC5sb2coKDErdCkvKDEtdCkpLzJ9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxMzApO24obi5TLFwiTWF0aFwiLHtjYnJ0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHQ9K3QpKk1hdGgucG93KE1hdGguYWJzKHQpLDEvMyl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTWF0aFwiLHtjbHozMjpmdW5jdGlvbih0KXtyZXR1cm4odD4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHQrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPU1hdGguZXhwO24obi5TLFwiTWF0aFwiLHtjb3NoOmZ1bmN0aW9uKHQpe3JldHVybihpKHQ9K3QpK2koLXQpKS8yfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTI5KTtuKG4uUytuLkYqKGkhPU1hdGguZXhwbTEpLFwiTWF0aFwiLHtleHBtMTppfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxMzApLG89TWF0aC5wb3csYT1vKDIsLTUyKSxmPW8oMiwtMjMpLHM9bygyLDEyNykqKDItZiksdT1vKDIsLTEyNiksaD1mdW5jdGlvbih0KXtyZXR1cm4gdCsxL2EtMS9hfTtuKG4uUyxcIk1hdGhcIix7ZnJvdW5kOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbj1NYXRoLmFicyh0KSxvPWkodCk7cmV0dXJuIG48dT9vKmgobi91L2YpKnUqZjooZT0oMStmL2EpKm4scj1lLShlLW4pLHI+c3x8ciE9cj9vKigxLzApOm8qcil9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9TWF0aC5hYnM7bihuLlMsXCJNYXRoXCIse2h5cG90OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByLG4sbz0wLGE9MCxmPWFyZ3VtZW50cy5sZW5ndGgscz0wO2E8Zjspcj1pKGFyZ3VtZW50c1thKytdKSxzPHI/KG49cy9yLG89bypuKm4rMSxzPXIpOnI+MD8obj1yL3Msbys9bipuKTpvKz1yO3JldHVybiBzPT09MS8wPzEvMDpzKk1hdGguc3FydChvKX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1NYXRoLmltdWw7bihuLlMrbi5GKnIoNSkoZnVuY3Rpb24oKXtyZXR1cm4gaSg0Mjk0OTY3Mjk1LDUpIT0tNXx8MiE9aS5sZW5ndGh9KSxcIk1hdGhcIix7aW11bDpmdW5jdGlvbih0LGUpe3ZhciByPTY1NTM1LG49K3QsaT0rZSxvPXImbixhPXImaTtyZXR1cm4gMHxvKmErKChyJm4+Pj4xNikqYStvKihyJmk+Pj4xNik8PDE2Pj4+MCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTWF0aFwiLHtsb2cxMDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjEwfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk1hdGhcIix7bG9nMXA6cigxNzgpfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTWF0aFwiLHtsb2cyOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9NYXRoLkxOMn19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMsXCJNYXRoXCIse3NpZ246cigxMzApfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxMjkpLG89TWF0aC5leHA7bihuLlMrbi5GKnIoNSkoZnVuY3Rpb24oKXtyZXR1cm4hTWF0aC5zaW5oKC0yZS0xNykhPS0yZS0xN30pLFwiTWF0aFwiLHtzaW5oOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihvKHQtMSktbygtdC0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDEyOSksbz1NYXRoLmV4cDtuKG4uUyxcIk1hdGhcIix7dGFuaDpmdW5jdGlvbih0KXt2YXIgZT1pKHQ9K3QpLHI9aSgtdCk7cmV0dXJuIGU9PTEvMD8xOnI9PTEvMD8tMTooZS1yKS8obyh0KStvKC10KSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTWF0aFwiLHt0cnVuYzpmdW5jdGlvbih0KXtyZXR1cm4odD4wP01hdGguZmxvb3I6TWF0aC5jZWlsKSh0KX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoNCksaT1yKDEyKSxvPXIoMjMpLGE9cigxMjQpLGY9cigyOSkscz1yKDUpLHU9cig0MykuZixoPXIoMjApLmYsYz1yKDkpLmYsZD1yKDU4KS50cmltLGw9XCJOdW1iZXJcIixwPW5bbF0sYj1wLHY9cC5wcm90b3R5cGUseT1vKHIoNDIpKHYpKT09bCxtPVwidHJpbVwiaW4gU3RyaW5nLnByb3RvdHlwZSxnPWZ1bmN0aW9uKHQpe3ZhciBlPWYodCwhMSk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJmUubGVuZ3RoPjIpe2U9bT9lLnRyaW0oKTpkKGUsMyk7dmFyIHIsbixpLG89ZS5jaGFyQ29kZUF0KDApO2lmKDQzPT09b3x8NDU9PT1vKXtpZihyPWUuY2hhckNvZGVBdCgyKSw4OD09PXJ8fDEyMD09PXIpcmV0dXJuIE5hTn1lbHNlIGlmKDQ4PT09byl7c3dpdGNoKGUuY2hhckNvZGVBdCgxKSl7Y2FzZSA2NjpjYXNlIDk4Om49MixpPTQ5O2JyZWFrO2Nhc2UgNzk6Y2FzZSAxMTE6bj04LGk9NTU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4rZX1mb3IodmFyIGEscz1lLnNsaWNlKDIpLHU9MCxoPXMubGVuZ3RoO3U8aDt1KyspaWYoYT1zLmNoYXJDb2RlQXQodSksYTw0OHx8YT5pKXJldHVybiBOYU47cmV0dXJuIHBhcnNlSW50KHMsbil9fXJldHVybitlfTtpZighcChcIiAwbzFcIil8fCFwKFwiMGIxXCIpfHxwKFwiKzB4MVwiKSl7cD1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPDE/MDp0LHI9dGhpcztyZXR1cm4gciBpbnN0YW5jZW9mIHAmJih5P3MoZnVuY3Rpb24oKXt2LnZhbHVlT2YuY2FsbChyKX0pOm8ocikhPWwpP2EobmV3IGIoZyhlKSkscixwKTpnKGUpfTtmb3IodmFyIHcsXz1yKDgpP3UoYik6XCJNQVhfVkFMVUUsTUlOX1ZBTFVFLE5hTixORUdBVElWRV9JTkZJTklUWSxQT1NJVElWRV9JTkZJTklUWSxFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsTUlOX1NBRkVfSU5URUdFUixwYXJzZUZsb2F0LHBhcnNlSW50LGlzSW50ZWdlclwiLnNwbGl0KFwiLFwiKSxNPTA7Xy5sZW5ndGg+TTtNKyspaShiLHc9X1tNXSkmJiFpKHAsdykmJmMocCx3LGgoYix3KSk7cC5wcm90b3R5cGU9dix2LmNvbnN0cnVjdG9yPXAscigxNSkobixsLHApfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMsXCJOdW1iZXJcIix7RVBTSUxPTjpNYXRoLnBvdygyLC01Mil9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDQpLmlzRmluaXRlO24obi5TLFwiTnVtYmVyXCIse2lzRmluaXRlOmZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiZpKHQpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk51bWJlclwiLHtpc0ludGVnZXI6cigxNzUpfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTnVtYmVyXCIse2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTc1KSxvPU1hdGguYWJzO24obi5TLFwiTnVtYmVyXCIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkmJm8odCk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTnVtYmVyXCIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk51bWJlclwiLHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxODUpO24obi5TK24uRiooTnVtYmVyLnBhcnNlRmxvYXQhPWkpLFwiTnVtYmVyXCIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTg2KTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksXCJOdW1iZXJcIix7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMzgpLG89cigxNjYpLGE9cigxMzcpLGY9MS4udG9GaXhlZCxzPU1hdGguZmxvb3IsdT1bMCwwLDAsMCwwLDBdLGg9XCJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hXCIsYz1cIjBcIixkPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49ZTsrK3I8Njspbis9dCp1W3JdLHVbcl09biUxZTcsbj1zKG4vMWU3KX0sbD1mdW5jdGlvbih0KXtmb3IodmFyIGU9NixyPTA7LS1lPj0wOylyKz11W2VdLHVbZV09cyhyL3QpLHI9ciV0KjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgdD02LGU9XCJcIjstLXQ+PTA7KWlmKFwiXCIhPT1lfHwwPT09dHx8MCE9PXVbdF0pe3ZhciByPVN0cmluZyh1W3RdKTtlPVwiXCI9PT1lP3I6ZSthLmNhbGwoYyw3LXIubGVuZ3RoKStyfXJldHVybiBlfSxiPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMD09PWU/cjplJTI9PT0xP2IodCxlLTEscip0KTpiKHQqdCxlLzIscil9LHY9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj10O3I+PTQwOTY7KWUrPTEyLHIvPTQwOTY7Zm9yKDtyPj0yOyllKz0xLHIvPTI7cmV0dXJuIGV9O24obi5QK24uRiooISFmJiYoXCIwLjAwMFwiIT09OGUtNS50b0ZpeGVkKDMpfHxcIjFcIiE9PS45LnRvRml4ZWQoMCl8fFwiMS4yNVwiIT09MS4yNTUudG9GaXhlZCgyKXx8XCIxMDAwMDAwMDAwMDAwMDAwMTI4XCIhPT0oMHhkZTBiNmIzYTc2NDAwODApLnRvRml4ZWQoMCkpfHwhcig1KShmdW5jdGlvbigpe2YuY2FsbCh7fSl9KSksXCJOdW1iZXJcIix7dG9GaXhlZDpmdW5jdGlvbih0KXt2YXIgZSxyLG4sZixzPW8odGhpcyxoKSx1PWkodCkseT1cIlwiLG09YztpZih1PDB8fHU+MjApdGhyb3cgUmFuZ2VFcnJvcihoKTtpZihzIT1zKXJldHVyblwiTmFOXCI7aWYoczw9LTFlMjF8fHM+PTFlMjEpcmV0dXJuIFN0cmluZyhzKTtpZihzPDAmJih5PVwiLVwiLHM9LXMpLHM+MWUtMjEpaWYoZT12KHMqYigyLDY5LDEpKS02OSxyPWU8MD9zKmIoMiwtZSwxKTpzL2IoMixlLDEpLHIqPTQ1MDM1OTk2MjczNzA0OTYsZT01Mi1lLGU+MCl7Zm9yKGQoMCxyKSxuPXU7bj49NzspZCgxZTcsMCksbi09Nztmb3IoZChiKDEwLG4sMSksMCksbj1lLTE7bj49MjM7KWwoMTw8MjMpLG4tPTIzO2woMTw8biksZCgxLDEpLGwoMiksbT1wKCl9ZWxzZSBkKDAsciksZCgxPDwtZSwwKSxtPXAoKSthLmNhbGwoYyx1KTtyZXR1cm4gdT4wPyhmPW0ubGVuZ3RoLG09eSsoZjw9dT9cIjAuXCIrYS5jYWxsKGMsdS1mKSttOm0uc2xpY2UoMCxmLXUpK1wiLlwiK20uc2xpY2UoZi11KSkpOm09eSttLG19fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cig1KSxvPXIoMTY2KSxhPTEuLnRvUHJlY2lzaW9uO24obi5QK24uRiooaShmdW5jdGlvbigpe3JldHVyblwiMVwiIT09YS5jYWxsKDEsdm9pZCAwKX0pfHwhaShmdW5jdGlvbigpe2EuY2FsbCh7fSl9KSksXCJOdW1iZXJcIix7dG9QcmVjaXNpb246ZnVuY3Rpb24odCl7dmFyIGU9byh0aGlzLFwiTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiFcIik7cmV0dXJuIHZvaWQgMD09PXQ/YS5jYWxsKGUpOmEuY2FsbChlLHQpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUytuLkYsXCJPYmplY3RcIix7YXNzaWduOnIoMTc5KX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk9iamVjdFwiLHtjcmVhdGU6cig0Mil9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMrbi5GKiFyKDgpLFwiT2JqZWN0XCIse2RlZmluZVByb3BlcnRpZXM6cigxODApfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TK24uRiohcig4KSxcIk9iamVjdFwiLHtkZWZpbmVQcm9wZXJ0eTpyKDkpLmZ9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNiksaT1yKDM2KS5vbkZyZWV6ZTtyKDI4KShcImZyZWV6ZVwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdCYmbihlKT90KGkoZSkpOmV9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDE3KSxpPXIoMjApLmY7cigyOCkoXCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiBpKG4odCksZSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtyKDI4KShcImdldE93blByb3BlcnR5TmFtZXNcIixmdW5jdGlvbigpe3JldHVybiByKDE4MSkuZn0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxMSksaT1yKDIxKTtyKDI4KShcImdldFByb3RvdHlwZU9mXCIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkobih0KSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDYpO3IoMjgpKFwiaXNFeHRlbnNpYmxlXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiEhbihlKSYmKCF0fHx0KGUpKX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNik7cigyOCkoXCJpc0Zyb3plblwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4hbihlKXx8ISF0JiZ0KGUpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cig2KTtyKDI4KShcImlzU2VhbGVkXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiFuKGUpfHwhIXQmJnQoZSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiT2JqZWN0XCIse2lzOnIoMTg3KX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxMSksaT1yKDQ0KTtyKDI4KShcImtleXNcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShuKHQpKX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNiksaT1yKDM2KS5vbkZyZWV6ZTtyKDI4KShcInByZXZlbnRFeHRlbnNpb25zXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0JiZuKGUpP3QoaShlKSk6ZX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNiksaT1yKDM2KS5vbkZyZWV6ZTtyKDI4KShcInNlYWxcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQmJm4oZSk/dChpKGUpKTplfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk9iamVjdFwiLHtzZXRQcm90b3R5cGVPZjpyKDEzMikuc2V0fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDY0KSxpPXt9O2lbcig3KShcInRvU3RyaW5nVGFnXCIpXT1cInpcIixpK1wiXCIhPVwiW29iamVjdCB6XVwiJiZyKDE1KShPYmplY3QucHJvdG90eXBlLFwidG9TdHJpbmdcIixmdW5jdGlvbigpe3JldHVyblwiW29iamVjdCBcIituKHRoaXMpK1wiXVwifSwhMCl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxODUpO24obi5HK24uRioocGFyc2VGbG9hdCE9aSkse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTg2KTtuKG4uRytuLkYqKHBhcnNlSW50IT1pKSx7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saSxvLGE9cig0MSksZj1yKDQpLHM9cigzMyksdT1yKDY0KSxoPXIoMCksYz1yKDYpLGQ9cigxMyksbD1yKDQwKSxwPXIoNTUpLGI9cigxMzQpLHY9cigxMzkpLnNldCx5PXIoMTMxKSgpLG09XCJQcm9taXNlXCIsZz1mLlR5cGVFcnJvcix3PWYucHJvY2VzcyxfPWZbbV0sdz1mLnByb2Nlc3MsTT1cInByb2Nlc3NcIj09dSh3KSxTPWZ1bmN0aW9uKCl7fSxFPSEhZnVuY3Rpb24oKXt0cnl7dmFyIHQ9Xy5yZXNvbHZlKDEpLGU9KHQuY29uc3RydWN0b3I9e30pW3IoNykoXCJzcGVjaWVzXCIpXT1mdW5jdGlvbih0KXt0KFMsUyl9O3JldHVybihNfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oUylpbnN0YW5jZW9mIGV9Y2F0Y2godCl7fX0oKSxBPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHx0PT09XyYmZT09PW99LGs9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuISghYyh0KXx8XCJmdW5jdGlvblwiIT10eXBlb2YoZT10LnRoZW4pKSYmZX0seD1mdW5jdGlvbih0KXtyZXR1cm4gQShfLHQpP25ldyBJKHQpOm5ldyBpKHQpfSxJPWk9ZnVuY3Rpb24odCl7dmFyIGUscjt0aGlzLnByb21pc2U9bmV3IHQoZnVuY3Rpb24odCxuKXtpZih2b2lkIDAhPT1lfHx2b2lkIDAhPT1yKXRocm93IGcoXCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvclwiKTtlPXQscj1ufSksdGhpcy5yZXNvbHZlPWQoZSksdGhpcy5yZWplY3Q9ZChyKX0sQj1mdW5jdGlvbih0KXt0cnl7dCgpfWNhdGNoKHQpe3JldHVybntlcnJvcjp0fX19LE89ZnVuY3Rpb24odCxlKXtpZighdC5fbil7dC5fbj0hMDt2YXIgcj10Ll9jO3koZnVuY3Rpb24oKXtmb3IodmFyIG49dC5fdixpPTE9PXQuX3Msbz0wLGE9ZnVuY3Rpb24oZSl7dmFyIHIsbyxhPWk/ZS5vazplLmZhaWwsZj1lLnJlc29sdmUscz1lLnJlamVjdCx1PWUuZG9tYWluO3RyeXthPyhpfHwoMj09dC5faCYmVCh0KSx0Ll9oPTEpLGE9PT0hMD9yPW46KHUmJnUuZW50ZXIoKSxyPWEobiksdSYmdS5leGl0KCkpLHI9PT1lLnByb21pc2U/cyhnKFwiUHJvbWlzZS1jaGFpbiBjeWNsZVwiKSk6KG89ayhyKSk/by5jYWxsKHIsZixzKTpmKHIpKTpzKG4pfWNhdGNoKHQpe3ModCl9fTtyLmxlbmd0aD5vOylhKHJbbysrXSk7dC5fYz1bXSx0Ll9uPSExLGUmJiF0Ll9oJiZSKHQpfSl9fSxSPWZ1bmN0aW9uKHQpe3YuY2FsbChmLGZ1bmN0aW9uKCl7dmFyIGUscixuLGk9dC5fdjtpZihQKHQpJiYoZT1CKGZ1bmN0aW9uKCl7TT93LmVtaXQoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIixpLHQpOihyPWYub251bmhhbmRsZWRyZWplY3Rpb24pP3Ioe3Byb21pc2U6dCxyZWFzb246aX0pOihuPWYuY29uc29sZSkmJm4uZXJyb3ImJm4uZXJyb3IoXCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25cIixpKX0pLHQuX2g9TXx8UCh0KT8yOjEpLHQuX2E9dm9pZCAwLGUpdGhyb3cgZS5lcnJvcn0pfSxQPWZ1bmN0aW9uKHQpe2lmKDE9PXQuX2gpcmV0dXJuITE7Zm9yKHZhciBlLHI9dC5fYXx8dC5fYyxuPTA7ci5sZW5ndGg+bjspaWYoZT1yW24rK10sZS5mYWlsfHwhUChlLnByb21pc2UpKXJldHVybiExO3JldHVybiEwfSxUPWZ1bmN0aW9uKHQpe3YuY2FsbChmLGZ1bmN0aW9uKCl7dmFyIGU7TT93LmVtaXQoXCJyZWplY3Rpb25IYW5kbGVkXCIsdCk6KGU9Zi5vbnJlamVjdGlvbmhhbmRsZWQpJiZlKHtwcm9taXNlOnQscmVhc29uOnQuX3Z9KX0pfSxqPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ZS5fZHx8KGUuX2Q9ITAsZT1lLl93fHxlLGUuX3Y9dCxlLl9zPTIsZS5fYXx8KGUuX2E9ZS5fYy5zbGljZSgpKSxPKGUsITApKX0sQz1mdW5jdGlvbih0KXt2YXIgZSxyPXRoaXM7aWYoIXIuX2Qpe3IuX2Q9ITAscj1yLl93fHxyO3RyeXtpZihyPT09dCl0aHJvdyBnKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7KGU9ayh0KSk/eShmdW5jdGlvbigpe3ZhciBuPXtfdzpyLF9kOiExfTt0cnl7ZS5jYWxsKHQscyhDLG4sMSkscyhqLG4sMSkpfWNhdGNoKHQpe2ouY2FsbChuLHQpfX0pOihyLl92PXQsci5fcz0xLE8ociwhMSkpfWNhdGNoKHQpe2ouY2FsbCh7X3c6cixfZDohMX0sdCl9fX07RXx8KF89ZnVuY3Rpb24odCl7bCh0aGlzLF8sbSxcIl9oXCIpLGQodCksbi5jYWxsKHRoaXMpO3RyeXt0KHMoQyx0aGlzLDEpLHMoaix0aGlzLDEpKX1jYXRjaCh0KXtqLmNhbGwodGhpcyx0KX19LG49ZnVuY3Rpb24odCl7dGhpcy5fYz1bXSx0aGlzLl9hPXZvaWQgMCx0aGlzLl9zPTAsdGhpcy5fZD0hMSx0aGlzLl92PXZvaWQgMCx0aGlzLl9oPTAsdGhpcy5fbj0hMX0sbi5wcm90b3R5cGU9cig0NSkoXy5wcm90b3R5cGUse3RoZW46ZnVuY3Rpb24odCxlKXt2YXIgcj14KGIodGhpcyxfKSk7cmV0dXJuIHIub2s9XCJmdW5jdGlvblwiIT10eXBlb2YgdHx8dCxyLmZhaWw9XCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZSxyLmRvbWFpbj1NP3cuZG9tYWluOnZvaWQgMCx0aGlzLl9jLnB1c2gociksdGhpcy5fYSYmdGhpcy5fYS5wdXNoKHIpLHRoaXMuX3MmJk8odGhpcywhMSksci5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX19KSxJPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IG47dGhpcy5wcm9taXNlPXQsdGhpcy5yZXNvbHZlPXMoQyx0LDEpLHRoaXMucmVqZWN0PXMoaix0LDEpfSksaChoLkcraC5XK2guRiohRSx7UHJvbWlzZTpffSkscig1NykoXyxtKSxyKDQ2KShtKSxvPXIoMzIpW21dLGgoaC5TK2guRiohRSxtLHtyZWplY3Q6ZnVuY3Rpb24odCl7dmFyIGU9eCh0aGlzKSxyPWUucmVqZWN0O3JldHVybiByKHQpLGUucHJvbWlzZX19KSxoKGguUytoLkYqKGF8fCFFKSxtLHtyZXNvbHZlOmZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBfJiZBKHQuY29uc3RydWN0b3IsdGhpcykpcmV0dXJuIHQ7dmFyIGU9eCh0aGlzKSxyPWUucmVzb2x2ZTtyZXR1cm4gcih0KSxlLnByb21pc2V9fSksaChoLlMraC5GKiEoRSYmcig4NCkoZnVuY3Rpb24odCl7Xy5hbGwodCkuY2F0Y2goUyl9KSksbSx7YWxsOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMscj14KGUpLG49ci5yZXNvbHZlLGk9ci5yZWplY3Qsbz1CKGZ1bmN0aW9uKCl7dmFyIHI9W10sbz0wLGE9MTtwKHQsITEsZnVuY3Rpb24odCl7dmFyIGY9bysrLHM9ITE7ci5wdXNoKHZvaWQgMCksYSsrLGUucmVzb2x2ZSh0KS50aGVuKGZ1bmN0aW9uKHQpe3N8fChzPSEwLHJbZl09dCwtLWF8fG4ocikpfSxpKX0pLC0tYXx8bihyKX0pO3JldHVybiBvJiZpKG8uZXJyb3IpLHIucHJvbWlzZX0scmFjZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9eChlKSxuPXIucmVqZWN0LGk9QihmdW5jdGlvbigpe3AodCwhMSxmdW5jdGlvbih0KXtlLnJlc29sdmUodCkudGhlbihyLnJlc29sdmUsbil9KX0pO3JldHVybiBpJiZuKGkuZXJyb3IpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDEzKSxvPXIoMyksYT0ocig0KS5SZWZsZWN0fHx7fSkuYXBwbHksZj1GdW5jdGlvbi5hcHBseTtuKG4uUytuLkYqIXIoNSkoZnVuY3Rpb24oKXthKGZ1bmN0aW9uKCl7fSl9KSxcIlJlZmxlY3RcIix7YXBwbHk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWkodCkscz1vKHIpO3JldHVybiBhP2EobixlLHMpOmYuY2FsbChuLGUscyl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cig0Miksbz1yKDEzKSxhPXIoMyksZj1yKDYpLHM9cig1KSx1PXIoMTcwKSxoPShyKDQpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QsYz1zKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4hKGgoZnVuY3Rpb24oKXt9LFtdLHQpaW5zdGFuY2VvZiB0KX0pLGQ9IXMoZnVuY3Rpb24oKXtoKGZ1bmN0aW9uKCl7fSl9KTtuKG4uUytuLkYqKGN8fGQpLFwiUmVmbGVjdFwiLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24odCxlKXtvKHQpLGEoZSk7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDwzP3Q6byhhcmd1bWVudHNbMl0pO2lmKGQmJiFjKXJldHVybiBoKHQsZSxyKTtpZih0PT1yKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IHQ7Y2FzZSAxOnJldHVybiBuZXcgdChlWzBdKTtjYXNlIDI6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSk7Y2FzZSA0OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdKX12YXIgbj1bbnVsbF07cmV0dXJuIG4ucHVzaC5hcHBseShuLGUpLG5ldyh1LmFwcGx5KHQsbikpfXZhciBzPXIucHJvdG90eXBlLGw9aShmKHMpP3M6T2JqZWN0LnByb3RvdHlwZSkscD1GdW5jdGlvbi5hcHBseS5jYWxsKHQsbCxlKTtyZXR1cm4gZihwKT9wOmx9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDkpLGk9cigwKSxvPXIoMyksYT1yKDI5KTtpKGkuUytpLkYqcig1KShmdW5jdGlvbigpe1JlZmxlY3QuZGVmaW5lUHJvcGVydHkobi5mKHt9LDEse3ZhbHVlOjF9KSwxLHt2YWx1ZToyfSl9KSxcIlJlZmxlY3RcIix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxlLHIpe28odCksZT1hKGUsITApLG8ocik7dHJ5e3JldHVybiBuLmYodCxlLHIpLCEwfWNhdGNoKHQpe3JldHVybiExfX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDIwKS5mLG89cigzKTtuKG4uUyxcIlJlZmxlY3RcIix7ZGVsZXRlUHJvcGVydHk6ZnVuY3Rpb24odCxlKXt2YXIgcj1pKG8odCksZSk7cmV0dXJuIShyJiYhci5jb25maWd1cmFibGUpJiZkZWxldGUgdFtlXX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDMpLG89ZnVuY3Rpb24odCl7dGhpcy5fdD1pKHQpLHRoaXMuX2k9MDt2YXIgZSxyPXRoaXMuX2s9W107Zm9yKGUgaW4gdClyLnB1c2goZSl9O3IoMTI3KShvLFwiT2JqZWN0XCIsZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMscj1lLl9rO2RvIGlmKGUuX2k+PXIubGVuZ3RoKXJldHVybnt2YWx1ZTp2b2lkIDAsZG9uZTohMH07d2hpbGUoISgodD1yW2UuX2krK10paW4gZS5fdCkpO3JldHVybnt2YWx1ZTp0LGRvbmU6ITF9fSksbihuLlMsXCJSZWZsZWN0XCIse2VudW1lcmF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8odCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDIwKSxpPXIoMCksbz1yKDMpO2koaS5TLFwiUmVmbGVjdFwiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5mKG8odCksZSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigyMSksbz1yKDMpO24obi5TLFwiUmVmbGVjdFwiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gaShvKHQpKX19KX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXt2YXIgcixmLGg9YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiB1KHQpPT09aD90W2VdOihyPWkuZih0LGUpKT9hKHIsXCJ2YWx1ZVwiKT9yLnZhbHVlOnZvaWQgMCE9PXIuZ2V0P3IuZ2V0LmNhbGwoaCk6dm9pZCAwOnMoZj1vKHQpKT9uKGYsZSxoKTp2b2lkIDB9dmFyIGk9cigyMCksbz1yKDIxKSxhPXIoMTIpLGY9cigwKSxzPXIoNiksdT1yKDMpO2YoZi5TLFwiUmVmbGVjdFwiLHtnZXQ6bn0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIlJlZmxlY3RcIix7aGFzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDMpLG89T2JqZWN0LmlzRXh0ZW5zaWJsZTtuKG4uUyxcIlJlZmxlY3RcIix7aXNFeHRlbnNpYmxlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLCFvfHxvKHQpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIlJlZmxlY3RcIix7b3duS2V5czpyKDE4NCl9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDMpLG89T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO24obi5TLFwiUmVmbGVjdFwiLHtwcmV2ZW50RXh0ZW5zaW9uczpmdW5jdGlvbih0KXtpKHQpO3RyeXtyZXR1cm4gbyYmbyh0KSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxMzIpO2kmJm4obi5TLFwiUmVmbGVjdFwiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0LGUpe2kuY2hlY2sodCxlKTt0cnl7cmV0dXJuIGkuc2V0KHQsZSksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUscil7dmFyIHMsZCxsPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFyZ3VtZW50c1szXSxwPW8uZihoKHQpLGUpO2lmKCFwKXtpZihjKGQ9YSh0KSkpcmV0dXJuIG4oZCxlLHIsbCk7cD11KDApfXJldHVybiBmKHAsXCJ2YWx1ZVwiKT8hKHAud3JpdGFibGU9PT0hMXx8IWMobCkpJiYocz1vLmYobCxlKXx8dSgwKSxzLnZhbHVlPXIsaS5mKGwsZSxzKSwhMCk6dm9pZCAwIT09cC5zZXQmJihwLnNldC5jYWxsKGwsciksITApfXZhciBpPXIoOSksbz1yKDIwKSxhPXIoMjEpLGY9cigxMikscz1yKDApLHU9cigzNyksaD1yKDMpLGM9cig2KTtzKHMuUyxcIlJlZmxlY3RcIix7c2V0Om59KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNCksaT1yKDEyNCksbz1yKDkpLmYsYT1yKDQzKS5mLGY9cig4Mykscz1yKDgxKSx1PW4uUmVnRXhwLGg9dSxjPXUucHJvdG90eXBlLGQ9L2EvZyxsPS9hL2cscD1uZXcgdShkKSE9PWQ7aWYocig4KSYmKCFwfHxyKDUpKGZ1bmN0aW9uKCl7cmV0dXJuIGxbcig3KShcIm1hdGNoXCIpXT0hMSx1KGQpIT1kfHx1KGwpPT1sfHxcIi9hL2lcIiE9dShkLFwiaVwiKX0pKSl7dT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMgaW5zdGFuY2VvZiB1LG49Zih0KSxvPXZvaWQgMD09PWU7cmV0dXJuIXImJm4mJnQuY29uc3RydWN0b3I9PT11JiZvP3Q6aShwP25ldyBoKG4mJiFvP3Quc291cmNlOnQsZSk6aCgobj10IGluc3RhbmNlb2YgdSk/dC5zb3VyY2U6dCxuJiZvP3MuY2FsbCh0KTplKSxyP3RoaXM6Yyx1KX07Zm9yKHZhciBiPShmdW5jdGlvbih0KXt0IGluIHV8fG8odSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGhbdF19LHNldDpmdW5jdGlvbihlKXtoW3RdPWV9fSl9KSx2PWEoaCkseT0wO3YubGVuZ3RoPnk7KWIodlt5KytdKTtjLmNvbnN0cnVjdG9yPXUsdS5wcm90b3R5cGU9YyxyKDE1KShuLFwiUmVnRXhwXCIsdSl9cig0NikoXCJSZWdFeHBcIil9LGZ1bmN0aW9uKHQsZSxyKXtyKDgwKShcIm1hdGNoXCIsMSxmdW5jdGlvbih0LGUscil7cmV0dXJuW2Z1bmN0aW9uKHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXQodGhpcyksaT12b2lkIDA9PXI/dm9pZCAwOnJbZV07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKHIsbik6bmV3IFJlZ0V4cChyKVtlXShTdHJpbmcobikpfSxyXX0pfSxmdW5jdGlvbih0LGUscil7XG5yKDgwKShcInJlcGxhY2VcIiwyLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZnVuY3Rpb24obixpKXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KHRoaXMpLGE9dm9pZCAwPT1uP3ZvaWQgMDpuW2VdO3JldHVybiB2b2lkIDAhPT1hP2EuY2FsbChuLG8saSk6ci5jYWxsKFN0cmluZyhvKSxuLGkpfSxyXX0pfSxmdW5jdGlvbih0LGUscil7cig4MCkoXCJzZWFyY2hcIiwxLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm5bZnVuY3Rpb24ocil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49dCh0aGlzKSxpPXZvaWQgMD09cj92b2lkIDA6cltlXTtyZXR1cm4gdm9pZCAwIT09aT9pLmNhbGwocixuKTpuZXcgUmVnRXhwKHIpW2VdKFN0cmluZyhuKSl9LHJdfSl9LGZ1bmN0aW9uKHQsZSxyKXtyKDgwKShcInNwbGl0XCIsMixmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9cig4Myksbz1uLGE9W10ucHVzaCxmPVwic3BsaXRcIixzPVwibGVuZ3RoXCIsdT1cImxhc3RJbmRleFwiO2lmKFwiY1wiPT1cImFiYmNcIltmXSgvKGIpKi8pWzFdfHw0IT1cInRlc3RcIltmXSgvKD86KS8sLTEpW3NdfHwyIT1cImFiXCJbZl0oLyg/OmFiKSovKVtzXXx8NCE9XCIuXCJbZl0oLyguPykoLj8pLylbc118fFwiLlwiW2ZdKC8oKSgpLylbc10+MXx8XCJcIltmXSgvLj8vKVtzXSl7dmFyIGg9dm9pZCAwPT09LygpPz8vLmV4ZWMoXCJcIilbMV07bj1mdW5jdGlvbih0LGUpe3ZhciByPVN0cmluZyh0aGlzKTtpZih2b2lkIDA9PT10JiYwPT09ZSlyZXR1cm5bXTtpZighaSh0KSlyZXR1cm4gby5jYWxsKHIsdCxlKTt2YXIgbixmLGMsZCxsLHA9W10sYj0odC5pZ25vcmVDYXNlP1wiaVwiOlwiXCIpKyh0Lm11bHRpbGluZT9cIm1cIjpcIlwiKSsodC51bmljb2RlP1widVwiOlwiXCIpKyh0LnN0aWNreT9cInlcIjpcIlwiKSx2PTAseT12b2lkIDA9PT1lPzQyOTQ5NjcyOTU6ZT4+PjAsbT1uZXcgUmVnRXhwKHQuc291cmNlLGIrXCJnXCIpO2ZvcihofHwobj1uZXcgUmVnRXhwKFwiXlwiK20uc291cmNlK1wiJCg/IVxcXFxzKVwiLGIpKTsoZj1tLmV4ZWMocikpJiYoYz1mLmluZGV4K2ZbMF1bc10sIShjPnYmJihwLnB1c2goci5zbGljZSh2LGYuaW5kZXgpKSwhaCYmZltzXT4xJiZmWzBdLnJlcGxhY2UobixmdW5jdGlvbigpe2ZvcihsPTE7bDxhcmd1bWVudHNbc10tMjtsKyspdm9pZCAwPT09YXJndW1lbnRzW2xdJiYoZltsXT12b2lkIDApfSksZltzXT4xJiZmLmluZGV4PHJbc10mJmEuYXBwbHkocCxmLnNsaWNlKDEpKSxkPWZbMF1bc10sdj1jLHBbc10+PXkpKSk7KW1bdV09PT1mLmluZGV4JiZtW3VdKys7cmV0dXJuIHY9PT1yW3NdPyFkJiZtLnRlc3QoXCJcIil8fHAucHVzaChcIlwiKTpwLnB1c2goci5zbGljZSh2KSkscFtzXT55P3Auc2xpY2UoMCx5KTpwfX1lbHNlXCIwXCJbZl0odm9pZCAwLDApW3NdJiYobj1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT10JiYwPT09ZT9bXTpvLmNhbGwodGhpcyx0LGUpfSk7cmV0dXJuW2Z1bmN0aW9uKHIsaSl7dmFyIG89dCh0aGlzKSxhPXZvaWQgMD09cj92b2lkIDA6cltlXTtyZXR1cm4gdm9pZCAwIT09YT9hLmNhbGwocixvLGkpOm4uY2FsbChTdHJpbmcobykscixpKX0sbl19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTkxKTt2YXIgbj1yKDMpLGk9cig4MSksbz1yKDgpLGE9XCJ0b1N0cmluZ1wiLGY9Ly4vW2FdLHM9ZnVuY3Rpb24odCl7cigxNSkoUmVnRXhwLnByb3RvdHlwZSxhLHQsITApfTtyKDUpKGZ1bmN0aW9uKCl7cmV0dXJuXCIvYS9iXCIhPWYuY2FsbCh7c291cmNlOlwiYVwiLGZsYWdzOlwiYlwifSl9KT9zKGZ1bmN0aW9uKCl7dmFyIHQ9bih0aGlzKTtyZXR1cm5cIi9cIi5jb25jYXQodC5zb3VyY2UsXCIvXCIsXCJmbGFnc1wiaW4gdD90LmZsYWdzOiFvJiZ0IGluc3RhbmNlb2YgUmVnRXhwP2kuY2FsbCh0KTp2b2lkIDApfSk6Zi5uYW1lIT1hJiZzKGZ1bmN0aW9uKCl7cmV0dXJuIGYuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7cigxNikoXCJhbmNob3JcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQodGhpcyxcImFcIixcIm5hbWVcIixlKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwiYmlnXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxcImJpZ1wiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtyKDE2KShcImJsaW5rXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxcImJsaW5rXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwiYm9sZFwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJiXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDEzNSkoITEpO24obi5QLFwiU3RyaW5nXCIse2NvZGVQb2ludEF0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxMCksbz1yKDEzNiksYT1cImVuZHNXaXRoXCIsZj1cIlwiW2FdO24obi5QK24uRipyKDEyMikoYSksXCJTdHJpbmdcIix7ZW5kc1dpdGg6ZnVuY3Rpb24odCl7dmFyIGU9byh0aGlzLHQsYSkscj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxuPWkoZS5sZW5ndGgpLHM9dm9pZCAwPT09cj9uOk1hdGgubWluKGkociksbiksdT1TdHJpbmcodCk7cmV0dXJuIGY/Zi5jYWxsKGUsdSxzKTplLnNsaWNlKHMtdS5sZW5ndGgscyk9PT11fX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7cigxNikoXCJmaXhlZFwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJ0dFwiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtyKDE2KShcImZvbnRjb2xvclwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLFwiZm9udFwiLFwiY29sb3JcIixlKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwiZm9udHNpemVcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQodGhpcyxcImZvbnRcIixcInNpemVcIixlKX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDQ3KSxvPVN0cmluZy5mcm9tQ2hhckNvZGUsYT1TdHJpbmcuZnJvbUNvZGVQb2ludDtuKG4uUytuLkYqKCEhYSYmMSE9YS5sZW5ndGgpLFwiU3RyaW5nXCIse2Zyb21Db2RlUG9pbnQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9W10sbj1hcmd1bWVudHMubGVuZ3RoLGE9MDtuPmE7KXtpZihlPSthcmd1bWVudHNbYSsrXSxpKGUsMTExNDExMSkhPT1lKXRocm93IFJhbmdlRXJyb3IoZStcIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50XCIpO3IucHVzaChlPDY1NTM2P28oZSk6bygoKGUtPTY1NTM2KT4+MTApKzU1Mjk2LGUlMTAyNCs1NjMyMCkpfXJldHVybiByLmpvaW4oXCJcIil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxMzYpLG89XCJpbmNsdWRlc1wiO24obi5QK24uRipyKDEyMikobyksXCJTdHJpbmdcIix7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuISF+aSh0aGlzLHQsbykuaW5kZXhPZih0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwiaXRhbGljc1wiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJpXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMTM1KSghMCk7cigxMjgpKFN0cmluZyxcIlN0cmluZ1wiLGZ1bmN0aW9uKHQpe3RoaXMuX3Q9U3RyaW5nKHQpLHRoaXMuX2k9MH0sZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuX3Qscj10aGlzLl9pO3JldHVybiByPj1lLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PW4oZSxyKSx0aGlzLl9pKz10Lmxlbmd0aCx7dmFsdWU6dCxkb25lOiExfSl9KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwibGlua1wiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLFwiYVwiLFwiaHJlZlwiLGUpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTcpLG89cigxMCk7bihuLlMsXCJTdHJpbmdcIix7cmF3OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1pKHQucmF3KSxyPW8oZS5sZW5ndGgpLG49YXJndW1lbnRzLmxlbmd0aCxhPVtdLGY9MDtyPmY7KWEucHVzaChTdHJpbmcoZVtmKytdKSksZjxuJiZhLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tmXSkpO3JldHVybiBhLmpvaW4oXCJcIil9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5QLFwiU3RyaW5nXCIse3JlcGVhdDpyKDEzNyl9KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwic21hbGxcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLFwic21hbGxcIixcIlwiLFwiXCIpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTApLG89cigxMzYpLGE9XCJzdGFydHNXaXRoXCIsZj1cIlwiW2FdO24obi5QK24uRipyKDEyMikoYSksXCJTdHJpbmdcIix7c3RhcnRzV2l0aDpmdW5jdGlvbih0KXt2YXIgZT1vKHRoaXMsdCxhKSxyPWkoTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsZS5sZW5ndGgpKSxuPVN0cmluZyh0KTtyZXR1cm4gZj9mLmNhbGwoZSxuLHIpOmUuc2xpY2UocixyK24ubGVuZ3RoKT09PW59fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtyKDE2KShcInN0cmlrZVwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJzdHJpa2VcIixcIlwiLFwiXCIpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7cigxNikoXCJzdWJcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLFwic3ViXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3IoMTYpKFwic3VwXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxcInN1cFwiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtyKDU4KShcInRyaW1cIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLDMpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig0KSxpPXIoMTIpLG89cig4KSxhPXIoMCksZj1yKDE1KSxzPXIoMzYpLktFWSx1PXIoNSksaD1yKDg3KSxjPXIoNTcpLGQ9cig0OCksbD1yKDcpLHA9cigxODkpLGI9cigxNDEpLHY9cigyODYpLHk9cigyODUpLG09cigxMjYpLGc9cigzKSx3PXIoMTcpLF89cigyOSksTT1yKDM3KSxTPXIoNDIpLEU9cigxODEpLEE9cigyMCksaz1yKDkpLHg9cig0NCksST1BLmYsQj1rLmYsTz1FLmYsUj1uLlN5bWJvbCxQPW4uSlNPTixUPVAmJlAuc3RyaW5naWZ5LGo9XCJwcm90b3R5cGVcIixDPWwoXCJfaGlkZGVuXCIpLE49bChcInRvUHJpbWl0aXZlXCIpLEw9e30ucHJvcGVydHlJc0VudW1lcmFibGUsVT1oKFwic3ltYm9sLXJlZ2lzdHJ5XCIpLHo9aChcInN5bWJvbHNcIiksRD1oKFwib3Atc3ltYm9sc1wiKSxxPU9iamVjdFtqXSxGPVwiZnVuY3Rpb25cIj09dHlwZW9mIFIsSz1uLlFPYmplY3QsRz0hS3x8IUtbal18fCFLW2pdLmZpbmRDaGlsZCxWPW8mJnUoZnVuY3Rpb24oKXtyZXR1cm4gNyE9UyhCKHt9LFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLFwiYVwiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKHQsZSxyKXt2YXIgbj1JKHEsZSk7biYmZGVsZXRlIHFbZV0sQih0LGUsciksbiYmdCE9PXEmJkIocSxlLG4pfTpCLEg9ZnVuY3Rpb24odCl7dmFyIGU9elt0XT1TKFJbal0pO3JldHVybiBlLl9rPXQsZX0sWD1GJiZcInN5bWJvbFwiPT10eXBlb2YgUi5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBSfSxZPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD09PXEmJlkoRCxlLHIpLGcodCksZT1fKGUsITApLGcociksaSh6LGUpPyhyLmVudW1lcmFibGU/KGkodCxDKSYmdFtDXVtlXSYmKHRbQ11bZV09ITEpLHI9UyhyLHtlbnVtZXJhYmxlOk0oMCwhMSl9KSk6KGkodCxDKXx8Qih0LEMsTSgxLHt9KSksdFtDXVtlXT0hMCksVih0LGUscikpOkIodCxlLHIpfSxXPWZ1bmN0aW9uKHQsZSl7Zyh0KTtmb3IodmFyIHIsbj15KGU9dyhlKSksaT0wLG89bi5sZW5ndGg7bz5pOylZKHQscj1uW2krK10sZVtyXSk7cmV0dXJuIHR9LFo9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT9TKHQpOlcoUyh0KSxlKX0sSj1mdW5jdGlvbih0KXt2YXIgZT1MLmNhbGwodGhpcyx0PV8odCwhMCkpO3JldHVybiEodGhpcz09PXEmJmkoeix0KSYmIWkoRCx0KSkmJighKGV8fCFpKHRoaXMsdCl8fCFpKHosdCl8fGkodGhpcyxDKSYmdGhpc1tDXVt0XSl8fGUpfSwkPWZ1bmN0aW9uKHQsZSl7aWYodD13KHQpLGU9XyhlLCEwKSx0IT09cXx8IWkoeixlKXx8aShELGUpKXt2YXIgcj1JKHQsZSk7cmV0dXJuIXJ8fCFpKHosZSl8fGkodCxDKSYmdFtDXVtlXXx8KHIuZW51bWVyYWJsZT0hMCkscn19LFE9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9Tyh3KHQpKSxuPVtdLG89MDtyLmxlbmd0aD5vOylpKHosZT1yW28rK10pfHxlPT1DfHxlPT1zfHxuLnB1c2goZSk7cmV0dXJuIG59LHR0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPXQ9PT1xLG49TyhyP0Q6dyh0KSksbz1bXSxhPTA7bi5sZW5ndGg+YTspIWkoeixlPW5bYSsrXSl8fHImJiFpKHEsZSl8fG8ucHVzaCh6W2VdKTtyZXR1cm4gb307Rnx8KFI9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgUil0aHJvdyBUeXBlRXJyb3IoXCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhXCIpO3ZhciB0PWQoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApLGU9ZnVuY3Rpb24ocil7dGhpcz09PXEmJmUuY2FsbChELHIpLGkodGhpcyxDKSYmaSh0aGlzW0NdLHQpJiYodGhpc1tDXVt0XT0hMSksVih0aGlzLHQsTSgxLHIpKX07cmV0dXJuIG8mJkcmJlYocSx0LHtjb25maWd1cmFibGU6ITAsc2V0OmV9KSxIKHQpfSxmKFJbal0sXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2t9KSxBLmY9JCxrLmY9WSxyKDQzKS5mPUUuZj1RLHIoNjYpLmY9SixyKDg2KS5mPXR0LG8mJiFyKDQxKSYmZihxLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixKLCEwKSxwLmY9ZnVuY3Rpb24odCl7cmV0dXJuIEgobCh0KSl9KSxhKGEuRythLlcrYS5GKiFGLHtTeW1ib2w6Un0pO2Zvcih2YXIgZXQ9XCJoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlc1wiLnNwbGl0KFwiLFwiKSxydD0wO2V0Lmxlbmd0aD5ydDspbChldFtydCsrXSk7Zm9yKHZhciBldD14KGwuc3RvcmUpLHJ0PTA7ZXQubGVuZ3RoPnJ0OyliKGV0W3J0KytdKTthKGEuUythLkYqIUYsXCJTeW1ib2xcIix7Zm9yOmZ1bmN0aW9uKHQpe3JldHVybiBpKFUsdCs9XCJcIik/VVt0XTpVW3RdPVIodCl9LGtleUZvcjpmdW5jdGlvbih0KXtpZihYKHQpKXJldHVybiB2KFUsdCk7dGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgc3ltYm9sIVwiKX0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7Rz0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Rz0hMX19KSxhKGEuUythLkYqIUYsXCJPYmplY3RcIix7Y3JlYXRlOlosZGVmaW5lUHJvcGVydHk6WSxkZWZpbmVQcm9wZXJ0aWVzOlcsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiQsZ2V0T3duUHJvcGVydHlOYW1lczpRLGdldE93blByb3BlcnR5U3ltYm9sczp0dH0pLFAmJmEoYS5TK2EuRiooIUZ8fHUoZnVuY3Rpb24oKXt2YXIgdD1SKCk7cmV0dXJuXCJbbnVsbF1cIiE9VChbdF0pfHxcInt9XCIhPVQoe2E6dH0pfHxcInt9XCIhPVQoT2JqZWN0KHQpKX0pKSxcIkpTT05cIix7c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQmJiFYKHQpKXtmb3IodmFyIGUscixuPVt0XSxpPTE7YXJndW1lbnRzLmxlbmd0aD5pOyluLnB1c2goYXJndW1lbnRzW2krK10pO3JldHVybiBlPW5bMV0sXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHI9ZSksIXImJm0oZSl8fChlPWZ1bmN0aW9uKHQsZSl7aWYociYmKGU9ci5jYWxsKHRoaXMsdCxlKSksIVgoZSkpcmV0dXJuIGV9KSxuWzFdPWUsVC5hcHBseShQLG4pfX19KSxSW2pdW05dfHxyKDE0KShSW2pdLE4sUltqXS52YWx1ZU9mKSxjKFIsXCJTeW1ib2xcIiksYyhNYXRoLFwiTWF0aFwiLCEwKSxjKG4uSlNPTixcIkpTT05cIiwhMCl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cig4OCksbz1yKDE0MCksYT1yKDMpLGY9cig0Nykscz1yKDEwKSx1PXIoNiksaD1yKDQpLkFycmF5QnVmZmVyLGM9cigxMzQpLGQ9by5BcnJheUJ1ZmZlcixsPW8uRGF0YVZpZXcscD1pLkFCViYmaC5pc1ZpZXcsYj1kLnByb3RvdHlwZS5zbGljZSx2PWkuVklFVyx5PVwiQXJyYXlCdWZmZXJcIjtuKG4uRytuLlcrbi5GKihoIT09ZCkse0FycmF5QnVmZmVyOmR9KSxuKG4uUytuLkYqIWkuQ09OU1RSLHkse2lzVmlldzpmdW5jdGlvbih0KXtyZXR1cm4gcCYmcCh0KXx8dSh0KSYmdiBpbiB0fX0pLG4obi5QK24uVStuLkYqcig1KShmdW5jdGlvbigpe3JldHVybiFuZXcgZCgyKS5zbGljZSgxLHZvaWQgMCkuYnl0ZUxlbmd0aH0pLHkse3NsaWNlOmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwIT09YiYmdm9pZCAwPT09ZSlyZXR1cm4gYi5jYWxsKGEodGhpcyksdCk7Zm9yKHZhciByPWEodGhpcykuYnl0ZUxlbmd0aCxuPWYodCxyKSxpPWYodm9pZCAwPT09ZT9yOmUsciksbz1uZXcoYyh0aGlzLGQpKShzKGktbikpLHU9bmV3IGwodGhpcyksaD1uZXcgbChvKSxwPTA7bjxpOyloLnNldFVpbnQ4KHArKyx1LmdldFVpbnQ4KG4rKykpO3JldHVybiBvfX0pLHIoNDYpKHkpfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uRytuLlcrbi5GKiFyKDg4KS5BQlYse0RhdGFWaWV3OnIoMTQwKS5EYXRhVmlld30pfSxmdW5jdGlvbih0LGUscil7cigzNSkoXCJGbG9hdDMyXCIsNCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KHRoaXMsZSxyLG4pfX0pfSxmdW5jdGlvbih0LGUscil7cigzNSkoXCJGbG9hdDY0XCIsOCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KHRoaXMsZSxyLG4pfX0pfSxmdW5jdGlvbih0LGUscil7cigzNSkoXCJJbnQxNlwiLDIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdCh0aGlzLGUscixuKX19KX0sZnVuY3Rpb24odCxlLHIpe3IoMzUpKFwiSW50MzJcIiw0LGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQodGhpcyxlLHIsbil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtyKDM1KShcIkludDhcIiwxLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQodGhpcyxlLHIsbil9fSl9LGZ1bmN0aW9uKHQsZSxyKXtyKDM1KShcIlVpbnQxNlwiLDIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdCh0aGlzLGUscixuKX19KX0sZnVuY3Rpb24odCxlLHIpe3IoMzUpKFwiVWludDMyXCIsNCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KHRoaXMsZSxyLG4pfX0pfSxmdW5jdGlvbih0LGUscil7cigzNSkoXCJVaW50OFwiLDEsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdCh0aGlzLGUscixuKX19KX0sZnVuY3Rpb24odCxlLHIpe3IoMzUpKFwiVWludDhcIiwxLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIHQodGhpcyxlLHIsbil9fSwhMCl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE3Myk7cig3OSkoXCJXZWFrU2V0XCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBuLmRlZih0aGlzLHQsITApfX0sbiwhMSwhMCl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cig3OCkoITApO24obi5QLFwiQXJyYXlcIix7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxyKDU0KShcImluY2x1ZGVzXCIpfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTMxKSgpLG89cig0KS5wcm9jZXNzLGE9XCJwcm9jZXNzXCI9PXIoMjMpKG8pO24obi5HLHthc2FwOmZ1bmN0aW9uKHQpe3ZhciBlPWEmJm8uZG9tYWluO2koZT9lLmJpbmQodCk6dCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigyMyk7bihuLlMsXCJFcnJvclwiLHtpc0Vycm9yOmZ1bmN0aW9uKHQpe3JldHVyblwiRXJyb3JcIj09PWkodCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5QK24uUixcIk1hcFwiLHt0b0pTT046cigxNzIpKFwiTWFwXCIpfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiTWF0aFwiLHtpYWRkaDpmdW5jdGlvbih0LGUscixuKXt2YXIgaT10Pj4+MCxvPWU+Pj4wLGE9cj4+PjA7cmV0dXJuIG8rKG4+Pj4wKSsoKGkmYXwoaXxhKSZ+KGkrYT4+PjApKT4+PjMxKXwwfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUyxcIk1hdGhcIix7aW11bGg6ZnVuY3Rpb24odCxlKXt2YXIgcj02NTUzNSxuPSt0LGk9K2Usbz1uJnIsYT1pJnIsZj1uPj4xNixzPWk+PjE2LHU9KGYqYT4+PjApKyhvKmE+Pj4xNik7cmV0dXJuIGYqcysodT4+MTYpKygobypzPj4+MCkrKHUmcik+PjE2KX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMsXCJNYXRoXCIse2lzdWJoOmZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXQ+Pj4wLG89ZT4+PjAsYT1yPj4+MDtyZXR1cm4gby0obj4+PjApLSgofmkmYXx+KGleYSkmaS1hPj4+MCk+Pj4zMSl8MH19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCk7bihuLlMsXCJNYXRoXCIse3VtdWxoOmZ1bmN0aW9uKHQsZSl7dmFyIHI9NjU1MzUsbj0rdCxpPStlLG89biZyLGE9aSZyLGY9bj4+PjE2LHM9aT4+PjE2LHU9KGYqYT4+PjApKyhvKmE+Pj4xNik7cmV0dXJuIGYqcysodT4+PjE2KSsoKG8qcz4+PjApKyh1JnIpPj4+MTYpfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTEpLG89cigxMyksYT1yKDkpO3IoOCkmJm4obi5QK3IoODUpLFwiT2JqZWN0XCIse19fZGVmaW5lR2V0dGVyX186ZnVuY3Rpb24odCxlKXthLmYoaSh0aGlzKSx0LHtnZXQ6byhlKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTEpLG89cigxMyksYT1yKDkpO3IoOCkmJm4obi5QK3IoODUpLFwiT2JqZWN0XCIse19fZGVmaW5lU2V0dGVyX186ZnVuY3Rpb24odCxlKXthLmYoaSh0aGlzKSx0LHtzZXQ6byhlKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTgzKSghMCk7bihuLlMsXCJPYmplY3RcIix7ZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gaSh0KX19KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMCksaT1yKDE4NCksbz1yKDE3KSxhPXIoMjApLGY9cigxMTkpO24obi5TLFwiT2JqZWN0XCIse2dldE93blByb3BlcnR5RGVzY3JpcHRvcnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9byh0KSxuPWEuZixzPWkociksdT17fSxoPTA7cy5sZW5ndGg+aDspZih1LGU9c1toKytdLG4ocixlKSk7cmV0dXJuIHV9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxMSksbz1yKDI5KSxhPXIoMjEpLGY9cigyMCkuZjtyKDgpJiZuKG4uUCtyKDg1KSxcIk9iamVjdFwiLHtfX2xvb2t1cEdldHRlcl9fOmZ1bmN0aW9uKHQpe3ZhciBlLHI9aSh0aGlzKSxuPW8odCwhMCk7ZG8gaWYoZT1mKHIsbikpcmV0dXJuIGUuZ2V0O3doaWxlKHI9YShyKSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxMSksbz1yKDI5KSxhPXIoMjEpLGY9cigyMCkuZjtyKDgpJiZuKG4uUCtyKDg1KSxcIk9iamVjdFwiLHtfX2xvb2t1cFNldHRlcl9fOmZ1bmN0aW9uKHQpe3ZhciBlLHI9aSh0aGlzKSxuPW8odCwhMCk7ZG8gaWYoZT1mKHIsbikpcmV0dXJuIGUuc2V0O3doaWxlKHI9YShyKSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApLGk9cigxODMpKCExKTtuKG4uUyxcIk9iamVjdFwiLHt2YWx1ZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cig0KSxvPXIoMzIpLGE9cigxMzEpKCksZj1yKDcpKFwib2JzZXJ2YWJsZVwiKSxzPXIoMTMpLHU9cigzKSxoPXIoNDApLGM9cig0NSksZD1yKDE0KSxsPXIoNTUpLHA9bC5SRVRVUk4sYj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA6cyh0KX0sdj1mdW5jdGlvbih0KXt2YXIgZT10Ll9jO2UmJih0Ll9jPXZvaWQgMCxlKCkpfSx5PWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10Ll9vfSxtPWZ1bmN0aW9uKHQpe3kodCl8fCh0Ll9vPXZvaWQgMCx2KHQpKX0sZz1mdW5jdGlvbih0LGUpe3UodCksdGhpcy5fYz12b2lkIDAsdGhpcy5fbz10LHQ9bmV3IHcodGhpcyk7dHJ5e3ZhciByPWUodCksbj1yO251bGwhPXImJihcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnVuc3Vic2NyaWJlP3I9ZnVuY3Rpb24oKXtuLnVuc3Vic2NyaWJlKCl9OnMociksdGhpcy5fYz1yKX1jYXRjaChlKXtyZXR1cm4gdm9pZCB0LmVycm9yKGUpfXkodGhpcykmJnYodGhpcyl9O2cucHJvdG90eXBlPWMoe30se3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7bSh0aGlzKX19KTt2YXIgdz1mdW5jdGlvbih0KXt0aGlzLl9zPXR9O3cucHJvdG90eXBlPWMoe30se25leHQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcztpZigheShlKSl7dmFyIHI9ZS5fbzt0cnl7dmFyIG49YihyLm5leHQpO2lmKG4pcmV0dXJuIG4uY2FsbChyLHQpfWNhdGNoKHQpe3RyeXttKGUpfWZpbmFsbHl7dGhyb3cgdH19fX0sZXJyb3I6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcztpZih5KGUpKXRocm93IHQ7dmFyIHI9ZS5fbztlLl9vPXZvaWQgMDt0cnl7dmFyIG49YihyLmVycm9yKTtpZighbil0aHJvdyB0O3Q9bi5jYWxsKHIsdCl9Y2F0Y2godCl7dHJ5e3YoZSl9ZmluYWxseXt0aHJvdyB0fX1yZXR1cm4gdihlKSx0fSxjb21wbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zO2lmKCF5KGUpKXt2YXIgcj1lLl9vO2UuX289dm9pZCAwO3RyeXt2YXIgbj1iKHIuY29tcGxldGUpO3Q9bj9uLmNhbGwocix0KTp2b2lkIDB9Y2F0Y2godCl7dHJ5e3YoZSl9ZmluYWxseXt0aHJvdyB0fX1yZXR1cm4gdihlKSx0fX19KTt2YXIgXz1mdW5jdGlvbih0KXtoKHRoaXMsXyxcIk9ic2VydmFibGVcIixcIl9mXCIpLl9mPXModCl9O2MoXy5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGcodCx0aGlzLl9mKX0sZm9yRWFjaDpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcoby5Qcm9taXNlfHxpLlByb21pc2UpKGZ1bmN0aW9uKHIsbil7cyh0KTt2YXIgaT1lLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihlKXt0cnl7cmV0dXJuIHQoZSl9Y2F0Y2godCl7bih0KSxpLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjpuLGNvbXBsZXRlOnJ9KX0pfX0pLGMoXyx7ZnJvbTpmdW5jdGlvbih0KXt2YXIgZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzP3RoaXM6XyxyPWIodSh0KVtmXSk7aWYocil7dmFyIG49dShyLmNhbGwodCkpO3JldHVybiBuLmNvbnN0cnVjdG9yPT09ZT9uOm5ldyBlKGZ1bmN0aW9uKHQpe3JldHVybiBuLnN1YnNjcmliZSh0KX0pfXJldHVybiBuZXcgZShmdW5jdGlvbihlKXt2YXIgcj0hMTtyZXR1cm4gYShmdW5jdGlvbigpe2lmKCFyKXt0cnl7aWYobCh0LCExLGZ1bmN0aW9uKHQpe2lmKGUubmV4dCh0KSxyKXJldHVybiBwfSk9PT1wKXJldHVybn1jYXRjaCh0KXtpZihyKXRocm93IHQ7cmV0dXJuIHZvaWQgZS5lcnJvcih0KX1lLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfSxvZjpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YXJndW1lbnRzLmxlbmd0aCxyPUFycmF5KGUpO3Q8ZTspclt0XT1hcmd1bWVudHNbdCsrXTtyZXR1cm4gbmV3KFwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXM/dGhpczpfKShmdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gYShmdW5jdGlvbigpe2lmKCFlKXtmb3IodmFyIG49MDtuPHIubGVuZ3RoOysrbilpZih0Lm5leHQocltuXSksZSlyZXR1cm47dC5jb21wbGV0ZSgpfX0pLGZ1bmN0aW9uKCl7ZT0hMH19KX19KSxkKF8ucHJvdG90eXBlLGYsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG4obi5HLHtPYnNlcnZhYmxlOl99KSxyKDQ2KShcIk9ic2VydmFibGVcIil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDM0KSxpPXIoMyksbz1uLmtleSxhPW4uc2V0O24uZXhwKHtkZWZpbmVNZXRhZGF0YTpmdW5jdGlvbih0LGUscixuKXthKHQsZSxpKHIpLG8obikpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzNCksaT1yKDMpLG89bi5rZXksYT1uLm1hcCxmPW4uc3RvcmU7bi5leHAoe2RlbGV0ZU1ldGFkYXRhOmZ1bmN0aW9uKHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpvKGFyZ3VtZW50c1syXSksbj1hKGkoZSksciwhMSk7aWYodm9pZCAwPT09bnx8IW4uZGVsZXRlKHQpKXJldHVybiExO2lmKG4uc2l6ZSlyZXR1cm4hMDt2YXIgcz1mLmdldChlKTtyZXR1cm4gcy5kZWxldGUociksISFzLnNpemV8fGYuZGVsZXRlKGUpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxOTIpLGk9cigxNjgpLG89cigzNCksYT1yKDMpLGY9cigyMSkscz1vLmtleXMsdT1vLmtleSxoPWZ1bmN0aW9uKHQsZSl7dmFyIHI9cyh0LGUpLG89Zih0KTtpZihudWxsPT09bylyZXR1cm4gcjt2YXIgYT1oKG8sZSk7cmV0dXJuIGEubGVuZ3RoP3IubGVuZ3RoP2kobmV3IG4oci5jb25jYXQoYSkpKTphOnJ9O28uZXhwKHtnZXRNZXRhZGF0YUtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGgoYSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOnUoYXJndW1lbnRzWzFdKSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDM0KSxpPXIoMyksbz1yKDIxKSxhPW4uaGFzLGY9bi5nZXQscz1uLmtleSx1PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1hKHQsZSxyKTtpZihuKXJldHVybiBmKHQsZSxyKTt2YXIgaT1vKGUpO3JldHVybiBudWxsIT09aT91KHQsaSxyKTp2b2lkIDB9O24uZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiB1KHQsaShlKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOnMoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDM0KSxpPXIoMyksbz1uLmtleXMsYT1uLmtleTtuLmV4cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiBvKGkodCksYXJndW1lbnRzLmxlbmd0aDwyP3ZvaWQgMDphKGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzNCksaT1yKDMpLG89bi5nZXQsYT1uLmtleTtuLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbyh0LGkoZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzNCksaT1yKDMpLG89cigyMSksYT1uLmhhcyxmPW4ua2V5LHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWEodCxlLHIpO2lmKG4pcmV0dXJuITA7dmFyIGk9byhlKTtyZXR1cm4gbnVsbCE9PWkmJnModCxpLHIpfTtuLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcyh0LGkoZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDpmKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzNCksaT1yKDMpLG89bi5oYXMsYT1uLmtleTtuLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbyh0LGkoZSksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigzNCksaT1yKDMpLG89cigxMyksYT1uLmtleSxmPW4uc2V0O24uZXhwKHttZXRhZGF0YTpmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2YodCxlLCh2b2lkIDAhPT1uP2k6bykociksYShuKSl9fX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKTtuKG4uUCtuLlIsXCJTZXRcIix7dG9KU09OOnIoMTcyKShcIlNldFwiKX0pfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigwKSxpPXIoMTM1KSghMCk7bihuLlAsXCJTdHJpbmdcIix7YXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0KX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDI0KSxvPXIoMTApLGE9cig4MyksZj1yKDgxKSxzPVJlZ0V4cC5wcm90b3R5cGUsdT1mdW5jdGlvbih0LGUpe3RoaXMuX3I9dCx0aGlzLl9zPWV9O3IoMTI3KSh1LFwiUmVnRXhwIFN0cmluZ1wiLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fci5leGVjKHRoaXMuX3MpO3JldHVybnt2YWx1ZTp0LGRvbmU6bnVsbD09PXR9fSksbihuLlAsXCJTdHJpbmdcIix7bWF0Y2hBbGw6ZnVuY3Rpb24odCl7aWYoaSh0aGlzKSwhYSh0KSl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSByZWdleHAhXCIpO3ZhciBlPVN0cmluZyh0aGlzKSxyPVwiZmxhZ3NcImluIHM/U3RyaW5nKHQuZmxhZ3MpOmYuY2FsbCh0KSxuPW5ldyBSZWdFeHAodC5zb3VyY2UsfnIuaW5kZXhPZihcImdcIik/cjpcImdcIityKTtyZXR1cm4gbi5sYXN0SW5kZXg9byh0Lmxhc3RJbmRleCksbmV3IHUobixlKX19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO3ZhciBuPXIoMCksaT1yKDE4OCk7bihuLlAsXCJTdHJpbmdcIix7cGFkRW5kOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMSl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDApLGk9cigxODgpO24obi5QLFwiU3RyaW5nXCIse3BhZFN0YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMCl9fSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtyKDU4KShcInRyaW1MZWZ0XCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcywxKX19LFwidHJpbVN0YXJ0XCIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7cig1OCkoXCJ0cmltUmlnaHRcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLDIpfX0sXCJ0cmltRW5kXCIpfSxmdW5jdGlvbih0LGUscil7cigxNDEpKFwiYXN5bmNJdGVyYXRvclwiKX0sZnVuY3Rpb24odCxlLHIpe3IoMTQxKShcIm9ic2VydmFibGVcIil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDApO24obi5TLFwiU3lzdGVtXCIse2dsb2JhbDpyKDQpfSl9LGZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49cigxNDMpLGk9cigxNSksbz1yKDQpLGE9cigxNCksZj1yKDU2KSxzPXIoNyksdT1zKFwiaXRlcmF0b3JcIiksaD1zKFwidG9TdHJpbmdUYWdcIiksYz1mLkFycmF5LGQ9W1wiTm9kZUxpc3RcIixcIkRPTVRva2VuTGlzdFwiLFwiTWVkaWFMaXN0XCIsXCJTdHlsZVNoZWV0TGlzdFwiLFwiQ1NTUnVsZUxpc3RcIl0sbD0wO2w8NTtsKyspe3ZhciBwLGI9ZFtsXSx2PW9bYl0seT12JiZ2LnByb3RvdHlwZTtpZih5KXt5W3VdfHxhKHksdSxjKSx5W2hdfHxhKHksaCxiKSxmW2JdPWM7Zm9yKHAgaW4gbil5W3BdfHxpKHkscCxuW3BdLCEwKX19fSxmdW5jdGlvbih0LGUscil7dmFyIG49cigwKSxpPXIoMTM5KTtuKG4uRytuLkIse3NldEltbWVkaWF0ZTppLnNldCxjbGVhckltbWVkaWF0ZTppLmNsZWFyfSl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQpLGk9cigwKSxvPXIoODIpLGE9cigyODcpLGY9bi5uYXZpZ2F0b3Iscz0hIWYmJi9NU0lFIC5cXC4vLnRlc3QoZi51c2VyQWdlbnQpLHU9ZnVuY3Rpb24odCl7cmV0dXJuIHM/ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdChvKGEsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMiksXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOkZ1bmN0aW9uKGUpKSxyKX06dH07aShpLkcraS5CK2kuRipzLHtzZXRUaW1lb3V0OnUobi5zZXRUaW1lb3V0KSxzZXRJbnRlcnZhbDp1KG4uc2V0SW50ZXJ2YWwpfSl9LGZ1bmN0aW9uKHQsZSxyKXtyKDQxMCkscigzNDkpLHIoMzUxKSxyKDM1MCkscigzNTMpLHIoMzU1KSxyKDM2MCkscigzNTQpLHIoMzUyKSxyKDM2MikscigzNjEpLHIoMzU3KSxyKDM1OCkscigzNTYpLHIoMzQ4KSxyKDM1OSkscigzNjMpLHIoMzY0KSxyKDMxNikscigzMTgpLHIoMzE3KSxyKDM2NikscigzNjUpLHIoMzM2KSxyKDM0NikscigzNDcpLHIoMzM3KSxyKDMzOCkscigzMzkpLHIoMzQwKSxyKDM0MSkscigzNDIpLHIoMzQzKSxyKDM0NCkscigzNDUpLHIoMzE5KSxyKDMyMCkscigzMjEpLHIoMzIyKSxyKDMyMykscigzMjQpLHIoMzI1KSxyKDMyNikscigzMjcpLHIoMzI4KSxyKDMyOSkscigzMzApLHIoMzMxKSxyKDMzMikscigzMzMpLHIoMzM0KSxyKDMzNSkscigzOTcpLHIoNDAyKSxyKDQwOSkscig0MDApLHIoMzkyKSxyKDM5MykscigzOTgpLHIoNDAzKSxyKDQwNSkscigzODgpLHIoMzg5KSxyKDM5MCkscigzOTEpLHIoMzk0KSxyKDM5NSkscigzOTYpLHIoMzk5KSxyKDQwMSkscig0MDQpLHIoNDA2KSxyKDQwNykscig0MDgpLHIoMzExKSxyKDMxMykscigzMTIpLHIoMzE1KSxyKDMxNCkscigzMDApLHIoMjk4KSxyKDMwNCkscigzMDEpLHIoMzA3KSxyKDMwOSkscigyOTcpLHIoMzAzKSxyKDI5NCkscigzMDgpLHIoMjkyKSxyKDMwNikscigzMDUpLHIoMjk5KSxyKDMwMikscigyOTEpLHIoMjkzKSxyKDI5NikscigyOTUpLHIoMzEwKSxyKDE0MykscigzODIpLHIoMzg3KSxyKDE5MSkscigzODMpLHIoMzg0KSxyKDM4NSkscigzODYpLHIoMzY3KSxyKDE5MCkscigxOTIpLHIoMTkzKSxyKDQyMikscig0MTEpLHIoNDEyKSxyKDQxNykscig0MjApLHIoNDIxKSxyKDQxNSkscig0MTgpLHIoNDE2KSxyKDQxOSkscig0MTMpLHIoNDE0KSxyKDM2OCkscigzNjkpLHIoMzcwKSxyKDM3MSkscigzNzIpLHIoMzc1KSxyKDM3MykscigzNzQpLHIoMzc2KSxyKDM3NykscigzNzgpLHIoMzc5KSxyKDM4MSkscigzODApLHIoNDIzKSxyKDQ0OSkscig0NTIpLHIoNDUxKSxyKDQ1Mykscig0NTQpLHIoNDUwKSxyKDQ1NSkscig0NTYpLHIoNDM0KSxyKDQzNykscig0MzMpLHIoNDMxKSxyKDQzMikscig0MzUpLHIoNDM2KSxyKDQyNikscig0NDgpLHIoNDU3KSxyKDQyNSkscig0MjcpLHIoNDI5KSxyKDQyOCkscig0MzApLHIoNDM5KSxyKDQ0MCkscig0NDIpLHIoNDQxKSxyKDQ0NCkscig0NDMpLHIoNDQ1KSxyKDQ0Nikscig0NDcpLHIoNDI0KSxyKDQzOCkscig0NjApLHIoNDU5KSxyKDQ1OCksdC5leHBvcnRzPXIoMzIpfSxmdW5jdGlvbih0LGUscil7dC5leHBvcnRzPXIoNDYzKShcImVkMjU1MTlcIil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24obixpKXtmdW5jdGlvbiBvKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0P3Q9e2JpbmRpbmdzOnR9OnR8fCh0PXt9KSx0Ll9fcHJvdG9fXz1jLHQubW9kdWxlX3Jvb3R8fCh0Lm1vZHVsZV9yb290PWUuZ2V0Um9vdChlLmdldEZpbGVOYW1lKCkpKSxcIi5ub2RlXCIhPWYuZXh0bmFtZSh0LmJpbmRpbmdzKSYmKHQuYmluZGluZ3MrPVwiLm5vZGVcIik7Zm9yKHZhciByLG4saSxvPVtdLGE9MCx1PXQudHJ5Lmxlbmd0aDthPHU7YSsrKXtyPXMuYXBwbHkobnVsbCx0LnRyeVthXS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV18fGV9KSksby5wdXNoKHIpO3RyeXtyZXR1cm4gbj10LnBhdGg/IWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEVycm9yKCdDYW5ub3QgZmluZCBtb2R1bGUgXCIuXCInKTt0aHJvdyB0LmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsdH0oKTohZnVuY3Rpb24oKXt2YXIgdD1uZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIG1vZHVsZSBcIi5cIicpO3Rocm93IHQuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIix0fSgpLHQucGF0aHx8KG4ucGF0aD1yKSxufWNhdGNoKHQpe2lmKCEvbm90IGZpbmQvaS50ZXN0KHQubWVzc2FnZSkpdGhyb3cgdH19dGhyb3cgaT1uZXcgRXJyb3IoXCJDb3VsZCBub3QgbG9jYXRlIHRoZSBiaW5kaW5ncyBmaWxlLiBUcmllZDpcXG5cIitvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdC5hcnJvdytlfSkuam9pbihcIlxcblwiKSksaS50cmllcz1vLGl9dmFyIGE9cig0ODkpLGY9cig1OTQpLHM9Zi5qb2luLHU9Zi5kaXJuYW1lLGg9YS5leGlzdHNTeW5jfHxmLmV4aXN0c1N5bmMsYz17YXJyb3c6bi5lbnYuTk9ERV9CSU5ESU5HU19BUlJPV3x8XCIg4oaSIFwiLGNvbXBpbGVkOm4uZW52Lk5PREVfQklORElOR1NfQ09NUElMRURfRElSfHxcImNvbXBpbGVkXCIscGxhdGZvcm06bi5wbGF0Zm9ybSxhcmNoOm4uYXJjaCx2ZXJzaW9uOm4udmVyc2lvbnMubm9kZSxiaW5kaW5nczpcImJpbmRpbmdzLm5vZGVcIix0cnk6W1tcIm1vZHVsZV9yb290XCIsXCJidWlsZFwiLFwiYmluZGluZ3NcIl0sW1wibW9kdWxlX3Jvb3RcIixcImJ1aWxkXCIsXCJEZWJ1Z1wiLFwiYmluZGluZ3NcIl0sW1wibW9kdWxlX3Jvb3RcIixcImJ1aWxkXCIsXCJSZWxlYXNlXCIsXCJiaW5kaW5nc1wiXSxbXCJtb2R1bGVfcm9vdFwiLFwib3V0XCIsXCJEZWJ1Z1wiLFwiYmluZGluZ3NcIl0sW1wibW9kdWxlX3Jvb3RcIixcIkRlYnVnXCIsXCJiaW5kaW5nc1wiXSxbXCJtb2R1bGVfcm9vdFwiLFwib3V0XCIsXCJSZWxlYXNlXCIsXCJiaW5kaW5nc1wiXSxbXCJtb2R1bGVfcm9vdFwiLFwiUmVsZWFzZVwiLFwiYmluZGluZ3NcIl0sW1wibW9kdWxlX3Jvb3RcIixcImJ1aWxkXCIsXCJkZWZhdWx0XCIsXCJiaW5kaW5nc1wiXSxbXCJtb2R1bGVfcm9vdFwiLFwiY29tcGlsZWRcIixcInZlcnNpb25cIixcInBsYXRmb3JtXCIsXCJhcmNoXCIsXCJiaW5kaW5nc1wiXV19O3QuZXhwb3J0cz1lPW8sZS5nZXRGaWxlTmFtZT1mdW5jdGlvbih0KXt2YXIgZSxyPUVycm9yLnByZXBhcmVTdGFja1RyYWNlLG49RXJyb3Iuc3RhY2tUcmFjZUxpbWl0LG89e307cmV0dXJuIEVycm9yLnN0YWNrVHJhY2VMaW1pdD0xMCxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1mdW5jdGlvbihyLG4pe2Zvcih2YXIgbz0wLGE9bi5sZW5ndGg7bzxhO28rKylpZihlPW5bb10uZ2V0RmlsZU5hbWUoKSxlIT09aSl7aWYoIXQpcmV0dXJuO2lmKGUhPT10KXJldHVybn19LEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKG8pLG8uc3RhY2ssRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9cixFcnJvci5zdGFja1RyYWNlTGltaXQ9bixlfSxlLmdldFJvb3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9dSh0KTs7KXtpZihcIi5cIj09PXImJihyPW4uY3dkKCkpLGgocyhyLFwicGFja2FnZS5qc29uXCIpKXx8aChzKHIsXCJub2RlX21vZHVsZXNcIikpKXJldHVybiByO2lmKGU9PT1yKXRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGZpbmQgbW9kdWxlIHJvb3QgZ2l2ZW4gZmlsZTogXCInK3QrJ1wiLiBEbyB5b3UgaGF2ZSBhIGBwYWNrYWdlLmpzb25gIGZpbGU/ICcpO2U9cixyPXMocixcIi4uXCIpfX19KS5jYWxsKGUscigyNiksXCIvaW5kZXguanNcIil9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtPX1JET05MWTowLE9fV1JPTkxZOjEsT19SRFdSOjIsU19JRk1UOjYxNDQwLFNfSUZSRUc6MzI3NjgsU19JRkRJUjoxNjM4NCxTX0lGQ0hSOjgxOTIsU19JRkJMSzoyNDU3NixTX0lGSUZPOjQwOTYsU19JRkxOSzo0MDk2MCxTX0lGU09DSzo0OTE1MixPX0NSRUFUOjUxMixPX0VYQ0w6MjA0OCxPX05PQ1RUWToxMzEwNzIsT19UUlVOQzoxMDI0LE9fQVBQRU5EOjgsT19ESVJFQ1RPUlk6MTA0ODU3NixPX05PRk9MTE9XOjI1NixPX1NZTkM6MTI4LE9fU1lNTElOSzoyMDk3MTUyLE9fTk9OQkxPQ0s6NCxTX0lSV1hVOjQ0OCxTX0lSVVNSOjI1NixTX0lXVVNSOjEyOCxTX0lYVVNSOjY0LFNfSVJXWEc6NTYsU19JUkdSUDozMixTX0lXR1JQOjE2LFNfSVhHUlA6OCxTX0lSV1hPOjcsU19JUk9USDo0LFNfSVdPVEg6MixTX0lYT1RIOjEsRTJCSUc6NyxFQUNDRVM6MTMsRUFERFJJTlVTRTo0OCxFQUREUk5PVEFWQUlMOjQ5LEVBRk5PU1VQUE9SVDo0NyxFQUdBSU46MzUsRUFMUkVBRFk6MzcsRUJBREY6OSxFQkFETVNHOjk0LEVCVVNZOjE2LEVDQU5DRUxFRDo4OSxFQ0hJTEQ6MTAsRUNPTk5BQk9SVEVEOjUzLEVDT05OUkVGVVNFRDo2MSxFQ09OTlJFU0VUOjU0LEVERUFETEs6MTEsRURFU1RBRERSUkVROjM5LEVET006MzMsRURRVU9UOjY5LEVFWElTVDoxNyxFRkFVTFQ6MTQsRUZCSUc6MjcsRUhPU1RVTlJFQUNIOjY1LEVJRFJNOjkwLEVJTFNFUTo5MixFSU5QUk9HUkVTUzozNixFSU5UUjo0LEVJTlZBTDoyMixFSU86NSxFSVNDT05OOjU2LEVJU0RJUjoyMSxFTE9PUDo2MixFTUZJTEU6MjQsRU1MSU5LOjMxLEVNU0dTSVpFOjQwLEVNVUxUSUhPUDo5NSxFTkFNRVRPT0xPTkc6NjMsRU5FVERPV046NTAsRU5FVFJFU0VUOjUyLEVORVRVTlJFQUNIOjUxLEVORklMRToyMyxFTk9CVUZTOjU1LEVOT0RBVEE6OTYsRU5PREVWOjE5LEVOT0VOVDoyLEVOT0VYRUM6OCxFTk9MQ0s6NzcsRU5PTElOSzo5NyxFTk9NRU06MTIsRU5PTVNHOjkxLEVOT1BST1RPT1BUOjQyLEVOT1NQQzoyOCxFTk9TUjo5OCxFTk9TVFI6OTksRU5PU1lTOjc4LEVOT1RDT05OOjU3LEVOT1RESVI6MjAsRU5PVEVNUFRZOjY2LEVOT1RTT0NLOjM4LEVOT1RTVVA6NDUsRU5PVFRZOjI1LEVOWElPOjYsRU9QTk9UU1VQUDoxMDIsRU9WRVJGTE9XOjg0LEVQRVJNOjEsRVBJUEU6MzIsRVBST1RPOjEwMCxFUFJPVE9OT1NVUFBPUlQ6NDMsRVBST1RPVFlQRTo0MSxFUkFOR0U6MzQsRVJPRlM6MzAsRVNQSVBFOjI5LEVTUkNIOjMsRVNUQUxFOjcwLEVUSU1FOjEwMSxFVElNRURPVVQ6NjAsRVRYVEJTWToyNixFV09VTERCTE9DSzozNSxFWERFVjoxOCxTSUdIVVA6MSxTSUdJTlQ6MixTSUdRVUlUOjMsU0lHSUxMOjQsU0lHVFJBUDo1LFNJR0FCUlQ6NixTSUdJT1Q6NixTSUdCVVM6MTAsU0lHRlBFOjgsU0lHS0lMTDo5LFNJR1VTUjE6MzAsU0lHU0VHVjoxMSxTSUdVU1IyOjMxLFNJR1BJUEU6MTMsU0lHQUxSTToxNCxTSUdURVJNOjE1LFNJR0NITEQ6MjAsU0lHQ09OVDoxOSxTSUdTVE9QOjE3LFNJR1RTVFA6MTgsU0lHVFRJTjoyMSxTSUdUVE9VOjIyLFNJR1VSRzoxNixTSUdYQ1BVOjI0LFNJR1hGU1o6MjUsU0lHVlRBTFJNOjI2LFNJR1BST0Y6MjcsU0lHV0lOQ0g6MjgsU0lHSU86MjMsU0lHU1lTOjEyLFNTTF9PUF9BTEw6MjE0NzQ4NjcxOSxTU0xfT1BfQUxMT1dfVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OOjI2MjE0NCxTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOjQxOTQzMDQsU1NMX09QX0NJU0NPX0FOWUNPTk5FQ1Q6MzI3NjgsU1NMX09QX0NPT0tJRV9FWENIQU5HRTo4MTkyLFNTTF9PUF9DUllQVE9QUk9fVExTRVhUX0JVRzoyMTQ3NDgzNjQ4LFNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFM6MjA0OCxTU0xfT1BfRVBIRU1FUkFMX1JTQTowLFNTTF9PUF9MRUdBQ1lfU0VSVkVSX0NPTk5FQ1Q6NCxTU0xfT1BfTUlDUk9TT0ZUX0JJR19TU0xWM19CVUZGRVI6MzIsU1NMX09QX01JQ1JPU09GVF9TRVNTX0lEX0JVRzoxLFNTTF9PUF9NU0lFX1NTTFYyX1JTQV9QQURESU5HOjAsU1NMX09QX05FVFNDQVBFX0NBX0ROX0JVRzo1MzY4NzA5MTIsU1NMX09QX05FVFNDQVBFX0NIQUxMRU5HRV9CVUc6MixTU0xfT1BfTkVUU0NBUEVfREVNT19DSVBIRVJfQ0hBTkdFX0JVRzoxMDczNzQxODI0LFNTTF9PUF9ORVRTQ0FQRV9SRVVTRV9DSVBIRVJfQ0hBTkdFX0JVRzo4LFNTTF9PUF9OT19DT01QUkVTU0lPTjoxMzEwNzIsU1NMX09QX05PX1FVRVJZX01UVTo0MDk2LFNTTF9PUF9OT19TRVNTSU9OX1JFU1VNUFRJT05fT05fUkVORUdPVElBVElPTjo2NTUzNixTU0xfT1BfTk9fU1NMdjI6MTY3NzcyMTYsU1NMX09QX05PX1NTTHYzOjMzNTU0NDMyLFNTTF9PUF9OT19USUNLRVQ6MTYzODQsU1NMX09QX05PX1RMU3YxOjY3MTA4ODY0LFNTTF9PUF9OT19UTFN2MV8xOjI2ODQzNTQ1NixTU0xfT1BfTk9fVExTdjFfMjoxMzQyMTc3MjgsU1NMX09QX1BLQ1MxX0NIRUNLXzE6MCxTU0xfT1BfUEtDUzFfQ0hFQ0tfMjowLFNTTF9PUF9TSU5HTEVfREhfVVNFOjEwNDg1NzYsU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTo1MjQyODgsU1NMX09QX1NTTEVBWV8wODBfQ0xJRU5UX0RIX0JVRzoxMjgsU1NMX09QX1NTTFJFRjJfUkVVU0VfQ0VSVF9UWVBFX0JVRzowLFNTTF9PUF9UTFNfQkxPQ0tfUEFERElOR19CVUc6NTEyLFNTTF9PUF9UTFNfRDVfQlVHOjI1NixTU0xfT1BfVExTX1JPTExCQUNLX0JVRzo4Mzg4NjA4LEVOR0lORV9NRVRIT0RfRFNBOjIsRU5HSU5FX01FVEhPRF9ESDo0LEVOR0lORV9NRVRIT0RfUkFORDo4LEVOR0lORV9NRVRIT0RfRUNESDoxNixFTkdJTkVfTUVUSE9EX0VDRFNBOjMyLEVOR0lORV9NRVRIT0RfQ0lQSEVSUzo2NCxFTkdJTkVfTUVUSE9EX0RJR0VTVFM6MTI4LEVOR0lORV9NRVRIT0RfU1RPUkU6MjU2LEVOR0lORV9NRVRIT0RfUEtFWV9NRVRIUzo1MTIsRU5HSU5FX01FVEhPRF9QS0VZX0FTTjFfTUVUSFM6MTAyNCxFTkdJTkVfTUVUSE9EX0FMTDo2NTUzNSxFTkdJTkVfTUVUSE9EX05PTkU6MCxESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FOjIsREhfQ0hFQ0tfUF9OT1RfUFJJTUU6MSxESF9VTkFCTEVfVE9fQ0hFQ0tfR0VORVJBVE9SOjQsREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUjo4LE5QTl9FTkFCTEVEOjEsUlNBX1BLQ1MxX1BBRERJTkc6MSxSU0FfU1NMVjIzX1BBRERJTkc6MixSU0FfTk9fUEFERElORzozLFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6NCxSU0FfWDkzMV9QQURESU5HOjUsUlNBX1BLQ1MxX1BTU19QQURESU5HOjYsUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEOjIsUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQ6NCxQT0lOVF9DT05WRVJTSU9OX0hZQlJJRDo2LEZfT0s6MCxSX09LOjQsV19PSzoyLFhfT0s6MSxVVl9VRFBfUkVVU0VBRERSOjR9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17bmFtZTpcImVsbGlwdGljXCIsdmVyc2lvbjpcIjYuMy4yXCIsZGVzY3JpcHRpb246XCJFQyBjcnlwdG9ncmFwaHlcIixtYWluOlwibGliL2VsbGlwdGljLmpzXCIsZmlsZXM6W1wibGliXCJdLHNjcmlwdHM6e2pzY3M6XCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsanNoaW50OlwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLGxpbnQ6XCJucG0gcnVuIGpzY3MgJiYgbnBtIHJ1biBqc2hpbnRcIix1bml0OlwiaXN0YW5idWwgdGVzdCBfbW9jaGEgLS1yZXBvcnRlcj1zcGVjIHRlc3QvaW5kZXguanNcIix0ZXN0OlwibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdW5pdFwiLHZlcnNpb246XCJncnVudCBkaXN0ICYmIGdpdCBhZGQgZGlzdC9cIn0scmVwb3NpdG9yeTp7dHlwZTpcImdpdFwiLHVybDpcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwifSxrZXl3b3JkczpbXCJFQ1wiLFwiRWxsaXB0aWNcIixcImN1cnZlXCIsXCJDcnlwdG9ncmFwaHlcIl0sYXV0aG9yOntuYW1lOlwiRmVkb3IgSW5kdXRueVwiLGVtYWlsOlwiZmVkb3JAaW5kdXRueS5jb21cIn0sbGljZW5zZTpcIk1JVFwiLGJ1Z3M6e3VybDpcImh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljL2lzc3Vlc1wifSxob21lcGFnZTpcImh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljXCIsZGV2RGVwZW5kZW5jaWVzOnticmZzOlwiXjEuNC4zXCIsY292ZXJhbGxzOlwiXjIuMTEuM1wiLGdydW50OlwiXjAuNC41XCIsXCJncnVudC1icm93c2VyaWZ5XCI6XCJeNS4wLjBcIixcImdydW50LWNvbnRyaWItY29ubmVjdFwiOlwiXjEuMC4wXCIsXCJncnVudC1jb250cmliLWNvcHlcIjpcIl4xLjAuMFwiLFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjpcIl4xLjAuMVwiLFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjpcIl4zLjAuMVwiLFwiZ3J1bnQtc2F1Y2VsYWJzXCI6XCJeOC42LjJcIixpc3RhbmJ1bDpcIl4wLjQuMlwiLGpzY3M6XCJeMi45LjBcIixqc2hpbnQ6XCJeMi42LjBcIixtb2NoYTpcIl4yLjEuMFwifSxkZXBlbmRlbmNpZXM6e1wiYm4uanNcIjpcIl40LjQuMFwiLGJyb3JhbmQ6XCJeMS4wLjFcIixcImhhc2guanNcIjpcIl4xLjAuMFwiLGluaGVyaXRzOlwiXjIuMC4xXCJ9LGdpdEhlYWQ6XCJjYmFjZTQ2ODNhNGE1NDhkYzAzMDZlZjM2NzU2MTUxYTIwMjk5Y2Q1XCIsX2lkOlwiZWxsaXB0aWNANi4zLjJcIixfc2hhc3VtOlwiZTRjODFlMDgyOWNmMGE2NWFiNzBlOTk4YjgyMzI3MjNiNWMxYmM0OFwiLF9mcm9tOlwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixfbnBtVmVyc2lvbjpcIjMuMTAuM1wiLF9ub2RlVmVyc2lvbjpcIjYuMy4wXCIsX25wbVVzZXI6e25hbWU6XCJpbmR1dG55XCIsZW1haWw6XCJmZWRvckBpbmR1dG55LmNvbVwifSxkaXN0OntzaGFzdW06XCJlNGM4MWUwODI5Y2YwYTY1YWI3MGU5OThiODIzMjcyM2I1YzFiYzQ4XCIsdGFyYmFsbDpcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi4zLjIudGd6XCJ9LG1haW50YWluZXJzOlt7bmFtZTpcImluZHV0bnlcIixlbWFpbDpcImZlZG9yQGluZHV0bnkuY29tXCJ9XSxfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbDp7aG9zdDpcInBhY2thZ2VzLTE2LWVhc3QuaW50ZXJuYWwubnBtanMuY29tXCIsdG1wOlwidG1wL2VsbGlwdGljLTYuMy4yLnRnel8xNDczOTM4ODM3MjA1XzAuMzEwODkwMzQ2Mjk5ODU2OVwifSxkaXJlY3Rvcmllczp7fSxfcmVzb2x2ZWQ6XCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4yLnRnelwifX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e1wiMi4xNi44NDAuMS4xMDEuMy40LjEuMVwiOlwiYWVzLTEyOC1lY2JcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjJcIjpcImFlcy0xMjgtY2JjXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4zXCI6XCJhZXMtMTI4LW9mYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNFwiOlwiYWVzLTEyOC1jZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIxXCI6XCJhZXMtMTkyLWVjYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjJcIjpcImFlcy0xOTItY2JjXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yM1wiOlwiYWVzLTE5Mi1vZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjI0XCI6XCJhZXMtMTkyLWNmYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDFcIjpcImFlcy0yNTYtZWNiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MlwiOlwiYWVzLTI1Ni1jYmNcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQzXCI6XCJhZXMtMjU2LW9mYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDRcIjpcImFlcy0yNTYtY2ZiXCJ9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17bmFtZTpcImVsbGlwdGljXCIsdmVyc2lvbjpcIjYuMy4yXCIsZGVzY3JpcHRpb246XCJFQyBjcnlwdG9ncmFwaHlcIixtYWluOlwibGliL2VsbGlwdGljLmpzXCIsZmlsZXM6W1wibGliXCJdLHNjcmlwdHM6e2pzY3M6XCJqc2NzIGJlbmNobWFya3MvKi5qcyBsaWIvKi5qcyBsaWIvKiovKi5qcyBsaWIvKiovKiovKi5qcyB0ZXN0L2luZGV4LmpzXCIsanNoaW50OlwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLGxpbnQ6XCJucG0gcnVuIGpzY3MgJiYgbnBtIHJ1biBqc2hpbnRcIix1bml0OlwiaXN0YW5idWwgdGVzdCBfbW9jaGEgLS1yZXBvcnRlcj1zcGVjIHRlc3QvaW5kZXguanNcIix0ZXN0OlwibnBtIHJ1biBsaW50ICYmIG5wbSBydW4gdW5pdFwiLHZlcnNpb246XCJncnVudCBkaXN0ICYmIGdpdCBhZGQgZGlzdC9cIn0scmVwb3NpdG9yeTp7dHlwZTpcImdpdFwiLHVybDpcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwifSxrZXl3b3JkczpbXCJFQ1wiLFwiRWxsaXB0aWNcIixcImN1cnZlXCIsXCJDcnlwdG9ncmFwaHlcIl0sYXV0aG9yOntuYW1lOlwiRmVkb3IgSW5kdXRueVwiLGVtYWlsOlwiZmVkb3JAaW5kdXRueS5jb21cIn0sbGljZW5zZTpcIk1JVFwiLGJ1Z3M6e3VybDpcImh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljL2lzc3Vlc1wifSxob21lcGFnZTpcImh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljXCIsZGV2RGVwZW5kZW5jaWVzOnticmZzOlwiXjEuNC4zXCIsY292ZXJhbGxzOlwiXjIuMTEuM1wiLGdydW50OlwiXjAuNC41XCIsXCJncnVudC1icm93c2VyaWZ5XCI6XCJeNS4wLjBcIixcImdydW50LWNvbnRyaWItY29ubmVjdFwiOlwiXjEuMC4wXCIsXCJncnVudC1jb250cmliLWNvcHlcIjpcIl4xLjAuMFwiLFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjpcIl4xLjAuMVwiLFwiZ3J1bnQtbW9jaGEtaXN0YW5idWxcIjpcIl4zLjAuMVwiLFwiZ3J1bnQtc2F1Y2VsYWJzXCI6XCJeOC42LjJcIixpc3RhbmJ1bDpcIl4wLjQuMlwiLGpzY3M6XCJeMi45LjBcIixqc2hpbnQ6XCJeMi42LjBcIixtb2NoYTpcIl4yLjEuMFwifSxkZXBlbmRlbmNpZXM6e1wiYm4uanNcIjpcIl40LjQuMFwiLGJyb3JhbmQ6XCJeMS4wLjFcIixcImhhc2guanNcIjpcIl4xLjAuMFwiLGluaGVyaXRzOlwiXjIuMC4xXCJ9LGdpdEhlYWQ6XCJjYmFjZTQ2ODNhNGE1NDhkYzAzMDZlZjM2NzU2MTUxYTIwMjk5Y2Q1XCIsX2lkOlwiZWxsaXB0aWNANi4zLjJcIixfc2hhc3VtOlwiZTRjODFlMDgyOWNmMGE2NWFiNzBlOTk4YjgyMzI3MjNiNWMxYmM0OFwiLF9mcm9tOlwiZWxsaXB0aWNAPj02LjAuMCA8Ny4wLjBcIixfbnBtVmVyc2lvbjpcIjMuMTAuM1wiLF9ub2RlVmVyc2lvbjpcIjYuMy4wXCIsX25wbVVzZXI6e25hbWU6XCJpbmR1dG55XCIsZW1haWw6XCJmZWRvckBpbmR1dG55LmNvbVwifSxkaXN0OntzaGFzdW06XCJlNGM4MWUwODI5Y2YwYTY1YWI3MGU5OThiODIzMjcyM2I1YzFiYzQ4XCIsdGFyYmFsbDpcImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VsbGlwdGljLy0vZWxsaXB0aWMtNi4zLjIudGd6XCJ9LG1haW50YWluZXJzOlt7bmFtZTpcImluZHV0bnlcIixlbWFpbDpcImZlZG9yQGluZHV0bnkuY29tXCJ9XSxfbnBtT3BlcmF0aW9uYWxJbnRlcm5hbDp7aG9zdDpcInBhY2thZ2VzLTE2LWVhc3QuaW50ZXJuYWwubnBtanMuY29tXCIsdG1wOlwidG1wL2VsbGlwdGljLTYuMy4yLnRnel8xNDczOTM4ODM3MjA1XzAuMzEwODkwMzQ2Mjk5ODU2OVwifSxkaXJlY3Rvcmllczp7fSxfcmVzb2x2ZWQ6XCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuMy4yLnRnelwifX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e21vZHAxOntnZW46XCIwMlwiLHByaW1lOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzYTM2MjBmZmZmZmZmZmZmZmZmZmZmXCJ9LG1vZHAyOntnZW46XCIwMlwiLHByaW1lOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTY1MzgxZmZmZmZmZmZmZmZmZmZmZlwifSxtb2RwNTp7Z2VuOlwiMDJcIixwcmltZTpcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZlwifSxtb2RwMTQ6e2dlbjpcIjAyXCIscHJpbWU6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWNhYTY4ZmZmZmZmZmZmZmZmZmZmZlwifSxtb2RwMTU6e2dlbjpcIjAyXCIscHJpbWU6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTNhZDJjYWZmZmZmZmZmZmZmZmZmZmZcIn0sbW9kcDE2OntnZW46XCIwMlwiLHByaW1lOlwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZlwiXG59LG1vZHAxNzp7Z2VuOlwiMDJcIixwcmltZTpcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZlwifSxtb2RwMTg6e2dlbjpcIjAyXCIscHJpbWU6XCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjM3ZWQ2YjBiZmY1Y2I2ZjQwNmI3ZWRlZTM4NmJmYjVhODk5ZmE1YWU5ZjI0MTE3YzRiMWZlNjQ5Mjg2NjUxZWNlNDViM2RjMjAwN2NiOGExNjNiZjA1OThkYTQ4MzYxYzU1ZDM5YTY5MTYzZmE4ZmQyNGNmNWY4MzY1NWQyM2RjYTNhZDk2MWM2MmYzNTYyMDg1NTJiYjllZDUyOTA3NzA5Njk2NmQ2NzBjMzU0ZTRhYmM5ODA0ZjE3NDZjMDhjYTE4MjE3YzMyOTA1ZTQ2MmUzNmNlM2JlMzllNzcyYzE4MGU4NjAzOWIyNzgzYTJlYzA3YTI4ZmI1YzU1ZGYwNmY0YzUyYzlkZTJiY2JmNjk1NTgxNzE4Mzk5NTQ5N2NlYTk1NmFlNTE1ZDIyNjE4OThmYTA1MTAxNTcyOGU1YThhYWFjNDJkYWQzMzE3MGQwNDUwN2EzM2E4NTUyMWFiZGYxY2JhNjRlY2ZiODUwNDU4ZGJlZjBhOGFlYTcxNTc1ZDA2MGM3ZGIzOTcwZjg1YTZlMWU0YzdhYmY1YWU4Y2RiMDkzM2Q3MWU4Yzk0ZTA0YTI1NjE5ZGNlZTNkMjI2MWFkMmVlNmJmMTJmZmEwNmQ5OGEwODY0ZDg3NjAyNzMzZWM4NmE2NDUyMWYyYjE4MTc3YjIwMGNiYmUxMTc1NzdhNjE1ZDZjNzcwOTg4YzBiYWQ5NDZlMjA4ZTI0ZmEwNzRlNWFiMzE0M2RiNWJmY2UwZmQxMDhlNGI4MmQxMjBhOTIxMDgwMTFhNzIzYzEyYTc4N2U2ZDc4ODcxOWExMGJkYmE1YjI2OTljMzI3MTg2YWY0ZTIzYzFhOTQ2ODM0YjYxNTBiZGEyNTgzZTljYTJhZDQ0Y2U4ZGJiYmMyZGIwNGRlOGVmOTJlOGVmYzE0MWZiZWNhYTYyODdjNTk0NzRlNmJjMDVkOTliMjk2NGZhMDkwYzNhMjIzM2JhMTg2NTE1YmU3ZWQxZjYxMjk3MGNlZTJkN2FmYjgxYmRkNzYyMTcwNDgxY2QwMDY5MTI3ZDViMDVhYTk5M2I0ZWE5ODhkOGZkZGMxODZmZmI3ZGM5MGE2YzA4ZjRkZjQzNWM5MzQwMjg0OTIzNmMzZmFiNGQyN2M3MDI2YzFkNGRjYjI2MDI2NDZkZWM5NzUxZTc2M2RiYTM3YmRmOGZmOTQwNmFkOWU1MzBlZTVkYjM4MmY0MTMwMDFhZWIwNmE1M2VkOTAyN2Q4MzExNzk3MjdiMDg2NWE4OTE4ZGEzZWRiZWJjZjliMTRlZDQ0Y2U2Y2JhY2VkNGJiMWJkYjdmMTQ0N2U2Y2MyNTRiMzMyMDUxNTEyYmQ3YWY0MjZmYjhmNDAxMzc4Y2QyYmY1OTgzY2EwMWM2NGI5MmVjZjAzMmVhMTVkMTcyMWQwM2Y0ODJkN2NlNmU3NGZlZjZkNTVlNzAyZjQ2OTgwYzgyYjVhODQwMzE5MDBiMWM5ZTU5ZTdjOTdmYmVjN2U4ZjMyM2E5N2E3ZTM2Y2M4OGJlMGYxZDQ1YjdmZjU4NWFjNTRiZDQwN2IyMmI0MTU0YWFjYzhmNmQ3ZWJmNDhlMWQ4MTRjYzVlZDIwZjgwMzdlMGE3OTcxNWVlZjI5YmUzMjgwNmExZDU4YmI3YzVkYTc2ZjU1MGFhM2Q4YTFmYmZmMGViMTljY2IxYTMxM2Q1NWNkYTU2YzllYzJlZjI5NjMyMzg3ZmU4ZDc2ZTNjMDQ2ODA0M2U4ZjY2M2Y0ODYwZWUxMmJmMmQ1YjBiNzQ3NGQ2ZTY5NGY5MWU2ZGJlMTE1OTc0YTM5MjZmMTJmZWU1ZTQzODc3N2NiNmE5MzJkZjhjZDhiZWM0ZDA3M2I5MzFiYTNiYzgzMmI2OGQ5ZGQzMDA3NDFmYTdiZjhhZmM0N2VkMjU3NmY2OTM2YmE0MjQ2NjNhYWI2MzljNWFlNGY1NjgzNDIzYjQ3NDJiZjFjOTc4MjM4ZjE2Y2JlMzlkNjUyZGUzZmRiOGJlZmM4NDhhZDkyMjIyMmUwNGE0MDM3YzA3MTNlYjU3YTgxYTIzZjBjNzM0NzNmYzY0NmNlYTMwNmI0YmNiYzg4NjJmODM4NWRkZmE5ZDRiN2ZhMmMwODdlODc5NjgzMzAzZWQ1YmRkM2EwNjJiM2NmNWIzYTI3OGE2NmQyYTEzZjgzZjQ0ZjgyZGRmMzEwZWUwNzRhYjZhMzY0NTk3ZTg5OWEwMjU1ZGMxNjRmMzFjYzUwODQ2ODUxZGY5YWI0ODE5NWRlZDdlYTFiMWQ1MTBiZDdlZTc0ZDczZmFmMzZiYzMxZWNmYTI2ODM1OTA0NmY0ZWI4NzlmOTI0MDA5NDM4YjQ4MWM2Y2Q3ODg5YTAwMmVkNWVlMzgyYmM5MTkwZGE2ZmMwMjZlNDc5NTU4ZTQ0NzU2NzdlOWFhOWUzMDUwZTI3NjU2OTRkZmM4MWY1NmU4ODBiOTZlNzE2MGM5ODBkZDk4ZWRkM2RmZmZmZmZmZmZmZmZmZmZmZlwifX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjFcIjpcImFlcy0xMjgtZWNiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yXCI6XCJhZXMtMTI4LWNiY1wiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuM1wiOlwiYWVzLTEyOC1vZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjRcIjpcImFlcy0xMjgtY2ZiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMVwiOlwiYWVzLTE5Mi1lY2JcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIyXCI6XCJhZXMtMTkyLWNiY1wiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjNcIjpcImFlcy0xOTItb2ZiXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNFwiOlwiYWVzLTE5Mi1jZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQxXCI6XCJhZXMtMjU2LWVjYlwiLFwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDJcIjpcImFlcy0yNTYtY2JjXCIsXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40M1wiOlwiYWVzLTI1Ni1vZmJcIixcIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0XCI6XCJhZXMtMjU2LWNmYlwifX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIGkodCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIWV8fFwib2JqZWN0XCIhPXR5cGVvZiBlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlP3Q6ZX1mdW5jdGlvbiBvKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIGUpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGUmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSk6dC5fX3Byb3RvX189ZSl9dmFyIGE9cigxOTUpLGY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBuKHRoaXMsZSksaSh0aGlzLE9iamVjdC5nZXRQcm90b3R5cGVPZihlKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBvKGUsdCksZX0oYSk7dC5leHBvcnRzPWZ9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBpKHQsZSl7aWYoIXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiFlfHxcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZT90OmV9ZnVuY3Rpb24gbyh0LGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiK3R5cGVvZiBlKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0LGUpOnQuX19wcm90b19fPWUpfXZhciBhPXIoMTk1KSxmPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbih0aGlzLGUpLGkodGhpcyxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSkuYXBwbHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gbyhlLHQpLGV9KGEpO3QuZXhwb3J0cz1mfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksbz1yKDE5NiksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtuKHRoaXMsdCksdGhpcy5zaXplPTB9cmV0dXJuIGkodCxbe2tleTpcIndyaXRlVUludFwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5zaXplKz1lfX0se2tleTpcIndyaXRlVmFyVUludFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKGUuaXNCdWZmZXIodCkpcmV0dXJuIHZvaWQgdGhpcy53cml0ZVZhck9jdGV0U3RyaW5nKHQpO2lmKCFvKHQpKXRocm93IG5ldyBFcnJvcihcIlVJbnQgbXVzdCBiZSBhbiBpbnRlZ2VyXCIpO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoXCJVSW50IG11c3QgYmUgcG9zaXRpdmVcIik7dmFyIHI9TWF0aC5jZWlsKHQudG9TdHJpbmcoMikubGVuZ3RoLzgpO3RoaXMud3JpdGVWYXJPY3RldFN0cmluZyh7bGVuZ3RoOnJ9KX19LHtrZXk6XCJ3cml0ZU9jdGV0U3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXt0aGlzLnNraXAoZSl9fSx7a2V5Olwid3JpdGVWYXJPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuc2tpcCgxKSx0Lmxlbmd0aD4xMjcpe3ZhciBlPU1hdGguY2VpbCh0Lmxlbmd0aC50b1N0cmluZygyKS5sZW5ndGgvOCk7dGhpcy5za2lwKGUpfXRoaXMuc2tpcCh0Lmxlbmd0aCl9fSx7a2V5Olwid3JpdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNpemUrPXQubGVuZ3RofX0se2tleTpcInNraXBcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNpemUrPXR9fSx7a2V5OlwiZ2V0U2l6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX19XSksdH0oKTtbMSwyLDQsOF0uZm9yRWFjaChmdW5jdGlvbih0KXthLnByb3RvdHlwZVtcIndyaXRlVUludFwiKzgqdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMud3JpdGVVSW50KGUsdCl9fSksdC5leHBvcnRzPWF9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksbz1yKDQ3MSksYT1yKDQ3MCksZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7bih0aGlzLHQpLHRoaXMuYnVmZmVyPWUsdGhpcy5jdXJzb3I9MCx0aGlzLmJvb2ttYXJrcz1bXX1yZXR1cm4gaSh0LFt7a2V5OlwiYm9va21hcmtcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9va21hcmtzLnB1c2godGhpcy5jdXJzb3IpfX0se2tleTpcInJlc3RvcmVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3Vyc29yPXRoaXMuYm9va21hcmtzLnBvcCgpfX0se2tleTpcImVuc3VyZUF2YWlsYWJsZVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuYnVmZmVyLmxlbmd0aDx0aGlzLmN1cnNvcit0KXRocm93IG5ldyBvKFwiVHJpZWQgdG8gcmVhZCBcIit0K1wiIGJ5dGVzLCBidXQgb25seSBcIisodGhpcy5idWZmZXIubGVuZ3RoLXRoaXMuY3Vyc29yKStcIiBieXRlcyBhdmFpbGFibGVcIil9fSx7a2V5OlwicmVhZFVJbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBlZWtVSW50KHQpO3JldHVybiB0aGlzLmN1cnNvcis9dCxlfX0se2tleTpcInBlZWtVSW50XCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDA7aWYoZTwwKXRocm93IG5ldyBFcnJvcihcIlRyaWVkIHRvIHJlYWQgaW50ZWdlciB3aXRoIG5lZ2F0aXZlIGxlbmd0aCAocHJvdmlkZWQ6IFwiK2UrXCIpXCIpO2lmKGU+dC5NQVhfSU5UX0JZVEVTKXRocm93IG5ldyBFcnJvcihcIlRyaWVkIHRvIHJlYWQgdG9vIGxhcmdlIGludGVnZXIgKHJlcXVlc3RlZDogXCIrZStcIiwgbWF4OiBcIit0Lk1BWF9JTlRfQllURVMrXCIpXCIpO3RoaXMuZW5zdXJlQXZhaWxhYmxlKGUpO3ZhciByPXRoaXMuYnVmZmVyLnJlYWRVSW50QkUodGhpcy5jdXJzb3IsZSk7cmV0dXJuIHJ9fSx7a2V5Olwic2tpcFVJbnRcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnNraXAodCl9fSx7a2V5OlwicmVhZFVJbnQ2NFwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMucmVhZFVJbnQzMigpLHRoaXMucmVhZFVJbnQzMigpXX19LHtrZXk6XCJwZWVrVUludDY0XCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmJvb2ttYXJrKCk7dmFyIHQ9dGhpcy5yZWFkVUludDY0KCk7cmV0dXJuIHRoaXMucmVzdG9yZSgpLHR9fSx7a2V5Olwic2tpcFVJbnQ2NFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5za2lwKDgpfX0se2tleTpcInJlYWRWYXJVSW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJlYWRWYXJPY3RldFN0cmluZygpO2lmKGUubGVuZ3RoPnQuTUFYX0lOVF9CWVRFUyl0aHJvdyBuZXcgYShcIlVJbnQgb2YgbGVuZ3RoIFwiK2UubGVuZ3RoK1wiIHRvbyBsYXJnZSB0byBwYXJzZSBhcyBpbnRlZ2VyIChtYXg6IFwiK3QuTUFYX0lOVF9CWVRFUytcIilcIik7aWYoMD09PWUubGVuZ3RoKXRocm93IG5ldyBhKFwiVUludCBvZiBsZW5ndGggMCBpcyBpbnZhbGlkXCIpO3JldHVybiBlLnJlYWRVSW50QkUoMCxlLmxlbmd0aCl9fSx7a2V5OlwicGVla1ZhclVJbnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9va21hcmsoKTt2YXIgdD10aGlzLnJlYWRWYXJVSW50KCk7cmV0dXJuIHRoaXMucmVzdG9yZSgpLHR9fSx7a2V5Olwic2tpcFZhclVJbnRcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2tpcFZhck9jdGV0U3RyaW5nKCl9fSx7a2V5OlwicmVhZE9jdGV0U3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVhZCh0KX19LHtrZXk6XCJwZWVrT2N0ZXRTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wZWVrKHQpfX0se2tleTpcInNraXBPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNraXAodCl9fSx7a2V5OlwicmVhZExlbmd0aFByZWZpeFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWFkVUludDgoKTtpZihlJnQuSElHSF9CSVQpe3ZhciByPWUmdC5MT1dFUl9TRVZFTl9CSVRTLG49dGhpcy5yZWFkVUludChyKSxpPU1hdGgubWF4KDEyOCwxPDw4KihyLTEpKTtpZihuPGkpdGhyb3cgbmV3IGEoXCJMZW5ndGggcHJlZml4IGVuY29kaW5nIGlzIG5vdCBjYW5vbmljYWw6IFwiK24rXCIgZW5jb2RlZCBpbiBcIityK1wiIGJ5dGVzXCIpO3JldHVybiBufXJldHVybiBlfX0se2tleTpcInJlYWRWYXJPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkTGVuZ3RoUHJlZml4KCk7cmV0dXJuIHRoaXMucmVhZCh0KX19LHtrZXk6XCJwZWVrVmFyT2N0ZXRTdHJpbmdcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYm9va21hcmsoKTt2YXIgdD10aGlzLnJlYWRWYXJPY3RldFN0cmluZygpO3JldHVybiB0aGlzLnJlc3RvcmUoKSx0fX0se2tleTpcInNraXBWYXJPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5yZWFkTGVuZ3RoUHJlZml4KCk7cmV0dXJuIHRoaXMuc2tpcCh0KX19LHtrZXk6XCJyZWFkXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5lbnN1cmVBdmFpbGFibGUodCk7dmFyIGU9dGhpcy5idWZmZXIuc2xpY2UodGhpcy5jdXJzb3IsdGhpcy5jdXJzb3IrdCk7cmV0dXJuIHRoaXMuY3Vyc29yKz10LGV9fSx7a2V5OlwicGVla1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuc3VyZUF2YWlsYWJsZSh0KSx0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLmN1cnNvcix0aGlzLmN1cnNvcit0KX19LHtrZXk6XCJza2lwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dGhpcy5lbnN1cmVBdmFpbGFibGUodCksdGhpcy5jdXJzb3IrPXR9fV0sW3trZXk6XCJmcm9tXCIsdmFsdWU6ZnVuY3Rpb24ocil7aWYoZS5pc0J1ZmZlcihyKSlyZXR1cm4gbmV3IHQocik7aWYociBpbnN0YW5jZW9mIHQpcmV0dXJuIG5ldyB0KHIuYnVmZmVyLnNsaWNlKHIuY3Vyc29yKSk7dGhyb3cgbmV3IEVycm9yKFwiUmVhZGVyIG11c3QgYmUgZ2l2ZW4gYSBCdWZmZXJcIil9fV0pLHR9KCk7Zi5ISUdIX0JJVD0xMjgsZi5MT1dFUl9TRVZFTl9CSVRTPTEyNyxmLk1BWF9JTlRfQllURVM9NixbXCJyZWFkXCIsXCJwZWVrXCIsXCJza2lwXCJdLmZvckVhY2goZnVuY3Rpb24odCl7WzEsMiw0XS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2YucHJvdG90eXBlW3QrXCJVSW50XCIrOCplXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3QrXCJVSW50XCJdKGUpfX0pfSksdC5leHBvcnRzPWZ9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUscixuKXtyZXR1cm4gciYmdChlLnByb3RvdHlwZSxyKSxuJiZ0KGUsbiksZX19KCksbz1yKDE5NiksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtuKHRoaXMsdCksdGhpcy5jb21wb25lbnRzPVtdfXJldHVybiBpKHQsW3trZXk6XCJ3cml0ZVVJbnRcIix2YWx1ZTpmdW5jdGlvbih0LHIpe2lmKCFvKHQpKXRocm93IG5ldyBFcnJvcihcIlVJbnQgbXVzdCBiZSBhbiBpbnRlZ2VyXCIpO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoXCJVSW50IG11c3QgYmUgcG9zaXRpdmVcIik7aWYocjw9MCl0aHJvdyBuZXcgRXJyb3IoXCJVSW50IGxlbmd0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvXCIpO2lmKHQudG9TdHJpbmcoMikubGVuZ3RoPjgqcil0aHJvdyBuZXcgRXJyb3IoXCJVSW50IFwiK3QrXCIgZG9lcyBub3QgZml0IGluIFwiK3IrXCIgYnl0ZXNcIik7dmFyIG49bmV3IGUocik7bi53cml0ZVVJbnRCRSh0LDAsciksdGhpcy53cml0ZShuKX19LHtrZXk6XCJ3cml0ZVZhclVJbnRcIix2YWx1ZTpmdW5jdGlvbihyKXtpZihlLmlzQnVmZmVyKHIpKXJldHVybiB2b2lkIHRoaXMud3JpdGVWYXJPY3RldFN0cmluZyhyKTtpZighbyhyKSl0aHJvdyBuZXcgRXJyb3IoXCJVSW50IG11c3QgYmUgYW4gaW50ZWdlclwiKTtpZihyPDApdGhyb3cgbmV3IEVycm9yKFwiVUludCBtdXN0IGJlIHBvc2l0aXZlXCIpO2lmKHI+dC5NQVhfU0FGRV9JTlRFR0VSKXRocm93IG5ldyBFcnJvcihcIlVJbnQgaXMgdG9vIGxhcmdlXCIpO3ZhciBuPU1hdGguY2VpbChyLnRvU3RyaW5nKDIpLmxlbmd0aC84KSxpPW5ldyBlKG4pO2kud3JpdGVVSW50QkUociwwLG4pLHRoaXMud3JpdGVWYXJPY3RldFN0cmluZyhpKX19LHtrZXk6XCJ3cml0ZVVJbnQ2NFwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKG8oZSkmJmU8PXQuTUFYX1NBRkVfSU5URUdFUilyZXR1cm4gdGhpcy53cml0ZVVJbnQzMihNYXRoLmZsb29yKGUvNDI5NDk2NzI5NikpLHZvaWQgdGhpcy53cml0ZVVJbnQzMig0Mjk0OTY3Mjk1JmUpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwyIT09ZS5sZW5ndGh8fCFvKGVbMF0pfHwhbyhlWzFdKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgNjQtYml0IGludGVnZXIgYXMgYW4gYXJyYXkgb2YgdHdvIDMyLWJpdCB3b3Jkc1wiKTt0aGlzLndyaXRlVUludDMyKGVbMF0pLHRoaXMud3JpdGVVSW50MzIoZVsxXSl9fSx7a2V5Olwid3JpdGVPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYodC5sZW5ndGghPT1lKXRocm93IG5ldyBFcnJvcihcIkluY29ycmVjdCBsZW5ndGggZm9yIG9jdGV0IHN0cmluZyAoYWN0dWFsOiBcIit0Lmxlbmd0aCtcIiwgZXhwZWN0ZWQ6IFwiK2UrXCIpXCIpO3RoaXMud3JpdGUodCl9fSx7a2V5Olwid3JpdGVWYXJPY3RldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKCFlLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJFeHBlY3RzIGEgYnVmZmVyXCIpO3ZhciByPTEyODtpZih0Lmxlbmd0aDw9MTI3KXRoaXMud3JpdGVVSW50OCh0Lmxlbmd0aCk7ZWxzZXt2YXIgbj1NYXRoLmNlaWwodC5sZW5ndGgudG9TdHJpbmcoMikubGVuZ3RoLzgpO3RoaXMud3JpdGVVSW50OChyfG4pLHRoaXMud3JpdGVVSW50KHQubGVuZ3RoLG4pfXRoaXMud3JpdGUodCl9fSx7a2V5Olwid3JpdGVcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmNvbXBvbmVudHMucHVzaCh0KX19LHtrZXk6XCJnZXRCdWZmZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBlLmNvbmNhdCh0aGlzLmNvbXBvbmVudHMpfX1dKSx0fSgpO2EuTUFYX1NBRkVfSU5URUdFUj1yKDQ3NSksWzEsMiw0XS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2EucHJvdG90eXBlW1wid3JpdGVVSW50XCIrOCp0XT1mdW5jdGlvbihlKXt0aGlzLndyaXRlVUludChlLHQpfX0pLHQuZXhwb3J0cz1hfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe3IoNDg3KSx0LmV4cG9ydHM9OTAwNzE5OTI1NDc0MDk5MX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSBmdW5jdGlvbiFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUscil7dmFyIG49cig4OSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCFuKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhbiBvYmplY3QhXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNDc2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe2lmKG4odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gocil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdC5jYWxsKGUscil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gdC5jYWxsKGUscixuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihyLG4saSl7cmV0dXJuIHQuY2FsbChlLHIsbixpKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDg5KSxpPXIoMjAwKS5kb2N1bWVudCxvPW4oaSkmJm4oaS5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KHQpOnt9fX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoNDgzKSxpPXIoNDg0KTt0LmV4cG9ydHM9cigxNDQpP2Z1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbi5mKHQsZSxpKDEscikpfTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cix0fX0sZnVuY3Rpb24odCxlLHIpe3QuZXhwb3J0cz0hcigxNDQpJiYhcigxOTkpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDQ3OSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoODkpLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIW4odCkmJmlzRmluaXRlKHQpJiZpKHQpPT09dH19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDQ3NyksaT1yKDQ4MSksbz1yKDQ4NSksYT1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5mPXIoMTQ0KT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxlLHIpe2lmKG4odCksZT1vKGUsITApLG4ociksaSl0cnl7cmV0dXJuIGEodCxlLHIpfWNhdGNoKHQpe31pZihcImdldFwiaW4gcnx8XCJzZXRcImluIHIpdGhyb3cgVHlwZUVycm9yKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhXCIpO3JldHVyblwidmFsdWVcImluIHImJih0W2VdPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDg5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighbih0KSlyZXR1cm4gdDt2YXIgcixpO2lmKGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFuKGk9ci5jYWxsKHQpKSlyZXR1cm4gaTtpZighZSYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIW4oaT1yLmNhbGwodCkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDE5OCk7bihuLlMsXCJOdW1iZXJcIix7aXNJbnRlZ2VyOnIoNDgyKX0pfSxmdW5jdGlvbih0LGUscil7dmFyIG49cigxOTgpO24obi5TLFwiTnVtYmVyXCIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LGUscil7IWZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGUodCxlLHIsbil7dFtlXT1yPj4yNCYyNTUsdFtlKzFdPXI+PjE2JjI1NSx0W2UrMl09cj4+OCYyNTUsdFtlKzNdPTI1NSZyLHRbZSs0XT1uPj4yNCYyNTUsdFtlKzVdPW4+PjE2JjI1NSx0W2UrNl09bj4+OCYyNTUsdFtlKzddPTI1NSZufWZ1bmN0aW9uIG4odCxlLHIsbixpKXt2YXIgbyxhPTA7Zm9yKG89MDtvPGk7bysrKWF8PXRbZStvXV5yW24rb107cmV0dXJuKDEmYS0xPj4+OCktMX1mdW5jdGlvbiBpKHQsZSxyLGkpe3JldHVybiBuKHQsZSxyLGksMTYpfWZ1bmN0aW9uIG8odCxlLHIsaSl7cmV0dXJuIG4odCxlLHIsaSwzMil9ZnVuY3Rpb24gYSh0LGUscixuKXtmb3IodmFyIGksbz0yNTUmblswXXwoMjU1Jm5bMV0pPDw4fCgyNTUmblsyXSk8PDE2fCgyNTUmblszXSk8PDI0LGE9MjU1JnJbMF18KDI1NSZyWzFdKTw8OHwoMjU1JnJbMl0pPDwxNnwoMjU1JnJbM10pPDwyNCxmPTI1NSZyWzRdfCgyNTUmcls1XSk8PDh8KDI1NSZyWzZdKTw8MTZ8KDI1NSZyWzddKTw8MjQscz0yNTUmcls4XXwoMjU1JnJbOV0pPDw4fCgyNTUmclsxMF0pPDwxNnwoMjU1JnJbMTFdKTw8MjQsdT0yNTUmclsxMl18KDI1NSZyWzEzXSk8PDh8KDI1NSZyWzE0XSk8PDE2fCgyNTUmclsxNV0pPDwyNCxoPTI1NSZuWzRdfCgyNTUmbls1XSk8PDh8KDI1NSZuWzZdKTw8MTZ8KDI1NSZuWzddKTw8MjQsYz0yNTUmZVswXXwoMjU1JmVbMV0pPDw4fCgyNTUmZVsyXSk8PDE2fCgyNTUmZVszXSk8PDI0LGQ9MjU1JmVbNF18KDI1NSZlWzVdKTw8OHwoMjU1JmVbNl0pPDwxNnwoMjU1JmVbN10pPDwyNCxsPTI1NSZlWzhdfCgyNTUmZVs5XSk8PDh8KDI1NSZlWzEwXSk8PDE2fCgyNTUmZVsxMV0pPDwyNCxwPTI1NSZlWzEyXXwoMjU1JmVbMTNdKTw8OHwoMjU1JmVbMTRdKTw8MTZ8KDI1NSZlWzE1XSk8PDI0LGI9MjU1Jm5bOF18KDI1NSZuWzldKTw8OHwoMjU1Jm5bMTBdKTw8MTZ8KDI1NSZuWzExXSk8PDI0LHY9MjU1JnJbMTZdfCgyNTUmclsxN10pPDw4fCgyNTUmclsxOF0pPDwxNnwoMjU1JnJbMTldKTw8MjQseT0yNTUmclsyMF18KDI1NSZyWzIxXSk8PDh8KDI1NSZyWzIyXSk8PDE2fCgyNTUmclsyM10pPDwyNCxtPTI1NSZyWzI0XXwoMjU1JnJbMjVdKTw8OHwoMjU1JnJbMjZdKTw8MTZ8KDI1NSZyWzI3XSk8PDI0LGc9MjU1JnJbMjhdfCgyNTUmclsyOV0pPDw4fCgyNTUmclszMF0pPDwxNnwoMjU1JnJbMzFdKTw8MjQsdz0yNTUmblsxMl18KDI1NSZuWzEzXSk8PDh8KDI1NSZuWzE0XSk8PDE2fCgyNTUmblsxNV0pPDwyNCxfPW8sTT1hLFM9ZixFPXMsQT11LGs9aCx4PWMsST1kLEI9bCxPPXAsUj1iLFA9dixUPXksaj1tLEM9ZyxOPXcsTD0wO0w8MjA7TCs9MilpPV8rVHwwLEFePWk8PDd8aT4+PjI1LGk9QStffDAsQl49aTw8OXxpPj4+MjMsaT1CK0F8MCxUXj1pPDwxM3xpPj4+MTksaT1UK0J8MCxfXj1pPDwxOHxpPj4+MTQsaT1rK018MCxPXj1pPDw3fGk+Pj4yNSxpPU8ra3wwLGpePWk8PDl8aT4+PjIzLGk9aitPfDAsTV49aTw8MTN8aT4+PjE5LGk9TStqfDAsa149aTw8MTh8aT4+PjE0LGk9Uit4fDAsQ149aTw8N3xpPj4+MjUsaT1DK1J8MCxTXj1pPDw5fGk+Pj4yMyxpPVMrQ3wwLHhePWk8PDEzfGk+Pj4xOSxpPXgrU3wwLFJePWk8PDE4fGk+Pj4xNCxpPU4rUHwwLEVePWk8PDd8aT4+PjI1LGk9RStOfDAsSV49aTw8OXxpPj4+MjMsaT1JK0V8MCxQXj1pPDwxM3xpPj4+MTksaT1QK0l8MCxOXj1pPDwxOHxpPj4+MTQsaT1fK0V8MCxNXj1pPDw3fGk+Pj4yNSxpPU0rX3wwLFNePWk8PDl8aT4+PjIzLGk9UytNfDAsRV49aTw8MTN8aT4+PjE5LGk9RStTfDAsX149aTw8MTh8aT4+PjE0LGk9aytBfDAseF49aTw8N3xpPj4+MjUsaT14K2t8MCxJXj1pPDw5fGk+Pj4yMyxpPUkreHwwLEFePWk8PDEzfGk+Pj4xOSxpPUErSXwwLGtePWk8PDE4fGk+Pj4xNCxpPVIrT3wwLFBePWk8PDd8aT4+PjI1LGk9UCtSfDAsQl49aTw8OXxpPj4+MjMsaT1CK1B8MCxPXj1pPDwxM3xpPj4+MTksaT1PK0J8MCxSXj1pPDwxOHxpPj4+MTQsaT1OK0N8MCxUXj1pPDw3fGk+Pj4yNSxpPVQrTnwwLGpePWk8PDl8aT4+PjIzLGk9aitUfDAsQ149aTw8MTN8aT4+PjE5LGk9QytqfDAsTl49aTw8MTh8aT4+PjE0O189XytvfDAsTT1NK2F8MCxTPVMrZnwwLEU9RStzfDAsQT1BK3V8MCxrPWsraHwwLHg9eCtjfDAsST1JK2R8MCxCPUIrbHwwLE89TytwfDAsUj1SK2J8MCxQPVArdnwwLFQ9VCt5fDAsaj1qK218MCxDPUMrZ3wwLE49Tit3fDAsdFswXT1fPj4+MCYyNTUsdFsxXT1fPj4+OCYyNTUsdFsyXT1fPj4+MTYmMjU1LHRbM109Xz4+PjI0JjI1NSx0WzRdPU0+Pj4wJjI1NSx0WzVdPU0+Pj44JjI1NSx0WzZdPU0+Pj4xNiYyNTUsdFs3XT1NPj4+MjQmMjU1LHRbOF09Uz4+PjAmMjU1LHRbOV09Uz4+PjgmMjU1LHRbMTBdPVM+Pj4xNiYyNTUsdFsxMV09Uz4+PjI0JjI1NSx0WzEyXT1FPj4+MCYyNTUsdFsxM109RT4+PjgmMjU1LHRbMTRdPUU+Pj4xNiYyNTUsdFsxNV09RT4+PjI0JjI1NSx0WzE2XT1BPj4+MCYyNTUsdFsxN109QT4+PjgmMjU1LHRbMThdPUE+Pj4xNiYyNTUsdFsxOV09QT4+PjI0JjI1NSx0WzIwXT1rPj4+MCYyNTUsdFsyMV09az4+PjgmMjU1LHRbMjJdPWs+Pj4xNiYyNTUsdFsyM109az4+PjI0JjI1NSx0WzI0XT14Pj4+MCYyNTUsdFsyNV09eD4+PjgmMjU1LHRbMjZdPXg+Pj4xNiYyNTUsdFsyN109eD4+PjI0JjI1NSx0WzI4XT1JPj4+MCYyNTUsdFsyOV09ST4+PjgmMjU1LHRbMzBdPUk+Pj4xNiYyNTUsdFszMV09ST4+PjI0JjI1NSx0WzMyXT1CPj4+MCYyNTUsdFszM109Qj4+PjgmMjU1LHRbMzRdPUI+Pj4xNiYyNTUsdFszNV09Qj4+PjI0JjI1NSx0WzM2XT1PPj4+MCYyNTUsdFszN109Tz4+PjgmMjU1LHRbMzhdPU8+Pj4xNiYyNTUsdFszOV09Tz4+PjI0JjI1NSx0WzQwXT1SPj4+MCYyNTUsdFs0MV09Uj4+PjgmMjU1LHRbNDJdPVI+Pj4xNiYyNTUsdFs0M109Uj4+PjI0JjI1NSx0WzQ0XT1QPj4+MCYyNTUsdFs0NV09UD4+PjgmMjU1LHRbNDZdPVA+Pj4xNiYyNTUsdFs0N109UD4+PjI0JjI1NSx0WzQ4XT1UPj4+MCYyNTUsdFs0OV09VD4+PjgmMjU1LHRbNTBdPVQ+Pj4xNiYyNTUsdFs1MV09VD4+PjI0JjI1NSx0WzUyXT1qPj4+MCYyNTUsdFs1M109aj4+PjgmMjU1LHRbNTRdPWo+Pj4xNiYyNTUsdFs1NV09aj4+PjI0JjI1NSx0WzU2XT1DPj4+MCYyNTUsdFs1N109Qz4+PjgmMjU1LHRbNThdPUM+Pj4xNiYyNTUsdFs1OV09Qz4+PjI0JjI1NSx0WzYwXT1OPj4+MCYyNTUsdFs2MV09Tj4+PjgmMjU1LHRbNjJdPU4+Pj4xNiYyNTUsdFs2M109Tj4+PjI0JjI1NX1mdW5jdGlvbiBmKHQsZSxyLG4pe2Zvcih2YXIgaSxvPTI1NSZuWzBdfCgyNTUmblsxXSk8PDh8KDI1NSZuWzJdKTw8MTZ8KDI1NSZuWzNdKTw8MjQsYT0yNTUmclswXXwoMjU1JnJbMV0pPDw4fCgyNTUmclsyXSk8PDE2fCgyNTUmclszXSk8PDI0LGY9MjU1JnJbNF18KDI1NSZyWzVdKTw8OHwoMjU1JnJbNl0pPDwxNnwoMjU1JnJbN10pPDwyNCxzPTI1NSZyWzhdfCgyNTUmcls5XSk8PDh8KDI1NSZyWzEwXSk8PDE2fCgyNTUmclsxMV0pPDwyNCx1PTI1NSZyWzEyXXwoMjU1JnJbMTNdKTw8OHwoMjU1JnJbMTRdKTw8MTZ8KDI1NSZyWzE1XSk8PDI0LGg9MjU1Jm5bNF18KDI1NSZuWzVdKTw8OHwoMjU1Jm5bNl0pPDwxNnwoMjU1Jm5bN10pPDwyNCxjPTI1NSZlWzBdfCgyNTUmZVsxXSk8PDh8KDI1NSZlWzJdKTw8MTZ8KDI1NSZlWzNdKTw8MjQsZD0yNTUmZVs0XXwoMjU1JmVbNV0pPDw4fCgyNTUmZVs2XSk8PDE2fCgyNTUmZVs3XSk8PDI0LGw9MjU1JmVbOF18KDI1NSZlWzldKTw8OHwoMjU1JmVbMTBdKTw8MTZ8KDI1NSZlWzExXSk8PDI0LHA9MjU1JmVbMTJdfCgyNTUmZVsxM10pPDw4fCgyNTUmZVsxNF0pPDwxNnwoMjU1JmVbMTVdKTw8MjQsYj0yNTUmbls4XXwoMjU1Jm5bOV0pPDw4fCgyNTUmblsxMF0pPDwxNnwoMjU1Jm5bMTFdKTw8MjQsdj0yNTUmclsxNl18KDI1NSZyWzE3XSk8PDh8KDI1NSZyWzE4XSk8PDE2fCgyNTUmclsxOV0pPDwyNCx5PTI1NSZyWzIwXXwoMjU1JnJbMjFdKTw8OHwoMjU1JnJbMjJdKTw8MTZ8KDI1NSZyWzIzXSk8PDI0LG09MjU1JnJbMjRdfCgyNTUmclsyNV0pPDw4fCgyNTUmclsyNl0pPDwxNnwoMjU1JnJbMjddKTw8MjQsZz0yNTUmclsyOF18KDI1NSZyWzI5XSk8PDh8KDI1NSZyWzMwXSk8PDE2fCgyNTUmclszMV0pPDwyNCx3PTI1NSZuWzEyXXwoMjU1Jm5bMTNdKTw8OHwoMjU1Jm5bMTRdKTw8MTZ8KDI1NSZuWzE1XSk8PDI0LF89byxNPWEsUz1mLEU9cyxBPXUsaz1oLHg9YyxJPWQsQj1sLE89cCxSPWIsUD12LFQ9eSxqPW0sQz1nLE49dyxMPTA7TDwyMDtMKz0yKWk9XytUfDAsQV49aTw8N3xpPj4+MjUsaT1BK198MCxCXj1pPDw5fGk+Pj4yMyxpPUIrQXwwLFRePWk8PDEzfGk+Pj4xOSxpPVQrQnwwLF9ePWk8PDE4fGk+Pj4xNCxpPWsrTXwwLE9ePWk8PDd8aT4+PjI1LGk9TytrfDAsal49aTw8OXxpPj4+MjMsaT1qK098MCxNXj1pPDwxM3xpPj4+MTksaT1NK2p8MCxrXj1pPDwxOHxpPj4+MTQsaT1SK3h8MCxDXj1pPDw3fGk+Pj4yNSxpPUMrUnwwLFNePWk8PDl8aT4+PjIzLGk9UytDfDAseF49aTw8MTN8aT4+PjE5LGk9eCtTfDAsUl49aTw8MTh8aT4+PjE0LGk9TitQfDAsRV49aTw8N3xpPj4+MjUsaT1FK058MCxJXj1pPDw5fGk+Pj4yMyxpPUkrRXwwLFBePWk8PDEzfGk+Pj4xOSxpPVArSXwwLE5ePWk8PDE4fGk+Pj4xNCxpPV8rRXwwLE1ePWk8PDd8aT4+PjI1LGk9TStffDAsU149aTw8OXxpPj4+MjMsaT1TK018MCxFXj1pPDwxM3xpPj4+MTksaT1FK1N8MCxfXj1pPDwxOHxpPj4+MTQsaT1rK0F8MCx4Xj1pPDw3fGk+Pj4yNSxpPXgra3wwLElePWk8PDl8aT4+PjIzLGk9SSt4fDAsQV49aTw8MTN8aT4+PjE5LGk9QStJfDAsa149aTw8MTh8aT4+PjE0LGk9UitPfDAsUF49aTw8N3xpPj4+MjUsaT1QK1J8MCxCXj1pPDw5fGk+Pj4yMyxpPUIrUHwwLE9ePWk8PDEzfGk+Pj4xOSxpPU8rQnwwLFJePWk8PDE4fGk+Pj4xNCxpPU4rQ3wwLFRePWk8PDd8aT4+PjI1LGk9VCtOfDAsal49aTw8OXxpPj4+MjMsaT1qK1R8MCxDXj1pPDwxM3xpPj4+MTksaT1DK2p8MCxOXj1pPDwxOHxpPj4+MTQ7dFswXT1fPj4+MCYyNTUsdFsxXT1fPj4+OCYyNTUsdFsyXT1fPj4+MTYmMjU1LHRbM109Xz4+PjI0JjI1NSx0WzRdPWs+Pj4wJjI1NSx0WzVdPWs+Pj44JjI1NSx0WzZdPWs+Pj4xNiYyNTUsdFs3XT1rPj4+MjQmMjU1LHRbOF09Uj4+PjAmMjU1LHRbOV09Uj4+PjgmMjU1LHRbMTBdPVI+Pj4xNiYyNTUsdFsxMV09Uj4+PjI0JjI1NSx0WzEyXT1OPj4+MCYyNTUsdFsxM109Tj4+PjgmMjU1LHRbMTRdPU4+Pj4xNiYyNTUsdFsxNV09Tj4+PjI0JjI1NSx0WzE2XT14Pj4+MCYyNTUsdFsxN109eD4+PjgmMjU1LHRbMThdPXg+Pj4xNiYyNTUsdFsxOV09eD4+PjI0JjI1NSx0WzIwXT1JPj4+MCYyNTUsdFsyMV09ST4+PjgmMjU1LHRbMjJdPUk+Pj4xNiYyNTUsdFsyM109ST4+PjI0JjI1NSx0WzI0XT1CPj4+MCYyNTUsdFsyNV09Qj4+PjgmMjU1LHRbMjZdPUI+Pj4xNiYyNTUsdFsyN109Qj4+PjI0JjI1NSx0WzI4XT1PPj4+MCYyNTUsdFsyOV09Tz4+PjgmMjU1LHRbMzBdPU8+Pj4xNiYyNTUsdFszMV09Tz4+PjI0JjI1NX1mdW5jdGlvbiBzKHQsZSxyLG4pe2EodCxlLHIsbil9ZnVuY3Rpb24gdSh0LGUscixuKXtmKHQsZSxyLG4pfWZ1bmN0aW9uIGgodCxlLHIsbixpLG8sYSl7dmFyIGYsdSxoPW5ldyBVaW50OEFycmF5KDE2KSxjPW5ldyBVaW50OEFycmF5KDY0KTtmb3IodT0wO3U8MTY7dSsrKWhbdV09MDtmb3IodT0wO3U8ODt1KyspaFt1XT1vW3VdO2Zvcig7aT49NjQ7KXtmb3IocyhjLGgsYSxkdCksdT0wO3U8NjQ7dSsrKXRbZSt1XT1yW24rdV1eY1t1XTtmb3IoZj0xLHU9ODt1PDE2O3UrKylmPWYrKDI1NSZoW3VdKXwwLGhbdV09MjU1JmYsZj4+Pj04O2ktPTY0LGUrPTY0LG4rPTY0fWlmKGk+MClmb3IocyhjLGgsYSxkdCksdT0wO3U8aTt1KyspdFtlK3VdPXJbbit1XV5jW3VdO3JldHVybiAwfWZ1bmN0aW9uIGModCxlLHIsbixpKXt2YXIgbyxhLGY9bmV3IFVpbnQ4QXJyYXkoMTYpLHU9bmV3IFVpbnQ4QXJyYXkoNjQpO2ZvcihhPTA7YTwxNjthKyspZlthXT0wO2ZvcihhPTA7YTw4O2ErKylmW2FdPW5bYV07Zm9yKDtyPj02NDspe2ZvcihzKHUsZixpLGR0KSxhPTA7YTw2NDthKyspdFtlK2FdPXVbYV07Zm9yKG89MSxhPTg7YTwxNjthKyspbz1vKygyNTUmZlthXSl8MCxmW2FdPTI1NSZvLG8+Pj49ODtyLT02NCxlKz02NH1pZihyPjApZm9yKHModSxmLGksZHQpLGE9MDthPHI7YSsrKXRbZSthXT11W2FdO3JldHVybiAwfWZ1bmN0aW9uIGQodCxlLHIsbixpKXt2YXIgbz1uZXcgVWludDhBcnJheSgzMik7dShvLG4saSxkdCk7Zm9yKHZhciBhPW5ldyBVaW50OEFycmF5KDgpLGY9MDtmPDg7ZisrKWFbZl09bltmKzE2XTtyZXR1cm4gYyh0LGUscixhLG8pfWZ1bmN0aW9uIGwodCxlLHIsbixpLG8sYSl7dmFyIGY9bmV3IFVpbnQ4QXJyYXkoMzIpO3UoZixvLGEsZHQpO2Zvcih2YXIgcz1uZXcgVWludDhBcnJheSg4KSxjPTA7Yzw4O2MrKylzW2NdPW9bYysxNl07cmV0dXJuIGgodCxlLHIsbixpLHMsZil9ZnVuY3Rpb24gcCh0LGUscixuLGksbyl7dmFyIGE9bmV3IGx0KG8pO3JldHVybiBhLnVwZGF0ZShyLG4saSksYS5maW5pc2godCxlKSwwfWZ1bmN0aW9uIGIodCxlLHIsbixvLGEpe3ZhciBmPW5ldyBVaW50OEFycmF5KDE2KTtyZXR1cm4gcChmLDAscixuLG8sYSksaSh0LGUsZiwwKX1mdW5jdGlvbiB2KHQsZSxyLG4saSl7dmFyIG87aWYocjwzMilyZXR1cm4tMTtmb3IobCh0LDAsZSwwLHIsbixpKSxwKHQsMTYsdCwzMixyLTMyLHQpLG89MDtvPDE2O28rKyl0W29dPTA7cmV0dXJuIDB9ZnVuY3Rpb24geSh0LGUscixuLGkpe3ZhciBvLGE9bmV3IFVpbnQ4QXJyYXkoMzIpO2lmKHI8MzIpcmV0dXJuLTE7aWYoZChhLDAsMzIsbixpKSwwIT09YihlLDE2LGUsMzIsci0zMixhKSlyZXR1cm4tMTtmb3IobCh0LDAsZSwwLHIsbixpKSxvPTA7bzwzMjtvKyspdFtvXT0wO3JldHVybiAwfWZ1bmN0aW9uIG0odCxlKXt2YXIgcjtmb3Iocj0wO3I8MTY7cisrKXRbcl09MHxlW3JdfWZ1bmN0aW9uIGcodCl7dmFyIGUscixuPTE7Zm9yKGU9MDtlPDE2O2UrKylyPXRbZV0rbis2NTUzNSxuPU1hdGguZmxvb3Ioci82NTUzNiksdFtlXT1yLTY1NTM2Km47dFswXSs9bi0xKzM3KihuLTEpfWZ1bmN0aW9uIHcodCxlLHIpe2Zvcih2YXIgbixpPX4oci0xKSxvPTA7bzwxNjtvKyspbj1pJih0W29dXmVbb10pLHRbb11ePW4sZVtvXV49bn1mdW5jdGlvbiBfKHQsZSl7dmFyIHIsbixpLG89dHQoKSxhPXR0KCk7Zm9yKHI9MDtyPDE2O3IrKylhW3JdPWVbcl07Zm9yKGcoYSksZyhhKSxnKGEpLG49MDtuPDI7bisrKXtmb3Iob1swXT1hWzBdLTY1NTE3LHI9MTtyPDE1O3IrKylvW3JdPWFbcl0tNjU1MzUtKG9bci0xXT4+MTYmMSksb1tyLTFdJj02NTUzNTtvWzE1XT1hWzE1XS0zMjc2Ny0ob1sxNF0+PjE2JjEpLGk9b1sxNV0+PjE2JjEsb1sxNF0mPTY1NTM1LHcoYSxvLDEtaSl9Zm9yKHI9MDtyPDE2O3IrKyl0WzIqcl09MjU1JmFbcl0sdFsyKnIrMV09YVtyXT4+OH1mdW5jdGlvbiBNKHQsZSl7dmFyIHI9bmV3IFVpbnQ4QXJyYXkoMzIpLG49bmV3IFVpbnQ4QXJyYXkoMzIpO3JldHVybiBfKHIsdCksXyhuLGUpLG8ociwwLG4sMCl9ZnVuY3Rpb24gUyh0KXt2YXIgZT1uZXcgVWludDhBcnJheSgzMik7cmV0dXJuIF8oZSx0KSwxJmVbMF19ZnVuY3Rpb24gRSh0LGUpe3ZhciByO2ZvcihyPTA7cjwxNjtyKyspdFtyXT1lWzIqcl0rKGVbMipyKzFdPDw4KTt0WzE1XSY9MzI3Njd9ZnVuY3Rpb24gQSh0LGUscil7Zm9yKHZhciBuPTA7bjwxNjtuKyspdFtuXT1lW25dK3Jbbl19ZnVuY3Rpb24gayh0LGUscil7Zm9yKHZhciBuPTA7bjwxNjtuKyspdFtuXT1lW25dLXJbbl19ZnVuY3Rpb24geCh0LGUscil7dmFyIG4saSxvPTAsYT0wLGY9MCxzPTAsdT0wLGg9MCxjPTAsZD0wLGw9MCxwPTAsYj0wLHY9MCx5PTAsbT0wLGc9MCx3PTAsXz0wLE09MCxTPTAsRT0wLEE9MCxrPTAseD0wLEk9MCxCPTAsTz0wLFI9MCxQPTAsVD0wLGo9MCxDPTAsTj1yWzBdLEw9clsxXSxVPXJbMl0sej1yWzNdLEQ9cls0XSxxPXJbNV0sRj1yWzZdLEs9cls3XSxHPXJbOF0sVj1yWzldLEg9clsxMF0sWD1yWzExXSxZPXJbMTJdLFc9clsxM10sWj1yWzE0XSxKPXJbMTVdO249ZVswXSxvKz1uKk4sYSs9bipMLGYrPW4qVSxzKz1uKnosdSs9bipELGgrPW4qcSxjKz1uKkYsZCs9bipLLGwrPW4qRyxwKz1uKlYsYis9bipILHYrPW4qWCx5Kz1uKlksbSs9bipXLGcrPW4qWix3Kz1uKkosbj1lWzFdLGErPW4qTixmKz1uKkwscys9bipVLHUrPW4qeixoKz1uKkQsYys9bipxLGQrPW4qRixsKz1uKksscCs9bipHLGIrPW4qVix2Kz1uKkgseSs9bipYLG0rPW4qWSxnKz1uKlcsdys9bipaLF8rPW4qSixuPWVbMl0sZis9bipOLHMrPW4qTCx1Kz1uKlUsaCs9bip6LGMrPW4qRCxkKz1uKnEsbCs9bipGLHArPW4qSyxiKz1uKkcsdis9bipWLHkrPW4qSCxtKz1uKlgsZys9bipZLHcrPW4qVyxfKz1uKlosTSs9bipKLG49ZVszXSxzKz1uKk4sdSs9bipMLGgrPW4qVSxjKz1uKnosZCs9bipELGwrPW4qcSxwKz1uKkYsYis9bipLLHYrPW4qRyx5Kz1uKlYsbSs9bipILGcrPW4qWCx3Kz1uKlksXys9bipXLE0rPW4qWixTKz1uKkosbj1lWzRdLHUrPW4qTixoKz1uKkwsYys9bipVLGQrPW4qeixsKz1uKkQscCs9bipxLGIrPW4qRix2Kz1uKksseSs9bipHLG0rPW4qVixnKz1uKkgsdys9bipYLF8rPW4qWSxNKz1uKlcsUys9bipaLEUrPW4qSixuPWVbNV0saCs9bipOLGMrPW4qTCxkKz1uKlUsbCs9bip6LHArPW4qRCxiKz1uKnEsdis9bipGLHkrPW4qSyxtKz1uKkcsZys9bipWLHcrPW4qSCxfKz1uKlgsTSs9bipZLFMrPW4qVyxFKz1uKlosQSs9bipKLG49ZVs2XSxjKz1uKk4sZCs9bipMLGwrPW4qVSxwKz1uKnosYis9bipELHYrPW4qcSx5Kz1uKkYsbSs9bipLLGcrPW4qRyx3Kz1uKlYsXys9bipILE0rPW4qWCxTKz1uKlksRSs9bipXLEErPW4qWixrKz1uKkosbj1lWzddLGQrPW4qTixsKz1uKkwscCs9bipVLGIrPW4qeix2Kz1uKkQseSs9bipxLG0rPW4qRixnKz1uKkssdys9bipHLF8rPW4qVixNKz1uKkgsUys9bipYLEUrPW4qWSxBKz1uKlcsays9bipaLHgrPW4qSixuPWVbOF0sbCs9bipOLHArPW4qTCxiKz1uKlUsdis9bip6LHkrPW4qRCxtKz1uKnEsZys9bipGLHcrPW4qSyxfKz1uKkcsTSs9bipWLFMrPW4qSCxFKz1uKlgsQSs9bipZLGsrPW4qVyx4Kz1uKlosSSs9bipKLG49ZVs5XSxwKz1uKk4sYis9bipMLHYrPW4qVSx5Kz1uKnosbSs9bipELGcrPW4qcSx3Kz1uKkYsXys9bipLLE0rPW4qRyxTKz1uKlYsRSs9bipILEErPW4qWCxrKz1uKlkseCs9bipXLEkrPW4qWixCKz1uKkosbj1lWzEwXSxiKz1uKk4sdis9bipMLHkrPW4qVSxtKz1uKnosZys9bipELHcrPW4qcSxfKz1uKkYsTSs9bipLLFMrPW4qRyxFKz1uKlYsQSs9bipILGsrPW4qWCx4Kz1uKlksSSs9bipXLEIrPW4qWixPKz1uKkosbj1lWzExXSx2Kz1uKk4seSs9bipMLG0rPW4qVSxnKz1uKnosdys9bipELF8rPW4qcSxNKz1uKkYsUys9bipLLEUrPW4qRyxBKz1uKlYsays9bipILHgrPW4qWDtJKz1uKlk7Qis9bipXLE8rPW4qWixSKz1uKkosbj1lWzEyXSx5Kz1uKk4sbSs9bipMLGcrPW4qVSx3Kz1uKnosXys9bipELE0rPW4qcSxTKz1uKkYsRSs9bipLLEErPW4qRyxrKz1uKlYseCs9bipILEkrPW4qWCxCKz1uKlksTys9bipXLFIrPW4qWixQKz1uKkosbj1lWzEzXSxtKz1uKk4sZys9bipMLHcrPW4qVSxfKz1uKnosTSs9bipELFMrPW4qcSxFKz1uKkYsQSs9bipLLGsrPW4qRyx4Kz1uKlYsSSs9bipILEIrPW4qWCxPKz1uKlksUis9bipXLFArPW4qWixUKz1uKkosbj1lWzE0XSxnKz1uKk4sdys9bipMLF8rPW4qVSxNKz1uKnosUys9bipELEUrPW4qcSxBKz1uKkYsays9bipLLHgrPW4qRyxJKz1uKlYsQis9bipILE8rPW4qWCxSKz1uKlksUCs9bipXLFQrPW4qWixqKz1uKkosbj1lWzE1XSx3Kz1uKk4sXys9bipMLE0rPW4qVSxTKz1uKnosRSs9bipELEErPW4qcSxrKz1uKkYseCs9bipLLEkrPW4qRyxCKz1uKlYsTys9bipILFIrPW4qWCxQKz1uKlksVCs9bipXLGorPW4qWixDKz1uKkosbys9MzgqXyxhKz0zOCpNLGYrPTM4KlMscys9MzgqRSx1Kz0zOCpBLGgrPTM4KmssYys9MzgqeCxkKz0zOCpJLGwrPTM4KkIscCs9MzgqTyxiKz0zOCpSLHYrPTM4KlAseSs9MzgqVCxtKz0zOCpqLGcrPTM4KkMsaT0xLG49bytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxvPW4tNjU1MzYqaSxuPWEraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksYT1uLTY1NTM2Kmksbj1mK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGY9bi02NTUzNippLG49cytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxzPW4tNjU1MzYqaSxuPXUraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksdT1uLTY1NTM2Kmksbj1oK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGg9bi02NTUzNippLG49YytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxjPW4tNjU1MzYqaSxuPWQraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksZD1uLTY1NTM2Kmksbj1sK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGw9bi02NTUzNippLG49cCtpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxwPW4tNjU1MzYqaSxuPWIraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksYj1uLTY1NTM2Kmksbj12K2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLHY9bi02NTUzNippLG49eStpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSx5PW4tNjU1MzYqaSxuPW0raSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksbT1uLTY1NTM2Kmksbj1nK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGc9bi02NTUzNippLG49dytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSx3PW4tNjU1MzYqaSxvKz1pLTErMzcqKGktMSksaT0xLG49bytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxvPW4tNjU1MzYqaSxuPWEraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksYT1uLTY1NTM2Kmksbj1mK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGY9bi02NTUzNippLG49cytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxzPW4tNjU1MzYqaSxuPXUraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksdT1uLTY1NTM2Kmksbj1oK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGg9bi02NTUzNippLG49YytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxjPW4tNjU1MzYqaSxuPWQraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksZD1uLTY1NTM2Kmksbj1sK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGw9bi02NTUzNippLG49cCtpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSxwPW4tNjU1MzYqaSxuPWIraSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksYj1uLTY1NTM2Kmksbj12K2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLHY9bi02NTUzNippLG49eStpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSx5PW4tNjU1MzYqaSxuPW0raSs2NTUzNSxpPU1hdGguZmxvb3Iobi82NTUzNiksbT1uLTY1NTM2Kmksbj1nK2krNjU1MzUsaT1NYXRoLmZsb29yKG4vNjU1MzYpLGc9bi02NTUzNippLG49dytpKzY1NTM1LGk9TWF0aC5mbG9vcihuLzY1NTM2KSx3PW4tNjU1MzYqaSxvKz1pLTErMzcqKGktMSksdFswXT1vLHRbMV09YSx0WzJdPWYsdFszXT1zLHRbNF09dSx0WzVdPWgsdFs2XT1jLHRbN109ZCx0WzhdPWwsdFs5XT1wLHRbMTBdPWIsdFsxMV09dix0WzEyXT15LHRbMTNdPW07dFsxNF09Zzt0WzE1XT13fWZ1bmN0aW9uIEkodCxlKXt4KHQsZSxlKX1mdW5jdGlvbiBCKHQsZSl7dmFyIHIsbj10dCgpO2ZvcihyPTA7cjwxNjtyKyspbltyXT1lW3JdO2ZvcihyPTI1MztyPj0wO3ItLSlJKG4sbiksMiE9PXImJjQhPT1yJiZ4KG4sbixlKTtmb3Iocj0wO3I8MTY7cisrKXRbcl09bltyXX1mdW5jdGlvbiBPKHQsZSl7dmFyIHIsbj10dCgpO2ZvcihyPTA7cjwxNjtyKyspbltyXT1lW3JdO2ZvcihyPTI1MDtyPj0wO3ItLSlJKG4sbiksMSE9PXImJngobixuLGUpO2ZvcihyPTA7cjwxNjtyKyspdFtyXT1uW3JdfWZ1bmN0aW9uIFIodCxlLHIpe3ZhciBuLGksbz1uZXcgVWludDhBcnJheSgzMiksYT1uZXcgRmxvYXQ2NEFycmF5KDgwKSxmPXR0KCkscz10dCgpLHU9dHQoKSxoPXR0KCksYz10dCgpLGQ9dHQoKTtmb3IoaT0wO2k8MzE7aSsrKW9baV09ZVtpXTtmb3Iob1szMV09MTI3JmVbMzFdfDY0LG9bMF0mPTI0OCxFKGEsciksaT0wO2k8MTY7aSsrKXNbaV09YVtpXSxoW2ldPWZbaV09dVtpXT0wO2ZvcihmWzBdPWhbMF09MSxpPTI1NDtpPj0wOy0taSluPW9baT4+PjNdPj4+KDcmaSkmMSx3KGYscyxuKSx3KHUsaCxuKSxBKGMsZix1KSxrKGYsZix1KSxBKHUscyxoKSxrKHMscyxoKSxJKGgsYyksSShkLGYpLHgoZix1LGYpLHgodSxzLGMpLEEoYyxmLHUpLGsoZixmLHUpLEkocyxmKSxrKHUsaCxkKSx4KGYsdSxhdCksQShmLGYsaCkseCh1LHUsZikseChmLGgsZCkseChoLHMsYSksSShzLGMpLHcoZixzLG4pLHcodSxoLG4pO2ZvcihpPTA7aTwxNjtpKyspYVtpKzE2XT1mW2ldLGFbaSszMl09dVtpXSxhW2krNDhdPXNbaV0sYVtpKzY0XT1oW2ldO3ZhciBsPWEuc3ViYXJyYXkoMzIpLHA9YS5zdWJhcnJheSgxNik7cmV0dXJuIEIobCxsKSx4KHAscCxsKSxfKHQscCksMH1mdW5jdGlvbiBQKHQsZSl7cmV0dXJuIFIodCxlLG50KX1mdW5jdGlvbiBUKHQsZSl7cmV0dXJuIGV0KGUsMzIpLFAodCxlKX1mdW5jdGlvbiBqKHQsZSxyKXt2YXIgbj1uZXcgVWludDhBcnJheSgzMik7cmV0dXJuIFIobixyLGUpLHUodCxydCxuLGR0KX1mdW5jdGlvbiBDKHQsZSxyLG4saSxvKXt2YXIgYT1uZXcgVWludDhBcnJheSgzMik7cmV0dXJuIGooYSxpLG8pLHB0KHQsZSxyLG4sYSl9ZnVuY3Rpb24gTih0LGUscixuLGksbyl7dmFyIGE9bmV3IFVpbnQ4QXJyYXkoMzIpO3JldHVybiBqKGEsaSxvKSxidCh0LGUscixuLGEpfWZ1bmN0aW9uIEwodCxlLHIsbil7Zm9yKHZhciBpLG8sYSxmLHMsdSxoLGMsZCxsLHAsYix2LHksbSxnLHcsXyxNLFMsRSxBLGsseCxJLEIsTz1uZXcgSW50MzJBcnJheSgxNiksUj1uZXcgSW50MzJBcnJheSgxNiksUD10WzBdLFQ9dFsxXSxqPXRbMl0sQz10WzNdLE49dFs0XSxMPXRbNV0sVT10WzZdLHo9dFs3XSxEPWVbMF0scT1lWzFdLEY9ZVsyXSxLPWVbM10sRz1lWzRdLFY9ZVs1XSxIPWVbNl0sWD1lWzddLFk9MDtuPj0xMjg7KXtmb3IoTT0wO008MTY7TSsrKVM9OCpNK1ksT1tNXT1yW1MrMF08PDI0fHJbUysxXTw8MTZ8cltTKzJdPDw4fHJbUyszXSxSW01dPXJbUys0XTw8MjR8cltTKzVdPDwxNnxyW1MrNl08PDh8cltTKzddO2ZvcihNPTA7TTw4MDtNKyspaWYoaT1QLG89VCxhPWosZj1DLHM9Tix1PUwsaD1VLGM9eixkPUQsbD1xLHA9RixiPUssdj1HLHk9VixtPUgsZz1YLEU9eixBPVgsaz02NTUzNSZBLHg9QT4+PjE2LEk9NjU1MzUmRSxCPUU+Pj4xNixFPShOPj4+MTR8Rzw8MTgpXihOPj4+MTh8Rzw8MTQpXihHPj4+OXxOPDwyMyksQT0oRz4+PjE0fE48PDE4KV4oRz4+PjE4fE48PDE0KV4oTj4+Pjl8Rzw8MjMpLGsrPTY1NTM1JkEseCs9QT4+PjE2LEkrPTY1NTM1JkUsQis9RT4+PjE2LEU9TiZMXn5OJlUsQT1HJlZefkcmSCxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNixFPXZ0WzIqTV0sQT12dFsyKk0rMV0says9NjU1MzUmQSx4Kz1BPj4+MTYsSSs9NjU1MzUmRSxCKz1FPj4+MTYsRT1PW00lMTZdLEE9UltNJTE2XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix3PTY1NTM1Jkl8Qjw8MTYsXz02NTUzNSZrfHg8PDE2LEU9dyxBPV8saz02NTUzNSZBLHg9QT4+PjE2LEk9NjU1MzUmRSxCPUU+Pj4xNixFPShQPj4+Mjh8RDw8NCleKEQ+Pj4yfFA8PDMwKV4oRD4+Pjd8UDw8MjUpLEE9KEQ+Pj4yOHxQPDw0KV4oUD4+PjJ8RDw8MzApXihQPj4+N3xEPDwyNSksays9NjU1MzUmQSx4Kz1BPj4+MTYsSSs9NjU1MzUmRSxCKz1FPj4+MTYsRT1QJlReUCZqXlQmaixBPUQmcV5EJkZecSZGLGsrPTY1NTM1JkEseCs9QT4+PjE2LEkrPTY1NTM1JkUsQis9RT4+PjE2LHgrPWs+Pj4xNixJKz14Pj4+MTYsQis9ST4+PjE2LGM9NjU1MzUmSXxCPDwxNixnPTY1NTM1Jmt8eDw8MTYsRT1mLEE9YixrPTY1NTM1JkEseD1BPj4+MTYsST02NTUzNSZFLEI9RT4+PjE2LEU9dyxBPV8says9NjU1MzUmQSx4Kz1BPj4+MTYsSSs9NjU1MzUmRSxCKz1FPj4+MTYseCs9az4+PjE2LEkrPXg+Pj4xNixCKz1JPj4+MTYsZj02NTUzNSZJfEI8PDE2LGI9NjU1MzUma3x4PDwxNixUPWksaj1vLEM9YSxOPWYsTD1zLFU9dSx6PWgsUD1jLHE9ZCxGPWwsSz1wLEc9YixWPXYsSD15LFg9bSxEPWcsTSUxNj09PTE1KWZvcihTPTA7UzwxNjtTKyspRT1PW1NdLEE9UltTXSxrPTY1NTM1JkEseD1BPj4+MTYsST02NTUzNSZFLEI9RT4+PjE2LEU9T1soUys5KSUxNl0sQT1SWyhTKzkpJTE2XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix3PU9bKFMrMSklMTZdLF89UlsoUysxKSUxNl0sRT0odz4+PjF8Xzw8MzEpXih3Pj4+OHxfPDwyNCledz4+PjcsQT0oXz4+PjF8dzw8MzEpXihfPj4+OHx3PDwyNCleKF8+Pj43fHc8PDI1KSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix3PU9bKFMrMTQpJTE2XSxfPVJbKFMrMTQpJTE2XSxFPSh3Pj4+MTl8Xzw8MTMpXihfPj4+Mjl8dzw8Myledz4+PjYsQT0oXz4+PjE5fHc8PDEzKV4odz4+PjI5fF88PDMpXihfPj4+Nnx3PDwyNiksays9NjU1MzUmQSx4Kz1BPj4+MTYsSSs9NjU1MzUmRSxCKz1FPj4+MTYseCs9az4+PjE2LEkrPXg+Pj4xNixCKz1JPj4+MTYsT1tTXT02NTUzNSZJfEI8PDE2LFJbU109NjU1MzUma3x4PDwxNjtFPVAsQT1ELGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzBdLEE9ZVswXSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzBdPVA9NjU1MzUmSXxCPDwxNixlWzBdPUQ9NjU1MzUma3x4PDwxNixFPVQsQT1xLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzFdLEE9ZVsxXSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzFdPVQ9NjU1MzUmSXxCPDwxNixlWzFdPXE9NjU1MzUma3x4PDwxNixFPWosQT1GLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzJdLEE9ZVsyXSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzJdPWo9NjU1MzUmSXxCPDwxNixlWzJdPUY9NjU1MzUma3x4PDwxNixFPUMsQT1LLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzNdLEE9ZVszXSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzNdPUM9NjU1MzUmSXxCPDwxNixlWzNdPUs9NjU1MzUma3x4PDwxNixFPU4sQT1HLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzRdLEE9ZVs0XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzRdPU49NjU1MzUmSXxCPDwxNixlWzRdPUc9NjU1MzUma3x4PDwxNixFPUwsQT1WLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzVdLEE9ZVs1XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzVdPUw9NjU1MzUmSXxCPDwxNixlWzVdPVY9NjU1MzUma3x4PDwxNixFPVUsQT1ILGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzZdLEE9ZVs2XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzZdPVU9NjU1MzUmSXxCPDwxNixlWzZdPUg9NjU1MzUma3x4PDwxNixFPXosQT1YLGs9NjU1MzUmQSx4PUE+Pj4xNixJPTY1NTM1JkUsQj1FPj4+MTYsRT10WzddLEE9ZVs3XSxrKz02NTUzNSZBLHgrPUE+Pj4xNixJKz02NTUzNSZFLEIrPUU+Pj4xNix4Kz1rPj4+MTYsSSs9eD4+PjE2LEIrPUk+Pj4xNix0WzddPXo9NjU1MzUmSXxCPDwxNixlWzddPVg9NjU1MzUma3x4PDwxNixZKz0xMjgsbi09MTI4fXJldHVybiBufWZ1bmN0aW9uIFUodCxyLG4pe3ZhciBpLG89bmV3IEludDMyQXJyYXkoOCksYT1uZXcgSW50MzJBcnJheSg4KSxmPW5ldyBVaW50OEFycmF5KDI1Nikscz1uO2ZvcihvWzBdPTE3NzkwMzM3MDMsb1sxXT0zMTQ0MTM0Mjc3LG9bMl09MTAxMzkwNDI0MixvWzNdPTI3NzM0ODA3NjIsb1s0XT0xMzU5ODkzMTE5LG9bNV09MjYwMDgyMjkyNCxvWzZdPTUyODczNDYzNSxvWzddPTE1NDE0NTkyMjUsYVswXT00MDg5MjM1NzIwLGFbMV09MjIyNzg3MzU5NSxhWzJdPTQyNzExNzU3MjMsYVszXT0xNTk1NzUwMTI5LGFbNF09MjkxNzU2NTEzNyxhWzVdPTcyNTUxMTE5OSxhWzZdPTQyMTUzODk1NDcsYVs3XT0zMjcwMzMyMDksTChvLGEscixuKSxuJT0xMjgsaT0wO2k8bjtpKyspZltpXT1yW3MtbitpXTtmb3IoZltuXT0xMjgsbj0yNTYtMTI4KihuPDExMj8xOjApLGZbbi05XT0wLGUoZixuLTgscy81MzY4NzA5MTJ8MCxzPDwzKSxMKG8sYSxmLG4pLGk9MDtpPDg7aSsrKWUodCw4Kmksb1tpXSxhW2ldKTtyZXR1cm4gMH1mdW5jdGlvbiB6KHQsZSl7dmFyIHI9dHQoKSxuPXR0KCksaT10dCgpLG89dHQoKSxhPXR0KCksZj10dCgpLHM9dHQoKSx1PXR0KCksaD10dCgpO2socix0WzFdLHRbMF0pLGsoaCxlWzFdLGVbMF0pLHgocixyLGgpLEEobix0WzBdLHRbMV0pLEEoaCxlWzBdLGVbMV0pLHgobixuLGgpLHgoaSx0WzNdLGVbM10pLHgoaSxpLHN0KSx4KG8sdFsyXSxlWzJdKSxBKG8sbyxvKSxrKGEsbixyKSxrKGYsbyxpKSxBKHMsbyxpKSxBKHUsbixyKSx4KHRbMF0sYSxmKSx4KHRbMV0sdSxzKSx4KHRbMl0scyxmKSx4KHRbM10sYSx1KX1mdW5jdGlvbiBEKHQsZSxyKXt2YXIgbjtmb3Iobj0wO248NDtuKyspdyh0W25dLGVbbl0scil9ZnVuY3Rpb24gcSh0LGUpe3ZhciByPXR0KCksbj10dCgpLGk9dHQoKTtCKGksZVsyXSkseChyLGVbMF0saSkseChuLGVbMV0saSksXyh0LG4pLHRbMzFdXj1TKHIpPDw3fWZ1bmN0aW9uIEYodCxlLHIpe3ZhciBuLGk7Zm9yKG0odFswXSxpdCksbSh0WzFdLG90KSxtKHRbMl0sb3QpLG0odFszXSxpdCksaT0yNTU7aT49MDstLWkpbj1yW2kvOHwwXT4+KDcmaSkmMSxEKHQsZSxuKSx6KGUsdCkseih0LHQpLEQodCxlLG4pfWZ1bmN0aW9uIEsodCxlKXt2YXIgcj1bdHQoKSx0dCgpLHR0KCksdHQoKV07XG5tKHJbMF0sdXQpLG0oclsxXSxodCksbShyWzJdLG90KSx4KHJbM10sdXQsaHQpLEYodCxyLGUpfWZ1bmN0aW9uIEcodCxlLHIpe3ZhciBuLGk9bmV3IFVpbnQ4QXJyYXkoNjQpLG89W3R0KCksdHQoKSx0dCgpLHR0KCldO2ZvcihyfHxldChlLDMyKSxVKGksZSwzMiksaVswXSY9MjQ4LGlbMzFdJj0xMjcsaVszMV18PTY0LEsobyxpKSxxKHQsbyksbj0wO248MzI7bisrKWVbbiszMl09dFtuXTtyZXR1cm4gMH1mdW5jdGlvbiBWKHQsZSl7dmFyIHIsbixpLG87Zm9yKG49NjM7bj49MzI7LS1uKXtmb3Iocj0wLGk9bi0zMixvPW4tMTI7aTxvOysraSllW2ldKz1yLTE2KmVbbl0qeXRbaS0obi0zMildLHI9ZVtpXSsxMjg+PjgsZVtpXS09MjU2KnI7ZVtpXSs9cixlW25dPTB9Zm9yKHI9MCxpPTA7aTwzMjtpKyspZVtpXSs9ci0oZVszMV0+PjQpKnl0W2ldLHI9ZVtpXT4+OCxlW2ldJj0yNTU7Zm9yKGk9MDtpPDMyO2krKyllW2ldLT1yKnl0W2ldO2ZvcihuPTA7bjwzMjtuKyspZVtuKzFdKz1lW25dPj44LHRbbl09MjU1JmVbbl19ZnVuY3Rpb24gSCh0KXt2YXIgZSxyPW5ldyBGbG9hdDY0QXJyYXkoNjQpO2ZvcihlPTA7ZTw2NDtlKyspcltlXT10W2VdO2ZvcihlPTA7ZTw2NDtlKyspdFtlXT0wO1YodCxyKX1mdW5jdGlvbiBYKHQsZSxyLG4pe3ZhciBpLG8sYT1uZXcgVWludDhBcnJheSg2NCksZj1uZXcgVWludDhBcnJheSg2NCkscz1uZXcgVWludDhBcnJheSg2NCksdT1uZXcgRmxvYXQ2NEFycmF5KDY0KSxoPVt0dCgpLHR0KCksdHQoKSx0dCgpXTtVKGEsbiwzMiksYVswXSY9MjQ4LGFbMzFdJj0xMjcsYVszMV18PTY0O3ZhciBjPXIrNjQ7Zm9yKGk9MDtpPHI7aSsrKXRbNjQraV09ZVtpXTtmb3IoaT0wO2k8MzI7aSsrKXRbMzIraV09YVszMitpXTtmb3IoVShzLHQuc3ViYXJyYXkoMzIpLHIrMzIpLEgocyksSyhoLHMpLHEodCxoKSxpPTMyO2k8NjQ7aSsrKXRbaV09bltpXTtmb3IoVShmLHQscis2NCksSChmKSxpPTA7aTw2NDtpKyspdVtpXT0wO2ZvcihpPTA7aTwzMjtpKyspdVtpXT1zW2ldO2ZvcihpPTA7aTwzMjtpKyspZm9yKG89MDtvPDMyO28rKyl1W2krb10rPWZbaV0qYVtvXTtyZXR1cm4gVih0LnN1YmFycmF5KDMyKSx1KSxjfWZ1bmN0aW9uIFkodCxlKXt2YXIgcj10dCgpLG49dHQoKSxpPXR0KCksbz10dCgpLGE9dHQoKSxmPXR0KCkscz10dCgpO3JldHVybiBtKHRbMl0sb3QpLEUodFsxXSxlKSxJKGksdFsxXSkseChvLGksZnQpLGsoaSxpLHRbMl0pLEEobyx0WzJdLG8pLEkoYSxvKSxJKGYsYSkseChzLGYsYSkseChyLHMsaSkseChyLHIsbyksTyhyLHIpLHgocixyLGkpLHgocixyLG8pLHgocixyLG8pLHgodFswXSxyLG8pLEkobix0WzBdKSx4KG4sbixvKSxNKG4saSkmJngodFswXSx0WzBdLGN0KSxJKG4sdFswXSkseChuLG4sbyksTShuLGkpPy0xOihTKHRbMF0pPT09ZVszMV0+PjcmJmsodFswXSxpdCx0WzBdKSx4KHRbM10sdFswXSx0WzFdKSwwKX1mdW5jdGlvbiBXKHQsZSxyLG4pe3ZhciBpLGEsZj1uZXcgVWludDhBcnJheSgzMikscz1uZXcgVWludDhBcnJheSg2NCksdT1bdHQoKSx0dCgpLHR0KCksdHQoKV0saD1bdHQoKSx0dCgpLHR0KCksdHQoKV07aWYoYT0tMSxyPDY0KXJldHVybi0xO2lmKFkoaCxuKSlyZXR1cm4tMTtmb3IoaT0wO2k8cjtpKyspdFtpXT1lW2ldO2ZvcihpPTA7aTwzMjtpKyspdFtpKzMyXT1uW2ldO2lmKFUocyx0LHIpLEgocyksRih1LGgscyksSyhoLGUuc3ViYXJyYXkoMzIpKSx6KHUsaCkscShmLHUpLHItPTY0LG8oZSwwLGYsMCkpe2ZvcihpPTA7aTxyO2krKyl0W2ldPTA7cmV0dXJuLTF9Zm9yKGk9MDtpPHI7aSsrKXRbaV09ZVtpKzY0XTtyZXR1cm4gYT1yfWZ1bmN0aW9uIFoodCxlKXtpZih0Lmxlbmd0aCE9PW10KXRocm93IG5ldyBFcnJvcihcImJhZCBrZXkgc2l6ZVwiKTtpZihlLmxlbmd0aCE9PWd0KXRocm93IG5ldyBFcnJvcihcImJhZCBub25jZSBzaXplXCIpfWZ1bmN0aW9uIEoodCxlKXtpZih0Lmxlbmd0aCE9PUV0KXRocm93IG5ldyBFcnJvcihcImJhZCBwdWJsaWMga2V5IHNpemVcIik7aWYoZS5sZW5ndGghPT1BdCl0aHJvdyBuZXcgRXJyb3IoXCJiYWQgc2VjcmV0IGtleSBzaXplXCIpfWZ1bmN0aW9uICQoKXt2YXIgdCxlO2ZvcihlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKylpZihcIltvYmplY3QgVWludDhBcnJheV1cIiE9PSh0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudHNbZV0pKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwidW5leHBlY3RlZCB0eXBlIFwiK3QrXCIsIHVzZSBVaW50OEFycmF5XCIpfWZ1bmN0aW9uIFEodCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT0wfXZhciB0dD1mdW5jdGlvbih0KXt2YXIgZSxyPW5ldyBGbG9hdDY0QXJyYXkoMTYpO2lmKHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylyW2VdPXRbZV07cmV0dXJuIHJ9LGV0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwibm8gUFJOR1wiKX0scnQ9bmV3IFVpbnQ4QXJyYXkoMTYpLG50PW5ldyBVaW50OEFycmF5KDMyKTtudFswXT05O3ZhciBpdD10dCgpLG90PXR0KFsxXSksYXQ9dHQoWzU2MTI5LDFdKSxmdD10dChbMzA4ODMsNDk1MywxOTkxNCwzMDE4Nyw1NTQ2NywxNjcwNSwyNjM3LDExMiw1OTU0NCwzMDU4NSwxNjUwNSwzNjAzOSw2NTEzOSwxMTExOSwyNzg4NiwyMDk5NV0pLHN0PXR0KFs2MTc4NSw5OTA2LDM5ODI4LDYwMzc0LDQ1Mzk4LDMzNDExLDUyNzQsMjI0LDUzNTUyLDYxMTcxLDMzMDEwLDY1NDIsNjQ3NDMsMjIyMzksNTU3NzIsOTIyMl0pLHV0PXR0KFs1NDU1NCwzNjY0NSwxMTYxNiw1MTU0Miw0MjkzMCwzODE4MSw1MTA0MCwyNjkyNCw1NjQxMiw2NDk4Miw1NzkwNSw0OTMxNiwyMTUwMiw1MjU5MCwxNDAzNSw4NTUzXSksaHQ9dHQoWzI2MjAwLDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0LDI2MjE0XSksY3Q9dHQoWzQxMTM2LDE4OTU4LDY5NTEsNTA0MTQsNTg0ODgsNDQzMzUsNjE1MCwxMjA5OSw1NTIwNywxNTg2NywxNTMsMTEwODUsNTcwOTksMjA0MTcsOTM0NCwxMTEzOV0pLGR0PW5ldyBVaW50OEFycmF5KFsxMDEsMTIwLDExMiw5NywxMTAsMTAwLDMyLDUxLDUwLDQ1LDk4LDEyMSwxMTYsMTAxLDMyLDEwN10pLGx0PWZ1bmN0aW9uKHQpe3RoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDE2KSx0aGlzLnI9bmV3IFVpbnQxNkFycmF5KDEwKSx0aGlzLmg9bmV3IFVpbnQxNkFycmF5KDEwKSx0aGlzLnBhZD1uZXcgVWludDE2QXJyYXkoOCksdGhpcy5sZWZ0b3Zlcj0wLHRoaXMuZmluPTA7dmFyIGUscixuLGksbyxhLGYscztlPTI1NSZ0WzBdfCgyNTUmdFsxXSk8PDgsdGhpcy5yWzBdPTgxOTEmZSxyPTI1NSZ0WzJdfCgyNTUmdFszXSk8PDgsdGhpcy5yWzFdPTgxOTEmKGU+Pj4xM3xyPDwzKSxuPTI1NSZ0WzRdfCgyNTUmdFs1XSk8PDgsdGhpcy5yWzJdPTc5MzkmKHI+Pj4xMHxuPDw2KSxpPTI1NSZ0WzZdfCgyNTUmdFs3XSk8PDgsdGhpcy5yWzNdPTgxOTEmKG4+Pj43fGk8PDkpLG89MjU1JnRbOF18KDI1NSZ0WzldKTw8OCx0aGlzLnJbNF09MjU1JihpPj4+NHxvPDwxMiksdGhpcy5yWzVdPW8+Pj4xJjgxOTAsYT0yNTUmdFsxMF18KDI1NSZ0WzExXSk8PDgsdGhpcy5yWzZdPTgxOTEmKG8+Pj4xNHxhPDwyKSxmPTI1NSZ0WzEyXXwoMjU1JnRbMTNdKTw8OCx0aGlzLnJbN109ODA2NSYoYT4+PjExfGY8PDUpLHM9MjU1JnRbMTRdfCgyNTUmdFsxNV0pPDw4LHRoaXMucls4XT04MTkxJihmPj4+OHxzPDw4KSx0aGlzLnJbOV09cz4+PjUmMTI3LHRoaXMucGFkWzBdPTI1NSZ0WzE2XXwoMjU1JnRbMTddKTw8OCx0aGlzLnBhZFsxXT0yNTUmdFsxOF18KDI1NSZ0WzE5XSk8PDgsdGhpcy5wYWRbMl09MjU1JnRbMjBdfCgyNTUmdFsyMV0pPDw4LHRoaXMucGFkWzNdPTI1NSZ0WzIyXXwoMjU1JnRbMjNdKTw8OCx0aGlzLnBhZFs0XT0yNTUmdFsyNF18KDI1NSZ0WzI1XSk8PDgsdGhpcy5wYWRbNV09MjU1JnRbMjZdfCgyNTUmdFsyN10pPDw4LHRoaXMucGFkWzZdPTI1NSZ0WzI4XXwoMjU1JnRbMjldKTw8OCx0aGlzLnBhZFs3XT0yNTUmdFszMF18KDI1NSZ0WzMxXSk8PDh9O2x0LnByb3RvdHlwZS5ibG9ja3M9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbixpLG8sYSxmLHMsdSxoLGMsZCxsLHAsYix2LHksbSxnLHcsXyxNPXRoaXMuZmluPzA6MjA0OCxTPXRoaXMuaFswXSxFPXRoaXMuaFsxXSxBPXRoaXMuaFsyXSxrPXRoaXMuaFszXSx4PXRoaXMuaFs0XSxJPXRoaXMuaFs1XSxCPXRoaXMuaFs2XSxPPXRoaXMuaFs3XSxSPXRoaXMuaFs4XSxQPXRoaXMuaFs5XSxUPXRoaXMuclswXSxqPXRoaXMuclsxXSxDPXRoaXMuclsyXSxOPXRoaXMuclszXSxMPXRoaXMucls0XSxVPXRoaXMucls1XSx6PXRoaXMucls2XSxEPXRoaXMucls3XSxxPXRoaXMucls4XSxGPXRoaXMucls5XTtyPj0xNjspbj0yNTUmdFtlKzBdfCgyNTUmdFtlKzFdKTw8OCxTKz04MTkxJm4saT0yNTUmdFtlKzJdfCgyNTUmdFtlKzNdKTw8OCxFKz04MTkxJihuPj4+MTN8aTw8Myksbz0yNTUmdFtlKzRdfCgyNTUmdFtlKzVdKTw8OCxBKz04MTkxJihpPj4+MTB8bzw8NiksYT0yNTUmdFtlKzZdfCgyNTUmdFtlKzddKTw8OCxrKz04MTkxJihvPj4+N3xhPDw5KSxmPTI1NSZ0W2UrOF18KDI1NSZ0W2UrOV0pPDw4LHgrPTgxOTEmKGE+Pj40fGY8PDEyKSxJKz1mPj4+MSY4MTkxLHM9MjU1JnRbZSsxMF18KDI1NSZ0W2UrMTFdKTw8OCxCKz04MTkxJihmPj4+MTR8czw8MiksdT0yNTUmdFtlKzEyXXwoMjU1JnRbZSsxM10pPDw4LE8rPTgxOTEmKHM+Pj4xMXx1PDw1KSxoPTI1NSZ0W2UrMTRdfCgyNTUmdFtlKzE1XSk8PDgsUis9ODE5MSYodT4+Pjh8aDw8OCksUCs9aD4+PjV8TSxjPTAsZD1jLGQrPVMqVCxkKz1FKig1KkYpLGQrPUEqKDUqcSksZCs9ayooNSpEKSxkKz14Kig1KnopLGM9ZD4+PjEzLGQmPTgxOTEsZCs9SSooNSpVKSxkKz1CKig1KkwpLGQrPU8qKDUqTiksZCs9UiooNSpDKSxkKz1QKig1KmopLGMrPWQ+Pj4xMyxkJj04MTkxLGw9YyxsKz1TKmosbCs9RSpULGwrPUEqKDUqRiksbCs9ayooNSpxKSxsKz14Kig1KkQpLGM9bD4+PjEzLGwmPTgxOTEsbCs9SSooNSp6KSxsKz1CKig1KlUpLGwrPU8qKDUqTCksbCs9UiooNSpOKSxsKz1QKig1KkMpLGMrPWw+Pj4xMyxsJj04MTkxLHA9YyxwKz1TKkMscCs9RSpqLHArPUEqVCxwKz1rKig1KkYpLHArPXgqKDUqcSksYz1wPj4+MTMscCY9ODE5MSxwKz1JKig1KkQpLHArPUIqKDUqeikscCs9TyooNSpVKSxwKz1SKig1KkwpLHArPVAqKDUqTiksYys9cD4+PjEzLHAmPTgxOTEsYj1jLGIrPVMqTixiKz1FKkMsYis9QSpqLGIrPWsqVCxiKz14Kig1KkYpLGM9Yj4+PjEzLGImPTgxOTEsYis9SSooNSpxKSxiKz1CKig1KkQpLGIrPU8qKDUqeiksYis9UiooNSpVKSxiKz1QKig1KkwpLGMrPWI+Pj4xMyxiJj04MTkxLHY9Yyx2Kz1TKkwsdis9RSpOLHYrPUEqQyx2Kz1rKmosdis9eCpULGM9dj4+PjEzLHYmPTgxOTEsdis9SSooNSpGKSx2Kz1CKig1KnEpLHYrPU8qKDUqRCksdis9UiooNSp6KSx2Kz1QKig1KlUpLGMrPXY+Pj4xMyx2Jj04MTkxLHk9Yyx5Kz1TKlUseSs9RSpMLHkrPUEqTix5Kz1rKkMseSs9eCpqLGM9eT4+PjEzLHkmPTgxOTEseSs9SSpULHkrPUIqKDUqRikseSs9TyooNSpxKSx5Kz1SKig1KkQpLHkrPVAqKDUqeiksYys9eT4+PjEzLHkmPTgxOTEsbT1jLG0rPVMqeixtKz1FKlUsbSs9QSpMLG0rPWsqTixtKz14KkMsYz1tPj4+MTMsbSY9ODE5MSxtKz1JKmosbSs9QipULG0rPU8qKDUqRiksbSs9UiooNSpxKSxtKz1QKig1KkQpLGMrPW0+Pj4xMyxtJj04MTkxLGc9YyxnKz1TKkQsZys9RSp6LGcrPUEqVSxnKz1rKkwsZys9eCpOLGM9Zz4+PjEzLGcmPTgxOTEsZys9SSpDLGcrPUIqaixnKz1PKlQsZys9UiooNSpGKSxnKz1QKig1KnEpLGMrPWc+Pj4xMyxnJj04MTkxLHc9Yyx3Kz1TKnEsdys9RSpELHcrPUEqeix3Kz1rKlUsdys9eCpMLGM9dz4+PjEzLHcmPTgxOTEsdys9SSpOLHcrPUIqQyx3Kz1PKmosdys9UipULHcrPVAqKDUqRiksYys9dz4+PjEzLHcmPTgxOTEsXz1jLF8rPVMqRixfKz1FKnEsXys9QSpELF8rPWsqeixfKz14KlUsYz1fPj4+MTMsXyY9ODE5MSxfKz1JKkwsXys9QipOLF8rPU8qQyxfKz1SKmosXys9UCpULGMrPV8+Pj4xMyxfJj04MTkxLGM9KGM8PDIpK2N8MCxjPWMrZHwwLGQ9ODE5MSZjLGM+Pj49MTMsbCs9YyxTPWQsRT1sLEE9cCxrPWIseD12LEk9eSxCPW0sTz1nLFI9dyxQPV8sZSs9MTYsci09MTY7dGhpcy5oWzBdPVMsdGhpcy5oWzFdPUUsdGhpcy5oWzJdPUEsdGhpcy5oWzNdPWssdGhpcy5oWzRdPXgsdGhpcy5oWzVdPUksdGhpcy5oWzZdPUIsdGhpcy5oWzddPU8sdGhpcy5oWzhdPVIsdGhpcy5oWzldPVB9LGx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksbyxhPW5ldyBVaW50MTZBcnJheSgxMCk7aWYodGhpcy5sZWZ0b3Zlcil7Zm9yKG89dGhpcy5sZWZ0b3Zlcix0aGlzLmJ1ZmZlcltvKytdPTE7bzwxNjtvKyspdGhpcy5idWZmZXJbb109MDt0aGlzLmZpbj0xLHRoaXMuYmxvY2tzKHRoaXMuYnVmZmVyLDAsMTYpfWZvcihyPXRoaXMuaFsxXT4+PjEzLHRoaXMuaFsxXSY9ODE5MSxvPTI7bzwxMDtvKyspdGhpcy5oW29dKz1yLHI9dGhpcy5oW29dPj4+MTMsdGhpcy5oW29dJj04MTkxO2Zvcih0aGlzLmhbMF0rPTUqcixyPXRoaXMuaFswXT4+PjEzLHRoaXMuaFswXSY9ODE5MSx0aGlzLmhbMV0rPXIscj10aGlzLmhbMV0+Pj4xMyx0aGlzLmhbMV0mPTgxOTEsdGhpcy5oWzJdKz1yLGFbMF09dGhpcy5oWzBdKzUscj1hWzBdPj4+MTMsYVswXSY9ODE5MSxvPTE7bzwxMDtvKyspYVtvXT10aGlzLmhbb10rcixyPWFbb10+Pj4xMyxhW29dJj04MTkxO2ZvcihhWzldLT04MTkyLG49KDFeciktMSxvPTA7bzwxMDtvKyspYVtvXSY9bjtmb3Iobj1+bixvPTA7bzwxMDtvKyspdGhpcy5oW29dPXRoaXMuaFtvXSZufGFbb107Zm9yKHRoaXMuaFswXT02NTUzNSYodGhpcy5oWzBdfHRoaXMuaFsxXTw8MTMpLHRoaXMuaFsxXT02NTUzNSYodGhpcy5oWzFdPj4+M3x0aGlzLmhbMl08PDEwKSx0aGlzLmhbMl09NjU1MzUmKHRoaXMuaFsyXT4+PjZ8dGhpcy5oWzNdPDw3KSx0aGlzLmhbM109NjU1MzUmKHRoaXMuaFszXT4+Pjl8dGhpcy5oWzRdPDw0KSx0aGlzLmhbNF09NjU1MzUmKHRoaXMuaFs0XT4+PjEyfHRoaXMuaFs1XTw8MXx0aGlzLmhbNl08PDE0KSx0aGlzLmhbNV09NjU1MzUmKHRoaXMuaFs2XT4+PjJ8dGhpcy5oWzddPDwxMSksdGhpcy5oWzZdPTY1NTM1Jih0aGlzLmhbN10+Pj41fHRoaXMuaFs4XTw8OCksdGhpcy5oWzddPTY1NTM1Jih0aGlzLmhbOF0+Pj44fHRoaXMuaFs5XTw8NSksaT10aGlzLmhbMF0rdGhpcy5wYWRbMF0sdGhpcy5oWzBdPTY1NTM1Jmksbz0xO288ODtvKyspaT0odGhpcy5oW29dK3RoaXMucGFkW29dfDApKyhpPj4+MTYpfDAsdGhpcy5oW29dPTY1NTM1Jmk7dFtlKzBdPXRoaXMuaFswXT4+PjAmMjU1LHRbZSsxXT10aGlzLmhbMF0+Pj44JjI1NSx0W2UrMl09dGhpcy5oWzFdPj4+MCYyNTUsdFtlKzNdPXRoaXMuaFsxXT4+PjgmMjU1LHRbZSs0XT10aGlzLmhbMl0+Pj4wJjI1NSx0W2UrNV09dGhpcy5oWzJdPj4+OCYyNTUsdFtlKzZdPXRoaXMuaFszXT4+PjAmMjU1LHRbZSs3XT10aGlzLmhbM10+Pj44JjI1NSx0W2UrOF09dGhpcy5oWzRdPj4+MCYyNTUsdFtlKzldPXRoaXMuaFs0XT4+PjgmMjU1LHRbZSsxMF09dGhpcy5oWzVdPj4+MCYyNTUsdFtlKzExXT10aGlzLmhbNV0+Pj44JjI1NSx0W2UrMTJdPXRoaXMuaFs2XT4+PjAmMjU1LHRbZSsxM109dGhpcy5oWzZdPj4+OCYyNTUsdFtlKzE0XT10aGlzLmhbN10+Pj4wJjI1NSx0W2UrMTVdPXRoaXMuaFs3XT4+PjgmMjU1fSxsdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpO2lmKHRoaXMubGVmdG92ZXIpe2ZvcihpPTE2LXRoaXMubGVmdG92ZXIsaT5yJiYoaT1yKSxuPTA7bjxpO24rKyl0aGlzLmJ1ZmZlclt0aGlzLmxlZnRvdmVyK25dPXRbZStuXTtpZihyLT1pLGUrPWksdGhpcy5sZWZ0b3Zlcis9aSx0aGlzLmxlZnRvdmVyPDE2KXJldHVybjt0aGlzLmJsb2Nrcyh0aGlzLmJ1ZmZlciwwLDE2KSx0aGlzLmxlZnRvdmVyPTB9aWYocj49MTYmJihpPXItciUxNix0aGlzLmJsb2Nrcyh0LGUsaSksZSs9aSxyLT1pKSxyKXtmb3Iobj0wO248cjtuKyspdGhpcy5idWZmZXJbdGhpcy5sZWZ0b3ZlcituXT10W2Urbl07dGhpcy5sZWZ0b3Zlcis9cn19O3ZhciBwdD12LGJ0PXksdnQ9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXSx5dD1uZXcgRmxvYXQ2NEFycmF5KFsyMzcsMjExLDI0NSw5MiwyNiw5OSwxOCw4OCwyMTQsMTU2LDI0NywxNjIsMjIyLDI0OSwyMjIsMjAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTZdKSxtdD0zMixndD0yNCx3dD0zMixfdD0xNixNdD0zMixTdD0zMixFdD0zMixBdD0zMixrdD0zMix4dD1ndCxJdD13dCxCdD1fdCxPdD02NCxSdD0zMixQdD02NCxUdD0zMixqdD02NDt0Lmxvd2xldmVsPXtjcnlwdG9fY29yZV9oc2Fsc2EyMDp1LGNyeXB0b19zdHJlYW1feG9yOmwsY3J5cHRvX3N0cmVhbTpkLGNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3I6aCxjcnlwdG9fc3RyZWFtX3NhbHNhMjA6YyxjcnlwdG9fb25ldGltZWF1dGg6cCxjcnlwdG9fb25ldGltZWF1dGhfdmVyaWZ5OmIsY3J5cHRvX3ZlcmlmeV8xNjppLGNyeXB0b192ZXJpZnlfMzI6byxjcnlwdG9fc2VjcmV0Ym94OnYsY3J5cHRvX3NlY3JldGJveF9vcGVuOnksY3J5cHRvX3NjYWxhcm11bHQ6UixjcnlwdG9fc2NhbGFybXVsdF9iYXNlOlAsY3J5cHRvX2JveF9iZWZvcmVubTpqLGNyeXB0b19ib3hfYWZ0ZXJubTpwdCxjcnlwdG9fYm94OkMsY3J5cHRvX2JveF9vcGVuOk4sY3J5cHRvX2JveF9rZXlwYWlyOlQsY3J5cHRvX2hhc2g6VSxjcnlwdG9fc2lnbjpYLGNyeXB0b19zaWduX2tleXBhaXI6RyxjcnlwdG9fc2lnbl9vcGVuOlcsY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUzptdCxjcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVM6Z3QsY3J5cHRvX3NlY3JldGJveF9aRVJPQllURVM6d3QsY3J5cHRvX3NlY3JldGJveF9CT1haRVJPQllURVM6X3QsY3J5cHRvX3NjYWxhcm11bHRfQllURVM6TXQsY3J5cHRvX3NjYWxhcm11bHRfU0NBTEFSQllURVM6U3QsY3J5cHRvX2JveF9QVUJMSUNLRVlCWVRFUzpFdCxjcnlwdG9fYm94X1NFQ1JFVEtFWUJZVEVTOkF0LGNyeXB0b19ib3hfQkVGT1JFTk1CWVRFUzprdCxjcnlwdG9fYm94X05PTkNFQllURVM6eHQsY3J5cHRvX2JveF9aRVJPQllURVM6SXQsY3J5cHRvX2JveF9CT1haRVJPQllURVM6QnQsY3J5cHRvX3NpZ25fQllURVM6T3QsY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVM6UnQsY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVM6UHQsY3J5cHRvX3NpZ25fU0VFREJZVEVTOlR0LGNyeXB0b19oYXNoX0JZVEVTOmp0fSx0LnV0aWx8fCh0LnV0aWw9e30sdC51dGlsLmRlY29kZVVURjg9dC51dGlsLmVuY29kZVVURjg9dC51dGlsLmVuY29kZUJhc2U2ND10LnV0aWwuZGVjb2RlQmFzZTY0PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwibmFjbC51dGlsIG1vdmVkIGludG8gc2VwYXJhdGUgcGFja2FnZTogaHR0cHM6Ly9naXRodWIuY29tL2RjaGVzdC90d2VldG5hY2wtdXRpbC1qc1wiKX0pLHQucmFuZG9tQnl0ZXM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIGV0KGUsdCksZX0sdC5zZWNyZXRib3g9ZnVuY3Rpb24odCxlLHIpeyQodCxlLHIpLFoocixlKTtmb3IodmFyIG49bmV3IFVpbnQ4QXJyYXkod3QrdC5sZW5ndGgpLGk9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgpLG89MDtvPHQubGVuZ3RoO28rKyluW28rd3RdPXRbb107cmV0dXJuIHYoaSxuLG4ubGVuZ3RoLGUsciksaS5zdWJhcnJheShfdCl9LHQuc2VjcmV0Ym94Lm9wZW49ZnVuY3Rpb24odCxlLHIpeyQodCxlLHIpLFoocixlKTtmb3IodmFyIG49bmV3IFVpbnQ4QXJyYXkoX3QrdC5sZW5ndGgpLGk9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgpLG89MDtvPHQubGVuZ3RoO28rKyluW28rX3RdPXRbb107cmV0dXJuIShuLmxlbmd0aDwzMikmJigwPT09eShpLG4sbi5sZW5ndGgsZSxyKSYmaS5zdWJhcnJheSh3dCkpfSx0LnNlY3JldGJveC5rZXlMZW5ndGg9bXQsdC5zZWNyZXRib3gubm9uY2VMZW5ndGg9Z3QsdC5zZWNyZXRib3gub3ZlcmhlYWRMZW5ndGg9X3QsdC5zY2FsYXJNdWx0PWZ1bmN0aW9uKHQsZSl7aWYoJCh0LGUpLHQubGVuZ3RoIT09U3QpdGhyb3cgbmV3IEVycm9yKFwiYmFkIG4gc2l6ZVwiKTtpZihlLmxlbmd0aCE9PU10KXRocm93IG5ldyBFcnJvcihcImJhZCBwIHNpemVcIik7dmFyIHI9bmV3IFVpbnQ4QXJyYXkoTXQpO3JldHVybiBSKHIsdCxlKSxyfSx0LnNjYWxhck11bHQuYmFzZT1mdW5jdGlvbih0KXtpZigkKHQpLHQubGVuZ3RoIT09U3QpdGhyb3cgbmV3IEVycm9yKFwiYmFkIG4gc2l6ZVwiKTt2YXIgZT1uZXcgVWludDhBcnJheShNdCk7cmV0dXJuIFAoZSx0KSxlfSx0LnNjYWxhck11bHQuc2NhbGFyTGVuZ3RoPVN0LHQuc2NhbGFyTXVsdC5ncm91cEVsZW1lbnRMZW5ndGg9TXQsdC5ib3g9ZnVuY3Rpb24oZSxyLG4saSl7dmFyIG89dC5ib3guYmVmb3JlKG4saSk7cmV0dXJuIHQuc2VjcmV0Ym94KGUscixvKX0sdC5ib3guYmVmb3JlPWZ1bmN0aW9uKHQsZSl7JCh0LGUpLEoodCxlKTt2YXIgcj1uZXcgVWludDhBcnJheShrdCk7cmV0dXJuIGoocix0LGUpLHJ9LHQuYm94LmFmdGVyPXQuc2VjcmV0Ym94LHQuYm94Lm9wZW49ZnVuY3Rpb24oZSxyLG4saSl7dmFyIG89dC5ib3guYmVmb3JlKG4saSk7cmV0dXJuIHQuc2VjcmV0Ym94Lm9wZW4oZSxyLG8pfSx0LmJveC5vcGVuLmFmdGVyPXQuc2VjcmV0Ym94Lm9wZW4sdC5ib3gua2V5UGFpcj1mdW5jdGlvbigpe3ZhciB0PW5ldyBVaW50OEFycmF5KEV0KSxlPW5ldyBVaW50OEFycmF5KEF0KTtyZXR1cm4gVCh0LGUpLHtwdWJsaWNLZXk6dCxzZWNyZXRLZXk6ZX19LHQuYm94LmtleVBhaXIuZnJvbVNlY3JldEtleT1mdW5jdGlvbih0KXtpZigkKHQpLHQubGVuZ3RoIT09QXQpdGhyb3cgbmV3IEVycm9yKFwiYmFkIHNlY3JldCBrZXkgc2l6ZVwiKTt2YXIgZT1uZXcgVWludDhBcnJheShFdCk7cmV0dXJuIFAoZSx0KSx7cHVibGljS2V5OmUsc2VjcmV0S2V5Om5ldyBVaW50OEFycmF5KHQpfX0sdC5ib3gucHVibGljS2V5TGVuZ3RoPUV0LHQuYm94LnNlY3JldEtleUxlbmd0aD1BdCx0LmJveC5zaGFyZWRLZXlMZW5ndGg9a3QsdC5ib3gubm9uY2VMZW5ndGg9eHQsdC5ib3gub3ZlcmhlYWRMZW5ndGg9dC5zZWNyZXRib3gub3ZlcmhlYWRMZW5ndGgsdC5zaWduPWZ1bmN0aW9uKHQsZSl7aWYoJCh0LGUpLGUubGVuZ3RoIT09UHQpdGhyb3cgbmV3IEVycm9yKFwiYmFkIHNlY3JldCBrZXkgc2l6ZVwiKTt2YXIgcj1uZXcgVWludDhBcnJheShPdCt0Lmxlbmd0aCk7cmV0dXJuIFgocix0LHQubGVuZ3RoLGUpLHJ9LHQuc2lnbi5vcGVuPWZ1bmN0aW9uKHQsZSl7aWYoMiE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwibmFjbC5zaWduLm9wZW4gYWNjZXB0cyAyIGFyZ3VtZW50czsgZGlkIHlvdSBtZWFuIHRvIHVzZSBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5P1wiKTtpZigkKHQsZSksZS5sZW5ndGghPT1SdCl0aHJvdyBuZXcgRXJyb3IoXCJiYWQgcHVibGljIGtleSBzaXplXCIpO3ZhciByPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPVcocix0LHQubGVuZ3RoLGUpO2lmKG48MClyZXR1cm4gbnVsbDtmb3IodmFyIGk9bmV3IFVpbnQ4QXJyYXkobiksbz0wO288aS5sZW5ndGg7bysrKWlbb109cltvXTtyZXR1cm4gaX0sdC5zaWduLmRldGFjaGVkPWZ1bmN0aW9uKGUscil7Zm9yKHZhciBuPXQuc2lnbihlLHIpLGk9bmV3IFVpbnQ4QXJyYXkoT3QpLG89MDtvPGkubGVuZ3RoO28rKylpW29dPW5bb107cmV0dXJuIGl9LHQuc2lnbi5kZXRhY2hlZC52ZXJpZnk9ZnVuY3Rpb24odCxlLHIpe2lmKCQodCxlLHIpLGUubGVuZ3RoIT09T3QpdGhyb3cgbmV3IEVycm9yKFwiYmFkIHNpZ25hdHVyZSBzaXplXCIpO2lmKHIubGVuZ3RoIT09UnQpdGhyb3cgbmV3IEVycm9yKFwiYmFkIHB1YmxpYyBrZXkgc2l6ZVwiKTt2YXIgbixpPW5ldyBVaW50OEFycmF5KE90K3QubGVuZ3RoKSxvPW5ldyBVaW50OEFycmF5KE90K3QubGVuZ3RoKTtmb3Iobj0wO248T3Q7bisrKWlbbl09ZVtuXTtmb3Iobj0wO248dC5sZW5ndGg7bisrKWlbbitPdF09dFtuXTtyZXR1cm4gVyhvLGksaS5sZW5ndGgscik+PTB9LHQuc2lnbi5rZXlQYWlyPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoUnQpLGU9bmV3IFVpbnQ4QXJyYXkoUHQpO3JldHVybiBHKHQsZSkse3B1YmxpY0tleTp0LHNlY3JldEtleTplfX0sdC5zaWduLmtleVBhaXIuZnJvbVNlY3JldEtleT1mdW5jdGlvbih0KXtpZigkKHQpLHQubGVuZ3RoIT09UHQpdGhyb3cgbmV3IEVycm9yKFwiYmFkIHNlY3JldCBrZXkgc2l6ZVwiKTtmb3IodmFyIGU9bmV3IFVpbnQ4QXJyYXkoUnQpLHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdPXRbMzIrcl07cmV0dXJue3B1YmxpY0tleTplLHNlY3JldEtleTpuZXcgVWludDhBcnJheSh0KX19LHQuc2lnbi5rZXlQYWlyLmZyb21TZWVkPWZ1bmN0aW9uKHQpe2lmKCQodCksdC5sZW5ndGghPT1UdCl0aHJvdyBuZXcgRXJyb3IoXCJiYWQgc2VlZCBzaXplXCIpO2Zvcih2YXIgZT1uZXcgVWludDhBcnJheShSdCkscj1uZXcgVWludDhBcnJheShQdCksbj0wO248MzI7bisrKXJbbl09dFtuXTtyZXR1cm4gRyhlLHIsITApLHtwdWJsaWNLZXk6ZSxzZWNyZXRLZXk6cn19LHQuc2lnbi5wdWJsaWNLZXlMZW5ndGg9UnQsdC5zaWduLnNlY3JldEtleUxlbmd0aD1QdCx0LnNpZ24uc2VlZExlbmd0aD1UdCx0LnNpZ24uc2lnbmF0dXJlTGVuZ3RoPU90LHQuaGFzaD1mdW5jdGlvbih0KXskKHQpO3ZhciBlPW5ldyBVaW50OEFycmF5KGp0KTtyZXR1cm4gVShlLHQsdC5sZW5ndGgpLGV9LHQuaGFzaC5oYXNoTGVuZ3RoPWp0LHQudmVyaWZ5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuICQodCxlKSwwIT09dC5sZW5ndGgmJjAhPT1lLmxlbmd0aCYmKHQubGVuZ3RoPT09ZS5sZW5ndGgmJjA9PT1uKHQsMCxlLDAsdC5sZW5ndGgpKX0sdC5zZXRQUk5HPWZ1bmN0aW9uKHQpe2V0PXR9LGZ1bmN0aW9uKCl7dmFyIGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/c2VsZi5jcnlwdG98fHNlbGYubXNDcnlwdG86bnVsbDtpZihlJiZlLmdldFJhbmRvbVZhbHVlcyl7dmFyIG49NjU1MzY7dC5zZXRQUk5HKGZ1bmN0aW9uKHQscil7dmFyIGksbz1uZXcgVWludDhBcnJheShyKTtmb3IoaT0wO2k8cjtpKz1uKWUuZ2V0UmFuZG9tVmFsdWVzKG8uc3ViYXJyYXkoaSxpK01hdGgubWluKHItaSxuKSkpO2ZvcihpPTA7aTxyO2krKyl0W2ldPW9baV07UShvKX0pfWVsc2UgZT1yKDYwOCksZSYmZS5yYW5kb21CeXRlcyYmdC5zZXRQUk5HKGZ1bmN0aW9uKHQscil7dmFyIG4saT1lLnJhbmRvbUJ5dGVzKHIpO2ZvcihuPTA7bjxyO24rKyl0W25dPWlbbl07UShpKX0pfSgpfShcInVuZGVmaW5lZFwiIT10eXBlb2YgdCYmdC5leHBvcnRzP3QuZXhwb3J0czpzZWxmLm5hY2w9c2VsZi5uYWNsfHx7fSl9LGZ1bmN0aW9uKHQsZSl7fSxmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCl7dmFyIGU9dC5sZW5ndGg7aWYoZSU0PjApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNFwiKTtyZXR1cm5cIj1cIj09PXRbZS0yXT8yOlwiPVwiPT09dFtlLTFdPzE6MH1mdW5jdGlvbiBuKHQpe3JldHVybiAzKnQubGVuZ3RoLzQtcih0KX1mdW5jdGlvbiBpKHQpe3ZhciBlLG4saSxvLGEsZixzPXQubGVuZ3RoO2E9cih0KSxmPW5ldyBoKDMqcy80LWEpLGk9YT4wP3MtNDpzO3ZhciBjPTA7Zm9yKGU9MCxuPTA7ZTxpO2UrPTQsbis9MylvPXVbdC5jaGFyQ29kZUF0KGUpXTw8MTh8dVt0LmNoYXJDb2RlQXQoZSsxKV08PDEyfHVbdC5jaGFyQ29kZUF0KGUrMildPDw2fHVbdC5jaGFyQ29kZUF0KGUrMyldLGZbYysrXT1vPj4xNiYyNTUsZltjKytdPW8+PjgmMjU1LGZbYysrXT0yNTUmbztyZXR1cm4gMj09PWE/KG89dVt0LmNoYXJDb2RlQXQoZSldPDwyfHVbdC5jaGFyQ29kZUF0KGUrMSldPj40LGZbYysrXT0yNTUmbyk6MT09PWEmJihvPXVbdC5jaGFyQ29kZUF0KGUpXTw8MTB8dVt0LmNoYXJDb2RlQXQoZSsxKV08PDR8dVt0LmNoYXJDb2RlQXQoZSsyKV0+PjIsZltjKytdPW8+PjgmMjU1LGZbYysrXT0yNTUmbyksZn1mdW5jdGlvbiBvKHQpe3JldHVybiBzW3Q+PjE4JjYzXStzW3Q+PjEyJjYzXStzW3Q+PjYmNjNdK3NbNjMmdF19ZnVuY3Rpb24gYSh0LGUscil7Zm9yKHZhciBuLGk9W10sYT1lO2E8cjthKz0zKW49KHRbYV08PDE2KSsodFthKzFdPDw4KSt0W2ErMl0saS5wdXNoKG8obikpO3JldHVybiBpLmpvaW4oXCJcIil9ZnVuY3Rpb24gZih0KXtmb3IodmFyIGUscj10Lmxlbmd0aCxuPXIlMyxpPVwiXCIsbz1bXSxmPTE2MzgzLHU9MCxoPXItbjt1PGg7dSs9ZilvLnB1c2goYSh0LHUsdStmPmg/aDp1K2YpKTtyZXR1cm4gMT09PW4/KGU9dFtyLTFdLGkrPXNbZT4+Ml0saSs9c1tlPDw0JjYzXSxpKz1cIj09XCIpOjI9PT1uJiYoZT0odFtyLTJdPDw4KSt0W3ItMV0saSs9c1tlPj4xMF0saSs9c1tlPj40JjYzXSxpKz1zW2U8PDImNjNdLGkrPVwiPVwiKSxvLnB1c2goaSksby5qb2luKFwiXCIpfWUuYnl0ZUxlbmd0aD1uLGUudG9CeXRlQXJyYXk9aSxlLmZyb21CeXRlQXJyYXk9Zjtmb3IodmFyIHM9W10sdT1bXSxoPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksYz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIixkPTAsbD1jLmxlbmd0aDtkPGw7KytkKXNbZF09Y1tkXSx1W2MuY2hhckNvZGVBdChkKV09ZDt1W1wiLVwiLmNoYXJDb2RlQXQoMCldPTYyLHVbXCJfXCIuY2hhckNvZGVBdCgwKV09NjN9LGZ1bmN0aW9uKHQsZSl7ZS5yZWFkPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG8sYSxmPTgqaS1uLTEscz0oMTw8ZiktMSx1PXM+PjEsaD0tNyxjPXI/aS0xOjAsZD1yPy0xOjEsbD10W2UrY107Zm9yKGMrPWQsbz1sJigxPDwtaCktMSxsPj49LWgsaCs9ZjtoPjA7bz0yNTYqbyt0W2UrY10sYys9ZCxoLT04KTtmb3IoYT1vJigxPDwtaCktMSxvPj49LWgsaCs9bjtoPjA7YT0yNTYqYSt0W2UrY10sYys9ZCxoLT04KTtpZigwPT09bylvPTEtdTtlbHNle2lmKG89PT1zKXJldHVybiBhP05hTjoobD8tMToxKSooMS8wKTthKz1NYXRoLnBvdygyLG4pLG8tPXV9cmV0dXJuKGw/LTE6MSkqYSpNYXRoLnBvdygyLG8tbil9LGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBhLGYscyx1PTgqby1pLTEsaD0oMTw8dSktMSxjPWg+PjEsZD0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLGw9bj8wOm8tMSxwPW4/MTotMSxiPWU8MHx8MD09PWUmJjEvZTwwPzE6MDtmb3IoZT1NYXRoLmFicyhlKSxpc05hTihlKXx8ZT09PTEvMD8oZj1pc05hTihlKT8xOjAsYT1oKTooYT1NYXRoLmZsb29yKE1hdGgubG9nKGUpL01hdGguTE4yKSxlKihzPU1hdGgucG93KDIsLWEpKTwxJiYoYS0tLHMqPTIpLGUrPWErYz49MT9kL3M6ZCpNYXRoLnBvdygyLDEtYyksZSpzPj0yJiYoYSsrLHMvPTIpLGErYz49aD8oZj0wLGE9aCk6YStjPj0xPyhmPShlKnMtMSkqTWF0aC5wb3coMixpKSxhKz1jKTooZj1lKk1hdGgucG93KDIsYy0xKSpNYXRoLnBvdygyLGkpLGE9MCkpO2k+PTg7dFtyK2xdPTI1NSZmLGwrPXAsZi89MjU2LGktPTgpO2ZvcihhPWE8PGl8Zix1Kz1pO3U+MDt0W3IrbF09MjU1JmEsbCs9cCxhLz0yNTYsdS09OCk7dFtyK2wtcF18PTEyOCpifX0sZnVuY3Rpb24odCxlKXt2YXIgcj17fS50b1N0cmluZzt0LmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT1yLmNhbGwodCl9fSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0LGUpe3ZhciByLG47aWYodD10LnRvTG93ZXJDYXNlKCksZFt0XSlyPWRbdF0ua2V5LG49ZFt0XS5pdjtlbHNle2lmKCFjW3RdKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7cj04KmNbdF0ua2V5LG49Y1t0XS5pdn12YXIgaT1zKGUsITEscixuKTtyZXR1cm4gbyh0LGkua2V5LGkuaXYpfWZ1bmN0aW9uIGkodCxlKXt2YXIgcixuO2lmKHQ9dC50b0xvd2VyQ2FzZSgpLGRbdF0pcj1kW3RdLmtleSxuPWRbdF0uaXY7ZWxzZXtpZighY1t0XSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO3I9OCpjW3RdLmtleSxuPWNbdF0uaXZ9dmFyIGk9cyhlLCExLHIsbik7cmV0dXJuIGEodCxpLmtleSxpLml2KX1mdW5jdGlvbiBvKHQsZSxyKXtpZih0PXQudG9Mb3dlckNhc2UoKSxkW3RdKXJldHVybiB1LmNyZWF0ZUNpcGhlcml2KHQsZSxyKTtpZihjW3RdKXJldHVybiBuZXcgaCh7a2V5OmUsaXY6cixtb2RlOnR9KTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpfWZ1bmN0aW9uIGEodCxlLHIpe2lmKHQ9dC50b0xvd2VyQ2FzZSgpLGRbdF0pcmV0dXJuIHUuY3JlYXRlRGVjaXBoZXJpdih0LGUscik7aWYoY1t0XSlyZXR1cm4gbmV3IGgoe2tleTplLGl2OnIsbW9kZTp0LGRlY3J5cHQ6ITB9KTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpfWZ1bmN0aW9uIGYoKXtyZXR1cm4gT2JqZWN0LmtleXMoYykuY29uY2F0KHUuZ2V0Q2lwaGVycygpKX12YXIgcz1yKDE0NiksdT1yKDQ5NCksaD1yKDQ5OCksYz1yKDQ5OSksZD1yKDk1KTtlLmNyZWF0ZUNpcGhlcj1lLkNpcGhlcj1uLGUuY3JlYXRlQ2lwaGVyaXY9ZS5DaXBoZXJpdj1vLGUuY3JlYXRlRGVjaXBoZXI9ZS5EZWNpcGhlcj1pLGUuY3JlYXRlRGVjaXBoZXJpdj1lLkRlY2lwaGVyaXY9YSxlLmxpc3RDaXBoZXJzPWUuZ2V0Q2lwaGVycz1mfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3JldHVybiBPYmplY3Qua2V5cyhhKX12YXIgaT1yKDQ5Nik7ZS5jcmVhdGVDaXBoZXI9ZS5DaXBoZXI9aS5jcmVhdGVDaXBoZXIsZS5jcmVhdGVDaXBoZXJpdj1lLkNpcGhlcml2PWkuY3JlYXRlQ2lwaGVyaXY7dmFyIG89cig0OTUpO2UuY3JlYXRlRGVjaXBoZXI9ZS5EZWNpcGhlcj1vLmNyZWF0ZURlY2lwaGVyLGUuY3JlYXRlRGVjaXBoZXJpdj1lLkRlY2lwaGVyaXY9by5jcmVhdGVEZWNpcGhlcml2O3ZhciBhPXIoOTUpO2UubGlzdENpcGhlcnM9ZS5nZXRDaXBoZXJzPW59LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHIsbyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuPyh1LmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGksdGhpcy5fbGFzdD12b2lkIDAsdGhpcy5fY2lwaGVyPW5ldyBzLkFFUyhyKSx0aGlzLl9wcmV2PW5ldyB0KG8ubGVuZ3RoKSxvLmNvcHkodGhpcy5fcHJldiksdGhpcy5fbW9kZT1lLHZvaWQodGhpcy5fYXV0b3BhZGRpbmc9ITApKTpuZXcgbihlLHIsbyl9ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT92b2lkKHRoaXMuY2FjaGU9bmV3IHQoXCJcIikpOm5ldyBpfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPXRbMTVdLHI9LTE7KytyPGU7KWlmKHRbcisoMTYtZSldIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhXCIpO2lmKDE2IT09ZSlyZXR1cm4gdC5zbGljZSgwLDE2LWUpfWZ1bmN0aW9uIGEoZSxyLGkpe3ZhciBvPWNbZS50b0xvd2VyQ2FzZSgpXTtpZighbyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpJiYoaT1uZXcgdChpKSksXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW5ldyB0KHIpKSxyLmxlbmd0aCE9PW8ua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQga2V5IGxlbmd0aCBcIityLmxlbmd0aCk7aWYoaS5sZW5ndGghPT1vLml2KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGl2IGxlbmd0aCBcIitpLmxlbmd0aCk7cmV0dXJuXCJzdHJlYW1cIj09PW8udHlwZT9uZXcgZChiW28ubW9kZV0scixpLCEwKTpcImF1dGhcIj09PW8udHlwZT9uZXcgbChiW28ubW9kZV0scixpLCEwKTpuZXcgbihiW28ubW9kZV0scixpKX1mdW5jdGlvbiBmKHQsZSl7dmFyIHI9Y1t0LnRvTG93ZXJDYXNlKCldO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7dmFyIG49cChlLCExLHIua2V5LHIuaXYpO3JldHVybiBhKHQsbi5rZXksbi5pdil9dmFyIHM9cig5NCksdT1yKDk3KSxoPXIoMiksYz1yKDk1KSxkPXIoMjEwKSxsPXIoMjAzKSxwPXIoMTQ2KTtoKG4sdSksbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9jYWNoZS5hZGQoZSk7Zm9yKHZhciByLG4saT1bXTtyPXRoaXMuX2NhY2hlLmdldCh0aGlzLl9hdXRvcGFkZGluZyk7KW49dGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsciksaS5wdXNoKG4pO3JldHVybiB0LmNvbmNhdChpKX0sbi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gbyh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyx0KSk7aWYodCl0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGhcIil9LG4ucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIXQsdGhpc30saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuY2FjaGU9dC5jb25jYXQoW3RoaXMuY2FjaGUsZV0pfSxpLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU7aWYodCl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTYpcmV0dXJuIGU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLGV9ZWxzZSBpZih0aGlzLmNhY2hlLmxlbmd0aD49MTYpcmV0dXJuIGU9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLGU7cmV0dXJuIG51bGx9LGkucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGV9O3ZhciBiPXtFQ0I6cigyMDgpLENCQzpyKDIwNCksQ0ZCOnIoMjA1KSxDRkI4OnIoMjA3KSxDRkIxOnIoMjA2KSxPRkI6cigyMDkpLENUUjpyKDk2KSxHQ006cig5Nil9O2UuY3JlYXRlRGVjaXBoZXI9ZixlLmNyZWF0ZURlY2lwaGVyaXY9YX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHIsbyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuPyhzLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGksdGhpcy5fY2lwaGVyPW5ldyBmLkFFUyhyKSx0aGlzLl9wcmV2PW5ldyB0KG8ubGVuZ3RoKSxvLmNvcHkodGhpcy5fcHJldiksdGhpcy5fbW9kZT1lLHZvaWQodGhpcy5fYXV0b3BhZGRpbmc9ITApKTpuZXcgbihlLHIsbyl9ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT92b2lkKHRoaXMuY2FjaGU9bmV3IHQoXCJcIikpOm5ldyBpfWZ1bmN0aW9uIG8oZSxyLGkpe3ZhciBvPWhbZS50b0xvd2VyQ2FzZSgpXTtpZighbyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpJiYoaT1uZXcgdChpKSksXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW5ldyB0KHIpKSxyLmxlbmd0aCE9PW8ua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQga2V5IGxlbmd0aCBcIityLmxlbmd0aCk7aWYoaS5sZW5ndGghPT1vLml2KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGl2IGxlbmd0aCBcIitpLmxlbmd0aCk7cmV0dXJuXCJzdHJlYW1cIj09PW8udHlwZT9uZXcgZChwW28ubW9kZV0scixpKTpcImF1dGhcIj09PW8udHlwZT9uZXcgbChwW28ubW9kZV0scixpKTpuZXcgbihwW28ubW9kZV0scixpKX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9aFt0LnRvTG93ZXJDYXNlKCldO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7dmFyIG49YyhlLCExLHIua2V5LHIuaXYpO3JldHVybiBvKHQsbi5rZXksbi5pdil9dmFyIGY9cig5NCkscz1yKDk3KSx1PXIoMiksaD1yKDk1KSxjPXIoMTQ2KSxkPXIoMjEwKSxsPXIoMjAzKTt1KG4scyksbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9jYWNoZS5hZGQoZSk7Zm9yKHZhciByLG4saT1bXTtyPXRoaXMuX2NhY2hlLmdldCgpOyluPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHIpLGkucHVzaChuKTtyZXR1cm4gdC5jb25jYXQoaSl9LG4ucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIHQ9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCksdGhpcy5fY2lwaGVyLnNjcnViKCksdDtpZihcIjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwXCIhPT10LnRvU3RyaW5nKFwiaGV4XCIpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcihcImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aFwiKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhdCx0aGlzfSxpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5jYWNoZT10LmNvbmNhdChbdGhpcy5jYWNoZSxlXSl9LGkucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE1KXt2YXIgdD10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHR9cmV0dXJuIG51bGx9LGkucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE2LXRoaXMuY2FjaGUubGVuZ3RoLHI9bmV3IHQoZSksbj0tMTsrK248ZTspci53cml0ZVVJbnQ4KGUsbik7dmFyIGk9dC5jb25jYXQoW3RoaXMuY2FjaGUscl0pO3JldHVybiBpfTt2YXIgcD17RUNCOnIoMjA4KSxDQkM6cigyMDQpLENGQjpyKDIwNSksQ0ZCODpyKDIwNyksQ0ZCMTpyKDIwNiksT0ZCOnIoMjA5KSxDVFI6cig5NiksR0NNOnIoOTYpfTtlLmNyZWF0ZUNpcGhlcml2PW8sZS5jcmVhdGVDaXBoZXI9YX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0KXt0aGlzLmg9dCx0aGlzLnN0YXRlPW5ldyBlKDE2KSx0aGlzLnN0YXRlLmZpbGwoMCksdGhpcy5jYWNoZT1uZXcgZShcIlwiKX1mdW5jdGlvbiBuKHQpe3JldHVyblt0LnJlYWRVSW50MzJCRSgwKSx0LnJlYWRVSW50MzJCRSg0KSx0LnJlYWRVSW50MzJCRSg4KSx0LnJlYWRVSW50MzJCRSgxMildfWZ1bmN0aW9uIGkodCl7dD10Lm1hcChvKTt2YXIgcj1uZXcgZSgxNik7cmV0dXJuIHIud3JpdGVVSW50MzJCRSh0WzBdLDApLHIud3JpdGVVSW50MzJCRSh0WzFdLDQpLHIud3JpdGVVSW50MzJCRSh0WzJdLDgpLHIud3JpdGVVSW50MzJCRSh0WzNdLDEyKSxyfWZ1bmN0aW9uIG8odCl7dmFyIGUscjtyZXR1cm4gZT10PnN8fHQ8MD8ocj1NYXRoLmFicyh0KSVzLHQ8MD9zLXI6cik6dH1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuW3RbMF1eZVswXSx0WzFdXmVbMV0sdFsyXV5lWzJdLHRbM11eZVszXV19dmFyIGY9bmV3IGUoMTYpO2YuZmlsbCgwKSx0LmV4cG9ydHM9cixyLnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9LTE7KytlPHQubGVuZ3RoOyl0aGlzLnN0YXRlW2VdXj10W2VdO3RoaXMuX211bHRpcGx5KCl9LHIucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlLHIsbz1uKHRoaXMuaCksZj1bMCwwLDAsMF0scz0tMTsrK3M8MTI4Oyl7Zm9yKGU9MCE9PSh0aGlzLnN0YXRlW35+KHMvOCldJjE8PDctcyU4KSxlJiYoZj1hKGYsbykpLHI9MCE9PSgxJm9bM10pLHQ9Mzt0PjA7dC0tKW9bdF09b1t0XT4+PjF8KDEmb1t0LTFdKTw8MzE7b1swXT1vWzBdPj4+MSxyJiYob1swXT1vWzBdXjIyNTw8MjQpfXRoaXMuc3RhdGU9aShmKX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuY2FjaGU9ZS5jb25jYXQoW3RoaXMuY2FjaGUsdF0pO2Zvcih2YXIgcjt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KXI9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2gocil9LHIucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKGUuY29uY2F0KFt0aGlzLmNhY2hlLGZdLDE2KSksdGhpcy5naGFzaChpKFswLHQsMCxyXSkpLHRoaXMuc3RhdGV9O3ZhciBzPU1hdGgucG93KDIsMzIpfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe2kuY2FsbCh0aGlzKTt2YXIgcixuPXQubW9kZS50b0xvd2VyQ2FzZSgpLG89ZltuXTtyPXQuZGVjcnlwdD9cImRlY3J5cHRcIjpcImVuY3J5cHRcIjt2YXIgYT10LmtleTtcImRlcy1lZGVcIiE9PW4mJlwiZGVzLWVkZS1jYmNcIiE9PW58fChhPWUuY29uY2F0KFthLGEuc2xpY2UoMCw4KV0pKTt2YXIgcz10Lml2O3RoaXMuX2Rlcz1vLmNyZWF0ZSh7a2V5OmEsaXY6cyx0eXBlOnJ9KX12YXIgaT1yKDUwMCksbz1yKDE0NSksYT1yKDIpLGY9e1wiZGVzLWVkZTMtY2JjXCI6by5DQkMuaW5zdGFudGlhdGUoby5FREUpLFwiZGVzLWVkZTNcIjpvLkVERSxcImRlcy1lZGUtY2JjXCI6by5DQkMuaW5zdGFudGlhdGUoby5FREUpLFwiZGVzLWVkZVwiOm8uRURFLFwiZGVzLWNiY1wiOm8uQ0JDLmluc3RhbnRpYXRlKG8uREVTKSxcImRlcy1lY2JcIjpvLkRFU307Zi5kZXM9ZltcImRlcy1jYmNcIl0sZi5kZXMzPWZbXCJkZXMtZWRlMy1jYmNcIl0sdC5leHBvcnRzPW4sYShuLGkpLG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKHRoaXMuX2Rlcy51cGRhdGUodCkpfSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGUodGhpcy5fZGVzLmZpbmFsKCkpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSl7ZVtcImRlcy1lY2JcIl09e2tleTo4LGl2OjB9LGVbXCJkZXMtY2JjXCJdPWUuZGVzPXtrZXk6OCxpdjo4fSxlW1wiZGVzLWVkZTMtY2JjXCJdPWUuZGVzMz17a2V5OjI0LGl2Ojh9LGVbXCJkZXMtZWRlM1wiXT17a2V5OjI0LGl2OjB9LGVbXCJkZXMtZWRlLWNiY1wiXT17a2V5OjE2LGl2Ojh9LGVbXCJkZXMtZWRlXCJdPXtrZXk6MTYsaXY6MH19LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtpLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT1cInN0cmluZ1wiPT10eXBlb2YgdCx0aGlzLmhhc2hNb2RlP3RoaXNbdF09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9dmFyIGk9cigzMSkuVHJhbnNmb3JtLG89cigyKSxhPXIoNTIpLlN0cmluZ0RlY29kZXI7dC5leHBvcnRzPW4sbyhuLGkpLG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIsbil7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQscikpO3ZhciBpPXRoaXMuX3VwZGF0ZSh0KTtyZXR1cm4gdGhpcy5oYXNoTW9kZT90aGlzOihuJiYoaT10aGlzLl90b1N0cmluZyhpLG4pKSxpKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxuLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZSh0KTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKHQpKX1jYXRjaCh0KXtuPXR9ZmluYWxseXtyKG4pfX0sbi5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXt0aGlzLnB1c2godGhpcy5fZmluYWwoKSl9Y2F0Y2godCl7ZT10fWZpbmFsbHl7dChlKX19LG4ucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX2ZpbmFsKCl8fG5ldyBlKFwiXCIpO3JldHVybiB0JiYocj10aGlzLl90b1N0cmluZyhyLHQsITApKSxyfSxuLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBhKGUpLHRoaXMuX2VuY29kaW5nPWUpLHRoaXMuX2VuY29kaW5nIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzXCIpO3ZhciBuPXRoaXMuX2RlY29kZXIud3JpdGUodCk7cmV0dXJuIHImJihuKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxufX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe28uZXF1YWwodC5sZW5ndGgsOCxcIkludmFsaWQgSVYgbGVuZ3RoXCIpLHRoaXMuaXY9bmV3IEFycmF5KDgpO2Zvcih2YXIgZT0wO2U8dGhpcy5pdi5sZW5ndGg7ZSsrKXRoaXMuaXZbZV09dFtlXX1mdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGUoZSl7dC5jYWxsKHRoaXMsZSksdGhpcy5fY2JjSW5pdCgpfWEoZSx0KTtmb3IodmFyIHI9T2JqZWN0LmtleXMoZiksbj0wO248ci5sZW5ndGg7bisrKXt2YXIgaT1yW25dO2UucHJvdG90eXBlW2ldPWZbaV19cmV0dXJuIGUuY3JlYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0KX0sZX12YXIgbz1yKDk4KSxhPXIoMiksZj17fTtlLmluc3RhbnRpYXRlPWksZi5fY2JjSW5pdD1mdW5jdGlvbigpe3ZhciB0PW5ldyBuKHRoaXMub3B0aW9ucy5pdik7dGhpcy5fY2JjU3RhdGU9dH0sZi5fdXBkYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMuX2NiY1N0YXRlLG89dGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlLGE9aS5pdjtpZihcImVuY3J5cHRcIj09PXRoaXMudHlwZSl7Zm9yKHZhciBmPTA7Zjx0aGlzLmJsb2NrU2l6ZTtmKyspYVtmXV49dFtlK2ZdO28uX3VwZGF0ZS5jYWxsKHRoaXMsYSwwLHIsbik7Zm9yKHZhciBmPTA7Zjx0aGlzLmJsb2NrU2l6ZTtmKyspYVtmXT1yW24rZl19ZWxzZXtvLl91cGRhdGUuY2FsbCh0aGlzLHQsZSxyLG4pO2Zvcih2YXIgZj0wO2Y8dGhpcy5ibG9ja1NpemU7ZisrKXJbbitmXV49YVtmXTtmb3IodmFyIGY9MDtmPHRoaXMuYmxvY2tTaXplO2YrKylhW2ZdPXRbZStmXX19fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLnR5cGU9dGhpcy5vcHRpb25zLnR5cGUsdGhpcy5ibG9ja1NpemU9OCx0aGlzLl9pbml0KCksdGhpcy5idWZmZXI9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKSx0aGlzLmJ1ZmZlck9mZj0wfXZhciBpPXIoOTgpO3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKCl7fSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lmxlbmd0aD9bXTpcImRlY3J5cHRcIj09PXRoaXMudHlwZT90aGlzLl91cGRhdGVEZWNyeXB0KHQpOnRoaXMuX3VwZGF0ZUVuY3J5cHQodCl9LG4ucHJvdG90eXBlLl9idWZmZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9TWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoLXRoaXMuYnVmZmVyT2ZmLHQubGVuZ3RoLWUpLG49MDtuPHI7bisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmK25dPXRbZStuXTtyZXR1cm4gdGhpcy5idWZmZXJPZmYrPXIscn0sbi5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLHQsZSksdGhpcy5idWZmZXJPZmY9MCx0aGlzLmJsb2NrU2l6ZX0sbi5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQ9ZnVuY3Rpb24odCl7dmFyIGU9MCxyPTAsbj0odGhpcy5idWZmZXJPZmYrdC5sZW5ndGgpL3RoaXMuYmxvY2tTaXplfDAsaT1uZXcgQXJyYXkobip0aGlzLmJsb2NrU2l6ZSk7MCE9PXRoaXMuYnVmZmVyT2ZmJiYoZSs9dGhpcy5fYnVmZmVyKHQsZSksdGhpcy5idWZmZXJPZmY9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJihyKz10aGlzLl9mbHVzaEJ1ZmZlcihpLHIpKSk7Zm9yKHZhciBvPXQubGVuZ3RoLSh0Lmxlbmd0aC1lKSV0aGlzLmJsb2NrU2l6ZTtlPG87ZSs9dGhpcy5ibG9ja1NpemUpdGhpcy5fdXBkYXRlKHQsZSxpLHIpLHIrPXRoaXMuYmxvY2tTaXplO2Zvcig7ZTx0Lmxlbmd0aDtlKyssdGhpcy5idWZmZXJPZmYrKyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl09dFtlXTtyZXR1cm4gaX0sbi5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAscj0wLG49TWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZit0Lmxlbmd0aCkvdGhpcy5ibG9ja1NpemUpLTEsaT1uZXcgQXJyYXkobip0aGlzLmJsb2NrU2l6ZSk7bj4wO24tLSllKz10aGlzLl9idWZmZXIodCxlKSxyKz10aGlzLl9mbHVzaEJ1ZmZlcihpLHIpO3JldHVybiBlKz10aGlzLl9idWZmZXIodCxlKSxpfSxuLnByb3RvdHlwZS5maW5hbD1mdW5jdGlvbih0KXt2YXIgZTt0JiYoZT10aGlzLnVwZGF0ZSh0KSk7dmFyIHI7cmV0dXJuIHI9XCJlbmNyeXB0XCI9PT10aGlzLnR5cGU/dGhpcy5fZmluYWxFbmNyeXB0KCk6dGhpcy5fZmluYWxEZWNyeXB0KCksZT9lLmNvbmNhdChyKTpyfSxuLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUpcmV0dXJuITE7Zm9yKDtlPHQubGVuZ3RoOyl0W2UrK109MDtyZXR1cm4hMH0sbi5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdD1mdW5jdGlvbigpe2lmKCF0aGlzLl9wYWQodGhpcy5idWZmZXIsdGhpcy5idWZmZXJPZmYpKXJldHVybltdO3ZhciB0PW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwwLHQsMCksdH0sbi5wcm90b3R5cGUuX3VucGFkPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxuLnByb3RvdHlwZS5fZmluYWxEZWNyeXB0PWZ1bmN0aW9uKCl7aS5lcXVhbCh0aGlzLmJ1ZmZlck9mZix0aGlzLmJsb2NrU2l6ZSxcIk5vdCBlbm91Z2ggZGF0YSB0byBkZWNyeXB0XCIpO3ZhciB0PW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKHQsMCksdGhpcy5fdW5wYWQodCl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbigpe3RoaXMudG1wPW5ldyBBcnJheSgyKSx0aGlzLmtleXM9bnVsbH1mdW5jdGlvbiBpKHQpe3UuY2FsbCh0aGlzLHQpO3ZhciBlPW5ldyBuO3RoaXMuX2Rlc1N0YXRlPWUsdGhpcy5kZXJpdmVLZXlzKGUsdC5rZXkpfXZhciBvPXIoOTgpLGE9cigyKSxmPXIoMTQ1KSxzPWYudXRpbHMsdT1mLkNpcGhlcjthKGksdSksdC5leHBvcnRzPWksaS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBpKHQpfTt2YXIgaD1bMSwxLDIsMiwyLDIsMiwyLDEsMiwyLDIsMiwyLDIsMV07aS5wcm90b3R5cGUuZGVyaXZlS2V5cz1mdW5jdGlvbih0LGUpe3Qua2V5cz1uZXcgQXJyYXkoMzIpLG8uZXF1YWwoZS5sZW5ndGgsdGhpcy5ibG9ja1NpemUsXCJJbnZhbGlkIGtleSBsZW5ndGhcIik7dmFyIHI9cy5yZWFkVUludDMyQkUoZSwwKSxuPXMucmVhZFVJbnQzMkJFKGUsNCk7cy5wYzEocixuLHQudG1wLDApLHI9dC50bXBbMF0sbj10LnRtcFsxXTtmb3IodmFyIGk9MDtpPHQua2V5cy5sZW5ndGg7aSs9Mil7dmFyIGE9aFtpPj4+MV07cj1zLnIyOHNobChyLGEpLG49cy5yMjhzaGwobixhKSxzLnBjMihyLG4sdC5rZXlzLGkpfX0saS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLl9kZXNTdGF0ZSxvPXMucmVhZFVJbnQzMkJFKHQsZSksYT1zLnJlYWRVSW50MzJCRSh0LGUrNCk7cy5pcChvLGEsaS50bXAsMCksbz1pLnRtcFswXSxhPWkudG1wWzFdLFwiZW5jcnlwdFwiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQoaSxvLGEsaS50bXAsMCk6dGhpcy5fZGVjcnlwdChpLG8sYSxpLnRtcCwwKSxvPWkudG1wWzBdLGE9aS50bXBbMV0scy53cml0ZVVJbnQzMkJFKHIsbyxuKSxzLndyaXRlVUludDMyQkUocixhLG4rNCl9LGkucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGgtZSxuPWU7bjx0Lmxlbmd0aDtuKyspdFtuXT1yO3JldHVybiEwfSxpLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRbdC5sZW5ndGgtMV0scj10Lmxlbmd0aC1lO3I8dC5sZW5ndGg7cisrKW8uZXF1YWwodFtyXSxlKTtyZXR1cm4gdC5zbGljZSgwLHQubGVuZ3RoLWUpfSxpLnByb3RvdHlwZS5fZW5jcnlwdD1mdW5jdGlvbih0LGUscixuLGkpe2Zvcih2YXIgbz1lLGE9cixmPTA7Zjx0LmtleXMubGVuZ3RoO2YrPTIpe3ZhciB1PXQua2V5c1tmXSxoPXQua2V5c1tmKzFdO3MuZXhwYW5kKGEsdC50bXAsMCksdV49dC50bXBbMF0saF49dC50bXBbMV07dmFyIGM9cy5zdWJzdGl0dXRlKHUsaCksZD1zLnBlcm11dGUoYyksbD1hO2E9KG9eZCk+Pj4wLG89bH1zLnJpcChhLG8sbixpKX0saS5wcm90b3R5cGUuX2RlY3J5cHQ9ZnVuY3Rpb24odCxlLHIsbixpKXtmb3IodmFyIG89cixhPWUsZj10LmtleXMubGVuZ3RoLTI7Zj49MDtmLT0yKXt2YXIgdT10LmtleXNbZl0saD10LmtleXNbZisxXTtzLmV4cGFuZChvLHQudG1wLDApLHVePXQudG1wWzBdLGhePXQudG1wWzFdO3ZhciBjPXMuc3Vic3RpdHV0ZSh1LGgpLGQ9cy5wZXJtdXRlKGMpLGw9bztvPShhXmQpPj4+MCxhPWx9cy5yaXAobyxhLG4saSl9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe28uZXF1YWwoZS5sZW5ndGgsMjQsXCJJbnZhbGlkIGtleSBsZW5ndGhcIik7dmFyIHI9ZS5zbGljZSgwLDgpLG49ZS5zbGljZSg4LDE2KSxpPWUuc2xpY2UoMTYsMjQpO1wiZW5jcnlwdFwiPT09dD90aGlzLmNpcGhlcnM9W3UuY3JlYXRlKHt0eXBlOlwiZW5jcnlwdFwiLGtleTpyfSksdS5jcmVhdGUoe3R5cGU6XCJkZWNyeXB0XCIsa2V5Om59KSx1LmNyZWF0ZSh7dHlwZTpcImVuY3J5cHRcIixrZXk6aX0pXTp0aGlzLmNpcGhlcnM9W3UuY3JlYXRlKHt0eXBlOlwiZGVjcnlwdFwiLGtleTppfSksdS5jcmVhdGUoe3R5cGU6XCJlbmNyeXB0XCIsa2V5Om59KSx1LmNyZWF0ZSh7dHlwZTpcImRlY3J5cHRcIixrZXk6cn0pXX1mdW5jdGlvbiBpKHQpe3MuY2FsbCh0aGlzLHQpO3ZhciBlPW5ldyBuKHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT1lfXZhciBvPXIoOTgpLGE9cigyKSxmPXIoMTQ1KSxzPWYuQ2lwaGVyLHU9Zi5ERVM7YShpLHMpLHQuZXhwb3J0cz1pLGkuY3JlYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaSh0KX0saS5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLl9lZGVTdGF0ZTtpLmNpcGhlcnNbMF0uX3VwZGF0ZSh0LGUscixuKSxpLmNpcGhlcnNbMV0uX3VwZGF0ZShyLG4scixuKSxpLmNpcGhlcnNbMl0uX3VwZGF0ZShyLG4scixuKX0saS5wcm90b3R5cGUuX3BhZD11LnByb3RvdHlwZS5fcGFkLGkucHJvdG90eXBlLl91bnBhZD11LnByb3RvdHlwZS5fdW5wYWR9LGZ1bmN0aW9uKHQsZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24odCxlKXt2YXIgcj10WzArZV08PDI0fHRbMStlXTw8MTZ8dFsyK2VdPDw4fHRbMytlXTtyZXR1cm4gcj4+PjB9LGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbih0LGUscil7dFswK3JdPWU+Pj4yNCx0WzErcl09ZT4+PjE2JjI1NSx0WzIrcl09ZT4+PjgmMjU1LHRbMytyXT0yNTUmZX0sZS5pcD1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9MCxvPTAsYT02O2E+PTA7YS09Mil7Zm9yKHZhciBmPTA7Zjw9MjQ7Zis9OClpPDw9MSxpfD1lPj4+ZithJjE7Zm9yKHZhciBmPTA7Zjw9MjQ7Zis9OClpPDw9MSxpfD10Pj4+ZithJjF9Zm9yKHZhciBhPTY7YT49MDthLT0yKXtmb3IodmFyIGY9MTtmPD0yNTtmKz04KW88PD0xLG98PWU+Pj5mK2EmMTtmb3IodmFyIGY9MTtmPD0yNTtmKz04KW88PD0xLG98PXQ+Pj5mK2EmMX1yW24rMF09aT4+PjAscltuKzFdPW8+Pj4wfSxlLnJpcD1mdW5jdGlvbih0LGUscixuKXtmb3IodmFyIGk9MCxvPTAsYT0wO2E8NDthKyspZm9yKHZhciBmPTI0O2Y+PTA7Zi09OClpPDw9MSxpfD1lPj4+ZithJjEsaTw8PTEsaXw9dD4+PmYrYSYxO2Zvcih2YXIgYT00O2E8ODthKyspZm9yKHZhciBmPTI0O2Y+PTA7Zi09OClvPDw9MSxvfD1lPj4+ZithJjEsbzw8PTEsb3w9dD4+PmYrYSYxO3JbbiswXT1pPj4+MCxyW24rMV09bz4+PjB9LGUucGMxPWZ1bmN0aW9uKHQsZSxyLG4pe2Zvcih2YXIgaT0wLG89MCxhPTc7YT49NTthLS0pe1xuZm9yKHZhciBmPTA7Zjw9MjQ7Zis9OClpPDw9MSxpfD1lPj5mK2EmMTtmb3IodmFyIGY9MDtmPD0yNDtmKz04KWk8PD0xLGl8PXQ+PmYrYSYxfWZvcih2YXIgZj0wO2Y8PTI0O2YrPTgpaTw8PTEsaXw9ZT4+ZithJjE7Zm9yKHZhciBhPTE7YTw9MzthKyspe2Zvcih2YXIgZj0wO2Y8PTI0O2YrPTgpbzw8PTEsb3w9ZT4+ZithJjE7Zm9yKHZhciBmPTA7Zjw9MjQ7Zis9OClvPDw9MSxvfD10Pj5mK2EmMX1mb3IodmFyIGY9MDtmPD0yNDtmKz04KW88PD0xLG98PXQ+PmYrYSYxO3JbbiswXT1pPj4+MCxyW24rMV09bz4+PjB9LGUucjI4c2hsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8PGUmMjY4NDM1NDU1fHQ+Pj4yOC1lfTt2YXIgcj1bMTQsMTEsMTcsNCwyNywyMywyNSwwLDEzLDIyLDcsMTgsNSw5LDE2LDI0LDIsMjAsMTIsMjEsMSw4LDE1LDI2LDE1LDQsMjUsMTksOSwxLDI2LDE2LDUsMTEsMjMsOCwxMiw3LDE3LDAsMjIsMywxMCwxNCw2LDIwLDI3LDI0XTtlLnBjMj1mdW5jdGlvbih0LGUsbixpKXtmb3IodmFyIG89MCxhPTAsZj1yLmxlbmd0aD4+PjEscz0wO3M8ZjtzKyspbzw8PTEsb3w9dD4+PnJbc10mMTtmb3IodmFyIHM9ZjtzPHIubGVuZ3RoO3MrKylhPDw9MSxhfD1lPj4+cltzXSYxO25baSswXT1vPj4+MCxuW2krMV09YT4+PjB9LGUuZXhwYW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj0wLGk9MDtuPSgxJnQpPDw1fHQ+Pj4yNztmb3IodmFyIG89MjM7bz49MTU7by09NCluPDw9NixufD10Pj4+byY2Mztmb3IodmFyIG89MTE7bz49MztvLT00KWl8PXQ+Pj5vJjYzLGk8PD02O2l8PSgzMSZ0KTw8MXx0Pj4+MzEsZVtyKzBdPW4+Pj4wLGVbcisxXT1pPj4+MH07dmFyIG49WzE0LDAsNCwxNSwxMyw3LDEsNCwyLDE0LDE1LDIsMTEsMTMsOCwxLDMsMTAsMTAsNiw2LDEyLDEyLDExLDUsOSw5LDUsMCwzLDcsOCw0LDE1LDEsMTIsMTQsOCw4LDIsMTMsNCw2LDksMiwxLDExLDcsMTUsNSwxMiwxMSw5LDMsNywxNCwzLDEwLDEwLDAsNSw2LDAsMTMsMTUsMywxLDEzLDgsNCwxNCw3LDYsMTUsMTEsMiwzLDgsNCwxNCw5LDEyLDcsMCwyLDEsMTMsMTAsMTIsNiwwLDksNSwxMSwxMCw1LDAsMTMsMTQsOCw3LDEwLDExLDEsMTAsMyw0LDE1LDEzLDQsMSwyLDUsMTEsOCw2LDEyLDcsNiwxMiw5LDAsMyw1LDIsMTQsMTUsOSwxMCwxMywwLDcsOSwwLDE0LDksNiwzLDMsNCwxNSw2LDUsMTAsMSwyLDEzLDgsMTIsNSw3LDE0LDExLDEyLDQsMTEsMiwxNSw4LDEsMTMsMSw2LDEwLDQsMTMsOSwwLDgsNiwxNSw5LDMsOCwwLDcsMTEsNCwxLDE1LDIsMTQsMTIsMyw1LDExLDEwLDUsMTQsMiw3LDEyLDcsMTMsMTMsOCwxNCwxMSwzLDUsMCw2LDYsMTUsOSwwLDEwLDMsMSw0LDIsNyw4LDIsNSwxMiwxMSwxLDEyLDEwLDQsMTQsMTUsOSwxMCwzLDYsMTUsOSwwLDAsNiwxMiwxMCwxMSwxLDcsMTMsMTMsOCwxNSw5LDEsNCwzLDUsMTQsMTEsNSwxMiwyLDcsOCwyLDQsMTQsMiwxNCwxMiwxMSw0LDIsMSwxMiw3LDQsMTAsNywxMSwxMyw2LDEsOCw1LDUsMCwzLDE1LDE1LDEwLDEzLDMsMCw5LDE0LDgsOSw2LDQsMTEsMiw4LDEsMTIsMTEsNywxMCwxLDEzLDE0LDcsMiw4LDEzLDE1LDYsOSwxNSwxMiwwLDUsOSw2LDEwLDMsNCwwLDUsMTQsMywxMiwxMCwxLDE1LDEwLDQsMTUsMiw5LDcsMiwxMiw2LDksOCw1LDAsNiwxMywxLDMsMTMsNCwxNCwxNCwwLDcsMTEsNSwzLDExLDgsOSw0LDE0LDMsMTUsMiw1LDEyLDIsOSw4LDUsMTIsMTUsMywxMCw3LDExLDAsMTQsNCwxLDEwLDcsMSw2LDEzLDAsMTEsOCw2LDEzLDQsMTMsMTEsMCwyLDExLDE0LDcsMTUsNCwwLDksOCwxLDEzLDEwLDMsMTQsMTIsMyw5LDUsNywxMiw1LDIsMTAsMTUsNiw4LDEsNiwxLDYsNCwxMSwxMSwxMywxMyw4LDEyLDEsMyw0LDcsMTAsMTQsNywxMCw5LDE1LDUsNiwwLDgsMTUsMCwxNCw1LDIsOSwzLDIsMTIsMTMsMSwyLDE1LDgsMTMsNCw4LDYsMTAsMTUsMywxMSw3LDEsNCwxMCwxMiw5LDUsMyw2LDE0LDExLDUsMCwwLDE0LDEyLDksNywyLDcsMiwxMSwxLDQsMTQsMSw3LDksNCwxMiwxMCwxNCw4LDIsMTMsMCwxNSw2LDEyLDEwLDksMTMsMCwxNSwzLDMsNSw1LDYsOCwxMV07ZS5zdWJzdGl0dXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPTAsaT0wO2k8NDtpKyspe3ZhciBvPXQ+Pj4xOC02KmkmNjMsYT1uWzY0Kmkrb107cjw8PTQscnw9YX1mb3IodmFyIGk9MDtpPDQ7aSsrKXt2YXIgbz1lPj4+MTgtNippJjYzLGE9blsyNTYrNjQqaStvXTtyPDw9NCxyfD1hfXJldHVybiByPj4+MH07dmFyIGk9WzE2LDI1LDEyLDExLDMsMjAsNCwxNSwzMSwxNyw5LDYsMjcsMTQsMSwyMiwzMCwyNCw4LDE4LDAsNSwyOSwyMywxMywxOSwyLDI2LDEwLDIxLDI4LDddO2UucGVybXV0ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPTA7cjxpLmxlbmd0aDtyKyspZTw8PTEsZXw9dD4+Pmlbcl0mMTtyZXR1cm4gZT4+PjB9LGUucGFkU3BsaXQ9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10LnRvU3RyaW5nKDIpO24ubGVuZ3RoPGU7KW49XCIwXCIrbjtmb3IodmFyIGk9W10sbz0wO288ZTtvKz1yKWkucHVzaChuLnNsaWNlKG8sbytyKSk7cmV0dXJuIGkuam9pbihcIiBcIil9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7Yy5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciBlPWxbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtZXNzYWdlIGRpZ2VzdFwiKTt0aGlzLl9oYXNoVHlwZT1lLmhhc2gsdGhpcy5faGFzaD1zKGUuaGFzaCksdGhpcy5fdGFnPWUuaWQsdGhpcy5fc2lnblR5cGU9ZS5zaWdufWZ1bmN0aW9uIGkodCl7Yy5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciBlPWxbdF07aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtZXNzYWdlIGRpZ2VzdFwiKTt0aGlzLl9oYXNoPXMoZS5oYXNoKSx0aGlzLl90YWc9ZS5pZCx0aGlzLl9zaWduVHlwZT1lLnNpZ259ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbmV3IG4odCl9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gbmV3IGkodCl9dmFyIGY9cigyMTEpLHM9cig1OSksdT1yKDIpLGg9cig1NDIpLGM9cigzMSksZD1yKDU0MyksbD17fTtPYmplY3Qua2V5cyhmKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2xbdF09bFt0LnRvTG93ZXJDYXNlKCldPWZbdF19KSx1KG4sYy5Xcml0YWJsZSksbi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXt0aGlzLl9oYXNoLnVwZGF0ZSh0KSxyKCl9LG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1uZXcgZSh0LHIpKSx0aGlzLl9oYXNoLnVwZGF0ZSh0KSx0aGlzfSxuLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKHQscil7dGhpcy5lbmQoKTt2YXIgbj10aGlzLl9oYXNoLmRpZ2VzdCgpLGk9aChlLmNvbmNhdChbdGhpcy5fdGFnLG5dKSx0LHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlKTtyZXR1cm4gcj9pLnRvU3RyaW5nKHIpOml9LHUoaSxjLldyaXRhYmxlKSxpLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3RoaXMuX2hhc2gudXBkYXRlKHQpLHIoKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQscikpLHRoaXMuX2hhc2gudXBkYXRlKHQpLHRoaXN9LGkucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih0LHIsbil7XCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW5ldyBlKHIsbikpLHRoaXMuZW5kKCk7dmFyIGk9dGhpcy5faGFzaC5kaWdlc3QoKTtyZXR1cm4gZChyLGUuY29uY2F0KFt0aGlzLl90YWcsaV0pLHQsdGhpcy5fc2lnblR5cGUpfSx0LmV4cG9ydHM9e1NpZ246byxWZXJpZnk6YSxjcmVhdGVTaWduOm8sY3JlYXRlVmVyaWZ5OmF9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe3ZhciBlPW8odCkscj1lLnRvUmVkKGEubW9udCh0Lm1vZHVsdXMpKS5yZWRQb3cobmV3IGEodC5wdWJsaWNFeHBvbmVudCkpLmZyb21SZWQoKTtyZXR1cm57YmxpbmRlcjpyLHVuYmxpbmRlcjplLmludm0odC5tb2R1bHVzKX19ZnVuY3Rpb24gaSh0LHIpe3ZhciBpPW4ociksbz1yLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGY9KGEubW9udChyLm1vZHVsdXMpLG5ldyBhKHQpLm11bChpLmJsaW5kZXIpLnVtb2Qoci5tb2R1bHVzKSkscz1mLnRvUmVkKGEubW9udChyLnByaW1lMSkpLHU9Zi50b1JlZChhLm1vbnQoci5wcmltZTIpKSxoPXIuY29lZmZpY2llbnQsYz1yLnByaW1lMSxkPXIucHJpbWUyLGw9cy5yZWRQb3coci5leHBvbmVudDEpLHA9dS5yZWRQb3coci5leHBvbmVudDIpO2w9bC5mcm9tUmVkKCkscD1wLmZyb21SZWQoKTt2YXIgYj1sLmlzdWIocCkuaW11bChoKS51bW9kKGMpO3JldHVybiBiLmltdWwoZCkscC5pYWRkKGIpLG5ldyBlKHAuaW11bChpLnVuYmxpbmRlcikudW1vZChyLm1vZHVsdXMpLnRvQXJyYXkoITEsbykpfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPXQubW9kdWx1cy5ieXRlTGVuZ3RoKCkscj1uZXcgYShmKGUpKTtyLmNtcCh0Lm1vZHVsdXMpPj0wfHwhci51bW9kKHQucHJpbWUxKXx8IXIudW1vZCh0LnByaW1lMik7KXI9bmV3IGEoZihlKSk7cmV0dXJuIHJ9dmFyIGE9cigxOCksZj1yKDYxKTt0LmV4cG9ydHM9aSxpLmdldHI9b30pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7dGhpcy50eXBlPXQsdGhpcy5wPW5ldyBvKGUucCwxNiksdGhpcy5yZWQ9ZS5wcmltZT9vLnJlZChlLnByaW1lKTpvLm1vbnQodGhpcy5wKSx0aGlzLnplcm89bmV3IG8oMCkudG9SZWQodGhpcy5yZWQpLHRoaXMub25lPW5ldyBvKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgbygyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5uPWUubiYmbmV3IG8oZS5uLDE2KSx0aGlzLmc9ZS5nJiZ0aGlzLnBvaW50RnJvbUpTT04oZS5nLGUuZ1JlZCksdGhpcy5fd25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDI9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMz1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQ0PW5ldyBBcnJheSg0KTt2YXIgcj10aGlzLm4mJnRoaXMucC5kaXYodGhpcy5uKTshcnx8ci5jbXBuKDEwMCk+MD90aGlzLnJlZE49bnVsbDoodGhpcy5fbWF4d2VsbFRyaWNrPSEwLHRoaXMucmVkTj10aGlzLm4udG9SZWQodGhpcy5yZWQpKX1mdW5jdGlvbiBpKHQsZSl7dGhpcy5jdXJ2ZT10LHRoaXMudHlwZT1lLHRoaXMucHJlY29tcHV0ZWQ9bnVsbH12YXIgbz1yKDE4KSxhPXIoMTkpLGY9YS51dGlscyxzPWYuZ2V0TkFGLHU9Zi5nZXRKU0YsaD1mLmFzc2VydDt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZFwiKX0sbi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIil9LG4ucHJvdG90eXBlLl9maXhlZE5hZk11bD1mdW5jdGlvbih0LGUpe2godC5wcmVjb21wdXRlZCk7dmFyIHI9dC5fZ2V0RG91YmxlcygpLG49cyhlLDEpLGk9KDE8PHIuc3RlcCsxKS0oci5zdGVwJTI9PT0wPzI6MSk7aS89Mztmb3IodmFyIG89W10sYT0wO2E8bi5sZW5ndGg7YSs9ci5zdGVwKXtmb3IodmFyIGY9MCxlPWErci5zdGVwLTE7ZT49YTtlLS0pZj0oZjw8MSkrbltlXTtvLnB1c2goZil9Zm9yKHZhciB1PXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxjPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxkPWk7ZD4wO2QtLSl7Zm9yKHZhciBhPTA7YTxvLmxlbmd0aDthKyspe3ZhciBmPW9bYV07Zj09PWQ/Yz1jLm1peGVkQWRkKHIucG9pbnRzW2FdKTpmPT09LWQmJihjPWMubWl4ZWRBZGQoci5wb2ludHNbYV0ubmVnKCkpKX11PXUuYWRkKGMpfXJldHVybiB1LnRvUCgpfSxuLnByb3RvdHlwZS5fd25hZk11bD1mdW5jdGlvbih0LGUpe3ZhciByPTQsbj10Ll9nZXROQUZQb2ludHMocik7cj1uLnduZDtmb3IodmFyIGk9bi5wb2ludHMsbz1zKGUsciksYT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksZj1vLmxlbmd0aC0xO2Y+PTA7Zi0tKXtmb3IodmFyIGU9MDtmPj0wJiYwPT09b1tmXTtmLS0pZSsrO2lmKGY+PTAmJmUrKyxhPWEuZGJscChlKSxmPDApYnJlYWs7dmFyIHU9b1tmXTtoKDAhPT11KSxhPVwiYWZmaW5lXCI9PT10LnR5cGU/dT4wP2EubWl4ZWRBZGQoaVt1LTE+PjFdKTphLm1peGVkQWRkKGlbLXUtMT4+MV0ubmVnKCkpOnU+MD9hLmFkZChpW3UtMT4+MV0pOmEuYWRkKGlbLXUtMT4+MV0ubmVnKCkpfXJldHVyblwiYWZmaW5lXCI9PT10LnR5cGU/YS50b1AoKTphfSxuLnByb3RvdHlwZS5fd25hZk11bEFkZD1mdW5jdGlvbih0LGUscixuLGkpe2Zvcih2YXIgbz10aGlzLl93bmFmVDEsYT10aGlzLl93bmFmVDIsZj10aGlzLl93bmFmVDMsaD0wLGM9MDtjPG47YysrKXt2YXIgZD1lW2NdLGw9ZC5fZ2V0TkFGUG9pbnRzKHQpO29bY109bC53bmQsYVtjXT1sLnBvaW50c31mb3IodmFyIGM9bi0xO2M+PTE7Yy09Mil7dmFyIHA9Yy0xLGI9YztpZigxPT09b1twXSYmMT09PW9bYl0pe3ZhciB2PVtlW3BdLG51bGwsbnVsbCxlW2JdXTswPT09ZVtwXS55LmNtcChlW2JdLnkpPyh2WzFdPWVbcF0uYWRkKGVbYl0pLHZbMl09ZVtwXS50b0ooKS5taXhlZEFkZChlW2JdLm5lZygpKSk6MD09PWVbcF0ueS5jbXAoZVtiXS55LnJlZE5lZygpKT8odlsxXT1lW3BdLnRvSigpLm1peGVkQWRkKGVbYl0pLHZbMl09ZVtwXS5hZGQoZVtiXS5uZWcoKSkpOih2WzFdPWVbcF0udG9KKCkubWl4ZWRBZGQoZVtiXSksdlsyXT1lW3BdLnRvSigpLm1peGVkQWRkKGVbYl0ubmVnKCkpKTt2YXIgeT1bLTMsLTEsLTUsLTcsMCw3LDUsMSwzXSxtPXUocltwXSxyW2JdKTtoPU1hdGgubWF4KG1bMF0ubGVuZ3RoLGgpLGZbcF09bmV3IEFycmF5KGgpLGZbYl09bmV3IEFycmF5KGgpO2Zvcih2YXIgZz0wO2c8aDtnKyspe3ZhciB3PTB8bVswXVtnXSxfPTB8bVsxXVtnXTtmW3BdW2ddPXlbMyoodysxKSsoXysxKV0sZltiXVtnXT0wLGFbcF09dn19ZWxzZSBmW3BdPXMocltwXSxvW3BdKSxmW2JdPXMocltiXSxvW2JdKSxoPU1hdGgubWF4KGZbcF0ubGVuZ3RoLGgpLGg9TWF0aC5tYXgoZltiXS5sZW5ndGgsaCl9Zm9yKHZhciBNPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxTPXRoaXMuX3duYWZUNCxjPWg7Yz49MDtjLS0pe2Zvcih2YXIgRT0wO2M+PTA7KXtmb3IodmFyIEE9ITAsZz0wO2c8bjtnKyspU1tnXT0wfGZbZ11bY10sMCE9PVNbZ10mJihBPSExKTtpZighQSlicmVhaztFKyssYy0tfWlmKGM+PTAmJkUrKyxNPU0uZGJscChFKSxjPDApYnJlYWs7Zm9yKHZhciBnPTA7ZzxuO2crKyl7dmFyIGQsaz1TW2ddOzAhPT1rJiYoaz4wP2Q9YVtnXVtrLTE+PjFdOms8MCYmKGQ9YVtnXVstay0xPj4xXS5uZWcoKSksTT1cImFmZmluZVwiPT09ZC50eXBlP00ubWl4ZWRBZGQoZCk6TS5hZGQoZCkpfX1mb3IodmFyIGM9MDtjPG47YysrKWFbY109bnVsbDtyZXR1cm4gaT9NOk0udG9QKCl9LG4uQmFzZVBvaW50PWksaS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIil9LGkucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyl9LG4ucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKHQsZSl7dD1mLnRvQXJyYXkodCxlKTt2YXIgcj10aGlzLnAuYnl0ZUxlbmd0aCgpO2lmKCg0PT09dFswXXx8Nj09PXRbMF18fDc9PT10WzBdKSYmdC5sZW5ndGgtMT09PTIqcil7Nj09PXRbMF0/aCh0W3QubGVuZ3RoLTFdJTI9PT0wKTo3PT09dFswXSYmaCh0W3QubGVuZ3RoLTFdJTI9PT0xKTt2YXIgbj10aGlzLnBvaW50KHQuc2xpY2UoMSwxK3IpLHQuc2xpY2UoMStyLDErMipyKSk7cmV0dXJuIG59aWYoKDI9PT10WzBdfHwzPT09dFswXSkmJnQubGVuZ3RoLTE9PT1yKXJldHVybiB0aGlzLnBvaW50RnJvbVgodC5zbGljZSgxLDErciksMz09PXRbMF0pO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gcG9pbnQgZm9ybWF0XCIpfSxpLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVuY29kZSh0LCEwKX0saS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLHI9dGhpcy5nZXRYKCkudG9BcnJheShcImJlXCIsZSk7cmV0dXJuIHQ/W3RoaXMuZ2V0WSgpLmlzRXZlbigpPzI6M10uY29uY2F0KHIpOls0XS5jb25jYXQocix0aGlzLmdldFkoKS50b0FycmF5KFwiYmVcIixlKSl9LGkucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVybiBmLmVuY29kZSh0aGlzLl9lbmNvZGUoZSksdCl9LGkucHJvdG90eXBlLnByZWNvbXB1dGU9ZnVuY3Rpb24odCl7aWYodGhpcy5wcmVjb21wdXRlZClyZXR1cm4gdGhpczt2YXIgZT17ZG91YmxlczpudWxsLG5hZjpudWxsLGJldGE6bnVsbH07cmV0dXJuIGUubmFmPXRoaXMuX2dldE5BRlBvaW50cyg4KSxlLmRvdWJsZXM9dGhpcy5fZ2V0RG91Ymxlcyg0LHQpLGUuYmV0YT10aGlzLl9nZXRCZXRhKCksdGhpcy5wcmVjb21wdXRlZD1lLHRoaXN9LGkucHJvdG90eXBlLl9oYXNEb3VibGVzPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLnByZWNvbXB1dGVkKXJldHVybiExO3ZhciBlPXRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztyZXR1cm4hIWUmJmUucG9pbnRzLmxlbmd0aD49TWF0aC5jZWlsKCh0LmJpdExlbmd0aCgpKzEpL2Uuc3RlcCl9LGkucHJvdG90eXBlLl9nZXREb3VibGVzPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7Zm9yKHZhciByPVt0aGlzXSxuPXRoaXMsaT0wO2k8ZTtpKz10KXtmb3IodmFyIG89MDtvPHQ7bysrKW49bi5kYmwoKTtyLnB1c2gobil9cmV0dXJue3N0ZXA6dCxwb2ludHM6cn19LGkucHJvdG90eXBlLl9nZXROQUZQb2ludHM9ZnVuY3Rpb24odCl7aWYodGhpcy5wcmVjb21wdXRlZCYmdGhpcy5wcmVjb21wdXRlZC5uYWYpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQubmFmO2Zvcih2YXIgZT1bdGhpc10scj0oMTw8dCktMSxuPTE9PT1yP251bGw6dGhpcy5kYmwoKSxpPTE7aTxyO2krKyllW2ldPWVbaS0xXS5hZGQobik7cmV0dXJue3duZDp0LHBvaW50czplfX0saS5wcm90b3R5cGUuX2dldEJldGE9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0saS5wcm90b3R5cGUuZGJscD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcyxyPTA7cjx0O3IrKyllPWUuZGJsKCk7cmV0dXJuIGV9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0KXt0aGlzLnR3aXN0ZWQ9MSE9PSgwfHQuYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJigwfHQuYSk9PT0tMSx0aGlzLmV4dGVuZGVkPXRoaXMubU9uZUEsdS5jYWxsKHRoaXMsXCJlZHdhcmRzXCIsdCksdGhpcy5hPW5ldyBmKHQuYSwxNikudW1vZCh0aGlzLnJlZC5tKSx0aGlzLmE9dGhpcy5hLnRvUmVkKHRoaXMucmVkKSx0aGlzLmM9bmV3IGYodC5jLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5jMj10aGlzLmMucmVkU3FyKCksdGhpcy5kPW5ldyBmKHQuZCwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuZGQ9dGhpcy5kLnJlZEFkZCh0aGlzLmQpLGgoIXRoaXMudHdpc3RlZHx8MD09PXRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSksdGhpcy5vbmVDPTE9PT0oMHx0LmMpfWZ1bmN0aW9uIGkodCxlLHIsbixpKXt1LkJhc2VQb2ludC5jYWxsKHRoaXMsdCxcInByb2plY3RpdmVcIiksbnVsbD09PWUmJm51bGw9PT1yJiZudWxsPT09bj8odGhpcy54PXRoaXMuY3VydmUuemVybyx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMudD10aGlzLmN1cnZlLnplcm8sdGhpcy56T25lPSEwKToodGhpcy54PW5ldyBmKGUsMTYpLHRoaXMueT1uZXcgZihyLDE2KSx0aGlzLno9bj9uZXcgZihuLDE2KTp0aGlzLmN1cnZlLm9uZSx0aGlzLnQ9aSYmbmV3IGYoaSwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuei5yZWR8fCh0aGlzLno9dGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy50JiYhdGhpcy50LnJlZCYmKHRoaXMudD10aGlzLnQudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmUsdGhpcy5jdXJ2ZS5leHRlbmRlZCYmIXRoaXMudCYmKHRoaXMudD10aGlzLngucmVkTXVsKHRoaXMueSksdGhpcy56T25lfHwodGhpcy50PXRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSkpKSl9dmFyIG89cig5OSksYT1yKDE5KSxmPXIoMTgpLHM9cigyKSx1PW8uYmFzZSxoPWEudXRpbHMuYXNzZXJ0O3Mobix1KSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5fbXVsQT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tT25lQT90LnJlZE5lZygpOnRoaXMuYS5yZWRNdWwodCl9LG4ucHJvdG90eXBlLl9tdWxDPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9uZUM/dDp0aGlzLmMucmVkTXVsKHQpfSxuLnByb3RvdHlwZS5qcG9pbnQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHRoaXMucG9pbnQodCxlLHIsbil9LG4ucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24odCxlKXt0PW5ldyBmKHQsMTYpLHQucmVkfHwodD10LnRvUmVkKHRoaXMucmVkKSk7dmFyIHI9dC5yZWRTcXIoKSxuPXRoaXMuYzIucmVkU3ViKHRoaXMuYS5yZWRNdWwocikpLGk9dGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHIpKSxvPW4ucmVkTXVsKGkucmVkSW52bSgpKSxhPW8ucmVkU3FydCgpO2lmKDAhPT1hLnJlZFNxcigpLnJlZFN1YihvKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50XCIpO3ZhciBzPWEuZnJvbVJlZCgpLmlzT2RkKCk7cmV0dXJuKGUmJiFzfHwhZSYmcykmJihhPWEucmVkTmVnKCkpLHRoaXMucG9pbnQodCxhKX0sbi5wcm90b3R5cGUucG9pbnRGcm9tWT1mdW5jdGlvbih0LGUpe3Q9bmV3IGYodCwxNiksdC5yZWR8fCh0PXQudG9SZWQodGhpcy5yZWQpKTt2YXIgcj10LnJlZFNxcigpLG49ci5yZWRTdWIodGhpcy5vbmUpLGk9ci5yZWRNdWwodGhpcy5kKS5yZWRBZGQodGhpcy5vbmUpLG89bi5yZWRNdWwoaS5yZWRJbnZtKCkpO2lmKDA9PT1vLmNtcCh0aGlzLnplcm8pKXtpZihlKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7cmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLHQpfXZhciBhPW8ucmVkU3FydCgpO2lmKDAhPT1hLnJlZFNxcigpLnJlZFN1YihvKS5jbXAodGhpcy56ZXJvKSl0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50XCIpO3JldHVybiBhLmlzT2RkKCkhPT1lJiYoYT1hLnJlZE5lZygpKSx0aGlzLnBvaW50KGEsdCl9LG4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe2lmKHQuaXNJbmZpbml0eSgpKXJldHVybiEwO3Qubm9ybWFsaXplKCk7dmFyIGU9dC54LnJlZFNxcigpLHI9dC55LnJlZFNxcigpLG49ZS5yZWRNdWwodGhpcy5hKS5yZWRBZGQociksaT10aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bChlKS5yZWRNdWwocikpKTtyZXR1cm4gMD09PW4uY21wKGkpfSxzKGksdS5CYXNlUG9pbnQpLG4ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIGkuZnJvbUpTT04odGhpcyx0KX0sbi5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG5ldyBpKHRoaXMsdCxlLHIsbil9LGkuZnJvbUpTT049ZnVuY3Rpb24odCxlKXtyZXR1cm4gbmV3IGkodCxlWzBdLGVbMV0sZVsyXSl9LGkucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/XCI8RUMgUG9pbnQgSW5maW5pdHk+XCI6XCI8RUMgUG9pbnQgeDogXCIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIiB5OiBcIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiIHo6IFwiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCI+XCJ9LGkucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMueC5jbXBuKDApJiYwPT09dGhpcy55LmNtcCh0aGlzLnopfSxpLnByb3RvdHlwZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy54LnJlZFNxcigpLGU9dGhpcy55LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpO3I9ci5yZWRJQWRkKHIpO3ZhciBuPXRoaXMuY3VydmUuX211bEEodCksaT10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1Yih0KS5yZWRJU3ViKGUpLG89bi5yZWRBZGQoZSksYT1vLnJlZFN1YihyKSxmPW4ucmVkU3ViKGUpLHM9aS5yZWRNdWwoYSksdT1vLnJlZE11bChmKSxoPWkucmVkTXVsKGYpLGM9YS5yZWRNdWwobyk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQocyx1LGMsaCl9LGkucHJvdG90eXBlLl9wcm9qRGJsPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG49dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLGk9dGhpcy54LnJlZFNxcigpLG89dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7dmFyIGE9dGhpcy5jdXJ2ZS5fbXVsQShpKSxmPWEucmVkQWRkKG8pO2lmKHRoaXMuek9uZSl0PW4ucmVkU3ViKGkpLnJlZFN1YihvKS5yZWRNdWwoZi5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKSxlPWYucmVkTXVsKGEucmVkU3ViKG8pKSxyPWYucmVkU3FyKCkucmVkU3ViKGYpLnJlZFN1YihmKTtlbHNle3ZhciBzPXRoaXMuei5yZWRTcXIoKSx1PWYucmVkU3ViKHMpLnJlZElTdWIocyk7dD1uLnJlZFN1YihpKS5yZWRJU3ViKG8pLnJlZE11bCh1KSxlPWYucmVkTXVsKGEucmVkU3ViKG8pKSxyPWYucmVkTXVsKHUpfX1lbHNle3ZhciBhPWkucmVkQWRkKG8pLHM9dGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLmMucmVkTXVsKHRoaXMueikpLnJlZFNxcigpLHU9YS5yZWRTdWIocykucmVkU3ViKHMpO3Q9dGhpcy5jdXJ2ZS5fbXVsQyhuLnJlZElTdWIoYSkpLnJlZE11bCh1KSxlPXRoaXMuY3VydmUuX211bEMoYSkucmVkTXVsKGkucmVkSVN1YihvKSkscj1hLnJlZE11bCh1KX1yZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0LGUscil9LGkucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0RGJsKCk6dGhpcy5fcHJvakRibCgpfSxpLnByb3RvdHlwZS5fZXh0QWRkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwodC55LnJlZFN1Yih0LngpKSxyPXRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwodC55LnJlZEFkZCh0LngpKSxuPXRoaXMudC5yZWRNdWwodGhpcy5jdXJ2ZS5kZCkucmVkTXVsKHQudCksaT10aGlzLnoucmVkTXVsKHQuei5yZWRBZGQodC56KSksbz1yLnJlZFN1YihlKSxhPWkucmVkU3ViKG4pLGY9aS5yZWRBZGQobikscz1yLnJlZEFkZChlKSx1PW8ucmVkTXVsKGEpLGg9Zi5yZWRNdWwocyksYz1vLnJlZE11bChzKSxkPWEucmVkTXVsKGYpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHUsaCxkLGMpfSxpLnByb3RvdHlwZS5fcHJvakFkZD1mdW5jdGlvbih0KXt2YXIgZSxyLG49dGhpcy56LnJlZE11bCh0LnopLGk9bi5yZWRTcXIoKSxvPXRoaXMueC5yZWRNdWwodC54KSxhPXRoaXMueS5yZWRNdWwodC55KSxmPXRoaXMuY3VydmUuZC5yZWRNdWwobykucmVkTXVsKGEpLHM9aS5yZWRTdWIoZiksdT1pLnJlZEFkZChmKSxoPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRNdWwodC54LnJlZEFkZCh0LnkpKS5yZWRJU3ViKG8pLnJlZElTdWIoYSksYz1uLnJlZE11bChzKS5yZWRNdWwoaCk7cmV0dXJuIHRoaXMuY3VydmUudHdpc3RlZD8oZT1uLnJlZE11bCh1KS5yZWRNdWwoYS5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShvKSkpLHI9cy5yZWRNdWwodSkpOihlPW4ucmVkTXVsKHUpLnJlZE11bChhLnJlZFN1YihvKSkscj10aGlzLmN1cnZlLl9tdWxDKHMpLnJlZE11bCh1KSksdGhpcy5jdXJ2ZS5wb2ludChjLGUscil9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dDp0LmlzSW5maW5pdHkoKT90aGlzOnRoaXMuY3VydmUuZXh0ZW5kZWQ/dGhpcy5fZXh0QWRkKHQpOnRoaXMuX3Byb2pBZGQodCl9LGkucHJvdG90eXBlLm11bD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzRG91Ymxlcyh0KT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLHQpOnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyx0KX0saS5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLGVdLFt0LHJdLDIsITEpfSxpLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLFt0aGlzLGVdLFt0LHJdLDIsITApfSxpLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtpZih0aGlzLnpPbmUpcmV0dXJuIHRoaXM7dmFyIHQ9dGhpcy56LnJlZEludm0oKTtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodCksdGhpcy55PXRoaXMueS5yZWRNdWwodCksdGhpcy50JiYodGhpcy50PXRoaXMudC5yZWRNdWwodCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnpPbmU9ITAsdGhpc30saS5wcm90b3R5cGUubmVnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLHRoaXMueSx0aGlzLnosdGhpcy50JiZ0aGlzLnQucmVkTmVnKCkpfSxpLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX0saS5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLHRoaXMueS5mcm9tUmVkKCl9LGkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8MD09PXRoaXMuZ2V0WCgpLmNtcCh0LmdldFgoKSkmJjA9PT10aGlzLmdldFkoKS5jbXAodC5nZXRZKCkpfSxpLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24odCl7dmFyIGU9dC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKHRoaXMueik7aWYoMD09PXRoaXMueC5jbXAoZSkpcmV0dXJuITA7Zm9yKHZhciByPXQuY2xvbmUoKSxuPXRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTs7KXtpZihyLmlhZGQodGhpcy5jdXJ2ZS5uKSxyLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKGUucmVkSUFkZChuKSwwPT09dGhpcy54LmNtcChlKSlyZXR1cm4hMH1yZXR1cm4hMX0saS5wcm90b3R5cGUudG9QPWkucHJvdG90eXBlLm5vcm1hbGl6ZSxpLnByb3RvdHlwZS5taXhlZEFkZD1pLnByb3RvdHlwZS5hZGR9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe3MuY2FsbCh0aGlzLFwibW9udFwiLHQpLHRoaXMuYT1uZXcgYSh0LmEsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmI9bmV3IGEodC5iLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5pND1uZXcgYSg0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpLHRoaXMudHdvPW5ldyBhKDIpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmEyND10aGlzLmk0LnJlZE11bCh0aGlzLmEucmVkQWRkKHRoaXMudHdvKSl9ZnVuY3Rpb24gaSh0LGUscil7cy5CYXNlUG9pbnQuY2FsbCh0aGlzLHQsXCJwcm9qZWN0aXZlXCIpLG51bGw9PT1lJiZudWxsPT09cj8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlzLng9bmV3IGEoZSwxNiksdGhpcy56PW5ldyBhKHIsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSl9dmFyIG89cig5OSksYT1yKDE4KSxmPXIoMikscz1vLmJhc2UsdT1yKDE5KSxoPXUudXRpbHM7ZihuLHMpLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQubm9ybWFsaXplKCkueCxyPWUucmVkU3FyKCksbj1yLnJlZE11bChlKS5yZWRBZGQoci5yZWRNdWwodGhpcy5hKSkucmVkQWRkKGUpLGk9bi5yZWRTcXJ0KCk7cmV0dXJuIDA9PT1pLnJlZFNxcigpLmNtcChuKX0sZihpLHMuQmFzZVBvaW50KSxuLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBvaW50KGgudG9BcnJheSh0LGUpLDEpfSxuLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0aGlzLHQsZSl9LG4ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIGkuZnJvbUpTT04odGhpcyx0KX0saS5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30saS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KFwiYmVcIix0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKX0saS5mcm9tSlNPTj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0LGVbMF0sZVsxXXx8dC5vbmUpfSxpLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIFBvaW50IEluZmluaXR5PlwiOlwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn0saS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LGkucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciB0PXRoaXMueC5yZWRBZGQodGhpcy56KSxlPXQucmVkU3FyKCkscj10aGlzLngucmVkU3ViKHRoaXMueiksbj1yLnJlZFNxcigpLGk9ZS5yZWRTdWIobiksbz1lLnJlZE11bChuKSxhPWkucmVkTXVsKG4ucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChpKSkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG8sYSl9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX0saS5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMueC5yZWRBZGQodGhpcy56KSxuPXRoaXMueC5yZWRTdWIodGhpcy56KSxpPXQueC5yZWRBZGQodC56KSxvPXQueC5yZWRTdWIodC56KSxhPW8ucmVkTXVsKHIpLGY9aS5yZWRNdWwobikscz1lLnoucmVkTXVsKGEucmVkQWRkKGYpLnJlZFNxcigpKSx1PWUueC5yZWRNdWwoYS5yZWRJU3ViKGYpLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzLHUpfSxpLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY2xvbmUoKSxyPXRoaXMsbj10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksaT10aGlzLG89W107MCE9PWUuY21wbigwKTtlLml1c2hybigxKSlvLnB1c2goZS5hbmRsbigxKSk7Zm9yKHZhciBhPW8ubGVuZ3RoLTE7YT49MDthLS0pMD09PW9bYV0/KHI9ci5kaWZmQWRkKG4saSksbj1uLmRibCgpKToobj1yLmRpZmZBZGQobixpKSxyPXIuZGJsKCkpO3JldHVybiBufSxpLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9LGkucHJvdG90eXBlLmp1bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9LGkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5nZXRYKCkuY21wKHQuZ2V0WCgpKX0saS5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzfSxpLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe2guY2FsbCh0aGlzLFwic2hvcnRcIix0KSx0aGlzLmE9bmV3IHModC5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBzKHQuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20odCksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gaSh0LGUscixuKXtoLkJhc2VQb2ludC5jYWxsKHRoaXMsdCxcImFmZmluZVwiKSxudWxsPT09ZSYmbnVsbD09PXI/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhpcy54PW5ldyBzKGUsMTYpLHRoaXMueT1uZXcgcyhyLDE2KSxuJiYodGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSx0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy5pbmY9ITEpfWZ1bmN0aW9uIG8odCxlLHIsbil7aC5CYXNlUG9pbnQuY2FsbCh0aGlzLHQsXCJqYWNvYmlhblwiKSxudWxsPT09ZSYmbnVsbD09PXImJm51bGw9PT1uPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgcygwKSk6KHRoaXMueD1uZXcgcyhlLDE2KSx0aGlzLnk9bmV3IHMociwxNiksdGhpcy56PW5ldyBzKG4sMTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9dmFyIGE9cig5OSksZj1yKDE5KSxzPXIoMTgpLHU9cigyKSxoPWEuYmFzZSxjPWYudXRpbHMuYXNzZXJ0O3UobixoKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtPWZ1bmN0aW9uKHQpe2lmKHRoaXMuemVyb0EmJnRoaXMuZyYmdGhpcy5uJiYxPT09dGhpcy5wLm1vZG4oMykpe3ZhciBlLHI7aWYodC5iZXRhKWU9bmV3IHModC5iZXRhLDE2KS50b1JlZCh0aGlzLnJlZCk7ZWxzZXt2YXIgbj10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtlPW5bMF0uY21wKG5bMV0pPDA/blswXTpuWzFdLGU9ZS50b1JlZCh0aGlzLnJlZCl9aWYodC5sYW1iZGEpcj1uZXcgcyh0LmxhbWJkYSwxNik7ZWxzZXt2YXIgaT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTswPT09dGhpcy5nLm11bChpWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoZSkpP3I9aVswXToocj1pWzFdLGMoMD09PXRoaXMuZy5tdWwocikueC5jbXAodGhpcy5nLngucmVkTXVsKGUpKSkpfXZhciBvO3JldHVybiBvPXQuYmFzaXM/dC5iYXNpcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJue2E6bmV3IHModC5hLDE2KSxiOm5ldyBzKHQuYiwxNil9fSk6dGhpcy5fZ2V0RW5kb0Jhc2lzKHIpLHtiZXRhOmUsbGFtYmRhOnIsYmFzaXM6b319fSxuLnByb3RvdHlwZS5fZ2V0RW5kb1Jvb3RzPWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PT10aGlzLnA/dGhpcy5yZWQ6cy5tb250KHQpLHI9bmV3IHMoMikudG9SZWQoZSkucmVkSW52bSgpLG49ci5yZWROZWcoKSxpPW5ldyBzKDMpLnRvUmVkKGUpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwociksbz1uLnJlZEFkZChpKS5mcm9tUmVkKCksYT1uLnJlZFN1YihpKS5mcm9tUmVkKCk7cmV0dXJuW28sYV19LG4ucHJvdG90eXBlLl9nZXRFbmRvQmFzaXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHIsbixpLG8sYSxmLHUsaCxjPXRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKS8yKSksZD10LGw9dGhpcy5uLmNsb25lKCkscD1uZXcgcygxKSxiPW5ldyBzKDApLHY9bmV3IHMoMCkseT1uZXcgcygxKSxtPTA7MCE9PWQuY21wbigwKTspe3ZhciBnPWwuZGl2KGQpO3U9bC5zdWIoZy5tdWwoZCkpLGg9di5zdWIoZy5tdWwocCkpO3ZhciB3PXkuc3ViKGcubXVsKGIpKTtpZighbiYmdS5jbXAoYyk8MCllPWYubmVnKCkscj1wLG49dS5uZWcoKSxpPWg7ZWxzZSBpZihuJiYyPT09KyttKWJyZWFrO2Y9dSxsPWQsZD11LHY9cCxwPWgseT1iLGI9d31vPXUubmVnKCksYT1oO3ZhciBfPW4uc3FyKCkuYWRkKGkuc3FyKCkpLE09by5zcXIoKS5hZGQoYS5zcXIoKSk7cmV0dXJuIE0uY21wKF8pPj0wJiYobz1lLGE9ciksbi5uZWdhdGl2ZSYmKG49bi5uZWcoKSxpPWkubmVnKCkpLG8ubmVnYXRpdmUmJihvPW8ubmVnKCksYT1hLm5lZygpKSxbe2E6bixiOml9LHthOm8sYjphfV19LG4ucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbmRvLmJhc2lzLHI9ZVswXSxuPWVbMV0saT1uLmIubXVsKHQpLmRpdlJvdW5kKHRoaXMubiksbz1yLmIubmVnKCkubXVsKHQpLmRpdlJvdW5kKHRoaXMubiksYT1pLm11bChyLmEpLGY9by5tdWwobi5hKSxzPWkubXVsKHIuYiksdT1vLm11bChuLmIpLGg9dC5zdWIoYSkuc3ViKGYpLGM9cy5hZGQodSkubmVnKCk7cmV0dXJue2sxOmgsazI6Y319LG4ucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24odCxlKXt0PW5ldyBzKHQsMTYpLHQucmVkfHwodD10LnRvUmVkKHRoaXMucmVkKSk7dmFyIHI9dC5yZWRTcXIoKS5yZWRNdWwodCkucmVkSUFkZCh0LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksbj1yLnJlZFNxcnQoKTtpZigwIT09bi5yZWRTcXIoKS5yZWRTdWIocikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludFwiKTt2YXIgaT1uLmZyb21SZWQoKS5pc09kZCgpO3JldHVybihlJiYhaXx8IWUmJmkpJiYobj1uLnJlZE5lZygpKSx0aGlzLnBvaW50KHQsbil9LG4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe2lmKHQuaW5mKXJldHVybiEwO3ZhciBlPXQueCxyPXQueSxuPXRoaXMuYS5yZWRNdWwoZSksaT1lLnJlZFNxcigpLnJlZE11bChlKS5yZWRJQWRkKG4pLnJlZElBZGQodGhpcy5iKTtyZXR1cm4gMD09PXIucmVkU3FyKCkucmVkSVN1YihpKS5jbXBuKDApfSxuLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQ9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj10aGlzLl9lbmRvV25hZlQxLGk9dGhpcy5fZW5kb1duYWZUMixvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRoaXMuX2VuZG9TcGxpdChlW29dKSxmPXRbb10scz1mLl9nZXRCZXRhKCk7YS5rMS5uZWdhdGl2ZSYmKGEuazEuaW5lZygpLGY9Zi5uZWcoITApKSxhLmsyLm5lZ2F0aXZlJiYoYS5rMi5pbmVnKCkscz1zLm5lZyghMCkpLG5bMipvXT1mLG5bMipvKzFdPXMsaVsyKm9dPWEuazEsaVsyKm8rMV09YS5rMn1mb3IodmFyIHU9dGhpcy5fd25hZk11bEFkZCgxLG4saSwyKm8sciksaD0wO2g8MipvO2grKyluW2hdPW51bGwsaVtoXT1udWxsO3JldHVybiB1fSx1KGksaC5CYXNlUG9pbnQpLG4ucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbmV3IGkodGhpcyx0LGUscil9LG4ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24odCxlKXtyZXR1cm4gaS5mcm9tSlNPTih0aGlzLHQsZSl9LGkucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5jdXJ2ZS5lbmRvKXt2YXIgdD10aGlzLnByZWNvbXB1dGVkO2lmKHQmJnQuYmV0YSlyZXR1cm4gdC5iZXRhO3ZhciBlPXRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksdGhpcy55KTtpZih0KXt2YXIgcj10aGlzLmN1cnZlLG49ZnVuY3Rpb24odCl7cmV0dXJuIHIucG9pbnQodC54LnJlZE11bChyLmVuZG8uYmV0YSksdC55KX07dC5iZXRhPWUsZS5wcmVjb21wdXRlZD17YmV0YTpudWxsLG5hZjp0Lm5hZiYme3duZDp0Lm5hZi53bmQscG9pbnRzOnQubmFmLnBvaW50cy5tYXAobil9LGRvdWJsZXM6dC5kb3VibGVzJiZ7c3RlcDp0LmRvdWJsZXMuc3RlcCxwb2ludHM6dC5kb3VibGVzLnBvaW50cy5tYXAobil9fX1yZXR1cm4gZX19LGkucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByZWNvbXB1dGVkP1t0aGlzLngsdGhpcy55LHRoaXMucHJlY29tcHV0ZWQmJntkb3VibGVzOnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyYme3N0ZXA6dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSl9LG5hZjp0aGlzLnByZWNvbXB1dGVkLm5hZiYme3duZDp0aGlzLnByZWNvbXB1dGVkLm5hZi53bmQscG9pbnRzOnRoaXMucHJlY29tcHV0ZWQubmFmLnBvaW50cy5zbGljZSgxKX19XTpbdGhpcy54LHRoaXMueV19LGkuZnJvbUpTT049ZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHQucG9pbnQoZVswXSxlWzFdLHIpfVwic3RyaW5nXCI9PXR5cGVvZiBlJiYoZT1KU09OLnBhcnNlKGUpKTt2YXIgaT10LnBvaW50KGVbMF0sZVsxXSxyKTtpZighZVsyXSlyZXR1cm4gaTt2YXIgbz1lWzJdO3JldHVybiBpLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsZG91YmxlczpvLmRvdWJsZXMmJntzdGVwOm8uZG91Ymxlcy5zdGVwLHBvaW50czpbaV0uY29uY2F0KG8uZG91Ymxlcy5wb2ludHMubWFwKG4pKX0sbmFmOm8ubmFmJiZ7d25kOm8ubmFmLnduZCxwb2ludHM6W2ldLmNvbmNhdChvLm5hZi5wb2ludHMubWFwKG4pKX19LGl9LGkucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/XCI8RUMgUG9pbnQgSW5maW5pdHk+XCI6XCI8RUMgUG9pbnQgeDogXCIrdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIiB5OiBcIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiPlwifSxpLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5mfSxpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7aWYodGhpcy5pbmYpcmV0dXJuIHQ7aWYodC5pbmYpcmV0dXJuIHRoaXM7aWYodGhpcy5lcSh0KSlyZXR1cm4gdGhpcy5kYmwoKTtpZih0aGlzLm5lZygpLmVxKHQpKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7aWYoMD09PXRoaXMueC5jbXAodC54KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBlPXRoaXMueS5yZWRTdWIodC55KTswIT09ZS5jbXBuKDApJiYoZT1lLnJlZE11bCh0aGlzLngucmVkU3ViKHQueCkucmVkSW52bSgpKSk7dmFyIHI9ZS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1Yih0LngpLG49ZS5yZWRNdWwodGhpcy54LnJlZFN1YihyKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHIsbil9LGkucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe2lmKHRoaXMuaW5mKXJldHVybiB0aGlzO3ZhciB0PXRoaXMueS5yZWRBZGQodGhpcy55KTtpZigwPT09dC5jbXBuKDApKXJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCk7dmFyIGU9dGhpcy5jdXJ2ZS5hLHI9dGhpcy54LnJlZFNxcigpLG49dC5yZWRJbnZtKCksaT1yLnJlZEFkZChyKS5yZWRJQWRkKHIpLnJlZElBZGQoZSkucmVkTXVsKG4pLG89aS5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSksYT1pLnJlZE11bCh0aGlzLngucmVkU3ViKG8pKS5yZWRJU3ViKHRoaXMueSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQobyxhKX0saS5wcm90b3R5cGUuZ2V0WD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnguZnJvbVJlZCgpfSxpLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueS5mcm9tUmVkKCl9LGkucHJvdG90eXBlLm11bD1mdW5jdGlvbih0KXtyZXR1cm4gdD1uZXcgcyh0LDE2KSx0aGlzLl9oYXNEb3VibGVzKHQpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsdCk6dGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFt0aGlzXSxbdF0pOnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyx0KX0saS5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bdGhpcyxlXSxpPVt0LHJdO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQobixpKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsbixpLDIpfSxpLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1bdGhpcyxlXSxpPVt0LHJdO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQobixpLCEwKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsbixpLDIsITApfSxpLnByb3RvdHlwZS5lcT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcz09PXR8fHRoaXMuaW5mPT09dC5pbmYmJih0aGlzLmluZnx8MD09PXRoaXMueC5jbXAodC54KSYmMD09PXRoaXMueS5jbXAodC55KSl9LGkucHJvdG90eXBlLm5lZz1mdW5jdGlvbih0KXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgZT10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKHQmJnRoaXMucHJlY29tcHV0ZWQpe3ZhciByPXRoaXMucHJlY29tcHV0ZWQsbj1mdW5jdGlvbih0KXtyZXR1cm4gdC5uZWcoKX07ZS5wcmVjb21wdXRlZD17bmFmOnIubmFmJiZ7d25kOnIubmFmLnduZCxwb2ludHM6ci5uYWYucG9pbnRzLm1hcChuKX0sZG91YmxlczpyLmRvdWJsZXMmJntzdGVwOnIuZG91Ymxlcy5zdGVwLHBvaW50czpyLmRvdWJsZXMucG9pbnRzLm1hcChuKX19fXJldHVybiBlfSxpLnByb3RvdHlwZS50b0o9ZnVuY3Rpb24oKXtpZih0aGlzLmluZilyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciB0PXRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpO3JldHVybiB0fSx1KG8saC5CYXNlUG9pbnQpLG4ucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBvKHRoaXMsdCxlLHIpfSxvLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciB0PXRoaXMuei5yZWRJbnZtKCksZT10LnJlZFNxcigpLHI9dGhpcy54LnJlZE11bChlKSxuPXRoaXMueS5yZWRNdWwoZSkucmVkTXVsKHQpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHIsbil9LG8ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdDtpZih0LmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgZT10LnoucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCksbj10aGlzLngucmVkTXVsKGUpLGk9dC54LnJlZE11bChyKSxvPXRoaXMueS5yZWRNdWwoZS5yZWRNdWwodC56KSksYT10LnkucmVkTXVsKHIucmVkTXVsKHRoaXMueikpLGY9bi5yZWRTdWIoaSkscz1vLnJlZFN1YihhKTtpZigwPT09Zi5jbXBuKDApKXJldHVybiAwIT09cy5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciB1PWYucmVkU3FyKCksaD11LnJlZE11bChmKSxjPW4ucmVkTXVsKHUpLGQ9cy5yZWRTcXIoKS5yZWRJQWRkKGgpLnJlZElTdWIoYykucmVkSVN1YihjKSxsPXMucmVkTXVsKGMucmVkSVN1YihkKSkucmVkSVN1YihvLnJlZE11bChoKSkscD10aGlzLnoucmVkTXVsKHQueikucmVkTXVsKGYpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChkLGwscCl9LG8ucHJvdG90eXBlLm1peGVkQWRkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0LnRvSigpO2lmKHQuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBlPXRoaXMuei5yZWRTcXIoKSxyPXRoaXMueCxuPXQueC5yZWRNdWwoZSksaT10aGlzLnksbz10LnkucmVkTXVsKGUpLnJlZE11bCh0aGlzLnopLGE9ci5yZWRTdWIobiksZj1pLnJlZFN1YihvKTtpZigwPT09YS5jbXBuKDApKXJldHVybiAwIT09Zi5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBzPWEucmVkU3FyKCksdT1zLnJlZE11bChhKSxoPXIucmVkTXVsKHMpLGM9Zi5yZWRTcXIoKS5yZWRJQWRkKHUpLnJlZElTdWIoaCkucmVkSVN1YihoKSxkPWYucmVkTXVsKGgucmVkSVN1YihjKSkucmVkSVN1YihpLnJlZE11bCh1KSksbD10aGlzLnoucmVkTXVsKGEpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChjLGQsbCl9LG8ucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24odCl7aWYoMD09PXQpcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe2Zvcih2YXIgZT10aGlzLHI9MDtyPHQ7cisrKWU9ZS5kYmwoKTtyZXR1cm4gZX1mb3IodmFyIG49dGhpcy5jdXJ2ZS5hLGk9dGhpcy5jdXJ2ZS50aW52LG89dGhpcy54LGE9dGhpcy55LGY9dGhpcy56LHM9Zi5yZWRTcXIoKS5yZWRTcXIoKSx1PWEucmVkQWRkKGEpLHI9MDtyPHQ7cisrKXt2YXIgaD1vLnJlZFNxcigpLGM9dS5yZWRTcXIoKSxkPWMucmVkU3FyKCksbD1oLnJlZEFkZChoKS5yZWRJQWRkKGgpLnJlZElBZGQobi5yZWRNdWwocykpLHA9by5yZWRNdWwoYyksYj1sLnJlZFNxcigpLnJlZElTdWIocC5yZWRBZGQocCkpLHY9cC5yZWRJU3ViKGIpLHk9bC5yZWRNdWwodik7eT15LnJlZElBZGQoeSkucmVkSVN1YihkKTt2YXIgbT11LnJlZE11bChmKTtyKzE8dCYmKHM9cy5yZWRNdWwoZCkpLG89YixmPW0sdT15fXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChvLHUucmVkTXVsKGkpLGYpfSxvLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLnplcm9BP3RoaXMuX3plcm9EYmwoKTp0aGlzLmN1cnZlLnRocmVlQT90aGlzLl90aHJlZURibCgpOnRoaXMuX2RibCgpfSxvLnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbigpe3ZhciB0LGUscjtpZih0aGlzLnpPbmUpe3ZhciBuPXRoaXMueC5yZWRTcXIoKSxpPXRoaXMueS5yZWRTcXIoKSxvPWkucmVkU3FyKCksYT10aGlzLngucmVkQWRkKGkpLnJlZFNxcigpLnJlZElTdWIobikucmVkSVN1YihvKTthPWEucmVkSUFkZChhKTt2YXIgZj1uLnJlZEFkZChuKS5yZWRJQWRkKG4pLHM9Zi5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYSksdT1vLnJlZElBZGQobyk7dT11LnJlZElBZGQodSksdT11LnJlZElBZGQodSksdD1zLGU9Zi5yZWRNdWwoYS5yZWRJU3ViKHMpKS5yZWRJU3ViKHUpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIGg9dGhpcy54LnJlZFNxcigpLGM9dGhpcy55LnJlZFNxcigpLGQ9Yy5yZWRTcXIoKSxsPXRoaXMueC5yZWRBZGQoYykucmVkU3FyKCkucmVkSVN1YihoKS5yZWRJU3ViKGQpO2w9bC5yZWRJQWRkKGwpO3ZhciBwPWgucmVkQWRkKGgpLnJlZElBZGQoaCksYj1wLnJlZFNxcigpLHY9ZC5yZWRJQWRkKGQpO3Y9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLHQ9Yi5yZWRJU3ViKGwpLnJlZElTdWIobCksZT1wLnJlZE11bChsLnJlZElTdWIodCkpLnJlZElTdWIodikscj10aGlzLnkucmVkTXVsKHRoaXMueikscj1yLnJlZElBZGQocil9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHQsZSxyKX0sby5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uKCl7dmFyIHQsZSxyO2lmKHRoaXMuek9uZSl7dmFyIG49dGhpcy54LnJlZFNxcigpLGk9dGhpcy55LnJlZFNxcigpLG89aS5yZWRTcXIoKSxhPXRoaXMueC5yZWRBZGQoaSkucmVkU3FyKCkucmVkSVN1YihuKS5yZWRJU3ViKG8pO2E9YS5yZWRJQWRkKGEpO3ZhciBmPW4ucmVkQWRkKG4pLnJlZElBZGQobikucmVkSUFkZCh0aGlzLmN1cnZlLmEpLHM9Zi5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYSk7dD1zO3ZhciB1PW8ucmVkSUFkZChvKTt1PXUucmVkSUFkZCh1KSx1PXUucmVkSUFkZCh1KSxlPWYucmVkTXVsKGEucmVkSVN1YihzKSkucmVkSVN1Yih1KSxyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBoPXRoaXMuei5yZWRTcXIoKSxjPXRoaXMueS5yZWRTcXIoKSxkPXRoaXMueC5yZWRNdWwoYyksbD10aGlzLngucmVkU3ViKGgpLnJlZE11bCh0aGlzLngucmVkQWRkKGgpKTtsPWwucmVkQWRkKGwpLnJlZElBZGQobCk7dmFyIHA9ZC5yZWRJQWRkKGQpO3A9cC5yZWRJQWRkKHApO3ZhciBiPXAucmVkQWRkKHApO3Q9bC5yZWRTcXIoKS5yZWRJU3ViKGIpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoYykucmVkSVN1YihoKTt2YXIgdj1jLnJlZFNxcigpO3Y9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLGU9bC5yZWRNdWwocC5yZWRJU3ViKHQpKS5yZWRJU3ViKHYpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0LGUscil9LG8ucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnZlLmEsZT10aGlzLngscj10aGlzLnksbj10aGlzLnosaT1uLnJlZFNxcigpLnJlZFNxcigpLG89ZS5yZWRTcXIoKSxhPXIucmVkU3FyKCksZj1vLnJlZEFkZChvKS5yZWRJQWRkKG8pLnJlZElBZGQodC5yZWRNdWwoaSkpLHM9ZS5yZWRBZGQoZSk7cz1zLnJlZElBZGQocyk7dmFyIHU9cy5yZWRNdWwoYSksaD1mLnJlZFNxcigpLnJlZElTdWIodS5yZWRBZGQodSkpLGM9dS5yZWRJU3ViKGgpLGQ9YS5yZWRTcXIoKTtkPWQucmVkSUFkZChkKSxkPWQucmVkSUFkZChkKSxkPWQucmVkSUFkZChkKTt2YXIgbD1mLnJlZE11bChjKS5yZWRJU3ViKGQpLHA9ci5yZWRBZGQocikucmVkTXVsKG4pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChoLGwscCl9LG8ucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIHQ9dGhpcy54LnJlZFNxcigpLGU9dGhpcy55LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpLG49ZS5yZWRTcXIoKSxpPXQucmVkQWRkKHQpLnJlZElBZGQodCksbz1pLnJlZFNxcigpLGE9dGhpcy54LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHQpLnJlZElTdWIobik7YT1hLnJlZElBZGQoYSksYT1hLnJlZEFkZChhKS5yZWRJQWRkKGEpLGE9YS5yZWRJU3ViKG8pO3ZhciBmPWEucmVkU3FyKCkscz1uLnJlZElBZGQobik7cz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocyk7dmFyIHU9aS5yZWRJQWRkKGEpLnJlZFNxcigpLnJlZElTdWIobykucmVkSVN1YihmKS5yZWRJU3ViKHMpLGg9ZS5yZWRNdWwodSk7aD1oLnJlZElBZGQoaCksaD1oLnJlZElBZGQoaCk7dmFyIGM9dGhpcy54LnJlZE11bChmKS5yZWRJU3ViKGgpO2M9Yy5yZWRJQWRkKGMpLGM9Yy5yZWRJQWRkKGMpO3ZhciBkPXRoaXMueS5yZWRNdWwodS5yZWRNdWwocy5yZWRJU3ViKHUpKS5yZWRJU3ViKGEucmVkTXVsKGYpKSk7ZD1kLnJlZElBZGQoZCksZD1kLnJlZElBZGQoZCksZD1kLnJlZElBZGQoZCk7dmFyIGw9dGhpcy56LnJlZEFkZChhKS5yZWRTcXIoKS5yZWRJU3ViKHIpLnJlZElTdWIoZik7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGMsZCxsKX0sby5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bmV3IHModCxlKSx0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe2lmKFwiYWZmaW5lXCI9PT10LnR5cGUpcmV0dXJuIHRoaXMuZXEodC50b0ooKSk7aWYodGhpcz09PXQpcmV0dXJuITA7dmFyIGU9dGhpcy56LnJlZFNxcigpLHI9dC56LnJlZFNxcigpO2lmKDAhPT10aGlzLngucmVkTXVsKHIpLnJlZElTdWIodC54LnJlZE11bChlKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgbj1lLnJlZE11bCh0aGlzLnopLGk9ci5yZWRNdWwodC56KTtyZXR1cm4gMD09PXRoaXMueS5yZWRNdWwoaSkucmVkSVN1Yih0LnkucmVkTXVsKG4pKS5jbXBuKDApfSxvLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy56LnJlZFNxcigpLHI9dC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKGUpO2lmKDA9PT10aGlzLnguY21wKHIpKXJldHVybiEwO2Zvcih2YXIgbj10LmNsb25lKCksaT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKGUpOzspe2lmKG4uaWFkZCh0aGlzLmN1cnZlLm4pLG4uY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoci5yZWRJQWRkKGkpLDA9PT10aGlzLnguY21wKHIpKXJldHVybiEwfXJldHVybiExfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIEpQb2ludCBJbmZpbml0eT5cIjpcIjxFQyBKUG9pbnQgeDogXCIrdGhpcy54LnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS50b1N0cmluZygxNiwyKStcIiB6OiBcIit0aGlzLnoudG9TdHJpbmcoMTYsMikrXCI+XCJ9LG8ucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuei5jbXBuKDApfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7XCJzaG9ydFwiPT09dC50eXBlP3RoaXMuY3VydmU9bmV3IGYuY3VydmUuc2hvcnQodCk6XCJlZHdhcmRzXCI9PT10LnR5cGU/dGhpcy5jdXJ2ZT1uZXcgZi5jdXJ2ZS5lZHdhcmRzKHQpOnRoaXMuY3VydmU9bmV3IGYuY3VydmUubW9udCh0KSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPXQuaGFzaCxzKHRoaXMuZy52YWxpZGF0ZSgpLFwiSW52YWxpZCBjdXJ2ZVwiKSxzKHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksXCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gT1wiKX1mdW5jdGlvbiBpKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHI9bmV3IG4oZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnJ9KSxyfX0pfXZhciBvPWUsYT1yKDQ5KSxmPXIoMTkpLHM9Zi51dGlscy5hc3NlcnQ7by5QcmVzZXRDdXJ2ZT1uLGkoXCJwMTkyXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwicDE5MlwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiLGE6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmY1wiLGI6XCI2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMVwiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMVwiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOltcIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyXCIsXCIwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMVwiXX0pLGkoXCJwMjI0XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwicDIyNFwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiLGE6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZVwiLGI6XCJiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNFwiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZFwiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOltcImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxXCIsXCJiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNFwiXX0pLGkoXCJwMjU2XCIse1xudHlwZTpcInNob3J0XCIscHJpbWU6bnVsbCxwOlwiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmZcIixhOlwiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmNcIixiOlwiNWFjNjM1ZDggYWEzYTkzZTcgYjNlYmJkNTUgNzY5ODg2YmMgNjUxZDA2YjAgY2M1M2IwZjYgM2JjZTNjM2UgMjdkMjYwNGJcIixuOlwiZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTFcIixoYXNoOmEuc2hhMjU2LGdSZWQ6ITEsZzpbXCI2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NlwiLFwiNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjVcIl19KSxpKFwicDM4NFwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpudWxsLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZlwiLGE6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmY1wiLGI6XCJiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiA1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZlwiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSBmNDM3MmRkZiA1ODFhMGRiMiA0OGIwYTc3YSBlY2VjMTk2YSBjY2M1Mjk3M1wiLGhhc2g6YS5zaGEzODQsZ1JlZDohMSxnOltcImFhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4IDU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3XCIsXCIzNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZlwiXX0pLGkoXCJwNTIxXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcIjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmXCIsYTpcIjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjXCIsYjpcIjAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViIDk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkIDNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwXCIsbjpcIjAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4IGY3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5XCIsaGFzaDphLnNoYTUxMixnUmVkOiExLGc6W1wiMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgMDUzZmI1MjEgZjgyOGFmNjAgNmI0ZDNkYmEgYTE0YjVlNzcgZWZlNzU5MjggZmUxZGMxMjcgYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjZcIixcIjAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5IDU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxIDNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwXCJdfSksaShcImN1cnZlMjU1MTlcIix7dHlwZTpcIm1vbnRcIixwcmltZTpcInAyNTUxOVwiLHA6XCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkXCIsYTpcIjc2ZDA2XCIsYjpcIjBcIixuOlwiMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZFwiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOltcIjlcIl19KSxpKFwiZWQyNTUxOVwiLHt0eXBlOlwiZWR3YXJkc1wiLHByaW1lOlwicDI1NTE5XCIscDpcIjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWRcIixhOlwiLTFcIixjOlwiMVwiLGQ6XCI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzXCIsbjpcIjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWRcIixoYXNoOmEuc2hhMjU2LGdSZWQ6ITEsZzpbXCIyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhXCIsXCI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4XCJdfSk7dmFyIHU7dHJ5e3U9cig1MjApfWNhdGNoKHQpe3U9dm9pZCAwfWkoXCJzZWNwMjU2azFcIix7dHlwZTpcInNob3J0XCIscHJpbWU6XCJrMjU2XCIscDpcImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmXCIsYTpcIjBcIixiOlwiN1wiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MVwiLGg6XCIxXCIsaGFzaDphLnNoYTI1NixiZXRhOlwiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZVwiLGxhbWJkYTpcIjUzNjNhZDRjYzA1YzMwZTBhNTI2MWMwMjg4MTI2NDVhMTIyZTIyZWEyMDgxNjY3OGRmMDI5NjdjMWIyM2JkNzJcIixiYXNpczpbe2E6XCIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNVwiLGI6XCItZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzNcIn0se2E6XCIxMTRjYTUwZjdhOGUyZjNmNjU3YzExMDhkOWQ0NGNmZDhcIixiOlwiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTVcIn1dLGdSZWQ6ITEsZzpbXCI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4XCIsXCI0ODNhZGE3NzI2YTNjNDY1NWRhNGZiZmMwZTExMDhhOGZkMTdiNDQ4YTY4NTU0MTk5YzQ3ZDA4ZmZiMTBkNGI4XCIsdV19KX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuPyhcInN0cmluZ1wiPT10eXBlb2YgdCYmKGYoby5jdXJ2ZXMuaGFzT3duUHJvcGVydHkodCksXCJVbmtub3duIGN1cnZlIFwiK3QpLHQ9by5jdXJ2ZXNbdF0pLHQgaW5zdGFuY2VvZiBvLmN1cnZlcy5QcmVzZXRDdXJ2ZSYmKHQ9e2N1cnZlOnR9KSx0aGlzLmN1cnZlPXQuY3VydmUuY3VydmUsdGhpcy5uPXRoaXMuY3VydmUubix0aGlzLm5oPXRoaXMubi51c2hybigxKSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMuZz10LmN1cnZlLmcsdGhpcy5nLnByZWNvbXB1dGUodC5jdXJ2ZS5uLmJpdExlbmd0aCgpKzEpLHZvaWQodGhpcy5oYXNoPXQuaGFzaHx8dC5jdXJ2ZS5oYXNoKSk6bmV3IG4odCl9dmFyIGk9cigxOCksbz1yKDE5KSxhPW8udXRpbHMsZj1hLmFzc2VydCxzPXIoNTE0KSx1PXIoNTE1KTt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5rZXlQYWlyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcyh0aGlzLHQpfSxuLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBzLmZyb21Qcml2YXRlKHRoaXMsdCxlKX0sbi5wcm90b3R5cGUua2V5RnJvbVB1YmxpYz1mdW5jdGlvbih0LGUpe3JldHVybiBzLmZyb21QdWJsaWModGhpcyx0LGUpfSxuLnByb3RvdHlwZS5nZW5LZXlQYWlyPWZ1bmN0aW9uKHQpe3R8fCh0PXt9KTtmb3IodmFyIGU9bmV3IG8uaG1hY0RSQkcoe2hhc2g6dGhpcy5oYXNoLHBlcnM6dC5wZXJzLGVudHJvcHk6dC5lbnRyb3B5fHxvLnJhbmQodGhpcy5oYXNoLmhtYWNTdHJlbmd0aCksbm9uY2U6dGhpcy5uLnRvQXJyYXkoKX0pLHI9dGhpcy5uLmJ5dGVMZW5ndGgoKSxuPXRoaXMubi5zdWIobmV3IGkoMikpOzspe3ZhciBhPW5ldyBpKGUuZ2VuZXJhdGUocikpO2lmKCEoYS5jbXAobik+MCkpcmV0dXJuIGEuaWFkZG4oMSksdGhpcy5rZXlGcm9tUHJpdmF0ZShhKX19LG4ucHJvdG90eXBlLl90cnVuY2F0ZVRvTj1mdW5jdGlvbih0LGUpe3ZhciByPTgqdC5ieXRlTGVuZ3RoKCktdGhpcy5uLmJpdExlbmd0aCgpO3JldHVybiByPjAmJih0PXQudXNocm4ocikpLCFlJiZ0LmNtcCh0aGlzLm4pPj0wP3Quc3ViKHRoaXMubik6dH0sbi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbih0LGUscixuKXtcIm9iamVjdFwiPT10eXBlb2YgciYmKG49cixyPW51bGwpLG58fChuPXt9KSxlPXRoaXMua2V5RnJvbVByaXZhdGUoZSxyKSx0PXRoaXMuX3RydW5jYXRlVG9OKG5ldyBpKHQsMTYpKTtmb3IodmFyIGE9dGhpcy5uLmJ5dGVMZW5ndGgoKSxmPWUuZ2V0UHJpdmF0ZSgpLnRvQXJyYXkoXCJiZVwiLGEpLHM9dC50b0FycmF5KFwiYmVcIixhKSxoPW5ldyBvLmhtYWNEUkJHKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5OmYsbm9uY2U6cyxwZXJzOm4ucGVycyxwZXJzRW5jOm4ucGVyc0VuY30pLGM9dGhpcy5uLnN1YihuZXcgaSgxKSksZD0wOyEwO2QrKyl7dmFyIGw9bi5rP24uayhkKTpuZXcgaShoLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtpZihsPXRoaXMuX3RydW5jYXRlVG9OKGwsITApLCEobC5jbXBuKDEpPD0wfHxsLmNtcChjKT49MCkpe3ZhciBwPXRoaXMuZy5tdWwobCk7aWYoIXAuaXNJbmZpbml0eSgpKXt2YXIgYj1wLmdldFgoKSx2PWIudW1vZCh0aGlzLm4pO2lmKDAhPT12LmNtcG4oMCkpe3ZhciB5PWwuaW52bSh0aGlzLm4pLm11bCh2Lm11bChlLmdldFByaXZhdGUoKSkuaWFkZCh0KSk7aWYoeT15LnVtb2QodGhpcy5uKSwwIT09eS5jbXBuKDApKXt2YXIgbT0ocC5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09Yi5jbXAodik/MjowKTtyZXR1cm4gbi5jYW5vbmljYWwmJnkuY21wKHRoaXMubmgpPjAmJih5PXRoaXMubi5zdWIoeSksbV49MSksbmV3IHUoe3I6dixzOnkscmVjb3ZlcnlQYXJhbTptfSl9fX19fX0sbi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHQsZSxyLG4pe3Q9dGhpcy5fdHJ1bmNhdGVUb04obmV3IGkodCwxNikpLHI9dGhpcy5rZXlGcm9tUHVibGljKHIsbiksZT1uZXcgdShlLFwiaGV4XCIpO3ZhciBvPWUucixhPWUucztpZihvLmNtcG4oMSk8MHx8by5jbXAodGhpcy5uKT49MClyZXR1cm4hMTtpZihhLmNtcG4oMSk8MHx8YS5jbXAodGhpcy5uKT49MClyZXR1cm4hMTt2YXIgZj1hLmludm0odGhpcy5uKSxzPWYubXVsKHQpLnVtb2QodGhpcy5uKSxoPWYubXVsKG8pLnVtb2QodGhpcy5uKTtpZighdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKXt2YXIgYz10aGlzLmcubXVsQWRkKHMsci5nZXRQdWJsaWMoKSxoKTtyZXR1cm4hYy5pc0luZmluaXR5KCkmJjA9PT1jLmdldFgoKS51bW9kKHRoaXMubikuY21wKG8pfXZhciBjPXRoaXMuZy5qbXVsQWRkKHMsci5nZXRQdWJsaWMoKSxoKTtyZXR1cm4hYy5pc0luZmluaXR5KCkmJmMuZXFYVG9QKG8pfSxuLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5PWZ1bmN0aW9uKHQsZSxyLG4pe2YoKDMmcik9PT1yLFwiVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0c1wiKSxlPW5ldyB1KGUsbik7dmFyIG89dGhpcy5uLGE9bmV3IGkodCkscz1lLnIsaD1lLnMsYz0xJnIsZD1yPj4xO2lmKHMuY21wKHRoaXMuY3VydmUucC51bW9kKHRoaXMuY3VydmUubikpPj0wJiZkKXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZVwiKTtzPWQ/dGhpcy5jdXJ2ZS5wb2ludEZyb21YKHMuYWRkKHRoaXMuY3VydmUubiksYyk6dGhpcy5jdXJ2ZS5wb2ludEZyb21YKHMsYyk7dmFyIGw9ZS5yLmludm0obykscD1vLnN1YihhKS5tdWwobCkudW1vZChvKSxiPWgubXVsKGwpLnVtb2Qobyk7cmV0dXJuIHRoaXMuZy5tdWxBZGQocCxzLGIpfSxuLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKGU9bmV3IHUoZSxuKSxudWxsIT09ZS5yZWNvdmVyeVBhcmFtKXJldHVybiBlLnJlY292ZXJ5UGFyYW07Zm9yKHZhciBpPTA7aTw0O2krKyl7dmFyIG87dHJ5e289dGhpcy5yZWNvdmVyUHViS2V5KHQsZSxpKX1jYXRjaCh0KXtjb250aW51ZX1pZihvLmVxKHIpKXJldHVybiBpfXRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIHZhbGlkIHJlY292ZXJ5IGZhY3RvclwiKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7dGhpcy5lYz10LHRoaXMucHJpdj1udWxsLHRoaXMucHViPW51bGwsZS5wcml2JiZ0aGlzLl9pbXBvcnRQcml2YXRlKGUucHJpdixlLnByaXZFbmMpLGUucHViJiZ0aGlzLl9pbXBvcnRQdWJsaWMoZS5wdWIsZS5wdWJFbmMpfXZhciBpPXIoMTgpO3QuZXhwb3J0cz1uLG4uZnJvbVB1YmxpYz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4odCx7cHViOmUscHViRW5jOnJ9KX0sbi5mcm9tUHJpdmF0ZT1mdW5jdGlvbih0LGUscil7cmV0dXJuIGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4odCx7cHJpdjplLHByaXZFbmM6cn0pfSxuLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0UHVibGljKCk7cmV0dXJuIHQuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITEscmVhc29uOlwiSW52YWxpZCBwdWJsaWMga2V5XCJ9OnQudmFsaWRhdGUoKT90Lm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKT97cmVzdWx0OiEwLHJlYXNvbjpudWxsfTp7cmVzdWx0OiExLHJlYXNvbjpcIlB1YmxpYyBrZXkgKiBOICE9IE9cIn06e3Jlc3VsdDohMSxyZWFzb246XCJQdWJsaWMga2V5IGlzIG5vdCBhIHBvaW50XCJ9fSxuLnByb3RvdHlwZS5nZXRQdWJsaWM9ZnVuY3Rpb24odCxlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdCYmKGU9dCx0PW51bGwpLHRoaXMucHVifHwodGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnByaXYpKSxlP3RoaXMucHViLmVuY29kZShlLHQpOnRoaXMucHVifSxuLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P3RoaXMucHJpdi50b1N0cmluZygxNiwyKTp0aGlzLnByaXZ9LG4ucHJvdG90eXBlLl9pbXBvcnRQcml2YXRlPWZ1bmN0aW9uKHQsZSl7dGhpcy5wcml2PW5ldyBpKHQsZXx8MTYpLHRoaXMucHJpdj10aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pfSxuLnByb3RvdHlwZS5faW1wb3J0UHVibGljPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQueHx8dC55P3ZvaWQodGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5wb2ludCh0LngsdC55KSk6dm9pZCh0aGlzLnB1Yj10aGlzLmVjLmN1cnZlLmRlY29kZVBvaW50KHQsZSkpfSxuLnByb3RvdHlwZS5kZXJpdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxuLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5lYy5zaWduKHQsdGhpcyxlLHIpfSxuLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkodCxlLHRoaXMpfSxuLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuXCI8S2V5IHByaXY6IFwiKyh0aGlzLnByaXYmJnRoaXMucHJpdi50b1N0cmluZygxNiwyKSkrXCIgcHViOiBcIisodGhpcy5wdWImJnRoaXMucHViLmluc3BlY3QoKSkrXCIgPlwifX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIG4/dDp2b2lkKHRoaXMuX2ltcG9ydERFUih0LGUpfHwoYyh0LnImJnQucyxcIlNpZ25hdHVyZSB3aXRob3V0IHIgb3Igc1wiKSx0aGlzLnI9bmV3IHModC5yLDE2KSx0aGlzLnM9bmV3IHModC5zLDE2KSx2b2lkIDA9PT10LnJlY292ZXJ5UGFyYW0/dGhpcy5yZWNvdmVyeVBhcmFtPW51bGw6dGhpcy5yZWNvdmVyeVBhcmFtPXQucmVjb3ZlcnlQYXJhbSkpfWZ1bmN0aW9uIGkoKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gbyh0LGUpe3ZhciByPXRbZS5wbGFjZSsrXTtpZighKDEyOCZyKSlyZXR1cm4gcjtmb3IodmFyIG49MTUmcixpPTAsbz0wLGE9ZS5wbGFjZTtvPG47bysrLGErKylpPDw9OCxpfD10W2FdO3JldHVybiBlLnBsYWNlPWEsaX1mdW5jdGlvbiBhKHQpe2Zvcih2YXIgZT0wLHI9dC5sZW5ndGgtMTshdFtlXSYmISgxMjgmdFtlKzFdKSYmZTxyOyllKys7cmV0dXJuIDA9PT1lP3Q6dC5zbGljZShlKX1mdW5jdGlvbiBmKHQsZSl7aWYoZTwxMjgpcmV0dXJuIHZvaWQgdC5wdXNoKGUpO3ZhciByPTErKE1hdGgubG9nKGUpL01hdGguTE4yPj4+Myk7Zm9yKHQucHVzaCgxMjh8cik7LS1yOyl0LnB1c2goZT4+PihyPDwzKSYyNTUpO3QucHVzaChlKX12YXIgcz1yKDE4KSx1PXIoMTkpLGg9dS51dGlscyxjPWguYXNzZXJ0O3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl9pbXBvcnRERVI9ZnVuY3Rpb24odCxlKXt0PWgudG9BcnJheSh0LGUpO3ZhciByPW5ldyBpO2lmKDQ4IT09dFtyLnBsYWNlKytdKXJldHVybiExO3ZhciBuPW8odCxyKTtpZihuK3IucGxhY2UhPT10Lmxlbmd0aClyZXR1cm4hMTtpZigyIT09dFtyLnBsYWNlKytdKXJldHVybiExO3ZhciBhPW8odCxyKSxmPXQuc2xpY2Uoci5wbGFjZSxhK3IucGxhY2UpO2lmKHIucGxhY2UrPWEsMiE9PXRbci5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgdT1vKHQscik7aWYodC5sZW5ndGghPT11K3IucGxhY2UpcmV0dXJuITE7dmFyIGM9dC5zbGljZShyLnBsYWNlLHUrci5wbGFjZSk7cmV0dXJuIDA9PT1mWzBdJiYxMjgmZlsxXSYmKGY9Zi5zbGljZSgxKSksMD09PWNbMF0mJjEyOCZjWzFdJiYoYz1jLnNsaWNlKDEpKSx0aGlzLnI9bmV3IHMoZiksdGhpcy5zPW5ldyBzKGMpLHRoaXMucmVjb3ZlcnlQYXJhbT1udWxsLCEwfSxuLnByb3RvdHlwZS50b0RFUj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnIudG9BcnJheSgpLHI9dGhpcy5zLnRvQXJyYXkoKTtmb3IoMTI4JmVbMF0mJihlPVswXS5jb25jYXQoZSkpLDEyOCZyWzBdJiYocj1bMF0uY29uY2F0KHIpKSxlPWEoZSkscj1hKHIpOyEoclswXXx8MTI4JnJbMV0pOylyPXIuc2xpY2UoMSk7dmFyIG49WzJdO2YobixlLmxlbmd0aCksbj1uLmNvbmNhdChlKSxuLnB1c2goMiksZihuLHIubGVuZ3RoKTt2YXIgaT1uLmNvbmNhdChyKSxvPVs0OF07cmV0dXJuIGYobyxpLmxlbmd0aCksbz1vLmNvbmNhdChpKSxoLmVuY29kZShvLHQpfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7aWYoZihcImVkMjU1MTlcIj09PXQsXCJvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyXCIpLCEodGhpcyBpbnN0YW5jZW9mIG4pKXJldHVybiBuZXcgbih0KTt2YXIgdD1vLmN1cnZlc1t0XS5jdXJ2ZTt0aGlzLmN1cnZlPXQsdGhpcy5nPXQuZyx0aGlzLmcucHJlY29tcHV0ZSh0Lm4uYml0TGVuZ3RoKCkrMSksdGhpcy5wb2ludENsYXNzPXQucG9pbnQoKS5jb25zdHJ1Y3Rvcix0aGlzLmVuY29kaW5nTGVuZ3RoPU1hdGguY2VpbCh0Lm4uYml0TGVuZ3RoKCkvOCksdGhpcy5oYXNoPWkuc2hhNTEyfXZhciBpPXIoNDkpLG89cigxOSksYT1vLnV0aWxzLGY9YS5hc3NlcnQscz1hLnBhcnNlQnl0ZXMsdT1yKDUxNyksaD1yKDUxOCk7dC5leHBvcnRzPW4sbi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbih0LGUpe3Q9cyh0KTt2YXIgcj10aGlzLmtleUZyb21TZWNyZXQoZSksbj10aGlzLmhhc2hJbnQoci5tZXNzYWdlUHJlZml4KCksdCksaT10aGlzLmcubXVsKG4pLG89dGhpcy5lbmNvZGVQb2ludChpKSxhPXRoaXMuaGFzaEludChvLHIucHViQnl0ZXMoKSx0KS5tdWwoci5wcml2KCkpLGY9bi5hZGQoYSkudW1vZCh0aGlzLmN1cnZlLm4pO3JldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoe1I6aSxTOmYsUmVuY29kZWQ6b30pfSxuLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24odCxlLHIpe3Q9cyh0KSxlPXRoaXMubWFrZVNpZ25hdHVyZShlKTt2YXIgbj10aGlzLmtleUZyb21QdWJsaWMociksaT10aGlzLmhhc2hJbnQoZS5SZW5jb2RlZCgpLG4ucHViQnl0ZXMoKSx0KSxvPXRoaXMuZy5tdWwoZS5TKCkpLGE9ZS5SKCkuYWRkKG4ucHViKCkubXVsKGkpKTtyZXR1cm4gYS5lcShvKX0sbi5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmhhc2goKSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0LnVwZGF0ZShhcmd1bWVudHNbZV0pO3JldHVybiBhLmludEZyb21MRSh0LmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LG4ucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24odCl7cmV0dXJuIHUuZnJvbVB1YmxpYyh0aGlzLHQpfSxuLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKHQpe3JldHVybiB1LmZyb21TZWNyZXQodGhpcyx0KX0sbi5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGg/dDpuZXcgaCh0aGlzLHQpfSxuLnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbih0KXt2YXIgZT10LmdldFkoKS50b0FycmF5KFwibGVcIix0aGlzLmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gZVt0aGlzLmVuY29kaW5nTGVuZ3RoLTFdfD10LmdldFgoKS5pc09kZCgpPzEyODowLGV9LG4ucHJvdG90eXBlLmRlY29kZVBvaW50PWZ1bmN0aW9uKHQpe3Q9YS5wYXJzZUJ5dGVzKHQpO3ZhciBlPXQubGVuZ3RoLTEscj10LnNsaWNlKDAsZSkuY29uY2F0KHRbZV0mLTEyOSksbj0wIT09KDEyOCZ0W2VdKSxpPWEuaW50RnJvbUxFKHIpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50RnJvbVkoaSxuKX0sbi5wcm90b3R5cGUuZW5jb2RlSW50PWZ1bmN0aW9uKHQpe3JldHVybiB0LnRvQXJyYXkoXCJsZVwiLHRoaXMuZW5jb2RpbmdMZW5ndGgpfSxuLnByb3RvdHlwZS5kZWNvZGVJbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGEuaW50RnJvbUxFKHQpfSxuLnByb3RvdHlwZS5pc1BvaW50PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXt0aGlzLmVkZHNhPXQsdGhpcy5fc2VjcmV0PWYoZS5zZWNyZXQpLHQuaXNQb2ludChlLnB1Yik/dGhpcy5fcHViPWUucHViOnRoaXMuX3B1YkJ5dGVzPWYoZS5wdWIpfXZhciBpPXIoMTkpLG89aS51dGlscyxhPW8uYXNzZXJ0LGY9by5wYXJzZUJ5dGVzLHM9by5jYWNoZWRQcm9wZXJ0eTtuLmZyb21QdWJsaWM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4/ZTpuZXcgbih0LHtwdWI6ZX0pfSxuLmZyb21TZWNyZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG4/ZTpuZXcgbih0LHtzZWNyZXQ6ZX0pfSxuLnByb3RvdHlwZS5zZWNyZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2VjcmV0fSxzKG4sXCJwdWJCeXRlc1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSl9KSxzKG4sXCJwdWJcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wdWJCeXRlcz90aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTp0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKX0pLHMobixcInByaXZCeXRlc1wiLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lZGRzYSxlPXRoaXMuaGFzaCgpLHI9dC5lbmNvZGluZ0xlbmd0aC0xLG49ZS5zbGljZSgwLHQuZW5jb2RpbmdMZW5ndGgpO3JldHVybiBuWzBdJj0yNDgsbltyXSY9MTI3LG5bcl18PTY0LG59KSxzKG4sXCJwcml2XCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSl9KSxzKG4sXCJoYXNoXCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpfSkscyhuLFwibWVzc2FnZVByZWZpeFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpfSksbi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbih0KXtyZXR1cm4gYSh0aGlzLl9zZWNyZXQsXCJLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeVwiKSx0aGlzLmVkZHNhLnNpZ24odCx0aGlzKX0sbi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KHQsZSx0aGlzKX0sbi5wcm90b3R5cGUuZ2V0U2VjcmV0PWZ1bmN0aW9uKHQpe3JldHVybiBhKHRoaXMuX3NlY3JldCxcIktleVBhaXIgaXMgcHVibGljIG9ubHlcIiksby5lbmNvZGUodGhpcy5zZWNyZXQoKSx0KX0sbi5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKHQpe3JldHVybiBvLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksdCl9LHQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMuZWRkc2E9dCxcIm9iamVjdFwiIT10eXBlb2YgZSYmKGU9dShlKSksQXJyYXkuaXNBcnJheShlKSYmKGU9e1I6ZS5zbGljZSgwLHQuZW5jb2RpbmdMZW5ndGgpLFM6ZS5zbGljZSh0LmVuY29kaW5nTGVuZ3RoKX0pLGYoZS5SJiZlLlMsXCJTaWduYXR1cmUgd2l0aG91dCBSIG9yIFNcIiksdC5pc1BvaW50KGUuUikmJih0aGlzLl9SPWUuUiksZS5TIGluc3RhbmNlb2YgaSYmKHRoaXMuX1M9ZS5TKSx0aGlzLl9SZW5jb2RlZD1BcnJheS5pc0FycmF5KGUuUik/ZS5SOmUuUmVuY29kZWQsdGhpcy5fU2VuY29kZWQ9QXJyYXkuaXNBcnJheShlLlMpP2UuUzplLlNlbmNvZGVkfXZhciBpPXIoMTgpLG89cigxOSksYT1vLnV0aWxzLGY9YS5hc3NlcnQscz1hLmNhY2hlZFByb3BlcnR5LHU9YS5wYXJzZUJ5dGVzO3MobixcIlNcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpfSkscyhuLFwiUlwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5SZW5jb2RlZCgpKX0pLHMobixcIlJlbmNvZGVkXCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLlIoKSl9KSxzKG4sXCJTZW5jb2RlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlSW50KHRoaXMuUygpKX0pLG4ucHJvdG90eXBlLnRvQnl0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5SZW5jb2RlZCgpLmNvbmNhdCh0aGlzLlNlbmNvZGVkKCkpfSxuLnByb3RvdHlwZS50b0hleD1mdW5jdGlvbigpe3JldHVybiBhLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSxcImhleFwiKS50b1VwcGVyQ2FzZSgpfSx0LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7aWYoISh0aGlzIGluc3RhbmNlb2YgbikpcmV0dXJuIG5ldyBuKHQpO3RoaXMuaGFzaD10Lmhhc2gsdGhpcy5wcmVkUmVzaXN0PSEhdC5wcmVkUmVzaXN0LHRoaXMub3V0TGVuPXRoaXMuaGFzaC5vdXRTaXplLHRoaXMubWluRW50cm9weT10Lm1pbkVudHJvcHl8fHRoaXMuaGFzaC5obWFjU3RyZW5ndGgsdGhpcy5yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFyIGU9YS50b0FycmF5KHQuZW50cm9weSx0LmVudHJvcHlFbmMpLHI9YS50b0FycmF5KHQubm9uY2UsdC5ub25jZUVuYyksaT1hLnRvQXJyYXkodC5wZXJzLHQucGVyc0VuYyk7ZihlLmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsXCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6IFwiK3RoaXMubWluRW50cm9weStcIiBiaXRzXCIpLHRoaXMuX2luaXQoZSxyLGkpfXZhciBpPXIoNDkpLG89cigxOSksYT1vLnV0aWxzLGY9YS5hc3NlcnQ7dC5leHBvcnRzPW4sbi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuY29uY2F0KGUpLmNvbmNhdChyKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBpPTA7aTx0aGlzLlYubGVuZ3RoO2krKyl0aGlzLktbaV09MCx0aGlzLlZbaV09MTt0aGlzLl91cGRhdGUobiksdGhpcy5yZXNlZWQ9MSx0aGlzLnJlc2VlZEludGVydmFsPTI4MTQ3NDk3NjcxMDY1Nn0sbi5wcm90b3R5cGUuX2htYWM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkuaG1hYyh0aGlzLmhhc2gsdGhpcy5LKX0sbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFswXSk7dCYmKGU9ZS51cGRhdGUodCkpLHRoaXMuSz1lLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksdCYmKHRoaXMuSz10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikudXBkYXRlKFsxXSkudXBkYXRlKHQpLmRpZ2VzdCgpLHRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCkpfSxuLnByb3RvdHlwZS5yZXNlZWQ9ZnVuY3Rpb24odCxlLHIsbil7XCJzdHJpbmdcIiE9dHlwZW9mIGUmJihuPXIscj1lLGU9bnVsbCksdD1hLnRvQnVmZmVyKHQsZSkscj1hLnRvQnVmZmVyKHIsbiksZih0Lmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsXCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6IFwiK3RoaXMubWluRW50cm9weStcIiBiaXRzXCIpLHRoaXMuX3VwZGF0ZSh0LmNvbmNhdChyfHxbXSkpLHRoaXMucmVzZWVkPTF9LG4ucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHRoaXMucmVzZWVkPnRoaXMucmVzZWVkSW50ZXJ2YWwpdGhyb3cgbmV3IEVycm9yKFwiUmVzZWVkIGlzIHJlcXVpcmVkXCIpO1wic3RyaW5nXCIhPXR5cGVvZiBlJiYobj1yLHI9ZSxlPW51bGwpLHImJihyPWEudG9BcnJheShyLG4pLHRoaXMuX3VwZGF0ZShyKSk7Zm9yKHZhciBpPVtdO2kubGVuZ3RoPHQ7KXRoaXMuVj10aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCksaT1pLmNvbmNhdCh0aGlzLlYpO3ZhciBvPWkuc2xpY2UoMCx0KTtyZXR1cm4gdGhpcy5fdXBkYXRlKHIpLHRoaXMucmVzZWVkKyssYS5lbmNvZGUobyxlKX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbXCJlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhXCIsXCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxXCJdLFtcIjgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDhcIixcIjExZjhhODA5ODU1N2RmZTQ1ZTgyNTZlODMwYjYwYWNlNjJkNjEzYWMyZjdiMTdiZWQzMWI2ZWFmZjZlMjZjYWZcIl0sW1wiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOVwiLFwiZDM1MDZlMGQ5ZTNjNzllYmE0ZWY5N2E1MWZmNzFmNWVhY2I1OTU1YWRkMjQzNDVjNmVmYTZmZmVlOWZlZDY5NVwiXSxbXCIzNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwXCIsXCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTlcIl0sW1wiOGI0YjVmMTY1ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwY1wiLFwiNGFhZDBhNmY2OGQzMDhiNGIzZmJkNzgxM2FiMGRhMDRmOWUzMzY1NDYxNjJlZTU2YjNlZmYwYzY1ZmQ0ZmQzNlwiXSxbXCI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhXCIsXCI5NmU4NjdiNTU5NWNjNDk4YTkyMTEzNzQ4ODgyNGQ2ZTI2NjBhMDY1Mzc3OTQ5NDgwMWRjMDY5ZDllYjM5ZjVmXCJdLFtcImVlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmFcIixcIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTlcIl0sW1wiMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMFwiLFwiY2RkOWUxMzE5MmEwMGI3NzJlYzhmMzMwMGMwOTA2NjZiN2ZmNGExOGZmNTE5NWFjMGZiZDVjZDYyYmM2NWEwOVwiXSxbXCJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkXCIsXCI5ZDcwNjE5Mjg5NDA0MDVlNmJiNmE0MTc2NTk3NTM1YWYyOTJkZDQxOWUxY2VkNzlhNDRmMThmMjk0NTZhMDBkXCJdLFtcImZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmRcIixcImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODhcIl0sW1wiZGE2N2E5MWQ5MTA0OWNkY2IzNjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMVwiLFwiOWJhY2FhMzU0ODE2NDJiYzQxZjQ2M2Y3ZWM5NzgwZTVkZWM3YWRjNTA4Zjc0MGExN2U5ZWE4ZTI3YTY4YmUxZFwiXSxbXCI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwXCIsXCI1YmMwODdkMGJjODAxMDZkODhjOWVjY2FjMjBkM2MxYzEzOTk5OTgxZTE0NDM0Njk5ZGNiMDk2YjAyMjc3MWM4XCJdLFtcIjhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDdcIixcIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmFcIl0sW1wiMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MlwiLFwiMjgzYmViYzNlOGVhMjNmNTY3MDFkZTE5ZTllYmY0NTc2YjMwNGVlYzIwODZkYzhjYzA0NThmZTU1NDJlNTQ1M1wiXSxbXCI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTdcIixcIjdjODBjNjhlNjAzMDU5YmE2OWI4ZTJhMzBlNDVjNGQ0N2VhNGRkMmY1YzI4MTAwMmQ4Njg5MDYwM2E4NDIxNjBcIl0sW1wiMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZFwiLFwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMFwiXSxbXCI4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzXCIsXCI3YzQ4MWI5YjViNDNiMmViNjM3NDA0OWJmYTYyYzJlNWU3N2YxN2ZjYzUyOThmNDRjOGUzMDk0Zjc5MDMxM2E2XCJdLFtcIjk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYVwiLFwiNTNhNTYyODU2ZGNiNjY0NmRjNmI3NGM1ZDFjMzQxOGM2ZDRkZmYwOGM5N2NkMmJlZDRjYjdmODhkOGM4ZTU4OVwiXSxbXCI2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4XCIsXCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3XCJdLFtcImU1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmRcIixcIjQ1NzE1MzRiYWE5NGQzYjVmOWY5OGQwOWZiOTkwYmRkYmQ1ZjViMDNlYzQ4MWYxMGUwZTVkYzg0MWQ3NTViZGFcIl0sW1wiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNVwiLFwiN2E5MDg5NzRiY2UxOGNmZTEyYTI3YmIyYWQ1YTQ4OGNkNzQ4NGE3Nzg3MTA0ODcwYjI3MDM0Zjk0ZWVlMzFkZFwiXSxbXCIyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0XCIsXCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyXCJdLFtcIjRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2NcIixcIjE3NzQ5Yzc2NmM5ZDBiMThlMTZmZDA5ZjZkZWY2ODFiNTMwYjk2MTRiZmY3ZGQzM2UwYjM5NDE4MTdkY2FhZTZcIl0sW1wiZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNlwiLFwiNmUwNTY4ZGI5YjBiMTMyOTdjZjY3NGRlY2NiNmFmOTMxMjZiNTk2Yjk3M2Y3Yjc3NzAxZDNkYjdmMjNjYjk2ZlwiXSxbXCI3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5XCIsXCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxXCJdLFtcImM3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTFcIixcIjg5M2ZiNTc4OTUxYWQyNTM3ZjcxOGYyZWFjYmZiYmJiODIzMTRlZWY3ODgwY2ZlOTE3ZTczNWQ5Njk5YTg0YzNcIl0sW1wiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YlwiLFwiZmViZmFhMzhmMmJjN2VhZTcyOGVjNjA4MThjMzQwZWIwMzQyOGQ2MzJiYjA2N2UxNzkzNjNlZDc1ZDdkOTkxZlwiXSxbXCJiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzXCIsXCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3XCJdLFtcImU4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYxYTExNzc4ZTNjMGRmNWRcIixcImVlZDFkZTdmNjM4ZTAwNzcxZTg5NzY4Y2EzY2E5NDQ3MmQxNTVlODBhZjMyMmVhOWZjYjQyOTFiNmFjOWVjNzhcIl0sW1wiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MFwiLFwiNzM3MGY5MWNmYjY3ZTRmNTA4MTgwOWZhMjVkNDBmOWIxNzM1ZGJmN2MwYTExYTEzMGMwZDFhMDQxZTE3N2VhMVwiXSxbXCI5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0XCIsXCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTBcIl0sW1wiOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYVwiLFwiNjYyYTlmMmRiYTA2Mzk4NmRlMWQ5MGMyYjZiZTIxNWRiYmVhMmNmZTk1NTEwYmZkZjIzY2JmNzk1MDFmZmY4MlwiXSxbXCJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExXCIsXCIxZTYzNjMzYWQwZWY0ZjFjMTY2MWE2ZDBlYTAyYjcyODZjYzdlNzRlYzk1MWQxYzk4MjJjMzg1NzZmZWI3M2JjXCJdLFtcIjhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWVcIixcImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGJcIl0sW1wiZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNiM2U0MVwiLFwiMmE3NThlMzAwZmE3OTg0YjQ3MWIwMDZhMWFhZmJiMThkMGE2YjJjMDQyMGU4M2UyMGU4YTk0MjFjZjJjZmQ1MVwiXSxbXCJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmXCIsXCI2N2M4NzZkMDZmM2UwNmRlMWRhZGYxNmU1NjYxZGIzYzRiM2FlNmQ0OGUzNWIyZmYzMGJmMGI2MWE3MWJhNDVcIl0sW1wiZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOFwiLFwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMFwiXSxbXCIzMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkXCIsXCI2NDhhMzY1Nzc0YjYxZjJmZjEzMGMwYzM1YWVjMWY0ZjE5MjEzYjBjN2UzMzI4NDM5NjcyMjRhZjk2YWI3Yzg0XCJdLFtcIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTZcIixcIjM1ZWM1MTA5MmQ4NzI4MDUwOTc0YzIzYTFkODVkNGI1ZDUwNmNkYzI4ODQ5MDE5MmViYWMwNmNhZDEwZDVkXCJdLFtcIjljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2RcIixcImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWRcIl0sW1wiNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNVwiLFwiOWExYWYwYjI2YTZhNDgwN2FkZDlhMmRhZjcxZGYyNjI0NjUxNTJiYzNlZTI0YzY1ZTg5OWJlOTMyMzg1YTJhOFwiXSxbXCJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2XCIsXCI0MGE2YmYyMGU3NjY0MGIyYzkyYjk3YWZlNThjZDgyYzQzMmUxMGE3ZjUxNGQ5ZjNlZThiZTExYWUxYjI4ZWM4XCJdLFtcIjc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzFcIixcIjM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWNcIl0sW1wiOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjXCIsXCJjMjU2MjEwMDNkM2Y0MmE4MjdiNzhhMTMwOTNhOTVlZWFjM2QyNmVmYThhOGQ4M2ZjNTE4MGU5MzViY2QwOTFmXCJdLFtcIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTFcIixcIjFmMDM2NDg0MTNhMzhjMGJlMjlkNDk2ZTU4MmNmNTY2M2U4NzUxZTk2ODc3MzMxNTgyYzIzN2EyNGViMWY5NjJcIl0sW1wiZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZVwiLFwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwN1wiXSxbXCI4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxXCIsXCJjNjBmOWM5MjNjNzI3YjBiNzFiZWYyYzY3ZDFkMTI2ODdmZjdhNjMxODY5MDMxNjZkNjA1YjY4YmFlYzI5M2VjXCJdLFtcImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjNcIixcImJlMzI3OWVkNWJiYmIwM2FjNjlhODBmODk4NzlhYTVhMDFhNmI5NjVmMTNmN2U1OWQ0N2E1MzA1YmE1YWQ5M2RcIl0sW1wiZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZlwiLFwiNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNFwiXSxbXCIxZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5XCIsXCJhZWVmZTkzNzU2YjUzNDBkMmYzYTQ5NThhN2FiYmY1ZTAxNDZlNzdmNjI5NWEwN2I2NzFjZGMxY2MxMDdjZWZkXCJdLFtcIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmVcIixcImIzMThlMGVjMzM1NDAyOGFkZDY2OTgyN2Y5ZDRiMjg3MGFhYTk3MWQyZjdlNWVkMWQwYjI5NzQ4M2Q4M2VmZDBcIl0sW1wiZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOVwiLFwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMVwiXSxbXCJkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyXCIsXCI4MTU3ZjU1YTdjOTkzMDZjNzljMDc2NjE2MWM5MWUyOTY2YTczODk5ZDI3OWI0OGE2NTVmYmEwZjFhZDgzNmYxXCJdLFtcImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTNcIixcIjdmOTczNTViOGRiODFjMDlhYmZiN2YzYzViMjUxNTg4OGI2NzlhM2U1MGRkNmJkNmNlZjdjNzMxMTFmNGNjMGNcIl0sW1wiMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3Y1wiLFwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3M1wiXSxbXCI5NTkzOTY5ODE5NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhXCIsXCIyZTdlNTUyODg4YzMzMWRkOGJhMDM4NmE0YjljZDY4NDljNjUzZjY0Yzg3MDkzODVlOWI4YWJmODc1MjRmMmZkXCJdLFtcImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTFcIixcImU4MmQ4NmZiNjQ0M2ZjYjc1NjVhZWU1OGIyOTQ4MjIwYTcwZjc1MGFmNDg0Y2E1MmQ0MTQyMTc0ZGNmODk0MDVcIl0sW1wiNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3M1wiLFwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OVwiXSxbXCI4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4XCIsXCIzOGVlN2I4Y2JhNTQwNGRkODRhMjViZjM5Y2VjYjJjYTkwMGE3OWM0MmIyNjJlNTU2ZDY0YjFiNTk3NzkwNTdlXCJdLFtcIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmJcIixcIjY5YmUxNTkwMDQ2MTQ1ODBlZjdlNDMzNDUzY2NiMGNhNDhmMzAwYTgxZDA5NDJlMTNmNDk1YTkwN2Y2ZWNjMjdcIl0sW1wiYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NlwiLFwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxXCJdLFtcIjhjMjhhOTdiZjgyOThiYzBkMjNkOGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWFcIixcIjQwYTMwNDYzYTMzMDUxOTMzNzhmZWRmMzFmN2NjMGViN2FlNzg0ZjA0NTFjYjk0NTllNzFkYzczY2JlZjk0ODJcIl0sW1wiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwXCIsXCI2MjBlZmFiYmM4ZWUyNzgyZTI0ZTdjMGNmYjk1YzVkNzM1Yjc4M2JlOWNmMGY4ZTk1NWFmMzRhMzBlNjJiOTQ1XCJdLFtcImRkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODdcIixcIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzNcIl0sW1wiZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZVwiLFwiZWE5OGU2NzIzMmQzYjMyOTVkM2I1MzU1MzIxMTVjY2FjODYxMmM3MjE4NTE2MTc1MjZhZTQ3YTljNzdiZmM4MlwiXV19LG5hZjp7d25kOjcscG9pbnRzOltbXCJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5XCIsXCIzODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5ZmQ3NTg0YjhlNjcyXCJdLFtcIjJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTRcIixcImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDZcIl0sW1wiNWNiZGYwNjQ2ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliY1wiLFwiNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYVwiXSxbXCJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlXCIsXCJjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3XCJdLFtcIjc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2JcIixcImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWJcIl0sW1wiZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOFwiLFwiYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxXCJdLFtcImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGVcIixcIjU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZiNThcIl0sW1wiZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNFwiLFwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3N1wiXSxbXCIyYjRlYTBhNzk3YTQ0M2QyOTNlZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjXCIsXCI4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhXCJdLFtcIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDVcIixcIjMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGNcIl0sW1wiMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZlwiLFwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3XCJdLFtcIjkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTRcIixcIjczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDJcIl0sW1wiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOVwiLFwiYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NVwiXSxbXCJjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiXCIsXCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyXCJdLFtcIjZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjRcIixcImUwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODJcIl0sW1wiMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNVwiLFwiYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NlwiXSxbXCI2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5XCIsXCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDlcIl0sW1wiNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZFwiLFwiODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZlwiXSxbXCI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmXCIsXCIxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhXCJdLFtcIjdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmJcIixcImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmN1wiXSxbXCJkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5XCIsXCJlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzXCJdLFtcIjQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2M1wiLFwiNzU4ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YVwiXSxbXCI3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0XCIsXCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2XCJdLFtcImYyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzBcIixcImUwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzdcIl0sW1wiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YlwiLFwiNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZVwiXSxbXCJmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3XCIsXCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2XCJdLFtcImNhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUxNWY3MTUxZDQxZDFcIixcImNiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzZcIl0sW1wiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMFwiLFwiNDExOWI4ODc1M2MxNWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MFwiXSxbXCI3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1XCIsXCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjFcIl0sW1wiNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOFwiLFwiNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzXCJdLFtcImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZThcIixcIjU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjVcIl0sW1wiMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYlwiLFwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YlwiXSxbXCJkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNmXCIsXCI1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3XCJdLFtcIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDNcIixcImVmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjhcIl0sW1wiMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYVwiLFwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YVwiXSxbXCJhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1XCIsXCJmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2XCJdLFtcIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWFcIixcIjc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTZcIl0sW1wiNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZVwiLFwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZVwiXSxbXCJmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4XCIsXCJlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkXCJdLFtcIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmNcIixcIjMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTJcIl0sW1wiOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOVwiLFwiZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZVwiXSxbXCI3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiXCIsXCIxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3XCJdLFtcIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2FcIixcImVmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTFcIl0sW1wiZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZlwiLFwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNFwiXSxbXCIxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwXCIsXCI2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1XCJdLFtcIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDRcIixcImY1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFlNDU3OGM1NDY3M2JjMWRjNWVhMWRcIl0sW1wiMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1Y1wiLFwiZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZFwiXSxbXCJhMWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwXCIsXCJlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5XCJdLFtcImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODBcIixcImE4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNlwiXSxbXCIzMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzXCIsXCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0XCJdLFtcIjM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGZcIixcIjk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZVwiXSxbXCJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzXCIsXCI0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYyYTQwMDc2NmQxXCJdLFtcImQ3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDhcIixcImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2JcIl0sW1wiMzJkMzFjMjIyZjhmNmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZlwiLFwiNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MVwiXSxbXCI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1XCIsXCI4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2XCJdLFtcImVlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDZcIixcIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWVcIl0sW1wiMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNVwiLFwiNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZFwiXSxbXCJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5XCIsXCJmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2RjXCJdLFtcIjc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MVwiLFwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNFwiXSxbXCI0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1XCIsXCI0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjXCJdLFtcImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjVcIixcIjIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmJcIl0sW1wiYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5N1wiLFwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzXCJdLFtcIjg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODFcIixcIjczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NFwiXSxbXCI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1XCIsXCIzOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1XCJdLFtcIjM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjZcIixcImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmNcIl0sW1wiMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2XCIsXCJlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0XCJdLFtcIjhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGVcIixcIjZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGVcIl0sW1wiMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NFwiLFwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2XCJdLFtcIjg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzFcIixcIjNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTFcIl0sW1wiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MVwiLFwiYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiXCJdLFtcImEwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTJcIixcImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjJcIl0sW1wiNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJhMTEzZjJlNGMwZTEyMWU1XCIsXCJjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjXCJdLFtcImQyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2JcIixcIjZmYjhkNTU5MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTNcIl0sW1wiZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNFwiLFwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZFwiXSxbXCJhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmXCIsXCI2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwXCJdLFtcImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5XCIsXCIyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0XCJdLFtcIjU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDZcIixcImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTZcIl0sW1wiMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1Mjk4NFwiLFwiOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNFwiXSxbXCIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhXCIsXCJiMjI4NDI3OTk5NWEzNGUyZjlkNGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3XCJdLFtcImNjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzBcIixcImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTNcIl0sW1wiYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5N1wiLFwiNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NlwiXSxbXCJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTNcIixcImMzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzhcIl0sW1wiYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZlwiLFwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmXCJdLFtcIjM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzhcIixcIjYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDhcIl0sW1wiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YVwiLFwiNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YVwiXSxbXCJjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExXCIsXCI1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0XCJdLFtcIjRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDJcIixcIjc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzdcIl0sW1wiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYVwiLFwiYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmN1wiXSxbXCJjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2XCIsXCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkXCJdLFtcImI0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODZcIixcIjM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmFcIl0sW1wiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZVwiLFwiNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NFwiXSxbXCI0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0XCIsXCIyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3XCJdLFtcImRmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGFcIixcImVjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTdcIl0sW1wiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OVwiLFwiY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMFwiXSxbXCJlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmXCIsXCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1XCJdLFtcImViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGNcIixcIjZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2VcIl0sW1wiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MlwiLFwiZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3MGQ1NTY0NmI4YWRmMVwiXSxbXCJlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhXCIsXCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyXCJdLFtcImIyNjhmNWVmOWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODBcIixcIjVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjNcIl0sW1wiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZFwiLFwiNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOFwiXSxbXCI4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExXCIsXCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4XCJdLFtcIjUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjNcIixcImMzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NVwiXSxbXCJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyXCIsXCI2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2FmYTdkXCJdLFtcIjdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTNcIixcImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWNcIl0sW1wiNTA5OGZmMWUxZDlmMTRmYjQ2YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMFwiLFwiOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwXCJdLFtcIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNThcIixcImVlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2NcIl0sW1wiZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmN1wiLFwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNFwiXSxbXCI4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4XCIsXCJjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmXCJdLFtcIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2VcIixcIjY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDlcIl0sW1wiM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZFwiLFwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2XCJdLFtcIjY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmJcIixcIjI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTVcIl0sW1wiZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZlwiLFwiZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4N1wiXSxbXCIzMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2XCIsXCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiXCJdLFtcImJlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTdcIixcIjYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmNcIl0sW1wiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YVwiLFwiN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3Y1wiXSxbXCJiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjXCIsXCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmXCJdLFtcImQ1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTJcIixcIjRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2FcIl0sW1wiZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYlwiLFwiYmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NlwiXSxbXCI0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1XCIsXCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmXCJdLFtcIjc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTdcIixcIjYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDNcIl0sW1wiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOVwiLFwiY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOFwiXSxbXCIzMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzXCIsXCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4XCJdLFtcIjllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFlZTZjMTM0Nzc2OWVmNTdcIixcIjcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3M1wiXSxbXCIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2XCIsXCJlZDhjYzlkMDRiMjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzXCJdLFtcIjc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYThcIixcIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDhcIl0sW1wiODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMVwiLFwiOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMVwiXSxbXCIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwXCIsXCI0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5XCJdXVxufX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5zbGljZSgpO2lmKCF0KXJldHVybltdO3ZhciByPVtdO2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylyW25dPTB8dFtuXTtyZXR1cm4gcn1pZihlKXtpZihcImhleFwiPT09ZSl7dD10LnJlcGxhY2UoL1teYS16MC05XSsvZ2ksXCJcIiksdC5sZW5ndGglMiE9PTAmJih0PVwiMFwiK3QpO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bis9MilyLnB1c2gocGFyc2VJbnQodFtuXSt0W24rMV0sMTYpKX19ZWxzZSBmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dC5jaGFyQ29kZUF0KG4pLG89aT4+OCxhPTI1NSZpO28/ci5wdXNoKG8sYSk6ci5wdXNoKGEpfXJldHVybiByfWZ1bmN0aW9uIGkodCl7cmV0dXJuIDE9PT10Lmxlbmd0aD9cIjBcIit0OnR9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9XCJcIixyPTA7cjx0Lmxlbmd0aDtyKyspZSs9aSh0W3JdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIGV9ZnVuY3Rpb24gYSh0LGUpe2Zvcih2YXIgcj1bXSxuPTE8PGUrMSxpPXQuY2xvbmUoKTtpLmNtcG4oMSk+PTA7KXt2YXIgbztpZihpLmlzT2RkKCkpe3ZhciBhPWkuYW5kbG4obi0xKTtvPWE+KG4+PjEpLTE/KG4+PjEpLWE6YSxpLmlzdWJuKG8pfWVsc2Ugbz0wO3IucHVzaChvKTtmb3IodmFyIGY9MCE9PWkuY21wbigwKSYmMD09PWkuYW5kbG4obi0xKT9lKzE6MSxzPTE7czxmO3MrKylyLnB1c2goMCk7aS5pdXNocm4oZil9cmV0dXJuIHJ9ZnVuY3Rpb24gZih0LGUpe3ZhciByPVtbXSxbXV07dD10LmNsb25lKCksZT1lLmNsb25lKCk7Zm9yKHZhciBuPTAsaT0wO3QuY21wbigtbik+MHx8ZS5jbXBuKC1pKT4wOyl7dmFyIG89dC5hbmRsbigzKStuJjMsYT1lLmFuZGxuKDMpK2kmMzszPT09byYmKG89LTEpLDM9PT1hJiYoYT0tMSk7dmFyIGY7aWYoMD09PSgxJm8pKWY9MDtlbHNle3ZhciBzPXQuYW5kbG4oNykrbiY3O2Y9MyE9PXMmJjUhPT1zfHwyIT09YT9vOi1vfXJbMF0ucHVzaChmKTt2YXIgdTtpZigwPT09KDEmYSkpdT0wO2Vsc2V7dmFyIHM9ZS5hbmRsbig3KStpJjc7dT0zIT09cyYmNSE9PXN8fDIhPT1vP2E6LWF9clsxXS5wdXNoKHUpLDIqbj09PWYrMSYmKG49MS1uKSwyKmk9PT11KzEmJihpPTEtaSksdC5pdXNocm4oMSksZS5pdXNocm4oMSl9cmV0dXJuIHJ9ZnVuY3Rpb24gcyh0LGUscil7dmFyIG49XCJfXCIrZTt0LnByb3RvdHlwZVtlXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzW25dP3RoaXNbbl06dGhpc1tuXT1yLmNhbGwodGhpcyl9fWZ1bmN0aW9uIHUodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/Yy50b0FycmF5KHQsXCJoZXhcIik6dH1mdW5jdGlvbiBoKHQpe3JldHVybiBuZXcgZCh0LFwiaGV4XCIsXCJsZVwiKX12YXIgYz1lLGQ9cigxOCk7Yy5hc3NlcnQ9ZnVuY3Rpb24odCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoZXx8XCJBc3NlcnRpb24gZmFpbGVkXCIpfSxjLnRvQXJyYXk9bixjLnplcm8yPWksYy50b0hleD1vLGMuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJoZXhcIj09PWU/byh0KTp0fSxjLmdldE5BRj1hLGMuZ2V0SlNGPWYsYy5jYWNoZWRQcm9wZXJ0eT1zLGMucGFyc2VCeXRlcz11LGMuaW50RnJvbUxFPWh9LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe3RoaXMucmFuZD10fXZhciBpO2lmKHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXx8KGk9bmV3IG4obnVsbCkpLGkuZ2VuZXJhdGUodCl9LHQuZXhwb3J0cy5SYW5kPW4sbi5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhbmQodCl9LFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpd2luZG93LmNyeXB0byYmd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXM/bi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLGV9OndpbmRvdy5tc0NyeXB0byYmd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcz9uLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyhlKSxlfTpuLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXRcIil9O2Vsc2UgdHJ5e3ZhciBvPXIoNjA5KTtuLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih0KXtyZXR1cm4gby5yYW5kb21CeXRlcyh0KX19Y2F0Y2godCl7bi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBVaW50OEFycmF5KHQpLHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdPXRoaXMucmFuZC5nZXRCeXRlKCk7cmV0dXJuIGV9fX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXt0aGlzLnBlbmRpbmc9bnVsbCx0aGlzLnBlbmRpbmdUb3RhbD0wLHRoaXMuYmxvY2tTaXplPXRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplLHRoaXMub3V0U2l6ZT10aGlzLmNvbnN0cnVjdG9yLm91dFNpemUsdGhpcy5obWFjU3RyZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGgsdGhpcy5wYWRMZW5ndGg9dGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGgvOCx0aGlzLmVuZGlhbj1cImJpZ1wiLHRoaXMuX2RlbHRhOD10aGlzLmJsb2NrU2l6ZS84LHRoaXMuX2RlbHRhMzI9dGhpcy5ibG9ja1NpemUvMzJ9dmFyIGk9cig0OSksbz1pLnV0aWxzLGE9by5hc3NlcnQ7ZS5CbG9ja0hhc2g9bixuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXtpZih0PW8udG9BcnJheSh0LGUpLHRoaXMucGVuZGluZz90aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nLmNvbmNhdCh0KTp0aGlzLnBlbmRpbmc9dCx0aGlzLnBlbmRpbmdUb3RhbCs9dC5sZW5ndGgsdGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXt0PXRoaXMucGVuZGluZzt2YXIgcj10Lmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPXQuc2xpY2UodC5sZW5ndGgtcix0Lmxlbmd0aCksMD09PXRoaXMucGVuZGluZy5sZW5ndGgmJih0aGlzLnBlbmRpbmc9bnVsbCksdD1vLmpvaW4zMih0LDAsdC5sZW5ndGgtcix0aGlzLmVuZGlhbik7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZSh0LG4sbit0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc30sbi5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSksYShudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlzLl9kaWdlc3QodCl9LG4ucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBlbmRpbmdUb3RhbCxlPXRoaXMuX2RlbHRhOCxyPWUtKHQrdGhpcy5wYWRMZW5ndGgpJWUsbj1uZXcgQXJyYXkocit0aGlzLnBhZExlbmd0aCk7blswXT0xMjg7Zm9yKHZhciBpPTE7aTxyO2krKyluW2ldPTA7aWYodDw8PTMsXCJiaWdcIj09PXRoaXMuZW5kaWFuKXtmb3IodmFyIG89ODtvPHRoaXMucGFkTGVuZ3RoO28rKyluW2krK109MDtuW2krK109MCxuW2krK109MCxuW2krK109MCxuW2krK109MCxuW2krK109dD4+PjI0JjI1NSxuW2krK109dD4+PjE2JjI1NSxuW2krK109dD4+PjgmMjU1LG5baSsrXT0yNTUmdH1lbHNle25baSsrXT0yNTUmdCxuW2krK109dD4+PjgmMjU1LG5baSsrXT10Pj4+MTYmMjU1LG5baSsrXT10Pj4+MjQmMjU1LG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wLG5baSsrXT0wO2Zvcih2YXIgbz04O288dGhpcy5wYWRMZW5ndGg7bysrKW5baSsrXT0wfXJldHVybiBufX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlLHIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8odGhpcy5IYXNoPXQsdGhpcy5ibG9ja1NpemU9dC5ibG9ja1NpemUvOCx0aGlzLm91dFNpemU9dC5vdXRTaXplLzgsdGhpcy5pbm5lcj1udWxsLHRoaXMub3V0ZXI9bnVsbCx2b2lkIHRoaXMuX2luaXQoby50b0FycmF5KGUscikpKTpuZXcgbih0LGUscil9dmFyIGk9cig0OSksbz1pLnV0aWxzLGE9by5hc3NlcnQ7dC5leHBvcnRzPW4sbi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dC5sZW5ndGg+dGhpcy5ibG9ja1NpemUmJih0PShuZXcgdGhpcy5IYXNoKS51cGRhdGUodCkuZGlnZXN0KCkpLGEodC5sZW5ndGg8PXRoaXMuYmxvY2tTaXplKTtmb3IodmFyIGU9dC5sZW5ndGg7ZTx0aGlzLmJsb2NrU2l6ZTtlKyspdC5wdXNoKDApO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV1ePTU0O3RoaXMuaW5uZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZSh0KTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdXj0xMDY7dGhpcy5vdXRlcj0obmV3IHRoaXMuSGFzaCkudXBkYXRlKHQpfSxuLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUodCxlKSx0aGlzfSxuLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3V0ZXIudXBkYXRlKHRoaXMuaW5uZXIuZGlnZXN0KCkpLHRoaXMub3V0ZXIuZGlnZXN0KHQpfX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KGwuY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx2b2lkKHRoaXMuZW5kaWFuPVwibGl0dGxlXCIpKTpuZXcgbn1mdW5jdGlvbiBpKHQsZSxyLG4pe3JldHVybiB0PD0xNT9lXnJebjp0PD0zMT9lJnJ8fmUmbjp0PD00Nz8oZXx+cilebjp0PD02Mz9lJm58ciZ+bjplXihyfH5uKX1mdW5jdGlvbiBvKHQpe3JldHVybiB0PD0xNT8wOnQ8PTMxPzE1MTg1MDAyNDk6dDw9NDc/MTg1OTc3NTM5Mzp0PD02Mz8yNDAwOTU5NzA4OjI4NDA4NTM4Mzh9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdDw9MTU/MTM1MjgyOTkyNjp0PD0zMT8xNTQ4NjAzNjg0OnQ8PTQ3PzE4MzYwNzI2OTE6dDw9NjM/MjA1Mzk5NDIxNzowfXZhciBmPXIoNDkpLHM9Zi51dGlscyx1PXMucm90bDMyLGg9cy5zdW0zMixjPXMuc3VtMzJfMyxkPXMuc3VtMzJfNCxsPWYuY29tbW9uLkJsb2NrSGFzaDtzLmluaGVyaXRzKG4sbCksZS5yaXBlbWQxNjA9bixuLmJsb2NrU2l6ZT01MTIsbi5vdXRTaXplPTE2MCxuLmhtYWNTdHJlbmd0aD0xOTIsbi5wYWRMZW5ndGg9NjQsbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLmhbMF0sbj10aGlzLmhbMV0sZj10aGlzLmhbMl0scz10aGlzLmhbM10sbD10aGlzLmhbNF0sbT1yLGc9bix3PWYsXz1zLE09bCxTPTA7Uzw4MDtTKyspe3ZhciBFPWgodShkKHIsaShTLG4sZixzKSx0W3BbU10rZV0sbyhTKSksdltTXSksbCk7cj1sLGw9cyxzPXUoZiwxMCksZj1uLG49RSxFPWgodShkKG0saSg3OS1TLGcsdyxfKSx0W2JbU10rZV0sYShTKSkseVtTXSksTSksbT1NLE09XyxfPXUodywxMCksdz1nLGc9RX1FPWModGhpcy5oWzFdLGYsXyksdGhpcy5oWzFdPWModGhpcy5oWzJdLHMsTSksdGhpcy5oWzJdPWModGhpcy5oWzNdLGwsbSksdGhpcy5oWzNdPWModGhpcy5oWzRdLHIsZyksdGhpcy5oWzRdPWModGhpcy5oWzBdLG4sdyksdGhpcy5oWzBdPUV9LG4ucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuXCJoZXhcIj09PXQ/cy50b0hleDMyKHRoaXMuaCxcImxpdHRsZVwiKTpzLnNwbGl0MzIodGhpcy5oLFwibGl0dGxlXCIpfTt2YXIgcD1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxiPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLHY9WzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdLHk9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8oWC5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMywzMTQ0MTM0Mjc3LDEwMTM5MDQyNDIsMjc3MzQ4MDc2MiwxMzU5ODkzMTE5LDI2MDA4MjI5MjQsNTI4NzM0NjM1LDE1NDE0NTkyMjVdLHRoaXMuaz1ZLHZvaWQodGhpcy5XPW5ldyBBcnJheSg2NCkpKTpuZXcgbn1mdW5jdGlvbiBpKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBpPyhuLmNhbGwodGhpcyksdm9pZCh0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdKSk6bmV3IGl9ZnVuY3Rpb24gbygpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbz8oWC5jYWxsKHRoaXMpLHRoaXMuaD1bMTc3OTAzMzcwMyw0MDg5MjM1NzIwLDMxNDQxMzQyNzcsMjIyNzg3MzU5NSwxMDEzOTA0MjQyLDQyNzExNzU3MjMsMjc3MzQ4MDc2MiwxNTk1NzUwMTI5LDEzNTk4OTMxMTksMjkxNzU2NTEzNywyNjAwODIyOTI0LDcyNTUxMTE5OSw1Mjg3MzQ2MzUsNDIxNTM4OTU0NywxNTQxNDU5MjI1LDMyNzAzMzIwOV0sdGhpcy5rPVcsdm9pZCh0aGlzLlc9bmV3IEFycmF5KDE2MCkpKTpuZXcgb31mdW5jdGlvbiBhKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhPyhvLmNhbGwodGhpcyksdm9pZCh0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0NjIzNjAsNDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdKSk6bmV3IGF9ZnVuY3Rpb24gZigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgZj8oWC5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHZvaWQodGhpcy5XPW5ldyBBcnJheSg4MCkpKTpuZXcgZn1mdW5jdGlvbiBzKHQsZSxyKXtyZXR1cm4gdCZlXn50JnJ9ZnVuY3Rpb24gdSh0LGUscil7cmV0dXJuIHQmZV50JnJeZSZyfWZ1bmN0aW9uIGgodCxlLHIpe3JldHVybiB0XmVecn1mdW5jdGlvbiBjKHQpe3JldHVybiBSKHQsMileUih0LDEzKV5SKHQsMjIpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIFIodCw2KV5SKHQsMTEpXlIodCwyNSl9ZnVuY3Rpb24gbCh0KXtyZXR1cm4gUih0LDcpXlIodCwxOCledD4+PjN9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gUih0LDE3KV5SKHQsMTkpXnQ+Pj4xMH1mdW5jdGlvbiBiKHQsZSxyLG4pe3JldHVybiAwPT09dD9zKGUscixuKToxPT09dHx8Mz09PXQ/aChlLHIsbik6Mj09PXQ/dShlLHIsbik6dm9pZCAwfWZ1bmN0aW9uIHYodCxlLHIsbixpLG8pe3ZhciBhPXQmcl5+dCZpO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIHkodCxlLHIsbixpLG8pe3ZhciBhPWUmbl5+ZSZvO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIG0odCxlLHIsbixpLG8pe3ZhciBhPXQmcl50JmleciZpO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIGcodCxlLHIsbixpLG8pe3ZhciBhPWUmbl5lJm9ebiZvO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIHcodCxlKXt2YXIgcj1OKHQsZSwyOCksbj1OKGUsdCwyKSxpPU4oZSx0LDcpLG89cl5uXmk7cmV0dXJuIG88MCYmKG8rPTQyOTQ5NjcyOTYpLG99ZnVuY3Rpb24gXyh0LGUpe3ZhciByPUwodCxlLDI4KSxuPUwoZSx0LDIpLGk9TChlLHQsNyksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiBNKHQsZSl7dmFyIHI9Tih0LGUsMTQpLG49Tih0LGUsMTgpLGk9TihlLHQsOSksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiBTKHQsZSl7dmFyIHI9TCh0LGUsMTQpLG49TCh0LGUsMTgpLGk9TChlLHQsOSksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiBFKHQsZSl7dmFyIHI9Tih0LGUsMSksbj1OKHQsZSw4KSxpPVUodCxlLDcpLG89cl5uXmk7cmV0dXJuIG88MCYmKG8rPTQyOTQ5NjcyOTYpLG99ZnVuY3Rpb24gQSh0LGUpe3ZhciByPUwodCxlLDEpLG49TCh0LGUsOCksaT16KHQsZSw3KSxvPXJebl5pO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfWZ1bmN0aW9uIGsodCxlKXt2YXIgcj1OKHQsZSwxOSksbj1OKGUsdCwyOSksaT1VKHQsZSw2KSxvPXJebl5pO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfWZ1bmN0aW9uIHgodCxlKXt2YXIgcj1MKHQsZSwxOSksbj1MKGUsdCwyOSksaT16KHQsZSw2KSxvPXJebl5pO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfXZhciBJPXIoNDkpLEI9SS51dGlscyxPPUIuYXNzZXJ0LFI9Qi5yb3RyMzIsUD1CLnJvdGwzMixUPUIuc3VtMzIsaj1CLnN1bTMyXzQsQz1CLnN1bTMyXzUsTj1CLnJvdHI2NF9oaSxMPUIucm90cjY0X2xvLFU9Qi5zaHI2NF9oaSx6PUIuc2hyNjRfbG8sRD1CLnN1bTY0LHE9Qi5zdW02NF9oaSxGPUIuc3VtNjRfbG8sSz1CLnN1bTY0XzRfaGksRz1CLnN1bTY0XzRfbG8sVj1CLnN1bTY0XzVfaGksSD1CLnN1bTY0XzVfbG8sWD1JLmNvbW1vbi5CbG9ja0hhc2gsWT1bMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSxXPVsxMTE2MzUyNDA4LDM2MDk3Njc0NTgsMTg5OTQ0NzQ0MSw2MDI4OTE3MjUsMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5LDM5MjEwMDk1NzMsMjE3MzI5NTU0OCw5NjE5ODcxNjMsNDA4MTYyODQ3MiwxNTA4OTcwOTkzLDMwNTM4MzQyNjUsMjQ1MzYzNTc0OCwyOTM3NjcxNTc5LDI4NzA3NjMyMjEsMzY2NDYwOTU2MCwzNjI0MzgxMDgwLDI3MzQ4ODMzOTQsMzEwNTk4NDAxLDExNjQ5OTY1NDIsNjA3MjI1Mjc4LDEzMjM2MTA3NjQsMTQyNjg4MTk4NywzNTkwMzA0OTk0LDE5MjUwNzgzODgsNDA2ODE4MjM4MywyMTYyMDc4MjA2LDk5MTMzNjExMywyNjE0ODg4MTAzLDYzMzgwMzMxNywzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgsMzgzNTM5MDQwMSwyNjY2NjEzNDU4LDQwMjIyMjQ3NzQsOTQ0NzExMTM5LDI2NDM0NzA3OCwyMzQxMjYyNzczLDYwNDgwNzYyOCwyMDA3ODAwOTMzLDc3MDI1NTk4MywxNDk1OTkwOTAxLDEyNDkxNTAxMjIsMTg1NjQzMTIzNSwxNTU1MDgxNjkyLDMxNzUyMTgxMzIsMTk5NjA2NDk4NiwyMTk4OTUwODM3LDI1NTQyMjA4ODIsMzk5OTcxOTMzOSwyODIxODM0MzQ5LDc2Njc4NDAxNiwyOTUyOTk2ODA4LDI1NjY1OTQ4NzksMzIxMDMxMzY3MSwzMjAzMzM3OTU2LDMzMzY1NzE4OTEsMTAzNDQ1NzAyNiwzNTg0NTI4NzExLDI0NjY5NDg5MDEsMTEzOTI2OTkzLDM3NTgzMjYzODMsMzM4MjQxODk1LDE2ODcxNzkzNiw2NjYzMDcyMDUsMTE4ODE3OTk2NCw3NzM1Mjk5MTIsMTU0NjA0NTczNCwxMjk0NzU3MzcyLDE1MjI4MDU0ODUsMTM5NjE4MjI5MSwyNjQzODMzODIzLDE2OTUxODM3MDAsMjM0MzUyNzM5MCwxOTg2NjYxMDUxLDEwMTQ0Nzc0ODAsMjE3NzAyNjM1MCwxMjA2NzU5MTQyLDI0NTY5NTYwMzcsMzQ0MDc3NjI3LDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCwyODIwMzAyNDExLDMxNTg0NTQyNzMsMzI1OTczMDgwMCwzNTA1OTUyNjU3LDMzNDU3NjQ3NzEsMTA2MjE3MDA4LDM1MTYwNjU4MTcsMzYwNjAwODM0NCwzNjAwMzUyODA0LDE0MzI3MjU3NzYsNDA5NDU3MTkwOSwxNDY3MDMxNTk0LDI3NTQyMzM0NCw4NTExNjk3MjAsNDMwMjI3NzM0LDMxMDA4MjM3NTIsNTA2OTQ4NjE2LDEzNjMyNTgxOTUsNjU5MDYwNTU2LDM3NTA2ODU1OTMsODgzOTk3ODc3LDM3ODUwNTAyODAsOTU4MTM5NTcxLDMzMTgzMDc0MjcsMTMyMjgyMjIxOCwzODEyNzIzNDAzLDE1MzcwMDIwNjMsMjAwMzAzNDk5NSwxNzQ3ODczNzc5LDM2MDIwMzY4OTksMTk1NTU2MjIyMiwxNTc1OTkwMDEyLDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCwyMjI3NzMwNDUyLDI3MTY5MDQzMDYsMjM2MTg1MjQyNCw0NDI3NzYwNDQsMjQyODQzNjQ3NCw1OTM2OTgzNDQsMjc1NjczNDE4NywzNzMzMTEwMjQ5LDMyMDQwMzE0NzksMjk5OTM1MTU3MywzMzI5MzI1Mjk4LDM4MTU5MjA0MjcsMzM5MTU2OTYxNCwzOTI4MzgzOTAwLDM1MTUyNjcyNzEsNTY2MjgwNzExLDM5NDAxODc2MDYsMzQ1NDA2OTUzNCw0MTE4NjMwMjcxLDQwMDAyMzk5OTIsMTE2NDE4NDc0LDE5MTQxMzg1NTQsMTc0MjkyNDIxLDI3MzEwNTUyNzAsMjg5MzgwMzU2LDMyMDM5OTMwMDYsNDYwMzkzMjY5LDMyMDYyMDMxNSw2ODU0NzE3MzMsNTg3NDk2ODM2LDg1MjE0Mjk3MSwxMDg2NzkyODUxLDEwMTcwMzYyOTgsMzY1NTQzMTAwLDExMjYwMDA1ODAsMjYxODI5NzY3NiwxMjg4MDMzNDcwLDM0MDk4NTUxNTgsMTUwMTUwNTk0OCw0MjM0NTA5ODY2LDE2MDcxNjc5MTUsOTg3MTY3NDY4LDE4MTY0MDIzMTYsMTI0NjE4OTU5MV0sWj1bMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMzM5NTQ2OTc4Ml07Qi5pbmhlcml0cyhuLFgpLGUuc2hhMjU2PW4sbi5ibG9ja1NpemU9NTEyLG4ub3V0U2l6ZT0yNTYsbi5obWFjU3RyZW5ndGg9MTkyLG4ucGFkTGVuZ3RoPTY0LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5XLG49MDtuPDE2O24rKylyW25dPXRbZStuXTtmb3IoO248ci5sZW5ndGg7bisrKXJbbl09aihwKHJbbi0yXSkscltuLTddLGwocltuLTE1XSkscltuLTE2XSk7dmFyIGk9dGhpcy5oWzBdLG89dGhpcy5oWzFdLGE9dGhpcy5oWzJdLGY9dGhpcy5oWzNdLGg9dGhpcy5oWzRdLGI9dGhpcy5oWzVdLHY9dGhpcy5oWzZdLHk9dGhpcy5oWzddO08odGhpcy5rLmxlbmd0aD09PXIubGVuZ3RoKTtmb3IodmFyIG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIG09Qyh5LGQoaCkscyhoLGIsdiksdGhpcy5rW25dLHJbbl0pLGc9VChjKGkpLHUoaSxvLGEpKTt5PXYsdj1iLGI9aCxoPVQoZixtKSxmPWEsYT1vLG89aSxpPVQobSxnKX10aGlzLmhbMF09VCh0aGlzLmhbMF0saSksdGhpcy5oWzFdPVQodGhpcy5oWzFdLG8pLHRoaXMuaFsyXT1UKHRoaXMuaFsyXSxhKSx0aGlzLmhbM109VCh0aGlzLmhbM10sZiksdGhpcy5oWzRdPVQodGhpcy5oWzRdLGgpLHRoaXMuaFs1XT1UKHRoaXMuaFs1XSxiKSx0aGlzLmhbNl09VCh0aGlzLmhbNl0sdiksdGhpcy5oWzddPVQodGhpcy5oWzddLHkpfSxuLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P0IudG9IZXgzMih0aGlzLmgsXCJiaWdcIik6Qi5zcGxpdDMyKHRoaXMuaCxcImJpZ1wiKX0sQi5pbmhlcml0cyhpLG4pLGUuc2hhMjI0PWksaS5ibG9ja1NpemU9NTEyLGkub3V0U2l6ZT0yMjQsaS5obWFjU3RyZW5ndGg9MTkyLGkucGFkTGVuZ3RoPTY0LGkucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuXCJoZXhcIj09PXQ/Qi50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLFwiYmlnXCIpOkIuc3BsaXQzMih0aGlzLmguc2xpY2UoMCw3KSxcImJpZ1wiKX0sQi5pbmhlcml0cyhvLFgpLGUuc2hhNTEyPW8sby5ibG9ja1NpemU9MTAyNCxvLm91dFNpemU9NTEyLG8uaG1hY1N0cmVuZ3RoPTE5MixvLnBhZExlbmd0aD0xMjgsby5wcm90b3R5cGUuX3ByZXBhcmVCbG9jaz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10aGlzLlcsbj0wO248MzI7bisrKXJbbl09dFtlK25dO2Zvcig7bjxyLmxlbmd0aDtuKz0yKXt2YXIgaT1rKHJbbi00XSxyW24tM10pLG89eChyW24tNF0scltuLTNdKSxhPXJbbi0xNF0sZj1yW24tMTNdLHM9RShyW24tMzBdLHJbbi0yOV0pLHU9QShyW24tMzBdLHJbbi0yOV0pLGg9cltuLTMyXSxjPXJbbi0zMV07cltuXT1LKGksbyxhLGYscyx1LGgsYykscltuKzFdPUcoaSxvLGEsZixzLHUsaCxjKX19LG8ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCxlKXt0aGlzLl9wcmVwYXJlQmxvY2sodCxlKTt2YXIgcj10aGlzLlcsbj10aGlzLmhbMF0saT10aGlzLmhbMV0sbz10aGlzLmhbMl0sYT10aGlzLmhbM10sZj10aGlzLmhbNF0scz10aGlzLmhbNV0sdT10aGlzLmhbNl0saD10aGlzLmhbN10sYz10aGlzLmhbOF0sZD10aGlzLmhbOV0sbD10aGlzLmhbMTBdLHA9dGhpcy5oWzExXSxiPXRoaXMuaFsxMl0sRT10aGlzLmhbMTNdLEE9dGhpcy5oWzE0XSxrPXRoaXMuaFsxNV07Tyh0aGlzLmsubGVuZ3RoPT09ci5sZW5ndGgpO2Zvcih2YXIgeD0wO3g8ci5sZW5ndGg7eCs9Mil7dmFyIEk9QSxCPWssUj1NKGMsZCksUD1TKGMsZCksVD12KGMsZCxsLHAsYixFKSxqPXkoYyxkLGwscCxiLEUpLEM9dGhpcy5rW3hdLE49dGhpcy5rW3grMV0sTD1yW3hdLFU9clt4KzFdLHo9VihJLEIsUixQLFQsaixDLE4sTCxVKSxLPUgoSSxCLFIsUCxULGosQyxOLEwsVSksST13KG4saSksQj1fKG4saSksUj1tKG4saSxvLGEsZixzKSxQPWcobixpLG8sYSxmLHMpLEc9cShJLEIsUixQKSxYPUYoSSxCLFIsUCk7QT1iLGs9RSxiPWwsRT1wLGw9YyxwPWQsYz1xKHUsaCx6LEspLGQ9RihoLGgseixLKSx1PWYsaD1zLGY9byxzPWEsbz1uLGE9aSxuPXEoeixLLEcsWCksaT1GKHosSyxHLFgpfUQodGhpcy5oLDAsbixpKSxEKHRoaXMuaCwyLG8sYSksRCh0aGlzLmgsNCxmLHMpLEQodGhpcy5oLDYsdSxoKSxEKHRoaXMuaCw4LGMsZCksRCh0aGlzLmgsMTAsbCxwKSxEKHRoaXMuaCwxMixiLEUpLEQodGhpcy5oLDE0LEEsayl9LG8ucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuXCJoZXhcIj09PXQ/Qi50b0hleDMyKHRoaXMuaCxcImJpZ1wiKTpCLnNwbGl0MzIodGhpcy5oLFwiYmlnXCIpfSxCLmluaGVyaXRzKGEsbyksZS5zaGEzODQ9YSxhLmJsb2NrU2l6ZT0xMDI0LGEub3V0U2l6ZT0zODQsYS5obWFjU3RyZW5ndGg9MTkyLGEucGFkTGVuZ3RoPTEyOCxhLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P0IudG9IZXgzMih0aGlzLmguc2xpY2UoMCwxMiksXCJiaWdcIik6Qi5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLDEyKSxcImJpZ1wiKX0sQi5pbmhlcml0cyhmLFgpLGUuc2hhMT1mLGYuYmxvY2tTaXplPTUxMixmLm91dFNpemU9MTYwLGYuaG1hY1N0cmVuZ3RoPTgwLGYucGFkTGVuZ3RoPTY0LGYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5XLG49MDtuPDE2O24rKylyW25dPXRbZStuXTtmb3IoO248ci5sZW5ndGg7bisrKXJbbl09UChyW24tM11ecltuLThdXnJbbi0xNF1ecltuLTE2XSwxKTtmb3IodmFyIGk9dGhpcy5oWzBdLG89dGhpcy5oWzFdLGE9dGhpcy5oWzJdLGY9dGhpcy5oWzNdLHM9dGhpcy5oWzRdLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIHU9fn4obi8yMCksaD1DKFAoaSw1KSxiKHUsbyxhLGYpLHMscltuXSxaW3VdKTtzPWYsZj1hLGE9UChvLDMwKSxvPWksaT1ofXRoaXMuaFswXT1UKHRoaXMuaFswXSxpKSx0aGlzLmhbMV09VCh0aGlzLmhbMV0sbyksdGhpcy5oWzJdPVQodGhpcy5oWzJdLGEpLHRoaXMuaFszXT1UKHRoaXMuaFszXSxmKSx0aGlzLmhbNF09VCh0aGlzLmhbNF0scyl9LGYucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuXCJoZXhcIj09PXQ/Qi50b0hleDMyKHRoaXMuaCxcImJpZ1wiKTpCLnNwbGl0MzIodGhpcy5oLFwiYmlnXCIpfX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LnNsaWNlKCk7aWYoIXQpcmV0dXJuW107dmFyIHI9W107aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpaWYoZSl7aWYoXCJoZXhcIj09PWUpe3Q9dC5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLFwiXCIpLHQubGVuZ3RoJTIhPT0wJiYodD1cIjBcIit0KTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTIpci5wdXNoKHBhcnNlSW50KHRbbl0rdFtuKzFdLDE2KSl9fWVsc2UgZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXQuY2hhckNvZGVBdChuKSxvPWk+PjgsYT0yNTUmaTtvP3IucHVzaChvLGEpOnIucHVzaChhKX1lbHNlIGZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXJbbl09MHx0W25dO3JldHVybiByfWZ1bmN0aW9uIGkodCl7Zm9yKHZhciBlPVwiXCIscj0wO3I8dC5sZW5ndGg7cisrKWUrPWYodFtyXS50b1N0cmluZygxNikpO3JldHVybiBlfWZ1bmN0aW9uIG8odCl7dmFyIGU9dD4+PjI0fHQ+Pj44JjY1MjgwfHQ8PDgmMTY3MTE2ODB8KDI1NSZ0KTw8MjQ7cmV0dXJuIGU+Pj4wfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIHI9XCJcIixuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl07XCJsaXR0bGVcIj09PWUmJihpPW8oaSkpLHIrPXMoaS50b1N0cmluZygxNikpfXJldHVybiByfWZ1bmN0aW9uIGYodCl7cmV0dXJuIDE9PT10Lmxlbmd0aD9cIjBcIit0OnR9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gNz09PXQubGVuZ3RoP1wiMFwiK3Q6Nj09PXQubGVuZ3RoP1wiMDBcIit0OjU9PT10Lmxlbmd0aD9cIjAwMFwiK3Q6ND09PXQubGVuZ3RoP1wiMDAwMFwiK3Q6Mz09PXQubGVuZ3RoP1wiMDAwMDBcIit0OjI9PT10Lmxlbmd0aD9cIjAwMDAwMFwiK3Q6MT09PXQubGVuZ3RoP1wiMDAwMDAwMFwiK3Q6dH1mdW5jdGlvbiB1KHQsZSxyLG4pe3ZhciBpPXItZTt5KGklND09PTApO2Zvcih2YXIgbz1uZXcgQXJyYXkoaS80KSxhPTAsZj1lO2E8by5sZW5ndGg7YSsrLGYrPTQpe3ZhciBzO3M9XCJiaWdcIj09PW4/dFtmXTw8MjR8dFtmKzFdPDwxNnx0W2YrMl08PDh8dFtmKzNdOnRbZiszXTw8MjR8dFtmKzJdPDwxNnx0W2YrMV08PDh8dFtmXSxvW2FdPXM+Pj4wfXJldHVybiBvfWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KDQqdC5sZW5ndGgpLG49MCxpPTA7bjx0Lmxlbmd0aDtuKyssaSs9NCl7dmFyIG89dFtuXTtcImJpZ1wiPT09ZT8ocltpXT1vPj4+MjQscltpKzFdPW8+Pj4xNiYyNTUscltpKzJdPW8+Pj44JjI1NSxyW2krM109MjU1Jm8pOihyW2krM109bz4+PjI0LHJbaSsyXT1vPj4+MTYmMjU1LHJbaSsxXT1vPj4+OCYyNTUscltpXT0yNTUmbyl9cmV0dXJuIHJ9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB0Pj4+ZXx0PDwzMi1lfWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gdDw8ZXx0Pj4+MzItZX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQrZT4+PjB9ZnVuY3Rpb24gcCh0LGUscil7cmV0dXJuIHQrZStyPj4+MH1mdW5jdGlvbiBiKHQsZSxyLG4pe3JldHVybiB0K2UrcituPj4+MH1mdW5jdGlvbiB2KHQsZSxyLG4saSl7cmV0dXJuIHQrZStyK24raT4+PjB9ZnVuY3Rpb24geSh0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9ZnVuY3Rpb24gbSh0LGUscixuKXt2YXIgaT10W2VdLG89dFtlKzFdLGE9bitvPj4+MCxmPShhPG4/MTowKStyK2k7dFtlXT1mPj4+MCx0W2UrMV09YX1mdW5jdGlvbiBnKHQsZSxyLG4pe3ZhciBpPWUrbj4+PjAsbz0oaTxlPzE6MCkrdCtyO3JldHVybiBvPj4+MH1mdW5jdGlvbiB3KHQsZSxyLG4pe3ZhciBpPWUrbjtyZXR1cm4gaT4+PjB9ZnVuY3Rpb24gXyh0LGUscixuLGksbyxhLGYpe3ZhciBzPTAsdT1lO3U9dStuPj4+MCxzKz11PGU/MTowLHU9dStvPj4+MCxzKz11PG8/MTowLHU9dStmPj4+MCxzKz11PGY/MTowO3ZhciBoPXQrcitpK2ErcztyZXR1cm4gaD4+PjB9ZnVuY3Rpb24gTSh0LGUscixuLGksbyxhLGYpe3ZhciBzPWUrbitvK2Y7cmV0dXJuIHM+Pj4wfWZ1bmN0aW9uIFModCxlLHIsbixpLG8sYSxmLHMsdSl7dmFyIGg9MCxjPWU7Yz1jK24+Pj4wLGgrPWM8ZT8xOjAsYz1jK28+Pj4wLGgrPWM8bz8xOjAsYz1jK2Y+Pj4wLGgrPWM8Zj8xOjAsYz1jK3U+Pj4wLGgrPWM8dT8xOjA7dmFyIGQ9dCtyK2krYStzK2g7cmV0dXJuIGQ+Pj4wfWZ1bmN0aW9uIEUodCxlLHIsbixpLG8sYSxmLHMsdSl7dmFyIGg9ZStuK28rZit1O3JldHVybiBoPj4+MH1mdW5jdGlvbiBBKHQsZSxyKXt2YXIgbj1lPDwzMi1yfHQ+Pj5yO3JldHVybiBuPj4+MH1mdW5jdGlvbiBrKHQsZSxyKXt2YXIgbj10PDwzMi1yfGU+Pj5yO3JldHVybiBuPj4+MH1mdW5jdGlvbiB4KHQsZSxyKXtyZXR1cm4gdD4+PnJ9ZnVuY3Rpb24gSSh0LGUscil7dmFyIG49dDw8MzItcnxlPj4+cjtyZXR1cm4gbj4+PjB9dmFyIEI9ZSxPPXIoMik7Qi50b0FycmF5PW4sQi50b0hleD1pLEIuaHRvbmw9byxCLnRvSGV4MzI9YSxCLnplcm8yPWYsQi56ZXJvOD1zLEIuam9pbjMyPXUsQi5zcGxpdDMyPWgsQi5yb3RyMzI9YyxCLnJvdGwzMj1kLEIuc3VtMzI9bCxCLnN1bTMyXzM9cCxCLnN1bTMyXzQ9YixCLnN1bTMyXzU9dixCLmFzc2VydD15LEIuaW5oZXJpdHM9TyxlLnN1bTY0PW0sZS5zdW02NF9oaT1nLGUuc3VtNjRfbG89dyxlLnN1bTY0XzRfaGk9XyxlLnN1bTY0XzRfbG89TSxlLnN1bTY0XzVfaGk9UyxlLnN1bTY0XzVfbG89RSxlLnJvdHI2NF9oaT1BLGUucm90cjY0X2xvPWssZS5zaHI2NF9oaT14LGUuc2hyNjRfbG89SX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTAwKSxpPW4uZGVmaW5lKFwiUlNBUHJpdmF0ZUtleVwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwibW9kdWx1c1wiKS5pbnQoKSx0aGlzLmtleShcInB1YmxpY0V4cG9uZW50XCIpLmludCgpLHRoaXMua2V5KFwicHJpdmF0ZUV4cG9uZW50XCIpLmludCgpLHRoaXMua2V5KFwicHJpbWUxXCIpLmludCgpLHRoaXMua2V5KFwicHJpbWUyXCIpLmludCgpLHRoaXMua2V5KFwiZXhwb25lbnQxXCIpLmludCgpLHRoaXMua2V5KFwiZXhwb25lbnQyXCIpLmludCgpLHRoaXMua2V5KFwiY29lZmZpY2llbnRcIikuaW50KCkpfSk7ZS5SU0FQcml2YXRlS2V5PWk7dmFyIG89bi5kZWZpbmUoXCJSU0FQdWJsaWNLZXlcIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwibW9kdWx1c1wiKS5pbnQoKSx0aGlzLmtleShcInB1YmxpY0V4cG9uZW50XCIpLmludCgpKX0pO2UuUlNBUHVibGljS2V5PW87dmFyIGE9bi5kZWZpbmUoXCJTdWJqZWN0UHVibGljS2V5SW5mb1wiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikudXNlKGYpLHRoaXMua2V5KFwic3ViamVjdFB1YmxpY0tleVwiKS5iaXRzdHIoKSl9KTtlLlB1YmxpY0tleT1hO3ZhciBmPW4uZGVmaW5lKFwiQWxnb3JpdGhtSWRlbnRpZmllclwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikub2JqaWQoKSx0aGlzLmtleShcIm5vbmVcIikubnVsbF8oKS5vcHRpb25hbCgpLHRoaXMua2V5KFwiY3VydmVcIikub2JqaWQoKS5vcHRpb25hbCgpLHRoaXMua2V5KFwicGFyYW1zXCIpLnNlcSgpLm9iaih0aGlzLmtleShcInBcIikuaW50KCksdGhpcy5rZXkoXCJxXCIpLmludCgpLHRoaXMua2V5KFwiZ1wiKS5pbnQoKSkub3B0aW9uYWwoKSl9KSxzPW4uZGVmaW5lKFwiUHJpdmF0ZUtleUluZm9cIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwidmVyc2lvblwiKS5pbnQoKSx0aGlzLmtleShcImFsZ29yaXRobVwiKS51c2UoZiksdGhpcy5rZXkoXCJzdWJqZWN0UHJpdmF0ZUtleVwiKS5vY3RzdHIoKSl9KTtlLlByaXZhdGVLZXk9czt2YXIgdT1uLmRlZmluZShcIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXCIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcImFsZ29yaXRobVwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJpZFwiKS5vYmppZCgpLHRoaXMua2V5KFwiZGVjcnlwdFwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJrZGVcIikuc2VxKCkub2JqKHRoaXMua2V5KFwiaWRcIikub2JqaWQoKSx0aGlzLmtleShcImtkZXBhcmFtc1wiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJzYWx0XCIpLm9jdHN0cigpLHRoaXMua2V5KFwiaXRlcnNcIikuaW50KCkpKSx0aGlzLmtleShcImNpcGhlclwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvXCIpLm9iamlkKCksdGhpcy5rZXkoXCJpdlwiKS5vY3RzdHIoKSkpKSx0aGlzLmtleShcInN1YmplY3RQcml2YXRlS2V5XCIpLm9jdHN0cigpKX0pO2UuRW5jcnlwdGVkUHJpdmF0ZUtleT11O3ZhciBoPW4uZGVmaW5lKFwiRFNBUHJpdmF0ZUtleVwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwicFwiKS5pbnQoKSx0aGlzLmtleShcInFcIikuaW50KCksdGhpcy5rZXkoXCJnXCIpLmludCgpLHRoaXMua2V5KFwicHViX2tleVwiKS5pbnQoKSx0aGlzLmtleShcInByaXZfa2V5XCIpLmludCgpKX0pO2UuRFNBUHJpdmF0ZUtleT1oLGUuRFNBcGFyYW09bi5kZWZpbmUoXCJEU0FwYXJhbVwiLGZ1bmN0aW9uKCl7dGhpcy5pbnQoKX0pO3ZhciBjPW4uZGVmaW5lKFwiRUNQcml2YXRlS2V5XCIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcInZlcnNpb25cIikuaW50KCksdGhpcy5rZXkoXCJwcml2YXRlS2V5XCIpLm9jdHN0cigpLHRoaXMua2V5KFwicGFyYW1ldGVyc1wiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShkKSx0aGlzLmtleShcInB1YmxpY0tleVwiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpKX0pO2UuRUNQcml2YXRlS2V5PWM7dmFyIGQ9bi5kZWZpbmUoXCJFQ1BhcmFtZXRlcnNcIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSk7ZS5zaWduYXR1cmU9bi5kZWZpbmUoXCJzaWduYXR1cmVcIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwiclwiKS5pbnQoKSx0aGlzLmtleShcInNcIikuaW50KCkpfSl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7dmFyIG49L1Byb2MtVHlwZTogNCxFTkNSWVBURURcXHI/XFxuREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxccj9cXG5cXHI/XFxuKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXHI/XFxuL20saT0vXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4vbSxvPS9eLS0tLS1CRUdJTiAoLiopIEtFWS0tLS0tXFxyP1xcbihbMC05QS16XFxuXFxyXFwrXFwvXFw9XSspXFxyP1xcbi0tLS0tRU5EIFxcMSBLRVktLS0tLSQvbSxhPXIoMTQ4KSxmPXIoMjE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxyKXt2YXIgcyx1PXQudG9TdHJpbmcoKSxoPXUubWF0Y2gobik7aWYoaCl7dmFyIGM9XCJhZXNcIitoWzFdLGQ9bmV3IGUoaFsyXSxcImhleFwiKSxsPW5ldyBlKGhbM10ucmVwbGFjZSgvXFxyP1xcbi9nLFwiXCIpLFwiYmFzZTY0XCIpLHA9YShyLGQuc2xpY2UoMCw4KSxwYXJzZUludChoWzFdLDEwKSkua2V5LGI9W10sdj1mLmNyZWF0ZURlY2lwaGVyaXYoYyxwLGQpO2IucHVzaCh2LnVwZGF0ZShsKSksYi5wdXNoKHYuZmluYWwoKSkscz1lLmNvbmNhdChiKX1lbHNle3ZhciB5PXUubWF0Y2gobyk7cz1uZXcgZSh5WzJdLnJlcGxhY2UoL1xccj9cXG4vZyxcIlwiKSxcImJhc2U2NFwiKX12YXIgbT11Lm1hdGNoKGkpWzFdK1wiIEtFWVwiO3JldHVybnt0YWc6bSxkYXRhOnN9fX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5ib2R5PWUsdGhpcy5kZWNvZGVycz17fSx0aGlzLmVuY29kZXJzPXt9fXZhciBpPXIoMTAwKSxvPXIoMiksYT1lO2EuZGVmaW5lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBuKHQsZSl9LG4ucHJvdG90eXBlLl9jcmVhdGVOYW1lZD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT1yKDI1MSkucnVuSW5UaGlzQ29udGV4dChcIihmdW5jdGlvbiBcIit0aGlzLm5hbWUrXCIoZW50aXR5KSB7XFxuICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG59KVwiKX1jYXRjaCh0KXtlPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXROYW1lZCh0KX19cmV0dXJuIG8oZSx0KSxlLnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUpfSxuZXcgZSh0aGlzKX0sbi5wcm90b3R5cGUuX2dldERlY29kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8XCJkZXJcIix0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5kZWNvZGVyc1t0XT10aGlzLl9jcmVhdGVOYW1lZChpLmRlY29kZXJzW3RdKSksdGhpcy5kZWNvZGVyc1t0XX0sbi5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlKS5kZWNvZGUodCxyKX0sbi5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8XCJkZXJcIix0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5lbmNvZGVyc1t0XT10aGlzLl9jcmVhdGVOYW1lZChpLmVuY29kZXJzW3RdKSksdGhpcy5lbmNvZGVyc1t0XX0sbi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlKS5lbmNvZGUodCxyKX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9e307dGhpcy5fYmFzZVN0YXRlPXIsci5lbmM9dCxyLnBhcmVudD1lfHxudWxsLHIuY2hpbGRyZW49bnVsbCxyLnRhZz1udWxsLHIuYXJncz1udWxsLHIucmV2ZXJzZUFyZ3M9bnVsbCxyLmNob2ljZT1udWxsLHIub3B0aW9uYWw9ITEsci5hbnk9ITEsci5vYmo9ITEsci51c2U9bnVsbCxyLnVzZURlY29kZXI9bnVsbCxyLmtleT1udWxsLHIuZGVmYXVsdD1udWxsLHIuZXhwbGljaXQ9bnVsbCxyLmltcGxpY2l0PW51bGwsci5jb250YWlucz1udWxsLHIucGFyZW50fHwoci5jaGlsZHJlbj1bXSx0aGlzLl93cmFwKCkpfXZhciBpPXIoNjgpLlJlcG9ydGVyLG89cig2OCkuRW5jb2RlckJ1ZmZlcixhPXIoNjgpLkRlY29kZXJCdWZmZXIsZj1yKDUzOCkscz1bXCJzZXFcIixcInNlcW9mXCIsXCJzZXRcIixcInNldG9mXCIsXCJvYmppZFwiLFwiYm9vbFwiLFwiZ2VudGltZVwiLFwidXRjdGltZVwiLFwibnVsbF9cIixcImVudW1cIixcImludFwiLFwiYml0c3RyXCIsXCJibXBzdHJcIixcImNoYXJzdHJcIixcImdlbnN0clwiLFwiZ3JhcGhzdHJcIixcImlhNXN0clwiLFwiaXNvNjQ2c3RyXCIsXCJudW1zdHJcIixcIm9jdHN0clwiLFwicHJpbnRzdHJcIixcInQ2MXN0clwiLFwidW5pc3RyXCIsXCJ1dGY4c3RyXCIsXCJ2aWRlb3N0clwiXSx1PVtcImtleVwiLFwib2JqXCIsXCJ1c2VcIixcIm9wdGlvbmFsXCIsXCJleHBsaWNpdFwiLFwiaW1wbGljaXRcIixcImRlZlwiLFwiY2hvaWNlXCIsXCJhbnlcIixcImNvbnRhaW5zXCJdLmNvbmNhdChzKSxoPVtcIl9wZWVrVGFnXCIsXCJfZGVjb2RlVGFnXCIsXCJfdXNlXCIsXCJfZGVjb2RlU3RyXCIsXCJfZGVjb2RlT2JqaWRcIixcIl9kZWNvZGVUaW1lXCIsXCJfZGVjb2RlTnVsbFwiLFwiX2RlY29kZUludFwiLFwiX2RlY29kZUJvb2xcIixcIl9kZWNvZGVMaXN0XCIsXCJfZW5jb2RlQ29tcG9zaXRlXCIsXCJfZW5jb2RlU3RyXCIsXCJfZW5jb2RlT2JqaWRcIixcIl9lbmNvZGVUaW1lXCIsXCJfZW5jb2RlTnVsbFwiLFwiX2VuY29kZUludFwiLFwiX2VuY29kZUJvb2xcIl07dC5leHBvcnRzPW47dmFyIGM9W1wiZW5jXCIsXCJwYXJlbnRcIixcImNoaWxkcmVuXCIsXCJ0YWdcIixcImFyZ3NcIixcInJldmVyc2VBcmdzXCIsXCJjaG9pY2VcIixcIm9wdGlvbmFsXCIsXCJhbnlcIixcIm9ialwiLFwidXNlXCIsXCJhbHRlcmVkVXNlXCIsXCJrZXlcIixcImRlZmF1bHRcIixcImV4cGxpY2l0XCIsXCJpbXBsaWNpdFwiLFwiY29udGFpbnNcIl07bi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9iYXNlU3RhdGUsZT17fTtjLmZvckVhY2goZnVuY3Rpb24ocil7ZVtyXT10W3JdfSk7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IoZS5wYXJlbnQpO3JldHVybiByLl9iYXNlU3RhdGU9ZSxyfSxuLnByb3RvdHlwZS5fd3JhcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTt1LmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXT1mdW5jdGlvbigpe3ZhciByPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiB0LmNoaWxkcmVuLnB1c2gocikscltlXS5hcHBseShyLGFyZ3VtZW50cyl9fSx0aGlzKX0sbi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO2YobnVsbD09PWUucGFyZW50KSx0LmNhbGwodGhpcyksZS5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5fYmFzZVN0YXRlLnBhcmVudD09PXRoaXN9LHRoaXMpLGYuZXF1YWwoZS5jaGlsZHJlbi5sZW5ndGgsMSxcIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZFwiKX0sbi5wcm90b3R5cGUuX3VzZUFyZ3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlLHI9dC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTt0PXQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEodCBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpfSx0aGlzKSwwIT09ci5sZW5ndGgmJihmKG51bGw9PT1lLmNoaWxkcmVuKSxlLmNoaWxkcmVuPXIsci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT10Lmxlbmd0aCYmKGYobnVsbD09PWUuYXJncyksZS5hcmdzPXQsZS5yZXZlcnNlQXJncz10Lm1hcChmdW5jdGlvbih0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgdHx8dC5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gdDt2YXIgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtyPT0oMHxyKSYmKHJ8PTApO3ZhciBuPXRbcl07ZVtuXT1yfSksZX0pKX0saC5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO3Rocm93IG5ldyBFcnJvcih0K1wiIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6IFwiK2UuZW5jKX19KSxzLmZvckVhY2goZnVuY3Rpb24odCl7bi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9iYXNlU3RhdGUscj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBmKG51bGw9PT1lLnRhZyksZS50YWc9dCx0aGlzLl91c2VBcmdzKHIpLHRoaXN9fSksbi5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS51c2UpLGUudXNlPXQsdGhpc30sbi5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIHQub3B0aW9uYWw9ITAsdGhpc30sbi5wcm90b3R5cGUuZGVmPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5kZWZhdWx0KSxlLmRlZmF1bHQ9dCxlLm9wdGlvbmFsPSEwLHRoaXN9LG4ucHJvdG90eXBlLmV4cGxpY2l0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5leHBsaWNpdCYmbnVsbD09PWUuaW1wbGljaXQpLGUuZXhwbGljaXQ9dCx0aGlzfSxuLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGYobnVsbD09PWUuZXhwbGljaXQmJm51bGw9PT1lLmltcGxpY2l0KSxlLmltcGxpY2l0PXQsdGhpc30sbi5wcm90b3R5cGUub2JqPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYmFzZVN0YXRlLGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gdC5vYmo9ITAsMCE9PWUubGVuZ3RoJiZ0aGlzLl91c2VBcmdzKGUpLHRoaXN9LG4ucHJvdG90eXBlLmtleT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGYobnVsbD09PWUua2V5KSxlLmtleT10LHRoaXN9LG4ucHJvdG90eXBlLmFueT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gdC5hbnk9ITAsdGhpc30sbi5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5jaG9pY2UpLGUuY2hvaWNlPXQsdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSksdGhpc30sbi5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBmKG51bGw9PT1lLnVzZSksZS5jb250YWlucz10LHRoaXN9LG4ucHJvdG90eXBlLl9kZWNvZGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PXIucGFyZW50KXJldHVybiB0LndyYXBSZXN1bHQoci5jaGlsZHJlblswXS5fZGVjb2RlKHQsZSkpO3ZhciBuPXIuZGVmYXVsdCxpPSEwLG89bnVsbDtpZihudWxsIT09ci5rZXkmJihvPXQuZW50ZXJLZXkoci5rZXkpKSxyLm9wdGlvbmFsKXt2YXIgZj1udWxsO2lmKG51bGwhPT1yLmV4cGxpY2l0P2Y9ci5leHBsaWNpdDpudWxsIT09ci5pbXBsaWNpdD9mPXIuaW1wbGljaXQ6bnVsbCE9PXIudGFnJiYoZj1yLnRhZyksbnVsbCE9PWZ8fHIuYW55KXtpZihpPXRoaXMuX3BlZWtUYWcodCxmLHIuYW55KSx0LmlzRXJyb3IoaSkpcmV0dXJuIGl9ZWxzZXt2YXIgcz10LnNhdmUoKTt0cnl7bnVsbD09PXIuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoci50YWcsdCxlKTp0aGlzLl9kZWNvZGVDaG9pY2UodCxlKSxpPSEwfWNhdGNoKHQpe2k9ITF9dC5yZXN0b3JlKHMpfX12YXIgdTtpZihyLm9iaiYmaSYmKHU9dC5lbnRlck9iamVjdCgpKSxpKXtpZihudWxsIT09ci5leHBsaWNpdCl7dmFyIGg9dGhpcy5fZGVjb2RlVGFnKHQsci5leHBsaWNpdCk7aWYodC5pc0Vycm9yKGgpKXJldHVybiBoO3Q9aH12YXIgYz10Lm9mZnNldDtpZihudWxsPT09ci51c2UmJm51bGw9PT1yLmNob2ljZSl7aWYoci5hbnkpdmFyIHM9dC5zYXZlKCk7dmFyIGQ9dGhpcy5fZGVjb2RlVGFnKHQsbnVsbCE9PXIuaW1wbGljaXQ/ci5pbXBsaWNpdDpyLnRhZyxyLmFueSk7aWYodC5pc0Vycm9yKGQpKXJldHVybiBkO3IuYW55P249dC5yYXcocyk6dD1kfWlmKGUmJmUudHJhY2smJm51bGwhPT1yLnRhZyYmZS50cmFjayh0LnBhdGgoKSxjLHQubGVuZ3RoLFwidGFnZ2VkXCIpLGUmJmUudHJhY2smJm51bGwhPT1yLnRhZyYmZS50cmFjayh0LnBhdGgoKSx0Lm9mZnNldCx0Lmxlbmd0aCxcImNvbnRlbnRcIiksbj1yLmFueT9uOm51bGw9PT1yLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKHIudGFnLHQsZSk6dGhpcy5fZGVjb2RlQ2hvaWNlKHQsZSksdC5pc0Vycm9yKG4pKXJldHVybiBuO2lmKHIuYW55fHxudWxsIT09ci5jaG9pY2V8fG51bGw9PT1yLmNoaWxkcmVufHxyLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24ocil7ci5fZGVjb2RlKHQsZSl9KSxyLmNvbnRhaW5zJiYoXCJvY3RzdHJcIj09PXIudGFnfHxcImJpdHN0clwiPT09ci50YWcpKXt2YXIgbD1uZXcgYShuKTtuPXRoaXMuX2dldFVzZShyLmNvbnRhaW5zLHQuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKGwsZSl9fXJldHVybiByLm9iaiYmaSYmKG49dC5sZWF2ZU9iamVjdCh1KSksbnVsbD09PXIua2V5fHxudWxsPT09biYmaSE9PSEwP251bGwhPT1vJiZ0LmV4aXRLZXkobyk6dC5sZWF2ZUtleShvLHIua2V5LG4pLG59LG4ucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuXCJzZXFcIj09PXR8fFwic2V0XCI9PT10P251bGw6XCJzZXFvZlwiPT09dHx8XCJzZXRvZlwiPT09dD90aGlzLl9kZWNvZGVMaXN0KGUsdCxuLmFyZ3NbMF0scik6L3N0ciQvLnRlc3QodCk/dGhpcy5fZGVjb2RlU3RyKGUsdCxyKTpcIm9iamlkXCI9PT10JiZuLmFyZ3M/dGhpcy5fZGVjb2RlT2JqaWQoZSxuLmFyZ3NbMF0sbi5hcmdzWzFdLHIpOlwib2JqaWRcIj09PXQ/dGhpcy5fZGVjb2RlT2JqaWQoZSxudWxsLG51bGwscik6XCJnZW50aW1lXCI9PT10fHxcInV0Y3RpbWVcIj09PXQ/dGhpcy5fZGVjb2RlVGltZShlLHQscik6XCJudWxsX1wiPT09dD90aGlzLl9kZWNvZGVOdWxsKGUscik6XCJib29sXCI9PT10P3RoaXMuX2RlY29kZUJvb2woZSxyKTpcImludFwiPT09dHx8XCJlbnVtXCI9PT10P3RoaXMuX2RlY29kZUludChlLG4uYXJncyYmbi5hcmdzWzBdLHIpOm51bGwhPT1uLnVzZT90aGlzLl9nZXRVc2Uobi51c2UsZS5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoZSxyKTplLmVycm9yKFwidW5rbm93biB0YWc6IFwiK3QpfSxuLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fYmFzZVN0YXRlO3JldHVybiByLnVzZURlY29kZXI9dGhpcy5fdXNlKHQsZSksZihudWxsPT09ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50KSxyLnVzZURlY29kZXI9ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF0sci5pbXBsaWNpdCE9PXIudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0JiYoci51c2VEZWNvZGVyPXIudXNlRGVjb2Rlci5jbG9uZSgpLHIudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0PXIuaW1wbGljaXQpLHIudXNlRGVjb2Rlcn0sbi5wcm90b3R5cGUuX2RlY29kZUNob2ljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZSxuPW51bGwsaT0hMTtyZXR1cm4gT2JqZWN0LmtleXMoci5jaG9pY2UpLnNvbWUoZnVuY3Rpb24obyl7dmFyIGE9dC5zYXZlKCksZj1yLmNob2ljZVtvXTt0cnl7dmFyIHM9Zi5fZGVjb2RlKHQsZSk7aWYodC5pc0Vycm9yKHMpKXJldHVybiExO249e3R5cGU6byx2YWx1ZTpzfSxpPSEwfWNhdGNoKGUpe3JldHVybiB0LnJlc3RvcmUoYSksITF9cmV0dXJuITB9LHRoaXMpLGk/bjp0LmVycm9yKFwiQ2hvaWNlIG5vdCBtYXRjaGVkXCIpfSxuLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8odCx0aGlzLnJlcG9ydGVyKX0sbi5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1uLmRlZmF1bHR8fG4uZGVmYXVsdCE9PXQpe3ZhciBpPXRoaXMuX2VuY29kZVZhbHVlKHQsZSxyKTtpZih2b2lkIDAhPT1pJiYhdGhpcy5fc2tpcERlZmF1bHQoaSxlLHIpKXJldHVybiBpfX0sbi5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PW4ucGFyZW50KXJldHVybiBuLmNoaWxkcmVuWzBdLl9lbmNvZGUodCxlfHxuZXcgaSk7dmFyIG89bnVsbDtpZih0aGlzLnJlcG9ydGVyPWUsbi5vcHRpb25hbCYmdm9pZCAwPT09dCl7aWYobnVsbD09PW4uZGVmYXVsdClyZXR1cm47dD1uLmRlZmF1bHR9dmFyIGE9bnVsbCxmPSExO2lmKG4uYW55KW89dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0KTtlbHNlIGlmKG4uY2hvaWNlKW89dGhpcy5fZW5jb2RlQ2hvaWNlKHQsZSk7ZWxzZSBpZihuLmNvbnRhaW5zKWE9dGhpcy5fZ2V0VXNlKG4uY29udGFpbnMscikuX2VuY29kZSh0LGUpLGY9ITA7ZWxzZSBpZihuLmNoaWxkcmVuKWE9bi5jaGlsZHJlbi5tYXAoZnVuY3Rpb24ocil7aWYoXCJudWxsX1wiPT09ci5fYmFzZVN0YXRlLnRhZylyZXR1cm4gci5fZW5jb2RlKG51bGwsZSx0KTtpZihudWxsPT09ci5fYmFzZVN0YXRlLmtleSlyZXR1cm4gZS5lcnJvcihcIkNoaWxkIHNob3VsZCBoYXZlIGEga2V5XCIpO3ZhciBuPWUuZW50ZXJLZXkoci5fYmFzZVN0YXRlLmtleSk7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIGUuZXJyb3IoXCJDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3RcIik7dmFyIGk9ci5fZW5jb2RlKHRbci5fYmFzZVN0YXRlLmtleV0sZSx0KTtyZXR1cm4gZS5sZWF2ZUtleShuKSxpfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxhPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoYSk7ZWxzZSBpZihcInNlcW9mXCI9PT1uLnRhZ3x8XCJzZXRvZlwiPT09bi50YWcpe2lmKCFuLmFyZ3N8fDEhPT1uLmFyZ3MubGVuZ3RoKXJldHVybiBlLmVycm9yKFwiVG9vIG1hbnkgYXJncyBmb3IgOiBcIituLnRhZyk7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuZXJyb3IoXCJzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5XCIpO3ZhciBzPXRoaXMuY2xvbmUoKTtzLl9iYXNlU3RhdGUuaW1wbGljaXQ9bnVsbCxhPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodC5tYXAoZnVuY3Rpb24ocil7dmFyIG49dGhpcy5fYmFzZVN0YXRlO3JldHVybiB0aGlzLl9nZXRVc2Uobi5hcmdzWzBdLHQpLl9lbmNvZGUocixlKX0scykpfWVsc2UgbnVsbCE9PW4udXNlP289dGhpcy5fZ2V0VXNlKG4udXNlLHIpLl9lbmNvZGUodCxlKTooYT10aGlzLl9lbmNvZGVQcmltaXRpdmUobi50YWcsdCksZj0hMCk7dmFyIG87aWYoIW4uYW55JiZudWxsPT09bi5jaG9pY2Upe3ZhciB1PW51bGwhPT1uLmltcGxpY2l0P24uaW1wbGljaXQ6bi50YWcsaD1udWxsPT09bi5pbXBsaWNpdD9cInVuaXZlcnNhbFwiOlwiY29udGV4dFwiO251bGw9PT11P251bGw9PT1uLnVzZSYmZS5lcnJvcihcIlRhZyBjb3VsZCBiZSBvbW1pdGVkIG9ubHkgZm9yIC51c2UoKVwiKTpudWxsPT09bi51c2UmJihvPXRoaXMuX2VuY29kZUNvbXBvc2l0ZSh1LGYsaCxhKSl9cmV0dXJuIG51bGwhPT1uLmV4cGxpY2l0JiYobz10aGlzLl9lbmNvZGVDb21wb3NpdGUobi5leHBsaWNpdCwhMSxcImNvbnRleHRcIixvKSksb30sbi5wcm90b3R5cGUuX2VuY29kZUNob2ljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZSxuPXIuY2hvaWNlW3QudHlwZV07cmV0dXJuIG58fGYoITEsdC50eXBlK1wiIG5vdCBmb3VuZCBpbiBcIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhyLmNob2ljZSkpKSxuLl9lbmNvZGUodC52YWx1ZSxlKX0sbi5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTtpZigvc3RyJC8udGVzdCh0KSlyZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGUsdCk7aWYoXCJvYmppZFwiPT09dCYmci5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChlLHIucmV2ZXJzZUFyZ3NbMF0sci5hcmdzWzFdKTtpZihcIm9iamlkXCI9PT10KXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChlLG51bGwsbnVsbCk7aWYoXCJnZW50aW1lXCI9PT10fHxcInV0Y3RpbWVcIj09PXQpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZSx0KTtpZihcIm51bGxfXCI9PT10KXJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7aWYoXCJpbnRcIj09PXR8fFwiZW51bVwiPT09dClyZXR1cm4gdGhpcy5fZW5jb2RlSW50KGUsci5hcmdzJiZyLnJldmVyc2VBcmdzWzBdKTtpZihcImJvb2xcIj09PXQpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZSk7dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgdGFnOiBcIit0KX0sbi5wcm90b3R5cGUuX2lzTnVtc3RyPWZ1bmN0aW9uKHQpe3JldHVybi9eWzAtOSBdKiQvLnRlc3QodCl9LG4ucHJvdG90eXBlLl9pc1ByaW50c3RyPWZ1bmN0aW9uKHQpe3JldHVybi9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHQpfX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5fcmVwb3J0ZXJTdGF0ZT17b2JqOm51bGwscGF0aDpbXSxvcHRpb25zOnR8fHt9LGVycm9yczpbXX19ZnVuY3Rpb24gaSh0LGUpe3RoaXMucGF0aD10LHRoaXMucmV0aHJvdyhlKX12YXIgbz1yKDIpO2UuUmVwb3J0ZXI9bixuLnByb3RvdHlwZS5pc0Vycm9yPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgaX0sbi5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajp0Lm9iaixwYXRoTGVuOnQucGF0aC5sZW5ndGh9fSxuLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7ZS5vYmo9dC5vYmosZS5wYXRoPWUucGF0aC5zbGljZSgwLHQucGF0aExlbil9LG4ucHJvdG90eXBlLmVudGVyS2V5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaCh0KX0sbi5wcm90b3R5cGUuZXhpdEtleT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yZXBvcnRlclN0YXRlO2UucGF0aD1lLnBhdGguc2xpY2UoMCx0LTEpfSxuLnByb3RvdHlwZS5sZWF2ZUtleT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0aGlzLmV4aXRLZXkodCksbnVsbCE9PW4ub2JqJiYobi5vYmpbZV09cil9LG4ucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oXCIvXCIpfSxuLnByb3RvdHlwZS5lbnRlck9iamVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlcG9ydGVyU3RhdGUsZT10Lm9iajtyZXR1cm4gdC5vYmo9e30sZX0sbi5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxyPWUub2JqO3JldHVybiBlLm9iaj10LHJ9LG4ucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxuPXQgaW5zdGFuY2VvZiBpO2lmKGU9bj90Om5ldyBpKHIucGF0aC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuXCJbXCIrSlNPTi5zdHJpbmdpZnkodCkrXCJdXCJ9KS5qb2luKFwiXCIpLHQubWVzc2FnZXx8dCx0LnN0YWNrKSwhci5vcHRpb25zLnBhcnRpYWwpdGhyb3cgZTtyZXR1cm4gbnx8ci5lcnJvcnMucHVzaChlKSxlfSxuLnByb3RvdHlwZS53cmFwUmVzdWx0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJuIGUub3B0aW9ucy5wYXJ0aWFsP3tyZXN1bHQ6dGhpcy5pc0Vycm9yKHQpP251bGw6dCxlcnJvcnM6ZS5lcnJvcnN9OnR9LG8oaSxFcnJvciksaS5wcm90b3R5cGUucmV0aHJvdz1mdW5jdGlvbih0KXtpZih0aGlzLm1lc3NhZ2U9dCtcIiBhdDogXCIrKHRoaXMucGF0aHx8XCIoc2hhbGxvdylcIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsaSksIXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKHQpe3RoaXMuc3RhY2s9dC5zdGFja31yZXR1cm4gdGhpc319LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDIxNSk7ZS50YWdDbGFzcz17MDpcInVuaXZlcnNhbFwiLDE6XCJhcHBsaWNhdGlvblwiLDI6XCJjb250ZXh0XCIsMzpcInByaXZhdGVcIn0sZS50YWdDbGFzc0J5TmFtZT1uLl9yZXZlcnNlKGUudGFnQ2xhc3MpLGUudGFnPXswOlwiZW5kXCIsMTpcImJvb2xcIiwyOlwiaW50XCIsMzpcImJpdHN0clwiLDQ6XCJvY3RzdHJcIiw1OlwibnVsbF9cIiw2Olwib2JqaWRcIiw3Olwib2JqRGVzY1wiLDg6XCJleHRlcm5hbFwiLDk6XCJyZWFsXCIsMTA6XCJlbnVtXCIsMTE6XCJlbWJlZFwiLDEyOlwidXRmOHN0clwiLDEzOlwicmVsYXRpdmVPaWRcIiwxNjpcInNlcVwiLDE3Olwic2V0XCIsMTg6XCJudW1zdHJcIiwxOTpcInByaW50c3RyXCIsMjA6XCJ0NjFzdHJcIixcbjIxOlwidmlkZW9zdHJcIiwyMjpcImlhNXN0clwiLDIzOlwidXRjdGltZVwiLDI0OlwiZ2VudGltZVwiLDI1OlwiZ3JhcGhzdHJcIiwyNjpcImlzbzY0NnN0clwiLDI3OlwiZ2Vuc3RyXCIsMjg6XCJ1bmlzdHJcIiwyOTpcImNoYXJzdHJcIiwzMDpcImJtcHN0clwifSxlLnRhZ0J5TmFtZT1uLl9yZXZlcnNlKGUudGFnKX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi5kZXI9cigyMTYpLG4ucGVtPXIoNTM1KX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7YS5jYWxsKHRoaXMsdCksdGhpcy5lbmM9XCJwZW1cIn12YXIgaT1yKDIpLG89cigxKS5CdWZmZXIsYT1yKDIxNik7aShuLGEpLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLmRlY29kZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKSxuPWUubGFiZWwudG9VcHBlckNhc2UoKSxpPS9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLyxmPS0xLHM9LTEsdT0wO3U8ci5sZW5ndGg7dSsrKXt2YXIgaD1yW3VdLm1hdGNoKGkpO2lmKG51bGwhPT1oJiZoWzJdPT09bil7aWYoZiE9PS0xKXtpZihcIkVORFwiIT09aFsxXSlicmVhaztzPXU7YnJlYWt9aWYoXCJCRUdJTlwiIT09aFsxXSlicmVhaztmPXV9fWlmKGY9PT0tMXx8cz09PS0xKXRocm93IG5ldyBFcnJvcihcIlBFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6IFwiK24pO3ZhciBjPXIuc2xpY2UoZisxLHMpLmpvaW4oXCJcIik7Yy5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSxcIlwiKTt2YXIgZD1uZXcgbyhjLFwiYmFzZTY0XCIpO3JldHVybiBhLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLGQsZSl9fSxmdW5jdGlvbih0LGUscil7dmFyIG49ZTtuLmRlcj1yKDIxNyksbi5wZW09cig1MzcpfSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXtvLmNhbGwodGhpcyx0KSx0aGlzLmVuYz1cInBlbVwifXZhciBpPXIoMiksbz1yKDIxNyk7aShuLG8pLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1vLnByb3RvdHlwZS5lbmNvZGUuY2FsbCh0aGlzLHQpLG49ci50b1N0cmluZyhcImJhc2U2NFwiKSxpPVtcIi0tLS0tQkVHSU4gXCIrZS5sYWJlbCtcIi0tLS0tXCJdLGE9MDthPG4ubGVuZ3RoO2ErPTY0KWkucHVzaChuLnNsaWNlKGEsYSs2NCkpO3JldHVybiBpLnB1c2goXCItLS0tLUVORCBcIitlLmxhYmVsK1wiLS0tLS1cIiksaS5qb2luKFwiXFxuXCIpfX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiByKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGV8fFwiQXNzZXJ0aW9uIGZhaWxlZFwiKX10LmV4cG9ydHM9cixyLmVxdWFsPWZ1bmN0aW9uKHQsZSxyKXtpZih0IT1lKXRocm93IG5ldyBFcnJvcihyfHxcIkFzc2VydGlvbiBmYWlsZWQ6IFwiK3QrXCIgIT0gXCIrZSl9fSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxyLG8pe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8odS5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBpLHRoaXMuX2xhc3Q9dm9pZCAwLHRoaXMuX2NpcGhlcj1uZXcgcy5BRVMociksdGhpcy5fcHJldj1uZXcgdChvLmxlbmd0aCksby5jb3B5KHRoaXMuX3ByZXYpLHRoaXMuX21vZGU9ZSx2b2lkKHRoaXMuX2F1dG9wYWRkaW5nPSEwKSk6bmV3IG4oZSxyLG8pfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk/dm9pZCh0aGlzLmNhY2hlPW5ldyB0KFwiXCIpKTpuZXcgaX1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT10WzE1XSxyPS0xOysrcjxlOylpZih0W3IrKDE2LWUpXSE9PWUpdGhyb3cgbmV3IEVycm9yKFwidW5hYmxlIHRvIGRlY3J5cHQgZGF0YVwiKTtpZigxNiE9PWUpcmV0dXJuIHQuc2xpY2UoMCwxNi1lKX1mdW5jdGlvbiBhKGUscixpKXt2YXIgbz1jW2UudG9Mb3dlckNhc2UoKV07aWYoIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgc3VpdGUgdHlwZVwiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgaSYmKGk9bmV3IHQoaSkpLFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1uZXcgdChyKSksci5sZW5ndGghPT1vLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGtleSBsZW5ndGggXCIrci5sZW5ndGgpO2lmKGkubGVuZ3RoIT09by5pdil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBpdiBsZW5ndGggXCIraS5sZW5ndGgpO3JldHVyblwic3RyZWFtXCI9PT1vLnR5cGU/bmV3IGQoYltvLm1vZGVdLHIsaSwhMCk6XCJhdXRoXCI9PT1vLnR5cGU/bmV3IGwoYltvLm1vZGVdLHIsaSwhMCk6bmV3IG4oYltvLm1vZGVdLHIsaSl9ZnVuY3Rpb24gZih0LGUpe3ZhciByPWNbdC50b0xvd2VyQ2FzZSgpXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO3ZhciBuPXAoZSwhMSxyLmtleSxyLml2KTtyZXR1cm4gYSh0LG4ua2V5LG4uaXYpfXZhciBzPXIoMTAxKSx1PXIoMTAzKSxoPXIoMiksYz1yKDE0NyksZD1yKDIyNiksbD1yKDIxOCkscD1yKDE0OCk7aChuLHUpLG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGUuYWRkKGUpO2Zvcih2YXIgcixuLGk9W107cj10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOyluPXRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLHIpLGkucHVzaChuKTtyZXR1cm4gdC5jb25jYXQoaSl9LG4ucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIG8odGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsdCkpO2lmKHQpdGhyb3cgbmV3IEVycm9yKFwiZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoXCIpfSxuLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISF0LHRoaXN9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPXQuY29uY2F0KFt0aGlzLmNhY2hlLGVdKX0saS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlO2lmKHQpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiBlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxlfWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiBlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSxlO3JldHVybiBudWxsfSxpLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfTt2YXIgYj17RUNCOnIoMjI0KSxDQkM6cigyMjApLENGQjpyKDIyMSksQ0ZCODpyKDIyMyksQ0ZCMTpyKDIyMiksT0ZCOnIoMjI1KSxDVFI6cigxMDIpLEdDTTpyKDEwMil9O2UuY3JlYXRlRGVjaXBoZXI9ZixlLmNyZWF0ZURlY2lwaGVyaXY9YX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihlLHIsbyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuPyhzLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGksdGhpcy5fY2lwaGVyPW5ldyBmLkFFUyhyKSx0aGlzLl9wcmV2PW5ldyB0KG8ubGVuZ3RoKSxvLmNvcHkodGhpcy5fcHJldiksdGhpcy5fbW9kZT1lLHZvaWQodGhpcy5fYXV0b3BhZGRpbmc9ITApKTpuZXcgbihlLHIsbyl9ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT92b2lkKHRoaXMuY2FjaGU9bmV3IHQoXCJcIikpOm5ldyBpfWZ1bmN0aW9uIG8oZSxyLGkpe3ZhciBvPWhbZS50b0xvd2VyQ2FzZSgpXTtpZighbyl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpJiYoaT1uZXcgdChpKSksXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW5ldyB0KHIpKSxyLmxlbmd0aCE9PW8ua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQga2V5IGxlbmd0aCBcIityLmxlbmd0aCk7aWYoaS5sZW5ndGghPT1vLml2KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGl2IGxlbmd0aCBcIitpLmxlbmd0aCk7cmV0dXJuXCJzdHJlYW1cIj09PW8udHlwZT9uZXcgZChwW28ubW9kZV0scixpKTpcImF1dGhcIj09PW8udHlwZT9uZXcgbChwW28ubW9kZV0scixpKTpuZXcgbihwW28ubW9kZV0scixpKX1mdW5jdGlvbiBhKHQsZSl7dmFyIHI9aFt0LnRvTG93ZXJDYXNlKCldO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7dmFyIG49YyhlLCExLHIua2V5LHIuaXYpO3JldHVybiBvKHQsbi5rZXksbi5pdil9dmFyIGY9cigxMDEpLHM9cigxMDMpLHU9cigyKSxoPXIoMTQ3KSxjPXIoMTQ4KSxkPXIoMjI2KSxsPXIoMjE4KTt1KG4scyksbi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLl9jYWNoZS5hZGQoZSk7Zm9yKHZhciByLG4saT1bXTtyPXRoaXMuX2NhY2hlLmdldCgpOyluPXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHIpLGkucHVzaChuKTtyZXR1cm4gdC5jb25jYXQoaSl9LG4ucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIHQ9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCksdGhpcy5fY2lwaGVyLnNjcnViKCksdDtpZihcIjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwXCIhPT10LnRvU3RyaW5nKFwiaGV4XCIpKXRocm93IHRoaXMuX2NpcGhlci5zY3J1YigpLG5ldyBFcnJvcihcImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aFwiKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhdCx0aGlzfSxpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5jYWNoZT10LmNvbmNhdChbdGhpcy5jYWNoZSxlXSl9LGkucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE1KXt2YXIgdD10aGlzLmNhY2hlLnNsaWNlKDAsMTYpO3JldHVybiB0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHR9cmV0dXJuIG51bGx9LGkucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTE2LXRoaXMuY2FjaGUubGVuZ3RoLHI9bmV3IHQoZSksbj0tMTsrK248ZTspci53cml0ZVVJbnQ4KGUsbik7dmFyIGk9dC5jb25jYXQoW3RoaXMuY2FjaGUscl0pO3JldHVybiBpfTt2YXIgcD17RUNCOnIoMjI0KSxDQkM6cigyMjApLENGQjpyKDIyMSksQ0ZCODpyKDIyMyksQ0ZCMTpyKDIyMiksT0ZCOnIoMjI1KSxDVFI6cigxMDIpLEdDTTpyKDEwMil9O2UuY3JlYXRlQ2lwaGVyaXY9byxlLmNyZWF0ZUNpcGhlcj1hfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKHQpe3RoaXMuaD10LHRoaXMuc3RhdGU9bmV3IGUoMTYpLHRoaXMuc3RhdGUuZmlsbCgwKSx0aGlzLmNhY2hlPW5ldyBlKFwiXCIpfWZ1bmN0aW9uIG4odCl7cmV0dXJuW3QucmVhZFVJbnQzMkJFKDApLHQucmVhZFVJbnQzMkJFKDQpLHQucmVhZFVJbnQzMkJFKDgpLHQucmVhZFVJbnQzMkJFKDEyKV19ZnVuY3Rpb24gaSh0KXt0PXQubWFwKG8pO3ZhciByPW5ldyBlKDE2KTtyZXR1cm4gci53cml0ZVVJbnQzMkJFKHRbMF0sMCksci53cml0ZVVJbnQzMkJFKHRbMV0sNCksci53cml0ZVVJbnQzMkJFKHRbMl0sOCksci53cml0ZVVJbnQzMkJFKHRbM10sMTIpLHJ9ZnVuY3Rpb24gbyh0KXt2YXIgZSxyO3JldHVybiBlPXQ+c3x8dDwwPyhyPU1hdGguYWJzKHQpJXMsdDwwP3MtcjpyKTp0fWZ1bmN0aW9uIGEodCxlKXtyZXR1cm5bdFswXV5lWzBdLHRbMV1eZVsxXSx0WzJdXmVbMl0sdFszXV5lWzNdXX12YXIgZj1uZXcgZSgxNik7Zi5maWxsKDApLHQuZXhwb3J0cz1yLHIucHJvdG90eXBlLmdoYXNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0tMTsrK2U8dC5sZW5ndGg7KXRoaXMuc3RhdGVbZV1ePXRbZV07dGhpcy5fbXVsdGlwbHkoKX0sci5wcm90b3R5cGUuX211bHRpcGx5PWZ1bmN0aW9uKCl7Zm9yKHZhciB0LGUscixvPW4odGhpcy5oKSxmPVswLDAsMCwwXSxzPS0xOysrczwxMjg7KXtmb3IoZT0wIT09KHRoaXMuc3RhdGVbfn4ocy84KV0mMTw8Ny1zJTgpLGUmJihmPWEoZixvKSkscj0wIT09KDEmb1szXSksdD0zO3Q+MDt0LS0pb1t0XT1vW3RdPj4+MXwoMSZvW3QtMV0pPDwzMTtvWzBdPW9bMF0+Pj4xLHImJihvWzBdPW9bMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1pKGYpfSxyLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dGhpcy5jYWNoZT1lLmNvbmNhdChbdGhpcy5jYWNoZSx0XSk7Zm9yKHZhciByO3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspcj10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaChyKX0sci5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2goZS5jb25jYXQoW3RoaXMuY2FjaGUsZl0sMTYpKSx0aGlzLmdoYXNoKGkoWzAsdCwwLHJdKSksdGhpcy5zdGF0ZX07dmFyIHM9TWF0aC5wb3coMiwzMil9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxlLHIsbil7dmFyIGE9dihlKTtpZihhLmN1cnZlKXtpZihcImVjZHNhXCIhPT1uKXRocm93IG5ldyBFcnJvcihcIndyb25nIHByaXZhdGUga2V5IHR5cGVcIik7cmV0dXJuIGkodCxhKX1pZihcImRzYVwiPT09YS50eXBlKXtpZihcImRzYVwiIT09bil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlXCIpO3JldHVybiBvKHQsYSxyKX1pZihcInJzYVwiIT09bil0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwcml2YXRlIGtleSB0eXBlXCIpO2Zvcih2YXIgZj1hLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLHM9WzAsMV07dC5sZW5ndGgrcy5sZW5ndGgrMTxmOylzLnB1c2goMjU1KTtzLnB1c2goMCk7Zm9yKHZhciB1PS0xOysrdTx0Lmxlbmd0aDspcy5wdXNoKHRbdV0pO3ZhciBoPWwocyxhKTtyZXR1cm4gaH1mdW5jdGlvbiBpKHQscil7dmFyIG49cFtyLmN1cnZlLmpvaW4oXCIuXCIpXTtpZighbil0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIGN1cnZlIFwiK3IuY3VydmUuam9pbihcIi5cIikpO3ZhciBpPW5ldyBtKG4pLG89aS5nZW5LZXlQYWlyKCk7by5faW1wb3J0UHJpdmF0ZShyLnByaXZhdGVLZXkpO3ZhciBhPW8uc2lnbih0KTtyZXR1cm4gbmV3IGUoYS50b0RFUigpKX1mdW5jdGlvbiBvKHQsZSxyKXtmb3IodmFyIG4saT1lLnBhcmFtcy5wcml2X2tleSxvPWUucGFyYW1zLnAsdT1lLnBhcmFtcy5xLGQ9ZS5wYXJhbXMuZyxsPW5ldyB5KDApLHA9cyh0LHUpLm1vZCh1KSxiPSExLHY9ZihpLHUsdCxyKTtiPT09ITE7KW49aCh1LHYsciksbD1jKGQsbixvLHUpLGI9bi5pbnZtKHUpLmltdWwocC5hZGQoaS5tdWwobCkpKS5tb2QodSksYi5jbXBuKDApfHwoYj0hMSxsPW5ldyB5KDApKTtyZXR1cm4gYShsLGIpfWZ1bmN0aW9uIGEodCxyKXt0PXQudG9BcnJheSgpLHI9ci50b0FycmF5KCksMTI4JnRbMF0mJih0PVswXS5jb25jYXQodCkpLDEyOCZyWzBdJiYocj1bMF0uY29uY2F0KHIpKTt2YXIgbj10Lmxlbmd0aCtyLmxlbmd0aCs0LGk9WzQ4LG4sMix0Lmxlbmd0aF07cmV0dXJuIGk9aS5jb25jYXQodCxbMixyLmxlbmd0aF0sciksbmV3IGUoaSl9ZnVuY3Rpb24gZih0LHIsbixpKXtpZih0PW5ldyBlKHQudG9BcnJheSgpKSx0Lmxlbmd0aDxyLmJ5dGVMZW5ndGgoKSl7dmFyIG89bmV3IGUoci5ieXRlTGVuZ3RoKCktdC5sZW5ndGgpO28uZmlsbCgwKSx0PWUuY29uY2F0KFtvLHRdKX12YXIgYT1uLmxlbmd0aCxmPXUobixyKSxzPW5ldyBlKGEpO3MuZmlsbCgxKTt2YXIgaD1uZXcgZShhKTtyZXR1cm4gaC5maWxsKDApLGg9ZChpLGgpLnVwZGF0ZShzKS51cGRhdGUobmV3IGUoWzBdKSkudXBkYXRlKHQpLnVwZGF0ZShmKS5kaWdlc3QoKSxzPWQoaSxoKS51cGRhdGUocykuZGlnZXN0KCksaD1kKGksaCkudXBkYXRlKHMpLnVwZGF0ZShuZXcgZShbMV0pKS51cGRhdGUodCkudXBkYXRlKGYpLmRpZ2VzdCgpLHM9ZChpLGgpLnVwZGF0ZShzKS5kaWdlc3QoKSx7azpoLHY6c319ZnVuY3Rpb24gcyh0LGUpe3ZhciByPW5ldyB5KHQpLG49KHQubGVuZ3RoPDwzKS1lLmJpdExlbmd0aCgpO3JldHVybiBuPjAmJnIuaXNocm4obikscn1mdW5jdGlvbiB1KHQscil7dD1zKHQsciksdD10Lm1vZChyKTt2YXIgbj1uZXcgZSh0LnRvQXJyYXkoKSk7aWYobi5sZW5ndGg8ci5ieXRlTGVuZ3RoKCkpe3ZhciBpPW5ldyBlKHIuYnl0ZUxlbmd0aCgpLW4ubGVuZ3RoKTtpLmZpbGwoMCksbj1lLmNvbmNhdChbaSxuXSl9cmV0dXJuIG59ZnVuY3Rpb24gaCh0LHIsbil7dmFyIGksbztkb3tmb3IoaT1uZXcgZShcIlwiKTs4KmkubGVuZ3RoPHQuYml0TGVuZ3RoKCk7KXIudj1kKG4sci5rKS51cGRhdGUoci52KS5kaWdlc3QoKSxpPWUuY29uY2F0KFtpLHIudl0pO289cyhpLHQpLHIuaz1kKG4sci5rKS51cGRhdGUoci52KS51cGRhdGUobmV3IGUoWzBdKSkuZGlnZXN0KCksci52PWQobixyLmspLnVwZGF0ZShyLnYpLmRpZ2VzdCgpfXdoaWxlKG8uY21wKHQpIT09LTEpO3JldHVybiBvfWZ1bmN0aW9uIGModCxlLHIsbil7cmV0dXJuIHQudG9SZWQoeS5tb250KHIpKS5yZWRQb3coZSkuZnJvbVJlZCgpLm1vZChuKX12YXIgZD1yKDE0OSksbD1yKDUwNykscD1yKDIxMiksYj1yKDE5KSx2PXIoMjEzKSx5PXIoMTgpLG09Yi5lYzt0LmV4cG9ydHM9bix0LmV4cG9ydHMuZ2V0S2V5PWYsdC5leHBvcnRzLm1ha2VLZXk9aH0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0LHIsbixhKXt2YXIgZj11KG4pO2lmKFwiZWNcIj09PWYudHlwZSl7aWYoXCJlY2RzYVwiIT09YSl0aHJvdyBuZXcgRXJyb3IoXCJ3cm9uZyBwdWJsaWMga2V5IHR5cGVcIik7cmV0dXJuIGkodCxyLGYpfWlmKFwiZHNhXCI9PT1mLnR5cGUpe2lmKFwiZHNhXCIhPT1hKXRocm93IG5ldyBFcnJvcihcIndyb25nIHB1YmxpYyBrZXkgdHlwZVwiKTtyZXR1cm4gbyh0LHIsZil9aWYoXCJyc2FcIiE9PWEpdGhyb3cgbmV3IEVycm9yKFwid3JvbmcgcHVibGljIGtleSB0eXBlXCIpO2Zvcih2YXIgcz1mLm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGM9WzFdLGQ9MDtyLmxlbmd0aCtjLmxlbmd0aCsyPHM7KWMucHVzaCgyNTUpLGQrKztjLnB1c2goMCk7Zm9yKHZhciBsPS0xOysrbDxyLmxlbmd0aDspYy5wdXNoKHJbbF0pO2M9bmV3IGUoYyk7dmFyIHA9aC5tb250KGYubW9kdWx1cyk7dD1uZXcgaCh0KS50b1JlZChwKSx0PXQucmVkUG93KG5ldyBoKGYucHVibGljRXhwb25lbnQpKSx0PW5ldyBlKHQuZnJvbVJlZCgpLnRvQXJyYXkoKSk7dmFyIGI9MDtmb3IoZDw4JiYoYj0xKSxzPU1hdGgubWluKHQubGVuZ3RoLGMubGVuZ3RoKSx0Lmxlbmd0aCE9PWMubGVuZ3RoJiYoYj0xKSxsPS0xOysrbDxzOylifD10W2xdXmNbbF07cmV0dXJuIDA9PT1ifWZ1bmN0aW9uIGkodCxlLHIpe3ZhciBuPWZbci5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKFwiLlwiKV07aWYoIW4pdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBjdXJ2ZSBcIityLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oXCIuXCIpKTt2YXIgaT1uZXcgYyhuKSxvPXIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhO3JldHVybiBpLnZlcmlmeShlLHQsbyl9ZnVuY3Rpb24gbyh0LGUscil7dmFyIG49ci5kYXRhLnAsaT1yLmRhdGEucSxvPXIuZGF0YS5nLGY9ci5kYXRhLnB1Yl9rZXkscz11LnNpZ25hdHVyZS5kZWNvZGUodCxcImRlclwiKSxjPXMucyxkPXMucjthKGMsaSksYShkLGkpO3ZhciBsPWgubW9udChuKSxwPWMuaW52bShpKSxiPW8udG9SZWQobCkucmVkUG93KG5ldyBoKGUpLm11bChwKS5tb2QoaSkpLmZyb21SZWQoKS5tdWwoZi50b1JlZChsKS5yZWRQb3coZC5tdWwocCkubW9kKGkpKS5mcm9tUmVkKCkpLm1vZChuKS5tb2QoaSk7cmV0dXJuIWIuY21wKGQpfWZ1bmN0aW9uIGEodCxlKXtpZih0LmNtcG4oMCk8PTApdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBzaWdcIik7aWYodC5jbXAoZSk+PWUpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBzaWdcIil9dmFyIGY9cigyMTIpLHM9cigxOSksdT1yKDIxMyksaD1yKDE4KSxjPXMuZWM7dC5leHBvcnRzPW59KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7dGhpcy5jdXJ2ZVR5cGU9Zlt0XSx0aGlzLmN1cnZlVHlwZXx8KHRoaXMuY3VydmVUeXBlPXtuYW1lOnR9KSx0aGlzLmN1cnZlPW5ldyBvLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpLHRoaXMua2V5cz12b2lkIDB9ZnVuY3Rpb24gaSh0LHIsbil7QXJyYXkuaXNBcnJheSh0KXx8KHQ9dC50b0FycmF5KCkpO3ZhciBpPW5ldyBlKHQpO2lmKG4mJmkubGVuZ3RoPG4pe3ZhciBvPW5ldyBlKG4taS5sZW5ndGgpO28uZmlsbCgwKSxpPWUuY29uY2F0KFtvLGldKX1yZXR1cm4gcj9pLnRvU3RyaW5nKHIpOml9dmFyIG89cigyMiksYT1yKDMwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBuKHQpfTt2YXIgZj17c2VjcDI1NmsxOntuYW1lOlwic2VjcDI1NmsxXCIsYnl0ZUxlbmd0aDozMn0sc2VjcDIyNHIxOntuYW1lOlwicDIyNFwiLGJ5dGVMZW5ndGg6Mjh9LHByaW1lMjU2djE6e25hbWU6XCJwMjU2XCIsYnl0ZUxlbmd0aDozMn0scHJpbWUxOTJ2MTp7bmFtZTpcInAxOTJcIixieXRlTGVuZ3RoOjI0fSxlZDI1NTE5OntuYW1lOlwiZWQyNTUxOVwiLGJ5dGVMZW5ndGg6MzJ9LHNlY3AzODRyMTp7bmFtZTpcInAzODRcIixieXRlTGVuZ3RoOjQ4fSxzZWNwNTIxcjE6e25hbWU6XCJwNTIxXCIsYnl0ZUxlbmd0aDo2Nn19O2YucDIyND1mLnNlY3AyMjRyMSxmLnAyNTY9Zi5zZWNwMjU2cjE9Zi5wcmltZTI1NnYxLGYucDE5Mj1mLnNlY3AxOTJyMT1mLnByaW1lMTkydjEsZi5wMzg0PWYuc2VjcDM4NHIxLGYucDUyMT1mLnNlY3A1MjFyMSxuLnByb3RvdHlwZS5nZW5lcmF0ZUtleXM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5rZXlzPXRoaXMuY3VydmUuZ2VuS2V5UGFpcigpLHRoaXMuZ2V0UHVibGljS2V5KHQsZSl9LG4ucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQ9ZnVuY3Rpb24odCxyLG4pe3I9cnx8XCJ1dGY4XCIsZS5pc0J1ZmZlcih0KXx8KHQ9bmV3IGUodCxyKSk7dmFyIG89dGhpcy5jdXJ2ZS5rZXlGcm9tUHVibGljKHQpLmdldFB1YmxpYygpLGE9by5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpO3JldHVybiBpKGEsbix0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKX0sbi5wcm90b3R5cGUuZ2V0UHVibGljS2V5PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5rZXlzLmdldFB1YmxpYyhcImNvbXByZXNzZWRcIj09PWUsITApO3JldHVyblwiaHlicmlkXCI9PT1lJiYocltyLmxlbmd0aC0xXSUyP3JbMF09NzpyWzBdPTYpLGkocix0KX0sbi5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleT1mdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpLHQpfSxuLnByb3RvdHlwZS5zZXRQdWJsaWNLZXk9ZnVuY3Rpb24odCxyKXtyZXR1cm4gcj1yfHxcInV0ZjhcIixlLmlzQnVmZmVyKHQpfHwodD1uZXcgZSh0LHIpKSx0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyh0KSx0aGlzfSxuLnByb3RvdHlwZS5zZXRQcml2YXRlS2V5PWZ1bmN0aW9uKHQscil7cj1yfHxcInV0ZjhcIixlLmlzQnVmZmVyKHQpfHwodD1uZXcgZSh0LHIpKTt2YXIgbj1uZXcgYSh0KTtyZXR1cm4gbj1uLnRvU3RyaW5nKDE2KSx0aGlzLmtleXMuX2ltcG9ydFByaXZhdGUobiksdGhpc319KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMudHlwZT10LHRoaXMucD1uZXcgbyhlLnAsMTYpLHRoaXMucmVkPWUucHJpbWU/by5yZWQoZS5wcmltZSk6by5tb250KHRoaXMucCksdGhpcy56ZXJvPW5ldyBvKDApLnRvUmVkKHRoaXMucmVkKSx0aGlzLm9uZT1uZXcgbygxKS50b1JlZCh0aGlzLnJlZCksdGhpcy50d289bmV3IG8oMikudG9SZWQodGhpcy5yZWQpLHRoaXMubj1lLm4mJm5ldyBvKGUubiwxNiksdGhpcy5nPWUuZyYmdGhpcy5wb2ludEZyb21KU09OKGUuZyxlLmdSZWQpLHRoaXMuX3duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQyPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDM9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUND1uZXcgQXJyYXkoNCk7dmFyIHI9dGhpcy5uJiZ0aGlzLnAuZGl2KHRoaXMubik7IXJ8fHIuY21wbigxMDApPjA/dGhpcy5yZWROPW51bGw6KHRoaXMuX21heHdlbGxUcmljaz0hMCx0aGlzLnJlZE49dGhpcy5uLnRvUmVkKHRoaXMucmVkKSl9ZnVuY3Rpb24gaSh0LGUpe3RoaXMuY3VydmU9dCx0aGlzLnR5cGU9ZSx0aGlzLnByZWNvbXB1dGVkPW51bGx9dmFyIG89cigzMCksYT1yKDIyKSxmPWEudXRpbHMscz1mLmdldE5BRix1PWYuZ2V0SlNGLGg9Zi5hc3NlcnQ7dC5leHBvcnRzPW4sbi5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWRcIil9LG4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpfSxuLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24odCxlKXtoKHQucHJlY29tcHV0ZWQpO3ZhciByPXQuX2dldERvdWJsZXMoKSxuPXMoZSwxKSxpPSgxPDxyLnN0ZXArMSktKHIuc3RlcCUyPT09MD8yOjEpO2kvPTM7Zm9yKHZhciBvPVtdLGE9MDthPG4ubGVuZ3RoO2ErPXIuc3RlcCl7Zm9yKHZhciBmPTAsZT1hK3Iuc3RlcC0xO2U+PWE7ZS0tKWY9KGY8PDEpK25bZV07by5wdXNoKGYpfWZvcih2YXIgdT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksYz10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksZD1pO2Q+MDtkLS0pe2Zvcih2YXIgYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgZj1vW2FdO2Y9PT1kP2M9Yy5taXhlZEFkZChyLnBvaW50c1thXSk6Zj09PS1kJiYoYz1jLm1peGVkQWRkKHIucG9pbnRzW2FdLm5lZygpKSl9dT11LmFkZChjKX1yZXR1cm4gdS50b1AoKX0sbi5wcm90b3R5cGUuX3duYWZNdWw9ZnVuY3Rpb24odCxlKXt2YXIgcj00LG49dC5fZ2V0TkFGUG9pbnRzKHIpO3I9bi53bmQ7Zm9yKHZhciBpPW4ucG9pbnRzLG89cyhlLHIpLGE9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLGY9by5sZW5ndGgtMTtmPj0wO2YtLSl7Zm9yKHZhciBlPTA7Zj49MCYmMD09PW9bZl07Zi0tKWUrKztpZihmPj0wJiZlKyssYT1hLmRibHAoZSksZjwwKWJyZWFrO3ZhciB1PW9bZl07aCgwIT09dSksYT1cImFmZmluZVwiPT09dC50eXBlP3U+MD9hLm1peGVkQWRkKGlbdS0xPj4xXSk6YS5taXhlZEFkZChpWy11LTE+PjFdLm5lZygpKTp1PjA/YS5hZGQoaVt1LTE+PjFdKTphLmFkZChpWy11LTE+PjFdLm5lZygpKX1yZXR1cm5cImFmZmluZVwiPT09dC50eXBlP2EudG9QKCk6YX0sbi5wcm90b3R5cGUuX3duYWZNdWxBZGQ9ZnVuY3Rpb24odCxlLHIsbixpKXtmb3IodmFyIG89dGhpcy5fd25hZlQxLGE9dGhpcy5fd25hZlQyLGY9dGhpcy5fd25hZlQzLGg9MCxjPTA7YzxuO2MrKyl7dmFyIGQ9ZVtjXSxsPWQuX2dldE5BRlBvaW50cyh0KTtvW2NdPWwud25kLGFbY109bC5wb2ludHN9Zm9yKHZhciBjPW4tMTtjPj0xO2MtPTIpe3ZhciBwPWMtMSxiPWM7aWYoMT09PW9bcF0mJjE9PT1vW2JdKXt2YXIgdj1bZVtwXSxudWxsLG51bGwsZVtiXV07MD09PWVbcF0ueS5jbXAoZVtiXS55KT8odlsxXT1lW3BdLmFkZChlW2JdKSx2WzJdPWVbcF0udG9KKCkubWl4ZWRBZGQoZVtiXS5uZWcoKSkpOjA9PT1lW3BdLnkuY21wKGVbYl0ueS5yZWROZWcoKSk/KHZbMV09ZVtwXS50b0ooKS5taXhlZEFkZChlW2JdKSx2WzJdPWVbcF0uYWRkKGVbYl0ubmVnKCkpKToodlsxXT1lW3BdLnRvSigpLm1peGVkQWRkKGVbYl0pLHZbMl09ZVtwXS50b0ooKS5taXhlZEFkZChlW2JdLm5lZygpKSk7dmFyIHk9Wy0zLC0xLC01LC03LDAsNyw1LDEsM10sbT11KHJbcF0scltiXSk7aD1NYXRoLm1heChtWzBdLmxlbmd0aCxoKSxmW3BdPW5ldyBBcnJheShoKSxmW2JdPW5ldyBBcnJheShoKTtmb3IodmFyIGc9MDtnPGg7ZysrKXt2YXIgdz0wfG1bMF1bZ10sXz0wfG1bMV1bZ107ZltwXVtnXT15WzMqKHcrMSkrKF8rMSldLGZbYl1bZ109MCxhW3BdPXZ9fWVsc2UgZltwXT1zKHJbcF0sb1twXSksZltiXT1zKHJbYl0sb1tiXSksaD1NYXRoLm1heChmW3BdLmxlbmd0aCxoKSxoPU1hdGgubWF4KGZbYl0ubGVuZ3RoLGgpfWZvcih2YXIgTT10aGlzLmpwb2ludChudWxsLG51bGwsbnVsbCksUz10aGlzLl93bmFmVDQsYz1oO2M+PTA7Yy0tKXtmb3IodmFyIEU9MDtjPj0wOyl7Zm9yKHZhciBBPSEwLGc9MDtnPG47ZysrKVNbZ109MHxmW2ddW2NdLDAhPT1TW2ddJiYoQT0hMSk7aWYoIUEpYnJlYWs7RSsrLGMtLX1pZihjPj0wJiZFKyssTT1NLmRibHAoRSksYzwwKWJyZWFrO2Zvcih2YXIgZz0wO2c8bjtnKyspe3ZhciBkLGs9U1tnXTswIT09ayYmKGs+MD9kPWFbZ11bay0xPj4xXTprPDAmJihkPWFbZ11bLWstMT4+MV0ubmVnKCkpLE09XCJhZmZpbmVcIj09PWQudHlwZT9NLm1peGVkQWRkKGQpOk0uYWRkKGQpKX19Zm9yKHZhciBjPTA7YzxuO2MrKylhW2NdPW51bGw7cmV0dXJuIGk/TTpNLnRvUCgpfSxuLkJhc2VQb2ludD1pLGkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkXCIpfSxpLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpfSxuLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbih0LGUpe3Q9Zi50b0FycmF5KHQsZSk7dmFyIHI9dGhpcy5wLmJ5dGVMZW5ndGgoKTtpZigoND09PXRbMF18fDY9PT10WzBdfHw3PT09dFswXSkmJnQubGVuZ3RoLTE9PT0yKnIpezY9PT10WzBdP2godFt0Lmxlbmd0aC0xXSUyPT09MCk6Nz09PXRbMF0mJmgodFt0Lmxlbmd0aC0xXSUyPT09MSk7dmFyIG49dGhpcy5wb2ludCh0LnNsaWNlKDEsMStyKSx0LnNsaWNlKDErciwxKzIqcikpO3JldHVybiBufWlmKCgyPT09dFswXXx8Mz09PXRbMF0pJiZ0Lmxlbmd0aC0xPT09cilyZXR1cm4gdGhpcy5wb2ludEZyb21YKHQuc2xpY2UoMSwxK3IpLDM9PT10WzBdKTt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHBvaW50IGZvcm1hdFwiKX0saS5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbmNvZGUodCwhMCl9LGkucHJvdG90eXBlLl9lbmNvZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSxyPXRoaXMuZ2V0WCgpLnRvQXJyYXkoXCJiZVwiLGUpO3JldHVybiB0P1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChyKTpbNF0uY29uY2F0KHIsdGhpcy5nZXRZKCkudG9BcnJheShcImJlXCIsZSkpfSxpLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZi5lbmNvZGUodGhpcy5fZW5jb2RlKGUpLHQpfSxpLnByb3RvdHlwZS5wcmVjb21wdXRlPWZ1bmN0aW9uKHQpe2lmKHRoaXMucHJlY29tcHV0ZWQpcmV0dXJuIHRoaXM7dmFyIGU9e2RvdWJsZXM6bnVsbCxuYWY6bnVsbCxiZXRhOm51bGx9O3JldHVybiBlLm5hZj10aGlzLl9nZXROQUZQb2ludHMoOCksZS5kb3VibGVzPXRoaXMuX2dldERvdWJsZXMoNCx0KSxlLmJldGE9dGhpcy5fZ2V0QmV0YSgpLHRoaXMucHJlY29tcHV0ZWQ9ZSx0aGlzfSxpLnByb3RvdHlwZS5faGFzRG91Ymxlcz1mdW5jdGlvbih0KXtpZighdGhpcy5wcmVjb21wdXRlZClyZXR1cm4hMTt2YXIgZT10aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7cmV0dXJuISFlJiZlLnBvaW50cy5sZW5ndGg+PU1hdGguY2VpbCgodC5iaXRMZW5ndGgoKSsxKS9lLnN0ZXApfSxpLnByb3RvdHlwZS5fZ2V0RG91Ymxlcz1mdW5jdGlvbih0LGUpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO2Zvcih2YXIgcj1bdGhpc10sbj10aGlzLGk9MDtpPGU7aSs9dCl7Zm9yKHZhciBvPTA7bzx0O28rKyluPW4uZGJsKCk7ci5wdXNoKG4pfXJldHVybntzdGVwOnQscG9pbnRzOnJ9fSxpLnByb3RvdHlwZS5fZ2V0TkFGUG9pbnRzPWZ1bmN0aW9uKHQpe2lmKHRoaXMucHJlY29tcHV0ZWQmJnRoaXMucHJlY29tcHV0ZWQubmFmKXJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtmb3IodmFyIGU9W3RoaXNdLHI9KDE8PHQpLTEsbj0xPT09cj9udWxsOnRoaXMuZGJsKCksaT0xO2k8cjtpKyspZVtpXT1lW2ktMV0uYWRkKG4pO3JldHVybnt3bmQ6dCxwb2ludHM6ZX19LGkucHJvdG90eXBlLl9nZXRCZXRhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGkucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMscj0wO3I8dDtyKyspZT1lLmRibCgpO3JldHVybiBlfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7dGhpcy50d2lzdGVkPTEhPT0oMHx0LmEpLHRoaXMubU9uZUE9dGhpcy50d2lzdGVkJiYoMHx0LmEpPT09LTEsdGhpcy5leHRlbmRlZD10aGlzLm1PbmVBLHUuY2FsbCh0aGlzLFwiZWR3YXJkc1wiLHQpLHRoaXMuYT1uZXcgZih0LmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBmKHQuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgZih0LmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxoKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT09KDB8dC5jKX1mdW5jdGlvbiBpKHQsZSxyLG4saSl7dS5CYXNlUG9pbnQuY2FsbCh0aGlzLHQsXCJwcm9qZWN0aXZlXCIpLG51bGw9PT1lJiZudWxsPT09ciYmbnVsbD09PW4/KHRoaXMueD10aGlzLmN1cnZlLnplcm8sdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzLnQ9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMuek9uZT0hMCk6KHRoaXMueD1uZXcgZihlLDE2KSx0aGlzLnk9bmV3IGYociwxNiksdGhpcy56PW4/bmV3IGYobiwxNik6dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PWkmJm5ldyBmKGksMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMudCYmIXRoaXMudC5yZWQmJih0aGlzLnQ9dGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56T25lPXRoaXMuej09PXRoaXMuY3VydmUub25lLHRoaXMuY3VydmUuZXh0ZW5kZWQmJiF0aGlzLnQmJih0aGlzLnQ9dGhpcy54LnJlZE11bCh0aGlzLnkpLHRoaXMuek9uZXx8KHRoaXMudD10aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpKSkpfXZhciBvPXIoMTA0KSxhPXIoMjIpLGY9cigzMCkscz1yKDIpLHU9by5iYXNlLGg9YS51dGlscy5hc3NlcnQ7cyhuLHUpLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl9tdWxBPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1PbmVBP3QucmVkTmVnKCk6dGhpcy5hLnJlZE11bCh0KX0sbi5wcm90b3R5cGUuX211bEM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub25lQz90OnRoaXMuYy5yZWRNdWwodCl9LG4ucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdGhpcy5wb2ludCh0LGUscixuKX0sbi5wcm90b3R5cGUucG9pbnRGcm9tWD1mdW5jdGlvbih0LGUpe3Q9bmV3IGYodCwxNiksdC5yZWR8fCh0PXQudG9SZWQodGhpcy5yZWQpKTt2YXIgcj10LnJlZFNxcigpLG49dGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bChyKSksaT10aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwocikpLG89bi5yZWRNdWwoaS5yZWRJbnZtKCkpLGE9by5yZWRTcXJ0KCk7aWYoMCE9PWEucmVkU3FyKCkucmVkU3ViKG8pLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7dmFyIHM9YS5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oZSYmIXN8fCFlJiZzKSYmKGE9YS5yZWROZWcoKSksdGhpcy5wb2ludCh0LGEpfSxuLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uKHQsZSl7dD1uZXcgZih0LDE2KSx0LnJlZHx8KHQ9dC50b1JlZCh0aGlzLnJlZCkpO3ZhciByPXQucmVkU3FyKCksbj1yLnJlZFN1Yih0aGlzLm9uZSksaT1yLnJlZE11bCh0aGlzLmQpLnJlZEFkZCh0aGlzLm9uZSksbz1uLnJlZE11bChpLnJlZEludm0oKSk7aWYoMD09PW8uY21wKHRoaXMuemVybykpe2lmKGUpdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludFwiKTtyZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sdCl9dmFyIGE9by5yZWRTcXJ0KCk7aWYoMCE9PWEucmVkU3FyKCkucmVkU3ViKG8pLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7cmV0dXJuIGEuaXNPZGQoKSE9PWUmJihhPWEucmVkTmVnKCkpLHRoaXMucG9pbnQoYSx0KX0sbi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24odCl7aWYodC5pc0luZmluaXR5KCkpcmV0dXJuITA7dC5ub3JtYWxpemUoKTt2YXIgZT10LngucmVkU3FyKCkscj10LnkucmVkU3FyKCksbj1lLnJlZE11bCh0aGlzLmEpLnJlZEFkZChyKSxpPXRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKGUpLnJlZE11bChyKSkpO3JldHVybiAwPT09bi5jbXAoaSl9LHMoaSx1LkJhc2VQb2ludCksbi5wcm90b3R5cGUucG9pbnRGcm9tSlNPTj1mdW5jdGlvbih0KXtyZXR1cm4gaS5mcm9tSlNPTih0aGlzLHQpfSxuLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gbmV3IGkodGhpcyx0LGUscixuKX0saS5mcm9tSlNPTj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0LGVbMF0sZVsxXSxlWzJdKX0saS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT9cIjxFQyBQb2ludCBJbmZpbml0eT5cIjpcIjxFQyBQb2ludCB4OiBcIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn0saS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJjA9PT10aGlzLnkuY21wKHRoaXMueil9LGkucHJvdG90eXBlLl9leHREYmw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngucmVkU3FyKCksZT10aGlzLnkucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCk7cj1yLnJlZElBZGQocik7dmFyIG49dGhpcy5jdXJ2ZS5fbXVsQSh0KSxpPXRoaXMueC5yZWRBZGQodGhpcy55KS5yZWRTcXIoKS5yZWRJU3ViKHQpLnJlZElTdWIoZSksbz1uLnJlZEFkZChlKSxhPW8ucmVkU3ViKHIpLGY9bi5yZWRTdWIoZSkscz1pLnJlZE11bChhKSx1PW8ucmVkTXVsKGYpLGg9aS5yZWRNdWwoZiksYz1hLnJlZE11bChvKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzLHUsYyxoKX0saS5wcm90b3R5cGUuX3Byb2pEYmw9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbj10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCksaT10aGlzLngucmVkU3FyKCksbz10aGlzLnkucmVkU3FyKCk7aWYodGhpcy5jdXJ2ZS50d2lzdGVkKXt2YXIgYT10aGlzLmN1cnZlLl9tdWxBKGkpLGY9YS5yZWRBZGQobyk7aWYodGhpcy56T25lKXQ9bi5yZWRTdWIoaSkucmVkU3ViKG8pLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpLGU9Zi5yZWRNdWwoYS5yZWRTdWIobykpLHI9Zi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO2Vsc2V7dmFyIHM9dGhpcy56LnJlZFNxcigpLHU9Zi5yZWRTdWIocykucmVkSVN1YihzKTt0PW4ucmVkU3ViKGkpLnJlZElTdWIobykucmVkTXVsKHUpLGU9Zi5yZWRNdWwoYS5yZWRTdWIobykpLHI9Zi5yZWRNdWwodSl9fWVsc2V7dmFyIGE9aS5yZWRBZGQobykscz10aGlzLmN1cnZlLl9tdWxDKHRoaXMuYy5yZWRNdWwodGhpcy56KSkucmVkU3FyKCksdT1hLnJlZFN1YihzKS5yZWRTdWIocyk7dD10aGlzLmN1cnZlLl9tdWxDKG4ucmVkSVN1YihhKSkucmVkTXVsKHUpLGU9dGhpcy5jdXJ2ZS5fbXVsQyhhKS5yZWRNdWwoaS5yZWRJU3ViKG8pKSxyPWEucmVkTXVsKHUpfXJldHVybiB0aGlzLmN1cnZlLnBvaW50KHQsZSxyKX0saS5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LGkucHJvdG90eXBlLl9leHRBZGQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bCh0LnkucmVkU3ViKHQueCkpLHI9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bCh0LnkucmVkQWRkKHQueCkpLG49dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwodC50KSxpPXRoaXMuei5yZWRNdWwodC56LnJlZEFkZCh0LnopKSxvPXIucmVkU3ViKGUpLGE9aS5yZWRTdWIobiksZj1pLnJlZEFkZChuKSxzPXIucmVkQWRkKGUpLHU9by5yZWRNdWwoYSksaD1mLnJlZE11bChzKSxjPW8ucmVkTXVsKHMpLGQ9YS5yZWRNdWwoZik7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQodSxoLGQsYyl9LGkucHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbj10aGlzLnoucmVkTXVsKHQueiksaT1uLnJlZFNxcigpLG89dGhpcy54LnJlZE11bCh0LngpLGE9dGhpcy55LnJlZE11bCh0LnkpLGY9dGhpcy5jdXJ2ZS5kLnJlZE11bChvKS5yZWRNdWwoYSkscz1pLnJlZFN1YihmKSx1PWkucmVkQWRkKGYpLGg9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bCh0LngucmVkQWRkKHQueSkpLnJlZElTdWIobykucmVkSVN1YihhKSxjPW4ucmVkTXVsKHMpLnJlZE11bChoKTtyZXR1cm4gdGhpcy5jdXJ2ZS50d2lzdGVkPyhlPW4ucmVkTXVsKHUpLnJlZE11bChhLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKG8pKSkscj1zLnJlZE11bCh1KSk6KGU9bi5yZWRNdWwodSkucmVkTXVsKGEucmVkU3ViKG8pKSxyPXRoaXMuY3VydmUuX211bEMocykucmVkTXVsKHUpKSx0aGlzLmN1cnZlLnBvaW50KGMsZSxyKX0saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT90OnQuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHRBZGQodCk6dGhpcy5fcHJvakFkZCh0KX0saS5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oYXNEb3VibGVzKHQpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsdCk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLHQpfSxpLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsZV0sW3Qscl0sMiwhMSl9LGkucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsZV0sW3Qscl0sMiwhMCl9LGkucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbigpe2lmKHRoaXMuek9uZSlyZXR1cm4gdGhpczt2YXIgdD10aGlzLnoucmVkSW52bSgpO3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bCh0KSx0aGlzLnk9dGhpcy55LnJlZE11bCh0KSx0aGlzLnQmJih0aGlzLnQ9dGhpcy50LnJlZE11bCh0KSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMuek9uZT0hMCx0aGlzfSxpLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksdGhpcy55LHRoaXMueix0aGlzLnQmJnRoaXMudC5yZWROZWcoKSl9LGkucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfSxpLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy55LmZyb21SZWQoKX0saS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHwwPT09dGhpcy5nZXRYKCkuY21wKHQuZ2V0WCgpKSYmMD09PXRoaXMuZ2V0WSgpLmNtcCh0LmdldFkoKSl9LGkucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbih0KXt2YXIgZT10LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtpZigwPT09dGhpcy54LmNtcChlKSlyZXR1cm4hMDtmb3IodmFyIHI9dC5jbG9uZSgpLG49dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopOzspe2lmKHIuaWFkZCh0aGlzLmN1cnZlLm4pLHIuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoZS5yZWRJQWRkKG4pLDA9PT10aGlzLnguY21wKGUpKXJldHVybiEwfXJldHVybiExfSxpLnByb3RvdHlwZS50b1A9aS5wcm90b3R5cGUubm9ybWFsaXplLGkucHJvdG90eXBlLm1peGVkQWRkPWkucHJvdG90eXBlLmFkZH0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7cy5jYWxsKHRoaXMsXCJtb250XCIsdCksdGhpcy5hPW5ldyBhKHQuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgYSh0LmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyBhKDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCksdGhpcy50d289bmV3IGEoMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiBpKHQsZSxyKXtzLkJhc2VQb2ludC5jYWxsKHRoaXMsdCxcInByb2plY3RpdmVcIiksbnVsbD09PWUmJm51bGw9PT1yPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PXRoaXMuY3VydmUuemVybyk6KHRoaXMueD1uZXcgYShlLDE2KSx0aGlzLno9bmV3IGEociwxNiksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpKX12YXIgbz1yKDEwNCksYT1yKDMwKSxmPXIoMikscz1vLmJhc2UsdT1yKDIyKSxoPXUudXRpbHM7ZihuLHMpLHQuZXhwb3J0cz1uLG4ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXQubm9ybWFsaXplKCkueCxyPWUucmVkU3FyKCksbj1yLnJlZE11bChlKS5yZWRBZGQoci5yZWRNdWwodGhpcy5hKSkucmVkQWRkKGUpLGk9bi5yZWRTcXJ0KCk7cmV0dXJuIDA9PT1pLnJlZFNxcigpLmNtcChuKX0sZihpLHMuQmFzZVBvaW50KSxuLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnBvaW50KGgudG9BcnJheSh0LGUpLDEpfSxuLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0aGlzLHQsZSl9LG4ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIGkuZnJvbUpTT04odGhpcyx0KX0saS5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30saS5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KFwiYmVcIix0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKX0saS5mcm9tSlNPTj1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSh0LGVbMF0sZVsxXXx8dC5vbmUpfSxpLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIFBvaW50IEluZmluaXR5PlwiOlwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgejogXCIrdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn0saS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy56LmNtcG4oMCl9LGkucHJvdG90eXBlLmRibD1mdW5jdGlvbigpe3ZhciB0PXRoaXMueC5yZWRBZGQodGhpcy56KSxlPXQucmVkU3FyKCkscj10aGlzLngucmVkU3ViKHRoaXMueiksbj1yLnJlZFNxcigpLGk9ZS5yZWRTdWIobiksbz1lLnJlZE11bChuKSxhPWkucmVkTXVsKG4ucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChpKSkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG8sYSl9LGkucHJvdG90eXBlLmFkZD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZVwiKX0saS5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMueC5yZWRBZGQodGhpcy56KSxuPXRoaXMueC5yZWRTdWIodGhpcy56KSxpPXQueC5yZWRBZGQodC56KSxvPXQueC5yZWRTdWIodC56KSxhPW8ucmVkTXVsKHIpLGY9aS5yZWRNdWwobikscz1lLnoucmVkTXVsKGEucmVkQWRkKGYpLnJlZFNxcigpKSx1PWUueC5yZWRNdWwoYS5yZWRJU3ViKGYpLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzLHUpfSxpLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY2xvbmUoKSxyPXRoaXMsbj10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksaT10aGlzLG89W107MCE9PWUuY21wbigwKTtlLml1c2hybigxKSlvLnB1c2goZS5hbmRsbigxKSk7Zm9yKHZhciBhPW8ubGVuZ3RoLTE7YT49MDthLS0pMD09PW9bYV0/KHI9ci5kaWZmQWRkKG4saSksbj1uLmRibCgpKToobj1yLmRpZmZBZGQobixpKSxyPXIuZGJsKCkpO3JldHVybiBufSxpLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9LGkucHJvdG90eXBlLmp1bWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmVcIil9LGkucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dGhpcy5nZXRYKCkuY21wKHQuZ2V0WCgpKX0saS5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueD10aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpLHRoaXMuej10aGlzLmN1cnZlLm9uZSx0aGlzfSxpLnByb3RvdHlwZS5nZXRYPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy54LmZyb21SZWQoKX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe2guY2FsbCh0aGlzLFwic2hvcnRcIix0KSx0aGlzLmE9bmV3IHModC5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBzKHQuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20odCksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gaSh0LGUscixuKXtoLkJhc2VQb2ludC5jYWxsKHRoaXMsdCxcImFmZmluZVwiKSxudWxsPT09ZSYmbnVsbD09PXI/KHRoaXMueD1udWxsLHRoaXMueT1udWxsLHRoaXMuaW5mPSEwKToodGhpcy54PW5ldyBzKGUsMTYpLHRoaXMueT1uZXcgcyhyLDE2KSxuJiYodGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSx0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy5pbmY9ITEpfWZ1bmN0aW9uIG8odCxlLHIsbil7aC5CYXNlUG9pbnQuY2FsbCh0aGlzLHQsXCJqYWNvYmlhblwiKSxudWxsPT09ZSYmbnVsbD09PXImJm51bGw9PT1uPyh0aGlzLng9dGhpcy5jdXJ2ZS5vbmUsdGhpcy55PXRoaXMuY3VydmUub25lLHRoaXMuej1uZXcgcygwKSk6KHRoaXMueD1uZXcgcyhlLDE2KSx0aGlzLnk9bmV3IHMociwxNiksdGhpcy56PW5ldyBzKG4sMTYpKSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnpPbmU9dGhpcy56PT09dGhpcy5jdXJ2ZS5vbmV9dmFyIGE9cigxMDQpLGY9cigyMikscz1yKDMwKSx1PXIoMiksaD1hLmJhc2UsYz1mLnV0aWxzLmFzc2VydDt1KG4saCksdC5leHBvcnRzPW4sbi5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbih0KXtpZih0aGlzLnplcm9BJiZ0aGlzLmcmJnRoaXMubiYmMT09PXRoaXMucC5tb2RuKDMpKXt2YXIgZSxyO2lmKHQuYmV0YSllPW5ldyBzKHQuYmV0YSwxNikudG9SZWQodGhpcy5yZWQpO2Vsc2V7dmFyIG49dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7ZT1uWzBdLmNtcChuWzFdKTwwP25bMF06blsxXSxlPWUudG9SZWQodGhpcy5yZWQpfWlmKHQubGFtYmRhKXI9bmV3IHModC5sYW1iZGEsMTYpO2Vsc2V7dmFyIGk9dGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7MD09PXRoaXMuZy5tdWwoaVswXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGUpKT9yPWlbMF06KHI9aVsxXSxjKDA9PT10aGlzLmcubXVsKHIpLnguY21wKHRoaXMuZy54LnJlZE11bChlKSkpKX12YXIgbztyZXR1cm4gbz10LmJhc2lzP3QuYmFzaXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybnthOm5ldyBzKHQuYSwxNiksYjpuZXcgcyh0LmIsMTYpfX0pOnRoaXMuX2dldEVuZG9CYXNpcyhyKSx7YmV0YTplLGxhbWJkYTpyLGJhc2lzOm99fX0sbi5wcm90b3R5cGUuX2dldEVuZG9Sb290cz1mdW5jdGlvbih0KXt2YXIgZT10PT09dGhpcy5wP3RoaXMucmVkOnMubW9udCh0KSxyPW5ldyBzKDIpLnRvUmVkKGUpLnJlZEludm0oKSxuPXIucmVkTmVnKCksaT1uZXcgcygzKS50b1JlZChlKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHIpLG89bi5yZWRBZGQoaSkuZnJvbVJlZCgpLGE9bi5yZWRTdWIoaSkuZnJvbVJlZCgpO3JldHVybltvLGFdfSxuLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyLG4saSxvLGEsZix1LGgsYz10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLGQ9dCxsPXRoaXMubi5jbG9uZSgpLHA9bmV3IHMoMSksYj1uZXcgcygwKSx2PW5ldyBzKDApLHk9bmV3IHMoMSksbT0wOzAhPT1kLmNtcG4oMCk7KXt2YXIgZz1sLmRpdihkKTt1PWwuc3ViKGcubXVsKGQpKSxoPXYuc3ViKGcubXVsKHApKTt2YXIgdz15LnN1YihnLm11bChiKSk7aWYoIW4mJnUuY21wKGMpPDApZT1mLm5lZygpLHI9cCxuPXUubmVnKCksaT1oO2Vsc2UgaWYobiYmMj09PSsrbSlicmVhaztmPXUsbD1kLGQ9dSx2PXAscD1oLHk9YixiPXd9bz11Lm5lZygpLGE9aDt2YXIgXz1uLnNxcigpLmFkZChpLnNxcigpKSxNPW8uc3FyKCkuYWRkKGEuc3FyKCkpO3JldHVybiBNLmNtcChfKT49MCYmKG89ZSxhPXIpLG4ubmVnYXRpdmUmJihuPW4ubmVnKCksaT1pLm5lZygpKSxvLm5lZ2F0aXZlJiYobz1vLm5lZygpLGE9YS5uZWcoKSksW3thOm4sYjppfSx7YTpvLGI6YX1dfSxuLnByb3RvdHlwZS5fZW5kb1NwbGl0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW5kby5iYXNpcyxyPWVbMF0sbj1lWzFdLGk9bi5iLm11bCh0KS5kaXZSb3VuZCh0aGlzLm4pLG89ci5iLm5lZygpLm11bCh0KS5kaXZSb3VuZCh0aGlzLm4pLGE9aS5tdWwoci5hKSxmPW8ubXVsKG4uYSkscz1pLm11bChyLmIpLHU9by5tdWwobi5iKSxoPXQuc3ViKGEpLnN1YihmKSxjPXMuYWRkKHUpLm5lZygpO3JldHVybntrMTpoLGsyOmN9fSxuLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKHQsZSl7dD1uZXcgcyh0LDE2KSx0LnJlZHx8KHQ9dC50b1JlZCh0aGlzLnJlZCkpO3ZhciByPXQucmVkU3FyKCkucmVkTXVsKHQpLnJlZElBZGQodC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpLG49ci5yZWRTcXJ0KCk7aWYoMCE9PW4ucmVkU3FyKCkucmVkU3ViKHIpLmNtcCh0aGlzLnplcm8pKXRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnRcIik7dmFyIGk9bi5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4oZSYmIWl8fCFlJiZpKSYmKG49bi5yZWROZWcoKSksdGhpcy5wb2ludCh0LG4pfSxuLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtpZih0LmluZilyZXR1cm4hMDt2YXIgZT10Lngscj10Lnksbj10aGlzLmEucmVkTXVsKGUpLGk9ZS5yZWRTcXIoKS5yZWRNdWwoZSkucmVkSUFkZChuKS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIDA9PT1yLnJlZFNxcigpLnJlZElTdWIoaSkuY21wbigwKX0sbi5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49dGhpcy5fZW5kb1duYWZUMSxpPXRoaXMuX2VuZG9XbmFmVDIsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYT10aGlzLl9lbmRvU3BsaXQoZVtvXSksZj10W29dLHM9Zi5fZ2V0QmV0YSgpO2EuazEubmVnYXRpdmUmJihhLmsxLmluZWcoKSxmPWYubmVnKCEwKSksYS5rMi5uZWdhdGl2ZSYmKGEuazIuaW5lZygpLHM9cy5uZWcoITApKSxuWzIqb109ZixuWzIqbysxXT1zLGlbMipvXT1hLmsxLGlbMipvKzFdPWEuazJ9Zm9yKHZhciB1PXRoaXMuX3duYWZNdWxBZGQoMSxuLGksMipvLHIpLGg9MDtoPDIqbztoKyspbltoXT1udWxsLGlbaF09bnVsbDtyZXR1cm4gdX0sdShpLGguQmFzZVBvaW50KSxuLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBpKHRoaXMsdCxlLHIpfSxuLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuZnJvbUpTT04odGhpcyx0LGUpfSxpLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIHQ9dGhpcy5wcmVjb21wdXRlZDtpZih0JiZ0LmJldGEpcmV0dXJuIHQuYmV0YTt2YXIgZT10aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLHRoaXMueSk7aWYodCl7dmFyIHI9dGhpcy5jdXJ2ZSxuPWZ1bmN0aW9uKHQpe3JldHVybiByLnBvaW50KHQueC5yZWRNdWwoci5lbmRvLmJldGEpLHQueSl9O3QuYmV0YT1lLGUucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxuYWY6dC5uYWYmJnt3bmQ6dC5uYWYud25kLHBvaW50czp0Lm5hZi5wb2ludHMubWFwKG4pfSxkb3VibGVzOnQuZG91YmxlcyYme3N0ZXA6dC5kb3VibGVzLnN0ZXAscG9pbnRzOnQuZG91Ymxlcy5wb2ludHMubWFwKG4pfX19cmV0dXJuIGV9fSxpLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVjb21wdXRlZD9bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVjb21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSl9fV06W3RoaXMueCx0aGlzLnldfSxpLmZyb21KU09OPWZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKGUpe3JldHVybiB0LnBvaW50KGVbMF0sZVsxXSxyKX1cInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9SlNPTi5wYXJzZShlKSk7dmFyIGk9dC5wb2ludChlWzBdLGVbMV0scik7aWYoIWVbMl0pcmV0dXJuIGk7dmFyIG89ZVsyXTtyZXR1cm4gaS5wcmVjb21wdXRlZD17YmV0YTpudWxsLGRvdWJsZXM6by5kb3VibGVzJiZ7c3RlcDpvLmRvdWJsZXMuc3RlcCxwb2ludHM6W2ldLmNvbmNhdChvLmRvdWJsZXMucG9pbnRzLm1hcChuKSl9LG5hZjpvLm5hZiYme3duZDpvLm5hZi53bmQscG9pbnRzOltpXS5jb25jYXQoby5uYWYucG9pbnRzLm1hcChuKSl9fSxpfSxpLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIFBvaW50IEluZmluaXR5PlwiOlwiPEVDIFBvaW50IHg6IFwiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrXCIgeTogXCIrdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwyKStcIj5cIn0saS5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZn0saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaW5mKXJldHVybiB0O2lmKHQuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEodCkpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5uZWcoKS5lcSh0KSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO2lmKDA9PT10aGlzLnguY21wKHQueCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgZT10aGlzLnkucmVkU3ViKHQueSk7MCE9PWUuY21wbigwKSYmKGU9ZS5yZWRNdWwodGhpcy54LnJlZFN1Yih0LngpLnJlZEludm0oKSkpO3ZhciByPWUucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIodC54KSxuPWUucmVkTXVsKHRoaXMueC5yZWRTdWIocikpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChyLG4pfSxpLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgdD10aGlzLnkucmVkQWRkKHRoaXMueSk7aWYoMD09PXQuY21wbigwKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBlPXRoaXMuY3VydmUuYSxyPXRoaXMueC5yZWRTcXIoKSxuPXQucmVkSW52bSgpLGk9ci5yZWRBZGQocikucmVkSUFkZChyKS5yZWRJQWRkKGUpLnJlZE11bChuKSxvPWkucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpLGE9aS5yZWRNdWwodGhpcy54LnJlZFN1YihvKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KG8sYSl9LGkucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54LmZyb21SZWQoKX0saS5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfSxpLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bmV3IHModCwxNiksdGhpcy5faGFzRG91Ymxlcyh0KT90aGlzLmN1cnZlLl9maXhlZE5hZk11bCh0aGlzLHQpOnRoaXMuY3VydmUuZW5kbz90aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChbdGhpc10sW3RdKTp0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsdCl9LGkucHJvdG90eXBlLm11bEFkZD1mdW5jdGlvbih0LGUscil7dmFyIG49W3RoaXMsZV0saT1bdCxyXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKG4saSk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLG4saSwyKX0saS5wcm90b3R5cGUuam11bEFkZD1mdW5jdGlvbih0LGUscil7dmFyIG49W3RoaXMsZV0saT1bdCxyXTtyZXR1cm4gdGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKG4saSwhMCk6dGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLG4saSwyLCEwKX0saS5wcm90b3R5cGUuZXE9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXM9PT10fHx0aGlzLmluZj09PXQuaW5mJiYodGhpcy5pbmZ8fDA9PT10aGlzLnguY21wKHQueCkmJjA9PT10aGlzLnkuY21wKHQueSkpfSxpLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24odCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpKTtpZih0JiZ0aGlzLnByZWNvbXB1dGVkKXt2YXIgcj10aGlzLnByZWNvbXB1dGVkLG49ZnVuY3Rpb24odCl7cmV0dXJuIHQubmVnKCl9O2UucHJlY29tcHV0ZWQ9e25hZjpyLm5hZiYme3duZDpyLm5hZi53bmQscG9pbnRzOnIubmFmLnBvaW50cy5tYXAobil9LGRvdWJsZXM6ci5kb3VibGVzJiZ7c3RlcDpyLmRvdWJsZXMuc3RlcCxwb2ludHM6ci5kb3VibGVzLnBvaW50cy5tYXAobil9fX1yZXR1cm4gZX0saS5wcm90b3R5cGUudG9KPWZ1bmN0aW9uKCl7aWYodGhpcy5pbmYpcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTt2YXIgdD10aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LHRoaXMuY3VydmUub25lKTtyZXR1cm4gdH0sXG51KG8saC5CYXNlUG9pbnQpLG4ucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbih0LGUscil7cmV0dXJuIG5ldyBvKHRoaXMsdCxlLHIpfSxvLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciB0PXRoaXMuei5yZWRJbnZtKCksZT10LnJlZFNxcigpLHI9dGhpcy54LnJlZE11bChlKSxuPXRoaXMueS5yZWRNdWwoZSkucmVkTXVsKHQpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHIsbil9LG8ucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdDtpZih0LmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgZT10LnoucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCksbj10aGlzLngucmVkTXVsKGUpLGk9dC54LnJlZE11bChyKSxvPXRoaXMueS5yZWRNdWwoZS5yZWRNdWwodC56KSksYT10LnkucmVkTXVsKHIucmVkTXVsKHRoaXMueikpLGY9bi5yZWRTdWIoaSkscz1vLnJlZFN1YihhKTtpZigwPT09Zi5jbXBuKDApKXJldHVybiAwIT09cy5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciB1PWYucmVkU3FyKCksaD11LnJlZE11bChmKSxjPW4ucmVkTXVsKHUpLGQ9cy5yZWRTcXIoKS5yZWRJQWRkKGgpLnJlZElTdWIoYykucmVkSVN1YihjKSxsPXMucmVkTXVsKGMucmVkSVN1YihkKSkucmVkSVN1YihvLnJlZE11bChoKSkscD10aGlzLnoucmVkTXVsKHQueikucmVkTXVsKGYpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChkLGwscCl9LG8ucHJvdG90eXBlLm1peGVkQWRkPWZ1bmN0aW9uKHQpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiB0LnRvSigpO2lmKHQuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciBlPXRoaXMuei5yZWRTcXIoKSxyPXRoaXMueCxuPXQueC5yZWRNdWwoZSksaT10aGlzLnksbz10LnkucmVkTXVsKGUpLnJlZE11bCh0aGlzLnopLGE9ci5yZWRTdWIobiksZj1pLnJlZFN1YihvKTtpZigwPT09YS5jbXBuKDApKXJldHVybiAwIT09Zi5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBzPWEucmVkU3FyKCksdT1zLnJlZE11bChhKSxoPXIucmVkTXVsKHMpLGM9Zi5yZWRTcXIoKS5yZWRJQWRkKHUpLnJlZElTdWIoaCkucmVkSVN1YihoKSxkPWYucmVkTXVsKGgucmVkSVN1YihjKSkucmVkSVN1YihpLnJlZE11bCh1KSksbD10aGlzLnoucmVkTXVsKGEpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChjLGQsbCl9LG8ucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24odCl7aWYoMD09PXQpcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIXQpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe2Zvcih2YXIgZT10aGlzLHI9MDtyPHQ7cisrKWU9ZS5kYmwoKTtyZXR1cm4gZX1mb3IodmFyIG49dGhpcy5jdXJ2ZS5hLGk9dGhpcy5jdXJ2ZS50aW52LG89dGhpcy54LGE9dGhpcy55LGY9dGhpcy56LHM9Zi5yZWRTcXIoKS5yZWRTcXIoKSx1PWEucmVkQWRkKGEpLHI9MDtyPHQ7cisrKXt2YXIgaD1vLnJlZFNxcigpLGM9dS5yZWRTcXIoKSxkPWMucmVkU3FyKCksbD1oLnJlZEFkZChoKS5yZWRJQWRkKGgpLnJlZElBZGQobi5yZWRNdWwocykpLHA9by5yZWRNdWwoYyksYj1sLnJlZFNxcigpLnJlZElTdWIocC5yZWRBZGQocCkpLHY9cC5yZWRJU3ViKGIpLHk9bC5yZWRNdWwodik7eT15LnJlZElBZGQoeSkucmVkSVN1YihkKTt2YXIgbT11LnJlZE11bChmKTtyKzE8dCYmKHM9cy5yZWRNdWwoZCkpLG89YixmPW0sdT15fXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChvLHUucmVkTXVsKGkpLGYpfSxvLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLnplcm9BP3RoaXMuX3plcm9EYmwoKTp0aGlzLmN1cnZlLnRocmVlQT90aGlzLl90aHJlZURibCgpOnRoaXMuX2RibCgpfSxvLnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbigpe3ZhciB0LGUscjtpZih0aGlzLnpPbmUpe3ZhciBuPXRoaXMueC5yZWRTcXIoKSxpPXRoaXMueS5yZWRTcXIoKSxvPWkucmVkU3FyKCksYT10aGlzLngucmVkQWRkKGkpLnJlZFNxcigpLnJlZElTdWIobikucmVkSVN1YihvKTthPWEucmVkSUFkZChhKTt2YXIgZj1uLnJlZEFkZChuKS5yZWRJQWRkKG4pLHM9Zi5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYSksdT1vLnJlZElBZGQobyk7dT11LnJlZElBZGQodSksdT11LnJlZElBZGQodSksdD1zLGU9Zi5yZWRNdWwoYS5yZWRJU3ViKHMpKS5yZWRJU3ViKHUpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIGg9dGhpcy54LnJlZFNxcigpLGM9dGhpcy55LnJlZFNxcigpLGQ9Yy5yZWRTcXIoKSxsPXRoaXMueC5yZWRBZGQoYykucmVkU3FyKCkucmVkSVN1YihoKS5yZWRJU3ViKGQpO2w9bC5yZWRJQWRkKGwpO3ZhciBwPWgucmVkQWRkKGgpLnJlZElBZGQoaCksYj1wLnJlZFNxcigpLHY9ZC5yZWRJQWRkKGQpO3Y9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLHQ9Yi5yZWRJU3ViKGwpLnJlZElTdWIobCksZT1wLnJlZE11bChsLnJlZElTdWIodCkpLnJlZElTdWIodikscj10aGlzLnkucmVkTXVsKHRoaXMueikscj1yLnJlZElBZGQocil9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHQsZSxyKX0sby5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uKCl7dmFyIHQsZSxyO2lmKHRoaXMuek9uZSl7dmFyIG49dGhpcy54LnJlZFNxcigpLGk9dGhpcy55LnJlZFNxcigpLG89aS5yZWRTcXIoKSxhPXRoaXMueC5yZWRBZGQoaSkucmVkU3FyKCkucmVkSVN1YihuKS5yZWRJU3ViKG8pO2E9YS5yZWRJQWRkKGEpO3ZhciBmPW4ucmVkQWRkKG4pLnJlZElBZGQobikucmVkSUFkZCh0aGlzLmN1cnZlLmEpLHM9Zi5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYSk7dD1zO3ZhciB1PW8ucmVkSUFkZChvKTt1PXUucmVkSUFkZCh1KSx1PXUucmVkSUFkZCh1KSxlPWYucmVkTXVsKGEucmVkSVN1YihzKSkucmVkSVN1Yih1KSxyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBoPXRoaXMuei5yZWRTcXIoKSxjPXRoaXMueS5yZWRTcXIoKSxkPXRoaXMueC5yZWRNdWwoYyksbD10aGlzLngucmVkU3ViKGgpLnJlZE11bCh0aGlzLngucmVkQWRkKGgpKTtsPWwucmVkQWRkKGwpLnJlZElBZGQobCk7dmFyIHA9ZC5yZWRJQWRkKGQpO3A9cC5yZWRJQWRkKHApO3ZhciBiPXAucmVkQWRkKHApO3Q9bC5yZWRTcXIoKS5yZWRJU3ViKGIpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoYykucmVkSVN1YihoKTt2YXIgdj1jLnJlZFNxcigpO3Y9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLHY9di5yZWRJQWRkKHYpLGU9bC5yZWRNdWwocC5yZWRJU3ViKHQpKS5yZWRJU3ViKHYpfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0LGUscil9LG8ucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnZlLmEsZT10aGlzLngscj10aGlzLnksbj10aGlzLnosaT1uLnJlZFNxcigpLnJlZFNxcigpLG89ZS5yZWRTcXIoKSxhPXIucmVkU3FyKCksZj1vLnJlZEFkZChvKS5yZWRJQWRkKG8pLnJlZElBZGQodC5yZWRNdWwoaSkpLHM9ZS5yZWRBZGQoZSk7cz1zLnJlZElBZGQocyk7dmFyIHU9cy5yZWRNdWwoYSksaD1mLnJlZFNxcigpLnJlZElTdWIodS5yZWRBZGQodSkpLGM9dS5yZWRJU3ViKGgpLGQ9YS5yZWRTcXIoKTtkPWQucmVkSUFkZChkKSxkPWQucmVkSUFkZChkKSxkPWQucmVkSUFkZChkKTt2YXIgbD1mLnJlZE11bChjKS5yZWRJU3ViKGQpLHA9ci5yZWRBZGQocikucmVkTXVsKG4pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChoLGwscCl9LG8ucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIHQ9dGhpcy54LnJlZFNxcigpLGU9dGhpcy55LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpLG49ZS5yZWRTcXIoKSxpPXQucmVkQWRkKHQpLnJlZElBZGQodCksbz1pLnJlZFNxcigpLGE9dGhpcy54LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHQpLnJlZElTdWIobik7YT1hLnJlZElBZGQoYSksYT1hLnJlZEFkZChhKS5yZWRJQWRkKGEpLGE9YS5yZWRJU3ViKG8pO3ZhciBmPWEucmVkU3FyKCkscz1uLnJlZElBZGQobik7cz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocyk7dmFyIHU9aS5yZWRJQWRkKGEpLnJlZFNxcigpLnJlZElTdWIobykucmVkSVN1YihmKS5yZWRJU3ViKHMpLGg9ZS5yZWRNdWwodSk7aD1oLnJlZElBZGQoaCksaD1oLnJlZElBZGQoaCk7dmFyIGM9dGhpcy54LnJlZE11bChmKS5yZWRJU3ViKGgpO2M9Yy5yZWRJQWRkKGMpLGM9Yy5yZWRJQWRkKGMpO3ZhciBkPXRoaXMueS5yZWRNdWwodS5yZWRNdWwocy5yZWRJU3ViKHUpKS5yZWRJU3ViKGEucmVkTXVsKGYpKSk7ZD1kLnJlZElBZGQoZCksZD1kLnJlZElBZGQoZCksZD1kLnJlZElBZGQoZCk7dmFyIGw9dGhpcy56LnJlZEFkZChhKS5yZWRTcXIoKS5yZWRJU3ViKHIpLnJlZElTdWIoZik7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGMsZCxsKX0sby5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bmV3IHModCxlKSx0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsdCl9LG8ucHJvdG90eXBlLmVxPWZ1bmN0aW9uKHQpe2lmKFwiYWZmaW5lXCI9PT10LnR5cGUpcmV0dXJuIHRoaXMuZXEodC50b0ooKSk7aWYodGhpcz09PXQpcmV0dXJuITA7dmFyIGU9dGhpcy56LnJlZFNxcigpLHI9dC56LnJlZFNxcigpO2lmKDAhPT10aGlzLngucmVkTXVsKHIpLnJlZElTdWIodC54LnJlZE11bChlKSkuY21wbigwKSlyZXR1cm4hMTt2YXIgbj1lLnJlZE11bCh0aGlzLnopLGk9ci5yZWRNdWwodC56KTtyZXR1cm4gMD09PXRoaXMueS5yZWRNdWwoaSkucmVkSVN1Yih0LnkucmVkTXVsKG4pKS5jbXBuKDApfSxvLnByb3RvdHlwZS5lcVhUb1A9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy56LnJlZFNxcigpLHI9dC50b1JlZCh0aGlzLmN1cnZlLnJlZCkucmVkTXVsKGUpO2lmKDA9PT10aGlzLnguY21wKHIpKXJldHVybiEwO2Zvcih2YXIgbj10LmNsb25lKCksaT10aGlzLmN1cnZlLnJlZE4ucmVkTXVsKGUpOzspe2lmKG4uaWFkZCh0aGlzLmN1cnZlLm4pLG4uY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYoci5yZWRJQWRkKGkpLDA9PT10aGlzLnguY21wKHIpKXJldHVybiEwfXJldHVybiExfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP1wiPEVDIEpQb2ludCBJbmZpbml0eT5cIjpcIjxFQyBKUG9pbnQgeDogXCIrdGhpcy54LnRvU3RyaW5nKDE2LDIpK1wiIHk6IFwiK3RoaXMueS50b1N0cmluZygxNiwyKStcIiB6OiBcIit0aGlzLnoudG9TdHJpbmcoMTYsMikrXCI+XCJ9LG8ucHJvdG90eXBlLmlzSW5maW5pdHk9ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuei5jbXBuKDApfX0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCl7XCJzaG9ydFwiPT09dC50eXBlP3RoaXMuY3VydmU9bmV3IGYuY3VydmUuc2hvcnQodCk6XCJlZHdhcmRzXCI9PT10LnR5cGU/dGhpcy5jdXJ2ZT1uZXcgZi5jdXJ2ZS5lZHdhcmRzKHQpOnRoaXMuY3VydmU9bmV3IGYuY3VydmUubW9udCh0KSx0aGlzLmc9dGhpcy5jdXJ2ZS5nLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5oYXNoPXQuaGFzaCxzKHRoaXMuZy52YWxpZGF0ZSgpLFwiSW52YWxpZCBjdXJ2ZVwiKSxzKHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksXCJJbnZhbGlkIGN1cnZlLCBHKk4gIT0gT1wiKX1mdW5jdGlvbiBpKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHI9bmV3IG4oZSk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnJ9KSxyfX0pfXZhciBvPWUsYT1yKDUwKSxmPXIoMjIpLHM9Zi51dGlscy5hc3NlcnQ7by5QcmVzZXRDdXJ2ZT1uLGkoXCJwMTkyXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwicDE5MlwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZlwiLGE6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmY1wiLGI6XCI2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMVwiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMVwiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOltcIjE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyXCIsXCIwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMVwiXX0pLGkoXCJwMjI0XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwicDIyNFwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMVwiLGE6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZVwiLGI6XCJiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNFwiLG46XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZFwiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOltcImI3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxXCIsXCJiZDM3NjM4OCBiNWY3MjNmYiA0YzIyZGZlNiBjZDQzNzVhMCA1YTA3NDc2NCA0NGQ1ODE5OSA4NTAwN2UzNFwiXX0pLGkoXCJwMjU2XCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOm51bGwscDpcImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmXCIsYTpcImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjXCIsYjpcIjVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiXCIsbjpcImZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxXCIsaGFzaDphLnNoYTI1NixnUmVkOiExLGc6W1wiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTZcIixcIjRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1XCJdfSksaShcInAzODRcIix7dHlwZTpcInNob3J0XCIscHJpbWU6bnVsbCxwOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmZcIixhOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmNcIixiOlwiYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWZcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzNcIixoYXNoOmEuc2hhMzg0LGdSZWQ6ITEsZzpbXCJhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCA1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiN1wiLFwiMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWZcIl19KSxpKFwicDUyMVwiLHt0eXBlOlwic2hvcnRcIixwcmltZTpudWxsLHA6XCIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZlwiLGE6XCIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmY1wiLGI6XCIwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiA5OWIzMTVmMyBiOGI0ODk5MSA4ZWYxMDllMSA1NjE5Mzk1MSBlYzdlOTM3YiAxNjUyYzBiZCAzYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMFwiLG46XCIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCBmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOVwiLGhhc2g6YS5zaGE1MTIsZ1JlZDohMSxnOltcIjAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5IDA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3IGEyZmZhOGRlIDMzNDhiM2MxIDg1NmE0MjliIGY5N2U3ZTMxIGMyZTViZDY2XCIsXCIwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSA1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAzZmFkMDc2MSAzNTNjNzA4NiBhMjcyYzI0MCA4OGJlOTQ3NiA5ZmQxNjY1MFwiXX0pLGkoXCJjdXJ2ZTI1NTE5XCIse3R5cGU6XCJtb250XCIscHJpbWU6XCJwMjU1MTlcIixwOlwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZFwiLGE6XCI3NmQwNlwiLGI6XCIwXCIsbjpcIjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWRcIixoYXNoOmEuc2hhMjU2LGdSZWQ6ITEsZzpbXCI5XCJdfSksaShcImVkMjU1MTlcIix7dHlwZTpcImVkd2FyZHNcIixwcmltZTpcInAyNTUxOVwiLHA6XCI3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkXCIsYTpcIi0xXCIsYzpcIjFcIixkOlwiNTIwMzZjZWUyYjZmZmU3MyA4Y2M3NDA3OTc3NzllODk4IDAwNzAwYTRkNDE0MWQ4YWIgNzVlYjRkY2ExMzU5NzhhM1wiLG46XCIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkXCIsaGFzaDphLnNoYTI1NixnUmVkOiExLGc6W1wiMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYVwiLFwiNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OFwiXX0pO3ZhciB1O3RyeXt1PXIoNTU3KX1jYXRjaCh0KXt1PXZvaWQgMH1pKFwic2VjcDI1NmsxXCIse3R5cGU6XCJzaG9ydFwiLHByaW1lOlwiazI1NlwiLHA6XCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZlwiLGE6XCIwXCIsYjpcIjdcIixuOlwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDFcIixoOlwiMVwiLGhhc2g6YS5zaGEyNTYsYmV0YTpcIjdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWVcIixsYW1iZGE6XCI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyXCIsYmFzaXM6W3thOlwiMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTVcIixiOlwiLWU0NDM3ZWQ2MDEwZTg4Mjg2ZjU0N2ZhOTBhYmZlNGMzXCJ9LHthOlwiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4XCIsYjpcIjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1XCJ9XSxnUmVkOiExLGc6W1wiNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OFwiLFwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOFwiLHVdfSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8oXCJzdHJpbmdcIj09dHlwZW9mIHQmJihmKG8uY3VydmVzLmhhc093blByb3BlcnR5KHQpLFwiVW5rbm93biBjdXJ2ZSBcIit0KSx0PW8uY3VydmVzW3RdKSx0IGluc3RhbmNlb2Ygby5jdXJ2ZXMuUHJlc2V0Q3VydmUmJih0PXtjdXJ2ZTp0fSksdGhpcy5jdXJ2ZT10LmN1cnZlLmN1cnZlLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5uaD10aGlzLm4udXNocm4oMSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLmc9dC5jdXJ2ZS5nLHRoaXMuZy5wcmVjb21wdXRlKHQuY3VydmUubi5iaXRMZW5ndGgoKSsxKSx2b2lkKHRoaXMuaGFzaD10Lmhhc2h8fHQuY3VydmUuaGFzaCkpOm5ldyBuKHQpfXZhciBpPXIoMzApLG89cigyMiksYT1vLnV0aWxzLGY9YS5hc3NlcnQscz1yKDU1MSksdT1yKDU1Mik7dC5leHBvcnRzPW4sbi5wcm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHModGhpcyx0KX0sbi5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcy5mcm9tUHJpdmF0ZSh0aGlzLHQsZSl9LG4ucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcy5mcm9tUHVibGljKHRoaXMsdCxlKX0sbi5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbih0KXt0fHwodD17fSk7Zm9yKHZhciBlPW5ldyBvLmhtYWNEUkJHKHtoYXNoOnRoaXMuaGFzaCxwZXJzOnQucGVycyxlbnRyb3B5OnQuZW50cm9weXx8by5yYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLG5vbmNlOnRoaXMubi50b0FycmF5KCl9KSxyPXRoaXMubi5ieXRlTGVuZ3RoKCksbj10aGlzLm4uc3ViKG5ldyBpKDIpKTs7KXt2YXIgYT1uZXcgaShlLmdlbmVyYXRlKHIpKTtpZighKGEuY21wKG4pPjApKXJldHVybiBhLmlhZGRuKDEpLHRoaXMua2V5RnJvbVByaXZhdGUoYSl9fSxuLnByb3RvdHlwZS5fdHJ1bmNhdGVUb049ZnVuY3Rpb24odCxlKXt2YXIgcj04KnQuYnl0ZUxlbmd0aCgpLXRoaXMubi5iaXRMZW5ndGgoKTtyZXR1cm4gcj4wJiYodD10LnVzaHJuKHIpKSwhZSYmdC5jbXAodGhpcy5uKT49MD90LnN1Yih0aGlzLm4pOnR9LG4ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24odCxlLHIsbil7XCJvYmplY3RcIj09dHlwZW9mIHImJihuPXIscj1udWxsKSxufHwobj17fSksZT10aGlzLmtleUZyb21Qcml2YXRlKGUsciksdD10aGlzLl90cnVuY2F0ZVRvTihuZXcgaSh0LDE2KSk7Zm9yKHZhciBhPXRoaXMubi5ieXRlTGVuZ3RoKCksZj1lLmdldFByaXZhdGUoKS50b0FycmF5KFwiYmVcIixhKSxzPXQudG9BcnJheShcImJlXCIsYSksaD1uZXcgby5obWFjRFJCRyh7aGFzaDp0aGlzLmhhc2gsZW50cm9weTpmLG5vbmNlOnMscGVyczpuLnBlcnMscGVyc0VuYzpuLnBlcnNFbmN9KSxjPXRoaXMubi5zdWIobmV3IGkoMSkpLGQ9MDshMDtkKyspe3ZhciBsPW4uaz9uLmsoZCk6bmV3IGkoaC5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7aWYobD10aGlzLl90cnVuY2F0ZVRvTihsLCEwKSwhKGwuY21wbigxKTw9MHx8bC5jbXAoYyk+PTApKXt2YXIgcD10aGlzLmcubXVsKGwpO2lmKCFwLmlzSW5maW5pdHkoKSl7dmFyIGI9cC5nZXRYKCksdj1iLnVtb2QodGhpcy5uKTtpZigwIT09di5jbXBuKDApKXt2YXIgeT1sLmludm0odGhpcy5uKS5tdWwodi5tdWwoZS5nZXRQcml2YXRlKCkpLmlhZGQodCkpO2lmKHk9eS51bW9kKHRoaXMubiksMCE9PXkuY21wbigwKSl7dmFyIG09KHAuZ2V0WSgpLmlzT2RkKCk/MTowKXwoMCE9PWIuY21wKHYpPzI6MCk7cmV0dXJuIG4uY2Fub25pY2FsJiZ5LmNtcCh0aGlzLm5oKT4wJiYoeT10aGlzLm4uc3ViKHkpLG1ePTEpLG5ldyB1KHtyOnYsczp5LHJlY292ZXJ5UGFyYW06bX0pfX19fX19LG4ucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih0LGUscixuKXt0PXRoaXMuX3RydW5jYXRlVG9OKG5ldyBpKHQsMTYpKSxyPXRoaXMua2V5RnJvbVB1YmxpYyhyLG4pLGU9bmV3IHUoZSxcImhleFwiKTt2YXIgbz1lLnIsYT1lLnM7aWYoby5jbXBuKDEpPDB8fG8uY21wKHRoaXMubik+PTApcmV0dXJuITE7aWYoYS5jbXBuKDEpPDB8fGEuY21wKHRoaXMubik+PTApcmV0dXJuITE7dmFyIGY9YS5pbnZtKHRoaXMubikscz1mLm11bCh0KS51bW9kKHRoaXMubiksaD1mLm11bChvKS51bW9kKHRoaXMubik7aWYoIXRoaXMuY3VydmUuX21heHdlbGxUcmljayl7dmFyIGM9dGhpcy5nLm11bEFkZChzLHIuZ2V0UHVibGljKCksaCk7cmV0dXJuIWMuaXNJbmZpbml0eSgpJiYwPT09Yy5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChvKX12YXIgYz10aGlzLmcuam11bEFkZChzLHIuZ2V0UHVibGljKCksaCk7cmV0dXJuIWMuaXNJbmZpbml0eSgpJiZjLmVxWFRvUChvKX0sbi5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbih0LGUscixuKXtmKCgzJnIpPT09cixcIlRoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHNcIiksZT1uZXcgdShlLG4pO3ZhciBvPXRoaXMubixhPW5ldyBpKHQpLHM9ZS5yLGg9ZS5zLGM9MSZyLGQ9cj4+MTtpZihzLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKT49MCYmZCl0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGVcIik7cz1kP3RoaXMuY3VydmUucG9pbnRGcm9tWChzLmFkZCh0aGlzLmN1cnZlLm4pLGMpOnRoaXMuY3VydmUucG9pbnRGcm9tWChzLGMpO3ZhciBsPWUuci5pbnZtKG8pLHA9by5zdWIoYSkubXVsKGwpLnVtb2QobyksYj1oLm11bChsKS51bW9kKG8pO3JldHVybiB0aGlzLmcubXVsQWRkKHAscyxiKX0sbi5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbT1mdW5jdGlvbih0LGUscixuKXtpZihlPW5ldyB1KGUsbiksbnVsbCE9PWUucmVjb3ZlcnlQYXJhbSlyZXR1cm4gZS5yZWNvdmVyeVBhcmFtO2Zvcih2YXIgaT0wO2k8NDtpKyspe3ZhciBvO3RyeXtvPXRoaXMucmVjb3ZlclB1YktleSh0LGUsaSl9Y2F0Y2godCl7Y29udGludWV9aWYoby5lcShyKSlyZXR1cm4gaX10aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3JcIil9fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe3RoaXMuZWM9dCx0aGlzLnByaXY9bnVsbCx0aGlzLnB1Yj1udWxsLGUucHJpdiYmdGhpcy5faW1wb3J0UHJpdmF0ZShlLnByaXYsZS5wcml2RW5jKSxlLnB1YiYmdGhpcy5faW1wb3J0UHVibGljKGUucHViLGUucHViRW5jKX12YXIgaT1yKDMwKTt0LmV4cG9ydHM9bixuLmZyb21QdWJsaWM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlIGluc3RhbmNlb2Ygbj9lOm5ldyBuKHQse3B1YjplLHB1YkVuYzpyfSl9LG4uZnJvbVByaXZhdGU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBlIGluc3RhbmNlb2Ygbj9lOm5ldyBuKHQse3ByaXY6ZSxwcml2RW5jOnJ9KX0sbi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldFB1YmxpYygpO3JldHVybiB0LmlzSW5maW5pdHkoKT97cmVzdWx0OiExLHJlYXNvbjpcIkludmFsaWQgcHVibGljIGtleVwifTp0LnZhbGlkYXRlKCk/dC5tdWwodGhpcy5lYy5jdXJ2ZS5uKS5pc0luZmluaXR5KCk/e3Jlc3VsdDohMCxyZWFzb246bnVsbH06e3Jlc3VsdDohMSxyZWFzb246XCJQdWJsaWMga2V5ICogTiAhPSBPXCJ9OntyZXN1bHQ6ITEscmVhc29uOlwiUHVibGljIGtleSBpcyBub3QgYSBwb2ludFwifX0sbi5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKHQsZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJihlPXQsdD1udWxsKSx0aGlzLnB1Ynx8KHRoaXMucHViPXRoaXMuZWMuZy5tdWwodGhpcy5wcml2KSksZT90aGlzLnB1Yi5lbmNvZGUoZSx0KTp0aGlzLnB1Yn0sbi5wcm90b3R5cGUuZ2V0UHJpdmF0ZT1mdW5jdGlvbih0KXtyZXR1cm5cImhleFwiPT09dD90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxuLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbih0LGUpe3RoaXMucHJpdj1uZXcgaSh0LGV8fDE2KSx0aGlzLnByaXY9dGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKX0sbi5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lnh8fHQueT92b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQodC54LHQueSkpOnZvaWQodGhpcy5wdWI9dGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludCh0LGUpKX0sbi5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm11bCh0aGlzLnByaXYpLmdldFgoKX0sbi5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbih0LGUscil7cmV0dXJuIHRoaXMuZWMuc2lnbih0LHRoaXMsZSxyKX0sbi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWMudmVyaWZ5KHQsZSx0aGlzKX0sbi5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVyblwiPEtleSBwcml2OiBcIisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpK1wiIHB1YjogXCIrKHRoaXMucHViJiZ0aGlzLnB1Yi5pbnNwZWN0KCkpK1wiID5cIn19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6dm9pZCh0aGlzLl9pbXBvcnRERVIodCxlKXx8KGModC5yJiZ0LnMsXCJTaWduYXR1cmUgd2l0aG91dCByIG9yIHNcIiksdGhpcy5yPW5ldyBzKHQuciwxNiksdGhpcy5zPW5ldyBzKHQucywxNiksdm9pZCAwPT09dC5yZWNvdmVyeVBhcmFtP3RoaXMucmVjb3ZlcnlQYXJhbT1udWxsOnRoaXMucmVjb3ZlcnlQYXJhbT10LnJlY292ZXJ5UGFyYW0pKX1mdW5jdGlvbiBpKCl7dGhpcy5wbGFjZT0wfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj10W2UucGxhY2UrK107aWYoISgxMjgmcikpcmV0dXJuIHI7Zm9yKHZhciBuPTE1JnIsaT0wLG89MCxhPWUucGxhY2U7bzxuO28rKyxhKyspaTw8PTgsaXw9dFthXTtyZXR1cm4gZS5wbGFjZT1hLGl9ZnVuY3Rpb24gYSh0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLTE7IXRbZV0mJiEoMTI4JnRbZSsxXSkmJmU8cjspZSsrO3JldHVybiAwPT09ZT90OnQuc2xpY2UoZSl9ZnVuY3Rpb24gZih0LGUpe2lmKGU8MTI4KXJldHVybiB2b2lkIHQucHVzaChlKTt2YXIgcj0xKyhNYXRoLmxvZyhlKS9NYXRoLkxOMj4+PjMpO2Zvcih0LnB1c2goMTI4fHIpOy0tcjspdC5wdXNoKGU+Pj4ocjw8MykmMjU1KTt0LnB1c2goZSl9dmFyIHM9cigzMCksdT1yKDIyKSxoPXUudXRpbHMsYz1oLmFzc2VydDt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKHQsZSl7dD1oLnRvQXJyYXkodCxlKTt2YXIgcj1uZXcgaTtpZig0OCE9PXRbci5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgbj1vKHQscik7aWYobityLnBsYWNlIT09dC5sZW5ndGgpcmV0dXJuITE7aWYoMiE9PXRbci5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgYT1vKHQsciksZj10LnNsaWNlKHIucGxhY2UsYStyLnBsYWNlKTtpZihyLnBsYWNlKz1hLDIhPT10W3IucGxhY2UrK10pcmV0dXJuITE7dmFyIHU9byh0LHIpO2lmKHQubGVuZ3RoIT09dStyLnBsYWNlKXJldHVybiExO3ZhciBjPXQuc2xpY2Uoci5wbGFjZSx1K3IucGxhY2UpO3JldHVybiAwPT09ZlswXSYmMTI4JmZbMV0mJihmPWYuc2xpY2UoMSkpLDA9PT1jWzBdJiYxMjgmY1sxXSYmKGM9Yy5zbGljZSgxKSksdGhpcy5yPW5ldyBzKGYpLHRoaXMucz1uZXcgcyhjKSx0aGlzLnJlY292ZXJ5UGFyYW09bnVsbCwhMH0sbi5wcm90b3R5cGUudG9ERVI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yLnRvQXJyYXkoKSxyPXRoaXMucy50b0FycmF5KCk7Zm9yKDEyOCZlWzBdJiYoZT1bMF0uY29uY2F0KGUpKSwxMjgmclswXSYmKHI9WzBdLmNvbmNhdChyKSksZT1hKGUpLHI9YShyKTshKHJbMF18fDEyOCZyWzFdKTspcj1yLnNsaWNlKDEpO3ZhciBuPVsyXTtmKG4sZS5sZW5ndGgpLG49bi5jb25jYXQoZSksbi5wdXNoKDIpLGYobixyLmxlbmd0aCk7dmFyIGk9bi5jb25jYXQociksbz1bNDhdO3JldHVybiBmKG8saS5sZW5ndGgpLG89by5jb25jYXQoaSksaC5lbmNvZGUobyx0KX19LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe2lmKGYoXCJlZDI1NTE5XCI9PT10LFwib25seSB0ZXN0ZWQgd2l0aCBlZDI1NTE5IHNvIGZhclwiKSwhKHRoaXMgaW5zdGFuY2VvZiBuKSlyZXR1cm4gbmV3IG4odCk7dmFyIHQ9by5jdXJ2ZXNbdF0uY3VydmU7dGhpcy5jdXJ2ZT10LHRoaXMuZz10LmcsdGhpcy5nLnByZWNvbXB1dGUodC5uLmJpdExlbmd0aCgpKzEpLHRoaXMucG9pbnRDbGFzcz10LnBvaW50KCkuY29uc3RydWN0b3IsdGhpcy5lbmNvZGluZ0xlbmd0aD1NYXRoLmNlaWwodC5uLmJpdExlbmd0aCgpLzgpLHRoaXMuaGFzaD1pLnNoYTUxMn12YXIgaT1yKDUwKSxvPXIoMjIpLGE9by51dGlscyxmPWEuYXNzZXJ0LHM9YS5wYXJzZUJ5dGVzLHU9cig1NTQpLGg9cig1NTUpO3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24odCxlKXt0PXModCk7dmFyIHI9dGhpcy5rZXlGcm9tU2VjcmV0KGUpLG49dGhpcy5oYXNoSW50KHIubWVzc2FnZVByZWZpeCgpLHQpLGk9dGhpcy5nLm11bChuKSxvPXRoaXMuZW5jb2RlUG9pbnQoaSksYT10aGlzLmhhc2hJbnQobyxyLnB1YkJ5dGVzKCksdCkubXVsKHIucHJpdigpKSxmPW4uYWRkKGEpLnVtb2QodGhpcy5jdXJ2ZS5uKTtyZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHtSOmksUzpmLFJlbmNvZGVkOm99KX0sbi5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKHQsZSxyKXt0PXModCksZT10aGlzLm1ha2VTaWduYXR1cmUoZSk7dmFyIG49dGhpcy5rZXlGcm9tUHVibGljKHIpLGk9dGhpcy5oYXNoSW50KGUuUmVuY29kZWQoKSxuLnB1YkJ5dGVzKCksdCksbz10aGlzLmcubXVsKGUuUygpKSxhPWUuUigpLmFkZChuLnB1YigpLm11bChpKSk7cmV0dXJuIGEuZXEobyl9LG4ucHJvdG90eXBlLmhhc2hJbnQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5oYXNoKCksZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdC51cGRhdGUoYXJndW1lbnRzW2VdKTtyZXR1cm4gYS5pbnRGcm9tTEUodC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pfSxuLnByb3RvdHlwZS5rZXlGcm9tUHVibGljPWZ1bmN0aW9uKHQpe3JldHVybiB1LmZyb21QdWJsaWModGhpcyx0KX0sbi5wcm90b3R5cGUua2V5RnJvbVNlY3JldD1mdW5jdGlvbih0KXtyZXR1cm4gdS5mcm9tU2VjcmV0KHRoaXMsdCl9LG4ucHJvdG90eXBlLm1ha2VTaWduYXR1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBoP3Q6bmV3IGgodGhpcyx0KX0sbi5wcm90b3R5cGUuZW5jb2RlUG9pbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRZKCkudG9BcnJheShcImxlXCIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIGVbdGhpcy5lbmNvZGluZ0xlbmd0aC0xXXw9dC5nZXRYKCkuaXNPZGQoKT8xMjg6MCxlfSxuLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbih0KXt0PWEucGFyc2VCeXRlcyh0KTt2YXIgZT10Lmxlbmd0aC0xLHI9dC5zbGljZSgwLGUpLmNvbmNhdCh0W2VdJi0xMjkpLG49MCE9PSgxMjgmdFtlXSksaT1hLmludEZyb21MRShyKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKGksbil9LG4ucHJvdG90eXBlLmVuY29kZUludD1mdW5jdGlvbih0KXtyZXR1cm4gdC50b0FycmF5KFwibGVcIix0aGlzLmVuY29kaW5nTGVuZ3RoKX0sbi5wcm90b3R5cGUuZGVjb2RlSW50PWZ1bmN0aW9uKHQpe3JldHVybiBhLmludEZyb21MRSh0KX0sbi5wcm90b3R5cGUuaXNQb2ludD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc319LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7dGhpcy5lZGRzYT10LHRoaXMuX3NlY3JldD1mKGUuc2VjcmV0KSx0LmlzUG9pbnQoZS5wdWIpP3RoaXMuX3B1Yj1lLnB1Yjp0aGlzLl9wdWJCeXRlcz1mKGUucHViKX12YXIgaT1yKDIyKSxvPWkudXRpbHMsYT1vLmFzc2VydCxmPW8ucGFyc2VCeXRlcyxzPW8uY2FjaGVkUHJvcGVydHk7bi5mcm9tUHVibGljPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4odCx7cHViOmV9KX0sbi5mcm9tU2VjcmV0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBuP2U6bmV3IG4odCx7c2VjcmV0OmV9KX0sbi5wcm90b3R5cGUuc2VjcmV0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlY3JldH0scyhuLFwicHViQnl0ZXNcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpfSkscyhuLFwicHViXCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHViQnl0ZXM/dGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk6dGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSxzKG4sXCJwcml2Qnl0ZXNcIixmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRkc2EsZT10aGlzLmhhc2goKSxyPXQuZW5jb2RpbmdMZW5ndGgtMSxuPWUuc2xpY2UoMCx0LmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gblswXSY9MjQ4LG5bcl0mPTEyNyxuW3JdfD02NCxufSkscyhuLFwicHJpdlwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpfSkscyhuLFwiaGFzaFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKX0pLHMobixcIm1lc3NhZ2VQcmVmaXhcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pLG4ucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGEodGhpcy5fc2VjcmV0LFwiS2V5UGFpciBjYW4gb25seSB2ZXJpZnlcIiksdGhpcy5lZGRzYS5zaWduKHQsdGhpcyl9LG4ucHJvdG90eXBlLnZlcmlmeT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmVkZHNhLnZlcmlmeSh0LGUsdGhpcyl9LG4ucHJvdG90eXBlLmdldFNlY3JldD1mdW5jdGlvbih0KXtyZXR1cm4gYSh0aGlzLl9zZWNyZXQsXCJLZXlQYWlyIGlzIHB1YmxpYyBvbmx5XCIpLG8uZW5jb2RlKHRoaXMuc2VjcmV0KCksdCl9LG4ucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbih0KXtyZXR1cm4gby5lbmNvZGUodGhpcy5wdWJCeXRlcygpLHQpfSx0LmV4cG9ydHM9bn0sZnVuY3Rpb24odCxlLHIpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXt0aGlzLmVkZHNhPXQsXCJvYmplY3RcIiE9dHlwZW9mIGUmJihlPXUoZSkpLEFycmF5LmlzQXJyYXkoZSkmJihlPXtSOmUuc2xpY2UoMCx0LmVuY29kaW5nTGVuZ3RoKSxTOmUuc2xpY2UodC5lbmNvZGluZ0xlbmd0aCl9KSxmKGUuUiYmZS5TLFwiU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTXCIpLHQuaXNQb2ludChlLlIpJiYodGhpcy5fUj1lLlIpLGUuUyBpbnN0YW5jZW9mIGkmJih0aGlzLl9TPWUuUyksdGhpcy5fUmVuY29kZWQ9QXJyYXkuaXNBcnJheShlLlIpP2UuUjplLlJlbmNvZGVkLHRoaXMuX1NlbmNvZGVkPUFycmF5LmlzQXJyYXkoZS5TKT9lLlM6ZS5TZW5jb2RlZH12YXIgaT1yKDMwKSxvPXIoMjIpLGE9by51dGlscyxmPWEuYXNzZXJ0LHM9YS5jYWNoZWRQcm9wZXJ0eSx1PWEucGFyc2VCeXRlcztzKG4sXCJTXCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pLHMobixcIlJcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSl9KSxzKG4sXCJSZW5jb2RlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSkscyhuLFwiU2VuY29kZWRcIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSxuLnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKX0sbi5wcm90b3R5cGUudG9IZXg9ZnVuY3Rpb24oKXtyZXR1cm4gYS5lbmNvZGUodGhpcy50b0J5dGVzKCksXCJoZXhcIikudG9VcHBlckNhc2UoKX0sdC5leHBvcnRzPW59LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIG4pKXJldHVybiBuZXcgbih0KTt0aGlzLmhhc2g9dC5oYXNoLHRoaXMucHJlZFJlc2lzdD0hIXQucHJlZFJlc2lzdCx0aGlzLm91dExlbj10aGlzLmhhc2gub3V0U2l6ZSx0aGlzLm1pbkVudHJvcHk9dC5taW5FbnRyb3B5fHx0aGlzLmhhc2guaG1hY1N0cmVuZ3RoLHRoaXMucmVzZWVkPW51bGwsdGhpcy5yZXNlZWRJbnRlcnZhbD1udWxsLHRoaXMuSz1udWxsLHRoaXMuVj1udWxsO3ZhciBlPWEudG9BcnJheSh0LmVudHJvcHksdC5lbnRyb3B5RW5jKSxyPWEudG9BcnJheSh0Lm5vbmNlLHQubm9uY2VFbmMpLGk9YS50b0FycmF5KHQucGVycyx0LnBlcnNFbmMpO2YoZS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LFwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiBcIit0aGlzLm1pbkVudHJvcHkrXCIgYml0c1wiKSx0aGlzLl9pbml0KGUscixpKX12YXIgaT1yKDUwKSxvPXIoMjIpLGE9by51dGlscyxmPWEuYXNzZXJ0O3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10LmNvbmNhdChlKS5jb25jYXQocik7dGhpcy5LPW5ldyBBcnJheSh0aGlzLm91dExlbi84KSx0aGlzLlY9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpO2Zvcih2YXIgaT0wO2k8dGhpcy5WLmxlbmd0aDtpKyspdGhpcy5LW2ldPTAsdGhpcy5WW2ldPTE7dGhpcy5fdXBkYXRlKG4pLHRoaXMucmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LG4ucHJvdG90eXBlLl9obWFjPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBpLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO3QmJihlPWUudXBkYXRlKHQpKSx0aGlzLks9ZS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLHQmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZSh0KS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sbi5wcm90b3R5cGUucmVzZWVkPWZ1bmN0aW9uKHQsZSxyLG4pe1wic3RyaW5nXCIhPXR5cGVvZiBlJiYobj1yLHI9ZSxlPW51bGwpLHQ9YS50b0J1ZmZlcih0LGUpLHI9YS50b0J1ZmZlcihyLG4pLGYodC5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LFwiTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiBcIit0aGlzLm1pbkVudHJvcHkrXCIgYml0c1wiKSx0aGlzLl91cGRhdGUodC5jb25jYXQocnx8W10pKSx0aGlzLnJlc2VlZD0xfSxuLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbih0LGUscixuKXtpZih0aGlzLnJlc2VlZD50aGlzLnJlc2VlZEludGVydmFsKXRocm93IG5ldyBFcnJvcihcIlJlc2VlZCBpcyByZXF1aXJlZFwiKTtcInN0cmluZ1wiIT10eXBlb2YgZSYmKG49cixyPWUsZT1udWxsKSxyJiYocj1hLnRvQXJyYXkocixuKSx0aGlzLl91cGRhdGUocikpO2Zvcih2YXIgaT1bXTtpLmxlbmd0aDx0Oyl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLGk9aS5jb25jYXQodGhpcy5WKTt2YXIgbz1pLnNsaWNlKDAsdCk7cmV0dXJuIHRoaXMuX3VwZGF0ZShyKSx0aGlzLnJlc2VlZCsrLGEuZW5jb2RlKG8sZSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17ZG91Ymxlczp7c3RlcDo0LHBvaW50czpbW1wiZTYwZmNlOTNiNTllOWVjNTMwMTFhYWJjMjFjMjNlOTdiMmEzMTM2OWI4N2E1YWU5YzQ0ZWU4OWUyYTZkZWMwYVwiLFwiZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMVwiXSxbXCI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4XCIsXCIxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmXCJdLFtcIjE3NWUxNTlmNzI4Yjg2NWE3MmY5OWNjNmM2ZmM4NDZkZTBiOTM4MzNmZDIyMjJlZDczZmNlNWI1NTFlNWI3MzlcIixcImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTVcIl0sW1wiMzYzZDkwZDQ0N2IwMGM5Yzk5Y2VhYzA1YjYyNjJlZTA1MzQ0MWM3ZTU1NTUyZmZlNTI2YmFkOGY4M2ZmNDY0MFwiLFwiNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5XCJdLFtcIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGNcIixcIjRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzZcIl0sW1wiNzIzY2JhYTZlNWRiOTk2ZDZiZjc3MWMwMGJkNTQ4YzdiNzAwZGJmZmE2YzBlNzdiY2I2MTE1OTI1MjMyZmNkYVwiLFwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZlwiXSxbXCJlZWJmYTRkNDkzYmViZjk4YmE1ZmVlYzgxMmMyZDNiNTA5NDc5NjEyMzdhOTE5ODM5YTUzM2VjYTBlN2RkN2ZhXCIsXCI1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5XCJdLFtcIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjBcIixcImNkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDlcIl0sW1wiZTEwMzFiZTI2MmM3ZWQxYjFkYzkyMjdhNGEwNGMwMTdhNzdmOGQ0NDY0ZjNiMzg1MmM4YWNkZTZlNTM0ZmQyZFwiLFwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZFwiXSxbXCJmZWVhNmNhZTQ2ZDU1YjUzMGFjMjgzOWYxNDNiZDdlYzVjZjhiMjY2YTQxZDZhZjUyZDVlNjg4ZDkwOTQ2OTZkXCIsXCJlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4XCJdLFtcImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjFcIixcIjliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWRcIl0sW1wiNTM5MDRmYWEwYjMzNGNkZGE2ZTAwMDkzNWVmMjIxNTFlYzA4ZDBmN2JiMTEwNjlmNTc1NDVjY2MxYTM3YjdjMFwiLFwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOFwiXSxbXCI4ZTdiY2QwYmQzNTk4M2E3NzE5Y2NhNzc2NGNhOTA2Nzc5YjUzYTA0M2E5YjhiY2FlZmY5NTlmNDNhZDg2MDQ3XCIsXCIxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhXCJdLFtcIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjJcIixcIjI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTNcIl0sW1wiNmY5ZDliODAzZWNmMTkxNjM3YzczYTQ0MTNkZmExODBmZGRmODRhNTk0N2ZiYzljNjA2ZWQ4NmMzZmFjM2E3XCIsXCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwXCJdLFtcIjMzMjJkNDAxMjQzYzRlMjU4MmEyMTQ3YzEwNGQ2ZWNiZjc3NGQxNjNkYjBmNWU1MzEzYjdlMGU3NDJkMGU2YmRcIixcIjU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTBcIl0sW1wiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4M1wiLFwiN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNlwiXSxbXCI5NDhiZjgwOWIxOTg4YTQ2YjA2YzlmMTkxOTQxM2IxMGY5MjI2YzYwZjY2ODgzMmZmZDk1OWFmNjBjODJhMGFcIixcIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODlcIl0sW1wiNjI2MGNlN2Y0NjE4MDFjMzRmMDY3Y2UwZjAyODczYThmMWIwZTQ0ZGZjNjk3NTJhY2NlY2Q4MTlmMzhmZDhlOFwiLFwiYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxN1wiXSxbXCJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkXCIsXCI0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhXCJdLFtcImUwNjM3MmIwZjRhMjA3YWRmNWVhOTA1ZThmMTc3MWI0ZTdlOGRiZDFjNmE2YzViNzI1ODY2YTBhZTRmY2U3MjVcIixcIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGRcIl0sW1wiMjEzYzdhNzE1Y2Q1ZDQ1MzU4ZDBiYmY5ZGMwY2UwMjIwNGIxMGJkZGUyYTNmNTg1NDBhZDY5MDhkMDU1OTc1NFwiLFwiNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMlwiXSxbXCI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjXCIsXCIxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2XCJdLFtcImZlYTc0ZTNkYmU3NzhiMWIxMGYyMzhhZDYxNjg2YWE1Yzc2ZTNkYjJiZTQzMDU3NjMyNDI3ZTI4NDBmYjI3YjZcIixcIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmZcIl0sW1wiNzZlNjQxMTNmNjc3Y2YwZTEwYTI1NzBkNTk5OTY4ZDMxNTQ0ZTE3OWI3NjA0MzI5NTJjMDJhNDQxN2JkZGUzOVwiLFwiYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMVwiXSxbXCJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxXCIsXCI4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzXCJdLFtcImQ4OTU2MjY1NDhiNjViODFlMjY0Yzc2MzdjOTcyODc3ZDFkNzJlNWYzYTkyNTAxNDM3MmU5ZjY1ODhmNmMxNGJcIixcImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWZcIl0sW1wiYjhkYTk0MDMyYTk1NzUxOGViMGY2NDMzNTcxZTg3NjFjZWZmYzczNjkzZTg0ZWRkNDkxNTBhNTY0ZjY3NmUwM1wiLFwiMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlN1wiXSxbXCJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkXCIsXCJlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4XCJdLFtcImEzMDE2OTdiZGZjZDcwNDMxM2JhNDhlNTFkNTY3NTQzZjJhMTgyMDMxZWZkNjkxNWRkYzA3YmJjYzRlMTYwNzBcIixcIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTFcIl0sW1wiOTBhZDg1YjM4OWQ2YjkzNjQ2M2Y5ZDA1MTI2NzhkZTIwOGNjMzMwYjExMzA3ZmZmYWI3YWM2M2UzZmIwNGVkNFwiLFwiZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwXCJdLFtcIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGFcIixcIjY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODJcIl0sW1wiZTRmM2ZiMDE3NmFmODVkNjVmZjk5ZmY5MTk4YzM2MDkxZjQ4ZTg2NTAzNjgxZTNlNjY4NmZkNTA1MzIzMWUxMVwiLFwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiY1wiXSxbXCI4YzAwZmE5YjE4ZWJmMzMxZWI5NjE1MzdhNDVhNDI2NmM3MDM0ZjJmMGQ0ZTFkMDcxNmZiNmVhZTIwZWFlMjllXCIsXCJlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiXCJdLFtcImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDFcIixcIjJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTFcIl0sW1wiYjY0NTllMGVlMzY2MmVjOGQyMzU0MGMyMjNiY2JkYzU3MWNiY2I5NjdkNzk0MjRmM2NmMjllYjNkZTZiODBlZlwiLFwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1XCJdLFtcImQ2OGE4MGM4MjgwYmI4NDA3OTMyMzRhYTExOGYwNjIzMWQ2ZjFmYzY3ZTczYzVhNWRlZGEwZjViNDk2OTQzZThcIixcImRiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjBcIl0sW1wiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZFwiLFwiNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NFwiXSxbXCI0ZGY5YzE0OTE5Y2RlNjFmNmQ1MWRmZGJlNWZlZTVkY2VlYzQxNDNiYThkMWNhODg4ZThiZDM3M2ZkMDU0Yzk2XCIsXCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZFwiXSxbXCI5YzM5MTlhODRhNDc0ODcwZmFlZDhhOWMxY2M2NjAyMTUyMzQ4OTA1NGQ3ZjAzMDhjYmZjOTljOGFjMWY5OGNkXCIsXCJkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkXCJdLFtcIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTVcIixcIjlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYThcIl0sW1wiYTU3NmRmOGUyM2EwODQxMTQyMTQzOWE0NTE4ZGEzMTg4MGNlZjBmYmE3ZDRkZjEyYjFhNjk3M2VlY2I5NDI2NlwiLFwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOFwiXSxbXCI3Nzc4YTc4YzI4ZGVjM2UzMGEwNWZlOTYyOWRlOGMzOGJiMzBkMWY1Y2Y5YTNhMjA4Zjc2Mzg4OWJlNThhZDcxXCIsXCIzNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjXCJdLFtcIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhY1wiLFwiYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZlwiXSxbXCI4NWQwZmVmM2VjNmRiMTA5Mzk5MDY0ZjNhMGUzYjI4NTU2NDViNGE5MDdhZDM1NDUyN2FhZTc1MTYzZDgyNzUxXCIsXCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyXCJdLFtcImZmMmIwZGNlOTdlZWNlOTdjMWM5YjYwNDE3OThiODVkZmRmYjZkODg4MmRhMjAzMDhmNTQwNDgyNDUyNjA4N2VcIixcIjQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDdcIl0sW1wiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MVwiLFwiYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlY1wiXSxbXCJlYWE2NDlmMjFmNTFiZGJhZTdiZTRhZTM0Y2U2ZTUyMTdhNThmZGNlN2Y0N2Y5YWE3ZjNiNThmYTIxMjBlMmIzXCIsXCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkXCJdLFtcImU0YTQyZDQzYzVjZjE2OWQ5MzkxZGY2ZGVjZjQyZWU1NDFiNmQ4ZjBjOWExMzc0MDFlMjM2MzJkZGEzNGQyNGZcIixcIjRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTRcIl0sW1wiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOVwiLFwiYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZFwiXSxbXCIxNDZhNzc4YzA0NjcwYzJmOTFiMDBhZjQ2ODBkZmE4YmNlMzQ5MDcxN2Q1OGJhODg5ZGRiNTkyODM2NjY0MmJlXCIsXCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwXCJdLFtcImZhNTBjMGY2MWQyMmU1ZjA3ZTNhY2ViYjFhYTA3YjEyOGQwMDEyMjA5YTI4Yjk3NzZkNzZhODc5MzE4MGVlZjlcIixcIjZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTFcIl0sW1wiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMlwiLFwiODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMVwiXSxbXCJhOGUyODJmZjBjOTcwNjkwNzIxNWZmOThlOGZkNDE2NjE1MzExZGUwNDQ2ZjFlMDYyYTczYjA2MTBkMDY0ZTEzXCIsXCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjXCJdLFtcIjE3NGE1M2I5YzlhMjg1ODcyZDM5ZTU2ZTY5MTNjYWIxNWQ1OWIxZmE1MTI1MDhjMDIyZjM4MmRlODMxOTQ5N2NcIixcImNjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzNcIl0sW1wiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYVwiLFwiMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZFwiXSxbXCJkMmE2M2E1MGFlNDAxZTU2ZDY0NWExMTUzYjEwOWE4ZmNjYTBhNDNkNTYxZmJhMmRiYjUxMzQwYzlkODJiMTUxXCIsXCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1XCJdLFtcIjY0NTg3ZTIzMzU0NzFlYjg5MGVlNzg5NmQ3Y2ZkYzg2NmJhY2JkYmQzODM5MzE3YjM0MzZmOWI0NTYxN2UwNzNcIixcImQ5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODlcIl0sW1wiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OFwiLFwiMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZVwiXSxbXCIxMzQ2NGE1N2E3ODEwMmFhNjJiNjk3OWFlODE3ZjQ2MzdmZmNmZWQzYzRiMWNlMzBiY2Q2MzAzZjZjYWY2NjZiXCIsXCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3XCJdLFtcImJjNGE5ZGY1YjcxM2ZlMmU5YWVmNDMwYmNjMWRjOTdhMGNkOWNjZWRlMmYyODU4OGNhZGEzYTBkMmQ4M2YzNjZcIixcImQzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMVwiXSxbXCI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhXCIsXCI0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyXCJdLFtcIjhlYTk2NjYxMzk1MjdhOGMxZGQ5NGNlNGYwNzFmZDIzYzhiMzUwYzVhNGJiMzM3NDhjNGJhMTExZmFjY2FlMFwiLFwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NVwiXSxbXCJkZDM2MjVmYWVmNWJhMDYwNzQ2Njk3MTZiYmQzNzg4ZDg5YmRkZTgxNTk1OTk2ODA5MmY3NmNjNGViOWE5Nzg3XCIsXCI3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczXCJdLFtcImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWVcIixcImVhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODJcIl1dfSxuYWY6e3duZDo3LHBvaW50czpbW1wiZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOVwiLFwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MlwiXSxbXCIyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0XCIsXCJkOGFjMjIyNjM2ZTVlM2Q2ZDRkYmE5ZGRhNmM5YzQyNmY3ODgyNzFiYWIwZDY4NDBkY2E4N2QzYWE2YWM2MmQ2XCJdLFtcIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmNcIixcIjZhZWJjYTQwYmEyNTU5NjBhMzE3OGQ2ZDg2MWE1NGRiYTgxM2QwYjgxM2ZkZTdiNWE1MDgyNjI4MDg3MjY0ZGFcIl0sW1wiYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZVwiLFwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzN1wiXSxbXCI3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiXCIsXCJkOTg0YTAzMmViNmI1ZTE5MDI0M2RkNTZkN2I3YjM2NTM3MmRiMWUyZGZmOWQ2YTgzMDFkNzRjOWM5NTNjNjFiXCJdLFtcImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYThcIixcImFiMDkwMmU4ZDg4MGE4OTc1ODIxMmViNjVjZGFmNDczYTFhMDZkYTUyMWZhOTFmMjliNWNiNTJkYjAzZWQ4MVwiXSxbXCJkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlXCIsXCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4XCJdLFtcImRlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzRcIixcIjQyMTFhYjA2OTQ2MzUxNjhlOTk3YjBlYWQyYTkzZGFlY2VkMWY0YTA0YTk1YzBmNmNmYjE5OWY2OWU1NmViNzdcIl0sW1wiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2Y1wiLFwiODVlODliYzAzNzk0NWQ5M2IzNDMwODNiNWExYzg2MTMxYTAxZjYwYzUwMjY5NzYzYjU3MGM4NTRlNWMwOWI3YVwiXSxbXCIzNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1XCIsXCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjXCJdLFtcIjJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2ZcIixcIjJkZTEwNjgyOTVkZDg2NWI2NDU2OTMzNWJkNWRkODAxODFkNzBlY2ZjODgyNjQ4NDIzYmE3NmI1MzJiN2Q2N1wiXSxbXCI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0XCIsXCI3MzAxNmY3YmYyMzRhYWRlNWQxYWE3MWJkZWEyYjFmZjNmYzBkZTJhODg3OTEyZmZlNTRhMzJjZTk3Y2IzNDAyXCJdLFtcImRhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjlcIixcImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTVcIl0sW1wiYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYlwiLFwiMjExOWE0NjBjZTMyNmNkYzc2YzQ1OTI2Yzk4MmZkYWMwZTEwNmU4NjFlZGY2MWM1YTAzOTA2M2YwZTBlNjQ4MlwiXSxbXCI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0XCIsXCJlMDIyY2Y0MmMyYmQ0YTcwOGIzZjUxMjZmMTZhMjRhZDhiMzNiYTQ4ZDA0MjNiNmVmZDVlNjM0ODEwMGQ4YTgyXCJdLFtcIjE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTVcIixcImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTZcIl0sW1wiNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OVwiLFwiMjk3MmQyZGU0ZjhkMjA2ODFhNzhkOTNlYzk2ZmUyM2MyNmJmYWU4NGZiMTRkYjQzYjAxZTFlOTA1NmI4YzQ5XCJdLFtcIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2RcIixcIjgwZmMwNmJkOGNjNWIwMTA5ODA4OGExOTUwZWVkMGRiMDFhYTEzMjk2N2FiNDcyMjM1ZjU2NDI0ODNiMjVlYWZcIl0sW1wiODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZlwiLFwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YVwiXSxbXCI3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiXCIsXCJkMGUzZmE5ZWNhODcyNjkwOTU1OWUwZDc5MjY5MDQ2YmRjNTllYTEwYzcwY2UyYjAyZDQ5OWVjMjI0ZGM3ZjdcIl0sW1wiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOVwiLFwiZWVjZjQxMjUzMTM2ZTVmOTk5NjZmMjE4ODFmZDY1NmViYzQzNDU0MDVjNTIwZGJjMDYzNDY1YjUyMTQwOTkzM1wiXSxbXCI0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjNcIixcIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWFcIl0sW1wiNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NFwiLFwiOTU4ZWY0MmE3ODg2YjY0MDBhMDgyNjZlOWJhMWIzNzg5NmM5NTMzMGQ5NzA3N2NiYmU4ZWIzYzc2NzFjNjBkNlwiXSxbXCJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwXCIsXCJlMGRlZGM5YjNiMmY4ZGFkNGRhMWYzMmRlYzI1MzFkZjllYjVmYmViMDU5OGU0ZmQxYTExN2RiYTcwM2EzYzM3XCJdLFtcIjQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWJcIixcIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2VcIl0sW1wiZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0N1wiLFwiY2VkYWJkOWI4MjIwM2Y3ZTEzZDIwNmZjZGY0ZTMzZDkyYTZjNTNjMjZlNWNjZTI2ZDY1Nzk5NjJjNGUzMWRmNlwiXSxbXCJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxXCIsXCJjYjQ3NDY2MGVmMzVmNWYyYTQxYjY0M2ZhNWU0NjA1NzVmNGZhOWI3OTYyMjMyYTVjMzJmOTA4MzE4YTA0NDc2XCJdLFtcIjI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjBcIixcIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDBcIl0sW1wiNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNVwiLFwiOTFiNjQ5NjA5NDg5ZDYxM2QxZDVlNTkwZjc4ZTZkNzRlY2ZjMDYxZDU3MDQ4YmFkOWU3NmYzMDJjNWI5YzYxXCJdLFtcIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMThcIixcIjY3M2ZiODZlNWJkYTMwZmIzY2QwZWQzMDRlYTQ5YTAyM2VlMzNkMDE5N2E2OTVkMGM1ZDk4MDkzYzUzNjY4M1wiXSxbXCJlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4XCIsXCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1XCJdLFtcIjE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWJcIixcIjNiOTUyZDMyYzY3Y2Y3N2UyZTE3NDQ2ZTIwNDE4MGFiMjFmYjgwOTA4OTUxMzhiNGE0YTc5N2Y4NmU4MDg4OGJcIl0sW1wiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZlwiLFwiNTVlYjJkYWZkODRkNmNjZDVmODYyYjc4NWRjMzlkNGFiMTU3MjIyNzIwZWY5ZGEyMTdiOGM0NWNmMmJhMjQxN1wiXSxbXCI1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzXCIsXCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4XCJdLFtcIjI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmFcIixcImUzOGRhNzZkY2Q0NDA2MjE5ODhkMDBiY2Y3OWFmMjVkNWIyOWMwOTRkYjJhMjMxNDZkMDAzYWZkNDE5NDNlN2FcIl0sW1wiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NVwiLFwiZjk4YTNmZDgzMWViMmI3NDlhOTNiMGU2ZjM1Y2ZiNDBjOGNkNWFhNjY3YTE1NTgxYmMyZmVkZWQ0OThmZDljNlwiXSxbXCI3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhXCIsXCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2XCJdLFtcIjU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2VcIixcImM1MzRhZDQ0MTc1ZmJjMzAwZjRlYTZjZTY0ODMwOWEwNDJjZTczOWE3OTE5Nzk4Y2Q4NWUyMTZjNGEzMDdmNmVcIl0sW1wiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOFwiLFwiZTEzODE3YjQ0ZWUxNGRlNjYzYmY0YmM4MDgzNDFmMzI2OTQ5ZTIxYTZhNzVjMjU3MDc3ODQxOWJkYWY1NzMzZFwiXSxbXCI3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjXCIsXCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyXCJdLFtcIjk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTlcIixcImU0OTFhNDI1MzdmNmU1OTdkNWQyOGEzMjI0YjFiYzI1ZGY5MTU0ZWZiZDJlZjFkMmNiYmEyY2FlNTM0N2Q1N2VcIl0sW1wiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYlwiLFwiMTAwYjYxMGVjNGZmYjQ3NjBkNWMxZmMxMzNlZjZmNmIxMjUwN2EwNTFmMDRhYzU3NjBhZmE1YjI5ZGI4MzQzN1wiXSxbXCIzNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhXCIsXCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExXCJdLFtcImQzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWZcIixcIjhiMzc4YTIyZDgyNzI3OGQ4OWM1ZTliZThmOTUwOGFlM2MyYWQ0NjI5MDM1ODYzMGFmYjM0ZGIwNGVlZGUwYTRcIl0sW1wiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMFwiLFwiNjg2NTFjZjliNmRhOTAzZTA5MTQ0NDhjNmNkOWQ0Y2E4OTY4NzhmNTI4MmJlNGM4Y2MwNmUyYTQwNDA3ODU3NVwiXSxbXCI3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0XCIsXCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkXCJdLFtcIjE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWNcIixcImQ1NmViMzBiNjk0NjNlNzIzNGY1MTM3YjczYjg0MTc3NDM0ODAwYmFjZWJmYzY4NWZjMzdiYmU5ZWZlNDA3MGRcIl0sW1wiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MFwiLFwiZWRkNzdmNTBiY2I1YTNjYWIyZTkwNzM3MzA5NjY3ZjI2NDE0NjJhNTQwNzBmM2Q1MTkyMTJkMzljMTk3YTYyOVwiXSxbXCJlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwXCIsXCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDZcIl0sW1wiMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliM1wiLFwiNjZkYjY1NmY4N2QxZjA0ZmZmZDFmMDQ3ODhjMDY4MzA4NzFlYzVhNjRmZWVlNjg1YmQ4MGYwYjEyODZkODM3NFwiXSxbXCIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmXCIsXCI5NDE0Njg1ZTk3YjFiNTk1NGJkNDZmNzMwMTc0MTM2ZDU3ZjFjZWViNDg3NDQzZGM1MzIxODU3YmE3M2FiZWVcIl0sW1wiZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2M1wiLFwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMVwiXSxbXCJkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4XCIsXCJmYTc3OTY4MTI4ZDljOTJlZTEwMTBmMzM3YWQ0NzE3ZWZmMTVkYjVlZDNjMDQ5YjM0MTFlMDMxNWVhYTQ1OTNiXCJdLFtcIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmZcIixcIjVmMzAzMmY1ODkyMTU2ZTM5Y2NkM2Q3OTE1YjllMWRhMmU2ZGFjOWU2ZjI2ZTk2MTExOGQxNGI4NDYyZTE2NjFcIl0sW1wiNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNVwiLFwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNlwiXSxbXCJlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2XCIsXCI4ZGMyNDEyYWFmZTNiZTVjNGM1ZjM3ZTBlY2M1ZjlmNmE0NDY5ODlhZjA0YzRlMjVlYmFhYzQ3OWVjMWM4YzFlXCJdLFtcIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjVcIixcIjVlNDYzMTE1MGU2MmZiNDBkMGU4YzJhN2NhNTgwNGEzOWQ1ODE4NmE1MGU0OTcxMzk2MjY3NzhlMjViMDY3NGRcIl0sW1wiZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OVwiLFwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkY1wiXSxbXCI3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTFcIixcImYzZTAzMTkxNjllYjliODVkNTQwNDc5NTUzOWE1ZTY4ZmExZmJkNTgzYzA2NGQyNDYyYjY3NWYxOTRhM2RkYjRcIl0sW1wiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNVwiLFwiNDIyNDJhOTY5MjgzYTVmMzM5YmE3ZjA3NWUzNmJhMmFmOTI1Y2UzMGQ3NjdlZDZlNTVmNGIwMzE4ODBkNTYyY1wiXSxbXCJhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1XCIsXCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiXCJdLFtcImM0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTdcIixcIjRmMTQzNTFkMDA4N2VmYTQ5ZDI0NWIzMjg5ODQ5ODlkNWNhZjk0NTBmMzRiZmMwZWQxNmU5NmI1OGZhOTkxM1wiXSxbXCI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxXCIsXCI3Mzg2N2Y1OWMwNjU5ZTgxOTA0ZjlhMWM3NTQzNjk4ZTYyNTYyZDY3NDRjMTY5Y2U3YTM2ZGUwMWE4ZDYxNTRcIl0sW1wiNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNVwiLFwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NVwiXSxbXCIzNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2XCIsXCJkMjQyNGIxYjFhYmU0ZWI4MTY0MjI3YjA4NWM5YWE5NDU2ZWExMzQ5M2ZkNTYzZTA2ZmQ1MWNmNTY5NGM3OGZjXCJdLFtcIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNlwiLFwiZWFkMTIxNjg1OTVmZTFiZTk5MjUyMTI5YjZlNTZiMzM5MWY3YWIxNDEwY2QxZTBlZjNkY2RjYWJkMmZkYTIyNFwiXSxbXCI4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlXCIsXCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlXCJdLFtcIjFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTRcIixcIjYwNjYwMjU3ZGQxMWIzYWE5YzhlZDYxOGQyNGVkZmYyMzA2ZDMyMGYxZDAzMDEwZTMzYTdkMjA1N2YzYjNiNlwiXSxbXCI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxXCIsXCIzZDk4YTljZGQwMjZkZDQzZjM5MDQ4ZjI1YTg4NDdmNGZjYWZhZDE4OTVkN2E2MzNjNmZlZDNjMzVlOTk5NTExXCJdLFtcIjI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTFcIixcImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YlwiXSxbXCJhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyXCIsXCJhZTQzNDEwMmVkZGUwOTU4ZWM0YjE5ZDkxN2E2YTI4ZTZiNzJkYTE4MzRhZmYwZTY1MGYwNDk1MDNhMjk2Y2YyXCJdLFtcIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNVwiLFwiY2YyMTc0MTE4YzhiNmQ3YTRiNDhmNmQ1MzRjZTVjNzk0MjJjMDg2YTYzNDYwNTAyYjgyN2NlNjJhMzI2NjgzY1wiXSxbXCJkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiXCIsXCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzXCJdLFtcImVhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDRcIixcIjMyMmFmNDkwOGM3MzEyYjBjZmJmZTM2OWY3YTdiM2NkYjdkNDQ5NGJjMjgyMzcwMGNmZDY1MjE4OGEzZWE5OGRcIl0sW1wiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZlwiLFwiNjc0OWU2N2MwMjliODVmNTJhMDM0ZWFmZDA5NjgzNmIyNTIwODE4NjgwZTI2YWM4ZjNkZmJjZGI3MTc0OTcwMFwiXSxbXCJlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OVwiLFwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNFwiXSxbXCI1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2XCIsXCJiMGVhNTU4YTExM2MzMGJlYTYwZmM0Nzc1NDYwYzc5MDFmZjBiMDUzZDI1Y2EyYmRlZWU5OGYxYTRiZTVkMTk2XCJdLFtcIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODRcIixcIjk5OGM3NGE4Y2Q0NWFjMDEyODlkNTgzM2E3YmViNDc0NGZmNTM2YjAxYjI1N2JlNGM1NzY3YmVhOTNlYTU3YTRcIl0sW1wiM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YVwiLFwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1N1wiXSxbXCJjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwXCIsXCJiZGQ0NjAzOWZlZWQxNzg4MWQxZTA4NjJkYjM0N2Y4Y2YzOTViNzRmYzRiY2RjNGU5NDBiNzRlM2FjMWYxYjEzXCJdLFtcImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTdcIixcIjZmMGEyNTZiYzVlZmRmNDI5YTJmYjYyNDJmMWE0M2EyZDliOTI1YmI0YTRiM2EyNmJiOGUwZjQ1ZWI1OTYwOTZcIl0sW1wiYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzXCIsXCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4XCJdLFtcImE2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWZcIixcIjIxYWU3ZjQ2ODBlODg5YmIxMzA2MTllMmMwZjk1YTM2MGNlYjU3M2M3MDYwMzEzOTg2MmFmZDYxN2ZhOWI5ZlwiXSxbXCIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4XCIsXCI2MGVhN2Y2MWEzNTM1MjRkMWM5ODdmNmVjZWM5MmYwODZkNTY1YWI2ODc4NzBjYjEyNjg5ZmYxZTMxYzc0NDQ4XCJdLFtcImRhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmFcIixcIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGFcIl0sW1wiYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMVwiLFwiNWNhNTYwNzUzYmUyYTEyZmM2ZGU2Y2FmMmNiNDg5NTY1ZGI5MzYxNTZiOTUxNGUxYmI1ZTgzMDM3ZTBmYTJkNFwiXSxbXCI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyXCIsXCI3NTcxZDc0ZWU1ZTBmYjkyYTdhOGIzM2EwNzc4MzM0MWE1NDkyMTQ0Y2M1NGJjYzQwYTk0NDczNjkzNjA2NDM3XCJdLFtcIjM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWFcIixcImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjdcIl0sW1wiY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNlwiLFwiOGZkNjRhMTRjMDZiNTg5YzI2Yjk0N2FlMmJjZjZiZmEwMTQ5ZWYwYmUxNGVkNGQ4MGY0NDhhMDFjNDNiMWM2ZFwiXSxbXCJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2XCIsXCIzOWU1Yzk5MjViNWE1NGIwNzQzM2E0ZjE4YzYxNzI2ZjhiYjEzMWMwMTJjYTU0MmViMjRhOGFjMDcyMDA2ODJhXCJdLFtcImQ0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGVcIixcIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTRcIl0sW1wiNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNFwiLFwiMjVhNzQ4YWIzNjc5NzlkOTg3MzNjMzhhMWZhMWMyZTdkYzZjYzA3ZGIyZDYwYTlhZTdhNzZhYWE0OWJkMGY3N1wiXSxbXCJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhXCIsXCJlY2ZiNzA1NmNmMWRlMDQyZjk0MjBiYWIzOTY3OTNjMGMzOTBiZGU3NGI0YmJkZmYxNmE4M2FlMDlhOWE3NTE3XCJdLFtcIjZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTlcIixcImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTBcIl0sW1wiZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZlwiLFwiZjVjNTQ3NTRhOGY3MWVlNTQwYjliNDg3Mjg0NzNlMzE0ZjcyOWFjNTMwOGIwNjkzODM2MDk5MGUyYmZhZDEyNVwiXSxbXCJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjXCIsXCI2Y2I5YTg4NzZkOWNiODUyMDYwOWFmM2FkZDI2Y2QyMGEwYTdjZDhhOTQxMTEzMWNlODVmNDQxMDAwOTkyMjNlXCJdLFtcIjEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDJcIixcImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjFcIl0sW1wiZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YVwiLFwiMWFjYjI1MGYyNTVkZDYxYzQzZDk0Y2NjNjcwZDBmNThmNDlhZTNmYTE1Yjk2NjIzZTU0MzBkYTBhZDZjNjJiMlwiXSxbXCJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwXCIsXCI1ZjMxMGQ0YjNjOTliOWViYjE5Zjc3ZDQxYzFkZWUwMThjZjBkMzRmZDQxOTE2MTQwMDNlOTQ1YTEyMTZlNDIzXCJdLFtcImZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGRcIixcIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDhcIl0sW1wiOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMVwiLFwiY2RiNTU5ZWVkYzJkNzlmOTI2YmFmNDRmYjg0ZWE0ZDQ0YmNmNTBmZWU1MWQ3Y2ViMzBlMmU3ZjQ2MzAzNjc1OFwiXSxbXCI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzXCIsXCJjM2I5OTdkMDUwZWU1ZDQyM2ViYWY2NmE2ZGI5ZjU3YjMxODBjOTAyODc1Njc5ZGU5MjRiNjlkODRhN2IzNzVcIl0sW1wiZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MlwiLFwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZFwiXSxbXCI3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzXCIsXCJjYTVlZjdkNGIyMzFjOTRjM2IxNTM4OWE1ZjYzMTFlOWRhZmY3YmI2N2IxMDNlOTg4MGVmNGJmZjYzN2FjYWVjXCJdLFtcIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDBcIixcIjk3MzExNDFkODFmYzhmODA4NGQzN2M2ZTc1NDIwMDZiM2VlMWI0MGQ2MGRmZTUzNjJhNWIxMzJmZDE3ZGRjMFwiXSxbXCIzMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4XCIsXCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjXCJdLFtcImUyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjdcIixcImQzYWEyZWQ3MWM5ZGQyMjQ3YTYyZGYwNjI3MzZlYjBiYWRkZWE5ZTM2MTIyZDJiZTg2NDFhYmNiMDA1Y2M0YTRcIl0sW1wiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOFwiLFwiYzRlMTAyMDkxNjk4MGE0ZGE1ZDAxYWM1ZTZhZDMzMDczNGVmMGQ3OTA2NjMxYzRmMjM5MDQyNmIyZWRkNzkxZlwiXSxbXCI0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlXCIsXCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5XCJdLFtcIjNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2RcIixcImNkMWJjN2NiNmNjNDA3YmIyZjBjYTY0N2M3MThhNzMwY2Y3MTg3MmU3ZDBkMmE1M2ZhMjBlZmNkZmU2MTgyNlwiXSxbXCI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiXCIsXCIyOTlkMjFmOTQxM2YzM2IzZWRmNDNiMjU3MDA0NTgwYjcwZGI1N2RhMGIxODIyNTllMDllZWNjNjllMGQzOGE1XCJdLFtcImQzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGZcIixcImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODdcIl0sW1wiMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNlwiLFwiNDYyZjliY2U2MTk4OTg2Mzg0OTkzNTAxMTNiYmM5YjEwYTg3OGQzNWRhNzA3NDBkYzY5NWE1NTllYjg4ZGI3YlwiXSxbXCJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3XCIsXCI2MjE4OGJjNDlkNjFlNTQyODU3M2Q0OGE3NGUxYzY1NWIxYzYxMDkwOTA1NjgyYTBkNTU1OGVkNzJkY2NiOWJjXCJdLFtcIjkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGFcIixcIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2NcIl0sW1wiYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyY1wiLFwiYWI4YzFlMDg2ZDA0ZTgxMzc0NGE2NTViMmRmOGQ1ZjgzYjNjZGM2ZmFhMzA4OGMxZDNhZWExNDU0ZTNhMWQ1ZlwiXSxbXCJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyXCIsXCI0Y2IwNDQzN2YzOTFlZDczMTExYTEzY2MxZDRkZDBkYjE2OTM0NjVjMjI0MDQ4MGQ4OTU1ZTg1OTJmMjc0NDdhXCJdLFtcImQzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmJcIixcImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDZcIl0sW1wiNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NVwiLFwiYmZlZmFjZGIwZTVkMGZkN2RmM2EzMTFhOTRkZTA2MmIyNmI4MGM2MWZiYzk3NTA4Yjc5OTkyNjcxZWY3Y2E3ZlwiXSxbXCI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3XCIsXCI2MDNjMTJkYWYzZDk4NjJlZjJiMjVmZTFkZTI4OWFlZDI0ZWQyOTFlMGVjNjcwODcwM2E1YmQ1NjdmMzJlZDAzXCJdLFtcIjc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTlcIixcImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDhcIl0sW1wiMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhM1wiLFwiNTUzZTA0ZjZiMDE4YjRmYTZjOGYzOWU3ZjMxMWQzMTc2MjkwZDBlMGYxOWNhNzNmMTc3MTRkOTk3N2EyMmZmOFwiXSxbXCI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3XCIsXCI3MTJmY2RkMWI5MDUzZjA5MDAzYTM0ODFmYTc3NjJlOWZmZDdjOGVmMzVhMzg1MDllMmZiZjI2MjkwMDgzNzNcIl0sW1wiMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NlwiLFwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjM1wiXSxbXCI3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4XCIsXCI5ODUyMzkwYTk5NTA3Njc5ZmQwYjg2ZmQyYjM5YTg2OGQ3ZWZjMjIxNTEzNDZlMWEzY2E0NzI2NTg2YTZiZWQ4XCJdLFtcIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjFcIixcIjllOTk0OTgwZDk5MTdlMjJiNzZiMDYxOTI3ZmEwNDE0M2QwOTZjY2M1NDk2M2U2YTVlYmZhNWYzZjhlMjg2YzFcIl0sW1wiMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MFwiLFwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOVwiXV1cbn19fSxmdW5jdGlvbih0LGUscil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQuc2xpY2UoKTtpZighdClyZXR1cm5bXTt2YXIgcj1bXTtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT0wfHRbbl07cmV0dXJuIHJ9aWYoZSl7aWYoXCJoZXhcIj09PWUpe3Q9dC5yZXBsYWNlKC9bXmEtejAtOV0rL2dpLFwiXCIpLHQubGVuZ3RoJTIhPT0wJiYodD1cIjBcIit0KTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTIpci5wdXNoKHBhcnNlSW50KHRbbl0rdFtuKzFdLDE2KSl9fWVsc2UgZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXQuY2hhckNvZGVBdChuKSxvPWk+PjgsYT0yNTUmaTtvP3IucHVzaChvLGEpOnIucHVzaChhKX1yZXR1cm4gcn1mdW5jdGlvbiBpKHQpe3JldHVybiAxPT09dC5sZW5ndGg/XCIwXCIrdDp0fWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlPVwiXCIscj0wO3I8dC5sZW5ndGg7cisrKWUrPWkodFtyXS50b1N0cmluZygxNikpO3JldHVybiBlfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIHI9W10sbj0xPDxlKzEsaT10LmNsb25lKCk7aS5jbXBuKDEpPj0wOyl7dmFyIG87aWYoaS5pc09kZCgpKXt2YXIgYT1pLmFuZGxuKG4tMSk7bz1hPihuPj4xKS0xPyhuPj4xKS1hOmEsaS5pc3VibihvKX1lbHNlIG89MDtyLnB1c2gobyk7Zm9yKHZhciBmPTAhPT1pLmNtcG4oMCkmJjA9PT1pLmFuZGxuKG4tMSk/ZSsxOjEscz0xO3M8ZjtzKyspci5wdXNoKDApO2kuaXVzaHJuKGYpfXJldHVybiByfWZ1bmN0aW9uIGYodCxlKXt2YXIgcj1bW10sW11dO3Q9dC5jbG9uZSgpLGU9ZS5jbG9uZSgpO2Zvcih2YXIgbj0wLGk9MDt0LmNtcG4oLW4pPjB8fGUuY21wbigtaSk+MDspe3ZhciBvPXQuYW5kbG4oMykrbiYzLGE9ZS5hbmRsbigzKStpJjM7Mz09PW8mJihvPS0xKSwzPT09YSYmKGE9LTEpO3ZhciBmO2lmKDA9PT0oMSZvKSlmPTA7ZWxzZXt2YXIgcz10LmFuZGxuKDcpK24mNztmPTMhPT1zJiY1IT09c3x8MiE9PWE/bzotb31yWzBdLnB1c2goZik7dmFyIHU7aWYoMD09PSgxJmEpKXU9MDtlbHNle3ZhciBzPWUuYW5kbG4oNykraSY3O3U9MyE9PXMmJjUhPT1zfHwyIT09bz9hOi1hfXJbMV0ucHVzaCh1KSwyKm49PT1mKzEmJihuPTEtbiksMippPT09dSsxJiYoaT0xLWkpLHQuaXVzaHJuKDEpLGUuaXVzaHJuKDEpfXJldHVybiByfWZ1bmN0aW9uIHModCxlLHIpe3ZhciBuPVwiX1wiK2U7dC5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpc1tuXT90aGlzW25dOnRoaXNbbl09ci5jYWxsKHRoaXMpfX1mdW5jdGlvbiB1KHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P2MudG9BcnJheSh0LFwiaGV4XCIpOnR9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gbmV3IGQodCxcImhleFwiLFwibGVcIil9dmFyIGM9ZSxkPXIoMzApO2MuYXNzZXJ0PWZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGV8fFwiQXNzZXJ0aW9uIGZhaWxlZFwiKX0sYy50b0FycmF5PW4sYy56ZXJvMj1pLGMudG9IZXg9byxjLmVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVyblwiaGV4XCI9PT1lP28odCk6dH0sYy5nZXROQUY9YSxjLmdldEpTRj1mLGMuY2FjaGVkUHJvcGVydHk9cyxjLnBhcnNlQnl0ZXM9dSxjLmludEZyb21MRT1ofSxmdW5jdGlvbih0LGUscil7ZnVuY3Rpb24gbih0KXt0aGlzLnJhbmQ9dH12YXIgaTtpZih0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGl8fChpPW5ldyBuKG51bGwpKSxpLmdlbmVyYXRlKHQpfSx0LmV4cG9ydHMuUmFuZD1uLG4ucHJvdG90eXBlLmdlbmVyYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYW5kKHQpfSxcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXdpbmRvdy5jcnlwdG8mJndpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP24ucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhlKSxlfTp3aW5kb3cubXNDcnlwdG8mJndpbmRvdy5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXM/bi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHdpbmRvdy5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoZSksZX06bi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQgeWV0XCIpfTtlbHNlIHRyeXt2YXIgbz1yKDYxMCk7bi5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG8ucmFuZG9tQnl0ZXModCl9fWNhdGNoKHQpe24ucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgVWludDhBcnJheSh0KSxyPTA7cjxlLmxlbmd0aDtyKyspZVtyXT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiBlfX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7dGhpcy5wZW5kaW5nPW51bGwsdGhpcy5wZW5kaW5nVG90YWw9MCx0aGlzLmJsb2NrU2l6ZT10aGlzLmNvbnN0cnVjdG9yLmJsb2NrU2l6ZSx0aGlzLm91dFNpemU9dGhpcy5jb25zdHJ1Y3Rvci5vdXRTaXplLHRoaXMuaG1hY1N0cmVuZ3RoPXRoaXMuY29uc3RydWN0b3IuaG1hY1N0cmVuZ3RoLHRoaXMucGFkTGVuZ3RoPXRoaXMuY29uc3RydWN0b3IucGFkTGVuZ3RoLzgsdGhpcy5lbmRpYW49XCJiaWdcIix0aGlzLl9kZWx0YTg9dGhpcy5ibG9ja1NpemUvOCx0aGlzLl9kZWx0YTMyPXRoaXMuYmxvY2tTaXplLzMyfXZhciBpPXIoNTApLG89aS51dGlscyxhPW8uYXNzZXJ0O2UuQmxvY2tIYXNoPW4sbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSl7aWYodD1vLnRvQXJyYXkodCxlKSx0aGlzLnBlbmRpbmc/dGhpcy5wZW5kaW5nPXRoaXMucGVuZGluZy5jb25jYXQodCk6dGhpcy5wZW5kaW5nPXQsdGhpcy5wZW5kaW5nVG90YWwrPXQubGVuZ3RoLHRoaXMucGVuZGluZy5sZW5ndGg+PXRoaXMuX2RlbHRhOCl7dD10aGlzLnBlbmRpbmc7dmFyIHI9dC5sZW5ndGgldGhpcy5fZGVsdGE4O3RoaXMucGVuZGluZz10LnNsaWNlKHQubGVuZ3RoLXIsdC5sZW5ndGgpLDA9PT10aGlzLnBlbmRpbmcubGVuZ3RoJiYodGhpcy5wZW5kaW5nPW51bGwpLHQ9by5qb2luMzIodCwwLHQubGVuZ3RoLXIsdGhpcy5lbmRpYW4pO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bis9dGhpcy5fZGVsdGEzMil0aGlzLl91cGRhdGUodCxuLG4rdGhpcy5fZGVsdGEzMil9cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpLGEobnVsbD09PXRoaXMucGVuZGluZyksdGhpcy5fZGlnZXN0KHQpfSxuLnByb3RvdHlwZS5fcGFkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wZW5kaW5nVG90YWwsZT10aGlzLl9kZWx0YTgscj1lLSh0K3RoaXMucGFkTGVuZ3RoKSVlLG49bmV3IEFycmF5KHIrdGhpcy5wYWRMZW5ndGgpO25bMF09MTI4O2Zvcih2YXIgaT0xO2k8cjtpKyspbltpXT0wO2lmKHQ8PD0zLFwiYmlnXCI9PT10aGlzLmVuZGlhbil7Zm9yKHZhciBvPTg7bzx0aGlzLnBhZExlbmd0aDtvKyspbltpKytdPTA7bltpKytdPTAsbltpKytdPTAsbltpKytdPTAsbltpKytdPTAsbltpKytdPXQ+Pj4yNCYyNTUsbltpKytdPXQ+Pj4xNiYyNTUsbltpKytdPXQ+Pj44JjI1NSxuW2krK109MjU1JnR9ZWxzZXtuW2krK109MjU1JnQsbltpKytdPXQ+Pj44JjI1NSxuW2krK109dD4+PjE2JjI1NSxuW2krK109dD4+PjI0JjI1NSxuW2krK109MCxuW2krK109MCxuW2krK109MCxuW2krK109MDtmb3IodmFyIG89ODtvPHRoaXMucGFkTGVuZ3RoO28rKyluW2krK109MH1yZXR1cm4gbn19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSxyKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KHRoaXMuSGFzaD10LHRoaXMuYmxvY2tTaXplPXQuYmxvY2tTaXplLzgsdGhpcy5vdXRTaXplPXQub3V0U2l6ZS84LHRoaXMuaW5uZXI9bnVsbCx0aGlzLm91dGVyPW51bGwsdm9pZCB0aGlzLl9pbml0KG8udG9BcnJheShlLHIpKSk6bmV3IG4odCxlLHIpfXZhciBpPXIoNTApLG89aS51dGlscyxhPW8uYXNzZXJ0O3QuZXhwb3J0cz1uLG4ucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKHQpe3QubGVuZ3RoPnRoaXMuYmxvY2tTaXplJiYodD0obmV3IHRoaXMuSGFzaCkudXBkYXRlKHQpLmRpZ2VzdCgpKSxhKHQubGVuZ3RoPD10aGlzLmJsb2NrU2l6ZSk7Zm9yKHZhciBlPXQubGVuZ3RoO2U8dGhpcy5ibG9ja1NpemU7ZSsrKXQucHVzaCgwKTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdXj01NDt0aGlzLmlubmVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUodCk7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXV49MTA2O3RoaXMub3V0ZXI9KG5ldyB0aGlzLkhhc2gpLnVwZGF0ZSh0KX0sbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKHQsZSksdGhpc30sbi5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKSx0aGlzLm91dGVyLmRpZ2VzdCh0KX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBuPyhsLmNhbGwodGhpcyksdGhpcy5oPVsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0sdm9pZCh0aGlzLmVuZGlhbj1cImxpdHRsZVwiKSk6bmV3IG59ZnVuY3Rpb24gaSh0LGUscixuKXtyZXR1cm4gdDw9MTU/ZV5yXm46dDw9MzE/ZSZyfH5lJm46dDw9NDc/KGV8fnIpXm46dDw9NjM/ZSZufHImfm46ZV4ocnx+bil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9MTU/MDp0PD0zMT8xNTE4NTAwMjQ5OnQ8PTQ3PzE4NTk3NzUzOTM6dDw9NjM/MjQwMDk1OTcwODoyODQwODUzODM4fWZ1bmN0aW9uIGEodCl7cmV0dXJuIHQ8PTE1PzEzNTI4Mjk5MjY6dDw9MzE/MTU0ODYwMzY4NDp0PD00Nz8xODM2MDcyNjkxOnQ8PTYzPzIwNTM5OTQyMTc6MH12YXIgZj1yKDUwKSxzPWYudXRpbHMsdT1zLnJvdGwzMixoPXMuc3VtMzIsYz1zLnN1bTMyXzMsZD1zLnN1bTMyXzQsbD1mLmNvbW1vbi5CbG9ja0hhc2g7cy5pbmhlcml0cyhuLGwpLGUucmlwZW1kMTYwPW4sbi5ibG9ja1NpemU9NTEyLG4ub3V0U2l6ZT0xNjAsbi5obWFjU3RyZW5ndGg9MTkyLG4ucGFkTGVuZ3RoPTY0LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5oWzBdLG49dGhpcy5oWzFdLGY9dGhpcy5oWzJdLHM9dGhpcy5oWzNdLGw9dGhpcy5oWzRdLG09cixnPW4sdz1mLF89cyxNPWwsUz0wO1M8ODA7UysrKXt2YXIgRT1oKHUoZChyLGkoUyxuLGYscyksdFtwW1NdK2VdLG8oUykpLHZbU10pLGwpO3I9bCxsPXMscz11KGYsMTApLGY9bixuPUUsRT1oKHUoZChtLGkoNzktUyxnLHcsXyksdFtiW1NdK2VdLGEoUykpLHlbU10pLE0pLG09TSxNPV8sXz11KHcsMTApLHc9ZyxnPUV9RT1jKHRoaXMuaFsxXSxmLF8pLHRoaXMuaFsxXT1jKHRoaXMuaFsyXSxzLE0pLHRoaXMuaFsyXT1jKHRoaXMuaFszXSxsLG0pLHRoaXMuaFszXT1jKHRoaXMuaFs0XSxyLGcpLHRoaXMuaFs0XT1jKHRoaXMuaFswXSxuLHcpLHRoaXMuaFswXT1FfSxuLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P3MudG9IZXgzMih0aGlzLmgsXCJsaXR0bGVcIik6cy5zcGxpdDMyKHRoaXMuaCxcImxpdHRsZVwiKX07dmFyIHA9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10sYj1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSx2PVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSx5PVs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KFguY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsMzE0NDEzNDI3NywxMDEzOTA0MjQyLDI3NzM0ODA3NjIsMTM1OTg5MzExOSwyNjAwODIyOTI0LDUyODczNDYzNSwxNTQxNDU5MjI1XSx0aGlzLms9WSx2b2lkKHRoaXMuVz1uZXcgQXJyYXkoNjQpKSk6bmV3IG59ZnVuY3Rpb24gaSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgaT8obi5jYWxsKHRoaXMpLHZvaWQodGhpcy5oPVszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XSkpOm5ldyBpfWZ1bmN0aW9uIG8oKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG8/KFguY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsNDA4OTIzNTcyMCwzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUsMTAxMzkwNDI0Miw0MjcxMTc1NzIzLDI3NzM0ODA3NjIsMTU5NTc1MDEyOSwxMzU5ODkzMTE5LDI5MTc1NjUxMzcsMjYwMDgyMjkyNCw3MjU1MTExOTksNTI4NzM0NjM1LDQyMTUzODk1NDcsMTU0MTQ1OTIyNSwzMjcwMzMyMDldLHRoaXMuaz1XLHZvaWQodGhpcy5XPW5ldyBBcnJheSgxNjApKSk6bmV3IG99ZnVuY3Rpb24gYSgpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgYT8oby5jYWxsKHRoaXMpLHZvaWQodGhpcy5oPVszNDE4MDcwMzY1LDMyMzgzNzEwMzIsMTY1NDI3MDI1MCw5MTQxNTA2NjMsMjQzODUyOTM3MCw4MTI3MDI5OTksMzU1NDYyMzYwLDQxNDQ5MTI2OTcsMTczMTQwNTQxNSw0MjkwNzc1ODU3LDIzOTQxODAyMzEsMTc1MDYwMzAyNSwzNjc1MDA4NTI1LDE2OTQwNzY4MzksMTIwMzA2MjgxMywzMjA0MDc1NDI4XSkpOm5ldyBhfWZ1bmN0aW9uIGYoKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGY/KFguY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx2b2lkKHRoaXMuVz1uZXcgQXJyYXkoODApKSk6bmV3IGZ9ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIHQmZV5+dCZyfWZ1bmN0aW9uIHUodCxlLHIpe3JldHVybiB0JmVedCZyXmUmcn1mdW5jdGlvbiBoKHQsZSxyKXtyZXR1cm4gdF5lXnJ9ZnVuY3Rpb24gYyh0KXtyZXR1cm4gUih0LDIpXlIodCwxMyleUih0LDIyKX1mdW5jdGlvbiBkKHQpe3JldHVybiBSKHQsNileUih0LDExKV5SKHQsMjUpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIFIodCw3KV5SKHQsMTgpXnQ+Pj4zfWZ1bmN0aW9uIHAodCl7cmV0dXJuIFIodCwxNyleUih0LDE5KV50Pj4+MTB9ZnVuY3Rpb24gYih0LGUscixuKXtyZXR1cm4gMD09PXQ/cyhlLHIsbik6MT09PXR8fDM9PT10P2goZSxyLG4pOjI9PT10P3UoZSxyLG4pOnZvaWQgMH1mdW5jdGlvbiB2KHQsZSxyLG4saSxvKXt2YXIgYT10JnJefnQmaTtyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiB5KHQsZSxyLG4saSxvKXt2YXIgYT1lJm5efmUmbztyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiBtKHQsZSxyLG4saSxvKXt2YXIgYT10JnJedCZpXnImaTtyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiBnKHQsZSxyLG4saSxvKXt2YXIgYT1lJm5eZSZvXm4mbztyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiB3KHQsZSl7dmFyIHI9Tih0LGUsMjgpLG49TihlLHQsMiksaT1OKGUsdCw3KSxvPXJebl5pO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfWZ1bmN0aW9uIF8odCxlKXt2YXIgcj1MKHQsZSwyOCksbj1MKGUsdCwyKSxpPUwoZSx0LDcpLG89cl5uXmk7cmV0dXJuIG88MCYmKG8rPTQyOTQ5NjcyOTYpLG99ZnVuY3Rpb24gTSh0LGUpe3ZhciByPU4odCxlLDE0KSxuPU4odCxlLDE4KSxpPU4oZSx0LDkpLG89cl5uXmk7cmV0dXJuIG88MCYmKG8rPTQyOTQ5NjcyOTYpLG99ZnVuY3Rpb24gUyh0LGUpe3ZhciByPUwodCxlLDE0KSxuPUwodCxlLDE4KSxpPUwoZSx0LDkpLG89cl5uXmk7cmV0dXJuIG88MCYmKG8rPTQyOTQ5NjcyOTYpLG99ZnVuY3Rpb24gRSh0LGUpe3ZhciByPU4odCxlLDEpLG49Tih0LGUsOCksaT1VKHQsZSw3KSxvPXJebl5pO3JldHVybiBvPDAmJihvKz00Mjk0OTY3Mjk2KSxvfWZ1bmN0aW9uIEEodCxlKXt2YXIgcj1MKHQsZSwxKSxuPUwodCxlLDgpLGk9eih0LGUsNyksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiBrKHQsZSl7dmFyIHI9Tih0LGUsMTkpLG49TihlLHQsMjkpLGk9VSh0LGUsNiksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb31mdW5jdGlvbiB4KHQsZSl7dmFyIHI9TCh0LGUsMTkpLG49TChlLHQsMjkpLGk9eih0LGUsNiksbz1yXm5eaTtyZXR1cm4gbzwwJiYobys9NDI5NDk2NzI5Niksb312YXIgST1yKDUwKSxCPUkudXRpbHMsTz1CLmFzc2VydCxSPUIucm90cjMyLFA9Qi5yb3RsMzIsVD1CLnN1bTMyLGo9Qi5zdW0zMl80LEM9Qi5zdW0zMl81LE49Qi5yb3RyNjRfaGksTD1CLnJvdHI2NF9sbyxVPUIuc2hyNjRfaGksej1CLnNocjY0X2xvLEQ9Qi5zdW02NCxxPUIuc3VtNjRfaGksRj1CLnN1bTY0X2xvLEs9Qi5zdW02NF80X2hpLEc9Qi5zdW02NF80X2xvLFY9Qi5zdW02NF81X2hpLEg9Qi5zdW02NF81X2xvLFg9SS5jb21tb24uQmxvY2tIYXNoLFk9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0sVz1bMTExNjM1MjQwOCwzNjA5NzY3NDU4LDE4OTk0NDc0NDEsNjAyODkxNzI1LDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSwzOTIxMDA5NTczLDIxNzMyOTU1NDgsOTYxOTg3MTYzLDQwODE2Mjg0NzIsMTUwODk3MDk5MywzMDUzODM0MjY1LDI0NTM2MzU3NDgsMjkzNzY3MTU3OSwyODcwNzYzMjIxLDM2NjQ2MDk1NjAsMzYyNDM4MTA4MCwyNzM0ODgzMzk0LDMxMDU5ODQwMSwxMTY0OTk2NTQyLDYwNzIyNTI3OCwxMzIzNjEwNzY0LDE0MjY4ODE5ODcsMzU5MDMwNDk5NCwxOTI1MDc4Mzg4LDQwNjgxODIzODMsMjE2MjA3ODIwNiw5OTEzMzYxMTMsMjYxNDg4ODEwMyw2MzM4MDMzMTcsMzI0ODIyMjU4MCwzNDc5Nzc0ODY4LDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCw0MDIyMjI0Nzc0LDk0NDcxMTEzOSwyNjQzNDcwNzgsMjM0MTI2Mjc3Myw2MDQ4MDc2MjgsMjAwNzgwMDkzMyw3NzAyNTU5ODMsMTQ5NTk5MDkwMSwxMjQ5MTUwMTIyLDE4NTY0MzEyMzUsMTU1NTA4MTY5MiwzMTc1MjE4MTMyLDE5OTYwNjQ5ODYsMjE5ODk1MDgzNywyNTU0MjIwODgyLDM5OTk3MTkzMzksMjgyMTgzNDM0OSw3NjY3ODQwMTYsMjk1Mjk5NjgwOCwyNTY2NTk0ODc5LDMyMTAzMTM2NzEsMzIwMzMzNzk1NiwzMzM2NTcxODkxLDEwMzQ0NTcwMjYsMzU4NDUyODcxMSwyNDY2OTQ4OTAxLDExMzkyNjk5MywzNzU4MzI2MzgzLDMzODI0MTg5NSwxNjg3MTc5MzYsNjY2MzA3MjA1LDExODgxNzk5NjQsNzczNTI5OTEyLDE1NDYwNDU3MzQsMTI5NDc1NzM3MiwxNTIyODA1NDg1LDEzOTYxODIyOTEsMjY0MzgzMzgyMywxNjk1MTgzNzAwLDIzNDM1MjczOTAsMTk4NjY2MTA1MSwxMDE0NDc3NDgwLDIxNzcwMjYzNTAsMTIwNjc1OTE0MiwyNDU2OTU2MDM3LDM0NDA3NzYyNywyNzMwNDg1OTIxLDEyOTA4NjM0NjAsMjgyMDMwMjQxMSwzMTU4NDU0MjczLDMyNTk3MzA4MDAsMzUwNTk1MjY1NywzMzQ1NzY0NzcxLDEwNjIxNzAwOCwzNTE2MDY1ODE3LDM2MDYwMDgzNDQsMzYwMDM1MjgwNCwxNDMyNzI1Nzc2LDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCwyNzU0MjMzNDQsODUxMTY5NzIwLDQzMDIyNzczNCwzMTAwODIzNzUyLDUwNjk0ODYxNiwxMzYzMjU4MTk1LDY1OTA2MDU1NiwzNzUwNjg1NTkzLDg4Mzk5Nzg3NywzNzg1MDUwMjgwLDk1ODEzOTU3MSwzMzE4MzA3NDI3LDEzMjI4MjIyMTgsMzgxMjcyMzQwMywxNTM3MDAyMDYzLDIwMDMwMzQ5OTUsMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5LDE5NTU1NjIyMjIsMTU3NTk5MDAxMiwyMDI0MTA0ODE1LDExMjU1OTI5MjgsMjIyNzczMDQ1MiwyNzE2OTA0MzA2LDIzNjE4NTI0MjQsNDQyNzc2MDQ0LDI0Mjg0MzY0NzQsNTkzNjk4MzQ0LDI3NTY3MzQxODcsMzczMzExMDI0OSwzMjA0MDMxNDc5LDI5OTkzNTE1NzMsMzMyOTMyNTI5OCwzODE1OTIwNDI3LDMzOTE1Njk2MTQsMzkyODM4MzkwMCwzNTE1MjY3MjcxLDU2NjI4MDcxMSwzOTQwMTg3NjA2LDM0NTQwNjk1MzQsNDExODYzMDI3MSw0MDAwMjM5OTkyLDExNjQxODQ3NCwxOTE0MTM4NTU0LDE3NDI5MjQyMSwyNzMxMDU1MjcwLDI4OTM4MDM1NiwzMjAzOTkzMDA2LDQ2MDM5MzI2OSwzMjA2MjAzMTUsNjg1NDcxNzMzLDU4NzQ5NjgzNiw4NTIxNDI5NzEsMTA4Njc5Mjg1MSwxMDE3MDM2Mjk4LDM2NTU0MzEwMCwxMTI2MDAwNTgwLDI2MTgyOTc2NzYsMTI4ODAzMzQ3MCwzNDA5ODU1MTU4LDE1MDE1MDU5NDgsNDIzNDUwOTg2NiwxNjA3MTY3OTE1LDk4NzE2NzQ2OCwxODE2NDAyMzE2LDEyNDYxODk1OTFdLFo9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDMzOTU0Njk3ODJdO0IuaW5oZXJpdHMobixYKSxlLnNoYTI1Nj1uLG4uYmxvY2tTaXplPTUxMixuLm91dFNpemU9MjU2LG4uaG1hY1N0cmVuZ3RoPTE5MixuLnBhZExlbmd0aD02NCxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuVyxuPTA7bjwxNjtuKyspcltuXT10W2Urbl07Zm9yKDtuPHIubGVuZ3RoO24rKylyW25dPWoocChyW24tMl0pLHJbbi03XSxsKHJbbi0xNV0pLHJbbi0xNl0pO3ZhciBpPXRoaXMuaFswXSxvPXRoaXMuaFsxXSxhPXRoaXMuaFsyXSxmPXRoaXMuaFszXSxoPXRoaXMuaFs0XSxiPXRoaXMuaFs1XSx2PXRoaXMuaFs2XSx5PXRoaXMuaFs3XTtPKHRoaXMuay5sZW5ndGg9PT1yLmxlbmd0aCk7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBtPUMoeSxkKGgpLHMoaCxiLHYpLHRoaXMua1tuXSxyW25dKSxnPVQoYyhpKSx1KGksbyxhKSk7eT12LHY9YixiPWgsaD1UKGYsbSksZj1hLGE9byxvPWksaT1UKG0sZyl9dGhpcy5oWzBdPVQodGhpcy5oWzBdLGkpLHRoaXMuaFsxXT1UKHRoaXMuaFsxXSxvKSx0aGlzLmhbMl09VCh0aGlzLmhbMl0sYSksdGhpcy5oWzNdPVQodGhpcy5oWzNdLGYpLHRoaXMuaFs0XT1UKHRoaXMuaFs0XSxoKSx0aGlzLmhbNV09VCh0aGlzLmhbNV0sYiksdGhpcy5oWzZdPVQodGhpcy5oWzZdLHYpLHRoaXMuaFs3XT1UKHRoaXMuaFs3XSx5KX0sbi5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih0KXtyZXR1cm5cImhleFwiPT09dD9CLnRvSGV4MzIodGhpcy5oLFwiYmlnXCIpOkIuc3BsaXQzMih0aGlzLmgsXCJiaWdcIil9LEIuaW5oZXJpdHMoaSxuKSxlLnNoYTIyND1pLGkuYmxvY2tTaXplPTUxMixpLm91dFNpemU9MjI0LGkuaG1hY1N0cmVuZ3RoPTE5MixpLnBhZExlbmd0aD02NCxpLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P0IudG9IZXgzMih0aGlzLmguc2xpY2UoMCw3KSxcImJpZ1wiKTpCLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksXCJiaWdcIil9LEIuaW5oZXJpdHMobyxYKSxlLnNoYTUxMj1vLG8uYmxvY2tTaXplPTEwMjQsby5vdXRTaXplPTUxMixvLmhtYWNTdHJlbmd0aD0xOTIsby5wYWRMZW5ndGg9MTI4LG8ucHJvdG90eXBlLl9wcmVwYXJlQmxvY2s9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dGhpcy5XLG49MDtuPDMyO24rKylyW25dPXRbZStuXTtmb3IoO248ci5sZW5ndGg7bis9Mil7dmFyIGk9ayhyW24tNF0scltuLTNdKSxvPXgocltuLTRdLHJbbi0zXSksYT1yW24tMTRdLGY9cltuLTEzXSxzPUUocltuLTMwXSxyW24tMjldKSx1PUEocltuLTMwXSxyW24tMjldKSxoPXJbbi0zMl0sYz1yW24tMzFdO3Jbbl09SyhpLG8sYSxmLHMsdSxoLGMpLHJbbisxXT1HKGksbyxhLGYscyx1LGgsYyl9fSxvLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7dGhpcy5fcHJlcGFyZUJsb2NrKHQsZSk7dmFyIHI9dGhpcy5XLG49dGhpcy5oWzBdLGk9dGhpcy5oWzFdLG89dGhpcy5oWzJdLGE9dGhpcy5oWzNdLGY9dGhpcy5oWzRdLHM9dGhpcy5oWzVdLHU9dGhpcy5oWzZdLGg9dGhpcy5oWzddLGM9dGhpcy5oWzhdLGQ9dGhpcy5oWzldLGw9dGhpcy5oWzEwXSxwPXRoaXMuaFsxMV0sYj10aGlzLmhbMTJdLEU9dGhpcy5oWzEzXSxBPXRoaXMuaFsxNF0saz10aGlzLmhbMTVdO08odGhpcy5rLmxlbmd0aD09PXIubGVuZ3RoKTtmb3IodmFyIHg9MDt4PHIubGVuZ3RoO3grPTIpe3ZhciBJPUEsQj1rLFI9TShjLGQpLFA9UyhjLGQpLFQ9dihjLGQsbCxwLGIsRSksaj15KGMsZCxsLHAsYixFKSxDPXRoaXMua1t4XSxOPXRoaXMua1t4KzFdLEw9clt4XSxVPXJbeCsxXSx6PVYoSSxCLFIsUCxULGosQyxOLEwsVSksSz1IKEksQixSLFAsVCxqLEMsTixMLFUpLEk9dyhuLGkpLEI9XyhuLGkpLFI9bShuLGksbyxhLGYscyksUD1nKG4saSxvLGEsZixzKSxHPXEoSSxCLFIsUCksWD1GKEksQixSLFApO0E9YixrPUUsYj1sLEU9cCxsPWMscD1kLGM9cSh1LGgseixLKSxkPUYoaCxoLHosSyksdT1mLGg9cyxmPW8scz1hLG89bixhPWksbj1xKHosSyxHLFgpLGk9Rih6LEssRyxYKX1EKHRoaXMuaCwwLG4saSksRCh0aGlzLmgsMixvLGEpLEQodGhpcy5oLDQsZixzKSxEKHRoaXMuaCw2LHUsaCksRCh0aGlzLmgsOCxjLGQpLEQodGhpcy5oLDEwLGwscCksRCh0aGlzLmgsMTIsYixFKSxEKHRoaXMuaCwxNCxBLGspfSxvLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P0IudG9IZXgzMih0aGlzLmgsXCJiaWdcIik6Qi5zcGxpdDMyKHRoaXMuaCxcImJpZ1wiKX0sQi5pbmhlcml0cyhhLG8pLGUuc2hhMzg0PWEsYS5ibG9ja1NpemU9MTAyNCxhLm91dFNpemU9Mzg0LGEuaG1hY1N0cmVuZ3RoPTE5MixhLnBhZExlbmd0aD0xMjgsYS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbih0KXtyZXR1cm5cImhleFwiPT09dD9CLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLFwiYmlnXCIpOkIuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwxMiksXCJiaWdcIil9LEIuaW5oZXJpdHMoZixYKSxlLnNoYTE9ZixmLmJsb2NrU2l6ZT01MTIsZi5vdXRTaXplPTE2MCxmLmhtYWNTdHJlbmd0aD04MCxmLnBhZExlbmd0aD02NCxmLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXRoaXMuVyxuPTA7bjwxNjtuKyspcltuXT10W2Urbl07Zm9yKDtuPHIubGVuZ3RoO24rKylyW25dPVAocltuLTNdXnJbbi04XV5yW24tMTRdXnJbbi0xNl0sMSk7Zm9yKHZhciBpPXRoaXMuaFswXSxvPXRoaXMuaFsxXSxhPXRoaXMuaFsyXSxmPXRoaXMuaFszXSxzPXRoaXMuaFs0XSxuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciB1PX5+KG4vMjApLGg9QyhQKGksNSksYih1LG8sYSxmKSxzLHJbbl0sWlt1XSk7cz1mLGY9YSxhPVAobywzMCksbz1pLGk9aH10aGlzLmhbMF09VCh0aGlzLmhbMF0saSksdGhpcy5oWzFdPVQodGhpcy5oWzFdLG8pLHRoaXMuaFsyXT1UKHRoaXMuaFsyXSxhKSx0aGlzLmhbM109VCh0aGlzLmhbM10sZiksdGhpcy5oWzRdPVQodGhpcy5oWzRdLHMpfSxmLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKHQpe3JldHVyblwiaGV4XCI9PT10P0IudG9IZXgzMih0aGlzLmgsXCJiaWdcIik6Qi5zcGxpdDMyKHRoaXMuaCxcImJpZ1wiKX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5zbGljZSgpO2lmKCF0KXJldHVybltdO3ZhciByPVtdO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KWlmKGUpe2lmKFwiaGV4XCI9PT1lKXt0PXQucmVwbGFjZSgvW15hLXowLTldKy9naSxcIlwiKSx0Lmxlbmd0aCUyIT09MCYmKHQ9XCIwXCIrdCk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0yKXIucHVzaChwYXJzZUludCh0W25dK3RbbisxXSwxNikpfX1lbHNlIGZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10LmNoYXJDb2RlQXQobiksbz1pPj44LGE9MjU1Jmk7bz9yLnB1c2gobyxhKTpyLnB1c2goYSl9ZWxzZSBmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylyW25dPTB8dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBpKHQpe2Zvcih2YXIgZT1cIlwiLHI9MDtyPHQubGVuZ3RoO3IrKyllKz1mKHRbcl0udG9TdHJpbmcoMTYpKTtyZXR1cm4gZX1mdW5jdGlvbiBvKHQpe3ZhciBlPXQ+Pj4yNHx0Pj4+OCY2NTI4MHx0PDw4JjE2NzExNjgwfCgyNTUmdCk8PDI0O3JldHVybiBlPj4+MH1mdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciByPVwiXCIsbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO1wibGl0dGxlXCI9PT1lJiYoaT1vKGkpKSxyKz1zKGkudG9TdHJpbmcoMTYpKX1yZXR1cm4gcn1mdW5jdGlvbiBmKHQpe3JldHVybiAxPT09dC5sZW5ndGg/XCIwXCIrdDp0fWZ1bmN0aW9uIHModCl7cmV0dXJuIDc9PT10Lmxlbmd0aD9cIjBcIit0OjY9PT10Lmxlbmd0aD9cIjAwXCIrdDo1PT09dC5sZW5ndGg/XCIwMDBcIit0OjQ9PT10Lmxlbmd0aD9cIjAwMDBcIit0OjM9PT10Lmxlbmd0aD9cIjAwMDAwXCIrdDoyPT09dC5sZW5ndGg/XCIwMDAwMDBcIit0OjE9PT10Lmxlbmd0aD9cIjAwMDAwMDBcIit0OnR9ZnVuY3Rpb24gdSh0LGUscixuKXt2YXIgaT1yLWU7eShpJTQ9PT0wKTtmb3IodmFyIG89bmV3IEFycmF5KGkvNCksYT0wLGY9ZTthPG8ubGVuZ3RoO2ErKyxmKz00KXt2YXIgcztzPVwiYmlnXCI9PT1uP3RbZl08PDI0fHRbZisxXTw8MTZ8dFtmKzJdPDw4fHRbZiszXTp0W2YrM108PDI0fHRbZisyXTw8MTZ8dFtmKzFdPDw4fHRbZl0sb1thXT1zPj4+MH1yZXR1cm4gb31mdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciByPW5ldyBBcnJheSg0KnQubGVuZ3RoKSxuPTAsaT0wO248dC5sZW5ndGg7bisrLGkrPTQpe3ZhciBvPXRbbl07XCJiaWdcIj09PWU/KHJbaV09bz4+PjI0LHJbaSsxXT1vPj4+MTYmMjU1LHJbaSsyXT1vPj4+OCYyNTUscltpKzNdPTI1NSZvKToocltpKzNdPW8+Pj4yNCxyW2krMl09bz4+PjE2JjI1NSxyW2krMV09bz4+PjgmMjU1LHJbaV09MjU1Jm8pfXJldHVybiByfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdD4+PmV8dDw8MzItZX1mdW5jdGlvbiBkKHQsZSl7cmV0dXJuIHQ8PGV8dD4+PjMyLWV9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiB0K2U+Pj4wfWZ1bmN0aW9uIHAodCxlLHIpe3JldHVybiB0K2Urcj4+PjB9ZnVuY3Rpb24gYih0LGUscixuKXtyZXR1cm4gdCtlK3Irbj4+PjB9ZnVuY3Rpb24gdih0LGUscixuLGkpe3JldHVybiB0K2UrcituK2k+Pj4wfWZ1bmN0aW9uIHkodCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoZXx8XCJBc3NlcnRpb24gZmFpbGVkXCIpfWZ1bmN0aW9uIG0odCxlLHIsbil7dmFyIGk9dFtlXSxvPXRbZSsxXSxhPW4rbz4+PjAsZj0oYTxuPzE6MCkrcitpO3RbZV09Zj4+PjAsdFtlKzFdPWF9ZnVuY3Rpb24gZyh0LGUscixuKXt2YXIgaT1lK24+Pj4wLG89KGk8ZT8xOjApK3QrcjtyZXR1cm4gbz4+PjB9ZnVuY3Rpb24gdyh0LGUscixuKXt2YXIgaT1lK247cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIF8odCxlLHIsbixpLG8sYSxmKXt2YXIgcz0wLHU9ZTt1PXUrbj4+PjAscys9dTxlPzE6MCx1PXUrbz4+PjAscys9dTxvPzE6MCx1PXUrZj4+PjAscys9dTxmPzE6MDt2YXIgaD10K3IraSthK3M7cmV0dXJuIGg+Pj4wfWZ1bmN0aW9uIE0odCxlLHIsbixpLG8sYSxmKXt2YXIgcz1lK24rbytmO3JldHVybiBzPj4+MH1mdW5jdGlvbiBTKHQsZSxyLG4saSxvLGEsZixzLHUpe3ZhciBoPTAsYz1lO2M9YytuPj4+MCxoKz1jPGU/MTowLGM9YytvPj4+MCxoKz1jPG8/MTowLGM9YytmPj4+MCxoKz1jPGY/MTowLGM9Yyt1Pj4+MCxoKz1jPHU/MTowO3ZhciBkPXQrcitpK2ErcytoO3JldHVybiBkPj4+MH1mdW5jdGlvbiBFKHQsZSxyLG4saSxvLGEsZixzLHUpe3ZhciBoPWUrbitvK2YrdTtyZXR1cm4gaD4+PjB9ZnVuY3Rpb24gQSh0LGUscil7dmFyIG49ZTw8MzItcnx0Pj4+cjtyZXR1cm4gbj4+PjB9ZnVuY3Rpb24gayh0LGUscil7dmFyIG49dDw8MzItcnxlPj4+cjtyZXR1cm4gbj4+PjB9ZnVuY3Rpb24geCh0LGUscil7cmV0dXJuIHQ+Pj5yfWZ1bmN0aW9uIEkodCxlLHIpe3ZhciBuPXQ8PDMyLXJ8ZT4+PnI7cmV0dXJuIG4+Pj4wfXZhciBCPWUsTz1yKDIpO0IudG9BcnJheT1uLEIudG9IZXg9aSxCLmh0b25sPW8sQi50b0hleDMyPWEsQi56ZXJvMj1mLEIuemVybzg9cyxCLmpvaW4zMj11LEIuc3BsaXQzMj1oLEIucm90cjMyPWMsQi5yb3RsMzI9ZCxCLnN1bTMyPWwsQi5zdW0zMl8zPXAsQi5zdW0zMl80PWIsQi5zdW0zMl81PXYsQi5hc3NlcnQ9eSxCLmluaGVyaXRzPU8sZS5zdW02ND1tLGUuc3VtNjRfaGk9ZyxlLnN1bTY0X2xvPXcsZS5zdW02NF80X2hpPV8sZS5zdW02NF80X2xvPU0sZS5zdW02NF81X2hpPVMsZS5zdW02NF81X2xvPUUsZS5yb3RyNjRfaGk9QSxlLnJvdHI2NF9sbz1rLGUuc2hyNjRfaGk9eCxlLnNocjY0X2xvPUl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLHIpe2lmKGUubGVuZ3RoJW8hPT0wKXt2YXIgbj1lLmxlbmd0aCsoby1lLmxlbmd0aCVvKTtlPXQuY29uY2F0KFtlLGFdLG4pfWZvcih2YXIgaT1bXSxmPXI/ZS5yZWFkSW50MzJCRTplLnJlYWRJbnQzMkxFLHM9MDtzPGUubGVuZ3RoO3MrPW8paS5wdXNoKGYuY2FsbChlLHMpKTtyZXR1cm4gaX1mdW5jdGlvbiBuKGUscixuKXtmb3IodmFyIGk9bmV3IHQociksbz1uP2kud3JpdGVJbnQzMkJFOmkud3JpdGVJbnQzMkxFLGE9MDthPGUubGVuZ3RoO2ErKylvLmNhbGwoaSxlW2FdLDQqYSwhMCk7cmV0dXJuIGl9ZnVuY3Rpb24gaShlLGksbyxhKXt0LmlzQnVmZmVyKGUpfHwoZT1uZXcgdChlKSk7dmFyIHM9aShyKGUsYSksZS5sZW5ndGgqZik7cmV0dXJuIG4ocyxvLGEpfXZhciBvPTQsYT1uZXcgdChvKTthLmZpbGwoMCk7dmFyIGY9ODtlLmhhc2g9aX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtpLmNhbGwodGhpcyksdGhpcy5oYXNoTW9kZT1cInN0cmluZ1wiPT10eXBlb2YgdCx0aGlzLmhhc2hNb2RlP3RoaXNbdF09dGhpcy5fZmluYWxPckRpZ2VzdDp0aGlzLmZpbmFsPXRoaXMuX2ZpbmFsT3JEaWdlc3QsdGhpcy5fZGVjb2Rlcj1udWxsLHRoaXMuX2VuY29kaW5nPW51bGx9dmFyIGk9cigzMSkuVHJhbnNmb3JtLG89cigyKSxhPXIoNTIpLlN0cmluZ0RlY29kZXI7dC5leHBvcnRzPW4sbyhuLGkpLG4ucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LHIsbil7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PW5ldyBlKHQscikpO3ZhciBpPXRoaXMuX3VwZGF0ZSh0KTtyZXR1cm4gdGhpcy5oYXNoTW9kZT90aGlzOihuJiYoaT10aGlzLl90b1N0cmluZyhpLG4pKSxpKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24oKXt9LG4ucHJvdG90eXBlLmdldEF1dGhUYWc9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJ0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlXCIpfSxuLnByb3RvdHlwZS5zZXRBdXRoVGFnPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZVwiKX0sbi5wcm90b3R5cGUuc2V0QUFEPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwidHJ5aW5nIHRvIHNldCBhYWQgaW4gdW5zdXBwb3J0ZWQgc3RhdGVcIil9LG4ucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3RyeXt0aGlzLmhhc2hNb2RlP3RoaXMuX3VwZGF0ZSh0KTp0aGlzLnB1c2godGhpcy5fdXBkYXRlKHQpKX1jYXRjaCh0KXtuPXR9ZmluYWxseXtyKG4pfX0sbi5wcm90b3R5cGUuX2ZsdXNoPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXt0aGlzLnB1c2godGhpcy5fZmluYWwoKSl9Y2F0Y2godCl7ZT10fWZpbmFsbHl7dChlKX19LG4ucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0PWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX2ZpbmFsKCl8fG5ldyBlKFwiXCIpO3JldHVybiB0JiYocj10aGlzLl90b1N0cmluZyhyLHQsITApKSxyfSxuLnByb3RvdHlwZS5fdG9TdHJpbmc9ZnVuY3Rpb24odCxlLHIpe2lmKHRoaXMuX2RlY29kZXJ8fCh0aGlzLl9kZWNvZGVyPW5ldyBhKGUpLHRoaXMuX2VuY29kaW5nPWUpLHRoaXMuX2VuY29kaW5nIT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJjYW4ndCBzd2l0Y2ggZW5jb2RpbmdzXCIpO3ZhciBuPXRoaXMuX2RlY29kZXIud3JpdGUodCk7cmV0dXJuIHImJihuKz10aGlzLl9kZWNvZGVyLmVuZCgpKSxufX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0KXtmb3IodmFyIGU9W10scj0wLG49MDtyPHQubGVuZ3RoO3IrKyxuKz04KWVbbj4+PjVdfD10W3JdPDwyNC1uJTMyO3JldHVybiBlfWZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPVtdLHI9MDtyPDMyKnQubGVuZ3RoO3IrPTgpZS5wdXNoKHRbcj4+PjVdPj4+MjQtciUzMiYyNTUpO3JldHVybiBlfWZ1bmN0aW9uIGkodCxlLHIpe2Zvcih2YXIgbj0wO248MTY7bisrKXt2YXIgaT1yK24sYz1lW2ldO2VbaV09MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCl9dmFyIG0sZyx3LF8sTSxTLEUsQSxrLHg7Uz1tPXRbMF0sRT1nPXRbMV0sQT13PXRbMl0saz1fPXRbM10seD1NPXRbNF07dmFyIEk7Zm9yKG49MDtuPDgwO24rPTEpST1tK2VbcitkW25dXXwwLEkrPW48MTY/byhnLHcsXykrdlswXTpuPDMyP2EoZyx3LF8pK3ZbMV06bjw0OD9mKGcsdyxfKSt2WzJdOm48NjQ/cyhnLHcsXykrdlszXTp1KGcsdyxfKSt2WzRdLEl8PTAsST1oKEkscFtuXSksST1JK018MCxtPU0sTT1fLF89aCh3LDEwKSx3PWcsZz1JLEk9UytlW3IrbFtuXV18MCxJKz1uPDE2P3UoRSxBLGspK3lbMF06bjwzMj9zKEUsQSxrKSt5WzFdOm48NDg/ZihFLEEsaykreVsyXTpuPDY0P2EoRSxBLGspK3lbM106byhFLEEsaykreVs0XSxJfD0wLEk9aChJLGJbbl0pLEk9SSt4fDAsUz14LHg9ayxrPWgoQSwxMCksQT1FLEU9STtJPXRbMV0rdytrfDAsdFsxXT10WzJdK18reHwwLHRbMl09dFszXStNK1N8MCx0WzNdPXRbNF0rbStFfDAsdFs0XT10WzBdK2crQXwwLHRbMF09SX1mdW5jdGlvbiBvKHQsZSxyKXtyZXR1cm4gdF5lXnJ9ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIHQmZXx+dCZyfWZ1bmN0aW9uIGYodCxlLHIpe3JldHVybih0fH5lKV5yfWZ1bmN0aW9uIHModCxlLHIpe3JldHVybiB0JnJ8ZSZ+cn1mdW5jdGlvbiB1KHQsZSxyKXtyZXR1cm4gdF4oZXx+cil9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB0PDxlfHQ+Pj4zMi1lfWZ1bmN0aW9uIGModCl7dmFyIG89WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXTtcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bmV3IGUodCxcInV0ZjhcIikpO3ZhciBhPXIodCksZj04KnQubGVuZ3RoLHM9OCp0Lmxlbmd0aDthW2Y+Pj41XXw9MTI4PDwyNC1mJTMyLGFbKGYrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDt1Kz0xNilpKG8sYSx1KTtmb3IodT0wO3U8NTt1Kyspe3ZhciBoPW9bdV07b1t1XT0xNjcxMTkzNSYoaDw8OHxoPj4+MjQpfDQyNzgyNTUzNjAmKGg8PDI0fGg+Pj44KX12YXIgYz1uKG8pO3JldHVybiBuZXcgZShjKX0vKiogQHByZXNlcnZlXG4oYykgMjAxMiBieSBDw6lkcmljIE1lc25pbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OlxuXG4gICAgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG5cblRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG52YXIgZD1bMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSxsPVs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdLHA9WzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdLGI9WzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdLHY9WzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0seT1bMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXTt0LmV4cG9ydHM9Y30pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgZT10LmV4cG9ydHM9ZnVuY3Rpb24odCl7dD10LnRvTG93ZXJDYXNlKCk7dmFyIHI9ZVt0XTtpZighcil0aHJvdyBuZXcgRXJyb3IodCtcIiBpcyBub3Qgc3VwcG9ydGVkICh3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cylcIik7cmV0dXJuIG5ldyByfTtlLnNoYT1yKDU2OSksZS5zaGExPXIoNTcwKSxlLnNoYTIyND1yKDU3MSksZS5zaGEyNTY9cigyMjcpLGUuc2hhMzg0PXIoNTcyKSxlLnNoYTUxMj1yKDIyOCl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9aCxzLmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdDw8NXx0Pj4+Mjd9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw8MzB8dD4+PjJ9ZnVuY3Rpb24gYSh0LGUscixuKXtyZXR1cm4gMD09PXQ/ZSZyfH5lJm46Mj09PXQ/ZSZyfGUmbnxyJm46ZV5yXm59dmFyIGY9cigyKSxzPXIoNjApLHU9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxoPW5ldyBBcnJheSg4MCk7ZihuLHMpLG4ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX3cscj0wfHRoaXMuX2Esbj0wfHRoaXMuX2IsZj0wfHRoaXMuX2Mscz0wfHRoaXMuX2QsaD0wfHRoaXMuX2UsYz0wO2M8MTY7KytjKWVbY109dC5yZWFkSW50MzJCRSg0KmMpO2Zvcig7Yzw4MDsrK2MpZVtjXT1lW2MtM11eZVtjLThdXmVbYy0xNF1eZVtjLTE2XTtmb3IodmFyIGQ9MDtkPDgwOysrZCl7dmFyIGw9fn4oZC8yMCkscD1pKHIpK2EobCxuLGYscykraCtlW2RdK3VbbF18MDtoPXMscz1mLGY9byhuKSxuPXIscj1wfXRoaXMuX2E9cit0aGlzLl9hfDAsdGhpcy5fYj1uK3RoaXMuX2J8MCx0aGlzLl9jPWYrdGhpcy5fY3wwLHRoaXMuX2Q9cyt0aGlzLl9kfDAsdGhpcy5fZT1oK3RoaXMuX2V8MH0sbi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZSgyMCk7cmV0dXJuIHQud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSx0LndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksdC53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLHQud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksdC53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSx0fSx0LmV4cG9ydHM9bn0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9Yyx1LmNhbGwodGhpcyw2NCw1Nil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdDw8MXx0Pj4+MzF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw8NXx0Pj4+Mjd9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gdDw8MzB8dD4+PjJ9ZnVuY3Rpb24gZih0LGUscixuKXtyZXR1cm4gMD09PXQ/ZSZyfH5lJm46Mj09PXQ/ZSZyfGUmbnxyJm46ZV5yXm59dmFyIHM9cigyKSx1PXIoNjApLGg9WzE1MTg1MDAyNDksMTg1OTc3NTM5MywtMTg5NDAwNzU4OCwtODk5NDk3NTE0XSxjPW5ldyBBcnJheSg4MCk7cyhuLHUpLG4ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYT0xNzMyNTg0MTkzLHRoaXMuX2I9NDAyMzIzMzQxNyx0aGlzLl9jPTI1NjIzODMxMDIsdGhpcy5fZD0yNzE3MzM4NzgsdGhpcy5fZT0zMjg1Mzc3NTIwLHRoaXN9LG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX3cscj0wfHRoaXMuX2Esbj0wfHRoaXMuX2Iscz0wfHRoaXMuX2MsdT0wfHRoaXMuX2QsYz0wfHRoaXMuX2UsZD0wO2Q8MTY7KytkKWVbZF09dC5yZWFkSW50MzJCRSg0KmQpO2Zvcig7ZDw4MDsrK2QpZVtkXT1pKGVbZC0zXV5lW2QtOF1eZVtkLTE0XV5lW2QtMTZdKTtmb3IodmFyIGw9MDtsPDgwOysrbCl7dmFyIHA9fn4obC8yMCksYj1vKHIpK2YocCxuLHMsdSkrYytlW2xdK2hbcF18MDtjPXUsdT1zLHM9YShuKSxuPXIscj1ifXRoaXMuX2E9cit0aGlzLl9hfDAsdGhpcy5fYj1uK3RoaXMuX2J8MCx0aGlzLl9jPXMrdGhpcy5fY3wwLHRoaXMuX2Q9dSt0aGlzLl9kfDAsdGhpcy5fZT1jK3RoaXMuX2V8MH0sbi5wcm90b3R5cGUuX2hhc2g9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgZSgyMCk7cmV0dXJuIHQud3JpdGVJbnQzMkJFKDB8dGhpcy5fYSwwKSx0LndyaXRlSW50MzJCRSgwfHRoaXMuX2IsNCksdC53cml0ZUludDMyQkUoMHx0aGlzLl9jLDgpLHQud3JpdGVJbnQzMkJFKDB8dGhpcy5fZCwxMiksdC53cml0ZUludDMyQkUoMHx0aGlzLl9lLDE2KSx0fSx0LmV4cG9ydHM9bn0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3RoaXMuaW5pdCgpLHRoaXMuX3c9ZixhLmNhbGwodGhpcyw2NCw1Nil9dmFyIGk9cigyKSxvPXIoMjI3KSxhPXIoNjApLGY9bmV3IEFycmF5KDY0KTtpKG4sbyksbi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hPTMyMzgzNzEwMzIsdGhpcy5fYj05MTQxNTA2NjMsdGhpcy5fYz04MTI3MDI5OTksdGhpcy5fZD00MTQ0OTEyNjk3LHRoaXMuX2U9NDI5MDc3NTg1Nyx0aGlzLl9mPTE3NTA2MDMwMjUsdGhpcy5fZz0xNjk0MDc2ODM5LHRoaXMuX2g9MzIwNDA3NTQyOCx0aGlzfSxuLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe3ZhciB0PW5ldyBlKDI4KTtyZXR1cm4gdC53cml0ZUludDMyQkUodGhpcy5fYSwwKSx0LndyaXRlSW50MzJCRSh0aGlzLl9iLDQpLHQud3JpdGVJbnQzMkJFKHRoaXMuX2MsOCksdC53cml0ZUludDMyQkUodGhpcy5fZCwxMiksdC53cml0ZUludDMyQkUodGhpcy5fZSwxNiksdC53cml0ZUludDMyQkUodGhpcy5fZiwyMCksdC53cml0ZUludDMyQkUodGhpcy5fZywyNCksdH0sdC5leHBvcnRzPW59KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt0aGlzLmluaXQoKSx0aGlzLl93PWYsYS5jYWxsKHRoaXMsMTI4LDExMil9dmFyIGk9cigyKSxvPXIoMjI4KSxhPXIoNjApLGY9bmV3IEFycmF5KDE2MCk7aShuLG8pLG4ucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWg9MzQxODA3MDM2NSx0aGlzLl9iaD0xNjU0MjcwMjUwLHRoaXMuX2NoPTI0Mzg1MjkzNzAsdGhpcy5fZGg9MzU1NDYyMzYwLHRoaXMuX2VoPTE3MzE0MDU0MTUsdGhpcy5fZmg9MjM5NDE4MDIzMSx0aGlzLl9naD0zNjc1MDA4NTI1LHRoaXMuX2hoPTEyMDMwNjI4MTMsdGhpcy5fYWw9MzIzODM3MTAzMix0aGlzLl9ibD05MTQxNTA2NjMsdGhpcy5fY2w9ODEyNzAyOTk5LHRoaXMuX2RsPTQxNDQ5MTI2OTcsdGhpcy5fZWw9NDI5MDc3NTg1Nyx0aGlzLl9mbD0xNzUwNjAzMDI1LHRoaXMuX2dsPTE2OTQwNzY4MzksdGhpcy5faGw9MzIwNDA3NTQyOCx0aGlzfSxuLnByb3RvdHlwZS5faGFzaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3Iud3JpdGVJbnQzMkJFKHQsbiksci53cml0ZUludDMyQkUoZSxuKzQpfXZhciByPW5ldyBlKDQ4KTtyZXR1cm4gdCh0aGlzLl9haCx0aGlzLl9hbCwwKSx0KHRoaXMuX2JoLHRoaXMuX2JsLDgpLHQodGhpcy5fY2gsdGhpcy5fY2wsMTYpLHQodGhpcy5fZGgsdGhpcy5fZGwsMjQpLHQodGhpcy5fZWgsdGhpcy5fZWwsMzIpLHQodGhpcy5fZmgsdGhpcy5fZmwsNDApLHJ9LHQuZXhwb3J0cz1ufSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe3ZhciByPW5ldyB0KGFbZV0ucHJpbWUsXCJoZXhcIiksbj1uZXcgdChhW2VdLmdlbixcImhleFwiKTtyZXR1cm4gbmV3IGYocixuKX1mdW5jdGlvbiBpKGUscixuLGEpe3JldHVybiB0LmlzQnVmZmVyKHIpfHx2b2lkIDA9PT1zW3JdP2koZSxcImJpbmFyeVwiLHIsbik6KHI9cnx8XCJiaW5hcnlcIixhPWF8fFwiYmluYXJ5XCIsbj1ufHxuZXcgdChbMl0pLHQuaXNCdWZmZXIobil8fChuPW5ldyB0KG4sYSkpLFwibnVtYmVyXCI9PXR5cGVvZiBlP25ldyBmKG8oZSxuKSxuLCEwKToodC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSksbmV3IGYoZSxuLCEwKSkpfXZhciBvPXIoMjI5KSxhPXIoNDY4KSxmPXIoNTc0KSxzPXtiaW5hcnk6ITAsaGV4OiEwLGJhc2U2NDohMH07ZS5EaWZmaWVIZWxsbWFuR3JvdXA9ZS5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXA9ZS5nZXREaWZmaWVIZWxsbWFuPW4sZS5jcmVhdGVEaWZmaWVIZWxsbWFuPWUuRGlmZmllSGVsbG1hbj1pfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscil7cmV0dXJuIHI9cnx8XCJ1dGY4XCIsZS5pc0J1ZmZlcih0KXx8KHQ9bmV3IGUodCxyKSksdGhpcy5fcHViPW5ldyBzKHQpLHRoaXN9ZnVuY3Rpb24gaSh0LHIpe3JldHVybiByPXJ8fFwidXRmOFwiLGUuaXNCdWZmZXIodCl8fCh0PW5ldyBlKHQscikpLHRoaXMuX3ByaXY9bmV3IHModCksdGhpc31mdW5jdGlvbiBvKHQsZSl7dmFyIHI9ZS50b1N0cmluZyhcImhleFwiKSxuPVtyLHQudG9TdHJpbmcoMTYpXS5qb2luKFwiX1wiKTtpZihuIGluIG0pcmV0dXJuIG1bbl07dmFyIGk9MDtpZih0LmlzRXZlbigpfHwhdi5zaW1wbGVTaWV2ZXx8IXYuZmVybWF0VGVzdCh0KXx8IWgudGVzdCh0KSlyZXR1cm4gaSs9MSxpKz1cIjAyXCI9PT1yfHxcIjA1XCI9PT1yPzg6NCxtW25dPWksaTtoLnRlc3QodC5zaHJuKDEpKXx8KGkrPTIpO3ZhciBvO3N3aXRjaChyKXtjYXNlXCIwMlwiOnQubW9kKGMpLmNtcChkKSYmKGkrPTgpO2JyZWFrO2Nhc2VcIjA1XCI6bz10Lm1vZChsKSxvLmNtcChwKSYmby5jbXAoYikmJihpKz04KTticmVhaztkZWZhdWx0OmkrPTR9cmV0dXJuIG1bbl09aSxpfWZ1bmN0aW9uIGEodCxlLHIpe3RoaXMuc2V0R2VuZXJhdG9yKGUpLHRoaXMuX19wcmltZT1uZXcgcyh0KSx0aGlzLl9wcmltZT1zLm1vbnQodGhpcy5fX3ByaW1lKSx0aGlzLl9wcmltZUxlbj10Lmxlbmd0aCx0aGlzLl9wdWI9dm9pZCAwLHRoaXMuX3ByaXY9dm9pZCAwLHRoaXMuX3ByaW1lQ29kZT12b2lkIDAscj8odGhpcy5zZXRQdWJsaWNLZXk9bix0aGlzLnNldFByaXZhdGVLZXk9aSk6dGhpcy5fcHJpbWVDb2RlPTh9ZnVuY3Rpb24gZih0LHIpe3ZhciBuPW5ldyBlKHQudG9BcnJheSgpKTtyZXR1cm4gcj9uLnRvU3RyaW5nKHIpOm59dmFyIHM9cigxNTApLHU9cigyMzApLGg9bmV3IHUsYz1uZXcgcygyNCksZD1uZXcgcygxMSksbD1uZXcgcygxMCkscD1uZXcgcygzKSxiPW5ldyBzKDcpLHY9cigyMjkpLHk9cig2MSk7dC5leHBvcnRzPWE7dmFyIG09e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGEucHJvdG90eXBlLFwidmVyaWZ5RXJyb3JcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm5cIm51bWJlclwiIT10eXBlb2YgdGhpcy5fcHJpbWVDb2RlJiYodGhpcy5fcHJpbWVDb2RlPW8odGhpcy5fX3ByaW1lLHRoaXMuX19nZW4pKSx0aGlzLl9wcmltZUNvZGV9fSksYS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBzKHkodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSxhLnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKHQpe3Q9bmV3IHModCksdD10LnRvUmVkKHRoaXMuX3ByaW1lKTt2YXIgcj10LnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksbj1uZXcgZShyLnRvQXJyYXkoKSksaT10aGlzLmdldFByaW1lKCk7aWYobi5sZW5ndGg8aS5sZW5ndGgpe3ZhciBvPW5ldyBlKGkubGVuZ3RoLW4ubGVuZ3RoKTtvLmZpbGwoMCksbj1lLmNvbmNhdChbbyxuXSl9cmV0dXJuIG59LGEucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbih0KXtyZXR1cm4gZih0aGlzLl9wdWIsdCl9LGEucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24odCl7cmV0dXJuIGYodGhpcy5fcHJpdix0KX0sYS5wcm90b3R5cGUuZ2V0UHJpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIGYodGhpcy5fX3ByaW1lLHQpfSxhLnByb3RvdHlwZS5nZXRHZW5lcmF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGYodGhpcy5fZ2VuLHQpfSxhLnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24odCxyKXtyZXR1cm4gcj1yfHxcInV0ZjhcIixlLmlzQnVmZmVyKHQpfHwodD1uZXcgZSh0LHIpKSx0aGlzLl9fZ2VuPXQsdGhpcy5fZ2VuPW5ldyBzKHQpLHRoaXN9fSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5yYW5kPXR9dmFyIGk7aWYodC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpfHwoaT1uZXcgbihudWxsKSksaS5nZW5lcmF0ZSh0KX0sdC5leHBvcnRzLlJhbmQ9bixuLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmFuZCh0KX0sXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyl3aW5kb3cuY3J5cHRvJiZ3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcz9uLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoZSksZX06d2luZG93Lm1zQ3J5cHRvJiZ3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzP24ucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiB3aW5kb3cubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpLGV9Om4ucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiTm90IGltcGxlbWVudGVkIHlldFwiKX07ZWxzZSB0cnl7dmFyIG89cig2MTEpO24ucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvLnJhbmRvbUJ5dGVzKHQpfX1jYXRjaCh0KXtuLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IFVpbnQ4QXJyYXkodCkscj0wO3I8ZS5sZW5ndGg7cisrKWVbcl09dGhpcy5yYW5kLmdldEJ5dGUoKTtyZXR1cm4gZX19fSxmdW5jdGlvbih0LGUpe3ZhciByPU1hdGgucG93KDIsMzApLTE7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkl0ZXJhdGlvbnMgbm90IGEgbnVtYmVyXCIpO2lmKHQ8MCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQmFkIGl0ZXJhdGlvbnNcIik7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIktleSBsZW5ndGggbm90IGEgbnVtYmVyXCIpO2lmKGU8MHx8ZT5yfHxlIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQmFkIGtleSBsZW5ndGhcIil9fSxmdW5jdGlvbih0LGUscil7ZS5wdWJsaWNFbmNyeXB0PXIoNTkzKSxlLnByaXZhdGVEZWNyeXB0PXIoNTkyKSxlLnByaXZhdGVFbmNyeXB0PWZ1bmN0aW9uKHQscil7cmV0dXJuIGUucHVibGljRW5jcnlwdCh0LHIsITApfSxlLnB1YmxpY0RlY3J5cHQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5wcml2YXRlRGVjcnlwdCh0LHIsITApfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPXIoMTA2KSxpPW4uZGVmaW5lKFwiUlNBUHJpdmF0ZUtleVwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwibW9kdWx1c1wiKS5pbnQoKSx0aGlzLmtleShcInB1YmxpY0V4cG9uZW50XCIpLmludCgpLHRoaXMua2V5KFwicHJpdmF0ZUV4cG9uZW50XCIpLmludCgpLHRoaXMua2V5KFwicHJpbWUxXCIpLmludCgpLHRoaXMua2V5KFwicHJpbWUyXCIpLmludCgpLHRoaXMua2V5KFwiZXhwb25lbnQxXCIpLmludCgpLHRoaXMua2V5KFwiZXhwb25lbnQyXCIpLmludCgpLHRoaXMua2V5KFwiY29lZmZpY2llbnRcIikuaW50KCkpfSk7ZS5SU0FQcml2YXRlS2V5PWk7dmFyIG89bi5kZWZpbmUoXCJSU0FQdWJsaWNLZXlcIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwibW9kdWx1c1wiKS5pbnQoKSx0aGlzLmtleShcInB1YmxpY0V4cG9uZW50XCIpLmludCgpKX0pO2UuUlNBUHVibGljS2V5PW87dmFyIGE9bi5kZWZpbmUoXCJTdWJqZWN0UHVibGljS2V5SW5mb1wiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikudXNlKGYpLHRoaXMua2V5KFwic3ViamVjdFB1YmxpY0tleVwiKS5iaXRzdHIoKSl9KTtlLlB1YmxpY0tleT1hO3ZhciBmPW4uZGVmaW5lKFwiQWxnb3JpdGhtSWRlbnRpZmllclwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvcml0aG1cIikub2JqaWQoKSx0aGlzLmtleShcIm5vbmVcIikubnVsbF8oKS5vcHRpb25hbCgpLHRoaXMua2V5KFwiY3VydmVcIikub2JqaWQoKS5vcHRpb25hbCgpLHRoaXMua2V5KFwicGFyYW1zXCIpLnNlcSgpLm9iaih0aGlzLmtleShcInBcIikuaW50KCksdGhpcy5rZXkoXCJxXCIpLmludCgpLHRoaXMua2V5KFwiZ1wiKS5pbnQoKSkub3B0aW9uYWwoKSl9KSxzPW4uZGVmaW5lKFwiUHJpdmF0ZUtleUluZm9cIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwidmVyc2lvblwiKS5pbnQoKSx0aGlzLmtleShcImFsZ29yaXRobVwiKS51c2UoZiksdGhpcy5rZXkoXCJzdWJqZWN0UHJpdmF0ZUtleVwiKS5vY3RzdHIoKSl9KTtlLlByaXZhdGVLZXk9czt2YXIgdT1uLmRlZmluZShcIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXCIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcImFsZ29yaXRobVwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJpZFwiKS5vYmppZCgpLHRoaXMua2V5KFwiZGVjcnlwdFwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJrZGVcIikuc2VxKCkub2JqKHRoaXMua2V5KFwiaWRcIikub2JqaWQoKSx0aGlzLmtleShcImtkZXBhcmFtc1wiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJzYWx0XCIpLm9jdHN0cigpLHRoaXMua2V5KFwiaXRlcnNcIikuaW50KCkpKSx0aGlzLmtleShcImNpcGhlclwiKS5zZXEoKS5vYmoodGhpcy5rZXkoXCJhbGdvXCIpLm9iamlkKCksdGhpcy5rZXkoXCJpdlwiKS5vY3RzdHIoKSkpKSx0aGlzLmtleShcInN1YmplY3RQcml2YXRlS2V5XCIpLm9jdHN0cigpKX0pO2UuRW5jcnlwdGVkUHJpdmF0ZUtleT11O3ZhciBoPW4uZGVmaW5lKFwiRFNBUHJpdmF0ZUtleVwiLGZ1bmN0aW9uKCl7dGhpcy5zZXEoKS5vYmoodGhpcy5rZXkoXCJ2ZXJzaW9uXCIpLmludCgpLHRoaXMua2V5KFwicFwiKS5pbnQoKSx0aGlzLmtleShcInFcIikuaW50KCksdGhpcy5rZXkoXCJnXCIpLmludCgpLHRoaXMua2V5KFwicHViX2tleVwiKS5pbnQoKSx0aGlzLmtleShcInByaXZfa2V5XCIpLmludCgpKX0pO2UuRFNBUHJpdmF0ZUtleT1oLGUuRFNBcGFyYW09bi5kZWZpbmUoXCJEU0FwYXJhbVwiLGZ1bmN0aW9uKCl7dGhpcy5pbnQoKX0pO3ZhciBjPW4uZGVmaW5lKFwiRUNQcml2YXRlS2V5XCIsZnVuY3Rpb24oKXt0aGlzLnNlcSgpLm9iaih0aGlzLmtleShcInZlcnNpb25cIikuaW50KCksdGhpcy5rZXkoXCJwcml2YXRlS2V5XCIpLm9jdHN0cigpLHRoaXMua2V5KFwicGFyYW1ldGVyc1wiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDApLnVzZShkKSx0aGlzLmtleShcInB1YmxpY0tleVwiKS5vcHRpb25hbCgpLmV4cGxpY2l0KDEpLmJpdHN0cigpKX0pO2UuRUNQcml2YXRlS2V5PWM7dmFyIGQ9bi5kZWZpbmUoXCJFQ1BhcmFtZXRlcnNcIixmdW5jdGlvbigpe3RoaXMuY2hvaWNlKHtuYW1lZEN1cnZlOnRoaXMub2JqaWQoKX0pfSk7ZS5zaWduYXR1cmU9bi5kZWZpbmUoXCJzaWduYXR1cmVcIixmdW5jdGlvbigpe3RoaXMuc2VxKCkub2JqKHRoaXMua2V5KFwiclwiKS5pbnQoKSx0aGlzLmtleShcInNcIikuaW50KCkpfSl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7dmFyIG49L1Byb2MtVHlwZTogNCxFTkNSWVBURURcXHI/XFxuREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxccj9cXG5cXHI/XFxuKFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXHI/XFxuL20saT0vXi0tLS0tQkVHSU4gKC4qKSBLRVktLS0tLVxccj9cXG4vbSxvPS9eLS0tLS1CRUdJTiAoLiopIEtFWS0tLS0tXFxyP1xcbihbMC05QS16XFxuXFxyXFwrXFwvXFw9XSspXFxyP1xcbi0tLS0tRU5EIFxcMSBLRVktLS0tLSQvbSxhPXIoMTUzKSxmPXIoMjM5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxyKXt2YXIgcyx1PXQudG9TdHJpbmcoKSxoPXUubWF0Y2gobik7aWYoaCl7dmFyIGM9XCJhZXNcIitoWzFdLGQ9bmV3IGUoaFsyXSxcImhleFwiKSxsPW5ldyBlKGhbM10ucmVwbGFjZSgvXFxyP1xcbi9nLFwiXCIpLFwiYmFzZTY0XCIpLHA9YShyLGQuc2xpY2UoMCw4KSxwYXJzZUludChoWzFdLDEwKSkua2V5LGI9W10sdj1mLmNyZWF0ZURlY2lwaGVyaXYoYyxwLGQpO2IucHVzaCh2LnVwZGF0ZShsKSksYi5wdXNoKHYuZmluYWwoKSkscz1lLmNvbmNhdChiKX1lbHNle3ZhciB5PXUubWF0Y2gobyk7cz1uZXcgZSh5WzJdLnJlcGxhY2UoL1xccj9cXG4vZyxcIlwiKSxcImJhc2U2NFwiKX12YXIgbT11Lm1hdGNoKGkpWzFdK1wiIEtFWVwiO3JldHVybnt0YWc6bSxkYXRhOnN9fX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5ib2R5PWUsdGhpcy5kZWNvZGVycz17fSx0aGlzLmVuY29kZXJzPXt9fXZhciBpPXIoMTA2KSxvPXIoMiksYT1lO2EuZGVmaW5lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBuKHQsZSl9LG4ucHJvdG90eXBlLl9jcmVhdGVOYW1lZD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT1yKDI1MSkucnVuSW5UaGlzQ29udGV4dChcIihmdW5jdGlvbiBcIit0aGlzLm5hbWUrXCIoZW50aXR5KSB7XFxuICB0aGlzLl9pbml0TmFtZWQoZW50aXR5KTtcXG59KVwiKX1jYXRjaCh0KXtlPWZ1bmN0aW9uKHQpe3RoaXMuX2luaXROYW1lZCh0KX19cmV0dXJuIG8oZSx0KSxlLnByb3RvdHlwZS5faW5pdE5hbWVkPWZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUpfSxuZXcgZSh0aGlzKX0sbi5wcm90b3R5cGUuX2dldERlY29kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8XCJkZXJcIix0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5kZWNvZGVyc1t0XT10aGlzLl9jcmVhdGVOYW1lZChpLmRlY29kZXJzW3RdKSksdGhpcy5kZWNvZGVyc1t0XX0sbi5wcm90b3R5cGUuZGVjb2RlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fZ2V0RGVjb2RlcihlKS5kZWNvZGUodCxyKX0sbi5wcm90b3R5cGUuX2dldEVuY29kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9dHx8XCJkZXJcIix0aGlzLmVuY29kZXJzLmhhc093blByb3BlcnR5KHQpfHwodGhpcy5lbmNvZGVyc1t0XT10aGlzLl9jcmVhdGVOYW1lZChpLmVuY29kZXJzW3RdKSksdGhpcy5lbmNvZGVyc1t0XX0sbi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlKS5lbmNvZGUodCxyKX19LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9e307dGhpcy5fYmFzZVN0YXRlPXIsci5lbmM9dCxyLnBhcmVudD1lfHxudWxsLHIuY2hpbGRyZW49bnVsbCxyLnRhZz1udWxsLHIuYXJncz1udWxsLHIucmV2ZXJzZUFyZ3M9bnVsbCxyLmNob2ljZT1udWxsLHIub3B0aW9uYWw9ITEsci5hbnk9ITEsci5vYmo9ITEsci51c2U9bnVsbCxyLnVzZURlY29kZXI9bnVsbCxyLmtleT1udWxsLHIuZGVmYXVsdD1udWxsLHIuZXhwbGljaXQ9bnVsbCxyLmltcGxpY2l0PW51bGwsci5jb250YWlucz1udWxsLHIucGFyZW50fHwoci5jaGlsZHJlbj1bXSx0aGlzLl93cmFwKCkpfXZhciBpPXIoNzEpLlJlcG9ydGVyLG89cig3MSkuRW5jb2RlckJ1ZmZlcixhPXIoNzEpLkRlY29kZXJCdWZmZXIsZj1yKDU4OCkscz1bXCJzZXFcIixcInNlcW9mXCIsXCJzZXRcIixcInNldG9mXCIsXCJvYmppZFwiLFwiYm9vbFwiLFwiZ2VudGltZVwiLFwidXRjdGltZVwiLFwibnVsbF9cIixcImVudW1cIixcImludFwiLFwiYml0c3RyXCIsXCJibXBzdHJcIixcImNoYXJzdHJcIixcImdlbnN0clwiLFwiZ3JhcGhzdHJcIixcImlhNXN0clwiLFwiaXNvNjQ2c3RyXCIsXCJudW1zdHJcIixcIm9jdHN0clwiLFwicHJpbnRzdHJcIixcInQ2MXN0clwiLFwidW5pc3RyXCIsXCJ1dGY4c3RyXCIsXCJ2aWRlb3N0clwiXSx1PVtcImtleVwiLFwib2JqXCIsXCJ1c2VcIixcIm9wdGlvbmFsXCIsXCJleHBsaWNpdFwiLFwiaW1wbGljaXRcIixcImRlZlwiLFwiY2hvaWNlXCIsXCJhbnlcIixcImNvbnRhaW5zXCJdLmNvbmNhdChzKSxoPVtcIl9wZWVrVGFnXCIsXCJfZGVjb2RlVGFnXCIsXCJfdXNlXCIsXCJfZGVjb2RlU3RyXCIsXCJfZGVjb2RlT2JqaWRcIixcIl9kZWNvZGVUaW1lXCIsXCJfZGVjb2RlTnVsbFwiLFwiX2RlY29kZUludFwiLFwiX2RlY29kZUJvb2xcIixcIl9kZWNvZGVMaXN0XCIsXCJfZW5jb2RlQ29tcG9zaXRlXCIsXCJfZW5jb2RlU3RyXCIsXCJfZW5jb2RlT2JqaWRcIixcIl9lbmNvZGVUaW1lXCIsXCJfZW5jb2RlTnVsbFwiLFwiX2VuY29kZUludFwiLFwiX2VuY29kZUJvb2xcIl07dC5leHBvcnRzPW47dmFyIGM9W1wiZW5jXCIsXCJwYXJlbnRcIixcImNoaWxkcmVuXCIsXCJ0YWdcIixcImFyZ3NcIixcInJldmVyc2VBcmdzXCIsXCJjaG9pY2VcIixcIm9wdGlvbmFsXCIsXCJhbnlcIixcIm9ialwiLFwidXNlXCIsXCJhbHRlcmVkVXNlXCIsXCJrZXlcIixcImRlZmF1bHRcIixcImV4cGxpY2l0XCIsXCJpbXBsaWNpdFwiLFwiY29udGFpbnNcIl07bi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9iYXNlU3RhdGUsZT17fTtjLmZvckVhY2goZnVuY3Rpb24ocil7ZVtyXT10W3JdfSk7dmFyIHI9bmV3IHRoaXMuY29uc3RydWN0b3IoZS5wYXJlbnQpO3JldHVybiByLl9iYXNlU3RhdGU9ZSxyfSxuLnByb3RvdHlwZS5fd3JhcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTt1LmZvckVhY2goZnVuY3Rpb24oZSl7dGhpc1tlXT1mdW5jdGlvbigpe3ZhciByPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO3JldHVybiB0LmNoaWxkcmVuLnB1c2gocikscltlXS5hcHBseShyLGFyZ3VtZW50cyl9fSx0aGlzKX0sbi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO2YobnVsbD09PWUucGFyZW50KSx0LmNhbGwodGhpcyksZS5jaGlsZHJlbj1lLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5fYmFzZVN0YXRlLnBhcmVudD09PXRoaXN9LHRoaXMpLGYuZXF1YWwoZS5jaGlsZHJlbi5sZW5ndGgsMSxcIlJvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZFwiKX0sbi5wcm90b3R5cGUuX3VzZUFyZ3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlLHI9dC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yfSx0aGlzKTt0PXQuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEodCBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3IpfSx0aGlzKSwwIT09ci5sZW5ndGgmJihmKG51bGw9PT1lLmNoaWxkcmVuKSxlLmNoaWxkcmVuPXIsci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QuX2Jhc2VTdGF0ZS5wYXJlbnQ9dGhpc30sdGhpcykpLDAhPT10Lmxlbmd0aCYmKGYobnVsbD09PWUuYXJncyksZS5hcmdzPXQsZS5yZXZlcnNlQXJncz10Lm1hcChmdW5jdGlvbih0KXtpZihcIm9iamVjdFwiIT10eXBlb2YgdHx8dC5jb25zdHJ1Y3RvciE9PU9iamVjdClyZXR1cm4gdDt2YXIgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihyKXtyPT0oMHxyKSYmKHJ8PTApO3ZhciBuPXRbcl07ZVtuXT1yfSksZX0pKX0saC5mb3JFYWNoKGZ1bmN0aW9uKHQpe24ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO3Rocm93IG5ldyBFcnJvcih0K1wiIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6IFwiK2UuZW5jKX19KSxzLmZvckVhY2goZnVuY3Rpb24odCl7bi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9iYXNlU3RhdGUscj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3JldHVybiBmKG51bGw9PT1lLnRhZyksZS50YWc9dCx0aGlzLl91c2VBcmdzKHIpLHRoaXN9fSksbi5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS51c2UpLGUudXNlPXQsdGhpc30sbi5wcm90b3R5cGUub3B0aW9uYWw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIHQub3B0aW9uYWw9ITAsdGhpc30sbi5wcm90b3R5cGUuZGVmPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5kZWZhdWx0KSxlLmRlZmF1bHQ9dCxlLm9wdGlvbmFsPSEwLHRoaXN9LG4ucHJvdG90eXBlLmV4cGxpY2l0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5leHBsaWNpdCYmbnVsbD09PWUuaW1wbGljaXQpLGUuZXhwbGljaXQ9dCx0aGlzfSxuLnByb3RvdHlwZS5pbXBsaWNpdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGYobnVsbD09PWUuZXhwbGljaXQmJm51bGw9PT1lLmltcGxpY2l0KSxlLmltcGxpY2l0PXQsdGhpc30sbi5wcm90b3R5cGUub2JqPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYmFzZVN0YXRlLGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gdC5vYmo9ITAsMCE9PWUubGVuZ3RoJiZ0aGlzLl91c2VBcmdzKGUpLHRoaXN9LG4ucHJvdG90eXBlLmtleT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9iYXNlU3RhdGU7cmV0dXJuIGYobnVsbD09PWUua2V5KSxlLmtleT10LHRoaXN9LG4ucHJvdG90eXBlLmFueT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gdC5hbnk9ITAsdGhpc30sbi5wcm90b3R5cGUuY2hvaWNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2Jhc2VTdGF0ZTtyZXR1cm4gZihudWxsPT09ZS5jaG9pY2UpLGUuY2hvaWNlPXQsdGhpcy5fdXNlQXJncyhPYmplY3Qua2V5cyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSksdGhpc30sbi5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fYmFzZVN0YXRlO3JldHVybiBmKG51bGw9PT1lLnVzZSksZS5jb250YWlucz10LHRoaXN9LG4ucHJvdG90eXBlLl9kZWNvZGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PXIucGFyZW50KXJldHVybiB0LndyYXBSZXN1bHQoci5jaGlsZHJlblswXS5fZGVjb2RlKHQsZSkpO3ZhciBuPXIuZGVmYXVsdCxpPSEwLG89bnVsbDtpZihudWxsIT09ci5rZXkmJihvPXQuZW50ZXJLZXkoci5rZXkpKSxyLm9wdGlvbmFsKXt2YXIgZj1udWxsO2lmKG51bGwhPT1yLmV4cGxpY2l0P2Y9ci5leHBsaWNpdDpudWxsIT09ci5pbXBsaWNpdD9mPXIuaW1wbGljaXQ6bnVsbCE9PXIudGFnJiYoZj1yLnRhZyksbnVsbCE9PWZ8fHIuYW55KXtpZihpPXRoaXMuX3BlZWtUYWcodCxmLHIuYW55KSx0LmlzRXJyb3IoaSkpcmV0dXJuIGl9ZWxzZXt2YXIgcz10LnNhdmUoKTt0cnl7bnVsbD09PXIuY2hvaWNlP3RoaXMuX2RlY29kZUdlbmVyaWMoci50YWcsdCxlKTp0aGlzLl9kZWNvZGVDaG9pY2UodCxlKSxpPSEwfWNhdGNoKHQpe2k9ITF9dC5yZXN0b3JlKHMpfX12YXIgdTtpZihyLm9iaiYmaSYmKHU9dC5lbnRlck9iamVjdCgpKSxpKXtpZihudWxsIT09ci5leHBsaWNpdCl7dmFyIGg9dGhpcy5fZGVjb2RlVGFnKHQsci5leHBsaWNpdCk7aWYodC5pc0Vycm9yKGgpKXJldHVybiBoO3Q9aH12YXIgYz10Lm9mZnNldDtpZihudWxsPT09ci51c2UmJm51bGw9PT1yLmNob2ljZSl7aWYoci5hbnkpdmFyIHM9dC5zYXZlKCk7dmFyIGQ9dGhpcy5fZGVjb2RlVGFnKHQsbnVsbCE9PXIuaW1wbGljaXQ/ci5pbXBsaWNpdDpyLnRhZyxyLmFueSk7aWYodC5pc0Vycm9yKGQpKXJldHVybiBkO3IuYW55P249dC5yYXcocyk6dD1kfWlmKGUmJmUudHJhY2smJm51bGwhPT1yLnRhZyYmZS50cmFjayh0LnBhdGgoKSxjLHQubGVuZ3RoLFwidGFnZ2VkXCIpLGUmJmUudHJhY2smJm51bGwhPT1yLnRhZyYmZS50cmFjayh0LnBhdGgoKSx0Lm9mZnNldCx0Lmxlbmd0aCxcImNvbnRlbnRcIiksbj1yLmFueT9uOm51bGw9PT1yLmNob2ljZT90aGlzLl9kZWNvZGVHZW5lcmljKHIudGFnLHQsZSk6dGhpcy5fZGVjb2RlQ2hvaWNlKHQsZSksdC5pc0Vycm9yKG4pKXJldHVybiBuO2lmKHIuYW55fHxudWxsIT09ci5jaG9pY2V8fG51bGw9PT1yLmNoaWxkcmVufHxyLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24ocil7ci5fZGVjb2RlKHQsZSl9KSxyLmNvbnRhaW5zJiYoXCJvY3RzdHJcIj09PXIudGFnfHxcImJpdHN0clwiPT09ci50YWcpKXt2YXIgbD1uZXcgYShuKTtuPXRoaXMuX2dldFVzZShyLmNvbnRhaW5zLHQuX3JlcG9ydGVyU3RhdGUub2JqKS5fZGVjb2RlKGwsZSl9fXJldHVybiByLm9iaiYmaSYmKG49dC5sZWF2ZU9iamVjdCh1KSksbnVsbD09PXIua2V5fHxudWxsPT09biYmaSE9PSEwP251bGwhPT1vJiZ0LmV4aXRLZXkobyk6dC5sZWF2ZUtleShvLHIua2V5LG4pLG59LG4ucHJvdG90eXBlLl9kZWNvZGVHZW5lcmljPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl9iYXNlU3RhdGU7cmV0dXJuXCJzZXFcIj09PXR8fFwic2V0XCI9PT10P251bGw6XCJzZXFvZlwiPT09dHx8XCJzZXRvZlwiPT09dD90aGlzLl9kZWNvZGVMaXN0KGUsdCxuLmFyZ3NbMF0scik6L3N0ciQvLnRlc3QodCk/dGhpcy5fZGVjb2RlU3RyKGUsdCxyKTpcIm9iamlkXCI9PT10JiZuLmFyZ3M/dGhpcy5fZGVjb2RlT2JqaWQoZSxuLmFyZ3NbMF0sbi5hcmdzWzFdLHIpOlwib2JqaWRcIj09PXQ/dGhpcy5fZGVjb2RlT2JqaWQoZSxudWxsLG51bGwscik6XCJnZW50aW1lXCI9PT10fHxcInV0Y3RpbWVcIj09PXQ/dGhpcy5fZGVjb2RlVGltZShlLHQscik6XCJudWxsX1wiPT09dD90aGlzLl9kZWNvZGVOdWxsKGUscik6XCJib29sXCI9PT10P3RoaXMuX2RlY29kZUJvb2woZSxyKTpcImludFwiPT09dHx8XCJlbnVtXCI9PT10P3RoaXMuX2RlY29kZUludChlLG4uYXJncyYmbi5hcmdzWzBdLHIpOm51bGwhPT1uLnVzZT90aGlzLl9nZXRVc2Uobi51c2UsZS5fcmVwb3J0ZXJTdGF0ZS5vYmopLl9kZWNvZGUoZSxyKTplLmVycm9yKFwidW5rbm93biB0YWc6IFwiK3QpfSxuLnByb3RvdHlwZS5fZ2V0VXNlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fYmFzZVN0YXRlO3JldHVybiByLnVzZURlY29kZXI9dGhpcy5fdXNlKHQsZSksZihudWxsPT09ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50KSxyLnVzZURlY29kZXI9ci51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF0sci5pbXBsaWNpdCE9PXIudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0JiYoci51c2VEZWNvZGVyPXIudXNlRGVjb2Rlci5jbG9uZSgpLHIudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0PXIuaW1wbGljaXQpLHIudXNlRGVjb2Rlcn0sbi5wcm90b3R5cGUuX2RlY29kZUNob2ljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZSxuPW51bGwsaT0hMTtyZXR1cm4gT2JqZWN0LmtleXMoci5jaG9pY2UpLnNvbWUoZnVuY3Rpb24obyl7dmFyIGE9dC5zYXZlKCksZj1yLmNob2ljZVtvXTt0cnl7dmFyIHM9Zi5fZGVjb2RlKHQsZSk7aWYodC5pc0Vycm9yKHMpKXJldHVybiExO249e3R5cGU6byx2YWx1ZTpzfSxpPSEwfWNhdGNoKGUpe3JldHVybiB0LnJlc3RvcmUoYSksITF9cmV0dXJuITB9LHRoaXMpLGk/bjp0LmVycm9yKFwiQ2hvaWNlIG5vdCBtYXRjaGVkXCIpfSxuLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG8odCx0aGlzLnJlcG9ydGVyKX0sbi5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fYmFzZVN0YXRlO2lmKG51bGw9PT1uLmRlZmF1bHR8fG4uZGVmYXVsdCE9PXQpe3ZhciBpPXRoaXMuX2VuY29kZVZhbHVlKHQsZSxyKTtpZih2b2lkIDAhPT1pJiYhdGhpcy5fc2tpcERlZmF1bHQoaSxlLHIpKXJldHVybiBpfX0sbi5wcm90b3R5cGUuX2VuY29kZVZhbHVlPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl9iYXNlU3RhdGU7aWYobnVsbD09PW4ucGFyZW50KXJldHVybiBuLmNoaWxkcmVuWzBdLl9lbmNvZGUodCxlfHxuZXcgaSk7dmFyIG89bnVsbDtpZih0aGlzLnJlcG9ydGVyPWUsbi5vcHRpb25hbCYmdm9pZCAwPT09dCl7aWYobnVsbD09PW4uZGVmYXVsdClyZXR1cm47dD1uLmRlZmF1bHR9dmFyIGE9bnVsbCxmPSExO2lmKG4uYW55KW89dGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih0KTtlbHNlIGlmKG4uY2hvaWNlKW89dGhpcy5fZW5jb2RlQ2hvaWNlKHQsZSk7ZWxzZSBpZihuLmNvbnRhaW5zKWE9dGhpcy5fZ2V0VXNlKG4uY29udGFpbnMscikuX2VuY29kZSh0LGUpLGY9ITA7ZWxzZSBpZihuLmNoaWxkcmVuKWE9bi5jaGlsZHJlbi5tYXAoZnVuY3Rpb24ocil7aWYoXCJudWxsX1wiPT09ci5fYmFzZVN0YXRlLnRhZylyZXR1cm4gci5fZW5jb2RlKG51bGwsZSx0KTtpZihudWxsPT09ci5fYmFzZVN0YXRlLmtleSlyZXR1cm4gZS5lcnJvcihcIkNoaWxkIHNob3VsZCBoYXZlIGEga2V5XCIpO3ZhciBuPWUuZW50ZXJLZXkoci5fYmFzZVN0YXRlLmtleSk7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIGUuZXJyb3IoXCJDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3RcIik7dmFyIGk9ci5fZW5jb2RlKHRbci5fYmFzZVN0YXRlLmtleV0sZSx0KTtyZXR1cm4gZS5sZWF2ZUtleShuKSxpfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSxhPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoYSk7ZWxzZSBpZihcInNlcW9mXCI9PT1uLnRhZ3x8XCJzZXRvZlwiPT09bi50YWcpe2lmKCFuLmFyZ3N8fDEhPT1uLmFyZ3MubGVuZ3RoKXJldHVybiBlLmVycm9yKFwiVG9vIG1hbnkgYXJncyBmb3IgOiBcIituLnRhZyk7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuZXJyb3IoXCJzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5XCIpO3ZhciBzPXRoaXMuY2xvbmUoKTtzLl9iYXNlU3RhdGUuaW1wbGljaXQ9bnVsbCxhPXRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodC5tYXAoZnVuY3Rpb24ocil7dmFyIG49dGhpcy5fYmFzZVN0YXRlO3JldHVybiB0aGlzLl9nZXRVc2Uobi5hcmdzWzBdLHQpLl9lbmNvZGUocixlKX0scykpfWVsc2UgbnVsbCE9PW4udXNlP289dGhpcy5fZ2V0VXNlKG4udXNlLHIpLl9lbmNvZGUodCxlKTooYT10aGlzLl9lbmNvZGVQcmltaXRpdmUobi50YWcsdCksZj0hMCk7dmFyIG87aWYoIW4uYW55JiZudWxsPT09bi5jaG9pY2Upe3ZhciB1PW51bGwhPT1uLmltcGxpY2l0P24uaW1wbGljaXQ6bi50YWcsaD1udWxsPT09bi5pbXBsaWNpdD9cInVuaXZlcnNhbFwiOlwiY29udGV4dFwiO251bGw9PT11P251bGw9PT1uLnVzZSYmZS5lcnJvcihcIlRhZyBjb3VsZCBiZSBvbW1pdGVkIG9ubHkgZm9yIC51c2UoKVwiKTpudWxsPT09bi51c2UmJihvPXRoaXMuX2VuY29kZUNvbXBvc2l0ZSh1LGYsaCxhKSl9cmV0dXJuIG51bGwhPT1uLmV4cGxpY2l0JiYobz10aGlzLl9lbmNvZGVDb21wb3NpdGUobi5leHBsaWNpdCwhMSxcImNvbnRleHRcIixvKSksb30sbi5wcm90b3R5cGUuX2VuY29kZUNob2ljZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZSxuPXIuY2hvaWNlW3QudHlwZV07cmV0dXJuIG58fGYoITEsdC50eXBlK1wiIG5vdCBmb3VuZCBpbiBcIitKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhyLmNob2ljZSkpKSxuLl9lbmNvZGUodC52YWx1ZSxlKX0sbi5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2Jhc2VTdGF0ZTtpZigvc3RyJC8udGVzdCh0KSlyZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGUsdCk7aWYoXCJvYmppZFwiPT09dCYmci5hcmdzKXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChlLHIucmV2ZXJzZUFyZ3NbMF0sci5hcmdzWzFdKTtpZihcIm9iamlkXCI9PT10KXJldHVybiB0aGlzLl9lbmNvZGVPYmppZChlLG51bGwsbnVsbCk7aWYoXCJnZW50aW1lXCI9PT10fHxcInV0Y3RpbWVcIj09PXQpcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZSx0KTtpZihcIm51bGxfXCI9PT10KXJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7aWYoXCJpbnRcIj09PXR8fFwiZW51bVwiPT09dClyZXR1cm4gdGhpcy5fZW5jb2RlSW50KGUsci5hcmdzJiZyLnJldmVyc2VBcmdzWzBdKTtpZihcImJvb2xcIj09PXQpcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZSk7dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgdGFnOiBcIit0KX0sbi5wcm90b3R5cGUuX2lzTnVtc3RyPWZ1bmN0aW9uKHQpe3JldHVybi9eWzAtOSBdKiQvLnRlc3QodCl9LG4ucHJvdG90eXBlLl9pc1ByaW50c3RyPWZ1bmN0aW9uKHQpe3JldHVybi9eW0EtWmEtejAtOSAnXFwoXFwpXFwrLFxcLVxcLlxcLzo9XFw/XSokLy50ZXN0KHQpfX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7dGhpcy5fcmVwb3J0ZXJTdGF0ZT17b2JqOm51bGwscGF0aDpbXSxvcHRpb25zOnR8fHt9LGVycm9yczpbXX19ZnVuY3Rpb24gaSh0LGUpe3RoaXMucGF0aD10LHRoaXMucmV0aHJvdyhlKX12YXIgbz1yKDIpO2UuUmVwb3J0ZXI9bixuLnByb3RvdHlwZS5pc0Vycm9yPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgaX0sbi5wcm90b3R5cGUuc2F2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJue29iajp0Lm9iaixwYXRoTGVuOnQucGF0aC5sZW5ndGh9fSxuLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7ZS5vYmo9dC5vYmosZS5wYXRoPWUucGF0aC5zbGljZSgwLHQucGF0aExlbil9LG4ucHJvdG90eXBlLmVudGVyS2V5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaCh0KX0sbi5wcm90b3R5cGUuZXhpdEtleT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9yZXBvcnRlclN0YXRlO2UucGF0aD1lLnBhdGguc2xpY2UoMCx0LTEpfSxuLnByb3RvdHlwZS5sZWF2ZUtleT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fcmVwb3J0ZXJTdGF0ZTt0aGlzLmV4aXRLZXkodCksbnVsbCE9PW4ub2JqJiYobi5vYmpbZV09cil9LG4ucHJvdG90eXBlLnBhdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oXCIvXCIpfSxuLnByb3RvdHlwZS5lbnRlck9iamVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlcG9ydGVyU3RhdGUsZT10Lm9iajtyZXR1cm4gdC5vYmo9e30sZX0sbi5wcm90b3R5cGUubGVhdmVPYmplY3Q9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxyPWUub2JqO3JldHVybiBlLm9iaj10LHJ9LG4ucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5fcmVwb3J0ZXJTdGF0ZSxuPXQgaW5zdGFuY2VvZiBpO2lmKGU9bj90Om5ldyBpKHIucGF0aC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuXCJbXCIrSlNPTi5zdHJpbmdpZnkodCkrXCJdXCJ9KS5qb2luKFwiXCIpLHQubWVzc2FnZXx8dCx0LnN0YWNrKSwhci5vcHRpb25zLnBhcnRpYWwpdGhyb3cgZTtyZXR1cm4gbnx8ci5lcnJvcnMucHVzaChlKSxlfSxuLnByb3RvdHlwZS53cmFwUmVzdWx0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlcG9ydGVyU3RhdGU7cmV0dXJuIGUub3B0aW9ucy5wYXJ0aWFsP3tyZXN1bHQ6dGhpcy5pc0Vycm9yKHQpP251bGw6dCxlcnJvcnM6ZS5lcnJvcnN9OnR9LG8oaSxFcnJvciksaS5wcm90b3R5cGUucmV0aHJvdz1mdW5jdGlvbih0KXtpZih0aGlzLm1lc3NhZ2U9dCtcIiBhdDogXCIrKHRoaXMucGF0aHx8XCIoc2hhbGxvdylcIiksRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsaSksIXRoaXMuc3RhY2spdHJ5e3Rocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpfWNhdGNoKHQpe3RoaXMuc3RhY2s9dC5zdGFja31yZXR1cm4gdGhpc319LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1yKDIzNSk7ZS50YWdDbGFzcz17MDpcInVuaXZlcnNhbFwiLDE6XCJhcHBsaWNhdGlvblwiLDI6XCJjb250ZXh0XCIsMzpcInByaXZhdGVcIn0sZS50YWdDbGFzc0J5TmFtZT1uLl9yZXZlcnNlKGUudGFnQ2xhc3MpLGUudGFnPXswOlwiZW5kXCIsMTpcImJvb2xcIiwyOlwiaW50XCIsMzpcImJpdHN0clwiLDQ6XCJvY3RzdHJcIiw1OlwibnVsbF9cIiw2Olwib2JqaWRcIiw3Olwib2JqRGVzY1wiLDg6XCJleHRlcm5hbFwiLDk6XCJyZWFsXCIsMTA6XCJlbnVtXCIsMTE6XCJlbWJlZFwiLDEyOlwidXRmOHN0clwiLDEzOlwicmVsYXRpdmVPaWRcIiwxNjpcInNlcVwiLDE3Olwic2V0XCIsMTg6XCJudW1zdHJcIiwxOTpcInByaW50c3RyXCIsMjA6XCJ0NjFzdHJcIiwyMTpcInZpZGVvc3RyXCIsMjI6XCJpYTVzdHJcIiwyMzpcInV0Y3RpbWVcIiwyNDpcImdlbnRpbWVcIiwyNTpcImdyYXBoc3RyXCIsMjY6XCJpc282NDZzdHJcIiwyNzpcImdlbnN0clwiLDI4OlwidW5pc3RyXCIsMjk6XCJjaGFyc3RyXCIsMzA6XCJibXBzdHJcIn0sZS50YWdCeU5hbWU9bi5fcmV2ZXJzZShlLnRhZyl9LGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lO24uZGVyPXIoMjM2KSxuLnBlbT1yKDU4NSl9LGZ1bmN0aW9uKHQsZSxyKXtmdW5jdGlvbiBuKHQpe2EuY2FsbCh0aGlzLHQpLHRoaXMuZW5jPVwicGVtXCJ9dmFyIGk9cigyKSxvPXIoMSkuQnVmZmVyLGE9cigyMzYpO2kobixhKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5kZWNvZGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyksbj1lLmxhYmVsLnRvVXBwZXJDYXNlKCksaT0vXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC8sZj0tMSxzPS0xLHU9MDt1PHIubGVuZ3RoO3UrKyl7dmFyIGg9clt1XS5tYXRjaChpKTtpZihudWxsIT09aCYmaFsyXT09PW4pe2lmKGYhPT0tMSl7aWYoXCJFTkRcIiE9PWhbMV0pYnJlYWs7cz11O2JyZWFrfWlmKFwiQkVHSU5cIiE9PWhbMV0pYnJlYWs7Zj11fX1pZihmPT09LTF8fHM9PT0tMSl0aHJvdyBuZXcgRXJyb3IoXCJQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiBcIituKTt2YXIgYz1yLnNsaWNlKGYrMSxzKS5qb2luKFwiXCIpO2MucmVwbGFjZSgvW15hLXowLTlcXCtcXC89XSsvZ2ksXCJcIik7dmFyIGQ9bmV3IG8oYyxcImJhc2U2NFwiKTtyZXR1cm4gYS5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcyxkLGUpfX0sZnVuY3Rpb24odCxlLHIpe3ZhciBuPWU7bi5kZXI9cigyMzcpLG4ucGVtPXIoNTg3KX0sZnVuY3Rpb24odCxlLHIpe2Z1bmN0aW9uIG4odCl7by5jYWxsKHRoaXMsdCksdGhpcy5lbmM9XCJwZW1cIn12YXIgaT1yKDIpLG89cigyMzcpO2kobixvKSx0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5lbmNvZGU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9by5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcyx0KSxuPXIudG9TdHJpbmcoXCJiYXNlNjRcIiksaT1bXCItLS0tLUJFR0lOIFwiK2UubGFiZWwrXCItLS0tLVwiXSxhPTA7YTxuLmxlbmd0aDthKz02NClpLnB1c2gobi5zbGljZShhLGErNjQpKTtyZXR1cm4gaS5wdXNoKFwiLS0tLS1FTkQgXCIrZS5sYWJlbCtcIi0tLS0tXCIpLGkuam9pbihcIlxcblwiKX19LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcih0LGUpe2lmKCF0KXRocm93IG5ldyBFcnJvcihlfHxcIkFzc2VydGlvbiBmYWlsZWRcIil9dC5leHBvcnRzPXIsci5lcXVhbD1mdW5jdGlvbih0LGUscil7aWYodCE9ZSl0aHJvdyBuZXcgRXJyb3Iocnx8XCJBc3NlcnRpb24gZmFpbGVkOiBcIit0K1wiICE9IFwiK2UpfX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUscixvKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG4/KHUuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgaSx0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IHMuQUVTKHIpLHRoaXMuX3ByZXY9bmV3IHQoby5sZW5ndGgpLG8uY29weSh0aGlzLl9wcmV2KSx0aGlzLl9tb2RlPWUsdm9pZCh0aGlzLl9hdXRvcGFkZGluZz0hMCkpOm5ldyBuKGUscixvKX1mdW5jdGlvbiBpKCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBpP3ZvaWQodGhpcy5jYWNoZT1uZXcgdChcIlwiKSk6bmV3IGl9ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGU9dFsxNV0scj0tMTsrK3I8ZTspaWYodFtyKygxNi1lKV0hPT1lKXRocm93IG5ldyBFcnJvcihcInVuYWJsZSB0byBkZWNyeXB0IGRhdGFcIik7aWYoMTYhPT1lKXJldHVybiB0LnNsaWNlKDAsMTYtZSl9ZnVuY3Rpb24gYShlLHIsaSl7dmFyIG89Y1tlLnRvTG93ZXJDYXNlKCldO2lmKCFvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIHN1aXRlIHR5cGVcIik7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGkmJihpPW5ldyB0KGkpKSxcInN0cmluZ1wiPT10eXBlb2YgciYmKHI9bmV3IHQocikpLHIubGVuZ3RoIT09by5rZXkvOCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBrZXkgbGVuZ3RoIFwiK3IubGVuZ3RoKTtpZihpLmxlbmd0aCE9PW8uaXYpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgaXYgbGVuZ3RoIFwiK2kubGVuZ3RoKTtyZXR1cm5cInN0cmVhbVwiPT09by50eXBlP25ldyBkKGJbby5tb2RlXSxyLGksITApOlwiYXV0aFwiPT09by50eXBlP25ldyBsKGJbby5tb2RlXSxyLGksITApOm5ldyBuKGJbby5tb2RlXSxyLGkpfWZ1bmN0aW9uIGYodCxlKXt2YXIgcj1jW3QudG9Mb3dlckNhc2UoKV07aWYoIXIpdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgc3VpdGUgdHlwZVwiKTt2YXIgbj1wKGUsITEsci5rZXksci5pdik7cmV0dXJuIGEodCxuLmtleSxuLml2KX12YXIgcz1yKDEwNyksdT1yKDEwOSksaD1yKDIpLGM9cigxNTIpLGQ9cigyNDYpLGw9cigyMzgpLHA9cigxNTMpO2gobix1KSxuLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMuX2NhY2hlLmFkZChlKTtmb3IodmFyIHIsbixpPVtdO3I9dGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKTspbj10aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxyKSxpLnB1c2gobik7cmV0dXJuIHQuY29uY2F0KGkpfSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiBvKHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLHQpKTtpZih0KXRocm93IG5ldyBFcnJvcihcImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aFwiKX0sbi5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2F1dG9wYWRkaW5nPSEhdCx0aGlzfSxpLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5jYWNoZT10LmNvbmNhdChbdGhpcy5jYWNoZSxlXSl9LGkucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZTtpZih0KXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNilyZXR1cm4gZT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZX1lbHNlIGlmKHRoaXMuY2FjaGUubGVuZ3RoPj0xNilyZXR1cm4gZT10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZTtyZXR1cm4gbnVsbH0saS5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZX07dmFyIGI9e0VDQjpyKDI0NCksQ0JDOnIoMjQwKSxDRkI6cigyNDEpLENGQjg6cigyNDMpLENGQjE6cigyNDIpLE9GQjpyKDI0NSksQ1RSOnIoMTA4KSxHQ006cigxMDgpfTtlLmNyZWF0ZURlY2lwaGVyPWYsZS5jcmVhdGVEZWNpcGhlcml2PWF9KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSxyLG8pe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbj8ocy5jYWxsKHRoaXMpLHRoaXMuX2NhY2hlPW5ldyBpLHRoaXMuX2NpcGhlcj1uZXcgZi5BRVMociksdGhpcy5fcHJldj1uZXcgdChvLmxlbmd0aCksby5jb3B5KHRoaXMuX3ByZXYpLHRoaXMuX21vZGU9ZSx2b2lkKHRoaXMuX2F1dG9wYWRkaW5nPSEwKSk6bmV3IG4oZSxyLG8pfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk/dm9pZCh0aGlzLmNhY2hlPW5ldyB0KFwiXCIpKTpuZXcgaX1mdW5jdGlvbiBvKGUscixpKXt2YXIgbz1oW2UudG9Mb3dlckNhc2UoKV07aWYoIW8pdGhyb3cgbmV3IFR5cGVFcnJvcihcImludmFsaWQgc3VpdGUgdHlwZVwiKTtpZihcInN0cmluZ1wiPT10eXBlb2YgaSYmKGk9bmV3IHQoaSkpLFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1uZXcgdChyKSksci5sZW5ndGghPT1vLmtleS84KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnZhbGlkIGtleSBsZW5ndGggXCIrci5sZW5ndGgpO2lmKGkubGVuZ3RoIT09by5pdil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBpdiBsZW5ndGggXCIraS5sZW5ndGgpO3JldHVyblwic3RyZWFtXCI9PT1vLnR5cGU/bmV3IGQocFtvLm1vZGVdLHIsaSk6XCJhdXRoXCI9PT1vLnR5cGU/bmV3IGwocFtvLm1vZGVdLHIsaSk6bmV3IG4ocFtvLm1vZGVdLHIsaSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciByPWhbdC50b0xvd2VyQ2FzZSgpXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW52YWxpZCBzdWl0ZSB0eXBlXCIpO3ZhciBuPWMoZSwhMSxyLmtleSxyLml2KTtyZXR1cm4gbyh0LG4ua2V5LG4uaXYpfXZhciBmPXIoMTA3KSxzPXIoMTA5KSx1PXIoMiksaD1yKDE1MiksYz1yKDE1MyksZD1yKDI0NiksbD1yKDIzOCk7dShuLHMpLG4ucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy5fY2FjaGUuYWRkKGUpO2Zvcih2YXIgcixuLGk9W107cj10aGlzLl9jYWNoZS5nZXQoKTspbj10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxyKSxpLnB1c2gobik7cmV0dXJuIHQuY29uY2F0KGkpfSxuLnByb3RvdHlwZS5fZmluYWw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jYWNoZS5mbHVzaCgpO2lmKHRoaXMuX2F1dG9wYWRkaW5nKXJldHVybiB0PXRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLHQpLHRoaXMuX2NpcGhlci5zY3J1YigpLHQ7aWYoXCIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMFwiIT09dC50b1N0cmluZyhcImhleFwiKSl0aHJvdyB0aGlzLl9jaXBoZXIuc2NydWIoKSxuZXcgRXJyb3IoXCJkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGhcIil9LG4ucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hdXRvcGFkZGluZz0hIXQsdGhpc30saS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuY2FjaGU9dC5jb25jYXQoW3RoaXMuY2FjaGUsZV0pfSxpLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlLmxlbmd0aD4xNSl7dmFyIHQ9dGhpcy5jYWNoZS5zbGljZSgwLDE2KTtyZXR1cm4gdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0fXJldHVybiBudWxsfSxpLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2Zvcih2YXIgZT0xNi10aGlzLmNhY2hlLmxlbmd0aCxyPW5ldyB0KGUpLG49LTE7KytuPGU7KXIud3JpdGVVSW50OChlLG4pO3ZhciBpPXQuY29uY2F0KFt0aGlzLmNhY2hlLHJdKTtyZXR1cm4gaX07dmFyIHA9e0VDQjpyKDI0NCksQ0JDOnIoMjQwKSxDRkI6cigyNDEpLENGQjg6cigyNDMpLENGQjE6cigyNDIpLE9GQjpyKDI0NSksQ1RSOnIoMTA4KSxHQ006cigxMDgpfTtlLmNyZWF0ZUNpcGhlcml2PW8sZS5jcmVhdGVDaXBoZXI9YX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcih0KXt0aGlzLmg9dCx0aGlzLnN0YXRlPW5ldyBlKDE2KSx0aGlzLnN0YXRlLmZpbGwoMCksdGhpcy5jYWNoZT1uZXcgZShcIlwiKX1mdW5jdGlvbiBuKHQpe3JldHVyblt0LnJlYWRVSW50MzJCRSgwKSx0LnJlYWRVSW50MzJCRSg0KSx0LnJlYWRVSW50MzJCRSg4KSx0LnJlYWRVSW50MzJCRSgxMildfWZ1bmN0aW9uIGkodCl7dD10Lm1hcChvKTt2YXIgcj1uZXcgZSgxNik7cmV0dXJuIHIud3JpdGVVSW50MzJCRSh0WzBdLDApLHIud3JpdGVVSW50MzJCRSh0WzFdLDQpLHIud3JpdGVVSW50MzJCRSh0WzJdLDgpLHIud3JpdGVVSW50MzJCRSh0WzNdLDEyKSxyfWZ1bmN0aW9uIG8odCl7dmFyIGUscjtyZXR1cm4gZT10PnN8fHQ8MD8ocj1NYXRoLmFicyh0KSVzLHQ8MD9zLXI6cik6dH1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuW3RbMF1eZVswXSx0WzFdXmVbMV0sdFsyXV5lWzJdLHRbM11eZVszXV19dmFyIGY9bmV3IGUoMTYpO2YuZmlsbCgwKSx0LmV4cG9ydHM9cixyLnByb3RvdHlwZS5naGFzaD1mdW5jdGlvbih0KXtmb3IodmFyIGU9LTE7KytlPHQubGVuZ3RoOyl0aGlzLnN0YXRlW2VdXj10W2VdO3RoaXMuX211bHRpcGx5KCl9LHIucHJvdG90eXBlLl9tdWx0aXBseT1mdW5jdGlvbigpe2Zvcih2YXIgdCxlLHIsbz1uKHRoaXMuaCksZj1bMCwwLDAsMF0scz0tMTsrK3M8MTI4Oyl7Zm9yKGU9MCE9PSh0aGlzLnN0YXRlW35+KHMvOCldJjE8PDctcyU4KSxlJiYoZj1hKGYsbykpLHI9MCE9PSgxJm9bM10pLHQ9Mzt0PjA7dC0tKW9bdF09b1t0XT4+PjF8KDEmb1t0LTFdKTw8MzE7b1swXT1vWzBdPj4+MSxyJiYob1swXT1vWzBdXjIyNTw8MjQpfXRoaXMuc3RhdGU9aShmKX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3RoaXMuY2FjaGU9ZS5jb25jYXQoW3RoaXMuY2FjaGUsdF0pO2Zvcih2YXIgcjt0aGlzLmNhY2hlLmxlbmd0aD49MTY7KXI9dGhpcy5jYWNoZS5zbGljZSgwLDE2KSx0aGlzLmNhY2hlPXRoaXMuY2FjaGUuc2xpY2UoMTYpLHRoaXMuZ2hhc2gocil9LHIucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY2FjaGUubGVuZ3RoJiZ0aGlzLmdoYXNoKGUuY29uY2F0KFt0aGlzLmNhY2hlLGZdLDE2KSksdGhpcy5naGFzaChpKFswLHQsMCxyXSkpLHRoaXMuc3RhdGV9O3ZhciBzPU1hdGgucG93KDIsMzIpfSkuY2FsbChlLHIoMSkuQnVmZmVyKX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQscil7dmFyIG49KHQubW9kdWx1cyx0Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpKSxpPShyLmxlbmd0aCxjKFwic2hhMVwiKS51cGRhdGUobmV3IGUoXCJcIikpLmRpZ2VzdCgpKSxhPWkubGVuZ3RoO2lmKDAhPT1yWzBdKXRocm93IG5ldyBFcnJvcihcImRlY3J5cHRpb24gZXJyb3JcIik7dmFyIHU9ci5zbGljZSgxLGErMSksaD1yLnNsaWNlKGErMSksZD1zKHUsZihoLGEpKSxsPXMoaCxmKGQsbi1hLTEpKTtpZihvKGksbC5zbGljZSgwLGEpKSl0aHJvdyBuZXcgRXJyb3IoXCJkZWNyeXB0aW9uIGVycm9yXCIpO2Zvcih2YXIgcD1hOzA9PT1sW3BdOylwKys7aWYoMSE9PWxbcCsrXSl0aHJvdyBuZXcgRXJyb3IoXCJkZWNyeXB0aW9uIGVycm9yXCIpO3JldHVybiBsLnNsaWNlKHApfWZ1bmN0aW9uIGkodCxlLHIpe2Zvcih2YXIgbj1lLnNsaWNlKDAsMiksaT0yLG89MDswIT09ZVtpKytdOylpZihpPj1lLmxlbmd0aCl7bysrO2JyZWFrfXZhciBhPWUuc2xpY2UoMixpLTEpO2Uuc2xpY2UoaS0xLGkpO2lmKChcIjAwMDJcIiE9PW4udG9TdHJpbmcoXCJoZXhcIikmJiFyfHxcIjAwMDFcIiE9PW4udG9TdHJpbmcoXCJoZXhcIikmJnIpJiZvKyssYS5sZW5ndGg8OCYmbysrLG8pdGhyb3cgbmV3IEVycm9yKFwiZGVjcnlwdGlvbiBlcnJvclwiKTtyZXR1cm4gZS5zbGljZShpKX1mdW5jdGlvbiBvKHQscil7dD1uZXcgZSh0KSxyPW5ldyBlKHIpO3ZhciBuPTAsaT10Lmxlbmd0aDt0Lmxlbmd0aCE9PXIubGVuZ3RoJiYobisrLGk9TWF0aC5taW4odC5sZW5ndGgsci5sZW5ndGgpKTtmb3IodmFyIG89LTE7KytvPGk7KW4rPXRbb11ecltvXTtyZXR1cm4gbn12YXIgYT1yKDIzMyksZj1yKDIzMSkscz1yKDI0OCksdT1yKDcwKSxoPXIoMjMyKSxjPXIoNTkpLGQ9cigyNDcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LHIsbyl7dmFyIGY7Zj10LnBhZGRpbmc/dC5wYWRkaW5nOm8/MTo0O3ZhciBzPWEodCksYz1zLm1vZHVsdXMuYnl0ZUxlbmd0aCgpO2lmKHIubGVuZ3RoPmN8fG5ldyB1KHIpLmNtcChzLm1vZHVsdXMpPj0wKXRocm93IG5ldyBFcnJvcihcImRlY3J5cHRpb24gZXJyb3JcIik7dmFyIGw7bD1vP2QobmV3IHUocikscyk6aChyLHMpO3ZhciBwPW5ldyBlKGMtbC5sZW5ndGgpO2lmKHAuZmlsbCgwKSxsPWUuY29uY2F0KFtwLGxdLGMpLDQ9PT1mKXJldHVybiBuKHMsbCk7aWYoMT09PWYpcmV0dXJuIGkocyxsLG8pO2lmKDM9PT1mKXJldHVybiBsO3Rocm93IG5ldyBFcnJvcihcInVua25vd24gcGFkZGluZ1wiKX19KS5jYWxsKGUscigxKS5CdWZmZXIpfSxmdW5jdGlvbih0LGUscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCxyKXt2YXIgbj10Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpLGk9ci5sZW5ndGgsbz1zKFwic2hhMVwiKS51cGRhdGUobmV3IGUoXCJcIikpLmRpZ2VzdCgpLGE9by5sZW5ndGgsZD0yKmE7aWYoaT5uLWQtMil0aHJvdyBuZXcgRXJyb3IoXCJtZXNzYWdlIHRvbyBsb25nXCIpO3ZhciBsPW5ldyBlKG4taS1kLTIpO2wuZmlsbCgwKTt2YXIgcD1uLWEtMSxiPWYoYSksdj1oKGUuY29uY2F0KFtvLGwsbmV3IGUoWzFdKSxyXSxwKSx1KGIscCkpLHk9aChiLHUodixhKSk7cmV0dXJuIG5ldyBjKGUuY29uY2F0KFtuZXcgZShbMF0pLHksdl0sbikpfWZ1bmN0aW9uIGkodCxyLG4pe3ZhciBpPXIubGVuZ3RoLGE9dC5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtpZihpPmEtMTEpdGhyb3cgbmV3IEVycm9yKFwibWVzc2FnZSB0b28gbG9uZ1wiKTt2YXIgZjtyZXR1cm4gbj8oZj1uZXcgZShhLWktMyksZi5maWxsKDI1NSkpOmY9byhhLWktMyksbmV3IGMoZS5jb25jYXQoW25ldyBlKFswLG4/MToyXSksZixuZXcgZShbMF0pLHJdLGEpKX1mdW5jdGlvbiBvKHQscil7Zm9yKHZhciBuLGk9bmV3IGUodCksbz0wLGE9ZigyKnQpLHM9MDtvPHQ7KXM9PT1hLmxlbmd0aCYmKGE9ZigyKnQpLHM9MCksbj1hW3MrK10sbiYmKGlbbysrXT1uKTtyZXR1cm4gaX12YXIgYT1yKDIzMyksZj1yKDYxKSxzPXIoNTkpLHU9cigyMzEpLGg9cigyNDgpLGM9cig3MCksZD1yKDI0NyksbD1yKDIzMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbztvPXQucGFkZGluZz90LnBhZGRpbmc6cj8xOjQ7dmFyIGYscz1hKHQpO2lmKDQ9PT1vKWY9bihzLGUpO2Vsc2UgaWYoMT09PW8pZj1pKHMsZSxyKTtlbHNle2lmKDMhPT1vKXRocm93IG5ldyBFcnJvcihcInVua25vd24gcGFkZGluZ1wiKTtpZihmPW5ldyBjKGUpLGYuY21wKHMubW9kdWx1cyk+PTApdGhyb3cgbmV3IEVycm9yKFwiZGF0YSB0b28gbG9uZyBmb3IgbW9kdWx1c1wiKX1yZXR1cm4gcj9sKGYscyk6ZChmLHMpfX0pLmNhbGwoZSxyKDEpLkJ1ZmZlcil9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0wLG49dC5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIGk9dFtuXTtcIi5cIj09PWk/dC5zcGxpY2UobiwxKTpcIi4uXCI9PT1pPyh0LnNwbGljZShuLDEpLFxucisrKTpyJiYodC5zcGxpY2UobiwxKSxyLS0pfWlmKGUpZm9yKDtyLS07cil0LnVuc2hpZnQoXCIuLlwiKTtyZXR1cm4gdH1mdW5jdGlvbiBuKHQsZSl7aWYodC5maWx0ZXIpcmV0dXJuIHQuZmlsdGVyKGUpO2Zvcih2YXIgcj1bXSxuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dLG4sdCkmJnIucHVzaCh0W25dKTtyZXR1cm4gcn12YXIgaT0vXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLyxvPWZ1bmN0aW9uKHQpe3JldHVybiBpLmV4ZWModCkuc2xpY2UoMSl9O2UucmVzb2x2ZT1mdW5jdGlvbigpe2Zvcih2YXIgZT1cIlwiLGk9ITEsbz1hcmd1bWVudHMubGVuZ3RoLTE7bz49LTEmJiFpO28tLSl7dmFyIGE9bz49MD9hcmd1bWVudHNbb106dC5jd2QoKTtpZihcInN0cmluZ1wiIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3NcIik7YSYmKGU9YStcIi9cIitlLGk9XCIvXCI9PT1hLmNoYXJBdCgwKSl9cmV0dXJuIGU9cihuKGUuc3BsaXQoXCIvXCIpLGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pLCFpKS5qb2luKFwiL1wiKSwoaT9cIi9cIjpcIlwiKStlfHxcIi5cIn0sZS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7dmFyIGk9ZS5pc0Fic29sdXRlKHQpLG89XCIvXCI9PT1hKHQsLTEpO3JldHVybiB0PXIobih0LnNwbGl0KFwiL1wiKSxmdW5jdGlvbih0KXtyZXR1cm4hIXR9KSwhaSkuam9pbihcIi9cIiksdHx8aXx8KHQ9XCIuXCIpLHQmJm8mJih0Kz1cIi9cIiksKGk/XCIvXCI6XCJcIikrdH0sZS5pc0Fic29sdXRlPWZ1bmN0aW9uKHQpe3JldHVyblwiL1wiPT09dC5jaGFyQXQoMCl9LGUuam9pbj1mdW5jdGlvbigpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gZS5ub3JtYWxpemUobih0LGZ1bmN0aW9uKHQsZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzXCIpO3JldHVybiB0fSkuam9pbihcIi9cIikpfSxlLnJlbGF0aXZlPWZ1bmN0aW9uKHQscil7ZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoJiZcIlwiPT09dFtlXTtlKyspO2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTAmJlwiXCI9PT10W3JdO3ItLSk7cmV0dXJuIGU+cj9bXTp0LnNsaWNlKGUsci1lKzEpfXQ9ZS5yZXNvbHZlKHQpLnN1YnN0cigxKSxyPWUucmVzb2x2ZShyKS5zdWJzdHIoMSk7Zm9yKHZhciBpPW4odC5zcGxpdChcIi9cIikpLG89bihyLnNwbGl0KFwiL1wiKSksYT1NYXRoLm1pbihpLmxlbmd0aCxvLmxlbmd0aCksZj1hLHM9MDtzPGE7cysrKWlmKGlbc10hPT1vW3NdKXtmPXM7YnJlYWt9Zm9yKHZhciB1PVtdLHM9ZjtzPGkubGVuZ3RoO3MrKyl1LnB1c2goXCIuLlwiKTtyZXR1cm4gdT11LmNvbmNhdChvLnNsaWNlKGYpKSx1LmpvaW4oXCIvXCIpfSxlLnNlcD1cIi9cIixlLmRlbGltaXRlcj1cIjpcIixlLmRpcm5hbWU9ZnVuY3Rpb24odCl7dmFyIGU9byh0KSxyPWVbMF0sbj1lWzFdO3JldHVybiByfHxuPyhuJiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpKSxyK24pOlwiLlwifSxlLmJhc2VuYW1lPWZ1bmN0aW9uKHQsZSl7dmFyIHI9byh0KVsyXTtyZXR1cm4gZSYmci5zdWJzdHIoLTEqZS5sZW5ndGgpPT09ZSYmKHI9ci5zdWJzdHIoMCxyLmxlbmd0aC1lLmxlbmd0aCkpLHJ9LGUuZXh0bmFtZT1mdW5jdGlvbih0KXtyZXR1cm4gbyh0KVszXX07dmFyIGE9XCJiXCI9PT1cImFiXCIuc3Vic3RyKC0xKT9mdW5jdGlvbih0LGUscil7cmV0dXJuIHQuc3Vic3RyKGUscil9OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZTwwJiYoZT10Lmxlbmd0aCtlKSx0LnN1YnN0cihlLHIpfX0pLmNhbGwoZSxyKDI2KSl9LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9cig1MSl9LGZ1bmN0aW9uKHQsZSxyKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKCl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH12YXIgaT0ocigxKS5CdWZmZXIscigxNTYpKTt0LmV4cG9ydHM9bixuLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3ZhciBlPXtkYXRhOnQsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWUsKyt0aGlzLmxlbmd0aH0sbi5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbih0KXt2YXIgZT17ZGF0YTp0LG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9ZSksdGhpcy5oZWFkPWUsKyt0aGlzLmxlbmd0aH0sbi5wcm90b3R5cGUuc2hpZnQ9ZnVuY3Rpb24oKXtpZigwIT09dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuaGVhZC5kYXRhO3JldHVybiAxPT09dGhpcy5sZW5ndGg/dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsOnRoaXMuaGVhZD10aGlzLmhlYWQubmV4dCwtLXRoaXMubGVuZ3RoLHR9fSxuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfSxuLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgZT10aGlzLmhlYWQscj1cIlwiK2UuZGF0YTtlPWUubmV4dDspcis9dCtlLmRhdGE7cmV0dXJuIHJ9LG4ucHJvdG90eXBlLmNvbmNhdD1mdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuIGkuYWxsb2MoMCk7aWYoMT09PXRoaXMubGVuZ3RoKXJldHVybiB0aGlzLmhlYWQuZGF0YTtmb3IodmFyIGU9aS5hbGxvY1Vuc2FmZSh0Pj4+MCkscj10aGlzLmhlYWQsbj0wO3I7KXIuZGF0YS5jb3B5KGUsbiksbis9ci5kYXRhLmxlbmd0aCxyPXIubmV4dDtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsZSl7dmFyIHI9e30udG9TdHJpbmc7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVyblwiW29iamVjdCBBcnJheV1cIj09ci5jYWxsKHQpfX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiByKHQsZSl7ZnVuY3Rpb24gcigpe2lmKCFpKXtpZihuKFwidGhyb3dEZXByZWNhdGlvblwiKSl0aHJvdyBuZXcgRXJyb3IoZSk7bihcInRyYWNlRGVwcmVjYXRpb25cIik/Y29uc29sZS50cmFjZShlKTpjb25zb2xlLndhcm4oZSksaT0hMH1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9aWYobihcIm5vRGVwcmVjYXRpb25cIikpcmV0dXJuIHQ7dmFyIGk9ITE7cmV0dXJuIHJ9ZnVuY3Rpb24gbih0KXt0cnl7aWYoIWUubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKHQpe3JldHVybiExfXZhciByPWUubG9jYWxTdG9yYWdlW3RdO3JldHVybiBudWxsIT1yJiZcInRydWVcIj09PVN0cmluZyhyKS50b0xvd2VyQ2FzZSgpfXQuZXhwb3J0cz1yfSkuY2FsbChlLHIoMzkpKX0sZnVuY3Rpb24odCxlLHIpe3QuZXhwb3J0cz1yKDI0OSl9LGZ1bmN0aW9uKHQsZSxyKXsoZnVuY3Rpb24obil7dmFyIGk9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHIoMzEpfWNhdGNoKHQpe319KCk7ZT10LmV4cG9ydHM9cigyNTApLGUuU3RyZWFtPWl8fGUsZS5SZWFkYWJsZT1lLGUuV3JpdGFibGU9cigxNTUpLGUuRHVwbGV4PXIoNTEpLGUuVHJhbnNmb3JtPXIoMTU0KSxlLlBhc3NUaHJvdWdoPXIoMjQ5KSwhbi5icm93c2VyJiZcImRpc2FibGVcIj09PW4uZW52LlJFQURBQkxFX1NUUkVBTSYmaSYmKHQuZXhwb3J0cz1pKX0pLmNhbGwoZSxyKDI2KSl9LGZ1bmN0aW9uKHQsZSxyKXt0LmV4cG9ydHM9cigxNTQpfSxmdW5jdGlvbih0LGUscil7dC5leHBvcnRzPXIoMTU1KX0sZnVuY3Rpb24odCxlKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuY3JlYXRlP3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Quc3VwZXJfPWUsdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9OnQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fSxmdW5jdGlvbih0LGUpe1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dC5zdXBlcl89ZSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KX06dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dC5zdXBlcl89ZTt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IHIsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dH19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb3B5JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZpbGwmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVhZFVJbnQ4fX0sZnVuY3Rpb24odCxlLHIpeyhmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGkodCxyKXt2YXIgbj17c2VlbjpbXSxzdHlsaXplOmF9O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj0zJiYobi5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+PTQmJihuLmNvbG9ycz1hcmd1bWVudHNbM10pLGIocik/bi5zaG93SGlkZGVuPXI6ciYmZS5fZXh0ZW5kKG4sciksXyhuLnNob3dIaWRkZW4pJiYobi5zaG93SGlkZGVuPSExKSxfKG4uZGVwdGgpJiYobi5kZXB0aD0yKSxfKG4uY29sb3JzKSYmKG4uY29sb3JzPSExKSxfKG4uY3VzdG9tSW5zcGVjdCkmJihuLmN1c3RvbUluc3BlY3Q9ITApLG4uY29sb3JzJiYobi5zdHlsaXplPW8pLHMobix0LG4uZGVwdGgpfWZ1bmN0aW9uIG8odCxlKXt2YXIgcj1pLnN0eWxlc1tlXTtyZXR1cm4gcj9cIlx1MDAxYltcIitpLmNvbG9yc1tyXVswXStcIm1cIit0K1wiXHUwMDFiW1wiK2kuY29sb3JzW3JdWzFdK1wibVwiOnR9ZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0fWZ1bmN0aW9uIGYodCl7dmFyIGU9e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0LHIpe2VbdF09ITB9KSxlfWZ1bmN0aW9uIHModCxyLG4pe2lmKHQuY3VzdG9tSW5zcGVjdCYmciYmayhyLmluc3BlY3QpJiZyLmluc3BlY3QhPT1lLmluc3BlY3QmJighci5jb25zdHJ1Y3Rvcnx8ci5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1yKSl7dmFyIGk9ci5pbnNwZWN0KG4sdCk7cmV0dXJuIGcoaSl8fChpPXModCxpLG4pKSxpfXZhciBvPXUodCxyKTtpZihvKXJldHVybiBvO3ZhciBhPU9iamVjdC5rZXlzKHIpLGI9ZihhKTtpZih0LnNob3dIaWRkZW4mJihhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpKSxBKHIpJiYoYS5pbmRleE9mKFwibWVzc2FnZVwiKT49MHx8YS5pbmRleE9mKFwiZGVzY3JpcHRpb25cIik+PTApKXJldHVybiBoKHIpO2lmKDA9PT1hLmxlbmd0aCl7aWYoayhyKSl7dmFyIHY9ci5uYW1lP1wiOiBcIityLm5hbWU6XCJcIjtyZXR1cm4gdC5zdHlsaXplKFwiW0Z1bmN0aW9uXCIrditcIl1cIixcInNwZWNpYWxcIil9aWYoTShyKSlyZXR1cm4gdC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcInJlZ2V4cFwiKTtpZihFKHIpKXJldHVybiB0LnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcImRhdGVcIik7aWYoQShyKSlyZXR1cm4gaChyKX12YXIgeT1cIlwiLG09ITEsdz1bXCJ7XCIsXCJ9XCJdO2lmKHAocikmJihtPSEwLHc9W1wiW1wiLFwiXVwiXSksayhyKSl7dmFyIF89ci5uYW1lP1wiOiBcIityLm5hbWU6XCJcIjt5PVwiIFtGdW5jdGlvblwiK18rXCJdXCJ9aWYoTShyKSYmKHk9XCIgXCIrUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpKSxFKHIpJiYoeT1cIiBcIitEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHIpKSxBKHIpJiYoeT1cIiBcIitoKHIpKSwwPT09YS5sZW5ndGgmJighbXx8MD09ci5sZW5ndGgpKXJldHVybiB3WzBdK3krd1sxXTtpZihuPDApcmV0dXJuIE0ocik/dC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKSxcInJlZ2V4cFwiKTp0LnN0eWxpemUoXCJbT2JqZWN0XVwiLFwic3BlY2lhbFwiKTt0LnNlZW4ucHVzaChyKTt2YXIgUztyZXR1cm4gUz1tP2ModCxyLG4sYixhKTphLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZCh0LHIsbixiLGUsbSl9KSx0LnNlZW4ucG9wKCksbChTLHksdyl9ZnVuY3Rpb24gdSh0LGUpe2lmKF8oZSkpcmV0dXJuIHQuc3R5bGl6ZShcInVuZGVmaW5lZFwiLFwidW5kZWZpbmVkXCIpO2lmKGcoZSkpe3ZhciByPVwiJ1wiK0pTT04uc3RyaW5naWZ5KGUpLnJlcGxhY2UoL15cInxcIiQvZyxcIlwiKS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKStcIidcIjtyZXR1cm4gdC5zdHlsaXplKHIsXCJzdHJpbmdcIil9cmV0dXJuIG0oZSk/dC5zdHlsaXplKFwiXCIrZSxcIm51bWJlclwiKTpiKGUpP3Quc3R5bGl6ZShcIlwiK2UsXCJib29sZWFuXCIpOnYoZSk/dC5zdHlsaXplKFwibnVsbFwiLFwibnVsbFwiKTp2b2lkIDB9ZnVuY3Rpb24gaCh0KXtyZXR1cm5cIltcIitFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KStcIl1cIn1mdW5jdGlvbiBjKHQsZSxyLG4saSl7Zm9yKHZhciBvPVtdLGE9MCxmPWUubGVuZ3RoO2E8ZjsrK2EpUihlLFN0cmluZyhhKSk/by5wdXNoKGQodCxlLHIsbixTdHJpbmcoYSksITApKTpvLnB1c2goXCJcIik7cmV0dXJuIGkuZm9yRWFjaChmdW5jdGlvbihpKXtpLm1hdGNoKC9eXFxkKyQvKXx8by5wdXNoKGQodCxlLHIsbixpLCEwKSl9KSxvfWZ1bmN0aW9uIGQodCxlLHIsbixpLG8pe3ZhciBhLGYsdTtpZih1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxpKXx8e3ZhbHVlOmVbaV19LHUuZ2V0P2Y9dS5zZXQ/dC5zdHlsaXplKFwiW0dldHRlci9TZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOnQuc3R5bGl6ZShcIltHZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOnUuc2V0JiYoZj10LnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKSksUihuLGkpfHwoYT1cIltcIitpK1wiXVwiKSxmfHwodC5zZWVuLmluZGV4T2YodS52YWx1ZSk8MD8oZj12KHIpP3ModCx1LnZhbHVlLG51bGwpOnModCx1LnZhbHVlLHItMSksZi5pbmRleE9mKFwiXFxuXCIpPi0xJiYoZj1vP2Yuc3BsaXQoXCJcXG5cIikubWFwKGZ1bmN0aW9uKHQpe3JldHVyblwiICBcIit0fSkuam9pbihcIlxcblwiKS5zdWJzdHIoMik6XCJcXG5cIitmLnNwbGl0KFwiXFxuXCIpLm1hcChmdW5jdGlvbih0KXtyZXR1cm5cIiAgIFwiK3R9KS5qb2luKFwiXFxuXCIpKSk6Zj10LnN0eWxpemUoXCJbQ2lyY3VsYXJdXCIsXCJzcGVjaWFsXCIpKSxfKGEpKXtpZihvJiZpLm1hdGNoKC9eXFxkKyQvKSlyZXR1cm4gZjthPUpTT04uc3RyaW5naWZ5KFwiXCIraSksYS5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLyk/KGE9YS5zdWJzdHIoMSxhLmxlbmd0aC0yKSxhPXQuc3R5bGl6ZShhLFwibmFtZVwiKSk6KGE9YS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKS5yZXBsYWNlKC9cXFxcXCIvZywnXCInKS5yZXBsYWNlKC8oXlwifFwiJCkvZyxcIidcIiksYT10LnN0eWxpemUoYSxcInN0cmluZ1wiKSl9cmV0dXJuIGErXCI6IFwiK2Z9ZnVuY3Rpb24gbCh0LGUscil7dmFyIG49MCxpPXQucmVkdWNlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4rKyxlLmluZGV4T2YoXCJcXG5cIik+PTAmJm4rKyx0K2UucmVwbGFjZSgvXFx1MDAxYlxcW1xcZFxcZD9tL2csXCJcIikubGVuZ3RoKzF9LDApO3JldHVybiBpPjYwP3JbMF0rKFwiXCI9PT1lP1wiXCI6ZStcIlxcbiBcIikrXCIgXCIrdC5qb2luKFwiLFxcbiAgXCIpK1wiIFwiK3JbMV06clswXStlK1wiIFwiK3Quam9pbihcIiwgXCIpK1wiIFwiK3JbMV19ZnVuY3Rpb24gcCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBiKHQpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgdH1mdW5jdGlvbiB2KHQpe3JldHVybiBudWxsPT09dH1mdW5jdGlvbiB5KHQpe3JldHVybiBudWxsPT10fWZ1bmN0aW9uIG0odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHR9ZnVuY3Rpb24gZyh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdH1mdW5jdGlvbiB3KHQpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gTSh0KXtyZXR1cm4gUyh0KSYmXCJbb2JqZWN0IFJlZ0V4cF1cIj09PUkodCl9ZnVuY3Rpb24gUyh0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gUyh0KSYmXCJbb2JqZWN0IERhdGVdXCI9PT1JKHQpfWZ1bmN0aW9uIEEodCl7cmV0dXJuIFModCkmJihcIltvYmplY3QgRXJyb3JdXCI9PT1JKHQpfHx0IGluc3RhbmNlb2YgRXJyb3IpfWZ1bmN0aW9uIGsodCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdH1mdW5jdGlvbiB4KHQpe3JldHVybiBudWxsPT09dHx8XCJib29sZWFuXCI9PXR5cGVvZiB0fHxcIm51bWJlclwiPT10eXBlb2YgdHx8XCJzdHJpbmdcIj09dHlwZW9mIHR8fFwic3ltYm9sXCI9PXR5cGVvZiB0fHxcInVuZGVmaW5lZFwiPT10eXBlb2YgdH1mdW5jdGlvbiBJKHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gQih0KXtyZXR1cm4gdDwxMD9cIjBcIit0LnRvU3RyaW5nKDEwKTp0LnRvU3RyaW5nKDEwKX1mdW5jdGlvbiBPKCl7dmFyIHQ9bmV3IERhdGUsZT1bQih0LmdldEhvdXJzKCkpLEIodC5nZXRNaW51dGVzKCkpLEIodC5nZXRTZWNvbmRzKCkpXS5qb2luKFwiOlwiKTtyZXR1cm5bdC5nZXREYXRlKCksQ1t0LmdldE1vbnRoKCldLGVdLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9dmFyIFA9LyVbc2RqJV0vZztlLmZvcm1hdD1mdW5jdGlvbih0KXtpZighZyh0KSl7Zm9yKHZhciBlPVtdLHI9MDtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWUucHVzaChpKGFyZ3VtZW50c1tyXSkpO3JldHVybiBlLmpvaW4oXCIgXCIpfWZvcih2YXIgcj0xLG49YXJndW1lbnRzLG89bi5sZW5ndGgsYT1TdHJpbmcodCkucmVwbGFjZShQLGZ1bmN0aW9uKHQpe2lmKFwiJSVcIj09PXQpcmV0dXJuXCIlXCI7aWYocj49bylyZXR1cm4gdDtzd2l0Y2godCl7Y2FzZVwiJXNcIjpyZXR1cm4gU3RyaW5nKG5bcisrXSk7Y2FzZVwiJWRcIjpyZXR1cm4gTnVtYmVyKG5bcisrXSk7Y2FzZVwiJWpcIjp0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG5bcisrXSl9Y2F0Y2godCl7cmV0dXJuXCJbQ2lyY3VsYXJdXCJ9ZGVmYXVsdDpyZXR1cm4gdH19KSxmPW5bcl07cjxvO2Y9blsrK3JdKWErPXYoZil8fCFTKGYpP1wiIFwiK2Y6XCIgXCIraShmKTtyZXR1cm4gYX0sZS5kZXByZWNhdGU9ZnVuY3Rpb24ocixpKXtmdW5jdGlvbiBvKCl7aWYoIWEpe2lmKG4udGhyb3dEZXByZWNhdGlvbil0aHJvdyBuZXcgRXJyb3IoaSk7bi50cmFjZURlcHJlY2F0aW9uP2NvbnNvbGUudHJhY2UoaSk6Y29uc29sZS5lcnJvcihpKSxhPSEwfXJldHVybiByLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pZihfKHQucHJvY2VzcykpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuZGVwcmVjYXRlKHIsaSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtpZihuLm5vRGVwcmVjYXRpb249PT0hMClyZXR1cm4gcjt2YXIgYT0hMTtyZXR1cm4gb307dmFyIFQsaj17fTtlLmRlYnVnbG9nPWZ1bmN0aW9uKHQpe2lmKF8oVCkmJihUPW4uZW52Lk5PREVfREVCVUd8fFwiXCIpLHQ9dC50b1VwcGVyQ2FzZSgpLCFqW3RdKWlmKG5ldyBSZWdFeHAoXCJcXFxcYlwiK3QrXCJcXFxcYlwiLFwiaVwiKS50ZXN0KFQpKXt2YXIgcj1uLnBpZDtqW3RdPWZ1bmN0aW9uKCl7dmFyIG49ZS5mb3JtYXQuYXBwbHkoZSxhcmd1bWVudHMpO2NvbnNvbGUuZXJyb3IoXCIlcyAlZDogJXNcIix0LHIsbil9fWVsc2Ugalt0XT1mdW5jdGlvbigpe307cmV0dXJuIGpbdF19LGUuaW5zcGVjdD1pLGkuY29sb3JzPXtib2xkOlsxLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0saW52ZXJzZTpbNywyN10sd2hpdGU6WzM3LDM5XSxncmV5Ols5MCwzOV0sYmxhY2s6WzMwLDM5XSxibHVlOlszNCwzOV0sY3lhbjpbMzYsMzldLGdyZWVuOlszMiwzOV0sbWFnZW50YTpbMzUsMzldLHJlZDpbMzEsMzldLHllbGxvdzpbMzMsMzldfSxpLnN0eWxlcz17c3BlY2lhbDpcImN5YW5cIixudW1iZXI6XCJ5ZWxsb3dcIixib29sZWFuOlwieWVsbG93XCIsdW5kZWZpbmVkOlwiZ3JleVwiLG51bGw6XCJib2xkXCIsc3RyaW5nOlwiZ3JlZW5cIixkYXRlOlwibWFnZW50YVwiLHJlZ2V4cDpcInJlZFwifSxlLmlzQXJyYXk9cCxlLmlzQm9vbGVhbj1iLGUuaXNOdWxsPXYsZS5pc051bGxPclVuZGVmaW5lZD15LGUuaXNOdW1iZXI9bSxlLmlzU3RyaW5nPWcsZS5pc1N5bWJvbD13LGUuaXNVbmRlZmluZWQ9XyxlLmlzUmVnRXhwPU0sZS5pc09iamVjdD1TLGUuaXNEYXRlPUUsZS5pc0Vycm9yPUEsZS5pc0Z1bmN0aW9uPWssZS5pc1ByaW1pdGl2ZT14LGUuaXNCdWZmZXI9cig2MDUpO3ZhciBDPVtcIkphblwiLFwiRmViXCIsXCJNYXJcIixcIkFwclwiLFwiTWF5XCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9jdFwiLFwiTm92XCIsXCJEZWNcIl07ZS5sb2c9ZnVuY3Rpb24oKXtjb25zb2xlLmxvZyhcIiVzIC0gJXNcIixPKCksZS5mb3JtYXQuYXBwbHkoZSxhcmd1bWVudHMpKX0sZS5pbmhlcml0cz1yKDYwNCksZS5fZXh0ZW5kPWZ1bmN0aW9uKHQsZSl7aWYoIWV8fCFTKGUpKXJldHVybiB0O2Zvcih2YXIgcj1PYmplY3Qua2V5cyhlKSxuPXIubGVuZ3RoO24tLTspdFtyW25dXT1lW3Jbbl1dO3JldHVybiB0fX0pLmNhbGwoZSxyKDM5KSxyKDI2KSl9LGZ1bmN0aW9uKHQsZSl7dmFyIHI9W10uaW5kZXhPZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihyKXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDsrK24paWYodFtuXT09PWUpcmV0dXJuIG47cmV0dXJuLTF9fSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlKXt9LGZ1bmN0aW9uKHQsZSl7fSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlKXt9LGZ1bmN0aW9uKHQsZSxyKXtyKDI1MyksdC5leHBvcnRzPXIoMjUyKX1dKX0pO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9maXZlLWJlbGxzLWNvbmRpdGlvbi9kaXN0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9pZWVlNzU0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9pc2FycmF5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcclxuICogW2pzLXNoYTNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW4xNzgvanMtc2hhM31cclxuICpcclxuICogQHZlcnNpb24gMC41LjdcclxuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cclxuICogQGNvcHlyaWdodCBDaGVuLCBZaS1DeXVhbiAyMDE1LTIwMTZcclxuICogQGxpY2Vuc2UgTUlUXHJcbiAqL1xyXG4vKmpzbGludCBiaXR3aXNlOiB0cnVlICovXHJcbihmdW5jdGlvbiAoKSB7XHJcbiAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuICB2YXIgcm9vdCA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnID8gd2luZG93IDoge307XHJcbiAgdmFyIE5PREVfSlMgPSAhcm9vdC5KU19TSEEzX05PX05PREVfSlMgJiYgdHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO1xyXG4gIGlmIChOT0RFX0pTKSB7XHJcbiAgICByb290ID0gZ2xvYmFsO1xyXG4gIH1cclxuICB2YXIgQ09NTU9OX0pTID0gIXJvb3QuSlNfU0hBM19OT19DT01NT05fSlMgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHM7XHJcbiAgdmFyIEhFWF9DSEFSUyA9ICcwMTIzNDU2Nzg5YWJjZGVmJy5zcGxpdCgnJyk7XHJcbiAgdmFyIFNIQUtFX1BBRERJTkcgPSBbMzEsIDc5MzYsIDIwMzE2MTYsIDUyMDA5MzY5Nl07XHJcbiAgdmFyIEtFQ0NBS19QQURESU5HID0gWzEsIDI1NiwgNjU1MzYsIDE2Nzc3MjE2XTtcclxuICB2YXIgUEFERElORyA9IFs2LCAxNTM2LCAzOTMyMTYsIDEwMDY2MzI5Nl07XHJcbiAgdmFyIFNISUZUID0gWzAsIDgsIDE2LCAyNF07XHJcbiAgdmFyIFJDID0gWzEsIDAsIDMyODk4LCAwLCAzMjkwNiwgMjE0NzQ4MzY0OCwgMjE0NzUxNjQxNiwgMjE0NzQ4MzY0OCwgMzI5MDcsIDAsIDIxNDc0ODM2NDksXHJcbiAgICAgICAgICAgIDAsIDIxNDc1MTY1NDUsIDIxNDc0ODM2NDgsIDMyNzc3LCAyMTQ3NDgzNjQ4LCAxMzgsIDAsIDEzNiwgMCwgMjE0NzUxNjQyNSwgMCxcclxuICAgICAgICAgICAgMjE0NzQ4MzY1OCwgMCwgMjE0NzUxNjU1NSwgMCwgMTM5LCAyMTQ3NDgzNjQ4LCAzMjkwNSwgMjE0NzQ4MzY0OCwgMzI3NzEsXHJcbiAgICAgICAgICAgIDIxNDc0ODM2NDgsIDMyNzcwLCAyMTQ3NDgzNjQ4LCAxMjgsIDIxNDc0ODM2NDgsIDMyNzc4LCAwLCAyMTQ3NDgzNjU4LCAyMTQ3NDgzNjQ4LFxyXG4gICAgICAgICAgICAyMTQ3NTE2NTQ1LCAyMTQ3NDgzNjQ4LCAzMjg5NiwgMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0OSwgMCwgMjE0NzUxNjQyNCwgMjE0NzQ4MzY0OF07XHJcbiAgdmFyIEJJVFMgPSBbMjI0LCAyNTYsIDM4NCwgNTEyXTtcclxuICB2YXIgU0hBS0VfQklUUyA9IFsxMjgsIDI1Nl07XHJcbiAgdmFyIE9VVFBVVF9UWVBFUyA9IFsnaGV4JywgJ2J1ZmZlcicsICdhcnJheUJ1ZmZlcicsICdhcnJheSddO1xyXG5cclxuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSkge1xyXG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBiaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgdmFyIGNyZWF0ZVNoYWtlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cykge1xyXG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKS51cGRhdGUobWVzc2FnZSlbb3V0cHV0VHlwZV0oKTtcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgdmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nKSB7XHJcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcclxuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIGJpdHMpO1xyXG4gICAgfTtcclxuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xyXG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZSgpLnVwZGF0ZShtZXNzYWdlKTtcclxuICAgIH07XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE9VVFBVVF9UWVBFUy5sZW5ndGg7ICsraSkge1xyXG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcclxuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsIHR5cGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1ldGhvZDtcclxuICB9O1xyXG5cclxuICB2YXIgY3JlYXRlU2hha2VNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZykge1xyXG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZVNoYWtlT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcclxuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAob3V0cHV0Qml0cykge1xyXG4gICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKTtcclxuICAgIH07XHJcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG91dHB1dEJpdHMpIHtcclxuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUob3V0cHV0Qml0cykudXBkYXRlKG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xyXG4gICAgICBtZXRob2RbdHlwZV0gPSBjcmVhdGVTaGFrZU91dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCB0eXBlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBtZXRob2Q7XHJcbiAgfTtcclxuXHJcbiAgdmFyIGFsZ29yaXRobXMgPSBbXHJcbiAgICB7bmFtZTogJ2tlY2NhaycsIHBhZGRpbmc6IEtFQ0NBS19QQURESU5HLCBiaXRzOiBCSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZU1ldGhvZH0sXHJcbiAgICB7bmFtZTogJ3NoYTMnLCBwYWRkaW5nOiBQQURESU5HLCBiaXRzOiBCSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZU1ldGhvZH0sXHJcbiAgICB7bmFtZTogJ3NoYWtlJywgcGFkZGluZzogU0hBS0VfUEFERElORywgYml0czogU0hBS0VfQklUUywgY3JlYXRlTWV0aG9kOiBjcmVhdGVTaGFrZU1ldGhvZH1cclxuICBdO1xyXG5cclxuICB2YXIgbWV0aG9kcyA9IHt9LCBtZXRob2ROYW1lcyA9IFtdO1xyXG5cclxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFsZ29yaXRobXMubGVuZ3RoOyArK2kpIHtcclxuICAgIHZhciBhbGdvcml0aG0gPSBhbGdvcml0aG1zW2ldO1xyXG4gICAgdmFyIGJpdHMgID0gYWxnb3JpdGhtLmJpdHM7XHJcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJpdHMubGVuZ3RoOyArK2opIHtcclxuICAgICAgdmFyIG1ldGhvZE5hbWUgPSBhbGdvcml0aG0ubmFtZSArJ18nICsgYml0c1tqXTtcclxuICAgICAgbWV0aG9kTmFtZXMucHVzaChtZXRob2ROYW1lKTtcclxuICAgICAgbWV0aG9kc1ttZXRob2ROYW1lXSA9IGFsZ29yaXRobS5jcmVhdGVNZXRob2QoYml0c1tqXSwgYWxnb3JpdGhtLnBhZGRpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpIHtcclxuICAgIHRoaXMuYmxvY2tzID0gW107XHJcbiAgICB0aGlzLnMgPSBbXTtcclxuICAgIHRoaXMucGFkZGluZyA9IHBhZGRpbmc7XHJcbiAgICB0aGlzLm91dHB1dEJpdHMgPSBvdXRwdXRCaXRzO1xyXG4gICAgdGhpcy5yZXNldCA9IHRydWU7XHJcbiAgICB0aGlzLmJsb2NrID0gMDtcclxuICAgIHRoaXMuc3RhcnQgPSAwO1xyXG4gICAgdGhpcy5ibG9ja0NvdW50ID0gKDE2MDAgLSAoYml0cyA8PCAxKSkgPj4gNTtcclxuICAgIHRoaXMuYnl0ZUNvdW50ID0gdGhpcy5ibG9ja0NvdW50IDw8IDI7XHJcbiAgICB0aGlzLm91dHB1dEJsb2NrcyA9IG91dHB1dEJpdHMgPj4gNTtcclxuICAgIHRoaXMuZXh0cmFCeXRlcyA9IChvdXRwdXRCaXRzICYgMzEpID4+IDM7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1MDsgKytpKSB7XHJcbiAgICAgIHRoaXMuc1tpXSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XHJcbiAgICB2YXIgbm90U3RyaW5nID0gdHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnO1xyXG4gICAgaWYgKG5vdFN0cmluZyAmJiBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xyXG4gICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgICB2YXIgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBieXRlQ291bnQgPSB0aGlzLmJ5dGVDb3VudCxcclxuICAgICAgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgaW5kZXggPSAwLCBzID0gdGhpcy5zLCBpLCBjb2RlO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xyXG4gICAgICBpZiAodGhpcy5yZXNldCkge1xyXG4gICAgICAgIHRoaXMucmVzZXQgPSBmYWxzZTtcclxuICAgICAgICBibG9ja3NbMF0gPSB0aGlzLmJsb2NrO1xyXG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBibG9ja0NvdW50ICsgMTsgKytpKSB7XHJcbiAgICAgICAgICBibG9ja3NbaV0gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAobm90U3RyaW5nKSB7XHJcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IGJ5dGVDb3VudDsgKytpbmRleCkge1xyXG4gICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gbWVzc2FnZVtpbmRleF0gPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCBieXRlQ291bnQ7ICsraW5kZXgpIHtcclxuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xyXG4gICAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IGNvZGUgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhjMCB8IChjb2RlID4+IDYpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhlMCB8IChjb2RlID4+IDEyKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkgJiAweDNmZikpO1xyXG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcclxuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubGFzdEJ5dGVJbmRleCA9IGk7XHJcbiAgICAgIGlmIChpID49IGJ5dGVDb3VudCkge1xyXG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gYnl0ZUNvdW50O1xyXG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbYmxvY2tDb3VudF07XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQ7ICsraSkge1xyXG4gICAgICAgICAgc1tpXSBePSBibG9ja3NbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGYocyk7XHJcbiAgICAgICAgdGhpcy5yZXNldCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zdGFydCA9IGk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH07XHJcblxyXG4gIEtlY2Nhay5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGkgPSB0aGlzLmxhc3RCeXRlSW5kZXgsIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnM7XHJcbiAgICBibG9ja3NbaSA+PiAyXSB8PSB0aGlzLnBhZGRpbmdbaSAmIDNdO1xyXG4gICAgaWYgKHRoaXMubGFzdEJ5dGVJbmRleCA9PT0gdGhpcy5ieXRlQ291bnQpIHtcclxuICAgICAgYmxvY2tzWzBdID0gYmxvY2tzW2Jsb2NrQ291bnRdO1xyXG4gICAgICBmb3IgKGkgPSAxOyBpIDwgYmxvY2tDb3VudCArIDE7ICsraSkge1xyXG4gICAgICAgIGJsb2Nrc1tpXSA9IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGJsb2Nrc1tibG9ja0NvdW50IC0gMV0gfD0gMHg4MDAwMDAwMDtcclxuICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50OyArK2kpIHtcclxuICAgICAgc1tpXSBePSBibG9ja3NbaV07XHJcbiAgICB9XHJcbiAgICBmKHMpO1xyXG4gIH07XHJcblxyXG4gIEtlY2Nhay5wcm90b3R5cGUudG9TdHJpbmcgPSBLZWNjYWsucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuZmluYWxpemUoKTtcclxuXHJcbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXHJcbiAgICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xyXG4gICAgdmFyIGhleCA9ICcnLCBibG9jaztcclxuICAgIHdoaWxlIChqIDwgb3V0cHV0QmxvY2tzKSB7XHJcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50ICYmIGogPCBvdXRwdXRCbG9ja3M7ICsraSwgKytqKSB7XHJcbiAgICAgICAgYmxvY2sgPSBzW2ldO1xyXG4gICAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbYmxvY2sgJiAweDBGXSArXHJcbiAgICAgICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDgpICYgMHgwRl0gK1xyXG4gICAgICAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAxNikgJiAweDBGXSArXHJcbiAgICAgICAgICAgICAgIEhFWF9DSEFSU1soYmxvY2sgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDI0KSAmIDB4MEZdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIGYocyk7XHJcbiAgICAgICAgaSA9IDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHRyYUJ5dGVzKSB7XHJcbiAgICAgIGJsb2NrID0gc1tpXTtcclxuICAgICAgaWYgKGV4dHJhQnl0ZXMgPiAwKSB7XHJcbiAgICAgICAgaGV4ICs9IEhFWF9DSEFSU1soYmxvY2sgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1tibG9jayAmIDB4MEZdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xyXG4gICAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiA4KSAmIDB4MEZdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMikge1xyXG4gICAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGJsb2NrID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAxNikgJiAweDBGXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhleDtcclxuICB9O1xyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLmFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdGhpcy5maW5hbGl6ZSgpO1xyXG5cclxuICAgIHZhciBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zLCBvdXRwdXRCbG9ja3MgPSB0aGlzLm91dHB1dEJsb2NrcyxcclxuICAgICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XHJcbiAgICB2YXIgYnl0ZXMgPSB0aGlzLm91dHB1dEJpdHMgPj4gMztcclxuICAgIHZhciBidWZmZXI7XHJcbiAgICBpZiAoZXh0cmFCeXRlcykge1xyXG4gICAgICBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoKG91dHB1dEJsb2NrcyArIDEpIDw8IDIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzKTtcclxuICAgIH1cclxuICAgIHZhciBhcnJheSA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xyXG4gICAgd2hpbGUgKGogPCBvdXRwdXRCbG9ja3MpIHtcclxuICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQgJiYgaiA8IG91dHB1dEJsb2NrczsgKytpLCArK2opIHtcclxuICAgICAgICBhcnJheVtqXSA9IHNbaV07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGogJSBibG9ja0NvdW50ID09PSAwKSB7XHJcbiAgICAgICAgZihzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcclxuICAgICAgYXJyYXlbaV0gPSBzW2ldO1xyXG4gICAgICBidWZmZXIgPSBidWZmZXIuc2xpY2UoMCwgYnl0ZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1ZmZlcjtcclxuICB9O1xyXG5cclxuICBLZWNjYWsucHJvdG90eXBlLmJ1ZmZlciA9IEtlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXI7XHJcblxyXG4gIEtlY2Nhay5wcm90b3R5cGUuZGlnZXN0ID0gS2VjY2FrLnByb3RvdHlwZS5hcnJheSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHRoaXMuZmluYWxpemUoKTtcclxuXHJcbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXHJcbiAgICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xyXG4gICAgdmFyIGFycmF5ID0gW10sIG9mZnNldCwgYmxvY2s7XHJcbiAgICB3aGlsZSAoaiA8IG91dHB1dEJsb2Nrcykge1xyXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYmxvY2tDb3VudCAmJiBqIDwgb3V0cHV0QmxvY2tzOyArK2ksICsraikge1xyXG4gICAgICAgIG9mZnNldCA9IGogPDwgMjtcclxuICAgICAgICBibG9jayA9IHNbaV07XHJcbiAgICAgICAgYXJyYXlbb2Zmc2V0XSA9IGJsb2NrICYgMHhGRjtcclxuICAgICAgICBhcnJheVtvZmZzZXQgKyAxXSA9IChibG9jayA+PiA4KSAmIDB4RkY7XHJcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMl0gPSAoYmxvY2sgPj4gMTYpICYgMHhGRjtcclxuICAgICAgICBhcnJheVtvZmZzZXQgKyAzXSA9IChibG9jayA+PiAyNCkgJiAweEZGO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChqICUgYmxvY2tDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIGYocyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChleHRyYUJ5dGVzKSB7XHJcbiAgICAgIG9mZnNldCA9IGogPDwgMjtcclxuICAgICAgYmxvY2sgPSBzW2ldO1xyXG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDApIHtcclxuICAgICAgICBhcnJheVtvZmZzZXRdID0gYmxvY2sgJiAweEZGO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChleHRyYUJ5dGVzID4gMSkge1xyXG4gICAgICAgIGFycmF5W29mZnNldCArIDFdID0gKGJsb2NrID4+IDgpICYgMHhGRjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDIpIHtcclxuICAgICAgICBhcnJheVtvZmZzZXQgKyAyXSA9IChibG9jayA+PiAxNikgJiAweEZGO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfTtcclxuXHJcbiAgdmFyIGYgPSBmdW5jdGlvbiAocykge1xyXG4gICAgdmFyIGgsIGwsIG4sIGMwLCBjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LFxyXG4gICAgICAgIGIwLCBiMSwgYjIsIGIzLCBiNCwgYjUsIGI2LCBiNywgYjgsIGI5LCBiMTAsIGIxMSwgYjEyLCBiMTMsIGIxNCwgYjE1LCBiMTYsIGIxNyxcclxuICAgICAgICBiMTgsIGIxOSwgYjIwLCBiMjEsIGIyMiwgYjIzLCBiMjQsIGIyNSwgYjI2LCBiMjcsIGIyOCwgYjI5LCBiMzAsIGIzMSwgYjMyLCBiMzMsXHJcbiAgICAgICAgYjM0LCBiMzUsIGIzNiwgYjM3LCBiMzgsIGIzOSwgYjQwLCBiNDEsIGI0MiwgYjQzLCBiNDQsIGI0NSwgYjQ2LCBiNDcsIGI0OCwgYjQ5O1xyXG4gICAgZm9yIChuID0gMDsgbiA8IDQ4OyBuICs9IDIpIHtcclxuICAgICAgYzAgPSBzWzBdIF4gc1sxMF0gXiBzWzIwXSBeIHNbMzBdIF4gc1s0MF07XHJcbiAgICAgIGMxID0gc1sxXSBeIHNbMTFdIF4gc1syMV0gXiBzWzMxXSBeIHNbNDFdO1xyXG4gICAgICBjMiA9IHNbMl0gXiBzWzEyXSBeIHNbMjJdIF4gc1szMl0gXiBzWzQyXTtcclxuICAgICAgYzMgPSBzWzNdIF4gc1sxM10gXiBzWzIzXSBeIHNbMzNdIF4gc1s0M107XHJcbiAgICAgIGM0ID0gc1s0XSBeIHNbMTRdIF4gc1syNF0gXiBzWzM0XSBeIHNbNDRdO1xyXG4gICAgICBjNSA9IHNbNV0gXiBzWzE1XSBeIHNbMjVdIF4gc1szNV0gXiBzWzQ1XTtcclxuICAgICAgYzYgPSBzWzZdIF4gc1sxNl0gXiBzWzI2XSBeIHNbMzZdIF4gc1s0Nl07XHJcbiAgICAgIGM3ID0gc1s3XSBeIHNbMTddIF4gc1syN10gXiBzWzM3XSBeIHNbNDddO1xyXG4gICAgICBjOCA9IHNbOF0gXiBzWzE4XSBeIHNbMjhdIF4gc1szOF0gXiBzWzQ4XTtcclxuICAgICAgYzkgPSBzWzldIF4gc1sxOV0gXiBzWzI5XSBeIHNbMzldIF4gc1s0OV07XHJcblxyXG4gICAgICBoID0gYzggXiAoKGMyIDw8IDEpIHwgKGMzID4+PiAzMSkpO1xyXG4gICAgICBsID0gYzkgXiAoKGMzIDw8IDEpIHwgKGMyID4+PiAzMSkpO1xyXG4gICAgICBzWzBdIF49IGg7XHJcbiAgICAgIHNbMV0gXj0gbDtcclxuICAgICAgc1sxMF0gXj0gaDtcclxuICAgICAgc1sxMV0gXj0gbDtcclxuICAgICAgc1syMF0gXj0gaDtcclxuICAgICAgc1syMV0gXj0gbDtcclxuICAgICAgc1szMF0gXj0gaDtcclxuICAgICAgc1szMV0gXj0gbDtcclxuICAgICAgc1s0MF0gXj0gaDtcclxuICAgICAgc1s0MV0gXj0gbDtcclxuICAgICAgaCA9IGMwIF4gKChjNCA8PCAxKSB8IChjNSA+Pj4gMzEpKTtcclxuICAgICAgbCA9IGMxIF4gKChjNSA8PCAxKSB8IChjNCA+Pj4gMzEpKTtcclxuICAgICAgc1syXSBePSBoO1xyXG4gICAgICBzWzNdIF49IGw7XHJcbiAgICAgIHNbMTJdIF49IGg7XHJcbiAgICAgIHNbMTNdIF49IGw7XHJcbiAgICAgIHNbMjJdIF49IGg7XHJcbiAgICAgIHNbMjNdIF49IGw7XHJcbiAgICAgIHNbMzJdIF49IGg7XHJcbiAgICAgIHNbMzNdIF49IGw7XHJcbiAgICAgIHNbNDJdIF49IGg7XHJcbiAgICAgIHNbNDNdIF49IGw7XHJcbiAgICAgIGggPSBjMiBeICgoYzYgPDwgMSkgfCAoYzcgPj4+IDMxKSk7XHJcbiAgICAgIGwgPSBjMyBeICgoYzcgPDwgMSkgfCAoYzYgPj4+IDMxKSk7XHJcbiAgICAgIHNbNF0gXj0gaDtcclxuICAgICAgc1s1XSBePSBsO1xyXG4gICAgICBzWzE0XSBePSBoO1xyXG4gICAgICBzWzE1XSBePSBsO1xyXG4gICAgICBzWzI0XSBePSBoO1xyXG4gICAgICBzWzI1XSBePSBsO1xyXG4gICAgICBzWzM0XSBePSBoO1xyXG4gICAgICBzWzM1XSBePSBsO1xyXG4gICAgICBzWzQ0XSBePSBoO1xyXG4gICAgICBzWzQ1XSBePSBsO1xyXG4gICAgICBoID0gYzQgXiAoKGM4IDw8IDEpIHwgKGM5ID4+PiAzMSkpO1xyXG4gICAgICBsID0gYzUgXiAoKGM5IDw8IDEpIHwgKGM4ID4+PiAzMSkpO1xyXG4gICAgICBzWzZdIF49IGg7XHJcbiAgICAgIHNbN10gXj0gbDtcclxuICAgICAgc1sxNl0gXj0gaDtcclxuICAgICAgc1sxN10gXj0gbDtcclxuICAgICAgc1syNl0gXj0gaDtcclxuICAgICAgc1syN10gXj0gbDtcclxuICAgICAgc1szNl0gXj0gaDtcclxuICAgICAgc1szN10gXj0gbDtcclxuICAgICAgc1s0Nl0gXj0gaDtcclxuICAgICAgc1s0N10gXj0gbDtcclxuICAgICAgaCA9IGM2IF4gKChjMCA8PCAxKSB8IChjMSA+Pj4gMzEpKTtcclxuICAgICAgbCA9IGM3IF4gKChjMSA8PCAxKSB8IChjMCA+Pj4gMzEpKTtcclxuICAgICAgc1s4XSBePSBoO1xyXG4gICAgICBzWzldIF49IGw7XHJcbiAgICAgIHNbMThdIF49IGg7XHJcbiAgICAgIHNbMTldIF49IGw7XHJcbiAgICAgIHNbMjhdIF49IGg7XHJcbiAgICAgIHNbMjldIF49IGw7XHJcbiAgICAgIHNbMzhdIF49IGg7XHJcbiAgICAgIHNbMzldIF49IGw7XHJcbiAgICAgIHNbNDhdIF49IGg7XHJcbiAgICAgIHNbNDldIF49IGw7XHJcblxyXG4gICAgICBiMCA9IHNbMF07XHJcbiAgICAgIGIxID0gc1sxXTtcclxuICAgICAgYjMyID0gKHNbMTFdIDw8IDQpIHwgKHNbMTBdID4+PiAyOCk7XHJcbiAgICAgIGIzMyA9IChzWzEwXSA8PCA0KSB8IChzWzExXSA+Pj4gMjgpO1xyXG4gICAgICBiMTQgPSAoc1syMF0gPDwgMykgfCAoc1syMV0gPj4+IDI5KTtcclxuICAgICAgYjE1ID0gKHNbMjFdIDw8IDMpIHwgKHNbMjBdID4+PiAyOSk7XHJcbiAgICAgIGI0NiA9IChzWzMxXSA8PCA5KSB8IChzWzMwXSA+Pj4gMjMpO1xyXG4gICAgICBiNDcgPSAoc1szMF0gPDwgOSkgfCAoc1szMV0gPj4+IDIzKTtcclxuICAgICAgYjI4ID0gKHNbNDBdIDw8IDE4KSB8IChzWzQxXSA+Pj4gMTQpO1xyXG4gICAgICBiMjkgPSAoc1s0MV0gPDwgMTgpIHwgKHNbNDBdID4+PiAxNCk7XHJcbiAgICAgIGIyMCA9IChzWzJdIDw8IDEpIHwgKHNbM10gPj4+IDMxKTtcclxuICAgICAgYjIxID0gKHNbM10gPDwgMSkgfCAoc1syXSA+Pj4gMzEpO1xyXG4gICAgICBiMiA9IChzWzEzXSA8PCAxMikgfCAoc1sxMl0gPj4+IDIwKTtcclxuICAgICAgYjMgPSAoc1sxMl0gPDwgMTIpIHwgKHNbMTNdID4+PiAyMCk7XHJcbiAgICAgIGIzNCA9IChzWzIyXSA8PCAxMCkgfCAoc1syM10gPj4+IDIyKTtcclxuICAgICAgYjM1ID0gKHNbMjNdIDw8IDEwKSB8IChzWzIyXSA+Pj4gMjIpO1xyXG4gICAgICBiMTYgPSAoc1szM10gPDwgMTMpIHwgKHNbMzJdID4+PiAxOSk7XHJcbiAgICAgIGIxNyA9IChzWzMyXSA8PCAxMykgfCAoc1szM10gPj4+IDE5KTtcclxuICAgICAgYjQ4ID0gKHNbNDJdIDw8IDIpIHwgKHNbNDNdID4+PiAzMCk7XHJcbiAgICAgIGI0OSA9IChzWzQzXSA8PCAyKSB8IChzWzQyXSA+Pj4gMzApO1xyXG4gICAgICBiNDAgPSAoc1s1XSA8PCAzMCkgfCAoc1s0XSA+Pj4gMik7XHJcbiAgICAgIGI0MSA9IChzWzRdIDw8IDMwKSB8IChzWzVdID4+PiAyKTtcclxuICAgICAgYjIyID0gKHNbMTRdIDw8IDYpIHwgKHNbMTVdID4+PiAyNik7XHJcbiAgICAgIGIyMyA9IChzWzE1XSA8PCA2KSB8IChzWzE0XSA+Pj4gMjYpO1xyXG4gICAgICBiNCA9IChzWzI1XSA8PCAxMSkgfCAoc1syNF0gPj4+IDIxKTtcclxuICAgICAgYjUgPSAoc1syNF0gPDwgMTEpIHwgKHNbMjVdID4+PiAyMSk7XHJcbiAgICAgIGIzNiA9IChzWzM0XSA8PCAxNSkgfCAoc1szNV0gPj4+IDE3KTtcclxuICAgICAgYjM3ID0gKHNbMzVdIDw8IDE1KSB8IChzWzM0XSA+Pj4gMTcpO1xyXG4gICAgICBiMTggPSAoc1s0NV0gPDwgMjkpIHwgKHNbNDRdID4+PiAzKTtcclxuICAgICAgYjE5ID0gKHNbNDRdIDw8IDI5KSB8IChzWzQ1XSA+Pj4gMyk7XHJcbiAgICAgIGIxMCA9IChzWzZdIDw8IDI4KSB8IChzWzddID4+PiA0KTtcclxuICAgICAgYjExID0gKHNbN10gPDwgMjgpIHwgKHNbNl0gPj4+IDQpO1xyXG4gICAgICBiNDIgPSAoc1sxN10gPDwgMjMpIHwgKHNbMTZdID4+PiA5KTtcclxuICAgICAgYjQzID0gKHNbMTZdIDw8IDIzKSB8IChzWzE3XSA+Pj4gOSk7XHJcbiAgICAgIGIyNCA9IChzWzI2XSA8PCAyNSkgfCAoc1syN10gPj4+IDcpO1xyXG4gICAgICBiMjUgPSAoc1syN10gPDwgMjUpIHwgKHNbMjZdID4+PiA3KTtcclxuICAgICAgYjYgPSAoc1szNl0gPDwgMjEpIHwgKHNbMzddID4+PiAxMSk7XHJcbiAgICAgIGI3ID0gKHNbMzddIDw8IDIxKSB8IChzWzM2XSA+Pj4gMTEpO1xyXG4gICAgICBiMzggPSAoc1s0N10gPDwgMjQpIHwgKHNbNDZdID4+PiA4KTtcclxuICAgICAgYjM5ID0gKHNbNDZdIDw8IDI0KSB8IChzWzQ3XSA+Pj4gOCk7XHJcbiAgICAgIGIzMCA9IChzWzhdIDw8IDI3KSB8IChzWzldID4+PiA1KTtcclxuICAgICAgYjMxID0gKHNbOV0gPDwgMjcpIHwgKHNbOF0gPj4+IDUpO1xyXG4gICAgICBiMTIgPSAoc1sxOF0gPDwgMjApIHwgKHNbMTldID4+PiAxMik7XHJcbiAgICAgIGIxMyA9IChzWzE5XSA8PCAyMCkgfCAoc1sxOF0gPj4+IDEyKTtcclxuICAgICAgYjQ0ID0gKHNbMjldIDw8IDcpIHwgKHNbMjhdID4+PiAyNSk7XHJcbiAgICAgIGI0NSA9IChzWzI4XSA8PCA3KSB8IChzWzI5XSA+Pj4gMjUpO1xyXG4gICAgICBiMjYgPSAoc1szOF0gPDwgOCkgfCAoc1szOV0gPj4+IDI0KTtcclxuICAgICAgYjI3ID0gKHNbMzldIDw8IDgpIHwgKHNbMzhdID4+PiAyNCk7XHJcbiAgICAgIGI4ID0gKHNbNDhdIDw8IDE0KSB8IChzWzQ5XSA+Pj4gMTgpO1xyXG4gICAgICBiOSA9IChzWzQ5XSA8PCAxNCkgfCAoc1s0OF0gPj4+IDE4KTtcclxuXHJcbiAgICAgIHNbMF0gPSBiMCBeICh+YjIgJiBiNCk7XHJcbiAgICAgIHNbMV0gPSBiMSBeICh+YjMgJiBiNSk7XHJcbiAgICAgIHNbMTBdID0gYjEwIF4gKH5iMTIgJiBiMTQpO1xyXG4gICAgICBzWzExXSA9IGIxMSBeICh+YjEzICYgYjE1KTtcclxuICAgICAgc1syMF0gPSBiMjAgXiAofmIyMiAmIGIyNCk7XHJcbiAgICAgIHNbMjFdID0gYjIxIF4gKH5iMjMgJiBiMjUpO1xyXG4gICAgICBzWzMwXSA9IGIzMCBeICh+YjMyICYgYjM0KTtcclxuICAgICAgc1szMV0gPSBiMzEgXiAofmIzMyAmIGIzNSk7XHJcbiAgICAgIHNbNDBdID0gYjQwIF4gKH5iNDIgJiBiNDQpO1xyXG4gICAgICBzWzQxXSA9IGI0MSBeICh+YjQzICYgYjQ1KTtcclxuICAgICAgc1syXSA9IGIyIF4gKH5iNCAmIGI2KTtcclxuICAgICAgc1szXSA9IGIzIF4gKH5iNSAmIGI3KTtcclxuICAgICAgc1sxMl0gPSBiMTIgXiAofmIxNCAmIGIxNik7XHJcbiAgICAgIHNbMTNdID0gYjEzIF4gKH5iMTUgJiBiMTcpO1xyXG4gICAgICBzWzIyXSA9IGIyMiBeICh+YjI0ICYgYjI2KTtcclxuICAgICAgc1syM10gPSBiMjMgXiAofmIyNSAmIGIyNyk7XHJcbiAgICAgIHNbMzJdID0gYjMyIF4gKH5iMzQgJiBiMzYpO1xyXG4gICAgICBzWzMzXSA9IGIzMyBeICh+YjM1ICYgYjM3KTtcclxuICAgICAgc1s0Ml0gPSBiNDIgXiAofmI0NCAmIGI0Nik7XHJcbiAgICAgIHNbNDNdID0gYjQzIF4gKH5iNDUgJiBiNDcpO1xyXG4gICAgICBzWzRdID0gYjQgXiAofmI2ICYgYjgpO1xyXG4gICAgICBzWzVdID0gYjUgXiAofmI3ICYgYjkpO1xyXG4gICAgICBzWzE0XSA9IGIxNCBeICh+YjE2ICYgYjE4KTtcclxuICAgICAgc1sxNV0gPSBiMTUgXiAofmIxNyAmIGIxOSk7XHJcbiAgICAgIHNbMjRdID0gYjI0IF4gKH5iMjYgJiBiMjgpO1xyXG4gICAgICBzWzI1XSA9IGIyNSBeICh+YjI3ICYgYjI5KTtcclxuICAgICAgc1szNF0gPSBiMzQgXiAofmIzNiAmIGIzOCk7XHJcbiAgICAgIHNbMzVdID0gYjM1IF4gKH5iMzcgJiBiMzkpO1xyXG4gICAgICBzWzQ0XSA9IGI0NCBeICh+YjQ2ICYgYjQ4KTtcclxuICAgICAgc1s0NV0gPSBiNDUgXiAofmI0NyAmIGI0OSk7XHJcbiAgICAgIHNbNl0gPSBiNiBeICh+YjggJiBiMCk7XHJcbiAgICAgIHNbN10gPSBiNyBeICh+YjkgJiBiMSk7XHJcbiAgICAgIHNbMTZdID0gYjE2IF4gKH5iMTggJiBiMTApO1xyXG4gICAgICBzWzE3XSA9IGIxNyBeICh+YjE5ICYgYjExKTtcclxuICAgICAgc1syNl0gPSBiMjYgXiAofmIyOCAmIGIyMCk7XHJcbiAgICAgIHNbMjddID0gYjI3IF4gKH5iMjkgJiBiMjEpO1xyXG4gICAgICBzWzM2XSA9IGIzNiBeICh+YjM4ICYgYjMwKTtcclxuICAgICAgc1szN10gPSBiMzcgXiAofmIzOSAmIGIzMSk7XHJcbiAgICAgIHNbNDZdID0gYjQ2IF4gKH5iNDggJiBiNDApO1xyXG4gICAgICBzWzQ3XSA9IGI0NyBeICh+YjQ5ICYgYjQxKTtcclxuICAgICAgc1s4XSA9IGI4IF4gKH5iMCAmIGIyKTtcclxuICAgICAgc1s5XSA9IGI5IF4gKH5iMSAmIGIzKTtcclxuICAgICAgc1sxOF0gPSBiMTggXiAofmIxMCAmIGIxMik7XHJcbiAgICAgIHNbMTldID0gYjE5IF4gKH5iMTEgJiBiMTMpO1xyXG4gICAgICBzWzI4XSA9IGIyOCBeICh+YjIwICYgYjIyKTtcclxuICAgICAgc1syOV0gPSBiMjkgXiAofmIyMSAmIGIyMyk7XHJcbiAgICAgIHNbMzhdID0gYjM4IF4gKH5iMzAgJiBiMzIpO1xyXG4gICAgICBzWzM5XSA9IGIzOSBeICh+YjMxICYgYjMzKTtcclxuICAgICAgc1s0OF0gPSBiNDggXiAofmI0MCAmIGI0Mik7XHJcbiAgICAgIHNbNDldID0gYjQ5IF4gKH5iNDEgJiBiNDMpO1xyXG5cclxuICAgICAgc1swXSBePSBSQ1tuXTtcclxuICAgICAgc1sxXSBePSBSQ1tuICsgMV07XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgaWYgKENPTU1PTl9KUykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBtZXRob2RzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGhvZE5hbWVzLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgIHJvb3RbbWV0aG9kTmFtZXNbaV1dID0gbWV0aG9kc1ttZXRob2ROYW1lc1tpXV07XHJcbiAgICB9XHJcbiAgfVxyXG59KSgpO1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vanMtc2hhMy9zcmMvc2hhMy5qc1xuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGpzb24gPSB0eXBlb2YgSlNPTiAhPT0gJ3VuZGVmaW5lZCcgPyBKU09OIDogcmVxdWlyZSgnanNvbmlmeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIG9wdHMgPSB7IGNtcDogb3B0cyB9O1xuICAgIHZhciBzcGFjZSA9IG9wdHMuc3BhY2UgfHwgJyc7XG4gICAgaWYgKHR5cGVvZiBzcGFjZSA9PT0gJ251bWJlcicpIHNwYWNlID0gQXJyYXkoc3BhY2UrMSkuam9pbignICcpO1xuICAgIHZhciBjeWNsZXMgPSAodHlwZW9mIG9wdHMuY3ljbGVzID09PSAnYm9vbGVhbicpID8gb3B0cy5jeWNsZXMgOiBmYWxzZTtcbiAgICB2YXIgcmVwbGFjZXIgPSBvcHRzLnJlcGxhY2VyIHx8IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gICAgdmFyIGNtcCA9IG9wdHMuY21wICYmIChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHZhciBhb2JqID0geyBrZXk6IGEsIHZhbHVlOiBub2RlW2FdIH07XG4gICAgICAgICAgICAgICAgdmFyIGJvYmogPSB7IGtleTogYiwgdmFsdWU6IG5vZGVbYl0gfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihhb2JqLCBib2JqKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfSkob3B0cy5jbXApO1xuXG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIHN0cmluZ2lmeSAocGFyZW50LCBrZXksIG5vZGUsIGxldmVsKSB7XG4gICAgICAgIHZhciBpbmRlbnQgPSBzcGFjZSA/ICgnXFxuJyArIG5ldyBBcnJheShsZXZlbCArIDEpLmpvaW4oc3BhY2UpKSA6ICcnO1xuICAgICAgICB2YXIgY29sb25TZXBhcmF0b3IgPSBzcGFjZSA/ICc6ICcgOiAnOic7XG5cbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS50b0pTT04gJiYgdHlwZW9mIG5vZGUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZS50b0pTT04oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUgPSByZXBsYWNlci5jYWxsKHBhcmVudCwga2V5LCBub2RlKTtcblxuICAgICAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCBub2RlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbi5zdHJpbmdpZnkobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gc3RyaW5naWZ5KG5vZGUsIGksIG5vZGVbaV0sIGxldmVsKzEpIHx8IGpzb24uc3RyaW5naWZ5KG51bGwpO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKGluZGVudCArIHNwYWNlICsgaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ1snICsgb3V0LmpvaW4oJywnKSArIGluZGVudCArICddJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN5Y2xlcykgcmV0dXJuIGpzb24uc3RyaW5naWZ5KCdfX2N5Y2xlX18nKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHNlZW4ucHVzaChub2RlKTtcblxuICAgICAgICAgICAgdmFyIGtleXMgPSBvYmplY3RLZXlzKG5vZGUpLnNvcnQoY21wICYmIGNtcChub2RlKSk7XG4gICAgICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdpZnkobm9kZSwga2V5LCBub2RlW2tleV0sIGxldmVsKzEpO1xuXG4gICAgICAgICAgICAgICAgaWYoIXZhbHVlKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHZhciBrZXlWYWx1ZSA9IGpzb24uc3RyaW5naWZ5KGtleSlcbiAgICAgICAgICAgICAgICAgICAgKyBjb2xvblNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICArIHZhbHVlO1xuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICBvdXQucHVzaChpbmRlbnQgKyBzcGFjZSArIGtleVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlZW4uc3BsaWNlKHNlZW4uaW5kZXhPZihub2RlKSwgMSk7XG4gICAgICAgICAgICByZXR1cm4gJ3snICsgb3V0LmpvaW4oJywnKSArIGluZGVudCArICd9JztcbiAgICAgICAgfVxuICAgIH0pKHsgJyc6IG9iaiB9LCAnJywgb2JqLCAwKTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB7fS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZSB9O1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoaGFzLmNhbGwob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2pzb24tc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJy4vbGliL3BhcnNlJyk7XG5leHBvcnRzLnN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vbGliL3N0cmluZ2lmeScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L2pzb25pZnkvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBhdCwgLy8gVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGNoYXJhY3RlclxuICAgIGNoLCAvLyBUaGUgY3VycmVudCBjaGFyYWN0ZXJcbiAgICBlc2NhcGVlID0ge1xuICAgICAgICAnXCInOiAgJ1wiJyxcbiAgICAgICAgJ1xcXFwnOiAnXFxcXCcsXG4gICAgICAgICcvJzogICcvJyxcbiAgICAgICAgYjogICAgJ1xcYicsXG4gICAgICAgIGY6ICAgICdcXGYnLFxuICAgICAgICBuOiAgICAnXFxuJyxcbiAgICAgICAgcjogICAgJ1xccicsXG4gICAgICAgIHQ6ICAgICdcXHQnXG4gICAgfSxcbiAgICB0ZXh0LFxuXG4gICAgZXJyb3IgPSBmdW5jdGlvbiAobSkge1xuICAgICAgICAvLyBDYWxsIGVycm9yIHdoZW4gc29tZXRoaW5nIGlzIHdyb25nLlxuICAgICAgICB0aHJvdyB7XG4gICAgICAgICAgICBuYW1lOiAgICAnU3ludGF4RXJyb3InLFxuICAgICAgICAgICAgbWVzc2FnZTogbSxcbiAgICAgICAgICAgIGF0OiAgICAgIGF0LFxuICAgICAgICAgICAgdGV4dDogICAgdGV4dFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgXG4gICAgbmV4dCA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIC8vIElmIGEgYyBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQsIHZlcmlmeSB0aGF0IGl0IG1hdGNoZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoYyAmJiBjICE9PSBjaCkge1xuICAgICAgICAgICAgZXJyb3IoXCJFeHBlY3RlZCAnXCIgKyBjICsgXCInIGluc3RlYWQgb2YgJ1wiICsgY2ggKyBcIidcIik7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyYWN0ZXIuIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgY2hhcmFjdGVycyxcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcuXG4gICAgICAgIFxuICAgICAgICBjaCA9IHRleHQuY2hhckF0KGF0KTtcbiAgICAgICAgYXQgKz0gMTtcbiAgICAgICAgcmV0dXJuIGNoO1xuICAgIH0sXG4gICAgXG4gICAgbnVtYmVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBQYXJzZSBhIG51bWJlciB2YWx1ZS5cbiAgICAgICAgdmFyIG51bWJlcixcbiAgICAgICAgICAgIHN0cmluZyA9ICcnO1xuICAgICAgICBcbiAgICAgICAgaWYgKGNoID09PSAnLScpIHtcbiAgICAgICAgICAgIHN0cmluZyA9ICctJztcbiAgICAgICAgICAgIG5leHQoJy0nKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jykge1xuICAgICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gJy4nKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gJy4nO1xuICAgICAgICAgICAgd2hpbGUgKG5leHQoKSAmJiBjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaCA9PT0gJ2UnIHx8IGNoID09PSAnRScpIHtcbiAgICAgICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG51bWJlciA9ICtzdHJpbmc7XG4gICAgICAgIGlmICghaXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgICAgZXJyb3IoXCJCYWQgbnVtYmVyXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXG4gICAgc3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBQYXJzZSBhIHN0cmluZyB2YWx1ZS5cbiAgICAgICAgdmFyIGhleCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBzdHJpbmcgPSAnJyxcbiAgICAgICAgICAgIHVmZmZmO1xuICAgICAgICBcbiAgICAgICAgLy8gV2hlbiBwYXJzaW5nIGZvciBzdHJpbmcgdmFsdWVzLCB3ZSBtdXN0IGxvb2sgZm9yIFwiIGFuZCBcXCBjaGFyYWN0ZXJzLlxuICAgICAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgICAgICAgIHdoaWxlIChuZXh0KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT09ICdcXFxcJykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ3UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1ZmZmZiA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ID0gcGFyc2VJbnQobmV4dCgpLCAxNik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShoZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZmZmZiA9IHVmZmZmICogMTYgKyBoZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh1ZmZmZik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVzY2FwZWVbY2hdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9IGVzY2FwZWVbY2hdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVycm9yKFwiQmFkIHN0cmluZ1wiKTtcbiAgICB9LFxuXG4gICAgd2hpdGUgPSBmdW5jdGlvbiAoKSB7XG5cbi8vIFNraXAgd2hpdGVzcGFjZS5cblxuICAgICAgICB3aGlsZSAoY2ggJiYgY2ggPD0gJyAnKSB7XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgd29yZCA9IGZ1bmN0aW9uICgpIHtcblxuLy8gdHJ1ZSwgZmFsc2UsIG9yIG51bGwuXG5cbiAgICAgICAgc3dpdGNoIChjaCkge1xuICAgICAgICBjYXNlICd0JzpcbiAgICAgICAgICAgIG5leHQoJ3QnKTtcbiAgICAgICAgICAgIG5leHQoJ3InKTtcbiAgICAgICAgICAgIG5leHQoJ3UnKTtcbiAgICAgICAgICAgIG5leHQoJ2UnKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlICdmJzpcbiAgICAgICAgICAgIG5leHQoJ2YnKTtcbiAgICAgICAgICAgIG5leHQoJ2EnKTtcbiAgICAgICAgICAgIG5leHQoJ2wnKTtcbiAgICAgICAgICAgIG5leHQoJ3MnKTtcbiAgICAgICAgICAgIG5leHQoJ2UnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY2FzZSAnbic6XG4gICAgICAgICAgICBuZXh0KCduJyk7XG4gICAgICAgICAgICBuZXh0KCd1Jyk7XG4gICAgICAgICAgICBuZXh0KCdsJyk7XG4gICAgICAgICAgICBuZXh0KCdsJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlcnJvcihcIlVuZXhwZWN0ZWQgJ1wiICsgY2ggKyBcIidcIik7XG4gICAgfSxcblxuICAgIHZhbHVlLCAgLy8gUGxhY2UgaG9sZGVyIGZvciB0aGUgdmFsdWUgZnVuY3Rpb24uXG5cbiAgICBhcnJheSA9IGZ1bmN0aW9uICgpIHtcblxuLy8gUGFyc2UgYW4gYXJyYXkgdmFsdWUuXG5cbiAgICAgICAgdmFyIGFycmF5ID0gW107XG5cbiAgICAgICAgaWYgKGNoID09PSAnWycpIHtcbiAgICAgICAgICAgIG5leHQoJ1snKTtcbiAgICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgIG5leHQoJ10nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXk7ICAgLy8gZW1wdHkgYXJyYXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjaCkge1xuICAgICAgICAgICAgICAgIGFycmF5LnB1c2godmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0KCddJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV4dCgnLCcpO1xuICAgICAgICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3IoXCJCYWQgYXJyYXlcIik7XG4gICAgfSxcblxuICAgIG9iamVjdCA9IGZ1bmN0aW9uICgpIHtcblxuLy8gUGFyc2UgYW4gb2JqZWN0IHZhbHVlLlxuXG4gICAgICAgIHZhciBrZXksXG4gICAgICAgICAgICBvYmplY3QgPSB7fTtcblxuICAgICAgICBpZiAoY2ggPT09ICd7Jykge1xuICAgICAgICAgICAgbmV4dCgneycpO1xuICAgICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ30nKSB7XG4gICAgICAgICAgICAgICAgbmV4dCgnfScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7ICAgLy8gZW1wdHkgb2JqZWN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY2gpIHtcbiAgICAgICAgICAgICAgICBrZXkgPSBzdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgICAgICAgIG5leHQoJzonKTtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yKCdEdXBsaWNhdGUga2V5IFwiJyArIGtleSArICdcIicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlKCk7XG4gICAgICAgICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICAgICAgICBpZiAoY2ggPT09ICd9Jykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0KCd9Jyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG5leHQoJywnKTtcbiAgICAgICAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVycm9yKFwiQmFkIG9iamVjdFwiKTtcbiAgICB9O1xuXG52YWx1ZSA9IGZ1bmN0aW9uICgpIHtcblxuLy8gUGFyc2UgYSBKU09OIHZhbHVlLiBJdCBjb3VsZCBiZSBhbiBvYmplY3QsIGFuIGFycmF5LCBhIHN0cmluZywgYSBudW1iZXIsXG4vLyBvciBhIHdvcmQuXG5cbiAgICB3aGl0ZSgpO1xuICAgIHN3aXRjaCAoY2gpIHtcbiAgICBjYXNlICd7JzpcbiAgICAgICAgcmV0dXJuIG9iamVjdCgpO1xuICAgIGNhc2UgJ1snOlxuICAgICAgICByZXR1cm4gYXJyYXkoKTtcbiAgICBjYXNlICdcIic6XG4gICAgICAgIHJldHVybiBzdHJpbmcoKTtcbiAgICBjYXNlICctJzpcbiAgICAgICAgcmV0dXJuIG51bWJlcigpO1xuICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBjaCA+PSAnMCcgJiYgY2ggPD0gJzknID8gbnVtYmVyKCkgOiB3b3JkKCk7XG4gICAgfVxufTtcblxuLy8gUmV0dXJuIHRoZSBqc29uX3BhcnNlIGZ1bmN0aW9uLiBJdCB3aWxsIGhhdmUgYWNjZXNzIHRvIGFsbCBvZiB0aGUgYWJvdmVcbi8vIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzLlxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzb3VyY2UsIHJldml2ZXIpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIFxuICAgIHRleHQgPSBzb3VyY2U7XG4gICAgYXQgPSAwO1xuICAgIGNoID0gJyAnO1xuICAgIHJlc3VsdCA9IHZhbHVlKCk7XG4gICAgd2hpdGUoKTtcbiAgICBpZiAoY2gpIHtcbiAgICAgICAgZXJyb3IoXCJTeW50YXggZXJyb3JcIik7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSByZXZpdmVyIGZ1bmN0aW9uLCB3ZSByZWN1cnNpdmVseSB3YWxrIHRoZSBuZXcgc3RydWN0dXJlLFxuICAgIC8vIHBhc3NpbmcgZWFjaCBuYW1lL3ZhbHVlIHBhaXIgdG8gdGhlIHJldml2ZXIgZnVuY3Rpb24gZm9yIHBvc3NpYmxlXG4gICAgLy8gdHJhbnNmb3JtYXRpb24sIHN0YXJ0aW5nIHdpdGggYSB0ZW1wb3Jhcnkgcm9vdCBvYmplY3QgdGhhdCBob2xkcyB0aGUgcmVzdWx0XG4gICAgLy8gaW4gYW4gZW1wdHkga2V5LiBJZiB0aGVyZSBpcyBub3QgYSByZXZpdmVyIGZ1bmN0aW9uLCB3ZSBzaW1wbHkgcmV0dXJuIHRoZVxuICAgIC8vIHJlc3VsdC5cblxuICAgIHJldHVybiB0eXBlb2YgcmV2aXZlciA9PT0gJ2Z1bmN0aW9uJyA/IChmdW5jdGlvbiB3YWxrKGhvbGRlciwga2V5KSB7XG4gICAgICAgIHZhciBrLCB2LCB2YWx1ZSA9IGhvbGRlcltrZXldO1xuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChrIGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgICAgICAgICAgdiA9IHdhbGsodmFsdWUsIGspO1xuICAgICAgICAgICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVtrXSA9IHY7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWVba107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldml2ZXIuY2FsbChob2xkZXIsIGtleSwgdmFsdWUpO1xuICAgIH0oeycnOiByZXN1bHR9LCAnJykpIDogcmVzdWx0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi9qc29uaWZ5L2xpYi9wYXJzZS5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGN4ID0gL1tcXHUwMDAwXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2csXG4gICAgZXNjYXBhYmxlID0gL1tcXFxcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx4OWZcXHUwMGFkXFx1MDYwMC1cXHUwNjA0XFx1MDcwZlxcdTE3YjRcXHUxN2I1XFx1MjAwYy1cXHUyMDBmXFx1MjAyOC1cXHUyMDJmXFx1MjA2MC1cXHUyMDZmXFx1ZmVmZlxcdWZmZjAtXFx1ZmZmZl0vZyxcbiAgICBnYXAsXG4gICAgaW5kZW50LFxuICAgIG1ldGEgPSB7ICAgIC8vIHRhYmxlIG9mIGNoYXJhY3RlciBzdWJzdGl0dXRpb25zXG4gICAgICAgICdcXGInOiAnXFxcXGInLFxuICAgICAgICAnXFx0JzogJ1xcXFx0JyxcbiAgICAgICAgJ1xcbic6ICdcXFxcbicsXG4gICAgICAgICdcXGYnOiAnXFxcXGYnLFxuICAgICAgICAnXFxyJzogJ1xcXFxyJyxcbiAgICAgICAgJ1wiJyA6ICdcXFxcXCInLFxuICAgICAgICAnXFxcXCc6ICdcXFxcXFxcXCdcbiAgICB9LFxuICAgIHJlcDtcblxuZnVuY3Rpb24gcXVvdGUoc3RyaW5nKSB7XG4gICAgLy8gSWYgdGhlIHN0cmluZyBjb250YWlucyBubyBjb250cm9sIGNoYXJhY3RlcnMsIG5vIHF1b3RlIGNoYXJhY3RlcnMsIGFuZCBub1xuICAgIC8vIGJhY2tzbGFzaCBjaGFyYWN0ZXJzLCB0aGVuIHdlIGNhbiBzYWZlbHkgc2xhcCBzb21lIHF1b3RlcyBhcm91bmQgaXQuXG4gICAgLy8gT3RoZXJ3aXNlIHdlIG11c3QgYWxzbyByZXBsYWNlIHRoZSBvZmZlbmRpbmcgY2hhcmFjdGVycyB3aXRoIHNhZmUgZXNjYXBlXG4gICAgLy8gc2VxdWVuY2VzLlxuICAgIFxuICAgIGVzY2FwYWJsZS5sYXN0SW5kZXggPSAwO1xuICAgIHJldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpID8gJ1wiJyArIHN0cmluZy5yZXBsYWNlKGVzY2FwYWJsZSwgZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIGMgPSBtZXRhW2FdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGMgPT09ICdzdHJpbmcnID8gYyA6XG4gICAgICAgICAgICAnXFxcXHUnICsgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTtcbiAgICB9KSArICdcIicgOiAnXCInICsgc3RyaW5nICsgJ1wiJztcbn1cblxuZnVuY3Rpb24gc3RyKGtleSwgaG9sZGVyKSB7XG4gICAgLy8gUHJvZHVjZSBhIHN0cmluZyBmcm9tIGhvbGRlcltrZXldLlxuICAgIHZhciBpLCAgICAgICAgICAvLyBUaGUgbG9vcCBjb3VudGVyLlxuICAgICAgICBrLCAgICAgICAgICAvLyBUaGUgbWVtYmVyIGtleS5cbiAgICAgICAgdiwgICAgICAgICAgLy8gVGhlIG1lbWJlciB2YWx1ZS5cbiAgICAgICAgbGVuZ3RoLFxuICAgICAgICBtaW5kID0gZ2FwLFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB2YWx1ZSA9IGhvbGRlcltrZXldO1xuICAgIFxuICAgIC8vIElmIHRoZSB2YWx1ZSBoYXMgYSB0b0pTT04gbWV0aG9kLCBjYWxsIGl0IHRvIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKGtleSk7XG4gICAgfVxuICAgIFxuICAgIC8vIElmIHdlIHdlcmUgY2FsbGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0b1xuICAgIC8vIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuICAgIGlmICh0eXBlb2YgcmVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gcmVwLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgXG4gICAgLy8gV2hhdCBoYXBwZW5zIG5leHQgZGVwZW5kcyBvbiB0aGUgdmFsdWUncyB0eXBlLlxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gcXVvdGUodmFsdWUpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIC8vIEpTT04gbnVtYmVycyBtdXN0IGJlIGZpbml0ZS4gRW5jb2RlIG5vbi1maW5pdGUgbnVtYmVycyBhcyBudWxsLlxuICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiAnbnVsbCc7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuIG9yIG51bGwsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcuIE5vdGU6XG4gICAgICAgICAgICAvLyB0eXBlb2YgbnVsbCBkb2VzIG5vdCBwcm9kdWNlICdudWxsJy4gVGhlIGNhc2UgaXMgaW5jbHVkZWQgaGVyZSBpblxuICAgICAgICAgICAgLy8gdGhlIHJlbW90ZSBjaGFuY2UgdGhhdCB0aGlzIGdldHMgZml4ZWQgc29tZWRheS5cbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgXG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJ251bGwnO1xuICAgICAgICAgICAgZ2FwICs9IGluZGVudDtcbiAgICAgICAgICAgIHBhcnRpYWwgPSBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gQXJyYXkuaXNBcnJheVxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsW2ldID0gc3RyKGksIHZhbHVlKSB8fCAnbnVsbCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIEpvaW4gYWxsIG9mIHRoZSBlbGVtZW50cyB0b2dldGhlciwgc2VwYXJhdGVkIHdpdGggY29tbWFzLCBhbmRcbiAgICAgICAgICAgICAgICAvLyB3cmFwIHRoZW0gaW4gYnJhY2tldHMuXG4gICAgICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwID8gJ1tdJyA6IGdhcCA/XG4gICAgICAgICAgICAgICAgICAgICdbXFxuJyArIGdhcCArIHBhcnRpYWwuam9pbignLFxcbicgKyBnYXApICsgJ1xcbicgKyBtaW5kICsgJ10nIDpcbiAgICAgICAgICAgICAgICAgICAgJ1snICsgcGFydGlhbC5qb2luKCcsJykgKyAnXSc7XG4gICAgICAgICAgICAgICAgZ2FwID0gbWluZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gSWYgdGhlIHJlcGxhY2VyIGlzIGFuIGFycmF5LCB1c2UgaXQgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGJlXG4gICAgICAgICAgICAvLyBzdHJpbmdpZmllZC5cbiAgICAgICAgICAgIGlmIChyZXAgJiYgdHlwZW9mIHJlcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBrID0gcmVwW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ID0gc3RyKGssIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC5cbiAgICAgICAgICAgICAgICBmb3IgKGsgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsLnB1c2gocXVvdGUoaykgKyAoZ2FwID8gJzogJyA6ICc6JykgKyB2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAvLyBKb2luIGFsbCBvZiB0aGUgbWVtYmVyIHRleHRzIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgd2l0aCBjb21tYXMsXG4gICAgICAgIC8vIGFuZCB3cmFwIHRoZW0gaW4gYnJhY2VzLlxuXG4gICAgICAgIHYgPSBwYXJ0aWFsLmxlbmd0aCA9PT0gMCA/ICd7fScgOiBnYXAgP1xuICAgICAgICAgICAgJ3tcXG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXFxuJyArIGdhcCkgKyAnXFxuJyArIG1pbmQgKyAnfScgOlxuICAgICAgICAgICAgJ3snICsgcGFydGlhbC5qb2luKCcsJykgKyAnfSc7XG4gICAgICAgIGdhcCA9IG1pbmQ7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgIHZhciBpO1xuICAgIGdhcCA9ICcnO1xuICAgIGluZGVudCA9ICcnO1xuICAgIFxuICAgIC8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIG1ha2UgYW4gaW5kZW50IHN0cmluZyBjb250YWluaW5nIHRoYXRcbiAgICAvLyBtYW55IHNwYWNlcy5cbiAgICBpZiAodHlwZW9mIHNwYWNlID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3BhY2U7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5kZW50ICs9ICcgJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGlzIGEgc3RyaW5nLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGluZGVudCBzdHJpbmcuXG4gICAgZWxzZSBpZiAodHlwZW9mIHNwYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpbmRlbnQgPSBzcGFjZTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIHJlcGxhY2VyLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gYXJyYXkuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvci5cbiAgICByZXAgPSByZXBsYWNlcjtcbiAgICBpZiAocmVwbGFjZXIgJiYgdHlwZW9mIHJlcGxhY2VyICE9PSAnZnVuY3Rpb24nXG4gICAgJiYgKHR5cGVvZiByZXBsYWNlciAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHJlcGxhY2VyLmxlbmd0aCAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTi5zdHJpbmdpZnknKTtcbiAgICB9XG4gICAgXG4gICAgLy8gTWFrZSBhIGZha2Ugcm9vdCBvYmplY3QgY29udGFpbmluZyBvdXIgdmFsdWUgdW5kZXIgdGhlIGtleSBvZiAnJy5cbiAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBvZiBzdHJpbmdpZnlpbmcgdGhlIHZhbHVlLlxuICAgIHJldHVybiBzdHIoJycsIHsnJzogdmFsdWV9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vanNvbmlmeS9saWIvc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSA1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3Byb2Nlc3MvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gNTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiKGZ1bmN0aW9uKG5hY2wpIHtcbid1c2Ugc3RyaWN0JztcblxuLy8gUG9ydGVkIGluIDIwMTQgYnkgRG1pdHJ5IENoZXN0bnlraCBhbmQgRGV2aSBNYW5kaXJpLlxuLy8gUHVibGljIGRvbWFpbi5cbi8vXG4vLyBJbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gVHdlZXROYUNsIHZlcnNpb24gMjAxNDA0MjcuXG4vLyBTZWUgZm9yIGRldGFpbHM6IGh0dHA6Ly90d2VldG5hY2wuY3IueXAudG8vXG5cbnZhciBnZiA9IGZ1bmN0aW9uKGluaXQpIHtcbiAgdmFyIGksIHIgPSBuZXcgRmxvYXQ2NEFycmF5KDE2KTtcbiAgaWYgKGluaXQpIGZvciAoaSA9IDA7IGkgPCBpbml0Lmxlbmd0aDsgaSsrKSByW2ldID0gaW5pdFtpXTtcbiAgcmV0dXJuIHI7XG59O1xuXG4vLyAgUGx1Z2dhYmxlLCBpbml0aWFsaXplZCBpbiBoaWdoLWxldmVsIEFQSSBiZWxvdy5cbnZhciByYW5kb21ieXRlcyA9IGZ1bmN0aW9uKC8qIHgsIG4gKi8pIHsgdGhyb3cgbmV3IEVycm9yKCdubyBQUk5HJyk7IH07XG5cbnZhciBfMCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbnZhciBfOSA9IG5ldyBVaW50OEFycmF5KDMyKTsgXzlbMF0gPSA5O1xuXG52YXIgZ2YwID0gZ2YoKSxcbiAgICBnZjEgPSBnZihbMV0pLFxuICAgIF8xMjE2NjUgPSBnZihbMHhkYjQxLCAxXSksXG4gICAgRCA9IGdmKFsweDc4YTMsIDB4MTM1OSwgMHg0ZGNhLCAweDc1ZWIsIDB4ZDhhYiwgMHg0MTQxLCAweDBhNGQsIDB4MDA3MCwgMHhlODk4LCAweDc3NzksIDB4NDA3OSwgMHg4Y2M3LCAweGZlNzMsIDB4MmI2ZiwgMHg2Y2VlLCAweDUyMDNdKSxcbiAgICBEMiA9IGdmKFsweGYxNTksIDB4MjZiMiwgMHg5Yjk0LCAweGViZDYsIDB4YjE1NiwgMHg4MjgzLCAweDE0OWEsIDB4MDBlMCwgMHhkMTMwLCAweGVlZjMsIDB4ODBmMiwgMHgxOThlLCAweGZjZTcsIDB4NTZkZiwgMHhkOWRjLCAweDI0MDZdKSxcbiAgICBYID0gZ2YoWzB4ZDUxYSwgMHg4ZjI1LCAweDJkNjAsIDB4Yzk1NiwgMHhhN2IyLCAweDk1MjUsIDB4Yzc2MCwgMHg2OTJjLCAweGRjNWMsIDB4ZmRkNiwgMHhlMjMxLCAweGMwYTQsIDB4NTNmZSwgMHhjZDZlLCAweDM2ZDMsIDB4MjE2OV0pLFxuICAgIFkgPSBnZihbMHg2NjU4LCAweDY2NjYsIDB4NjY2NiwgMHg2NjY2LCAweDY2NjYsIDB4NjY2NiwgMHg2NjY2LCAweDY2NjYsIDB4NjY2NiwgMHg2NjY2LCAweDY2NjYsIDB4NjY2NiwgMHg2NjY2LCAweDY2NjYsIDB4NjY2NiwgMHg2NjY2XSksXG4gICAgSSA9IGdmKFsweGEwYjAsIDB4NGEwZSwgMHgxYjI3LCAweGM0ZWUsIDB4ZTQ3OCwgMHhhZDJmLCAweDE4MDYsIDB4MmY0MywgMHhkN2E3LCAweDNkZmIsIDB4MDA5OSwgMHgyYjRkLCAweGRmMGIsIDB4NGZjMSwgMHgyNDgwLCAweDJiODNdKTtcblxuZnVuY3Rpb24gdHM2NCh4LCBpLCBoLCBsKSB7XG4gIHhbaV0gICA9IChoID4+IDI0KSAmIDB4ZmY7XG4gIHhbaSsxXSA9IChoID4+IDE2KSAmIDB4ZmY7XG4gIHhbaSsyXSA9IChoID4+ICA4KSAmIDB4ZmY7XG4gIHhbaSszXSA9IGggJiAweGZmO1xuICB4W2krNF0gPSAobCA+PiAyNCkgICYgMHhmZjtcbiAgeFtpKzVdID0gKGwgPj4gMTYpICAmIDB4ZmY7XG4gIHhbaSs2XSA9IChsID4+ICA4KSAgJiAweGZmO1xuICB4W2krN10gPSBsICYgMHhmZjtcbn1cblxuZnVuY3Rpb24gdm4oeCwgeGksIHksIHlpLCBuKSB7XG4gIHZhciBpLGQgPSAwO1xuICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSBkIHw9IHhbeGkraV1eeVt5aStpXTtcbiAgcmV0dXJuICgxICYgKChkIC0gMSkgPj4+IDgpKSAtIDE7XG59XG5cbmZ1bmN0aW9uIGNyeXB0b192ZXJpZnlfMTYoeCwgeGksIHksIHlpKSB7XG4gIHJldHVybiB2bih4LHhpLHkseWksMTYpO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fdmVyaWZ5XzMyKHgsIHhpLCB5LCB5aSkge1xuICByZXR1cm4gdm4oeCx4aSx5LHlpLDMyKTtcbn1cblxuZnVuY3Rpb24gY29yZV9zYWxzYTIwKG8sIHAsIGssIGMpIHtcbiAgdmFyIGowICA9IGNbIDBdICYgMHhmZiB8IChjWyAxXSAmIDB4ZmYpPDw4IHwgKGNbIDJdICYgMHhmZik8PDE2IHwgKGNbIDNdICYgMHhmZik8PDI0LFxuICAgICAgajEgID0ga1sgMF0gJiAweGZmIHwgKGtbIDFdICYgMHhmZik8PDggfCAoa1sgMl0gJiAweGZmKTw8MTYgfCAoa1sgM10gJiAweGZmKTw8MjQsXG4gICAgICBqMiAgPSBrWyA0XSAmIDB4ZmYgfCAoa1sgNV0gJiAweGZmKTw8OCB8IChrWyA2XSAmIDB4ZmYpPDwxNiB8IChrWyA3XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGozICA9IGtbIDhdICYgMHhmZiB8IChrWyA5XSAmIDB4ZmYpPDw4IHwgKGtbMTBdICYgMHhmZik8PDE2IHwgKGtbMTFdICYgMHhmZik8PDI0LFxuICAgICAgajQgID0ga1sxMl0gJiAweGZmIHwgKGtbMTNdICYgMHhmZik8PDggfCAoa1sxNF0gJiAweGZmKTw8MTYgfCAoa1sxNV0gJiAweGZmKTw8MjQsXG4gICAgICBqNSAgPSBjWyA0XSAmIDB4ZmYgfCAoY1sgNV0gJiAweGZmKTw8OCB8IChjWyA2XSAmIDB4ZmYpPDwxNiB8IChjWyA3XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGo2ICA9IHBbIDBdICYgMHhmZiB8IChwWyAxXSAmIDB4ZmYpPDw4IHwgKHBbIDJdICYgMHhmZik8PDE2IHwgKHBbIDNdICYgMHhmZik8PDI0LFxuICAgICAgajcgID0gcFsgNF0gJiAweGZmIHwgKHBbIDVdICYgMHhmZik8PDggfCAocFsgNl0gJiAweGZmKTw8MTYgfCAocFsgN10gJiAweGZmKTw8MjQsXG4gICAgICBqOCAgPSBwWyA4XSAmIDB4ZmYgfCAocFsgOV0gJiAweGZmKTw8OCB8IChwWzEwXSAmIDB4ZmYpPDwxNiB8IChwWzExXSAmIDB4ZmYpPDwyNCxcbiAgICAgIGo5ICA9IHBbMTJdICYgMHhmZiB8IChwWzEzXSAmIDB4ZmYpPDw4IHwgKHBbMTRdICYgMHhmZik8PDE2IHwgKHBbMTVdICYgMHhmZik8PDI0LFxuICAgICAgajEwID0gY1sgOF0gJiAweGZmIHwgKGNbIDldICYgMHhmZik8PDggfCAoY1sxMF0gJiAweGZmKTw8MTYgfCAoY1sxMV0gJiAweGZmKTw8MjQsXG4gICAgICBqMTEgPSBrWzE2XSAmIDB4ZmYgfCAoa1sxN10gJiAweGZmKTw8OCB8IChrWzE4XSAmIDB4ZmYpPDwxNiB8IChrWzE5XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGoxMiA9IGtbMjBdICYgMHhmZiB8IChrWzIxXSAmIDB4ZmYpPDw4IHwgKGtbMjJdICYgMHhmZik8PDE2IHwgKGtbMjNdICYgMHhmZik8PDI0LFxuICAgICAgajEzID0ga1syNF0gJiAweGZmIHwgKGtbMjVdICYgMHhmZik8PDggfCAoa1syNl0gJiAweGZmKTw8MTYgfCAoa1syN10gJiAweGZmKTw8MjQsXG4gICAgICBqMTQgPSBrWzI4XSAmIDB4ZmYgfCAoa1syOV0gJiAweGZmKTw8OCB8IChrWzMwXSAmIDB4ZmYpPDwxNiB8IChrWzMxXSAmIDB4ZmYpPDwyNCxcbiAgICAgIGoxNSA9IGNbMTJdICYgMHhmZiB8IChjWzEzXSAmIDB4ZmYpPDw4IHwgKGNbMTRdICYgMHhmZik8PDE2IHwgKGNbMTVdICYgMHhmZik8PDI0O1xuXG4gIHZhciB4MCA9IGowLCB4MSA9IGoxLCB4MiA9IGoyLCB4MyA9IGozLCB4NCA9IGo0LCB4NSA9IGo1LCB4NiA9IGo2LCB4NyA9IGo3LFxuICAgICAgeDggPSBqOCwgeDkgPSBqOSwgeDEwID0gajEwLCB4MTEgPSBqMTEsIHgxMiA9IGoxMiwgeDEzID0gajEzLCB4MTQgPSBqMTQsXG4gICAgICB4MTUgPSBqMTUsIHU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyMDsgaSArPSAyKSB7XG4gICAgdSA9IHgwICsgeDEyIHwgMDtcbiAgICB4NCBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDQgKyB4MCB8IDA7XG4gICAgeDggXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHg4ICsgeDQgfCAwO1xuICAgIHgxMiBePSB1PDwxMyB8IHU+Pj4oMzItMTMpO1xuICAgIHUgPSB4MTIgKyB4OCB8IDA7XG4gICAgeDAgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcblxuICAgIHUgPSB4NSArIHgxIHwgMDtcbiAgICB4OSBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDkgKyB4NSB8IDA7XG4gICAgeDEzIF49IHU8PDkgfCB1Pj4+KDMyLTkpO1xuICAgIHUgPSB4MTMgKyB4OSB8IDA7XG4gICAgeDEgXj0gdTw8MTMgfCB1Pj4+KDMyLTEzKTtcbiAgICB1ID0geDEgKyB4MTMgfCAwO1xuICAgIHg1IF49IHU8PDE4IHwgdT4+PigzMi0xOCk7XG5cbiAgICB1ID0geDEwICsgeDYgfCAwO1xuICAgIHgxNCBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDE0ICsgeDEwIHwgMDtcbiAgICB4MiBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDIgKyB4MTQgfCAwO1xuICAgIHg2IF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHg2ICsgeDIgfCAwO1xuICAgIHgxMCBePSB1PDwxOCB8IHU+Pj4oMzItMTgpO1xuXG4gICAgdSA9IHgxNSArIHgxMSB8IDA7XG4gICAgeDMgXj0gdTw8NyB8IHU+Pj4oMzItNyk7XG4gICAgdSA9IHgzICsgeDE1IHwgMDtcbiAgICB4NyBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDcgKyB4MyB8IDA7XG4gICAgeDExIF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHgxMSArIHg3IHwgMDtcbiAgICB4MTUgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcblxuICAgIHUgPSB4MCArIHgzIHwgMDtcbiAgICB4MSBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDEgKyB4MCB8IDA7XG4gICAgeDIgXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHgyICsgeDEgfCAwO1xuICAgIHgzIF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHgzICsgeDIgfCAwO1xuICAgIHgwIF49IHU8PDE4IHwgdT4+PigzMi0xOCk7XG5cbiAgICB1ID0geDUgKyB4NCB8IDA7XG4gICAgeDYgXj0gdTw8NyB8IHU+Pj4oMzItNyk7XG4gICAgdSA9IHg2ICsgeDUgfCAwO1xuICAgIHg3IF49IHU8PDkgfCB1Pj4+KDMyLTkpO1xuICAgIHUgPSB4NyArIHg2IHwgMDtcbiAgICB4NCBePSB1PDwxMyB8IHU+Pj4oMzItMTMpO1xuICAgIHUgPSB4NCArIHg3IHwgMDtcbiAgICB4NSBePSB1PDwxOCB8IHU+Pj4oMzItMTgpO1xuXG4gICAgdSA9IHgxMCArIHg5IHwgMDtcbiAgICB4MTEgXj0gdTw8NyB8IHU+Pj4oMzItNyk7XG4gICAgdSA9IHgxMSArIHgxMCB8IDA7XG4gICAgeDggXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHg4ICsgeDExIHwgMDtcbiAgICB4OSBePSB1PDwxMyB8IHU+Pj4oMzItMTMpO1xuICAgIHUgPSB4OSArIHg4IHwgMDtcbiAgICB4MTAgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcblxuICAgIHUgPSB4MTUgKyB4MTQgfCAwO1xuICAgIHgxMiBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDEyICsgeDE1IHwgMDtcbiAgICB4MTMgXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHgxMyArIHgxMiB8IDA7XG4gICAgeDE0IF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHgxNCArIHgxMyB8IDA7XG4gICAgeDE1IF49IHU8PDE4IHwgdT4+PigzMi0xOCk7XG4gIH1cbiAgIHgwID0gIHgwICsgIGowIHwgMDtcbiAgIHgxID0gIHgxICsgIGoxIHwgMDtcbiAgIHgyID0gIHgyICsgIGoyIHwgMDtcbiAgIHgzID0gIHgzICsgIGozIHwgMDtcbiAgIHg0ID0gIHg0ICsgIGo0IHwgMDtcbiAgIHg1ID0gIHg1ICsgIGo1IHwgMDtcbiAgIHg2ID0gIHg2ICsgIGo2IHwgMDtcbiAgIHg3ID0gIHg3ICsgIGo3IHwgMDtcbiAgIHg4ID0gIHg4ICsgIGo4IHwgMDtcbiAgIHg5ID0gIHg5ICsgIGo5IHwgMDtcbiAgeDEwID0geDEwICsgajEwIHwgMDtcbiAgeDExID0geDExICsgajExIHwgMDtcbiAgeDEyID0geDEyICsgajEyIHwgMDtcbiAgeDEzID0geDEzICsgajEzIHwgMDtcbiAgeDE0ID0geDE0ICsgajE0IHwgMDtcbiAgeDE1ID0geDE1ICsgajE1IHwgMDtcblxuICBvWyAwXSA9IHgwID4+PiAgMCAmIDB4ZmY7XG4gIG9bIDFdID0geDAgPj4+ICA4ICYgMHhmZjtcbiAgb1sgMl0gPSB4MCA+Pj4gMTYgJiAweGZmO1xuICBvWyAzXSA9IHgwID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1sgNF0gPSB4MSA+Pj4gIDAgJiAweGZmO1xuICBvWyA1XSA9IHgxID4+PiAgOCAmIDB4ZmY7XG4gIG9bIDZdID0geDEgPj4+IDE2ICYgMHhmZjtcbiAgb1sgN10gPSB4MSA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bIDhdID0geDIgPj4+ICAwICYgMHhmZjtcbiAgb1sgOV0gPSB4MiA+Pj4gIDggJiAweGZmO1xuICBvWzEwXSA9IHgyID4+PiAxNiAmIDB4ZmY7XG4gIG9bMTFdID0geDIgPj4+IDI0ICYgMHhmZjtcblxuICBvWzEyXSA9IHgzID4+PiAgMCAmIDB4ZmY7XG4gIG9bMTNdID0geDMgPj4+ICA4ICYgMHhmZjtcbiAgb1sxNF0gPSB4MyA+Pj4gMTYgJiAweGZmO1xuICBvWzE1XSA9IHgzID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1sxNl0gPSB4NCA+Pj4gIDAgJiAweGZmO1xuICBvWzE3XSA9IHg0ID4+PiAgOCAmIDB4ZmY7XG4gIG9bMThdID0geDQgPj4+IDE2ICYgMHhmZjtcbiAgb1sxOV0gPSB4NCA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bMjBdID0geDUgPj4+ICAwICYgMHhmZjtcbiAgb1syMV0gPSB4NSA+Pj4gIDggJiAweGZmO1xuICBvWzIyXSA9IHg1ID4+PiAxNiAmIDB4ZmY7XG4gIG9bMjNdID0geDUgPj4+IDI0ICYgMHhmZjtcblxuICBvWzI0XSA9IHg2ID4+PiAgMCAmIDB4ZmY7XG4gIG9bMjVdID0geDYgPj4+ICA4ICYgMHhmZjtcbiAgb1syNl0gPSB4NiA+Pj4gMTYgJiAweGZmO1xuICBvWzI3XSA9IHg2ID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1syOF0gPSB4NyA+Pj4gIDAgJiAweGZmO1xuICBvWzI5XSA9IHg3ID4+PiAgOCAmIDB4ZmY7XG4gIG9bMzBdID0geDcgPj4+IDE2ICYgMHhmZjtcbiAgb1szMV0gPSB4NyA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bMzJdID0geDggPj4+ICAwICYgMHhmZjtcbiAgb1szM10gPSB4OCA+Pj4gIDggJiAweGZmO1xuICBvWzM0XSA9IHg4ID4+PiAxNiAmIDB4ZmY7XG4gIG9bMzVdID0geDggPj4+IDI0ICYgMHhmZjtcblxuICBvWzM2XSA9IHg5ID4+PiAgMCAmIDB4ZmY7XG4gIG9bMzddID0geDkgPj4+ICA4ICYgMHhmZjtcbiAgb1szOF0gPSB4OSA+Pj4gMTYgJiAweGZmO1xuICBvWzM5XSA9IHg5ID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1s0MF0gPSB4MTAgPj4+ICAwICYgMHhmZjtcbiAgb1s0MV0gPSB4MTAgPj4+ICA4ICYgMHhmZjtcbiAgb1s0Ml0gPSB4MTAgPj4+IDE2ICYgMHhmZjtcbiAgb1s0M10gPSB4MTAgPj4+IDI0ICYgMHhmZjtcblxuICBvWzQ0XSA9IHgxMSA+Pj4gIDAgJiAweGZmO1xuICBvWzQ1XSA9IHgxMSA+Pj4gIDggJiAweGZmO1xuICBvWzQ2XSA9IHgxMSA+Pj4gMTYgJiAweGZmO1xuICBvWzQ3XSA9IHgxMSA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bNDhdID0geDEyID4+PiAgMCAmIDB4ZmY7XG4gIG9bNDldID0geDEyID4+PiAgOCAmIDB4ZmY7XG4gIG9bNTBdID0geDEyID4+PiAxNiAmIDB4ZmY7XG4gIG9bNTFdID0geDEyID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1s1Ml0gPSB4MTMgPj4+ICAwICYgMHhmZjtcbiAgb1s1M10gPSB4MTMgPj4+ICA4ICYgMHhmZjtcbiAgb1s1NF0gPSB4MTMgPj4+IDE2ICYgMHhmZjtcbiAgb1s1NV0gPSB4MTMgPj4+IDI0ICYgMHhmZjtcblxuICBvWzU2XSA9IHgxNCA+Pj4gIDAgJiAweGZmO1xuICBvWzU3XSA9IHgxNCA+Pj4gIDggJiAweGZmO1xuICBvWzU4XSA9IHgxNCA+Pj4gMTYgJiAweGZmO1xuICBvWzU5XSA9IHgxNCA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bNjBdID0geDE1ID4+PiAgMCAmIDB4ZmY7XG4gIG9bNjFdID0geDE1ID4+PiAgOCAmIDB4ZmY7XG4gIG9bNjJdID0geDE1ID4+PiAxNiAmIDB4ZmY7XG4gIG9bNjNdID0geDE1ID4+PiAyNCAmIDB4ZmY7XG59XG5cbmZ1bmN0aW9uIGNvcmVfaHNhbHNhMjAobyxwLGssYykge1xuICB2YXIgajAgID0gY1sgMF0gJiAweGZmIHwgKGNbIDFdICYgMHhmZik8PDggfCAoY1sgMl0gJiAweGZmKTw8MTYgfCAoY1sgM10gJiAweGZmKTw8MjQsXG4gICAgICBqMSAgPSBrWyAwXSAmIDB4ZmYgfCAoa1sgMV0gJiAweGZmKTw8OCB8IChrWyAyXSAmIDB4ZmYpPDwxNiB8IChrWyAzXSAmIDB4ZmYpPDwyNCxcbiAgICAgIGoyICA9IGtbIDRdICYgMHhmZiB8IChrWyA1XSAmIDB4ZmYpPDw4IHwgKGtbIDZdICYgMHhmZik8PDE2IHwgKGtbIDddICYgMHhmZik8PDI0LFxuICAgICAgajMgID0ga1sgOF0gJiAweGZmIHwgKGtbIDldICYgMHhmZik8PDggfCAoa1sxMF0gJiAweGZmKTw8MTYgfCAoa1sxMV0gJiAweGZmKTw8MjQsXG4gICAgICBqNCAgPSBrWzEyXSAmIDB4ZmYgfCAoa1sxM10gJiAweGZmKTw8OCB8IChrWzE0XSAmIDB4ZmYpPDwxNiB8IChrWzE1XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGo1ICA9IGNbIDRdICYgMHhmZiB8IChjWyA1XSAmIDB4ZmYpPDw4IHwgKGNbIDZdICYgMHhmZik8PDE2IHwgKGNbIDddICYgMHhmZik8PDI0LFxuICAgICAgajYgID0gcFsgMF0gJiAweGZmIHwgKHBbIDFdICYgMHhmZik8PDggfCAocFsgMl0gJiAweGZmKTw8MTYgfCAocFsgM10gJiAweGZmKTw8MjQsXG4gICAgICBqNyAgPSBwWyA0XSAmIDB4ZmYgfCAocFsgNV0gJiAweGZmKTw8OCB8IChwWyA2XSAmIDB4ZmYpPDwxNiB8IChwWyA3XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGo4ICA9IHBbIDhdICYgMHhmZiB8IChwWyA5XSAmIDB4ZmYpPDw4IHwgKHBbMTBdICYgMHhmZik8PDE2IHwgKHBbMTFdICYgMHhmZik8PDI0LFxuICAgICAgajkgID0gcFsxMl0gJiAweGZmIHwgKHBbMTNdICYgMHhmZik8PDggfCAocFsxNF0gJiAweGZmKTw8MTYgfCAocFsxNV0gJiAweGZmKTw8MjQsXG4gICAgICBqMTAgPSBjWyA4XSAmIDB4ZmYgfCAoY1sgOV0gJiAweGZmKTw8OCB8IChjWzEwXSAmIDB4ZmYpPDwxNiB8IChjWzExXSAmIDB4ZmYpPDwyNCxcbiAgICAgIGoxMSA9IGtbMTZdICYgMHhmZiB8IChrWzE3XSAmIDB4ZmYpPDw4IHwgKGtbMThdICYgMHhmZik8PDE2IHwgKGtbMTldICYgMHhmZik8PDI0LFxuICAgICAgajEyID0ga1syMF0gJiAweGZmIHwgKGtbMjFdICYgMHhmZik8PDggfCAoa1syMl0gJiAweGZmKTw8MTYgfCAoa1syM10gJiAweGZmKTw8MjQsXG4gICAgICBqMTMgPSBrWzI0XSAmIDB4ZmYgfCAoa1syNV0gJiAweGZmKTw8OCB8IChrWzI2XSAmIDB4ZmYpPDwxNiB8IChrWzI3XSAmIDB4ZmYpPDwyNCxcbiAgICAgIGoxNCA9IGtbMjhdICYgMHhmZiB8IChrWzI5XSAmIDB4ZmYpPDw4IHwgKGtbMzBdICYgMHhmZik8PDE2IHwgKGtbMzFdICYgMHhmZik8PDI0LFxuICAgICAgajE1ID0gY1sxMl0gJiAweGZmIHwgKGNbMTNdICYgMHhmZik8PDggfCAoY1sxNF0gJiAweGZmKTw8MTYgfCAoY1sxNV0gJiAweGZmKTw8MjQ7XG5cbiAgdmFyIHgwID0gajAsIHgxID0gajEsIHgyID0gajIsIHgzID0gajMsIHg0ID0gajQsIHg1ID0gajUsIHg2ID0gajYsIHg3ID0gajcsXG4gICAgICB4OCA9IGo4LCB4OSA9IGo5LCB4MTAgPSBqMTAsIHgxMSA9IGoxMSwgeDEyID0gajEyLCB4MTMgPSBqMTMsIHgxNCA9IGoxNCxcbiAgICAgIHgxNSA9IGoxNSwgdTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyBpICs9IDIpIHtcbiAgICB1ID0geDAgKyB4MTIgfCAwO1xuICAgIHg0IF49IHU8PDcgfCB1Pj4+KDMyLTcpO1xuICAgIHUgPSB4NCArIHgwIHwgMDtcbiAgICB4OCBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDggKyB4NCB8IDA7XG4gICAgeDEyIF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHgxMiArIHg4IHwgMDtcbiAgICB4MCBePSB1PDwxOCB8IHU+Pj4oMzItMTgpO1xuXG4gICAgdSA9IHg1ICsgeDEgfCAwO1xuICAgIHg5IF49IHU8PDcgfCB1Pj4+KDMyLTcpO1xuICAgIHUgPSB4OSArIHg1IHwgMDtcbiAgICB4MTMgXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHgxMyArIHg5IHwgMDtcbiAgICB4MSBePSB1PDwxMyB8IHU+Pj4oMzItMTMpO1xuICAgIHUgPSB4MSArIHgxMyB8IDA7XG4gICAgeDUgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcblxuICAgIHUgPSB4MTAgKyB4NiB8IDA7XG4gICAgeDE0IF49IHU8PDcgfCB1Pj4+KDMyLTcpO1xuICAgIHUgPSB4MTQgKyB4MTAgfCAwO1xuICAgIHgyIF49IHU8PDkgfCB1Pj4+KDMyLTkpO1xuICAgIHUgPSB4MiArIHgxNCB8IDA7XG4gICAgeDYgXj0gdTw8MTMgfCB1Pj4+KDMyLTEzKTtcbiAgICB1ID0geDYgKyB4MiB8IDA7XG4gICAgeDEwIF49IHU8PDE4IHwgdT4+PigzMi0xOCk7XG5cbiAgICB1ID0geDE1ICsgeDExIHwgMDtcbiAgICB4MyBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDMgKyB4MTUgfCAwO1xuICAgIHg3IF49IHU8PDkgfCB1Pj4+KDMyLTkpO1xuICAgIHUgPSB4NyArIHgzIHwgMDtcbiAgICB4MTEgXj0gdTw8MTMgfCB1Pj4+KDMyLTEzKTtcbiAgICB1ID0geDExICsgeDcgfCAwO1xuICAgIHgxNSBePSB1PDwxOCB8IHU+Pj4oMzItMTgpO1xuXG4gICAgdSA9IHgwICsgeDMgfCAwO1xuICAgIHgxIF49IHU8PDcgfCB1Pj4+KDMyLTcpO1xuICAgIHUgPSB4MSArIHgwIHwgMDtcbiAgICB4MiBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDIgKyB4MSB8IDA7XG4gICAgeDMgXj0gdTw8MTMgfCB1Pj4+KDMyLTEzKTtcbiAgICB1ID0geDMgKyB4MiB8IDA7XG4gICAgeDAgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcblxuICAgIHUgPSB4NSArIHg0IHwgMDtcbiAgICB4NiBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDYgKyB4NSB8IDA7XG4gICAgeDcgXj0gdTw8OSB8IHU+Pj4oMzItOSk7XG4gICAgdSA9IHg3ICsgeDYgfCAwO1xuICAgIHg0IF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHg0ICsgeDcgfCAwO1xuICAgIHg1IF49IHU8PDE4IHwgdT4+PigzMi0xOCk7XG5cbiAgICB1ID0geDEwICsgeDkgfCAwO1xuICAgIHgxMSBePSB1PDw3IHwgdT4+PigzMi03KTtcbiAgICB1ID0geDExICsgeDEwIHwgMDtcbiAgICB4OCBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDggKyB4MTEgfCAwO1xuICAgIHg5IF49IHU8PDEzIHwgdT4+PigzMi0xMyk7XG4gICAgdSA9IHg5ICsgeDggfCAwO1xuICAgIHgxMCBePSB1PDwxOCB8IHU+Pj4oMzItMTgpO1xuXG4gICAgdSA9IHgxNSArIHgxNCB8IDA7XG4gICAgeDEyIF49IHU8PDcgfCB1Pj4+KDMyLTcpO1xuICAgIHUgPSB4MTIgKyB4MTUgfCAwO1xuICAgIHgxMyBePSB1PDw5IHwgdT4+PigzMi05KTtcbiAgICB1ID0geDEzICsgeDEyIHwgMDtcbiAgICB4MTQgXj0gdTw8MTMgfCB1Pj4+KDMyLTEzKTtcbiAgICB1ID0geDE0ICsgeDEzIHwgMDtcbiAgICB4MTUgXj0gdTw8MTggfCB1Pj4+KDMyLTE4KTtcbiAgfVxuXG4gIG9bIDBdID0geDAgPj4+ICAwICYgMHhmZjtcbiAgb1sgMV0gPSB4MCA+Pj4gIDggJiAweGZmO1xuICBvWyAyXSA9IHgwID4+PiAxNiAmIDB4ZmY7XG4gIG9bIDNdID0geDAgPj4+IDI0ICYgMHhmZjtcblxuICBvWyA0XSA9IHg1ID4+PiAgMCAmIDB4ZmY7XG4gIG9bIDVdID0geDUgPj4+ICA4ICYgMHhmZjtcbiAgb1sgNl0gPSB4NSA+Pj4gMTYgJiAweGZmO1xuICBvWyA3XSA9IHg1ID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1sgOF0gPSB4MTAgPj4+ICAwICYgMHhmZjtcbiAgb1sgOV0gPSB4MTAgPj4+ICA4ICYgMHhmZjtcbiAgb1sxMF0gPSB4MTAgPj4+IDE2ICYgMHhmZjtcbiAgb1sxMV0gPSB4MTAgPj4+IDI0ICYgMHhmZjtcblxuICBvWzEyXSA9IHgxNSA+Pj4gIDAgJiAweGZmO1xuICBvWzEzXSA9IHgxNSA+Pj4gIDggJiAweGZmO1xuICBvWzE0XSA9IHgxNSA+Pj4gMTYgJiAweGZmO1xuICBvWzE1XSA9IHgxNSA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bMTZdID0geDYgPj4+ICAwICYgMHhmZjtcbiAgb1sxN10gPSB4NiA+Pj4gIDggJiAweGZmO1xuICBvWzE4XSA9IHg2ID4+PiAxNiAmIDB4ZmY7XG4gIG9bMTldID0geDYgPj4+IDI0ICYgMHhmZjtcblxuICBvWzIwXSA9IHg3ID4+PiAgMCAmIDB4ZmY7XG4gIG9bMjFdID0geDcgPj4+ICA4ICYgMHhmZjtcbiAgb1syMl0gPSB4NyA+Pj4gMTYgJiAweGZmO1xuICBvWzIzXSA9IHg3ID4+PiAyNCAmIDB4ZmY7XG5cbiAgb1syNF0gPSB4OCA+Pj4gIDAgJiAweGZmO1xuICBvWzI1XSA9IHg4ID4+PiAgOCAmIDB4ZmY7XG4gIG9bMjZdID0geDggPj4+IDE2ICYgMHhmZjtcbiAgb1syN10gPSB4OCA+Pj4gMjQgJiAweGZmO1xuXG4gIG9bMjhdID0geDkgPj4+ICAwICYgMHhmZjtcbiAgb1syOV0gPSB4OSA+Pj4gIDggJiAweGZmO1xuICBvWzMwXSA9IHg5ID4+PiAxNiAmIDB4ZmY7XG4gIG9bMzFdID0geDkgPj4+IDI0ICYgMHhmZjtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX2NvcmVfc2Fsc2EyMChvdXQsaW5wLGssYykge1xuICBjb3JlX3NhbHNhMjAob3V0LGlucCxrLGMpO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fY29yZV9oc2Fsc2EyMChvdXQsaW5wLGssYykge1xuICBjb3JlX2hzYWxzYTIwKG91dCxpbnAsayxjKTtcbn1cblxudmFyIHNpZ21hID0gbmV3IFVpbnQ4QXJyYXkoWzEwMSwgMTIwLCAxMTIsIDk3LCAxMTAsIDEwMCwgMzIsIDUxLCA1MCwgNDUsIDk4LCAxMjEsIDExNiwgMTAxLCAzMiwgMTA3XSk7XG4gICAgICAgICAgICAvLyBcImV4cGFuZCAzMi1ieXRlIGtcIlxuXG5mdW5jdGlvbiBjcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yKGMsY3BvcyxtLG1wb3MsYixuLGspIHtcbiAgdmFyIHogPSBuZXcgVWludDhBcnJheSgxNiksIHggPSBuZXcgVWludDhBcnJheSg2NCk7XG4gIHZhciB1LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeltpXSA9IDA7XG4gIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHpbaV0gPSBuW2ldO1xuICB3aGlsZSAoYiA+PSA2NCkge1xuICAgIGNyeXB0b19jb3JlX3NhbHNhMjAoeCx6LGssc2lnbWEpO1xuICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSBjW2Nwb3MraV0gPSBtW21wb3MraV0gXiB4W2ldO1xuICAgIHUgPSAxO1xuICAgIGZvciAoaSA9IDg7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB1ID0gdSArICh6W2ldICYgMHhmZikgfCAwO1xuICAgICAgeltpXSA9IHUgJiAweGZmO1xuICAgICAgdSA+Pj49IDg7XG4gICAgfVxuICAgIGIgLT0gNjQ7XG4gICAgY3BvcyArPSA2NDtcbiAgICBtcG9zICs9IDY0O1xuICB9XG4gIGlmIChiID4gMCkge1xuICAgIGNyeXB0b19jb3JlX3NhbHNhMjAoeCx6LGssc2lnbWEpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIGNbY3BvcytpXSA9IG1bbXBvcytpXSBeIHhbaV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGNyeXB0b19zdHJlYW1fc2Fsc2EyMChjLGNwb3MsYixuLGspIHtcbiAgdmFyIHogPSBuZXcgVWludDhBcnJheSgxNiksIHggPSBuZXcgVWludDhBcnJheSg2NCk7XG4gIHZhciB1LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeltpXSA9IDA7XG4gIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHpbaV0gPSBuW2ldO1xuICB3aGlsZSAoYiA+PSA2NCkge1xuICAgIGNyeXB0b19jb3JlX3NhbHNhMjAoeCx6LGssc2lnbWEpO1xuICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSBjW2Nwb3MraV0gPSB4W2ldO1xuICAgIHUgPSAxO1xuICAgIGZvciAoaSA9IDg7IGkgPCAxNjsgaSsrKSB7XG4gICAgICB1ID0gdSArICh6W2ldICYgMHhmZikgfCAwO1xuICAgICAgeltpXSA9IHUgJiAweGZmO1xuICAgICAgdSA+Pj49IDg7XG4gICAgfVxuICAgIGIgLT0gNjQ7XG4gICAgY3BvcyArPSA2NDtcbiAgfVxuICBpZiAoYiA+IDApIHtcbiAgICBjcnlwdG9fY29yZV9zYWxzYTIwKHgseixrLHNpZ21hKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSBjW2Nwb3MraV0gPSB4W2ldO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fc3RyZWFtKGMsY3BvcyxkLG4saykge1xuICB2YXIgcyA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgY3J5cHRvX2NvcmVfaHNhbHNhMjAocyxuLGssc2lnbWEpO1xuICB2YXIgc24gPSBuZXcgVWludDhBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHNuW2ldID0gbltpKzE2XTtcbiAgcmV0dXJuIGNyeXB0b19zdHJlYW1fc2Fsc2EyMChjLGNwb3MsZCxzbixzKTtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX3N0cmVhbV94b3IoYyxjcG9zLG0sbXBvcyxkLG4saykge1xuICB2YXIgcyA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgY3J5cHRvX2NvcmVfaHNhbHNhMjAocyxuLGssc2lnbWEpO1xuICB2YXIgc24gPSBuZXcgVWludDhBcnJheSg4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHNuW2ldID0gbltpKzE2XTtcbiAgcmV0dXJuIGNyeXB0b19zdHJlYW1fc2Fsc2EyMF94b3IoYyxjcG9zLG0sbXBvcyxkLHNuLHMpO1xufVxuXG4vKlxuKiBQb3J0IG9mIEFuZHJldyBNb29uJ3MgUG9seTEzMDUtZG9ubmEtMTYuIFB1YmxpYyBkb21haW4uXG4qIGh0dHBzOi8vZ2l0aHViLmNvbS9mbG9vZHliZXJyeS9wb2x5MTMwNS1kb25uYVxuKi9cblxudmFyIHBvbHkxMzA1ID0gZnVuY3Rpb24oa2V5KSB7XG4gIHRoaXMuYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICB0aGlzLnIgPSBuZXcgVWludDE2QXJyYXkoMTApO1xuICB0aGlzLmggPSBuZXcgVWludDE2QXJyYXkoMTApO1xuICB0aGlzLnBhZCA9IG5ldyBVaW50MTZBcnJheSg4KTtcbiAgdGhpcy5sZWZ0b3ZlciA9IDA7XG4gIHRoaXMuZmluID0gMDtcblxuICB2YXIgdDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3O1xuXG4gIHQwID0ga2V5WyAwXSAmIDB4ZmYgfCAoa2V5WyAxXSAmIDB4ZmYpIDw8IDg7IHRoaXMuclswXSA9ICggdDAgICAgICAgICAgICAgICAgICAgICApICYgMHgxZmZmO1xuICB0MSA9IGtleVsgMl0gJiAweGZmIHwgKGtleVsgM10gJiAweGZmKSA8PCA4OyB0aGlzLnJbMV0gPSAoKHQwID4+PiAxMykgfCAodDEgPDwgIDMpKSAmIDB4MWZmZjtcbiAgdDIgPSBrZXlbIDRdICYgMHhmZiB8IChrZXlbIDVdICYgMHhmZikgPDwgODsgdGhpcy5yWzJdID0gKCh0MSA+Pj4gMTApIHwgKHQyIDw8ICA2KSkgJiAweDFmMDM7XG4gIHQzID0ga2V5WyA2XSAmIDB4ZmYgfCAoa2V5WyA3XSAmIDB4ZmYpIDw8IDg7IHRoaXMuclszXSA9ICgodDIgPj4+ICA3KSB8ICh0MyA8PCAgOSkpICYgMHgxZmZmO1xuICB0NCA9IGtleVsgOF0gJiAweGZmIHwgKGtleVsgOV0gJiAweGZmKSA8PCA4OyB0aGlzLnJbNF0gPSAoKHQzID4+PiAgNCkgfCAodDQgPDwgMTIpKSAmIDB4MDBmZjtcbiAgdGhpcy5yWzVdID0gKCh0NCA+Pj4gIDEpKSAmIDB4MWZmZTtcbiAgdDUgPSBrZXlbMTBdICYgMHhmZiB8IChrZXlbMTFdICYgMHhmZikgPDwgODsgdGhpcy5yWzZdID0gKCh0NCA+Pj4gMTQpIHwgKHQ1IDw8ICAyKSkgJiAweDFmZmY7XG4gIHQ2ID0ga2V5WzEyXSAmIDB4ZmYgfCAoa2V5WzEzXSAmIDB4ZmYpIDw8IDg7IHRoaXMucls3XSA9ICgodDUgPj4+IDExKSB8ICh0NiA8PCAgNSkpICYgMHgxZjgxO1xuICB0NyA9IGtleVsxNF0gJiAweGZmIHwgKGtleVsxNV0gJiAweGZmKSA8PCA4OyB0aGlzLnJbOF0gPSAoKHQ2ID4+PiAgOCkgfCAodDcgPDwgIDgpKSAmIDB4MWZmZjtcbiAgdGhpcy5yWzldID0gKCh0NyA+Pj4gIDUpKSAmIDB4MDA3ZjtcblxuICB0aGlzLnBhZFswXSA9IGtleVsxNl0gJiAweGZmIHwgKGtleVsxN10gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFsxXSA9IGtleVsxOF0gJiAweGZmIHwgKGtleVsxOV0gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFsyXSA9IGtleVsyMF0gJiAweGZmIHwgKGtleVsyMV0gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFszXSA9IGtleVsyMl0gJiAweGZmIHwgKGtleVsyM10gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFs0XSA9IGtleVsyNF0gJiAweGZmIHwgKGtleVsyNV0gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFs1XSA9IGtleVsyNl0gJiAweGZmIHwgKGtleVsyN10gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFs2XSA9IGtleVsyOF0gJiAweGZmIHwgKGtleVsyOV0gJiAweGZmKSA8PCA4O1xuICB0aGlzLnBhZFs3XSA9IGtleVszMF0gJiAweGZmIHwgKGtleVszMV0gJiAweGZmKSA8PCA4O1xufTtcblxucG9seTEzMDUucHJvdG90eXBlLmJsb2NrcyA9IGZ1bmN0aW9uKG0sIG1wb3MsIGJ5dGVzKSB7XG4gIHZhciBoaWJpdCA9IHRoaXMuZmluID8gMCA6ICgxIDw8IDExKTtcbiAgdmFyIHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgYztcbiAgdmFyIGQwLCBkMSwgZDIsIGQzLCBkNCwgZDUsIGQ2LCBkNywgZDgsIGQ5O1xuXG4gIHZhciBoMCA9IHRoaXMuaFswXSxcbiAgICAgIGgxID0gdGhpcy5oWzFdLFxuICAgICAgaDIgPSB0aGlzLmhbMl0sXG4gICAgICBoMyA9IHRoaXMuaFszXSxcbiAgICAgIGg0ID0gdGhpcy5oWzRdLFxuICAgICAgaDUgPSB0aGlzLmhbNV0sXG4gICAgICBoNiA9IHRoaXMuaFs2XSxcbiAgICAgIGg3ID0gdGhpcy5oWzddLFxuICAgICAgaDggPSB0aGlzLmhbOF0sXG4gICAgICBoOSA9IHRoaXMuaFs5XTtcblxuICB2YXIgcjAgPSB0aGlzLnJbMF0sXG4gICAgICByMSA9IHRoaXMuclsxXSxcbiAgICAgIHIyID0gdGhpcy5yWzJdLFxuICAgICAgcjMgPSB0aGlzLnJbM10sXG4gICAgICByNCA9IHRoaXMucls0XSxcbiAgICAgIHI1ID0gdGhpcy5yWzVdLFxuICAgICAgcjYgPSB0aGlzLnJbNl0sXG4gICAgICByNyA9IHRoaXMucls3XSxcbiAgICAgIHI4ID0gdGhpcy5yWzhdLFxuICAgICAgcjkgPSB0aGlzLnJbOV07XG5cbiAgd2hpbGUgKGJ5dGVzID49IDE2KSB7XG4gICAgdDAgPSBtW21wb3MrIDBdICYgMHhmZiB8IChtW21wb3MrIDFdICYgMHhmZikgPDwgODsgaDAgKz0gKCB0MCAgICAgICAgICAgICAgICAgICAgICkgJiAweDFmZmY7XG4gICAgdDEgPSBtW21wb3MrIDJdICYgMHhmZiB8IChtW21wb3MrIDNdICYgMHhmZikgPDwgODsgaDEgKz0gKCh0MCA+Pj4gMTMpIHwgKHQxIDw8ICAzKSkgJiAweDFmZmY7XG4gICAgdDIgPSBtW21wb3MrIDRdICYgMHhmZiB8IChtW21wb3MrIDVdICYgMHhmZikgPDwgODsgaDIgKz0gKCh0MSA+Pj4gMTApIHwgKHQyIDw8ICA2KSkgJiAweDFmZmY7XG4gICAgdDMgPSBtW21wb3MrIDZdICYgMHhmZiB8IChtW21wb3MrIDddICYgMHhmZikgPDwgODsgaDMgKz0gKCh0MiA+Pj4gIDcpIHwgKHQzIDw8ICA5KSkgJiAweDFmZmY7XG4gICAgdDQgPSBtW21wb3MrIDhdICYgMHhmZiB8IChtW21wb3MrIDldICYgMHhmZikgPDwgODsgaDQgKz0gKCh0MyA+Pj4gIDQpIHwgKHQ0IDw8IDEyKSkgJiAweDFmZmY7XG4gICAgaDUgKz0gKCh0NCA+Pj4gIDEpKSAmIDB4MWZmZjtcbiAgICB0NSA9IG1bbXBvcysxMF0gJiAweGZmIHwgKG1bbXBvcysxMV0gJiAweGZmKSA8PCA4OyBoNiArPSAoKHQ0ID4+PiAxNCkgfCAodDUgPDwgIDIpKSAmIDB4MWZmZjtcbiAgICB0NiA9IG1bbXBvcysxMl0gJiAweGZmIHwgKG1bbXBvcysxM10gJiAweGZmKSA8PCA4OyBoNyArPSAoKHQ1ID4+PiAxMSkgfCAodDYgPDwgIDUpKSAmIDB4MWZmZjtcbiAgICB0NyA9IG1bbXBvcysxNF0gJiAweGZmIHwgKG1bbXBvcysxNV0gJiAweGZmKSA8PCA4OyBoOCArPSAoKHQ2ID4+PiAgOCkgfCAodDcgPDwgIDgpKSAmIDB4MWZmZjtcbiAgICBoOSArPSAoKHQ3ID4+PiA1KSkgfCBoaWJpdDtcblxuICAgIGMgPSAwO1xuXG4gICAgZDAgPSBjO1xuICAgIGQwICs9IGgwICogcjA7XG4gICAgZDAgKz0gaDEgKiAoNSAqIHI5KTtcbiAgICBkMCArPSBoMiAqICg1ICogcjgpO1xuICAgIGQwICs9IGgzICogKDUgKiByNyk7XG4gICAgZDAgKz0gaDQgKiAoNSAqIHI2KTtcbiAgICBjID0gKGQwID4+PiAxMyk7IGQwICY9IDB4MWZmZjtcbiAgICBkMCArPSBoNSAqICg1ICogcjUpO1xuICAgIGQwICs9IGg2ICogKDUgKiByNCk7XG4gICAgZDAgKz0gaDcgKiAoNSAqIHIzKTtcbiAgICBkMCArPSBoOCAqICg1ICogcjIpO1xuICAgIGQwICs9IGg5ICogKDUgKiByMSk7XG4gICAgYyArPSAoZDAgPj4+IDEzKTsgZDAgJj0gMHgxZmZmO1xuXG4gICAgZDEgPSBjO1xuICAgIGQxICs9IGgwICogcjE7XG4gICAgZDEgKz0gaDEgKiByMDtcbiAgICBkMSArPSBoMiAqICg1ICogcjkpO1xuICAgIGQxICs9IGgzICogKDUgKiByOCk7XG4gICAgZDEgKz0gaDQgKiAoNSAqIHI3KTtcbiAgICBjID0gKGQxID4+PiAxMyk7IGQxICY9IDB4MWZmZjtcbiAgICBkMSArPSBoNSAqICg1ICogcjYpO1xuICAgIGQxICs9IGg2ICogKDUgKiByNSk7XG4gICAgZDEgKz0gaDcgKiAoNSAqIHI0KTtcbiAgICBkMSArPSBoOCAqICg1ICogcjMpO1xuICAgIGQxICs9IGg5ICogKDUgKiByMik7XG4gICAgYyArPSAoZDEgPj4+IDEzKTsgZDEgJj0gMHgxZmZmO1xuXG4gICAgZDIgPSBjO1xuICAgIGQyICs9IGgwICogcjI7XG4gICAgZDIgKz0gaDEgKiByMTtcbiAgICBkMiArPSBoMiAqIHIwO1xuICAgIGQyICs9IGgzICogKDUgKiByOSk7XG4gICAgZDIgKz0gaDQgKiAoNSAqIHI4KTtcbiAgICBjID0gKGQyID4+PiAxMyk7IGQyICY9IDB4MWZmZjtcbiAgICBkMiArPSBoNSAqICg1ICogcjcpO1xuICAgIGQyICs9IGg2ICogKDUgKiByNik7XG4gICAgZDIgKz0gaDcgKiAoNSAqIHI1KTtcbiAgICBkMiArPSBoOCAqICg1ICogcjQpO1xuICAgIGQyICs9IGg5ICogKDUgKiByMyk7XG4gICAgYyArPSAoZDIgPj4+IDEzKTsgZDIgJj0gMHgxZmZmO1xuXG4gICAgZDMgPSBjO1xuICAgIGQzICs9IGgwICogcjM7XG4gICAgZDMgKz0gaDEgKiByMjtcbiAgICBkMyArPSBoMiAqIHIxO1xuICAgIGQzICs9IGgzICogcjA7XG4gICAgZDMgKz0gaDQgKiAoNSAqIHI5KTtcbiAgICBjID0gKGQzID4+PiAxMyk7IGQzICY9IDB4MWZmZjtcbiAgICBkMyArPSBoNSAqICg1ICogcjgpO1xuICAgIGQzICs9IGg2ICogKDUgKiByNyk7XG4gICAgZDMgKz0gaDcgKiAoNSAqIHI2KTtcbiAgICBkMyArPSBoOCAqICg1ICogcjUpO1xuICAgIGQzICs9IGg5ICogKDUgKiByNCk7XG4gICAgYyArPSAoZDMgPj4+IDEzKTsgZDMgJj0gMHgxZmZmO1xuXG4gICAgZDQgPSBjO1xuICAgIGQ0ICs9IGgwICogcjQ7XG4gICAgZDQgKz0gaDEgKiByMztcbiAgICBkNCArPSBoMiAqIHIyO1xuICAgIGQ0ICs9IGgzICogcjE7XG4gICAgZDQgKz0gaDQgKiByMDtcbiAgICBjID0gKGQ0ID4+PiAxMyk7IGQ0ICY9IDB4MWZmZjtcbiAgICBkNCArPSBoNSAqICg1ICogcjkpO1xuICAgIGQ0ICs9IGg2ICogKDUgKiByOCk7XG4gICAgZDQgKz0gaDcgKiAoNSAqIHI3KTtcbiAgICBkNCArPSBoOCAqICg1ICogcjYpO1xuICAgIGQ0ICs9IGg5ICogKDUgKiByNSk7XG4gICAgYyArPSAoZDQgPj4+IDEzKTsgZDQgJj0gMHgxZmZmO1xuXG4gICAgZDUgPSBjO1xuICAgIGQ1ICs9IGgwICogcjU7XG4gICAgZDUgKz0gaDEgKiByNDtcbiAgICBkNSArPSBoMiAqIHIzO1xuICAgIGQ1ICs9IGgzICogcjI7XG4gICAgZDUgKz0gaDQgKiByMTtcbiAgICBjID0gKGQ1ID4+PiAxMyk7IGQ1ICY9IDB4MWZmZjtcbiAgICBkNSArPSBoNSAqIHIwO1xuICAgIGQ1ICs9IGg2ICogKDUgKiByOSk7XG4gICAgZDUgKz0gaDcgKiAoNSAqIHI4KTtcbiAgICBkNSArPSBoOCAqICg1ICogcjcpO1xuICAgIGQ1ICs9IGg5ICogKDUgKiByNik7XG4gICAgYyArPSAoZDUgPj4+IDEzKTsgZDUgJj0gMHgxZmZmO1xuXG4gICAgZDYgPSBjO1xuICAgIGQ2ICs9IGgwICogcjY7XG4gICAgZDYgKz0gaDEgKiByNTtcbiAgICBkNiArPSBoMiAqIHI0O1xuICAgIGQ2ICs9IGgzICogcjM7XG4gICAgZDYgKz0gaDQgKiByMjtcbiAgICBjID0gKGQ2ID4+PiAxMyk7IGQ2ICY9IDB4MWZmZjtcbiAgICBkNiArPSBoNSAqIHIxO1xuICAgIGQ2ICs9IGg2ICogcjA7XG4gICAgZDYgKz0gaDcgKiAoNSAqIHI5KTtcbiAgICBkNiArPSBoOCAqICg1ICogcjgpO1xuICAgIGQ2ICs9IGg5ICogKDUgKiByNyk7XG4gICAgYyArPSAoZDYgPj4+IDEzKTsgZDYgJj0gMHgxZmZmO1xuXG4gICAgZDcgPSBjO1xuICAgIGQ3ICs9IGgwICogcjc7XG4gICAgZDcgKz0gaDEgKiByNjtcbiAgICBkNyArPSBoMiAqIHI1O1xuICAgIGQ3ICs9IGgzICogcjQ7XG4gICAgZDcgKz0gaDQgKiByMztcbiAgICBjID0gKGQ3ID4+PiAxMyk7IGQ3ICY9IDB4MWZmZjtcbiAgICBkNyArPSBoNSAqIHIyO1xuICAgIGQ3ICs9IGg2ICogcjE7XG4gICAgZDcgKz0gaDcgKiByMDtcbiAgICBkNyArPSBoOCAqICg1ICogcjkpO1xuICAgIGQ3ICs9IGg5ICogKDUgKiByOCk7XG4gICAgYyArPSAoZDcgPj4+IDEzKTsgZDcgJj0gMHgxZmZmO1xuXG4gICAgZDggPSBjO1xuICAgIGQ4ICs9IGgwICogcjg7XG4gICAgZDggKz0gaDEgKiByNztcbiAgICBkOCArPSBoMiAqIHI2O1xuICAgIGQ4ICs9IGgzICogcjU7XG4gICAgZDggKz0gaDQgKiByNDtcbiAgICBjID0gKGQ4ID4+PiAxMyk7IGQ4ICY9IDB4MWZmZjtcbiAgICBkOCArPSBoNSAqIHIzO1xuICAgIGQ4ICs9IGg2ICogcjI7XG4gICAgZDggKz0gaDcgKiByMTtcbiAgICBkOCArPSBoOCAqIHIwO1xuICAgIGQ4ICs9IGg5ICogKDUgKiByOSk7XG4gICAgYyArPSAoZDggPj4+IDEzKTsgZDggJj0gMHgxZmZmO1xuXG4gICAgZDkgPSBjO1xuICAgIGQ5ICs9IGgwICogcjk7XG4gICAgZDkgKz0gaDEgKiByODtcbiAgICBkOSArPSBoMiAqIHI3O1xuICAgIGQ5ICs9IGgzICogcjY7XG4gICAgZDkgKz0gaDQgKiByNTtcbiAgICBjID0gKGQ5ID4+PiAxMyk7IGQ5ICY9IDB4MWZmZjtcbiAgICBkOSArPSBoNSAqIHI0O1xuICAgIGQ5ICs9IGg2ICogcjM7XG4gICAgZDkgKz0gaDcgKiByMjtcbiAgICBkOSArPSBoOCAqIHIxO1xuICAgIGQ5ICs9IGg5ICogcjA7XG4gICAgYyArPSAoZDkgPj4+IDEzKTsgZDkgJj0gMHgxZmZmO1xuXG4gICAgYyA9ICgoKGMgPDwgMikgKyBjKSkgfCAwO1xuICAgIGMgPSAoYyArIGQwKSB8IDA7XG4gICAgZDAgPSBjICYgMHgxZmZmO1xuICAgIGMgPSAoYyA+Pj4gMTMpO1xuICAgIGQxICs9IGM7XG5cbiAgICBoMCA9IGQwO1xuICAgIGgxID0gZDE7XG4gICAgaDIgPSBkMjtcbiAgICBoMyA9IGQzO1xuICAgIGg0ID0gZDQ7XG4gICAgaDUgPSBkNTtcbiAgICBoNiA9IGQ2O1xuICAgIGg3ID0gZDc7XG4gICAgaDggPSBkODtcbiAgICBoOSA9IGQ5O1xuXG4gICAgbXBvcyArPSAxNjtcbiAgICBieXRlcyAtPSAxNjtcbiAgfVxuICB0aGlzLmhbMF0gPSBoMDtcbiAgdGhpcy5oWzFdID0gaDE7XG4gIHRoaXMuaFsyXSA9IGgyO1xuICB0aGlzLmhbM10gPSBoMztcbiAgdGhpcy5oWzRdID0gaDQ7XG4gIHRoaXMuaFs1XSA9IGg1O1xuICB0aGlzLmhbNl0gPSBoNjtcbiAgdGhpcy5oWzddID0gaDc7XG4gIHRoaXMuaFs4XSA9IGg4O1xuICB0aGlzLmhbOV0gPSBoOTtcbn07XG5cbnBvbHkxMzA1LnByb3RvdHlwZS5maW5pc2ggPSBmdW5jdGlvbihtYWMsIG1hY3Bvcykge1xuICB2YXIgZyA9IG5ldyBVaW50MTZBcnJheSgxMCk7XG4gIHZhciBjLCBtYXNrLCBmLCBpO1xuXG4gIGlmICh0aGlzLmxlZnRvdmVyKSB7XG4gICAgaSA9IHRoaXMubGVmdG92ZXI7XG4gICAgdGhpcy5idWZmZXJbaSsrXSA9IDE7XG4gICAgZm9yICg7IGkgPCAxNjsgaSsrKSB0aGlzLmJ1ZmZlcltpXSA9IDA7XG4gICAgdGhpcy5maW4gPSAxO1xuICAgIHRoaXMuYmxvY2tzKHRoaXMuYnVmZmVyLCAwLCAxNik7XG4gIH1cblxuICBjID0gdGhpcy5oWzFdID4+PiAxMztcbiAgdGhpcy5oWzFdICY9IDB4MWZmZjtcbiAgZm9yIChpID0gMjsgaSA8IDEwOyBpKyspIHtcbiAgICB0aGlzLmhbaV0gKz0gYztcbiAgICBjID0gdGhpcy5oW2ldID4+PiAxMztcbiAgICB0aGlzLmhbaV0gJj0gMHgxZmZmO1xuICB9XG4gIHRoaXMuaFswXSArPSAoYyAqIDUpO1xuICBjID0gdGhpcy5oWzBdID4+PiAxMztcbiAgdGhpcy5oWzBdICY9IDB4MWZmZjtcbiAgdGhpcy5oWzFdICs9IGM7XG4gIGMgPSB0aGlzLmhbMV0gPj4+IDEzO1xuICB0aGlzLmhbMV0gJj0gMHgxZmZmO1xuICB0aGlzLmhbMl0gKz0gYztcblxuICBnWzBdID0gdGhpcy5oWzBdICsgNTtcbiAgYyA9IGdbMF0gPj4+IDEzO1xuICBnWzBdICY9IDB4MWZmZjtcbiAgZm9yIChpID0gMTsgaSA8IDEwOyBpKyspIHtcbiAgICBnW2ldID0gdGhpcy5oW2ldICsgYztcbiAgICBjID0gZ1tpXSA+Pj4gMTM7XG4gICAgZ1tpXSAmPSAweDFmZmY7XG4gIH1cbiAgZ1s5XSAtPSAoMSA8PCAxMyk7XG5cbiAgbWFzayA9IChjIF4gMSkgLSAxO1xuICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgZ1tpXSAmPSBtYXNrO1xuICBtYXNrID0gfm1hc2s7XG4gIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB0aGlzLmhbaV0gPSAodGhpcy5oW2ldICYgbWFzaykgfCBnW2ldO1xuXG4gIHRoaXMuaFswXSA9ICgodGhpcy5oWzBdICAgICAgICkgfCAodGhpcy5oWzFdIDw8IDEzKSAgICAgICAgICAgICAgICAgICAgKSAmIDB4ZmZmZjtcbiAgdGhpcy5oWzFdID0gKCh0aGlzLmhbMV0gPj4+ICAzKSB8ICh0aGlzLmhbMl0gPDwgMTApICAgICAgICAgICAgICAgICAgICApICYgMHhmZmZmO1xuICB0aGlzLmhbMl0gPSAoKHRoaXMuaFsyXSA+Pj4gIDYpIHwgKHRoaXMuaFszXSA8PCAgNykgICAgICAgICAgICAgICAgICAgICkgJiAweGZmZmY7XG4gIHRoaXMuaFszXSA9ICgodGhpcy5oWzNdID4+PiAgOSkgfCAodGhpcy5oWzRdIDw8ICA0KSAgICAgICAgICAgICAgICAgICAgKSAmIDB4ZmZmZjtcbiAgdGhpcy5oWzRdID0gKCh0aGlzLmhbNF0gPj4+IDEyKSB8ICh0aGlzLmhbNV0gPDwgIDEpIHwgKHRoaXMuaFs2XSA8PCAxNCkpICYgMHhmZmZmO1xuICB0aGlzLmhbNV0gPSAoKHRoaXMuaFs2XSA+Pj4gIDIpIHwgKHRoaXMuaFs3XSA8PCAxMSkgICAgICAgICAgICAgICAgICAgICkgJiAweGZmZmY7XG4gIHRoaXMuaFs2XSA9ICgodGhpcy5oWzddID4+PiAgNSkgfCAodGhpcy5oWzhdIDw8ICA4KSAgICAgICAgICAgICAgICAgICAgKSAmIDB4ZmZmZjtcbiAgdGhpcy5oWzddID0gKCh0aGlzLmhbOF0gPj4+ICA4KSB8ICh0aGlzLmhbOV0gPDwgIDUpICAgICAgICAgICAgICAgICAgICApICYgMHhmZmZmO1xuXG4gIGYgPSB0aGlzLmhbMF0gKyB0aGlzLnBhZFswXTtcbiAgdGhpcy5oWzBdID0gZiAmIDB4ZmZmZjtcbiAgZm9yIChpID0gMTsgaSA8IDg7IGkrKykge1xuICAgIGYgPSAoKCh0aGlzLmhbaV0gKyB0aGlzLnBhZFtpXSkgfCAwKSArIChmID4+PiAxNikpIHwgMDtcbiAgICB0aGlzLmhbaV0gPSBmICYgMHhmZmZmO1xuICB9XG5cbiAgbWFjW21hY3BvcysgMF0gPSAodGhpcy5oWzBdID4+PiAwKSAmIDB4ZmY7XG4gIG1hY1ttYWNwb3MrIDFdID0gKHRoaXMuaFswXSA+Pj4gOCkgJiAweGZmO1xuICBtYWNbbWFjcG9zKyAyXSA9ICh0aGlzLmhbMV0gPj4+IDApICYgMHhmZjtcbiAgbWFjW21hY3BvcysgM10gPSAodGhpcy5oWzFdID4+PiA4KSAmIDB4ZmY7XG4gIG1hY1ttYWNwb3MrIDRdID0gKHRoaXMuaFsyXSA+Pj4gMCkgJiAweGZmO1xuICBtYWNbbWFjcG9zKyA1XSA9ICh0aGlzLmhbMl0gPj4+IDgpICYgMHhmZjtcbiAgbWFjW21hY3BvcysgNl0gPSAodGhpcy5oWzNdID4+PiAwKSAmIDB4ZmY7XG4gIG1hY1ttYWNwb3MrIDddID0gKHRoaXMuaFszXSA+Pj4gOCkgJiAweGZmO1xuICBtYWNbbWFjcG9zKyA4XSA9ICh0aGlzLmhbNF0gPj4+IDApICYgMHhmZjtcbiAgbWFjW21hY3BvcysgOV0gPSAodGhpcy5oWzRdID4+PiA4KSAmIDB4ZmY7XG4gIG1hY1ttYWNwb3MrMTBdID0gKHRoaXMuaFs1XSA+Pj4gMCkgJiAweGZmO1xuICBtYWNbbWFjcG9zKzExXSA9ICh0aGlzLmhbNV0gPj4+IDgpICYgMHhmZjtcbiAgbWFjW21hY3BvcysxMl0gPSAodGhpcy5oWzZdID4+PiAwKSAmIDB4ZmY7XG4gIG1hY1ttYWNwb3MrMTNdID0gKHRoaXMuaFs2XSA+Pj4gOCkgJiAweGZmO1xuICBtYWNbbWFjcG9zKzE0XSA9ICh0aGlzLmhbN10gPj4+IDApICYgMHhmZjtcbiAgbWFjW21hY3BvcysxNV0gPSAodGhpcy5oWzddID4+PiA4KSAmIDB4ZmY7XG59O1xuXG5wb2x5MTMwNS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24obSwgbXBvcywgYnl0ZXMpIHtcbiAgdmFyIGksIHdhbnQ7XG5cbiAgaWYgKHRoaXMubGVmdG92ZXIpIHtcbiAgICB3YW50ID0gKDE2IC0gdGhpcy5sZWZ0b3Zlcik7XG4gICAgaWYgKHdhbnQgPiBieXRlcylcbiAgICAgIHdhbnQgPSBieXRlcztcbiAgICBmb3IgKGkgPSAwOyBpIDwgd2FudDsgaSsrKVxuICAgICAgdGhpcy5idWZmZXJbdGhpcy5sZWZ0b3ZlciArIGldID0gbVttcG9zK2ldO1xuICAgIGJ5dGVzIC09IHdhbnQ7XG4gICAgbXBvcyArPSB3YW50O1xuICAgIHRoaXMubGVmdG92ZXIgKz0gd2FudDtcbiAgICBpZiAodGhpcy5sZWZ0b3ZlciA8IDE2KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMuYmxvY2tzKHRoaXMuYnVmZmVyLCAwLCAxNik7XG4gICAgdGhpcy5sZWZ0b3ZlciA9IDA7XG4gIH1cblxuICBpZiAoYnl0ZXMgPj0gMTYpIHtcbiAgICB3YW50ID0gYnl0ZXMgLSAoYnl0ZXMgJSAxNik7XG4gICAgdGhpcy5ibG9ja3MobSwgbXBvcywgd2FudCk7XG4gICAgbXBvcyArPSB3YW50O1xuICAgIGJ5dGVzIC09IHdhbnQ7XG4gIH1cblxuICBpZiAoYnl0ZXMpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXM7IGkrKylcbiAgICAgIHRoaXMuYnVmZmVyW3RoaXMubGVmdG92ZXIgKyBpXSA9IG1bbXBvcytpXTtcbiAgICB0aGlzLmxlZnRvdmVyICs9IGJ5dGVzO1xuICB9XG59O1xuXG5mdW5jdGlvbiBjcnlwdG9fb25ldGltZWF1dGgob3V0LCBvdXRwb3MsIG0sIG1wb3MsIG4sIGspIHtcbiAgdmFyIHMgPSBuZXcgcG9seTEzMDUoayk7XG4gIHMudXBkYXRlKG0sIG1wb3MsIG4pO1xuICBzLmZpbmlzaChvdXQsIG91dHBvcyk7XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fb25ldGltZWF1dGhfdmVyaWZ5KGgsIGhwb3MsIG0sIG1wb3MsIG4sIGspIHtcbiAgdmFyIHggPSBuZXcgVWludDhBcnJheSgxNik7XG4gIGNyeXB0b19vbmV0aW1lYXV0aCh4LDAsbSxtcG9zLG4sayk7XG4gIHJldHVybiBjcnlwdG9fdmVyaWZ5XzE2KGgsaHBvcyx4LDApO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fc2VjcmV0Ym94KGMsbSxkLG4saykge1xuICB2YXIgaTtcbiAgaWYgKGQgPCAzMikgcmV0dXJuIC0xO1xuICBjcnlwdG9fc3RyZWFtX3hvcihjLDAsbSwwLGQsbixrKTtcbiAgY3J5cHRvX29uZXRpbWVhdXRoKGMsIDE2LCBjLCAzMiwgZCAtIDMyLCBjKTtcbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIGNbaV0gPSAwO1xuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX3NlY3JldGJveF9vcGVuKG0sYyxkLG4saykge1xuICB2YXIgaTtcbiAgdmFyIHggPSBuZXcgVWludDhBcnJheSgzMik7XG4gIGlmIChkIDwgMzIpIHJldHVybiAtMTtcbiAgY3J5cHRvX3N0cmVhbSh4LDAsMzIsbixrKTtcbiAgaWYgKGNyeXB0b19vbmV0aW1lYXV0aF92ZXJpZnkoYywgMTYsYywgMzIsZCAtIDMyLHgpICE9PSAwKSByZXR1cm4gLTE7XG4gIGNyeXB0b19zdHJlYW1feG9yKG0sMCxjLDAsZCxuLGspO1xuICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgbVtpXSA9IDA7XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBzZXQyNTUxOShyLCBhKSB7XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgcltpXSA9IGFbaV18MDtcbn1cblxuZnVuY3Rpb24gY2FyMjU1MTkobykge1xuICB2YXIgaSwgdiwgYyA9IDE7XG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdiA9IG9baV0gKyBjICsgNjU1MzU7XG4gICAgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTtcbiAgICBvW2ldID0gdiAtIGMgKiA2NTUzNjtcbiAgfVxuICBvWzBdICs9IGMtMSArIDM3ICogKGMtMSk7XG59XG5cbmZ1bmN0aW9uIHNlbDI1NTE5KHAsIHEsIGIpIHtcbiAgdmFyIHQsIGMgPSB+KGItMSk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHQgPSBjICYgKHBbaV0gXiBxW2ldKTtcbiAgICBwW2ldIF49IHQ7XG4gICAgcVtpXSBePSB0O1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhY2syNTUxOShvLCBuKSB7XG4gIHZhciBpLCBqLCBiO1xuICB2YXIgbSA9IGdmKCksIHQgPSBnZigpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgdFtpXSA9IG5baV07XG4gIGNhcjI1NTE5KHQpO1xuICBjYXIyNTUxOSh0KTtcbiAgY2FyMjU1MTkodCk7XG4gIGZvciAoaiA9IDA7IGogPCAyOyBqKyspIHtcbiAgICBtWzBdID0gdFswXSAtIDB4ZmZlZDtcbiAgICBmb3IgKGkgPSAxOyBpIDwgMTU7IGkrKykge1xuICAgICAgbVtpXSA9IHRbaV0gLSAweGZmZmYgLSAoKG1baS0xXT4+MTYpICYgMSk7XG4gICAgICBtW2ktMV0gJj0gMHhmZmZmO1xuICAgIH1cbiAgICBtWzE1XSA9IHRbMTVdIC0gMHg3ZmZmIC0gKChtWzE0XT4+MTYpICYgMSk7XG4gICAgYiA9IChtWzE1XT4+MTYpICYgMTtcbiAgICBtWzE0XSAmPSAweGZmZmY7XG4gICAgc2VsMjU1MTkodCwgbSwgMS1iKTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIG9bMippXSA9IHRbaV0gJiAweGZmO1xuICAgIG9bMippKzFdID0gdFtpXT4+ODtcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXEyNTUxOShhLCBiKSB7XG4gIHZhciBjID0gbmV3IFVpbnQ4QXJyYXkoMzIpLCBkID0gbmV3IFVpbnQ4QXJyYXkoMzIpO1xuICBwYWNrMjU1MTkoYywgYSk7XG4gIHBhY2syNTUxOShkLCBiKTtcbiAgcmV0dXJuIGNyeXB0b192ZXJpZnlfMzIoYywgMCwgZCwgMCk7XG59XG5cbmZ1bmN0aW9uIHBhcjI1NTE5KGEpIHtcbiAgdmFyIGQgPSBuZXcgVWludDhBcnJheSgzMik7XG4gIHBhY2syNTUxOShkLCBhKTtcbiAgcmV0dXJuIGRbMF0gJiAxO1xufVxuXG5mdW5jdGlvbiB1bnBhY2syNTUxOShvLCBuKSB7XG4gIHZhciBpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgb1tpXSA9IG5bMippXSArIChuWzIqaSsxXSA8PCA4KTtcbiAgb1sxNV0gJj0gMHg3ZmZmO1xufVxuXG5mdW5jdGlvbiBBKG8sIGEsIGIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSBvW2ldID0gYVtpXSArIGJbaV07XG59XG5cbmZ1bmN0aW9uIFoobywgYSwgYikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIG9baV0gPSBhW2ldIC0gYltpXTtcbn1cblxuZnVuY3Rpb24gTShvLCBhLCBiKSB7XG4gIHZhciB2LCBjLFxuICAgICB0MCA9IDAsICB0MSA9IDAsICB0MiA9IDAsICB0MyA9IDAsICB0NCA9IDAsICB0NSA9IDAsICB0NiA9IDAsICB0NyA9IDAsXG4gICAgIHQ4ID0gMCwgIHQ5ID0gMCwgdDEwID0gMCwgdDExID0gMCwgdDEyID0gMCwgdDEzID0gMCwgdDE0ID0gMCwgdDE1ID0gMCxcbiAgICB0MTYgPSAwLCB0MTcgPSAwLCB0MTggPSAwLCB0MTkgPSAwLCB0MjAgPSAwLCB0MjEgPSAwLCB0MjIgPSAwLCB0MjMgPSAwLFxuICAgIHQyNCA9IDAsIHQyNSA9IDAsIHQyNiA9IDAsIHQyNyA9IDAsIHQyOCA9IDAsIHQyOSA9IDAsIHQzMCA9IDAsXG4gICAgYjAgPSBiWzBdLFxuICAgIGIxID0gYlsxXSxcbiAgICBiMiA9IGJbMl0sXG4gICAgYjMgPSBiWzNdLFxuICAgIGI0ID0gYls0XSxcbiAgICBiNSA9IGJbNV0sXG4gICAgYjYgPSBiWzZdLFxuICAgIGI3ID0gYls3XSxcbiAgICBiOCA9IGJbOF0sXG4gICAgYjkgPSBiWzldLFxuICAgIGIxMCA9IGJbMTBdLFxuICAgIGIxMSA9IGJbMTFdLFxuICAgIGIxMiA9IGJbMTJdLFxuICAgIGIxMyA9IGJbMTNdLFxuICAgIGIxNCA9IGJbMTRdLFxuICAgIGIxNSA9IGJbMTVdO1xuXG4gIHYgPSBhWzBdO1xuICB0MCArPSB2ICogYjA7XG4gIHQxICs9IHYgKiBiMTtcbiAgdDIgKz0gdiAqIGIyO1xuICB0MyArPSB2ICogYjM7XG4gIHQ0ICs9IHYgKiBiNDtcbiAgdDUgKz0gdiAqIGI1O1xuICB0NiArPSB2ICogYjY7XG4gIHQ3ICs9IHYgKiBiNztcbiAgdDggKz0gdiAqIGI4O1xuICB0OSArPSB2ICogYjk7XG4gIHQxMCArPSB2ICogYjEwO1xuICB0MTEgKz0gdiAqIGIxMTtcbiAgdDEyICs9IHYgKiBiMTI7XG4gIHQxMyArPSB2ICogYjEzO1xuICB0MTQgKz0gdiAqIGIxNDtcbiAgdDE1ICs9IHYgKiBiMTU7XG4gIHYgPSBhWzFdO1xuICB0MSArPSB2ICogYjA7XG4gIHQyICs9IHYgKiBiMTtcbiAgdDMgKz0gdiAqIGIyO1xuICB0NCArPSB2ICogYjM7XG4gIHQ1ICs9IHYgKiBiNDtcbiAgdDYgKz0gdiAqIGI1O1xuICB0NyArPSB2ICogYjY7XG4gIHQ4ICs9IHYgKiBiNztcbiAgdDkgKz0gdiAqIGI4O1xuICB0MTAgKz0gdiAqIGI5O1xuICB0MTEgKz0gdiAqIGIxMDtcbiAgdDEyICs9IHYgKiBiMTE7XG4gIHQxMyArPSB2ICogYjEyO1xuICB0MTQgKz0gdiAqIGIxMztcbiAgdDE1ICs9IHYgKiBiMTQ7XG4gIHQxNiArPSB2ICogYjE1O1xuICB2ID0gYVsyXTtcbiAgdDIgKz0gdiAqIGIwO1xuICB0MyArPSB2ICogYjE7XG4gIHQ0ICs9IHYgKiBiMjtcbiAgdDUgKz0gdiAqIGIzO1xuICB0NiArPSB2ICogYjQ7XG4gIHQ3ICs9IHYgKiBiNTtcbiAgdDggKz0gdiAqIGI2O1xuICB0OSArPSB2ICogYjc7XG4gIHQxMCArPSB2ICogYjg7XG4gIHQxMSArPSB2ICogYjk7XG4gIHQxMiArPSB2ICogYjEwO1xuICB0MTMgKz0gdiAqIGIxMTtcbiAgdDE0ICs9IHYgKiBiMTI7XG4gIHQxNSArPSB2ICogYjEzO1xuICB0MTYgKz0gdiAqIGIxNDtcbiAgdDE3ICs9IHYgKiBiMTU7XG4gIHYgPSBhWzNdO1xuICB0MyArPSB2ICogYjA7XG4gIHQ0ICs9IHYgKiBiMTtcbiAgdDUgKz0gdiAqIGIyO1xuICB0NiArPSB2ICogYjM7XG4gIHQ3ICs9IHYgKiBiNDtcbiAgdDggKz0gdiAqIGI1O1xuICB0OSArPSB2ICogYjY7XG4gIHQxMCArPSB2ICogYjc7XG4gIHQxMSArPSB2ICogYjg7XG4gIHQxMiArPSB2ICogYjk7XG4gIHQxMyArPSB2ICogYjEwO1xuICB0MTQgKz0gdiAqIGIxMTtcbiAgdDE1ICs9IHYgKiBiMTI7XG4gIHQxNiArPSB2ICogYjEzO1xuICB0MTcgKz0gdiAqIGIxNDtcbiAgdDE4ICs9IHYgKiBiMTU7XG4gIHYgPSBhWzRdO1xuICB0NCArPSB2ICogYjA7XG4gIHQ1ICs9IHYgKiBiMTtcbiAgdDYgKz0gdiAqIGIyO1xuICB0NyArPSB2ICogYjM7XG4gIHQ4ICs9IHYgKiBiNDtcbiAgdDkgKz0gdiAqIGI1O1xuICB0MTAgKz0gdiAqIGI2O1xuICB0MTEgKz0gdiAqIGI3O1xuICB0MTIgKz0gdiAqIGI4O1xuICB0MTMgKz0gdiAqIGI5O1xuICB0MTQgKz0gdiAqIGIxMDtcbiAgdDE1ICs9IHYgKiBiMTE7XG4gIHQxNiArPSB2ICogYjEyO1xuICB0MTcgKz0gdiAqIGIxMztcbiAgdDE4ICs9IHYgKiBiMTQ7XG4gIHQxOSArPSB2ICogYjE1O1xuICB2ID0gYVs1XTtcbiAgdDUgKz0gdiAqIGIwO1xuICB0NiArPSB2ICogYjE7XG4gIHQ3ICs9IHYgKiBiMjtcbiAgdDggKz0gdiAqIGIzO1xuICB0OSArPSB2ICogYjQ7XG4gIHQxMCArPSB2ICogYjU7XG4gIHQxMSArPSB2ICogYjY7XG4gIHQxMiArPSB2ICogYjc7XG4gIHQxMyArPSB2ICogYjg7XG4gIHQxNCArPSB2ICogYjk7XG4gIHQxNSArPSB2ICogYjEwO1xuICB0MTYgKz0gdiAqIGIxMTtcbiAgdDE3ICs9IHYgKiBiMTI7XG4gIHQxOCArPSB2ICogYjEzO1xuICB0MTkgKz0gdiAqIGIxNDtcbiAgdDIwICs9IHYgKiBiMTU7XG4gIHYgPSBhWzZdO1xuICB0NiArPSB2ICogYjA7XG4gIHQ3ICs9IHYgKiBiMTtcbiAgdDggKz0gdiAqIGIyO1xuICB0OSArPSB2ICogYjM7XG4gIHQxMCArPSB2ICogYjQ7XG4gIHQxMSArPSB2ICogYjU7XG4gIHQxMiArPSB2ICogYjY7XG4gIHQxMyArPSB2ICogYjc7XG4gIHQxNCArPSB2ICogYjg7XG4gIHQxNSArPSB2ICogYjk7XG4gIHQxNiArPSB2ICogYjEwO1xuICB0MTcgKz0gdiAqIGIxMTtcbiAgdDE4ICs9IHYgKiBiMTI7XG4gIHQxOSArPSB2ICogYjEzO1xuICB0MjAgKz0gdiAqIGIxNDtcbiAgdDIxICs9IHYgKiBiMTU7XG4gIHYgPSBhWzddO1xuICB0NyArPSB2ICogYjA7XG4gIHQ4ICs9IHYgKiBiMTtcbiAgdDkgKz0gdiAqIGIyO1xuICB0MTAgKz0gdiAqIGIzO1xuICB0MTEgKz0gdiAqIGI0O1xuICB0MTIgKz0gdiAqIGI1O1xuICB0MTMgKz0gdiAqIGI2O1xuICB0MTQgKz0gdiAqIGI3O1xuICB0MTUgKz0gdiAqIGI4O1xuICB0MTYgKz0gdiAqIGI5O1xuICB0MTcgKz0gdiAqIGIxMDtcbiAgdDE4ICs9IHYgKiBiMTE7XG4gIHQxOSArPSB2ICogYjEyO1xuICB0MjAgKz0gdiAqIGIxMztcbiAgdDIxICs9IHYgKiBiMTQ7XG4gIHQyMiArPSB2ICogYjE1O1xuICB2ID0gYVs4XTtcbiAgdDggKz0gdiAqIGIwO1xuICB0OSArPSB2ICogYjE7XG4gIHQxMCArPSB2ICogYjI7XG4gIHQxMSArPSB2ICogYjM7XG4gIHQxMiArPSB2ICogYjQ7XG4gIHQxMyArPSB2ICogYjU7XG4gIHQxNCArPSB2ICogYjY7XG4gIHQxNSArPSB2ICogYjc7XG4gIHQxNiArPSB2ICogYjg7XG4gIHQxNyArPSB2ICogYjk7XG4gIHQxOCArPSB2ICogYjEwO1xuICB0MTkgKz0gdiAqIGIxMTtcbiAgdDIwICs9IHYgKiBiMTI7XG4gIHQyMSArPSB2ICogYjEzO1xuICB0MjIgKz0gdiAqIGIxNDtcbiAgdDIzICs9IHYgKiBiMTU7XG4gIHYgPSBhWzldO1xuICB0OSArPSB2ICogYjA7XG4gIHQxMCArPSB2ICogYjE7XG4gIHQxMSArPSB2ICogYjI7XG4gIHQxMiArPSB2ICogYjM7XG4gIHQxMyArPSB2ICogYjQ7XG4gIHQxNCArPSB2ICogYjU7XG4gIHQxNSArPSB2ICogYjY7XG4gIHQxNiArPSB2ICogYjc7XG4gIHQxNyArPSB2ICogYjg7XG4gIHQxOCArPSB2ICogYjk7XG4gIHQxOSArPSB2ICogYjEwO1xuICB0MjAgKz0gdiAqIGIxMTtcbiAgdDIxICs9IHYgKiBiMTI7XG4gIHQyMiArPSB2ICogYjEzO1xuICB0MjMgKz0gdiAqIGIxNDtcbiAgdDI0ICs9IHYgKiBiMTU7XG4gIHYgPSBhWzEwXTtcbiAgdDEwICs9IHYgKiBiMDtcbiAgdDExICs9IHYgKiBiMTtcbiAgdDEyICs9IHYgKiBiMjtcbiAgdDEzICs9IHYgKiBiMztcbiAgdDE0ICs9IHYgKiBiNDtcbiAgdDE1ICs9IHYgKiBiNTtcbiAgdDE2ICs9IHYgKiBiNjtcbiAgdDE3ICs9IHYgKiBiNztcbiAgdDE4ICs9IHYgKiBiODtcbiAgdDE5ICs9IHYgKiBiOTtcbiAgdDIwICs9IHYgKiBiMTA7XG4gIHQyMSArPSB2ICogYjExO1xuICB0MjIgKz0gdiAqIGIxMjtcbiAgdDIzICs9IHYgKiBiMTM7XG4gIHQyNCArPSB2ICogYjE0O1xuICB0MjUgKz0gdiAqIGIxNTtcbiAgdiA9IGFbMTFdO1xuICB0MTEgKz0gdiAqIGIwO1xuICB0MTIgKz0gdiAqIGIxO1xuICB0MTMgKz0gdiAqIGIyO1xuICB0MTQgKz0gdiAqIGIzO1xuICB0MTUgKz0gdiAqIGI0O1xuICB0MTYgKz0gdiAqIGI1O1xuICB0MTcgKz0gdiAqIGI2O1xuICB0MTggKz0gdiAqIGI3O1xuICB0MTkgKz0gdiAqIGI4O1xuICB0MjAgKz0gdiAqIGI5O1xuICB0MjEgKz0gdiAqIGIxMDtcbiAgdDIyICs9IHYgKiBiMTE7XG4gIHQyMyArPSB2ICogYjEyO1xuICB0MjQgKz0gdiAqIGIxMztcbiAgdDI1ICs9IHYgKiBiMTQ7XG4gIHQyNiArPSB2ICogYjE1O1xuICB2ID0gYVsxMl07XG4gIHQxMiArPSB2ICogYjA7XG4gIHQxMyArPSB2ICogYjE7XG4gIHQxNCArPSB2ICogYjI7XG4gIHQxNSArPSB2ICogYjM7XG4gIHQxNiArPSB2ICogYjQ7XG4gIHQxNyArPSB2ICogYjU7XG4gIHQxOCArPSB2ICogYjY7XG4gIHQxOSArPSB2ICogYjc7XG4gIHQyMCArPSB2ICogYjg7XG4gIHQyMSArPSB2ICogYjk7XG4gIHQyMiArPSB2ICogYjEwO1xuICB0MjMgKz0gdiAqIGIxMTtcbiAgdDI0ICs9IHYgKiBiMTI7XG4gIHQyNSArPSB2ICogYjEzO1xuICB0MjYgKz0gdiAqIGIxNDtcbiAgdDI3ICs9IHYgKiBiMTU7XG4gIHYgPSBhWzEzXTtcbiAgdDEzICs9IHYgKiBiMDtcbiAgdDE0ICs9IHYgKiBiMTtcbiAgdDE1ICs9IHYgKiBiMjtcbiAgdDE2ICs9IHYgKiBiMztcbiAgdDE3ICs9IHYgKiBiNDtcbiAgdDE4ICs9IHYgKiBiNTtcbiAgdDE5ICs9IHYgKiBiNjtcbiAgdDIwICs9IHYgKiBiNztcbiAgdDIxICs9IHYgKiBiODtcbiAgdDIyICs9IHYgKiBiOTtcbiAgdDIzICs9IHYgKiBiMTA7XG4gIHQyNCArPSB2ICogYjExO1xuICB0MjUgKz0gdiAqIGIxMjtcbiAgdDI2ICs9IHYgKiBiMTM7XG4gIHQyNyArPSB2ICogYjE0O1xuICB0MjggKz0gdiAqIGIxNTtcbiAgdiA9IGFbMTRdO1xuICB0MTQgKz0gdiAqIGIwO1xuICB0MTUgKz0gdiAqIGIxO1xuICB0MTYgKz0gdiAqIGIyO1xuICB0MTcgKz0gdiAqIGIzO1xuICB0MTggKz0gdiAqIGI0O1xuICB0MTkgKz0gdiAqIGI1O1xuICB0MjAgKz0gdiAqIGI2O1xuICB0MjEgKz0gdiAqIGI3O1xuICB0MjIgKz0gdiAqIGI4O1xuICB0MjMgKz0gdiAqIGI5O1xuICB0MjQgKz0gdiAqIGIxMDtcbiAgdDI1ICs9IHYgKiBiMTE7XG4gIHQyNiArPSB2ICogYjEyO1xuICB0MjcgKz0gdiAqIGIxMztcbiAgdDI4ICs9IHYgKiBiMTQ7XG4gIHQyOSArPSB2ICogYjE1O1xuICB2ID0gYVsxNV07XG4gIHQxNSArPSB2ICogYjA7XG4gIHQxNiArPSB2ICogYjE7XG4gIHQxNyArPSB2ICogYjI7XG4gIHQxOCArPSB2ICogYjM7XG4gIHQxOSArPSB2ICogYjQ7XG4gIHQyMCArPSB2ICogYjU7XG4gIHQyMSArPSB2ICogYjY7XG4gIHQyMiArPSB2ICogYjc7XG4gIHQyMyArPSB2ICogYjg7XG4gIHQyNCArPSB2ICogYjk7XG4gIHQyNSArPSB2ICogYjEwO1xuICB0MjYgKz0gdiAqIGIxMTtcbiAgdDI3ICs9IHYgKiBiMTI7XG4gIHQyOCArPSB2ICogYjEzO1xuICB0MjkgKz0gdiAqIGIxNDtcbiAgdDMwICs9IHYgKiBiMTU7XG5cbiAgdDAgICs9IDM4ICogdDE2O1xuICB0MSAgKz0gMzggKiB0MTc7XG4gIHQyICArPSAzOCAqIHQxODtcbiAgdDMgICs9IDM4ICogdDE5O1xuICB0NCAgKz0gMzggKiB0MjA7XG4gIHQ1ICArPSAzOCAqIHQyMTtcbiAgdDYgICs9IDM4ICogdDIyO1xuICB0NyAgKz0gMzggKiB0MjM7XG4gIHQ4ICArPSAzOCAqIHQyNDtcbiAgdDkgICs9IDM4ICogdDI1O1xuICB0MTAgKz0gMzggKiB0MjY7XG4gIHQxMSArPSAzOCAqIHQyNztcbiAgdDEyICs9IDM4ICogdDI4O1xuICB0MTMgKz0gMzggKiB0Mjk7XG4gIHQxNCArPSAzOCAqIHQzMDtcbiAgLy8gdDE1IGxlZnQgYXMgaXNcblxuICAvLyBmaXJzdCBjYXJcbiAgYyA9IDE7XG4gIHYgPSAgdDAgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0MCA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDEgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0MSA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDIgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0MiA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDMgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0MyA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDQgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0NCA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDUgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0NSA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDYgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0NiA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDcgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0NyA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDggKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0OCA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSAgdDkgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7ICB0OSA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTAgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxMCA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTEgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxMSA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTIgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxMiA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTMgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxMyA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTQgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxNCA9IHYgLSBjICogNjU1MzY7XG4gIHYgPSB0MTUgKyBjICsgNjU1MzU7IGMgPSBNYXRoLmZsb29yKHYgLyA2NTUzNik7IHQxNSA9IHYgLSBjICogNjU1MzY7XG4gIHQwICs9IGMtMSArIDM3ICogKGMtMSk7XG5cbiAgLy8gc2Vjb25kIGNhclxuICBjID0gMTtcbiAgdiA9ICB0MCArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQwID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0MSArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQxID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0MiArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQyID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0MyArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQzID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0NCArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ0ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0NSArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ1ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0NiArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ2ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0NyArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ3ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0OCArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ4ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9ICB0OSArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgIHQ5ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxMCArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDEwID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxMSArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDExID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxMiArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDEyID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxMyArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDEzID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxNCArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDE0ID0gdiAtIGMgKiA2NTUzNjtcbiAgdiA9IHQxNSArIGMgKyA2NTUzNTsgYyA9IE1hdGguZmxvb3IodiAvIDY1NTM2KTsgdDE1ID0gdiAtIGMgKiA2NTUzNjtcbiAgdDAgKz0gYy0xICsgMzcgKiAoYy0xKTtcblxuICBvWyAwXSA9IHQwO1xuICBvWyAxXSA9IHQxO1xuICBvWyAyXSA9IHQyO1xuICBvWyAzXSA9IHQzO1xuICBvWyA0XSA9IHQ0O1xuICBvWyA1XSA9IHQ1O1xuICBvWyA2XSA9IHQ2O1xuICBvWyA3XSA9IHQ3O1xuICBvWyA4XSA9IHQ4O1xuICBvWyA5XSA9IHQ5O1xuICBvWzEwXSA9IHQxMDtcbiAgb1sxMV0gPSB0MTE7XG4gIG9bMTJdID0gdDEyO1xuICBvWzEzXSA9IHQxMztcbiAgb1sxNF0gPSB0MTQ7XG4gIG9bMTVdID0gdDE1O1xufVxuXG5mdW5jdGlvbiBTKG8sIGEpIHtcbiAgTShvLCBhLCBhKTtcbn1cblxuZnVuY3Rpb24gaW52MjU1MTkobywgaSkge1xuICB2YXIgYyA9IGdmKCk7XG4gIHZhciBhO1xuICBmb3IgKGEgPSAwOyBhIDwgMTY7IGErKykgY1thXSA9IGlbYV07XG4gIGZvciAoYSA9IDI1MzsgYSA+PSAwOyBhLS0pIHtcbiAgICBTKGMsIGMpO1xuICAgIGlmKGEgIT09IDIgJiYgYSAhPT0gNCkgTShjLCBjLCBpKTtcbiAgfVxuICBmb3IgKGEgPSAwOyBhIDwgMTY7IGErKykgb1thXSA9IGNbYV07XG59XG5cbmZ1bmN0aW9uIHBvdzI1MjMobywgaSkge1xuICB2YXIgYyA9IGdmKCk7XG4gIHZhciBhO1xuICBmb3IgKGEgPSAwOyBhIDwgMTY7IGErKykgY1thXSA9IGlbYV07XG4gIGZvciAoYSA9IDI1MDsgYSA+PSAwOyBhLS0pIHtcbiAgICAgIFMoYywgYyk7XG4gICAgICBpZihhICE9PSAxKSBNKGMsIGMsIGkpO1xuICB9XG4gIGZvciAoYSA9IDA7IGEgPCAxNjsgYSsrKSBvW2FdID0gY1thXTtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX3NjYWxhcm11bHQocSwgbiwgcCkge1xuICB2YXIgeiA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgdmFyIHggPSBuZXcgRmxvYXQ2NEFycmF5KDgwKSwgciwgaTtcbiAgdmFyIGEgPSBnZigpLCBiID0gZ2YoKSwgYyA9IGdmKCksXG4gICAgICBkID0gZ2YoKSwgZSA9IGdmKCksIGYgPSBnZigpO1xuICBmb3IgKGkgPSAwOyBpIDwgMzE7IGkrKykgeltpXSA9IG5baV07XG4gIHpbMzFdPShuWzMxXSYxMjcpfDY0O1xuICB6WzBdJj0yNDg7XG4gIHVucGFjazI1NTE5KHgscCk7XG4gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgYltpXT14W2ldO1xuICAgIGRbaV09YVtpXT1jW2ldPTA7XG4gIH1cbiAgYVswXT1kWzBdPTE7XG4gIGZvciAoaT0yNTQ7IGk+PTA7IC0taSkge1xuICAgIHI9KHpbaT4+PjNdPj4+KGkmNykpJjE7XG4gICAgc2VsMjU1MTkoYSxiLHIpO1xuICAgIHNlbDI1NTE5KGMsZCxyKTtcbiAgICBBKGUsYSxjKTtcbiAgICBaKGEsYSxjKTtcbiAgICBBKGMsYixkKTtcbiAgICBaKGIsYixkKTtcbiAgICBTKGQsZSk7XG4gICAgUyhmLGEpO1xuICAgIE0oYSxjLGEpO1xuICAgIE0oYyxiLGUpO1xuICAgIEEoZSxhLGMpO1xuICAgIFooYSxhLGMpO1xuICAgIFMoYixhKTtcbiAgICBaKGMsZCxmKTtcbiAgICBNKGEsYyxfMTIxNjY1KTtcbiAgICBBKGEsYSxkKTtcbiAgICBNKGMsYyxhKTtcbiAgICBNKGEsZCxmKTtcbiAgICBNKGQsYix4KTtcbiAgICBTKGIsZSk7XG4gICAgc2VsMjU1MTkoYSxiLHIpO1xuICAgIHNlbDI1NTE5KGMsZCxyKTtcbiAgfVxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIHhbaSsxNl09YVtpXTtcbiAgICB4W2krMzJdPWNbaV07XG4gICAgeFtpKzQ4XT1iW2ldO1xuICAgIHhbaSs2NF09ZFtpXTtcbiAgfVxuICB2YXIgeDMyID0geC5zdWJhcnJheSgzMik7XG4gIHZhciB4MTYgPSB4LnN1YmFycmF5KDE2KTtcbiAgaW52MjU1MTkoeDMyLHgzMik7XG4gIE0oeDE2LHgxNix4MzIpO1xuICBwYWNrMjU1MTkocSx4MTYpO1xuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX3NjYWxhcm11bHRfYmFzZShxLCBuKSB7XG4gIHJldHVybiBjcnlwdG9fc2NhbGFybXVsdChxLCBuLCBfOSk7XG59XG5cbmZ1bmN0aW9uIGNyeXB0b19ib3hfa2V5cGFpcih5LCB4KSB7XG4gIHJhbmRvbWJ5dGVzKHgsIDMyKTtcbiAgcmV0dXJuIGNyeXB0b19zY2FsYXJtdWx0X2Jhc2UoeSwgeCk7XG59XG5cbmZ1bmN0aW9uIGNyeXB0b19ib3hfYmVmb3Jlbm0oaywgeSwgeCkge1xuICB2YXIgcyA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgY3J5cHRvX3NjYWxhcm11bHQocywgeCwgeSk7XG4gIHJldHVybiBjcnlwdG9fY29yZV9oc2Fsc2EyMChrLCBfMCwgcywgc2lnbWEpO1xufVxuXG52YXIgY3J5cHRvX2JveF9hZnRlcm5tID0gY3J5cHRvX3NlY3JldGJveDtcbnZhciBjcnlwdG9fYm94X29wZW5fYWZ0ZXJubSA9IGNyeXB0b19zZWNyZXRib3hfb3BlbjtcblxuZnVuY3Rpb24gY3J5cHRvX2JveChjLCBtLCBkLCBuLCB5LCB4KSB7XG4gIHZhciBrID0gbmV3IFVpbnQ4QXJyYXkoMzIpO1xuICBjcnlwdG9fYm94X2JlZm9yZW5tKGssIHksIHgpO1xuICByZXR1cm4gY3J5cHRvX2JveF9hZnRlcm5tKGMsIG0sIGQsIG4sIGspO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fYm94X29wZW4obSwgYywgZCwgbiwgeSwgeCkge1xuICB2YXIgayA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgY3J5cHRvX2JveF9iZWZvcmVubShrLCB5LCB4KTtcbiAgcmV0dXJuIGNyeXB0b19ib3hfb3Blbl9hZnRlcm5tKG0sIGMsIGQsIG4sIGspO1xufVxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXTtcblxuZnVuY3Rpb24gY3J5cHRvX2hhc2hibG9ja3NfaGwoaGgsIGhsLCBtLCBuKSB7XG4gIHZhciB3aCA9IG5ldyBJbnQzMkFycmF5KDE2KSwgd2wgPSBuZXcgSW50MzJBcnJheSgxNiksXG4gICAgICBiaDAsIGJoMSwgYmgyLCBiaDMsIGJoNCwgYmg1LCBiaDYsIGJoNyxcbiAgICAgIGJsMCwgYmwxLCBibDIsIGJsMywgYmw0LCBibDUsIGJsNiwgYmw3LFxuICAgICAgdGgsIHRsLCBpLCBqLCBoLCBsLCBhLCBiLCBjLCBkO1xuXG4gIHZhciBhaDAgPSBoaFswXSxcbiAgICAgIGFoMSA9IGhoWzFdLFxuICAgICAgYWgyID0gaGhbMl0sXG4gICAgICBhaDMgPSBoaFszXSxcbiAgICAgIGFoNCA9IGhoWzRdLFxuICAgICAgYWg1ID0gaGhbNV0sXG4gICAgICBhaDYgPSBoaFs2XSxcbiAgICAgIGFoNyA9IGhoWzddLFxuXG4gICAgICBhbDAgPSBobFswXSxcbiAgICAgIGFsMSA9IGhsWzFdLFxuICAgICAgYWwyID0gaGxbMl0sXG4gICAgICBhbDMgPSBobFszXSxcbiAgICAgIGFsNCA9IGhsWzRdLFxuICAgICAgYWw1ID0gaGxbNV0sXG4gICAgICBhbDYgPSBobFs2XSxcbiAgICAgIGFsNyA9IGhsWzddO1xuXG4gIHZhciBwb3MgPSAwO1xuICB3aGlsZSAobiA+PSAxMjgpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgICAgaiA9IDggKiBpICsgcG9zO1xuICAgICAgd2hbaV0gPSAobVtqKzBdIDw8IDI0KSB8IChtW2orMV0gPDwgMTYpIHwgKG1baisyXSA8PCA4KSB8IG1baiszXTtcbiAgICAgIHdsW2ldID0gKG1bais0XSA8PCAyNCkgfCAobVtqKzVdIDw8IDE2KSB8IChtW2orNl0gPDwgOCkgfCBtW2orN107XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCA4MDsgaSsrKSB7XG4gICAgICBiaDAgPSBhaDA7XG4gICAgICBiaDEgPSBhaDE7XG4gICAgICBiaDIgPSBhaDI7XG4gICAgICBiaDMgPSBhaDM7XG4gICAgICBiaDQgPSBhaDQ7XG4gICAgICBiaDUgPSBhaDU7XG4gICAgICBiaDYgPSBhaDY7XG4gICAgICBiaDcgPSBhaDc7XG5cbiAgICAgIGJsMCA9IGFsMDtcbiAgICAgIGJsMSA9IGFsMTtcbiAgICAgIGJsMiA9IGFsMjtcbiAgICAgIGJsMyA9IGFsMztcbiAgICAgIGJsNCA9IGFsNDtcbiAgICAgIGJsNSA9IGFsNTtcbiAgICAgIGJsNiA9IGFsNjtcbiAgICAgIGJsNyA9IGFsNztcblxuICAgICAgLy8gYWRkXG4gICAgICBoID0gYWg3O1xuICAgICAgbCA9IGFsNztcblxuICAgICAgYSA9IGwgJiAweGZmZmY7IGIgPSBsID4+PiAxNjtcbiAgICAgIGMgPSBoICYgMHhmZmZmOyBkID0gaCA+Pj4gMTY7XG5cbiAgICAgIC8vIFNpZ21hMVxuICAgICAgaCA9ICgoYWg0ID4+PiAxNCkgfCAoYWw0IDw8ICgzMi0xNCkpKSBeICgoYWg0ID4+PiAxOCkgfCAoYWw0IDw8ICgzMi0xOCkpKSBeICgoYWw0ID4+PiAoNDEtMzIpKSB8IChhaDQgPDwgKDMyLSg0MS0zMikpKSk7XG4gICAgICBsID0gKChhbDQgPj4+IDE0KSB8IChhaDQgPDwgKDMyLTE0KSkpIF4gKChhbDQgPj4+IDE4KSB8IChhaDQgPDwgKDMyLTE4KSkpIF4gKChhaDQgPj4+ICg0MS0zMikpIHwgKGFsNCA8PCAoMzItKDQxLTMyKSkpKTtcblxuICAgICAgYSArPSBsICYgMHhmZmZmOyBiICs9IGwgPj4+IDE2O1xuICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICAvLyBDaFxuICAgICAgaCA9IChhaDQgJiBhaDUpIF4gKH5haDQgJiBhaDYpO1xuICAgICAgbCA9IChhbDQgJiBhbDUpIF4gKH5hbDQgJiBhbDYpO1xuXG4gICAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgICBjICs9IGggJiAweGZmZmY7IGQgKz0gaCA+Pj4gMTY7XG5cbiAgICAgIC8vIEtcbiAgICAgIGggPSBLW2kqMl07XG4gICAgICBsID0gS1tpKjIrMV07XG5cbiAgICAgIGEgKz0gbCAmIDB4ZmZmZjsgYiArPSBsID4+PiAxNjtcbiAgICAgIGMgKz0gaCAmIDB4ZmZmZjsgZCArPSBoID4+PiAxNjtcblxuICAgICAgLy8gd1xuICAgICAgaCA9IHdoW2klMTZdO1xuICAgICAgbCA9IHdsW2klMTZdO1xuXG4gICAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgICBjICs9IGggJiAweGZmZmY7IGQgKz0gaCA+Pj4gMTY7XG5cbiAgICAgIGIgKz0gYSA+Pj4gMTY7XG4gICAgICBjICs9IGIgPj4+IDE2O1xuICAgICAgZCArPSBjID4+PiAxNjtcblxuICAgICAgdGggPSBjICYgMHhmZmZmIHwgZCA8PCAxNjtcbiAgICAgIHRsID0gYSAmIDB4ZmZmZiB8IGIgPDwgMTY7XG5cbiAgICAgIC8vIGFkZFxuICAgICAgaCA9IHRoO1xuICAgICAgbCA9IHRsO1xuXG4gICAgICBhID0gbCAmIDB4ZmZmZjsgYiA9IGwgPj4+IDE2O1xuICAgICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgICAgLy8gU2lnbWEwXG4gICAgICBoID0gKChhaDAgPj4+IDI4KSB8IChhbDAgPDwgKDMyLTI4KSkpIF4gKChhbDAgPj4+ICgzNC0zMikpIHwgKGFoMCA8PCAoMzItKDM0LTMyKSkpKSBeICgoYWwwID4+PiAoMzktMzIpKSB8IChhaDAgPDwgKDMyLSgzOS0zMikpKSk7XG4gICAgICBsID0gKChhbDAgPj4+IDI4KSB8IChhaDAgPDwgKDMyLTI4KSkpIF4gKChhaDAgPj4+ICgzNC0zMikpIHwgKGFsMCA8PCAoMzItKDM0LTMyKSkpKSBeICgoYWgwID4+PiAoMzktMzIpKSB8IChhbDAgPDwgKDMyLSgzOS0zMikpKSk7XG5cbiAgICAgIGEgKz0gbCAmIDB4ZmZmZjsgYiArPSBsID4+PiAxNjtcbiAgICAgIGMgKz0gaCAmIDB4ZmZmZjsgZCArPSBoID4+PiAxNjtcblxuICAgICAgLy8gTWFqXG4gICAgICBoID0gKGFoMCAmIGFoMSkgXiAoYWgwICYgYWgyKSBeIChhaDEgJiBhaDIpO1xuICAgICAgbCA9IChhbDAgJiBhbDEpIF4gKGFsMCAmIGFsMikgXiAoYWwxICYgYWwyKTtcblxuICAgICAgYSArPSBsICYgMHhmZmZmOyBiICs9IGwgPj4+IDE2O1xuICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICBiICs9IGEgPj4+IDE2O1xuICAgICAgYyArPSBiID4+PiAxNjtcbiAgICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICAgIGJoNyA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICAgIGJsNyA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgICAgLy8gYWRkXG4gICAgICBoID0gYmgzO1xuICAgICAgbCA9IGJsMztcblxuICAgICAgYSA9IGwgJiAweGZmZmY7IGIgPSBsID4+PiAxNjtcbiAgICAgIGMgPSBoICYgMHhmZmZmOyBkID0gaCA+Pj4gMTY7XG5cbiAgICAgIGggPSB0aDtcbiAgICAgIGwgPSB0bDtcblxuICAgICAgYSArPSBsICYgMHhmZmZmOyBiICs9IGwgPj4+IDE2O1xuICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICBiICs9IGEgPj4+IDE2O1xuICAgICAgYyArPSBiID4+PiAxNjtcbiAgICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICAgIGJoMyA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICAgIGJsMyA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgICAgYWgxID0gYmgwO1xuICAgICAgYWgyID0gYmgxO1xuICAgICAgYWgzID0gYmgyO1xuICAgICAgYWg0ID0gYmgzO1xuICAgICAgYWg1ID0gYmg0O1xuICAgICAgYWg2ID0gYmg1O1xuICAgICAgYWg3ID0gYmg2O1xuICAgICAgYWgwID0gYmg3O1xuXG4gICAgICBhbDEgPSBibDA7XG4gICAgICBhbDIgPSBibDE7XG4gICAgICBhbDMgPSBibDI7XG4gICAgICBhbDQgPSBibDM7XG4gICAgICBhbDUgPSBibDQ7XG4gICAgICBhbDYgPSBibDU7XG4gICAgICBhbDcgPSBibDY7XG4gICAgICBhbDAgPSBibDc7XG5cbiAgICAgIGlmIChpJTE2ID09PSAxNSkge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgMTY7IGorKykge1xuICAgICAgICAgIC8vIGFkZFxuICAgICAgICAgIGggPSB3aFtqXTtcbiAgICAgICAgICBsID0gd2xbal07XG5cbiAgICAgICAgICBhID0gbCAmIDB4ZmZmZjsgYiA9IGwgPj4+IDE2O1xuICAgICAgICAgIGMgPSBoICYgMHhmZmZmOyBkID0gaCA+Pj4gMTY7XG5cbiAgICAgICAgICBoID0gd2hbKGorOSklMTZdO1xuICAgICAgICAgIGwgPSB3bFsoais5KSUxNl07XG5cbiAgICAgICAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICAgICAgLy8gc2lnbWEwXG4gICAgICAgICAgdGggPSB3aFsoaisxKSUxNl07XG4gICAgICAgICAgdGwgPSB3bFsoaisxKSUxNl07XG4gICAgICAgICAgaCA9ICgodGggPj4+IDEpIHwgKHRsIDw8ICgzMi0xKSkpIF4gKCh0aCA+Pj4gOCkgfCAodGwgPDwgKDMyLTgpKSkgXiAodGggPj4+IDcpO1xuICAgICAgICAgIGwgPSAoKHRsID4+PiAxKSB8ICh0aCA8PCAoMzItMSkpKSBeICgodGwgPj4+IDgpIHwgKHRoIDw8ICgzMi04KSkpIF4gKCh0bCA+Pj4gNykgfCAodGggPDwgKDMyLTcpKSk7XG5cbiAgICAgICAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICAgICAgLy8gc2lnbWExXG4gICAgICAgICAgdGggPSB3aFsoaisxNCklMTZdO1xuICAgICAgICAgIHRsID0gd2xbKGorMTQpJTE2XTtcbiAgICAgICAgICBoID0gKCh0aCA+Pj4gMTkpIHwgKHRsIDw8ICgzMi0xOSkpKSBeICgodGwgPj4+ICg2MS0zMikpIHwgKHRoIDw8ICgzMi0oNjEtMzIpKSkpIF4gKHRoID4+PiA2KTtcbiAgICAgICAgICBsID0gKCh0bCA+Pj4gMTkpIHwgKHRoIDw8ICgzMi0xOSkpKSBeICgodGggPj4+ICg2MS0zMikpIHwgKHRsIDw8ICgzMi0oNjEtMzIpKSkpIF4gKCh0bCA+Pj4gNikgfCAodGggPDwgKDMyLTYpKSk7XG5cbiAgICAgICAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgICAgICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgICAgICAgYiArPSBhID4+PiAxNjtcbiAgICAgICAgICBjICs9IGIgPj4+IDE2O1xuICAgICAgICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICAgICAgICB3aFtqXSA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICAgICAgICB3bFtqXSA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGFkZFxuICAgIGggPSBhaDA7XG4gICAgbCA9IGFsMDtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFswXTtcbiAgICBsID0gaGxbMF07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFswXSA9IGFoMCA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFswXSA9IGFsMCA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDE7XG4gICAgbCA9IGFsMTtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFsxXTtcbiAgICBsID0gaGxbMV07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFsxXSA9IGFoMSA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFsxXSA9IGFsMSA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDI7XG4gICAgbCA9IGFsMjtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFsyXTtcbiAgICBsID0gaGxbMl07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFsyXSA9IGFoMiA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFsyXSA9IGFsMiA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDM7XG4gICAgbCA9IGFsMztcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFszXTtcbiAgICBsID0gaGxbM107XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFszXSA9IGFoMyA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFszXSA9IGFsMyA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDQ7XG4gICAgbCA9IGFsNDtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFs0XTtcbiAgICBsID0gaGxbNF07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFs0XSA9IGFoNCA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFs0XSA9IGFsNCA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDU7XG4gICAgbCA9IGFsNTtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFs1XTtcbiAgICBsID0gaGxbNV07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFs1XSA9IGFoNSA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFs1XSA9IGFsNSA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDY7XG4gICAgbCA9IGFsNjtcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFs2XTtcbiAgICBsID0gaGxbNl07XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFs2XSA9IGFoNiA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFs2XSA9IGFsNiA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIGggPSBhaDc7XG4gICAgbCA9IGFsNztcblxuICAgIGEgPSBsICYgMHhmZmZmOyBiID0gbCA+Pj4gMTY7XG4gICAgYyA9IGggJiAweGZmZmY7IGQgPSBoID4+PiAxNjtcblxuICAgIGggPSBoaFs3XTtcbiAgICBsID0gaGxbN107XG5cbiAgICBhICs9IGwgJiAweGZmZmY7IGIgKz0gbCA+Pj4gMTY7XG4gICAgYyArPSBoICYgMHhmZmZmOyBkICs9IGggPj4+IDE2O1xuXG4gICAgYiArPSBhID4+PiAxNjtcbiAgICBjICs9IGIgPj4+IDE2O1xuICAgIGQgKz0gYyA+Pj4gMTY7XG5cbiAgICBoaFs3XSA9IGFoNyA9IChjICYgMHhmZmZmKSB8IChkIDw8IDE2KTtcbiAgICBobFs3XSA9IGFsNyA9IChhICYgMHhmZmZmKSB8IChiIDw8IDE2KTtcblxuICAgIHBvcyArPSAxMjg7XG4gICAgbiAtPSAxMjg7XG4gIH1cblxuICByZXR1cm4gbjtcbn1cblxuZnVuY3Rpb24gY3J5cHRvX2hhc2gob3V0LCBtLCBuKSB7XG4gIHZhciBoaCA9IG5ldyBJbnQzMkFycmF5KDgpLFxuICAgICAgaGwgPSBuZXcgSW50MzJBcnJheSg4KSxcbiAgICAgIHggPSBuZXcgVWludDhBcnJheSgyNTYpLFxuICAgICAgaSwgYiA9IG47XG5cbiAgaGhbMF0gPSAweDZhMDllNjY3O1xuICBoaFsxXSA9IDB4YmI2N2FlODU7XG4gIGhoWzJdID0gMHgzYzZlZjM3MjtcbiAgaGhbM10gPSAweGE1NGZmNTNhO1xuICBoaFs0XSA9IDB4NTEwZTUyN2Y7XG4gIGhoWzVdID0gMHg5YjA1Njg4YztcbiAgaGhbNl0gPSAweDFmODNkOWFiO1xuICBoaFs3XSA9IDB4NWJlMGNkMTk7XG5cbiAgaGxbMF0gPSAweGYzYmNjOTA4O1xuICBobFsxXSA9IDB4ODRjYWE3M2I7XG4gIGhsWzJdID0gMHhmZTk0ZjgyYjtcbiAgaGxbM10gPSAweDVmMWQzNmYxO1xuICBobFs0XSA9IDB4YWRlNjgyZDE7XG4gIGhsWzVdID0gMHgyYjNlNmMxZjtcbiAgaGxbNl0gPSAweGZiNDFiZDZiO1xuICBobFs3XSA9IDB4MTM3ZTIxNzk7XG5cbiAgY3J5cHRvX2hhc2hibG9ja3NfaGwoaGgsIGhsLCBtLCBuKTtcbiAgbiAlPSAxMjg7XG5cbiAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeFtpXSA9IG1bYi1uK2ldO1xuICB4W25dID0gMTI4O1xuXG4gIG4gPSAyNTYtMTI4KihuPDExMj8xOjApO1xuICB4W24tOV0gPSAwO1xuICB0czY0KHgsIG4tOCwgIChiIC8gMHgyMDAwMDAwMCkgfCAwLCBiIDw8IDMpO1xuICBjcnlwdG9faGFzaGJsb2Nrc19obChoaCwgaGwsIHgsIG4pO1xuXG4gIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHRzNjQob3V0LCA4KmksIGhoW2ldLCBobFtpXSk7XG5cbiAgcmV0dXJuIDA7XG59XG5cbmZ1bmN0aW9uIGFkZChwLCBxKSB7XG4gIHZhciBhID0gZ2YoKSwgYiA9IGdmKCksIGMgPSBnZigpLFxuICAgICAgZCA9IGdmKCksIGUgPSBnZigpLCBmID0gZ2YoKSxcbiAgICAgIGcgPSBnZigpLCBoID0gZ2YoKSwgdCA9IGdmKCk7XG5cbiAgWihhLCBwWzFdLCBwWzBdKTtcbiAgWih0LCBxWzFdLCBxWzBdKTtcbiAgTShhLCBhLCB0KTtcbiAgQShiLCBwWzBdLCBwWzFdKTtcbiAgQSh0LCBxWzBdLCBxWzFdKTtcbiAgTShiLCBiLCB0KTtcbiAgTShjLCBwWzNdLCBxWzNdKTtcbiAgTShjLCBjLCBEMik7XG4gIE0oZCwgcFsyXSwgcVsyXSk7XG4gIEEoZCwgZCwgZCk7XG4gIFooZSwgYiwgYSk7XG4gIFooZiwgZCwgYyk7XG4gIEEoZywgZCwgYyk7XG4gIEEoaCwgYiwgYSk7XG5cbiAgTShwWzBdLCBlLCBmKTtcbiAgTShwWzFdLCBoLCBnKTtcbiAgTShwWzJdLCBnLCBmKTtcbiAgTShwWzNdLCBlLCBoKTtcbn1cblxuZnVuY3Rpb24gY3N3YXAocCwgcSwgYikge1xuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHNlbDI1NTE5KHBbaV0sIHFbaV0sIGIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhY2sociwgcCkge1xuICB2YXIgdHggPSBnZigpLCB0eSA9IGdmKCksIHppID0gZ2YoKTtcbiAgaW52MjU1MTkoemksIHBbMl0pO1xuICBNKHR4LCBwWzBdLCB6aSk7XG4gIE0odHksIHBbMV0sIHppKTtcbiAgcGFjazI1NTE5KHIsIHR5KTtcbiAgclszMV0gXj0gcGFyMjU1MTkodHgpIDw8IDc7XG59XG5cbmZ1bmN0aW9uIHNjYWxhcm11bHQocCwgcSwgcykge1xuICB2YXIgYiwgaTtcbiAgc2V0MjU1MTkocFswXSwgZ2YwKTtcbiAgc2V0MjU1MTkocFsxXSwgZ2YxKTtcbiAgc2V0MjU1MTkocFsyXSwgZ2YxKTtcbiAgc2V0MjU1MTkocFszXSwgZ2YwKTtcbiAgZm9yIChpID0gMjU1OyBpID49IDA7IC0taSkge1xuICAgIGIgPSAoc1soaS84KXwwXSA+PiAoaSY3KSkgJiAxO1xuICAgIGNzd2FwKHAsIHEsIGIpO1xuICAgIGFkZChxLCBwKTtcbiAgICBhZGQocCwgcCk7XG4gICAgY3N3YXAocCwgcSwgYik7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2NhbGFyYmFzZShwLCBzKSB7XG4gIHZhciBxID0gW2dmKCksIGdmKCksIGdmKCksIGdmKCldO1xuICBzZXQyNTUxOShxWzBdLCBYKTtcbiAgc2V0MjU1MTkocVsxXSwgWSk7XG4gIHNldDI1NTE5KHFbMl0sIGdmMSk7XG4gIE0ocVszXSwgWCwgWSk7XG4gIHNjYWxhcm11bHQocCwgcSwgcyk7XG59XG5cbmZ1bmN0aW9uIGNyeXB0b19zaWduX2tleXBhaXIocGssIHNrLCBzZWVkZWQpIHtcbiAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg2NCk7XG4gIHZhciBwID0gW2dmKCksIGdmKCksIGdmKCksIGdmKCldO1xuICB2YXIgaTtcblxuICBpZiAoIXNlZWRlZCkgcmFuZG9tYnl0ZXMoc2ssIDMyKTtcbiAgY3J5cHRvX2hhc2goZCwgc2ssIDMyKTtcbiAgZFswXSAmPSAyNDg7XG4gIGRbMzFdICY9IDEyNztcbiAgZFszMV0gfD0gNjQ7XG5cbiAgc2NhbGFyYmFzZShwLCBkKTtcbiAgcGFjayhwaywgcCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHNrW2krMzJdID0gcGtbaV07XG4gIHJldHVybiAwO1xufVxuXG52YXIgTCA9IG5ldyBGbG9hdDY0QXJyYXkoWzB4ZWQsIDB4ZDMsIDB4ZjUsIDB4NWMsIDB4MWEsIDB4NjMsIDB4MTIsIDB4NTgsIDB4ZDYsIDB4OWMsIDB4ZjcsIDB4YTIsIDB4ZGUsIDB4ZjksIDB4ZGUsIDB4MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB4MTBdKTtcblxuZnVuY3Rpb24gbW9kTChyLCB4KSB7XG4gIHZhciBjYXJyeSwgaSwgaiwgaztcbiAgZm9yIChpID0gNjM7IGkgPj0gMzI7IC0taSkge1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGogPSBpIC0gMzIsIGsgPSBpIC0gMTI7IGogPCBrOyArK2opIHtcbiAgICAgIHhbal0gKz0gY2FycnkgLSAxNiAqIHhbaV0gKiBMW2ogLSAoaSAtIDMyKV07XG4gICAgICBjYXJyeSA9ICh4W2pdICsgMTI4KSA+PiA4O1xuICAgICAgeFtqXSAtPSBjYXJyeSAqIDI1NjtcbiAgICB9XG4gICAgeFtqXSArPSBjYXJyeTtcbiAgICB4W2ldID0gMDtcbiAgfVxuICBjYXJyeSA9IDA7XG4gIGZvciAoaiA9IDA7IGogPCAzMjsgaisrKSB7XG4gICAgeFtqXSArPSBjYXJyeSAtICh4WzMxXSA+PiA0KSAqIExbal07XG4gICAgY2FycnkgPSB4W2pdID4+IDg7XG4gICAgeFtqXSAmPSAyNTU7XG4gIH1cbiAgZm9yIChqID0gMDsgaiA8IDMyOyBqKyspIHhbal0gLT0gY2FycnkgKiBMW2pdO1xuICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgIHhbaSsxXSArPSB4W2ldID4+IDg7XG4gICAgcltpXSA9IHhbaV0gJiAyNTU7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVkdWNlKHIpIHtcbiAgdmFyIHggPSBuZXcgRmxvYXQ2NEFycmF5KDY0KSwgaTtcbiAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspIHhbaV0gPSByW2ldO1xuICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgcltpXSA9IDA7XG4gIG1vZEwociwgeCk7XG59XG5cbi8vIE5vdGU6IGRpZmZlcmVuY2UgZnJvbSBDIC0gc21sZW4gcmV0dXJuZWQsIG5vdCBwYXNzZWQgYXMgYXJndW1lbnQuXG5mdW5jdGlvbiBjcnlwdG9fc2lnbihzbSwgbSwgbiwgc2spIHtcbiAgdmFyIGQgPSBuZXcgVWludDhBcnJheSg2NCksIGggPSBuZXcgVWludDhBcnJheSg2NCksIHIgPSBuZXcgVWludDhBcnJheSg2NCk7XG4gIHZhciBpLCBqLCB4ID0gbmV3IEZsb2F0NjRBcnJheSg2NCk7XG4gIHZhciBwID0gW2dmKCksIGdmKCksIGdmKCksIGdmKCldO1xuXG4gIGNyeXB0b19oYXNoKGQsIHNrLCAzMik7XG4gIGRbMF0gJj0gMjQ4O1xuICBkWzMxXSAmPSAxMjc7XG4gIGRbMzFdIHw9IDY0O1xuXG4gIHZhciBzbWxlbiA9IG4gKyA2NDtcbiAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgc21bNjQgKyBpXSA9IG1baV07XG4gIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSBzbVszMiArIGldID0gZFszMiArIGldO1xuXG4gIGNyeXB0b19oYXNoKHIsIHNtLnN1YmFycmF5KDMyKSwgbiszMik7XG4gIHJlZHVjZShyKTtcbiAgc2NhbGFyYmFzZShwLCByKTtcbiAgcGFjayhzbSwgcCk7XG5cbiAgZm9yIChpID0gMzI7IGkgPCA2NDsgaSsrKSBzbVtpXSA9IHNrW2ldO1xuICBjcnlwdG9faGFzaChoLCBzbSwgbiArIDY0KTtcbiAgcmVkdWNlKGgpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKSB4W2ldID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHhbaV0gPSByW2ldO1xuICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykge1xuICAgIGZvciAoaiA9IDA7IGogPCAzMjsgaisrKSB7XG4gICAgICB4W2kral0gKz0gaFtpXSAqIGRbal07XG4gICAgfVxuICB9XG5cbiAgbW9kTChzbS5zdWJhcnJheSgzMiksIHgpO1xuICByZXR1cm4gc21sZW47XG59XG5cbmZ1bmN0aW9uIHVucGFja25lZyhyLCBwKSB7XG4gIHZhciB0ID0gZ2YoKSwgY2hrID0gZ2YoKSwgbnVtID0gZ2YoKSxcbiAgICAgIGRlbiA9IGdmKCksIGRlbjIgPSBnZigpLCBkZW40ID0gZ2YoKSxcbiAgICAgIGRlbjYgPSBnZigpO1xuXG4gIHNldDI1NTE5KHJbMl0sIGdmMSk7XG4gIHVucGFjazI1NTE5KHJbMV0sIHApO1xuICBTKG51bSwgclsxXSk7XG4gIE0oZGVuLCBudW0sIEQpO1xuICBaKG51bSwgbnVtLCByWzJdKTtcbiAgQShkZW4sIHJbMl0sIGRlbik7XG5cbiAgUyhkZW4yLCBkZW4pO1xuICBTKGRlbjQsIGRlbjIpO1xuICBNKGRlbjYsIGRlbjQsIGRlbjIpO1xuICBNKHQsIGRlbjYsIG51bSk7XG4gIE0odCwgdCwgZGVuKTtcblxuICBwb3cyNTIzKHQsIHQpO1xuICBNKHQsIHQsIG51bSk7XG4gIE0odCwgdCwgZGVuKTtcbiAgTSh0LCB0LCBkZW4pO1xuICBNKHJbMF0sIHQsIGRlbik7XG5cbiAgUyhjaGssIHJbMF0pO1xuICBNKGNoaywgY2hrLCBkZW4pO1xuICBpZiAobmVxMjU1MTkoY2hrLCBudW0pKSBNKHJbMF0sIHJbMF0sIEkpO1xuXG4gIFMoY2hrLCByWzBdKTtcbiAgTShjaGssIGNoaywgZGVuKTtcbiAgaWYgKG5lcTI1NTE5KGNoaywgbnVtKSkgcmV0dXJuIC0xO1xuXG4gIGlmIChwYXIyNTUxOShyWzBdKSA9PT0gKHBbMzFdPj43KSkgWihyWzBdLCBnZjAsIHJbMF0pO1xuXG4gIE0oclszXSwgclswXSwgclsxXSk7XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBjcnlwdG9fc2lnbl9vcGVuKG0sIHNtLCBuLCBwaykge1xuICB2YXIgaSwgbWxlbjtcbiAgdmFyIHQgPSBuZXcgVWludDhBcnJheSgzMiksIGggPSBuZXcgVWludDhBcnJheSg2NCk7XG4gIHZhciBwID0gW2dmKCksIGdmKCksIGdmKCksIGdmKCldLFxuICAgICAgcSA9IFtnZigpLCBnZigpLCBnZigpLCBnZigpXTtcblxuICBtbGVuID0gLTE7XG4gIGlmIChuIDwgNjQpIHJldHVybiAtMTtcblxuICBpZiAodW5wYWNrbmVnKHEsIHBrKSkgcmV0dXJuIC0xO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIG1baV0gPSBzbVtpXTtcbiAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIG1baSszMl0gPSBwa1tpXTtcbiAgY3J5cHRvX2hhc2goaCwgbSwgbik7XG4gIHJlZHVjZShoKTtcbiAgc2NhbGFybXVsdChwLCBxLCBoKTtcblxuICBzY2FsYXJiYXNlKHEsIHNtLnN1YmFycmF5KDMyKSk7XG4gIGFkZChwLCBxKTtcbiAgcGFjayh0LCBwKTtcblxuICBuIC09IDY0O1xuICBpZiAoY3J5cHRvX3ZlcmlmeV8zMihzbSwgMCwgdCwgMCkpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSBtW2ldID0gMDtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSBtW2ldID0gc21baSArIDY0XTtcbiAgbWxlbiA9IG47XG4gIHJldHVybiBtbGVuO1xufVxuXG52YXIgY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUyA9IDMyLFxuICAgIGNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUyA9IDI0LFxuICAgIGNyeXB0b19zZWNyZXRib3hfWkVST0JZVEVTID0gMzIsXG4gICAgY3J5cHRvX3NlY3JldGJveF9CT1haRVJPQllURVMgPSAxNixcbiAgICBjcnlwdG9fc2NhbGFybXVsdF9CWVRFUyA9IDMyLFxuICAgIGNyeXB0b19zY2FsYXJtdWx0X1NDQUxBUkJZVEVTID0gMzIsXG4gICAgY3J5cHRvX2JveF9QVUJMSUNLRVlCWVRFUyA9IDMyLFxuICAgIGNyeXB0b19ib3hfU0VDUkVUS0VZQllURVMgPSAzMixcbiAgICBjcnlwdG9fYm94X0JFRk9SRU5NQllURVMgPSAzMixcbiAgICBjcnlwdG9fYm94X05PTkNFQllURVMgPSBjcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMsXG4gICAgY3J5cHRvX2JveF9aRVJPQllURVMgPSBjcnlwdG9fc2VjcmV0Ym94X1pFUk9CWVRFUyxcbiAgICBjcnlwdG9fYm94X0JPWFpFUk9CWVRFUyA9IGNyeXB0b19zZWNyZXRib3hfQk9YWkVST0JZVEVTLFxuICAgIGNyeXB0b19zaWduX0JZVEVTID0gNjQsXG4gICAgY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMgPSAzMixcbiAgICBjcnlwdG9fc2lnbl9TRUNSRVRLRVlCWVRFUyA9IDY0LFxuICAgIGNyeXB0b19zaWduX1NFRURCWVRFUyA9IDMyLFxuICAgIGNyeXB0b19oYXNoX0JZVEVTID0gNjQ7XG5cbm5hY2wubG93bGV2ZWwgPSB7XG4gIGNyeXB0b19jb3JlX2hzYWxzYTIwOiBjcnlwdG9fY29yZV9oc2Fsc2EyMCxcbiAgY3J5cHRvX3N0cmVhbV94b3I6IGNyeXB0b19zdHJlYW1feG9yLFxuICBjcnlwdG9fc3RyZWFtOiBjcnlwdG9fc3RyZWFtLFxuICBjcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yOiBjcnlwdG9fc3RyZWFtX3NhbHNhMjBfeG9yLFxuICBjcnlwdG9fc3RyZWFtX3NhbHNhMjA6IGNyeXB0b19zdHJlYW1fc2Fsc2EyMCxcbiAgY3J5cHRvX29uZXRpbWVhdXRoOiBjcnlwdG9fb25ldGltZWF1dGgsXG4gIGNyeXB0b19vbmV0aW1lYXV0aF92ZXJpZnk6IGNyeXB0b19vbmV0aW1lYXV0aF92ZXJpZnksXG4gIGNyeXB0b192ZXJpZnlfMTY6IGNyeXB0b192ZXJpZnlfMTYsXG4gIGNyeXB0b192ZXJpZnlfMzI6IGNyeXB0b192ZXJpZnlfMzIsXG4gIGNyeXB0b19zZWNyZXRib3g6IGNyeXB0b19zZWNyZXRib3gsXG4gIGNyeXB0b19zZWNyZXRib3hfb3BlbjogY3J5cHRvX3NlY3JldGJveF9vcGVuLFxuICBjcnlwdG9fc2NhbGFybXVsdDogY3J5cHRvX3NjYWxhcm11bHQsXG4gIGNyeXB0b19zY2FsYXJtdWx0X2Jhc2U6IGNyeXB0b19zY2FsYXJtdWx0X2Jhc2UsXG4gIGNyeXB0b19ib3hfYmVmb3Jlbm06IGNyeXB0b19ib3hfYmVmb3Jlbm0sXG4gIGNyeXB0b19ib3hfYWZ0ZXJubTogY3J5cHRvX2JveF9hZnRlcm5tLFxuICBjcnlwdG9fYm94OiBjcnlwdG9fYm94LFxuICBjcnlwdG9fYm94X29wZW46IGNyeXB0b19ib3hfb3BlbixcbiAgY3J5cHRvX2JveF9rZXlwYWlyOiBjcnlwdG9fYm94X2tleXBhaXIsXG4gIGNyeXB0b19oYXNoOiBjcnlwdG9faGFzaCxcbiAgY3J5cHRvX3NpZ246IGNyeXB0b19zaWduLFxuICBjcnlwdG9fc2lnbl9rZXlwYWlyOiBjcnlwdG9fc2lnbl9rZXlwYWlyLFxuICBjcnlwdG9fc2lnbl9vcGVuOiBjcnlwdG9fc2lnbl9vcGVuLFxuXG4gIGNyeXB0b19zZWNyZXRib3hfS0VZQllURVM6IGNyeXB0b19zZWNyZXRib3hfS0VZQllURVMsXG4gIGNyeXB0b19zZWNyZXRib3hfTk9OQ0VCWVRFUzogY3J5cHRvX3NlY3JldGJveF9OT05DRUJZVEVTLFxuICBjcnlwdG9fc2VjcmV0Ym94X1pFUk9CWVRFUzogY3J5cHRvX3NlY3JldGJveF9aRVJPQllURVMsXG4gIGNyeXB0b19zZWNyZXRib3hfQk9YWkVST0JZVEVTOiBjcnlwdG9fc2VjcmV0Ym94X0JPWFpFUk9CWVRFUyxcbiAgY3J5cHRvX3NjYWxhcm11bHRfQllURVM6IGNyeXB0b19zY2FsYXJtdWx0X0JZVEVTLFxuICBjcnlwdG9fc2NhbGFybXVsdF9TQ0FMQVJCWVRFUzogY3J5cHRvX3NjYWxhcm11bHRfU0NBTEFSQllURVMsXG4gIGNyeXB0b19ib3hfUFVCTElDS0VZQllURVM6IGNyeXB0b19ib3hfUFVCTElDS0VZQllURVMsXG4gIGNyeXB0b19ib3hfU0VDUkVUS0VZQllURVM6IGNyeXB0b19ib3hfU0VDUkVUS0VZQllURVMsXG4gIGNyeXB0b19ib3hfQkVGT1JFTk1CWVRFUzogY3J5cHRvX2JveF9CRUZPUkVOTUJZVEVTLFxuICBjcnlwdG9fYm94X05PTkNFQllURVM6IGNyeXB0b19ib3hfTk9OQ0VCWVRFUyxcbiAgY3J5cHRvX2JveF9aRVJPQllURVM6IGNyeXB0b19ib3hfWkVST0JZVEVTLFxuICBjcnlwdG9fYm94X0JPWFpFUk9CWVRFUzogY3J5cHRvX2JveF9CT1haRVJPQllURVMsXG4gIGNyeXB0b19zaWduX0JZVEVTOiBjcnlwdG9fc2lnbl9CWVRFUyxcbiAgY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVM6IGNyeXB0b19zaWduX1BVQkxJQ0tFWUJZVEVTLFxuICBjcnlwdG9fc2lnbl9TRUNSRVRLRVlCWVRFUzogY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMsXG4gIGNyeXB0b19zaWduX1NFRURCWVRFUzogY3J5cHRvX3NpZ25fU0VFREJZVEVTLFxuICBjcnlwdG9faGFzaF9CWVRFUzogY3J5cHRvX2hhc2hfQllURVNcbn07XG5cbi8qIEhpZ2gtbGV2ZWwgQVBJICovXG5cbmZ1bmN0aW9uIGNoZWNrTGVuZ3RocyhrLCBuKSB7XG4gIGlmIChrLmxlbmd0aCAhPT0gY3J5cHRvX3NlY3JldGJveF9LRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdiYWQga2V5IHNpemUnKTtcbiAgaWYgKG4ubGVuZ3RoICE9PSBjcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVMpIHRocm93IG5ldyBFcnJvcignYmFkIG5vbmNlIHNpemUnKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tCb3hMZW5ndGhzKHBrLCBzaykge1xuICBpZiAocGsubGVuZ3RoICE9PSBjcnlwdG9fYm94X1BVQkxJQ0tFWUJZVEVTKSB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBwdWJsaWMga2V5IHNpemUnKTtcbiAgaWYgKHNrLmxlbmd0aCAhPT0gY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdiYWQgc2VjcmV0IGtleSBzaXplJyk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQXJyYXlUeXBlcygpIHtcbiAgdmFyIHQsIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgaWYgKCh0ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50c1tpXSkpICE9PSAnW29iamVjdCBVaW50OEFycmF5XScpXG4gICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5leHBlY3RlZCB0eXBlICcgKyB0ICsgJywgdXNlIFVpbnQ4QXJyYXknKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhbnVwKGFycikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgYXJyW2ldID0gMDtcbn1cblxuLy8gVE9ETzogQ29tcGxldGVseSByZW1vdmUgdGhpcyBpbiB2MC4xNS5cbmlmICghbmFjbC51dGlsKSB7XG4gIG5hY2wudXRpbCA9IHt9O1xuICBuYWNsLnV0aWwuZGVjb2RlVVRGOCA9IG5hY2wudXRpbC5lbmNvZGVVVEY4ID0gbmFjbC51dGlsLmVuY29kZUJhc2U2NCA9IG5hY2wudXRpbC5kZWNvZGVCYXNlNjQgPSBmdW5jdGlvbigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ25hY2wudXRpbCBtb3ZlZCBpbnRvIHNlcGFyYXRlIHBhY2thZ2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY2hlc3QvdHdlZXRuYWNsLXV0aWwtanMnKTtcbiAgfTtcbn1cblxubmFjbC5yYW5kb21CeXRlcyA9IGZ1bmN0aW9uKG4pIHtcbiAgdmFyIGIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgcmFuZG9tYnl0ZXMoYiwgbik7XG4gIHJldHVybiBiO1xufTtcblxubmFjbC5zZWNyZXRib3ggPSBmdW5jdGlvbihtc2csIG5vbmNlLCBrZXkpIHtcbiAgY2hlY2tBcnJheVR5cGVzKG1zZywgbm9uY2UsIGtleSk7XG4gIGNoZWNrTGVuZ3RocyhrZXksIG5vbmNlKTtcbiAgdmFyIG0gPSBuZXcgVWludDhBcnJheShjcnlwdG9fc2VjcmV0Ym94X1pFUk9CWVRFUyArIG1zZy5sZW5ndGgpO1xuICB2YXIgYyA9IG5ldyBVaW50OEFycmF5KG0ubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIG1baStjcnlwdG9fc2VjcmV0Ym94X1pFUk9CWVRFU10gPSBtc2dbaV07XG4gIGNyeXB0b19zZWNyZXRib3goYywgbSwgbS5sZW5ndGgsIG5vbmNlLCBrZXkpO1xuICByZXR1cm4gYy5zdWJhcnJheShjcnlwdG9fc2VjcmV0Ym94X0JPWFpFUk9CWVRFUyk7XG59O1xuXG5uYWNsLnNlY3JldGJveC5vcGVuID0gZnVuY3Rpb24oYm94LCBub25jZSwga2V5KSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhib3gsIG5vbmNlLCBrZXkpO1xuICBjaGVja0xlbmd0aHMoa2V5LCBub25jZSk7XG4gIHZhciBjID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NlY3JldGJveF9CT1haRVJPQllURVMgKyBib3gubGVuZ3RoKTtcbiAgdmFyIG0gPSBuZXcgVWludDhBcnJheShjLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYm94Lmxlbmd0aDsgaSsrKSBjW2krY3J5cHRvX3NlY3JldGJveF9CT1haRVJPQllURVNdID0gYm94W2ldO1xuICBpZiAoYy5sZW5ndGggPCAzMikgcmV0dXJuIGZhbHNlO1xuICBpZiAoY3J5cHRvX3NlY3JldGJveF9vcGVuKG0sIGMsIGMubGVuZ3RoLCBub25jZSwga2V5KSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gbS5zdWJhcnJheShjcnlwdG9fc2VjcmV0Ym94X1pFUk9CWVRFUyk7XG59O1xuXG5uYWNsLnNlY3JldGJveC5rZXlMZW5ndGggPSBjcnlwdG9fc2VjcmV0Ym94X0tFWUJZVEVTO1xubmFjbC5zZWNyZXRib3gubm9uY2VMZW5ndGggPSBjcnlwdG9fc2VjcmV0Ym94X05PTkNFQllURVM7XG5uYWNsLnNlY3JldGJveC5vdmVyaGVhZExlbmd0aCA9IGNyeXB0b19zZWNyZXRib3hfQk9YWkVST0JZVEVTO1xuXG5uYWNsLnNjYWxhck11bHQgPSBmdW5jdGlvbihuLCBwKSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhuLCBwKTtcbiAgaWYgKG4ubGVuZ3RoICE9PSBjcnlwdG9fc2NhbGFybXVsdF9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdiYWQgbiBzaXplJyk7XG4gIGlmIChwLmxlbmd0aCAhPT0gY3J5cHRvX3NjYWxhcm11bHRfQllURVMpIHRocm93IG5ldyBFcnJvcignYmFkIHAgc2l6ZScpO1xuICB2YXIgcSA9IG5ldyBVaW50OEFycmF5KGNyeXB0b19zY2FsYXJtdWx0X0JZVEVTKTtcbiAgY3J5cHRvX3NjYWxhcm11bHQocSwgbiwgcCk7XG4gIHJldHVybiBxO1xufTtcblxubmFjbC5zY2FsYXJNdWx0LmJhc2UgPSBmdW5jdGlvbihuKSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhuKTtcbiAgaWYgKG4ubGVuZ3RoICE9PSBjcnlwdG9fc2NhbGFybXVsdF9TQ0FMQVJCWVRFUykgdGhyb3cgbmV3IEVycm9yKCdiYWQgbiBzaXplJyk7XG4gIHZhciBxID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NjYWxhcm11bHRfQllURVMpO1xuICBjcnlwdG9fc2NhbGFybXVsdF9iYXNlKHEsIG4pO1xuICByZXR1cm4gcTtcbn07XG5cbm5hY2wuc2NhbGFyTXVsdC5zY2FsYXJMZW5ndGggPSBjcnlwdG9fc2NhbGFybXVsdF9TQ0FMQVJCWVRFUztcbm5hY2wuc2NhbGFyTXVsdC5ncm91cEVsZW1lbnRMZW5ndGggPSBjcnlwdG9fc2NhbGFybXVsdF9CWVRFUztcblxubmFjbC5ib3ggPSBmdW5jdGlvbihtc2csIG5vbmNlLCBwdWJsaWNLZXksIHNlY3JldEtleSkge1xuICB2YXIgayA9IG5hY2wuYm94LmJlZm9yZShwdWJsaWNLZXksIHNlY3JldEtleSk7XG4gIHJldHVybiBuYWNsLnNlY3JldGJveChtc2csIG5vbmNlLCBrKTtcbn07XG5cbm5hY2wuYm94LmJlZm9yZSA9IGZ1bmN0aW9uKHB1YmxpY0tleSwgc2VjcmV0S2V5KSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhwdWJsaWNLZXksIHNlY3JldEtleSk7XG4gIGNoZWNrQm94TGVuZ3RocyhwdWJsaWNLZXksIHNlY3JldEtleSk7XG4gIHZhciBrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX2JveF9CRUZPUkVOTUJZVEVTKTtcbiAgY3J5cHRvX2JveF9iZWZvcmVubShrLCBwdWJsaWNLZXksIHNlY3JldEtleSk7XG4gIHJldHVybiBrO1xufTtcblxubmFjbC5ib3guYWZ0ZXIgPSBuYWNsLnNlY3JldGJveDtcblxubmFjbC5ib3gub3BlbiA9IGZ1bmN0aW9uKG1zZywgbm9uY2UsIHB1YmxpY0tleSwgc2VjcmV0S2V5KSB7XG4gIHZhciBrID0gbmFjbC5ib3guYmVmb3JlKHB1YmxpY0tleSwgc2VjcmV0S2V5KTtcbiAgcmV0dXJuIG5hY2wuc2VjcmV0Ym94Lm9wZW4obXNnLCBub25jZSwgayk7XG59O1xuXG5uYWNsLmJveC5vcGVuLmFmdGVyID0gbmFjbC5zZWNyZXRib3gub3BlbjtcblxubmFjbC5ib3gua2V5UGFpciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcGsgPSBuZXcgVWludDhBcnJheShjcnlwdG9fYm94X1BVQkxJQ0tFWUJZVEVTKTtcbiAgdmFyIHNrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUyk7XG4gIGNyeXB0b19ib3hfa2V5cGFpcihwaywgc2spO1xuICByZXR1cm4ge3B1YmxpY0tleTogcGssIHNlY3JldEtleTogc2t9O1xufTtcblxubmFjbC5ib3gua2V5UGFpci5mcm9tU2VjcmV0S2V5ID0gZnVuY3Rpb24oc2VjcmV0S2V5KSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhzZWNyZXRLZXkpO1xuICBpZiAoc2VjcmV0S2V5Lmxlbmd0aCAhPT0gY3J5cHRvX2JveF9TRUNSRVRLRVlCWVRFUylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBzZWNyZXQga2V5IHNpemUnKTtcbiAgdmFyIHBrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX2JveF9QVUJMSUNLRVlCWVRFUyk7XG4gIGNyeXB0b19zY2FsYXJtdWx0X2Jhc2UocGssIHNlY3JldEtleSk7XG4gIHJldHVybiB7cHVibGljS2V5OiBwaywgc2VjcmV0S2V5OiBuZXcgVWludDhBcnJheShzZWNyZXRLZXkpfTtcbn07XG5cbm5hY2wuYm94LnB1YmxpY0tleUxlbmd0aCA9IGNyeXB0b19ib3hfUFVCTElDS0VZQllURVM7XG5uYWNsLmJveC5zZWNyZXRLZXlMZW5ndGggPSBjcnlwdG9fYm94X1NFQ1JFVEtFWUJZVEVTO1xubmFjbC5ib3guc2hhcmVkS2V5TGVuZ3RoID0gY3J5cHRvX2JveF9CRUZPUkVOTUJZVEVTO1xubmFjbC5ib3gubm9uY2VMZW5ndGggPSBjcnlwdG9fYm94X05PTkNFQllURVM7XG5uYWNsLmJveC5vdmVyaGVhZExlbmd0aCA9IG5hY2wuc2VjcmV0Ym94Lm92ZXJoZWFkTGVuZ3RoO1xuXG5uYWNsLnNpZ24gPSBmdW5jdGlvbihtc2csIHNlY3JldEtleSkge1xuICBjaGVja0FycmF5VHlwZXMobXNnLCBzZWNyZXRLZXkpO1xuICBpZiAoc2VjcmV0S2V5Lmxlbmd0aCAhPT0gY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgc2VjcmV0IGtleSBzaXplJyk7XG4gIHZhciBzaWduZWRNc2cgPSBuZXcgVWludDhBcnJheShjcnlwdG9fc2lnbl9CWVRFUyttc2cubGVuZ3RoKTtcbiAgY3J5cHRvX3NpZ24oc2lnbmVkTXNnLCBtc2csIG1zZy5sZW5ndGgsIHNlY3JldEtleSk7XG4gIHJldHVybiBzaWduZWRNc2c7XG59O1xuXG5uYWNsLnNpZ24ub3BlbiA9IGZ1bmN0aW9uKHNpZ25lZE1zZywgcHVibGljS2V5KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSAyKVxuICAgIHRocm93IG5ldyBFcnJvcignbmFjbC5zaWduLm9wZW4gYWNjZXB0cyAyIGFyZ3VtZW50czsgZGlkIHlvdSBtZWFuIHRvIHVzZSBuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5PycpO1xuICBjaGVja0FycmF5VHlwZXMoc2lnbmVkTXNnLCBwdWJsaWNLZXkpO1xuICBpZiAocHVibGljS2V5Lmxlbmd0aCAhPT0gY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgcHVibGljIGtleSBzaXplJyk7XG4gIHZhciB0bXAgPSBuZXcgVWludDhBcnJheShzaWduZWRNc2cubGVuZ3RoKTtcbiAgdmFyIG1sZW4gPSBjcnlwdG9fc2lnbl9vcGVuKHRtcCwgc2lnbmVkTXNnLCBzaWduZWRNc2cubGVuZ3RoLCBwdWJsaWNLZXkpO1xuICBpZiAobWxlbiA8IDApIHJldHVybiBudWxsO1xuICB2YXIgbSA9IG5ldyBVaW50OEFycmF5KG1sZW4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspIG1baV0gPSB0bXBbaV07XG4gIHJldHVybiBtO1xufTtcblxubmFjbC5zaWduLmRldGFjaGVkID0gZnVuY3Rpb24obXNnLCBzZWNyZXRLZXkpIHtcbiAgdmFyIHNpZ25lZE1zZyA9IG5hY2wuc2lnbihtc2csIHNlY3JldEtleSk7XG4gIHZhciBzaWcgPSBuZXcgVWludDhBcnJheShjcnlwdG9fc2lnbl9CWVRFUyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2lnLmxlbmd0aDsgaSsrKSBzaWdbaV0gPSBzaWduZWRNc2dbaV07XG4gIHJldHVybiBzaWc7XG59O1xuXG5uYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5ID0gZnVuY3Rpb24obXNnLCBzaWcsIHB1YmxpY0tleSkge1xuICBjaGVja0FycmF5VHlwZXMobXNnLCBzaWcsIHB1YmxpY0tleSk7XG4gIGlmIChzaWcubGVuZ3RoICE9PSBjcnlwdG9fc2lnbl9CWVRFUylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBzaWduYXR1cmUgc2l6ZScpO1xuICBpZiAocHVibGljS2V5Lmxlbmd0aCAhPT0gY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgcHVibGljIGtleSBzaXplJyk7XG4gIHZhciBzbSA9IG5ldyBVaW50OEFycmF5KGNyeXB0b19zaWduX0JZVEVTICsgbXNnLmxlbmd0aCk7XG4gIHZhciBtID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NpZ25fQllURVMgKyBtc2cubGVuZ3RoKTtcbiAgdmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBjcnlwdG9fc2lnbl9CWVRFUzsgaSsrKSBzbVtpXSA9IHNpZ1tpXTtcbiAgZm9yIChpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykgc21baStjcnlwdG9fc2lnbl9CWVRFU10gPSBtc2dbaV07XG4gIHJldHVybiAoY3J5cHRvX3NpZ25fb3BlbihtLCBzbSwgc20ubGVuZ3RoLCBwdWJsaWNLZXkpID49IDApO1xufTtcblxubmFjbC5zaWduLmtleVBhaXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHBrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpO1xuICB2YXIgc2sgPSBuZXcgVWludDhBcnJheShjcnlwdG9fc2lnbl9TRUNSRVRLRVlCWVRFUyk7XG4gIGNyeXB0b19zaWduX2tleXBhaXIocGssIHNrKTtcbiAgcmV0dXJuIHtwdWJsaWNLZXk6IHBrLCBzZWNyZXRLZXk6IHNrfTtcbn07XG5cbm5hY2wuc2lnbi5rZXlQYWlyLmZyb21TZWNyZXRLZXkgPSBmdW5jdGlvbihzZWNyZXRLZXkpIHtcbiAgY2hlY2tBcnJheVR5cGVzKHNlY3JldEtleSk7XG4gIGlmIChzZWNyZXRLZXkubGVuZ3RoICE9PSBjcnlwdG9fc2lnbl9TRUNSRVRLRVlCWVRFUylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBzZWNyZXQga2V5IHNpemUnKTtcbiAgdmFyIHBrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NpZ25fUFVCTElDS0VZQllURVMpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBrLmxlbmd0aDsgaSsrKSBwa1tpXSA9IHNlY3JldEtleVszMitpXTtcbiAgcmV0dXJuIHtwdWJsaWNLZXk6IHBrLCBzZWNyZXRLZXk6IG5ldyBVaW50OEFycmF5KHNlY3JldEtleSl9O1xufTtcblxubmFjbC5zaWduLmtleVBhaXIuZnJvbVNlZWQgPSBmdW5jdGlvbihzZWVkKSB7XG4gIGNoZWNrQXJyYXlUeXBlcyhzZWVkKTtcbiAgaWYgKHNlZWQubGVuZ3RoICE9PSBjcnlwdG9fc2lnbl9TRUVEQllURVMpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgc2VlZCBzaXplJyk7XG4gIHZhciBwayA9IG5ldyBVaW50OEFycmF5KGNyeXB0b19zaWduX1BVQkxJQ0tFWUJZVEVTKTtcbiAgdmFyIHNrID0gbmV3IFVpbnQ4QXJyYXkoY3J5cHRvX3NpZ25fU0VDUkVUS0VZQllURVMpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspIHNrW2ldID0gc2VlZFtpXTtcbiAgY3J5cHRvX3NpZ25fa2V5cGFpcihwaywgc2ssIHRydWUpO1xuICByZXR1cm4ge3B1YmxpY0tleTogcGssIHNlY3JldEtleTogc2t9O1xufTtcblxubmFjbC5zaWduLnB1YmxpY0tleUxlbmd0aCA9IGNyeXB0b19zaWduX1BVQkxJQ0tFWUJZVEVTO1xubmFjbC5zaWduLnNlY3JldEtleUxlbmd0aCA9IGNyeXB0b19zaWduX1NFQ1JFVEtFWUJZVEVTO1xubmFjbC5zaWduLnNlZWRMZW5ndGggPSBjcnlwdG9fc2lnbl9TRUVEQllURVM7XG5uYWNsLnNpZ24uc2lnbmF0dXJlTGVuZ3RoID0gY3J5cHRvX3NpZ25fQllURVM7XG5cbm5hY2wuaGFzaCA9IGZ1bmN0aW9uKG1zZykge1xuICBjaGVja0FycmF5VHlwZXMobXNnKTtcbiAgdmFyIGggPSBuZXcgVWludDhBcnJheShjcnlwdG9faGFzaF9CWVRFUyk7XG4gIGNyeXB0b19oYXNoKGgsIG1zZywgbXNnLmxlbmd0aCk7XG4gIHJldHVybiBoO1xufTtcblxubmFjbC5oYXNoLmhhc2hMZW5ndGggPSBjcnlwdG9faGFzaF9CWVRFUztcblxubmFjbC52ZXJpZnkgPSBmdW5jdGlvbih4LCB5KSB7XG4gIGNoZWNrQXJyYXlUeXBlcyh4LCB5KTtcbiAgLy8gWmVybyBsZW5ndGggYXJndW1lbnRzIGFyZSBjb25zaWRlcmVkIG5vdCBlcXVhbC5cbiAgaWYgKHgubGVuZ3RoID09PSAwIHx8IHkubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG4gIGlmICh4Lmxlbmd0aCAhPT0geS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICh2bih4LCAwLCB5LCAwLCB4Lmxlbmd0aCkgPT09IDApID8gdHJ1ZSA6IGZhbHNlO1xufTtcblxubmFjbC5zZXRQUk5HID0gZnVuY3Rpb24oZm4pIHtcbiAgcmFuZG9tYnl0ZXMgPSBmbjtcbn07XG5cbihmdW5jdGlvbigpIHtcbiAgLy8gSW5pdGlhbGl6ZSBQUk5HIGlmIGVudmlyb25tZW50IHByb3ZpZGVzIENTUFJORy5cbiAgLy8gSWYgbm90LCBtZXRob2RzIGNhbGxpbmcgcmFuZG9tYnl0ZXMgd2lsbCB0aHJvdy5cbiAgdmFyIGNyeXB0byA9IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IChzZWxmLmNyeXB0byB8fCBzZWxmLm1zQ3J5cHRvKSA6IG51bGw7XG4gIGlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIEJyb3dzZXJzLlxuICAgIHZhciBRVU9UQSA9IDY1NTM2O1xuICAgIG5hY2wuc2V0UFJORyhmdW5jdGlvbih4LCBuKSB7XG4gICAgICB2YXIgaSwgdiA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkgKz0gUVVPVEEpIHtcbiAgICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2LnN1YmFycmF5KGksIGkgKyBNYXRoLm1pbihuIC0gaSwgUVVPVEEpKSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB4W2ldID0gdltpXTtcbiAgICAgIGNsZWFudXAodik7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJlcXVpcmUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gTm9kZS5qcy5cbiAgICBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAoY3J5cHRvICYmIGNyeXB0by5yYW5kb21CeXRlcykge1xuICAgICAgbmFjbC5zZXRQUk5HKGZ1bmN0aW9uKHgsIG4pIHtcbiAgICAgICAgdmFyIGksIHYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMobik7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHhbaV0gPSB2W2ldO1xuICAgICAgICBjbGVhbnVwKHYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KSgpO1xuXG59KSh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cyA/IG1vZHVsZS5leHBvcnRzIDogKHNlbGYubmFjbCA9IHNlbGYubmFjbCB8fCB7fSkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9+L3R3ZWV0bmFjbC9uYWNsLWZhc3QuanNcbi8vIG1vZHVsZSBpZCA9IDU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIChpZ25vcmVkKSAqL1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGNyeXB0byAoaWdub3JlZClcbi8vIG1vZHVsZSBpZCA9IDU1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/dist/bundle/bundle.min.js b/dist/bundle/bundle.min.js new file mode 100644 index 0000000..bc9170a --- /dev/null +++ b/dist/bundle/bundle.min.js @@ -0,0 +1,28 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["js-bigchaindb-quickstart"]=e():t["js-bigchaindb-quickstart"]=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=56)}([function(t,e,r){t.exports=!r(1)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,r){"use strict";(function(t){function n(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function i(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(t,e){if(i()=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|t}function v(t){return+t!=t&&(t=0),a.alloc(+t)}function y(t,e){if(a.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return G(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return X(t).length;default:if(n)return G(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function m(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function w(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=a.from(e,n)),a.isBuffer(e))return 0===e.length?-1:_(t,e,r,n,i);if("number"==typeof e)return e&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):_(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,f=t.length,s=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,f/=2,s/=2,r/=2}var u;if(i){var h=-1;for(u=r;uf&&(r=f-s),u=r;u>=0;u--){for(var c=!0,d=0;di&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+f<=r){var s,u,h,c;switch(f){case 1:o<128&&(a=o);break;case 2:s=t[i+1],128===(192&s)&&(c=(31&o)<<6|63&s,c>127&&(a=c));break;case 3:s=t[i+1],u=t[i+2],128===(192&s)&&128===(192&u)&&(c=(15&o)<<12|(63&s)<<6|63&u,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:s=t[i+1],u=t[i+2],h=t[i+3],128===(192&s)&&128===(192&u)&&128===(192&h)&&(c=(15&o)<<18|(63&s)<<12|(63&u)<<6|63&h,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,f=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=f}return O(n)}function O(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function U(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function N(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(t,e,r,n,i){return i||z(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(t,e,r,n,23,4),r+4}function F(t,e,r,n,i){return i||z(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(t,e,r,n,52,8),r+8}function q(t){if(t=K(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function K(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function Y(t){return t<16?"0"+t.toString(16):t.toString(16)}function G(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function X(t){return J.toByteArray(q(t))}function W(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t){return t!==t}var J=r(15),$=r(46),Q=r(47);e.Buffer=a,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,a.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:n(),e.kMaxLength=i(),a.poolSize=8192,a._augment=function(t){return t.__proto__=a.prototype,t},a.from=function(t,e,r){return f(null,t,e,r)},a.TYPED_ARRAY_SUPPORT&&(a.prototype.__proto__=Uint8Array.prototype,a.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&a[Symbol.species]===a&&Object.defineProperty(a,Symbol.species,{value:null,configurable:!0})),a.alloc=function(t,e,r){return u(null,t,e,r)},a.allocUnsafe=function(t){return h(null,t)},a.allocUnsafeSlow=function(t){return h(null,t)},a.isBuffer=function(t){return!(null==t||!t._isBuffer)},a.compare=function(t,e){if(!a.isBuffer(t)||!a.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},a.prototype.compare=function(t,e,r,n,i){if(!a.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(e>>>=0,r>>>=0,n>>>=0,i>>>=0,this===t)return 0;for(var o=i-n,f=r-e,s=Math.min(o,f),u=this.slice(n,i),h=t.slice(e,r),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return E(this,t,e,r);case"latin1":case"binary":return A(this,t,e,r);case"base64":return x(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;a.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),e0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return e||C(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return e||C(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return e||C(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return e||C(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},a.prototype.readInt8=function(t,e){return e||C(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},a.prototype.readInt16LE=function(t,e){e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return e||C(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return e||C(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;U(this,t,e,r,i,0)}var o=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+o]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,1,255,0),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):L(this,t,e,!0),e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}var o=0,a=1,f=0;for(this[e]=255&t;++o>0)-f&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}var o=r-1,a=1,f=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===f&&0!==this[e+o+1]&&(f=1),this[e+o]=(t/a>>0)-f&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,1,127,-128),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):L(this,t,e,!0),e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||U(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):L(this,t,e,!1),e+4},a.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!a.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0);var o;if("number"==typeof t)for(o=e;o0?n:r)(t)}},function(t,e,r){var n=r(7),i=r(6);t.exports=function(t){return n(i(t))}},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";function n(){var t=A.a.sign.keyPair();this.publicKey=m.a.encode(t.publicKey),this.privateKey=m.a.encode(t.secretKey.slice(0,32))}function i(t){var e=new y.Buffer(m.a.decode(t)),r=new S.a.Ed25519;r.setPublicKey(e);var n=r.getConditionUri();return{details:{signature:null,type_id:4,type:"fulfillment",bitmask:32,public_key:t},uri:n}}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return{amount:e,condition:t,public_keys:[t.details.public_key]}}function a(t,e,r){for(var n={data:t||null},i=arguments.length,o=Array(i>3?i-3:0),a=3;a3?n-3:0),o=3;o1?e-1:0),n=1;n0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{fulfillment:r,fulfills:e,owners_before:t}}function c(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],o=u();return o.operation=t,o.asset=e,o.metadata=r,o.inputs=i,o.outputs=n,o.id=d(o),o}function d(t){var e=v()({},t);return delete e.id,l(p(e))}function l(t){return k.a.sha3_256.create().update(t).hex()}function p(t){var e=_()(t);return e.inputs.forEach(function(t){t.fulfillment=null}),B()(e,function(t,e){return t.key>e.key?1:-1})}Object.defineProperty(e,"__esModule",{value:!0});var b=r(13),v=r.n(b),y=r(4),g=(r.n(y),r(16)),m=r.n(g),w=r(17),_=r.n(w),M=r(45),S=r.n(M),E=r(54),A=r.n(E),x=r(48),k=r.n(x),I=r(49),B=r.n(I);e.Ed25519Keypair=n,e.makeEd25519Condition=i,e.makeOutput=o,e.makeCreateTransaction=a,e.makeTransferTransaction=f,e.signTransaction=s},function(t,e,r){t.exports={default:r(18),__esModule:!0}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var i=r(12),o=n(i);e.default=o.default||function(t){for(var e=1;e0;)r.push(o%a),o=o/a|0}for(var f="",s=0;0===e[s]&&s=0;--u)f+=t[r[u]];return f}function n(t){if(0===t.length)return e.allocUnsafe(0);for(var r=[0],n=0;n>=8;for(;u>0;)r.push(255&u),u>>=8}for(var h=0;t[h]===f&&h0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function i(t){return 3*t.length/4-n(t)}function o(t){var e,r,i,o,a,f,s=t.length;a=n(t),f=new c(3*s/4-a),i=a>0?s-4:s;var u=0;for(e=0,r=0;e>16&255,f[u++]=o>>8&255,f[u++]=255&o;return 2===a?(o=h[t.charCodeAt(e)]<<2|h[t.charCodeAt(e+1)]>>4,f[u++]=255&o):1===a&&(o=h[t.charCodeAt(e)]<<10|h[t.charCodeAt(e+1)]<<4|h[t.charCodeAt(e+2)]>>2,f[u++]=o>>8&255,f[u++]=255&o),f}function a(t){return u[t>>18&63]+u[t>>12&63]+u[t>>6&63]+u[63&t]}function f(t,e,r){for(var n,i=[],o=e;oh?h:s+a));return 1===n?(e=t[r-1],i+=u[e>>2],i+=u[e<<4&63],i+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=u[e>>10],i+=u[e>>4&63],i+=u[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=i,e.toByteArray=o,e.fromByteArray=s;for(var u=[],h=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=d.length;lh;)if(f=s[h++],f!=f)return!0}else for(;u>h;h++)if((t||h in s)&&s[h]===r)return t||h||0;return!t&&-1}}},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e,r){var n=r(19);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(3),i=r(2).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,r){var n=r(2),i=r(5),o=r(23),a=r(28),f="prototype",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,g=l?i:i[e]||(i[e]={}),m=g[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in g||(c=h?w[u]:r[u],g[u]=l&&"function"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&"function"==typeof c?o(Function.call,c):c,b&&((g.virtual||(g.virtual={}))[u]=c,t&s.R&&m&&!m[u]&&a(m,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e,r){var n=r(31),i=r(36);t.exports=r(0)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(0)&&!r(1)(function(){return 7!=Object.defineProperty(r(24)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){"use strict";var n=r(34),i=r(32),o=r(35),a=r(41),f=r(7),s=Object.assign;t.exports=!s||r(1)(function(){var t={},e={},r=Symbol(),n="abcdefghijklmnopqrst";return t[r]=7,n.split("").forEach(function(t){e[t]=t}),7!=s({},t)[r]||Object.keys(s({},e)).join("")!=n})?function(t,e){for(var r=a(t),s=arguments.length,u=1,h=i.f,c=o.f;s>u;)for(var d,l=f(arguments[u++]),p=h?n(l).concat(h(l)):n(l),b=p.length,v=0;b>v;)c.call(l,d=p[v++])&&(r[d]=l[d]); +return r}:s},function(t,e,r){var n=r(20),i=r(29),o=r(42),a=Object.defineProperty;e.f=r(0)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(27),i=r(9),o=r(21)(!1),a=r(37)("IE_PROTO");t.exports=function(t,e){var r,f=i(t),s=0,u=[];for(r in f)r!=a&&n(f,r)&&u.push(r);for(;e.length>s;)n(f,r=e[s++])&&(~o(u,r)||u.push(r));return u}},function(t,e,r){var n=r(33),i=r(25);t.exports=Object.keys||function(t){return n(t,i)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(38)("keys"),i=r(43);t.exports=function(t){return n[t]||(n[t]=i(t))}},function(t,e,r){var n=r(2),i="__core-js_shared__",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){var n=r(8),i=Math.max,o=Math.min;t.exports=function(t,e){return t=n(t),t<0?i(t+e,0):o(t,e)}},function(t,e,r){var n=r(8),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(6);t.exports=function(t){return Object(n(t))}},function(t,e,r){var n=r(3);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+n).toString(36))}},function(t,e,r){var n=r(26);n(n.S+n.F,"Object",{assign:r(30)})},function(module,exports,__webpack_require__){!function(t,e){module.exports=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,e,r){Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=613)}([function(t,e,r){var n=r(4),i=r(32),o=r(14),a=r(15),f=r(33),s="prototype",u=function(t,e,r){var h,c,d,l,p=t&u.F,b=t&u.G,v=t&u.S,y=t&u.P,g=t&u.B,m=b?n:v?n[e]||(n[e]={}):(n[e]||{})[s],w=b?i:i[e]||(i[e]={}),_=w[s]||(w[s]={});b&&(r=e);for(h in r)c=!p&&m&&void 0!==m[h],d=(c?m:r)[h],l=g&&c?f(d,n):y&&"function"==typeof d?f(Function.call,d):d,m&&a(m,h,d,t&u.U),w[h]!=d&&o(w,h,l),y&&_[h]!=d&&(_[h]=d)};n.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,r){"use strict";(function(t,n){function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,r){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function v(e){return+e!=e&&(e=0),t.alloc(+e)}function y(e,r){if(t.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(r){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return X(e).length;default:if(i)return G(e).length;r=(""+r).toLowerCase(),i=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,e>>>=0,r<=e)return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return B(this,e,r);case"ascii":return R(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function m(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function w(e,r,n,i,o){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof r&&(r=t.from(r,i)),t.isBuffer(r))return 0===r.length?-1:_(e,r,n,i,o);if("number"==typeof r)return r&=255,t.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):_(e,[r],n,i,o);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,f=t.length,s=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),"ucs2"===n||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,f/=2,s/=2,r/=2}var u;if(i){var h=-1;for(u=r;uf&&(r=f-s),u=r;u>=0;u--){for(var c=!0,d=0;di&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+f<=r){var s,u,h,c;switch(f){case 1:o<128&&(a=o);break;case 2:s=t[i+1],128===(192&s)&&(c=(31&o)<<6|63&s,c>127&&(a=c));break;case 3:s=t[i+1],u=t[i+2],128===(192&s)&&128===(192&u)&&(c=(15&o)<<12|(63&s)<<6|63&u,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:s=t[i+1],u=t[i+2],h=t[i+3],128===(192&s)&&128===(192&u)&&128===(192&h)&&(c=(15&o)<<18|(63&s)<<12|(63&u)<<6|63&h,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,f=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=f}return O(n)}function O(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function U(e,r,n,i,o,a){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||re.length)throw new RangeError("Index out of range")}function N(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function L(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(t,e,r,n,i){return i||z(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(t,e,r,n,23,4),r+4}function F(t,e,r,n,i){return i||z(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(t,e,r,n,52,8),r+8}function q(t){if(t=K(t).replace(et,""),t.length<2)return"";for(;t.length%4!==0;)t+="=";return t}function K(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function Y(t){return t<16?"0"+t.toString(16):t.toString(16)}function G(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function V(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function X(t){return J.toByteArray(q(t))}function W(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t){return t!==t}var J=r(490),$=r(491),Q=r(492);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,r){return f(null,t,e,r)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,r){return u(null,t,e,r)},t.allocUnsafe=function(t){return h(null,t)},t.allocUnsafeSlow=function(t){return h(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,r){if(!t.isBuffer(e)||!t.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,a=Math.min(n,i);o0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},t.prototype.compare=function(e,r,n,i,o){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var a=o-i,f=n-r,s=Math.min(a,f),u=this.slice(i,o),h=e.slice(r,n),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return E(this,t,e,r);case"latin1":case"binary":return A(this,t,e,r);case"base64":return x(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,r){var n=this.length;e=~~e,r=void 0===r?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--e]*i;return n},t.prototype.readUInt8=function(t,e){return e||C(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||C(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||C(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||C(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},t.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||C(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(t,e){e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(t,e){return e||C(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||C(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;U(this,t,e,r,i,0)}var o=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+o]=t/a&255;return e+r},t.prototype.writeUInt8=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},t.prototype.writeUInt16LE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):N(this,e,r,!0),r+2},t.prototype.writeUInt16BE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):N(this,e,r,!1),r+2},t.prototype.writeUInt32LE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):L(this,e,r,!0),r+4},t.prototype.writeUInt32BE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):L(this,e,r,!1),r+4},t.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}var o=0,a=1,f=0;for(this[e]=255&t;++o>0)-f&255;return e+r},t.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}var o=r-1,a=1,f=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===f&&0!==this[e+o+1]&&(f=1),this[e+o]=(t/a>>0)-f&255;return e+r},t.prototype.writeInt8=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},t.prototype.writeInt16LE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):N(this,e,r,!0),r+2},t.prototype.writeInt16BE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):N(this,e,r,!1),r+2},t.prototype.writeInt32LE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):L(this,e,r,!0),r+4},t.prototype.writeInt32BE=function(e,r,n){return e=+e,r|=0,n||U(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):L(this,e,r,!1),r+4},t.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},t.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},t.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},t.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},t.prototype.copy=function(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(a<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=r;a0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(24);t.exports=function(t){return Object(n(t))}},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(9),i=r(37);t.exports=r(8)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(4),i=r(14),o=r(12),a=r(48)("src"),f="toString",s=Function[f],u=(""+s).split(f);r(32).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,r,f){var s="function"==typeof r;s&&(o(r,"name")||i(r,"name",e)),t[e]!==r&&(s&&(o(r,a)||i(r,a,t[e]?""+t[e]:u.join(String(e)))),t===n?t[e]=r:f?t[e]?t[e]=r:i(t,e,r):(delete t[e],i(t,e,r)))})(Function.prototype,f,function(){return"function"==typeof this&&this[a]||s.call(this)})},function(t,e,r){var n=r(0),i=r(5),o=r(24),a=/"/g,f=function(t,e,r,n){var i=String(o(t)),f="<"+e;return""!==r&&(f+=" "+r+'="'+String(n).replace(a,""")+'"'),f+">"+i+""};t.exports=function(t,e){var r={};r[t]=e(f),n(n.P+n.F*i(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",r)}},function(t,e,r){var n=r(65),i=r(24);t.exports=function(t){return n(i(t))}},function(t,e,r){(function(t){!function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function m(t){g.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176]; +o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,g=v>>>13,m=0|a[3],w=8191&m,_=m>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],x=8191&A,k=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,U=j>>>13,N=0|a[9],L=8191&N,z=N>>>13,D=0|f[0],F=8191&D,q=D>>>13,K=0|f[1],Y=8191&K,G=K>>>13,V=0|f[2],H=8191&V,X=V>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,F),i=Math.imul(c,q),i=i+Math.imul(d,F)|0,o=Math.imul(d,q);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,F),i=Math.imul(p,q),i=i+Math.imul(b,F)|0,o=Math.imul(b,q),n=n+Math.imul(c,Y)|0,i=i+Math.imul(c,G)|0,i=i+Math.imul(d,Y)|0,o=o+Math.imul(d,G)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,F),i=Math.imul(y,q),i=i+Math.imul(g,F)|0,o=Math.imul(g,q),n=n+Math.imul(p,Y)|0,i=i+Math.imul(p,G)|0,i=i+Math.imul(b,Y)|0,o=o+Math.imul(b,G)|0,n=n+Math.imul(c,H)|0,i=i+Math.imul(c,X)|0,i=i+Math.imul(d,H)|0,o=o+Math.imul(d,X)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,F),i=Math.imul(w,q),i=i+Math.imul(_,F)|0,o=Math.imul(_,q),n=n+Math.imul(y,Y)|0,i=i+Math.imul(y,G)|0,i=i+Math.imul(g,Y)|0,o=o+Math.imul(g,G)|0,n=n+Math.imul(p,H)|0,i=i+Math.imul(p,X)|0,i=i+Math.imul(b,H)|0,o=o+Math.imul(b,X)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(S,F),i=Math.imul(S,q),i=i+Math.imul(E,F)|0,o=Math.imul(E,q),n=n+Math.imul(w,Y)|0,i=i+Math.imul(w,G)|0,i=i+Math.imul(_,Y)|0,o=o+Math.imul(_,G)|0,n=n+Math.imul(y,H)|0,i=i+Math.imul(y,X)|0,i=i+Math.imul(g,H)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(x,F),i=Math.imul(x,q),i=i+Math.imul(k,F)|0,o=Math.imul(k,q),n=n+Math.imul(S,Y)|0,i=i+Math.imul(S,G)|0,i=i+Math.imul(E,Y)|0,o=o+Math.imul(E,G)|0,n=n+Math.imul(w,H)|0,i=i+Math.imul(w,X)|0,i=i+Math.imul(_,H)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(g,Z)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,F),i=Math.imul(B,q),i=i+Math.imul(O,F)|0,o=Math.imul(O,q),n=n+Math.imul(x,Y)|0,i=i+Math.imul(x,G)|0,i=i+Math.imul(k,Y)|0,o=o+Math.imul(k,G)|0,n=n+Math.imul(S,H)|0,i=i+Math.imul(S,X)|0,i=i+Math.imul(E,H)|0,o=o+Math.imul(E,X)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,F),i=Math.imul(P,q),i=i+Math.imul(T,F)|0,o=Math.imul(T,q),n=n+Math.imul(B,Y)|0,i=i+Math.imul(B,G)|0,i=i+Math.imul(O,Y)|0,o=o+Math.imul(O,G)|0,n=n+Math.imul(x,H)|0,i=i+Math.imul(x,X)|0,i=i+Math.imul(k,H)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,F),i=Math.imul(C,q),i=i+Math.imul(U,F)|0,o=Math.imul(U,q),n=n+Math.imul(P,Y)|0,i=i+Math.imul(P,G)|0,i=i+Math.imul(T,Y)|0,o=o+Math.imul(T,G)|0,n=n+Math.imul(B,H)|0,i=i+Math.imul(B,X)|0,i=i+Math.imul(O,H)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Z)|0,i=i+Math.imul(x,J)|0,i=i+Math.imul(k,Z)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(g,ot)|0,o=o+Math.imul(g,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(L,F),i=Math.imul(L,q),i=i+Math.imul(z,F)|0,o=Math.imul(z,q),n=n+Math.imul(C,Y)|0,i=i+Math.imul(C,G)|0,i=i+Math.imul(U,Y)|0,o=o+Math.imul(U,G)|0,n=n+Math.imul(P,H)|0,i=i+Math.imul(P,X)|0,i=i+Math.imul(T,H)|0,o=o+Math.imul(T,X)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,Q)|0,i=i+Math.imul(x,tt)|0,i=i+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(g,st)|0,o=o+Math.imul(g,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(L,Y),i=Math.imul(L,G),i=i+Math.imul(z,Y)|0,o=Math.imul(z,G),n=n+Math.imul(C,H)|0,i=i+Math.imul(C,X)|0,i=i+Math.imul(U,H)|0,o=o+Math.imul(U,X)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=i+Math.imul(x,nt)|0,i=i+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(g,ct)|0,o=o+Math.imul(g,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,H),i=Math.imul(L,X),i=i+Math.imul(z,H)|0,o=Math.imul(z,X),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(U,Z)|0,o=o+Math.imul(U,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=i+Math.imul(x,at)|0,i=i+Math.imul(k,ot)|0,o=o+Math.imul(k,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(g,pt)|0,o=o+Math.imul(g,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(U,Q)|0,o=o+Math.imul(U,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(x,st)|0,i=i+Math.imul(x,ut)|0,i=i+Math.imul(k,st)|0,o=o+Math.imul(k,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(U,rt)|0,o=o+Math.imul(U,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(x,ct)|0,i=i+Math.imul(x,dt)|0,i=i+Math.imul(k,ct)|0,o=o+Math.imul(k,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(U,ot)|0,o=o+Math.imul(U,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(x,pt)|0,i=i+Math.imul(x,bt)|0,i=i+Math.imul(k,pt)|0,o=o+Math.imul(k,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(U,st)|0,o=o+Math.imul(U,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(L,st),i=Math.imul(L,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(U,ct)|0,o=o+Math.imul(U,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,ct),i=Math.imul(L,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(U,pt)|0,o=o+Math.imul(U,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=gt,s[3]=mt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=xt,s[11]=kt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new g(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},g.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},g.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},g.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},g.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},g.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},g.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},g.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},g.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},g.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},g.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},g.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},g.prototype.isqr=function(t){return this.imul(t,t.clone())},g.prototype.sqr=function(t){return this.mul(t,t)},g.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},g.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},g.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new m(t)},i(m,g),m.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},m.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},m.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},m.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},m.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){"use strict";var n=e;n.version=r(465).version,n.utils=r(521),n.rand=r(522),n.hmacDRBG=r(519),n.curve=r(99),n.curves=r(512),n.ec=r(513),n.eddsa=r(516)},function(t,e,r){var n=r(66),i=r(37),o=r(17),a=r(29),f=r(12),s=r(174),u=Object.getOwnPropertyDescriptor;e.f=r(8)?u:function(t,e){if(t=o(t),e=a(e,!0),s)try{return u(t,e)}catch(t){}if(f(t,e))return i(!n.f.call(t,e),t[e])}},function(t,e,r){var n=r(12),i=r(11),o=r(133)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,r){"use strict";var n=e;n.version=r(467).version,n.utils=r(558),n.rand=r(559),n.hmacDRBG=r(556),n.curve=r(104),n.curves=r(549),n.ec=r(550),n.eddsa=r(553)},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,r){var n=r(5);t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e){function r(){throw new Error("setTimeout has not been defined")}function n(){throw new Error("clearTimeout has not been defined")}function i(t){if(h===setTimeout)return setTimeout(t,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){b&&l&&(b=!1,l.length?p=l.concat(p):v=-1,p.length&&f())}function f(){if(!b){var t=i(a);b=!0;for(var e=p.length;e;){for(l=p,p=[];++v1)for(var r=1;r_;_++)if((d||_ in g)&&(b=g[_],v=m(b,_,y),t))if(r)M[_]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return _;case 2:M.push(b)}else if(h)return!1;return c?-1:u||h?h:M}}},function(t,e,r){var n=r(0),i=r(32),o=r(5);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],a={};a[t]=e(r),n(n.S+n.F*o(function(){r(1)}),"Object",a)}},function(t,e,r){var n=r(6);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){(function(t){!function(t,e){"use strict";function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function m(t){g.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,g=v>>>13,m=0|a[3],w=8191&m,_=m>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],x=8191&A,k=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,U=j>>>13,N=0|a[9],L=8191&N,z=N>>>13,D=0|f[0],F=8191&D,q=D>>>13,K=0|f[1],Y=8191&K,G=K>>>13,V=0|f[2],H=8191&V,X=V>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,F),i=Math.imul(c,q),i=i+Math.imul(d,F)|0,o=Math.imul(d,q);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,F),i=Math.imul(p,q),i=i+Math.imul(b,F)|0,o=Math.imul(b,q),n=n+Math.imul(c,Y)|0,i=i+Math.imul(c,G)|0,i=i+Math.imul(d,Y)|0,o=o+Math.imul(d,G)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,F),i=Math.imul(y,q),i=i+Math.imul(g,F)|0,o=Math.imul(g,q),n=n+Math.imul(p,Y)|0,i=i+Math.imul(p,G)|0,i=i+Math.imul(b,Y)|0,o=o+Math.imul(b,G)|0,n=n+Math.imul(c,H)|0,i=i+Math.imul(c,X)|0,i=i+Math.imul(d,H)|0,o=o+Math.imul(d,X)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,F),i=Math.imul(w,q),i=i+Math.imul(_,F)|0,o=Math.imul(_,q),n=n+Math.imul(y,Y)|0,i=i+Math.imul(y,G)|0,i=i+Math.imul(g,Y)|0,o=o+Math.imul(g,G)|0,n=n+Math.imul(p,H)|0,i=i+Math.imul(p,X)|0,i=i+Math.imul(b,H)|0,o=o+Math.imul(b,X)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(S,F),i=Math.imul(S,q),i=i+Math.imul(E,F)|0,o=Math.imul(E,q),n=n+Math.imul(w,Y)|0,i=i+Math.imul(w,G)|0,i=i+Math.imul(_,Y)|0,o=o+Math.imul(_,G)|0,n=n+Math.imul(y,H)|0,i=i+Math.imul(y,X)|0,i=i+Math.imul(g,H)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(x,F),i=Math.imul(x,q),i=i+Math.imul(k,F)|0,o=Math.imul(k,q),n=n+Math.imul(S,Y)|0,i=i+Math.imul(S,G)|0,i=i+Math.imul(E,Y)|0,o=o+Math.imul(E,G)|0,n=n+Math.imul(w,H)|0,i=i+Math.imul(w,X)|0,i=i+Math.imul(_,H)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(g,Z)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,F),i=Math.imul(B,q),i=i+Math.imul(O,F)|0,o=Math.imul(O,q),n=n+Math.imul(x,Y)|0,i=i+Math.imul(x,G)|0,i=i+Math.imul(k,Y)|0,o=o+Math.imul(k,G)|0,n=n+Math.imul(S,H)|0,i=i+Math.imul(S,X)|0,i=i+Math.imul(E,H)|0,o=o+Math.imul(E,X)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,F),i=Math.imul(P,q),i=i+Math.imul(T,F)|0,o=Math.imul(T,q),n=n+Math.imul(B,Y)|0,i=i+Math.imul(B,G)|0,i=i+Math.imul(O,Y)|0,o=o+Math.imul(O,G)|0,n=n+Math.imul(x,H)|0,i=i+Math.imul(x,X)|0,i=i+Math.imul(k,H)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,F),i=Math.imul(C,q),i=i+Math.imul(U,F)|0,o=Math.imul(U,q),n=n+Math.imul(P,Y)|0,i=i+Math.imul(P,G)|0,i=i+Math.imul(T,Y)|0,o=o+Math.imul(T,G)|0,n=n+Math.imul(B,H)|0,i=i+Math.imul(B,X)|0,i=i+Math.imul(O,H)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Z)|0,i=i+Math.imul(x,J)|0,i=i+Math.imul(k,Z)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(g,ot)|0,o=o+Math.imul(g,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(L,F),i=Math.imul(L,q),i=i+Math.imul(z,F)|0,o=Math.imul(z,q),n=n+Math.imul(C,Y)|0,i=i+Math.imul(C,G)|0,i=i+Math.imul(U,Y)|0,o=o+Math.imul(U,G)|0,n=n+Math.imul(P,H)|0,i=i+Math.imul(P,X)|0,i=i+Math.imul(T,H)|0,o=o+Math.imul(T,X)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,Q)|0,i=i+Math.imul(x,tt)|0,i=i+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(g,st)|0,o=o+Math.imul(g,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(L,Y),i=Math.imul(L,G),i=i+Math.imul(z,Y)|0,o=Math.imul(z,G),n=n+Math.imul(C,H)|0,i=i+Math.imul(C,X)|0,i=i+Math.imul(U,H)|0,o=o+Math.imul(U,X)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=i+Math.imul(x,nt)|0,i=i+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(g,ct)|0,o=o+Math.imul(g,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,H),i=Math.imul(L,X),i=i+Math.imul(z,H)|0,o=Math.imul(z,X),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(U,Z)|0,o=o+Math.imul(U,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=i+Math.imul(x,at)|0,i=i+Math.imul(k,ot)|0,o=o+Math.imul(k,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(g,pt)|0,o=o+Math.imul(g,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(U,Q)|0,o=o+Math.imul(U,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(x,st)|0,i=i+Math.imul(x,ut)|0,i=i+Math.imul(k,st)|0,o=o+Math.imul(k,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(U,rt)|0,o=o+Math.imul(U,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(x,ct)|0,i=i+Math.imul(x,dt)|0,i=i+Math.imul(k,ct)|0,o=o+Math.imul(k,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(U,ot)|0,o=o+Math.imul(U,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(x,pt)|0,i=i+Math.imul(x,bt)|0,i=i+Math.imul(k,pt)|0,o=o+Math.imul(k,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(U,st)|0,o=o+Math.imul(U,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(L,st),i=Math.imul(L,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(U,ct)|0,o=o+Math.imul(U,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,ct),i=Math.imul(L,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(U,pt)|0,o=o+Math.imul(U,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=gt,s[3]=mt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=xt,s[11]=kt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new g(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},g.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},g.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},g.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},g.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},g.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},g.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},g.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},g.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},g.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},g.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},g.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},g.prototype.isqr=function(t){return this.imul(t,t.clone())},g.prototype.sqr=function(t){return this.mul(t,t)},g.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},g.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},g.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new m(t)},i(m,g),m.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},m.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},m.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},m.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},m.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){function n(){i.call(this)}t.exports=n;var i=r(110).EventEmitter,o=r(603);o(n,i),n.Readable=r(600),n.Writable=r(602),n.Duplex=r(595),n.Transform=r(601),n.PassThrough=r(599),n.Stream=n,n.prototype.pipe=function(t,e){function r(e){t.writable&&!1===t.write(e)&&u.pause&&u.pause()}function n(){u.readable&&u.resume&&u.resume()}function o(){h||(h=!0,t.end())}function a(){h||(h=!0,"function"==typeof t.destroy&&t.destroy())}function f(t){if(s(),0===i.listenerCount(this,"error"))throw t}function s(){u.removeListener("data",r),t.removeListener("drain",n),u.removeListener("end",o),u.removeListener("close",a),u.removeListener("error",f),t.removeListener("error",f),u.removeListener("end",s),u.removeListener("close",s),t.removeListener("close",s)}var u=this;u.on("data",r),t.on("drain",n),t._isStdio||e&&e.end===!1||(u.on("end",o),u.on("close",a));var h=!1;return u.on("error",f),t.on("error",f),u.on("end",s),u.on("close",s),t.on("close",s),t.emit("pipe",u),t}},function(t,e){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(13);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(190),i=r(0),o=r(87)("metadata"),a=o.store||(o.store=new(r(193))),f=function(t,e,r){var i=a.get(t);if(!i){if(!r)return;a.set(t,i=new n)}var o=i.get(e);if(!o){if(!r)return;i.set(e,o=new n)}return o},s=function(t,e,r){var n=f(e,r,!1);return void 0!==n&&n.has(t)},u=function(t,e,r){var n=f(e,r,!1);return void 0===n?void 0:n.get(t)},h=function(t,e,r,n){f(r,n,!0).set(t,e)},c=function(t,e){var r=f(t,e,!1),n=[];return r&&r.forEach(function(t,e){n.push(e)}),n},d=function(t){return void 0===t||"symbol"==typeof t?t:String(t)},l=function(t){i(i.S,"Reflect",t)};t.exports={store:a,map:f,has:s,get:u,set:h,keys:c,key:d,exp:l}},function(t,e,r){"use strict";if(r(8)){var n=r(41),i=r(4),o=r(5),a=r(0),f=r(88),s=r(140),u=r(33),h=r(40),c=r(37),d=r(14),l=r(45),p=r(38),b=r(10),v=r(47),y=r(29),g=r(12),m=r(187),w=r(64),_=r(6),M=r(11),S=r(125),E=r(42),A=r(21),x=r(43).f,k=r(142),I=r(48),B=r(7),O=r(27),R=r(78),P=r(134),T=r(143),j=r(56),C=r(84),U=r(46),N=r(118),L=r(167),z=r(9),D=r(20),F=z.f,q=D.f,K=i.RangeError,Y=i.TypeError,G=i.Uint8Array,V="ArrayBuffer",H="Shared"+V,X="BYTES_PER_ELEMENT",W="prototype",Z=Array[W],J=s.ArrayBuffer,$=s.DataView,Q=O(0),tt=O(2),et=O(3),rt=O(4),nt=O(5),it=O(6),ot=R(!0),at=R(!1),ft=T.values,st=T.keys,ut=T.entries,ht=Z.lastIndexOf,ct=Z.reduce,dt=Z.reduceRight,lt=Z.join,pt=Z.sort,bt=Z.slice,vt=Z.toString,yt=Z.toLocaleString,gt=B("iterator"),mt=B("toStringTag"),wt=I("typed_constructor"),_t=I("def_constructor"),Mt=f.CONSTR,St=f.TYPED,Et=f.VIEW,At="Wrong length!",xt=O(1,function(t,e){return Pt(P(t,t[_t]),e)}),kt=o(function(){return 1===new G(new Uint16Array([1]).buffer)[0]}),It=!!G&&!!G[W].set&&o(function(){new G(1).set({})}),Bt=function(t,e){if(void 0===t)throw Y(At);var r=+t,n=b(t);if(e&&!m(r,n))throw K(At);return n},Ot=function(t,e){var r=p(t);if(r<0||r%e)throw K("Wrong offset!");return r},Rt=function(t){if(_(t)&&St in t)return t;throw Y(t+" is not a typed array!")},Pt=function(t,e){if(!(_(t)&&wt in t))throw Y("It is not a typed array constructor!");return new t(e)},Tt=function(t,e){return jt(P(t,t[_t]),e)},jt=function(t,e){for(var r=0,n=e.length,i=Pt(t,n);n>r;)i[r]=e[r++];return i},Ct=function(t,e,r){F(t,e,{get:function(){return this._d[r]}})},Ut=function(t){var e,r,n,i,o,a,f=M(t),s=arguments.length,h=s>1?arguments[1]:void 0,c=void 0!==h,d=k(f);if(void 0!=d&&!S(d)){for(a=d.call(f),n=[],e=0;!(o=a.next()).done;e++)n.push(o.value);f=n}for(c&&s>2&&(h=u(h,arguments[2],2)),e=0,r=b(f.length),i=Pt(this,r);r>e;e++)i[e]=c?h(f[e],e):f[e];return i},Nt=function(){for(var t=0,e=arguments.length,r=Pt(this,e);e>t;)r[t]=arguments[t++];return r},Lt=!!G&&o(function(){yt.call(new G(1))}),zt=function(){return yt.apply(Lt?bt.call(Rt(this)):Rt(this),arguments)},Dt={copyWithin:function(t,e){return L.call(Rt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return rt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return N.apply(Rt(this),arguments)},filter:function(t){return Tt(this,tt(Rt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return nt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return it(Rt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Rt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return at(Rt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return ot(Rt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return lt.apply(Rt(this),arguments)},lastIndexOf:function(t){return ht.apply(Rt(this),arguments)},map:function(t){return xt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Rt(this),arguments)},reduceRight:function(t){return dt.apply(Rt(this),arguments)},reverse:function(){for(var t,e=this,r=Rt(e).length,n=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function(t){return pt.call(Rt(this),t)},subarray:function(t,e){var r=Rt(this),n=r.length,i=v(t,n);return new(P(r,r[_t]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,b((void 0===e?n:v(e,n))-i))}},Ft=function(t,e){return Tt(this,bt.call(Rt(this),t,e))},qt=function(t){Rt(this);var e=Ot(arguments[1],1),r=this.length,n=M(t),i=b(n.length),o=0;if(i+e>r)throw K(At);for(;o255?255:255&n),i.v[p](r*e+i.o,n,kt)},B=function(t,e){F(t,e,{get:function(){return k(this,e)},set:function(t){return I(this,e,t)},enumerable:!0})};m?(v=r(function(t,r,n,i){h(t,v,u,"_d");var o,a,f,s,c=0,l=0;if(_(r)){if(!(r instanceof J||(s=w(r))==V||s==H))return St in r?jt(v,r):Ut.call(v,r);o=r,l=Ot(n,e);var p=r.byteLength;if(void 0===i){if(p%e)throw K(At);if(a=p-l,a<0)throw K(At)}else if(a=b(i)*e,a+l>p)throw K(At);f=a/e}else f=Bt(r,!0),a=f*e,o=new J(a);for(d(t,"_d",{b:o,o:l,l:a,e:f,v:new $(o)});c0?n:r)(t)}},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,e){t.exports=!1},function(t,e,r){var n=r(3),i=r(180),o=r(121),a=r(133)("IE_PROTO"),f=function(){},s="prototype",u=function(){var t,e=r(120)("iframe"),n=o.length,i="<",a=">";for(e.style.display="none",r(123).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(i+"script"+a+"document.F=Object"+i+"/script"+a),t.close(),u=t.F;n--;)delete u[s][o[n]];return u()};t.exports=Object.create||function(t,e){var r;return null!==t?(f[s]=n(t),r=new f,f[s]=null,r[a]=t):r=u(),void 0===e?r:i(r,e)}},function(t,e,r){var n=r(182),i=r(121).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},function(t,e,r){var n=r(182),i=r(121);t.exports=Object.keys||function(t){return n(t,i)}},function(t,e,r){var n=r(15);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},function(t,e,r){"use strict";var n=r(4),i=r(9),o=r(8),a=r(7)("species");t.exports=function(t){var e=n[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,r){var n=r(38),i=Math.max,o=Math.min;t.exports=function(t,e){return t=n(t),t<0?i(t+e,0):o(t,e)}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+n).toString(36))}},function(t,e,r){var n=e;n.utils=r(527),n.common=r(523),n.sha=r(526),n.ripemd=r(525),n.hmac=r(524),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){var n=e;n.utils=r(564),n.common=r(560),n.sha=r(563),n.ripemd=r(562),n.hmac=r(561),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){"use strict";function n(t){return this instanceof n?(u.call(this,t),h.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once("end",i)):new n(t)}function i(){this.allowHalfOpen||this._writableState.ended||f(o,this)}function o(t){t.end()}var a=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=n;var f=r(157),s=r(73);s.inherits=r(74);var u=r(250),h=r(155);s.inherits(n,u);for(var c=a(h.prototype),d=0;d=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&n<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,n=e.charCodeAt(i);if(n>=55296&&n<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},u.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},u.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){var n=r(7)("unscopables"),i=Array.prototype;void 0==i[n]&&r(14)(i,n,{}),t.exports=function(t){i[n][t]=!0}},function(t,e,r){var n=r(33),i=r(176),o=r(125),a=r(3),f=r(10),s=r(142),u={},h={},e=t.exports=function(t,e,r,c,d){var l,p,b,v,y=d?function(){return t}:s(t),g=n(r,c,e?2:1),m=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(l=f(t.length);l>m;m++)if(v=e?g(a(p=t[m])[0],p[1]):g(t[m]),v===u||v===h)return v}else for(b=y.call(t);!(p=b.next()).done;)if(v=i(b,g,p.value,e),v===u||v===h)return v};e.BREAK=u,e.RETURN=h},function(t,e){t.exports={}},function(t,e,r){var n=r(9).f,i=r(12),o=r(7)("toStringTag");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},function(t,e,r){var n=r(0),i=r(24),o=r(5),a=r(138),f="["+a+"]",s="​…",u=RegExp("^"+f+f+"*"),h=RegExp(f+f+"*$"),c=function(t,e,r){var i={},f=o(function(){return!!a[t]()||s[t]()!=s}),u=i[t]=f?e(d):a[t];r&&(i[r]=u),n(n.P+n.F*f,"String",i)},d=c.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(h,"")),t};t.exports=c},function(t,e,r){"use strict";(function(e){function n(t){u.call(this,"digest"),this._hash=t,this.buffers=[]}function i(t){u.call(this,"digest"),this._hash=t}var o=r(2),a=r(105),f=r(567),s=r(568),u=r(566);o(n,u),n.prototype._update=function(t){this.buffers.push(t)},n.prototype._final=function(){var t=e.concat(this.buffers),r=this._hash(t);return this.buffers=null,r},o(i,u),i.prototype._update=function(t){this._hash.update(t)},i.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return t=t.toLowerCase(),"md5"===t?new n(a):"rmd160"===t||"ripemd160"===t?new n(f):new i(s(t))}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function r(t,r){this._block=new e(t),this._finalSize=r,this._blockSize=t,this._len=0,this._s=0}r.prototype.update=function(t,r){"string"==typeof t&&(r=r||"utf8",t=new e(t,r));for(var n=this._len+=t.length,i=this._s||0,o=0,a=this._block;i=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(e,this._blockSize-4);var r=this._update(this._block)||this._hash();return t?r.toString(t):r},r.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=r}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e,r,n){function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}function o(t,i){if(t>65536)throw new Error("requested too many random bytes");var o=new e.Uint8Array(t);t>0&&a.getRandomValues(o);var f=new r(o.buffer);return"function"==typeof i?n.nextTick(function(){i(null,f)}):f}var a=e.crypto||e.msCrypto;a&&a.getRandomValues?t.exports=o:t.exports=i}).call(e,r(39),r(1).Buffer,r(26))},function(t,e){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return Object.defineProperty(i,"message",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):""}),Object.defineProperty(i,"name",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function m(t){g.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,g=v>>>13,m=0|a[3],w=8191&m,_=m>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],x=8191&A,k=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,U=j>>>13,N=0|a[9],L=8191&N,z=N>>>13,D=0|f[0],F=8191&D,q=D>>>13,K=0|f[1],Y=8191&K,G=K>>>13,V=0|f[2],H=8191&V,X=V>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,F),i=Math.imul(c,q),i=i+Math.imul(d,F)|0,o=Math.imul(d,q);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,F),i=Math.imul(p,q),i=i+Math.imul(b,F)|0,o=Math.imul(b,q),n=n+Math.imul(c,Y)|0,i=i+Math.imul(c,G)|0,i=i+Math.imul(d,Y)|0,o=o+Math.imul(d,G)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,F),i=Math.imul(y,q),i=i+Math.imul(g,F)|0,o=Math.imul(g,q),n=n+Math.imul(p,Y)|0,i=i+Math.imul(p,G)|0,i=i+Math.imul(b,Y)|0,o=o+Math.imul(b,G)|0,n=n+Math.imul(c,H)|0,i=i+Math.imul(c,X)|0,i=i+Math.imul(d,H)|0,o=o+Math.imul(d,X)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,F),i=Math.imul(w,q),i=i+Math.imul(_,F)|0,o=Math.imul(_,q),n=n+Math.imul(y,Y)|0,i=i+Math.imul(y,G)|0,i=i+Math.imul(g,Y)|0,o=o+Math.imul(g,G)|0,n=n+Math.imul(p,H)|0,i=i+Math.imul(p,X)|0,i=i+Math.imul(b,H)|0,o=o+Math.imul(b,X)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(S,F),i=Math.imul(S,q),i=i+Math.imul(E,F)|0,o=Math.imul(E,q),n=n+Math.imul(w,Y)|0,i=i+Math.imul(w,G)|0,i=i+Math.imul(_,Y)|0,o=o+Math.imul(_,G)|0,n=n+Math.imul(y,H)|0,i=i+Math.imul(y,X)|0,i=i+Math.imul(g,H)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(x,F),i=Math.imul(x,q),i=i+Math.imul(k,F)|0,o=Math.imul(k,q),n=n+Math.imul(S,Y)|0,i=i+Math.imul(S,G)|0,i=i+Math.imul(E,Y)|0,o=o+Math.imul(E,G)|0,n=n+Math.imul(w,H)|0,i=i+Math.imul(w,X)|0,i=i+Math.imul(_,H)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(g,Z)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,F),i=Math.imul(B,q),i=i+Math.imul(O,F)|0,o=Math.imul(O,q),n=n+Math.imul(x,Y)|0,i=i+Math.imul(x,G)|0,i=i+Math.imul(k,Y)|0,o=o+Math.imul(k,G)|0,n=n+Math.imul(S,H)|0,i=i+Math.imul(S,X)|0,i=i+Math.imul(E,H)|0,o=o+Math.imul(E,X)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,F),i=Math.imul(P,q),i=i+Math.imul(T,F)|0,o=Math.imul(T,q),n=n+Math.imul(B,Y)|0,i=i+Math.imul(B,G)|0,i=i+Math.imul(O,Y)|0,o=o+Math.imul(O,G)|0,n=n+Math.imul(x,H)|0,i=i+Math.imul(x,X)|0,i=i+Math.imul(k,H)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,F),i=Math.imul(C,q),i=i+Math.imul(U,F)|0,o=Math.imul(U,q),n=n+Math.imul(P,Y)|0,i=i+Math.imul(P,G)|0,i=i+Math.imul(T,Y)|0,o=o+Math.imul(T,G)|0,n=n+Math.imul(B,H)|0,i=i+Math.imul(B,X)|0,i=i+Math.imul(O,H)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Z)|0,i=i+Math.imul(x,J)|0,i=i+Math.imul(k,Z)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(g,ot)|0,o=o+Math.imul(g,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(L,F),i=Math.imul(L,q),i=i+Math.imul(z,F)|0,o=Math.imul(z,q),n=n+Math.imul(C,Y)|0,i=i+Math.imul(C,G)|0,i=i+Math.imul(U,Y)|0,o=o+Math.imul(U,G)|0,n=n+Math.imul(P,H)|0,i=i+Math.imul(P,X)|0,i=i+Math.imul(T,H)|0,o=o+Math.imul(T,X)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,Q)|0,i=i+Math.imul(x,tt)|0,i=i+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(g,st)|0,o=o+Math.imul(g,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(L,Y),i=Math.imul(L,G),i=i+Math.imul(z,Y)|0,o=Math.imul(z,G),n=n+Math.imul(C,H)|0,i=i+Math.imul(C,X)|0,i=i+Math.imul(U,H)|0,o=o+Math.imul(U,X)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=i+Math.imul(x,nt)|0,i=i+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(g,ct)|0,o=o+Math.imul(g,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,H),i=Math.imul(L,X),i=i+Math.imul(z,H)|0,o=Math.imul(z,X),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(U,Z)|0,o=o+Math.imul(U,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=i+Math.imul(x,at)|0,i=i+Math.imul(k,ot)|0,o=o+Math.imul(k,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(g,pt)|0,o=o+Math.imul(g,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(U,Q)|0,o=o+Math.imul(U,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(x,st)|0,i=i+Math.imul(x,ut)|0,i=i+Math.imul(k,st)|0,o=o+Math.imul(k,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(U,rt)|0,o=o+Math.imul(U,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(x,ct)|0,i=i+Math.imul(x,dt)|0,i=i+Math.imul(k,ct)|0,o=o+Math.imul(k,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(U,ot)|0,o=o+Math.imul(U,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(x,pt)|0,i=i+Math.imul(x,bt)|0,i=i+Math.imul(k,pt)|0,o=o+Math.imul(k,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(U,st)|0,o=o+Math.imul(U,ut)|0,n=n+Math.imul(P,ct)|0, +i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(L,st),i=Math.imul(L,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(U,ct)|0,o=o+Math.imul(U,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,ct),i=Math.imul(L,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(U,pt)|0,o=o+Math.imul(U,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=gt,s[3]=mt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=xt,s[11]=kt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new g(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},g.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},g.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},g.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},g.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},g.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},g.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},g.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},g.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},g.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},g.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},g.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},g.prototype.isqr=function(t){return this.imul(t,t.clone())},g.prototype.sqr=function(t){return this.mul(t,t)},g.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},g.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},g.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new m(t)},i(m,g),m.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},m.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},m.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},m.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},m.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){var n=e;n.Reporter=r(582).Reporter,n.DecoderBuffer=r(234).DecoderBuffer,n.EncoderBuffer=r(234).EncoderBuffer,n.Node=r(581)},function(t,e,r){(function(e){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),o=0;ot.MAX_SAFE_BITMASK)throw new Error("Bitmask too large to be safely represented");if(this.getBitmask()&~t.SUPPORTED_BITMASK)throw new Error("Condition requested unsupported feature suites");if(this.getMaxFulfillmentLength()>t.MAX_FULFILLMENT_LENGTH)throw new Error("Condition requested too large of a max fulfillment size");return!0}}],[{key:"fromUri",value:function(e){if(e instanceof t)return e;if("string"!=typeof e)throw new Error("Serialized condition must be a string");var r=e.split(":");if("cc"!==r[0])throw new a('Serialized condition must start with "cc:"');if(!t.REGEX_STRICT.exec(e))throw new f("Invalid condition format");var n=new t;return n.setTypeId(parseInt(r[1],16)),n.setBitmask(parseInt(r[2],16)),n.setHash(u.decode(r[3])),n.setMaxFulfillmentLength(parseInt(r[4],10)),n}},{key:"fromBinary",value:function(e){e=h.from(e);var r=new t;return r.parseBinary(e),r}}]),t}();b.MAX_SAFE_BITMASK=4294967295,b.SUPPORTED_BITMASK=63,b.MAX_FULFILLMENT_LENGTH=65535,b.REGEX=l,b.REGEX_STRICT=p,t.exports=b}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rh;)if(f=s[h++],f!=f)return!0}else for(;u>h;h++)if((t||h in s)&&s[h]===r)return t||h||0;return!t&&-1}}},function(t,e,r){"use strict";var n=r(4),i=r(0),o=r(15),a=r(45),f=r(36),s=r(55),u=r(40),h=r(6),c=r(5),d=r(84),l=r(57),p=r(124);t.exports=function(t,e,r,b,v,y){var g=n[t],m=g,w=v?"set":"add",_=m&&m.prototype,M={},S=function(t){var e=_[t];o(_,t,"delete"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!h(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,r){return e.call(this,0===t?0:t,r),this})};if("function"==typeof m&&(y||_.forEach&&!c(function(){(new m).entries().next()}))){var E=new m,A=E[w](y?{}:-0,1)!=E,x=c(function(){E.has(1)}),k=d(function(t){new m(t)}),I=!y&&c(function(){for(var t=new m,e=5;e--;)t[w](e,e);return!t.has(-0)});k||(m=e(function(e,r){u(e,m,t);var n=p(new g,e,m);return void 0!=r&&s(r,v,n[w],n),n}),m.prototype=_,_.constructor=m),(x||I)&&(S("delete"),S("has"),v&&S("get")),(I||A)&&S(w),y&&_.clear&&delete _.clear}else m=b.getConstructor(e,t,v,w),a(m.prototype,r),f.NEED=!0;return l(m,t),M[t]=m,i(i.G+i.W+i.F*(m!=g),M),y||b.setStrong(m,t,v),m}},function(t,e,r){"use strict";var n=r(14),i=r(15),o=r(5),a=r(24),f=r(7);t.exports=function(t,e,r){var s=f(t),u=r(a,s,""[t]),h=u[0],c=u[1];o(function(){var e={};return e[s]=function(){return 7},7!=""[t](e)})&&(i(String.prototype,t,h),n(RegExp.prototype,s,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},function(t,e,r){"use strict";var n=r(3);t.exports=function(){var t=n(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e){t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},function(t,e,r){var n=r(6),i=r(23),o=r(7)("match");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},function(t,e,r){var n=r(7)("iterator"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},t(o)}catch(t){}return r}},function(t,e,r){t.exports=r(41)||!r(5)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete r(4)[t]})},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(4),i="__core-js_shared__",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){for(var n,i=r(4),o=r(14),a=r(48),f=a("typed_array"),s=a("view"),u=!(!i.ArrayBuffer||!i.DataView),h=u,c=0,d=9,l="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");cf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e){e["aes-128-ecb"]={cipher:"AES",key:128,iv:0,mode:"ECB",type:"block"},e["aes-192-ecb"]={cipher:"AES",key:192,iv:0,mode:"ECB",type:"block"},e["aes-256-ecb"]={cipher:"AES",key:256,iv:0,mode:"ECB",type:"block"},e["aes-128-cbc"]={cipher:"AES",key:128,iv:16,mode:"CBC",type:"block"},e["aes-192-cbc"]={cipher:"AES",key:192,iv:16,mode:"CBC",type:"block"},e["aes-256-cbc"]={cipher:"AES",key:256,iv:16,mode:"CBC",type:"block"},e.aes128=e["aes-128-cbc"],e.aes192=e["aes-192-cbc"],e.aes256=e["aes-256-cbc"],e["aes-128-cfb"]={cipher:"AES",key:128,iv:16,mode:"CFB",type:"stream"},e["aes-192-cfb"]={cipher:"AES",key:192,iv:16,mode:"CFB",type:"stream"},e["aes-256-cfb"]={cipher:"AES",key:256,iv:16,mode:"CFB",type:"stream"},e["aes-128-cfb8"]={cipher:"AES",key:128,iv:16,mode:"CFB8",type:"stream"},e["aes-192-cfb8"]={cipher:"AES",key:192,iv:16,mode:"CFB8",type:"stream"},e["aes-256-cfb8"]={cipher:"AES",key:256,iv:16,mode:"CFB8",type:"stream"},e["aes-128-cfb1"]={cipher:"AES",key:128,iv:16,mode:"CFB1",type:"stream"},e["aes-192-cfb1"]={cipher:"AES",key:192,iv:16,mode:"CFB1",type:"stream"},e["aes-256-cfb1"]={cipher:"AES",key:256,iv:16,mode:"CFB1",type:"stream"},e["aes-128-ofb"]={cipher:"AES",key:128,iv:16,mode:"OFB",type:"stream"},e["aes-192-ofb"]={cipher:"AES",key:192,iv:16,mode:"OFB",type:"stream"},e["aes-256-ofb"]={cipher:"AES",key:256,iv:16,mode:"OFB",type:"stream"},e["aes-128-ctr"]={cipher:"AES",key:128,iv:16,mode:"CTR",type:"stream"},e["aes-192-ctr"]={cipher:"AES",key:192,iv:16,mode:"CTR",type:"stream"},e["aes-256-ctr"]={cipher:"AES",key:256,iv:16,mode:"CTR",type:"stream"},e["aes-128-gcm"]={cipher:"AES",key:128,iv:12,mode:"GCM",type:"auth"},e["aes-192-gcm"]={cipher:"AES",key:192,iv:12,mode:"GCM",type:"auth"},e["aes-256-gcm"]={cipher:"AES",key:256,iv:12,mode:"GCM",type:"auth"}},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(67);e.encrypt=function(e,r){for(;e._cache.lengthf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(69);e.encrypt=function(e,r){for(;e._cache.length>5]|=128<>>9<<4)+14]=e;for(var r=1732584193,n=-271733879,i=-1732584194,h=271733878,c=0;c>16)+(e>>16)+(r>>16);return n<<16|65535&r}function h(t,e){return t<>>32-e}var c=r(565);t.exports=function(t){return c.hash(t,n,16)}},function(t,e,r){var n=e;n.bignum=r(70),n.define=r(580).define,n.base=r(71),n.constants=r(235),n.decoders=r(584),n.encoders=r(586)},function(t,e,r){(function(t){function r(t){var e,r;return e=t>f||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(72);e.encrypt=function(e,r){for(;e._cache.length0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),i||(i=!0,e.apply(this,arguments))}if(!n(e))throw TypeError("listener must be a function");var i=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,i,a,f;if(!n(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,i=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(r)){for(f=a;f-- >0;)if(r[f]===e||r[f].listener&&r[f].listener===e){i=f;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],n(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name="InvalidAsn1Error",e.message=t||"",e}}},function(t,e){t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rNumber.MAX_SAFE_INTEGER)throw new o("Type "+e+" is not supported");var r=!0,n=!1,i=void 0;try{for(var a,f=t.registeredTypes[Symbol.iterator]();!(r=(a=f.next()).done);r=!0){var s=a.value;if(e===s.typeId)return s.Class}}catch(t){n=!0,i=t}finally{try{!r&&f.return&&f.return()}finally{if(n)throw i}}throw new o("Type "+e+" is not supported")}},{key:"registerType",value:function(e){t.registeredTypes.push({typeId:e.TYPE_ID,Class:e})}}]),t}();a.registeredTypes=[],t.exports=a},function(t,e,r){"use strict";(function(e){function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var n=function(){function t(t,e){for(var r=0;r1?arguments[1]:void 0,r),s=a>2?arguments[2]:void 0,u=void 0===s?r:i(s,r);u>f;)e[f++]=t;return e}},function(t,e,r){"use strict";var n=r(9),i=r(37);t.exports=function(t,e,r){e in t?n.f(t,e,i(0,r)):t[e]=r}},function(t,e,r){var n=r(6),i=r(4).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,r){var n=r(7)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[n]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,r){t.exports=r(4).document&&document.documentElement},function(t,e,r){var n=r(6),i=r(132).set;t.exports=function(t,e,r){var o,a=e.constructor;return a!==r&&"function"==typeof a&&(o=a.prototype)!==r.prototype&&n(o)&&i&&i(t,o),t}},function(t,e,r){var n=r(56),i=r(7)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[i]===t)}},function(t,e,r){var n=r(23);t.exports=Array.isArray||function(t){return"Array"==n(t)}},function(t,e,r){"use strict";var n=r(42),i=r(37),o=r(57),a={};r(14)(a,r(7)("iterator"),function(){return this}),t.exports=function(t,e,r){t.prototype=n(a,{next:i(1,r)}),o(t,e+" Iterator")}},function(t,e,r){"use strict";var n=r(41),i=r(0),o=r(15),a=r(14),f=r(12),s=r(56),u=r(127),h=r(57),c=r(21),d=r(7)("iterator"),l=!([].keys&&"next"in[].keys()),p="@@iterator",b="keys",v="values",y=function(){return this};t.exports=function(t,e,r,g,m,w,_){u(r,e,g);var M,S,E,A=function(t){if(!l&&t in B)return B[t];switch(t){case b:return function(){return new r(this,t)};case v:return function(){return new r(this,t)}}return function(){return new r(this,t)}},x=e+" Iterator",k=m==v,I=!1,B=t.prototype,O=B[d]||B[p]||m&&B[m],R=O||A(m),P=m?k?A("entries"):R:void 0,T="Array"==e?B.entries||O:O;if(T&&(E=c(T.call(new t)),E!==Object.prototype&&(h(E,x,!0),n||f(E,d)||a(E,d,y))),k&&O&&O.name!==v&&(I=!0,R=function(){return O.call(this)}),n&&!_||!l&&!I&&B[d]||a(B,d,R),s[e]=R,s[x]=y,m)if(M={values:k?R:A(v),keys:w?R:A(b),entries:P},_)for(S in M)S in B||o(B,S,M[S]);else i(i.P+i.F*(l||I),e,M);return M}},function(t,e){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||r(-2e-17)!=-2e-17?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,r){var n=r(4),i=r(139).set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,f=n.Promise,s="process"==r(23)(a);t.exports=function(){var t,e,r,u=function(){var n,i;for(s&&(n=a.domain)&&n.exit();t;){i=t.fn,t=t.next;try{i()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(s)r=function(){a.nextTick(u)};else if(o){var h=!0,c=document.createTextNode("");new o(u).observe(c,{characterData:!0}),r=function(){c.data=h=!h}}else if(f&&f.resolve){var d=f.resolve();r=function(){d.then(u)}}else r=function(){i.call(n,u)};return function(n){var i={fn:n,next:void 0};e&&(e.next=i),t||(t=i,r()),e=i}}},function(t,e,r){var n=r(6),i=r(3),o=function(t,e){if(i(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{n=r(33)(Function.call,r(20).f(Object.prototype,"__proto__").set,2),n(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,r){return o(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check:o}},function(t,e,r){var n=r(87)("keys"),i=r(48);t.exports=function(t){return n[t]||(n[t]=i(t))}},function(t,e,r){var n=r(3),i=r(13),o=r(7)("species");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||void 0==(r=n(a)[o])?e:i(r)}},function(t,e,r){var n=r(38),i=r(24);t.exports=function(t){return function(e,r){var o,a,f=String(i(e)),s=n(r),u=f.length; +return s<0||s>=u?t?"":void 0:(o=f.charCodeAt(s),o<55296||o>56319||s+1===u||(a=f.charCodeAt(s+1))<56320||a>57343?t?f.charAt(s):o:t?f.slice(s,s+2):(o-55296<<10)+(a-56320)+65536)}}},function(t,e,r){var n=r(83),i=r(24);t.exports=function(t,e,r){if(n(e))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},function(t,e,r){"use strict";var n=r(38),i=r(24);t.exports=function(t){var e=String(i(this)),r="",o=n(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(r+=e);return r}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,r){var n,i,o,a=r(33),f=r(82),s=r(123),u=r(120),h=r(4),c=h.process,d=h.setImmediate,l=h.clearImmediate,p=h.MessageChannel,b=0,v={},y="onreadystatechange",g=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},m=function(t){g.call(t.data)};d&&l||(d=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return v[++b]=function(){f("function"==typeof t?t:Function(t),e)},n(b),b},l=function(t){delete v[t]},"process"==r(23)(c)?n=function(t){c.nextTick(a(g,t,1))}:p?(i=new p,o=i.port2,i.port1.onmessage=m,n=a(o.postMessage,o,1)):h.addEventListener&&"function"==typeof postMessage&&!h.importScripts?(n=function(t){h.postMessage(t+"","*")},h.addEventListener("message",m,!1)):n=y in u("script")?function(t){s.appendChild(u("script"))[y]=function(){s.removeChild(this),g.call(t)}}:function(t){setTimeout(a(g,t,1),0)}),t.exports={set:d,clear:l}},function(t,e,r){"use strict";var n=r(4),i=r(8),o=r(41),a=r(88),f=r(14),s=r(45),u=r(5),h=r(40),c=r(38),d=r(10),l=r(43).f,p=r(9).f,b=r(118),v=r(57),y="ArrayBuffer",g="DataView",m="prototype",w="Wrong length!",_="Wrong index!",M=n[y],S=n[g],E=n.Math,A=n.RangeError,x=n.Infinity,k=M,I=E.abs,B=E.pow,O=E.floor,R=E.log,P=E.LN2,T="buffer",j="byteLength",C="byteOffset",U=i?"_b":T,N=i?"_l":j,L=i?"_o":C,z=function(t,e,r){var n,i,o,a=Array(r),f=8*r-e-1,s=(1<>1,h=23===e?B(2,-24)-B(2,-77):0,c=0,d=t<0||0===t&&1/t<0?1:0;for(t=I(t),t!=t||t===x?(i=t!=t?1:0,n=s):(n=O(R(t)/P),t*(o=B(2,-n))<1&&(n--,o*=2),t+=n+u>=1?h/o:h*B(2,1-u),t*o>=2&&(n++,o/=2),n+u>=s?(i=0,n=s):n+u>=1?(i=(t*o-1)*B(2,e),n+=u):(i=t*B(2,u-1)*B(2,e),n=0));e>=8;a[c++]=255&i,i/=256,e-=8);for(n=n<0;a[c++]=255&n,n/=256,f-=8);return a[--c]|=128*d,a},D=function(t,e,r){var n,i=8*r-e-1,o=(1<>1,f=i-7,s=r-1,u=t[s--],h=127&u;for(u>>=7;f>0;h=256*h+t[s],s--,f-=8);for(n=h&(1<<-f)-1,h>>=-f,f+=e;f>0;n=256*n+t[s],s--,f-=8);if(0===h)h=1-a;else{if(h===o)return n?NaN:u?-x:x;n+=B(2,e),h-=a}return(u?-1:1)*n*B(2,h-e)},F=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},q=function(t){return[255&t]},K=function(t){return[255&t,t>>8&255]},Y=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},G=function(t){return z(t,52,8)},V=function(t){return z(t,23,4)},H=function(t,e,r){p(t[m],e,{get:function(){return this[r]}})},X=function(t,e,r,n){var i=+r,o=c(i);if(i!=o||o<0||o+e>t[N])throw A(_);var a=t[U]._b,f=o+t[L],s=a.slice(f,f+e);return n?s:s.reverse()},W=function(t,e,r,n,i,o){var a=+r,f=c(a);if(a!=f||f<0||f+e>t[N])throw A(_);for(var s=t[U]._b,u=f+t[L],h=n(+i),d=0;dtt;)(J=Q[tt++])in M||f(M,J,k[J]);o||($.constructor=M)}var et=new S(new M(2)),rt=S[m].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),!et.getInt8(0)&&et.getInt8(1)||s(S[m],{setInt8:function(t,e){rt.call(this,t,e<<24>>24)},setUint8:function(t,e){rt.call(this,t,e<<24>>24)}},!0)}else M=function(t){var e=Z(this,t);this._b=b.call(Array(e),0),this[N]=e},S=function(t,e,r){h(this,S,g),h(t,M,g);var n=t[N],i=c(e);if(i<0||i>n)throw A("Wrong offset!");if(r=void 0===r?n-i:d(r),i+r>n)throw A(w);this[U]=t,this[L]=i,this[N]=r},i&&(H(M,j,"_l"),H(S,T,"_b"),H(S,j,"_l"),H(S,C,"_o")),s(S[m],{getInt8:function(t){return X(this,1,t)[0]<<24>>24},getUint8:function(t){return X(this,1,t)[0]},getInt16:function(t){var e=X(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=X(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return F(X(this,4,t,arguments[1]))},getUint32:function(t){return F(X(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return D(X(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return D(X(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){W(this,1,t,q,e)},setUint8:function(t,e){W(this,1,t,q,e)},setInt16:function(t,e){W(this,2,t,K,e,arguments[2])},setUint16:function(t,e){W(this,2,t,K,e,arguments[2])},setInt32:function(t,e){W(this,4,t,Y,e,arguments[2])},setUint32:function(t,e){W(this,4,t,Y,e,arguments[2])},setFloat32:function(t,e){W(this,4,t,V,e,arguments[2])},setFloat64:function(t,e){W(this,8,t,G,e,arguments[2])}});v(M,y),v(S,g),f(S[m],a.VIEW,!0),e[y]=M,e[g]=S},function(t,e,r){var n=r(4),i=r(32),o=r(41),a=r(189),f=r(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||f(e,t,{value:a.f(t)})}},function(t,e,r){var n=r(64),i=r(7)("iterator"),o=r(56);t.exports=r(32).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t["@@iterator"]||o[n(t)]}},function(t,e,r){"use strict";var n=r(54),i=r(177),o=r(56),a=r(17);t.exports=r(128)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):"keys"==e?i(0,r):"values"==e?i(0,t[r]):i(0,[r,t[r]])},"values"),o.Arguments=o.Array,n("keys"),n("values"),n("entries")},function(t,e,r){t.exports=!r(199)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(t,e,r){"use strict";e.utils=r(505),e.Cipher=r(502),e.DES=r(503),e.CBC=r(501),e.EDE=r(504)},function(t,e,r){(function(e){function n(t,r,n,o){e.isBuffer(t)||(t=new e(t,"binary")),r&&!e.isBuffer(r)&&(r=new e(r,"binary")),n/=8,o=o||0;for(var a,f,s=0,u=0,h=new e(n),c=new e(o),d=0,l=[];;){if(d++>0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;0!==n&&f!==a.length;)h[s++]=a[f],n--,f++;if(o>0&&f!==a.length)for(;0!==o&&f!==a.length;)c[u++]=a[f],o--,f++;if(0===n&&0===o)break}for(f=0;f0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;0!==n&&f!==a.length;)h[s++]=a[f],n--,f++;if(o>0&&f!==a.length)for(;0!==o&&f!==a.length;)c[u++]=a[f],o--,f++;if(0===n&&0===o)break}for(f=0;fn?r=i(t).update(r).digest():r.length=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){l.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function v(){l.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){l.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function g(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function m(t){g.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\s+/g,"");var i=0;"-"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var _=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||"hex"===t){r="";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r="0"+r);r.length%e!==0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n("undefined"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var a,f,s="le"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,g=v>>>13,m=0|a[3],w=8191&m,_=m>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],x=8191&A,k=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,U=j>>>13,N=0|a[9],L=8191&N,z=N>>>13,D=0|f[0],F=8191&D,q=D>>>13,K=0|f[1],Y=8191&K,G=K>>>13,V=0|f[2],H=8191&V,X=V>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,F),i=Math.imul(c,q),i=i+Math.imul(d,F)|0,o=Math.imul(d,q);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,F),i=Math.imul(p,q),i=i+Math.imul(b,F)|0,o=Math.imul(b,q),n=n+Math.imul(c,Y)|0,i=i+Math.imul(c,G)|0,i=i+Math.imul(d,Y)|0,o=o+Math.imul(d,G)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,F),i=Math.imul(y,q),i=i+Math.imul(g,F)|0,o=Math.imul(g,q),n=n+Math.imul(p,Y)|0,i=i+Math.imul(p,G)|0,i=i+Math.imul(b,Y)|0,o=o+Math.imul(b,G)|0,n=n+Math.imul(c,H)|0,i=i+Math.imul(c,X)|0,i=i+Math.imul(d,H)|0,o=o+Math.imul(d,X)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(w,F),i=Math.imul(w,q),i=i+Math.imul(_,F)|0,o=Math.imul(_,q),n=n+Math.imul(y,Y)|0,i=i+Math.imul(y,G)|0,i=i+Math.imul(g,Y)|0,o=o+Math.imul(g,G)|0,n=n+Math.imul(p,H)|0,i=i+Math.imul(p,X)|0,i=i+Math.imul(b,H)|0,o=o+Math.imul(b,X)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(S,F),i=Math.imul(S,q),i=i+Math.imul(E,F)|0,o=Math.imul(E,q),n=n+Math.imul(w,Y)|0,i=i+Math.imul(w,G)|0,i=i+Math.imul(_,Y)|0,o=o+Math.imul(_,G)|0,n=n+Math.imul(y,H)|0,i=i+Math.imul(y,X)|0,i=i+Math.imul(g,H)|0,o=o+Math.imul(g,X)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(x,F),i=Math.imul(x,q),i=i+Math.imul(k,F)|0,o=Math.imul(k,q),n=n+Math.imul(S,Y)|0,i=i+Math.imul(S,G)|0,i=i+Math.imul(E,Y)|0,o=o+Math.imul(E,G)|0,n=n+Math.imul(w,H)|0,i=i+Math.imul(w,X)|0,i=i+Math.imul(_,H)|0,o=o+Math.imul(_,X)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(g,Z)|0,o=o+Math.imul(g,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,F),i=Math.imul(B,q),i=i+Math.imul(O,F)|0,o=Math.imul(O,q),n=n+Math.imul(x,Y)|0,i=i+Math.imul(x,G)|0,i=i+Math.imul(k,Y)|0,o=o+Math.imul(k,G)|0,n=n+Math.imul(S,H)|0,i=i+Math.imul(S,X)|0,i=i+Math.imul(E,H)|0,o=o+Math.imul(E,X)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(g,Q)|0,o=o+Math.imul(g,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,F),i=Math.imul(P,q),i=i+Math.imul(T,F)|0,o=Math.imul(T,q),n=n+Math.imul(B,Y)|0,i=i+Math.imul(B,G)|0,i=i+Math.imul(O,Y)|0,o=o+Math.imul(O,G)|0,n=n+Math.imul(x,H)|0,i=i+Math.imul(x,X)|0,i=i+Math.imul(k,H)|0,o=o+Math.imul(k,X)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(g,rt)|0,o=o+Math.imul(g,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,F),i=Math.imul(C,q),i=i+Math.imul(U,F)|0,o=Math.imul(U,q),n=n+Math.imul(P,Y)|0,i=i+Math.imul(P,G)|0,i=i+Math.imul(T,Y)|0,o=o+Math.imul(T,G)|0,n=n+Math.imul(B,H)|0,i=i+Math.imul(B,X)|0,i=i+Math.imul(O,H)|0,o=o+Math.imul(O,X)|0,n=n+Math.imul(x,Z)|0,i=i+Math.imul(x,J)|0,i=i+Math.imul(k,Z)|0,o=o+Math.imul(k,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(g,ot)|0,o=o+Math.imul(g,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(L,F),i=Math.imul(L,q),i=i+Math.imul(z,F)|0,o=Math.imul(z,q),n=n+Math.imul(C,Y)|0,i=i+Math.imul(C,G)|0,i=i+Math.imul(U,Y)|0,o=o+Math.imul(U,G)|0,n=n+Math.imul(P,H)|0,i=i+Math.imul(P,X)|0,i=i+Math.imul(T,H)|0,o=o+Math.imul(T,X)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(x,Q)|0,i=i+Math.imul(x,tt)|0,i=i+Math.imul(k,Q)|0,o=o+Math.imul(k,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(g,st)|0,o=o+Math.imul(g,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(L,Y),i=Math.imul(L,G),i=i+Math.imul(z,Y)|0,o=Math.imul(z,G),n=n+Math.imul(C,H)|0,i=i+Math.imul(C,X)|0,i=i+Math.imul(U,H)|0,o=o+Math.imul(U,X)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(x,rt)|0,i=i+Math.imul(x,nt)|0,i=i+Math.imul(k,rt)|0,o=o+Math.imul(k,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(g,ct)|0,o=o+Math.imul(g,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(L,H),i=Math.imul(L,X),i=i+Math.imul(z,H)|0,o=Math.imul(z,X),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(U,Z)|0,o=o+Math.imul(U,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(x,ot)|0,i=i+Math.imul(x,at)|0,i=i+Math.imul(k,ot)|0,o=o+Math.imul(k,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(g,pt)|0,o=o+Math.imul(g,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(L,Z),i=Math.imul(L,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(U,Q)|0,o=o+Math.imul(U,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(x,st)|0,i=i+Math.imul(x,ut)|0,i=i+Math.imul(k,st)|0,o=o+Math.imul(k,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(L,Q),i=Math.imul(L,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(U,rt)|0,o=o+Math.imul(U,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(x,ct)|0,i=i+Math.imul(x,dt)|0,i=i+Math.imul(k,ct)|0,o=o+Math.imul(k,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(L,rt),i=Math.imul(L,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(U,ot)|0,o=o+Math.imul(U,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(x,pt)|0,i=i+Math.imul(x,bt)|0,i=i+Math.imul(k,pt)|0,o=o+Math.imul(k,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(L,ot),i=Math.imul(L,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(U,st)|0,o=o+Math.imul(U,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0, +o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(L,st),i=Math.imul(L,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(U,ct)|0,o=o+Math.imul(U,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(L,ct),i=Math.imul(L,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(U,pt)|0,o=o+Math.imul(U,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(L,pt),i=Math.imul(L,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=gt,s[3]=mt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=xt,s[11]=kt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if("mod"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),"mod"!==e&&(i=f.div.neg()),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),"mod"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),"div"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new g(t)},o.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new b;else if("p192"===e)t=new v;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return A[e]=t,t},g.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},g.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},g.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},g.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},g.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},g.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},g.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},g.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},g.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},g.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},g.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},g.prototype.isqr=function(t){return this.imul(t,t.clone())},g.prototype.sqr=function(t){return this.mul(t,t)},g.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},g.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},g.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new m(t)},i(m,g),m.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},m.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},m.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},m.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},m.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}("undefined"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){(function(t,n){var i=r(149),o=r(576);e.pbkdf2=function(t,r,n,i,a,f){if("function"==typeof a&&(f=a,a=void 0),o(n,i),"function"!=typeof f)throw new Error("No callback provided to pbkdf2");setTimeout(function(){f(null,e.pbkdf2Sync(t,r,n,i,a))})};var a;if(t.browser)a="utf-8";else{var f=parseInt(t.version.split(".")[0].slice(1),10);a=f>=6?"utf-8":"binary"}e.pbkdf2Sync=function(t,e,r,f,s){n.isBuffer(t)||(t=new n(t,a)),n.isBuffer(e)||(e=new n(e,a)),o(r,f),s=s||"sha1";var u,h=1,c=new n(f),d=new n(e.length+4);e.copy(d,0,0,e.length);for(var l,p,b=1;b<=h;b++){d.writeUInt32BE(b,e.length);var v=i(s,t).update(d).digest();u||(u=v.length,p=new n(u),h=Math.ceil(f/u),l=f-(h-1)*u),v.copy(p,0,0,u);for(var y=1;y0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;0!==n&&f!==a.length;)h[s++]=a[f],n--,f++;if(o>0&&f!==a.length)for(;0!==o&&f!==a.length;)c[u++]=a[f],o--,f++;if(0===n&&0===o)break}for(f=0;f-1?n:E;f.WritableState=a;var x=r(73);x.inherits=r(74);var k,I={deprecate:r(598)};!function(){try{k=r(31)}catch(t){}finally{k||(k=r(110).EventEmitter)}}();var B=r(1).Buffer,O=r(156);x.inherits(f,k);var R;a.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(a.prototype,"buffer",{get:I.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(t){}}();var R;f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},f.prototype.write=function(t,e,r){var n=this._writableState,o=!1;return"function"==typeof e&&(r=e,e=null),B.isBuffer(t)?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=i),n.ended?s(this,r):u(this,n,t,r)&&(n.pendingcb++,o=c(this,n,t,e,r)),o},f.prototype.cork=function(){var t=this._writableState;t.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||g(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,r){r(new Error("not implemented"))},f.prototype._writev=null,f.prototype.end=function(t,e,r){var n=this._writableState;"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||M(this,n,r)}}).call(e,r(26),r(158).setImmediate)},function(t,e,r){"use strict";(function(t){var n=r(1),i=n.Buffer,o=n.SlowBuffer,a=n.kMaxLength||2147483647;e.alloc=function(t,e,r){if("function"==typeof i.alloc)return i.alloc(t,e,r);if("number"==typeof r)throw new TypeError("encoding must not be number");if("number"!=typeof t)throw new TypeError("size must be a number");if(t>a)throw new RangeError("size is too large");var n=r,o=e;void 0===o&&(n=void 0,o=0);var f=new i(t);if("string"==typeof o)for(var s=new i(o,n),u=s.length,h=-1;++ha)throw new RangeError("size is too large");return new i(t)},e.from=function(e,r,n){ +if("function"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,r,n);if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new i(e,r);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var o=r;if(1===arguments.length)return new i(e);"undefined"==typeof o&&(o=0);var a=n;if("undefined"==typeof a&&(a=e.byteLength-o),o>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(a>e.byteLength-o)throw new RangeError("'length' is out of bounds");return new i(e.slice(o,o+a))}if(i.isBuffer(e)){var f=new i(e.length);return e.copy(f,0,0,e.length),f}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new i(e);if("Buffer"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},e.allocUnsafeSlow=function(t){if("function"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(t);if("number"!=typeof t)throw new TypeError("size must be a number");if(t>=a)throw new RangeError("size is too large");return new o(t)}}).call(e,r(39))},function(t,e,r){"use strict";(function(e){function r(t,r,n,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,f=arguments.length;switch(f){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(f-1),a=0;a=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate="function"==typeof t?t:function(t){var r=u++,n=!(arguments.length<2)&&f.call(arguments,1);return s[r]=!0,o(function(){s[r]&&(n?t.apply(null,n):t.call(null),e.clearImmediate(r))}),r},e.clearImmediate="function"==typeof n?n:function(t){delete s[t]}}).call(e,r(158).setImmediate,r(158).clearImmediate)},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r2?arguments[2]:void 0,h=Math.min((void 0===u?a:i(u,a))-s,a-f),c=1;for(s0;)s in r?r[f]=r[s]:delete r[f],f+=c,s+=c;return r}},function(t,e,r){var n=r(55);t.exports=function(t,e){var r=[];return n(t,!1,r.push,r,e),r}},function(t,e,r){var n=r(13),i=r(11),o=r(65),a=r(10);t.exports=function(t,e,r,f,s){n(e);var u=i(t),h=o(u),c=a(u.length),d=s?c-1:0,l=s?-1:1;if(r<2)for(;;){if(d in h){f=h[d],d+=l;break}if(d+=l,s?d<0:c<=d)throw TypeError("Reduce of empty array with no initial value")}for(;s?d>=0:c>d;d+=l)d in h&&(f=e(f,h[d],d,u));return f}},function(t,e,r){"use strict";var n=r(13),i=r(6),o=r(82),a=[].slice,f={},s=function(t,e,r){if(!(e in f)){for(var n=[],i=0;i1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!v(this,t)}}),l&&n(c.prototype,"size",{get:function(){return s(this[b])}}),c},def:function(t,e,r){var n,i,o=v(t,e);return o?o.v=r:(t._l=o={i:i=p(e,!0),k:e,v:r,p:n=t._l,n:void 0,r:!1},t._f||(t._f=o),n&&(n.n=o),t[b]++,"F"!==i&&(t._i[i]=o)),t},getEntry:v,setStrong:function(t,e,r){h(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==e?c(0,r.k):"values"==e?c(0,r.v):c(0,[r.k,r.v]):(t._t=void 0,c(1))},r?"entries":"values",!r,!0),d(e)}}},function(t,e,r){var n=r(64),i=r(168);t.exports=function(t){return function(){if(n(this)!=t)throw TypeError(t+"#toJSON isn't generic");return i(this)}}},function(t,e,r){"use strict";var n=r(45),i=r(36).getWeak,o=r(3),a=r(6),f=r(40),s=r(55),u=r(27),h=r(12),c=u(5),d=u(6),l=0,p=function(t){return t._l||(t._l=new b)},b=function(){this.a=[]},v=function(t,e){return c(t.a,function(t){return t[0]===e})};b.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var r=v(this,t);r?r[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,r,o){var u=t(function(t,n){f(t,u,e,"_i"),t._i=l++,t._l=void 0,void 0!=n&&s(n,r,t[o],t)});return n(u.prototype,{delete:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).delete(t):e&&h(e,this._i)&&delete e[this._i]},has:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).has(t):e&&h(e,this._i)}}),u},def:function(t,e,r){var n=i(o(e),!0);return n===!0?p(t).set(e,r):n[t._i]=r,t},ufstore:p}},function(t,e,r){t.exports=!r(8)&&!r(5)(function(){return 7!=Object.defineProperty(r(120)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(6),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(3);t.exports=function(t,e,r,i){try{return i?e(n(r)[0],r[1]):e(r)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,r){"use strict";var n=r(44),i=r(86),o=r(66),a=r(11),f=r(65),s=Object.assign;t.exports=!s||r(5)(function(){var t={},e={},r=Symbol(),n="abcdefghijklmnopqrst";return t[r]=7,n.split("").forEach(function(t){e[t]=t}),7!=s({},t)[r]||Object.keys(s({},e)).join("")!=n})?function(t,e){for(var r=a(t),s=arguments.length,u=1,h=i.f,c=o.f;s>u;)for(var d,l=f(arguments[u++]),p=h?n(l).concat(h(l)):n(l),b=p.length,v=0;b>v;)c.call(l,d=p[v++])&&(r[d]=l[d]);return r}:s},function(t,e,r){var n=r(9),i=r(3),o=r(44);t.exports=r(8)?Object.defineProperties:function(t,e){i(t);for(var r,a=o(e),f=a.length,s=0;f>s;)n.f(t,r=a[s++],e[r]);return t}},function(t,e,r){var n=r(17),i=r(43).f,o={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],f=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&"[object Window]"==o.call(t)?f(t):i(n(t))}},function(t,e,r){var n=r(12),i=r(17),o=r(78)(!1),a=r(133)("IE_PROTO");t.exports=function(t,e){var r,f=i(t),s=0,u=[];for(r in f)r!=a&&n(f,r)&&u.push(r);for(;e.length>s;)n(f,r=e[s++])&&(~o(u,r)||u.push(r));return u}},function(t,e,r){var n=r(44),i=r(17),o=r(66).f;t.exports=function(t){return function(e){for(var r,a=i(e),f=n(a),s=f.length,u=0,h=[];s>u;)o.call(a,r=f[u++])&&h.push(t?[r,a[r]]:a[r]);return h}}},function(t,e,r){var n=r(43),i=r(86),o=r(3),a=r(4).Reflect;t.exports=a&&a.ownKeys||function(t){var e=n.f(o(t)),r=i.f;return r?e.concat(r(t)):e}},function(t,e,r){var n=r(4).parseFloat,i=r(58).trim;t.exports=1/n(r(138)+"-0")!==-(1/0)?function(t){var e=i(String(t),3),r=n(e);return 0===r&&"-"==e.charAt(0)?-0:r}:n},function(t,e,r){var n=r(4).parseInt,i=r(58).trim,o=r(138),a=/^[\-+]?0[xX]/;t.exports=8!==n(o+"08")||22!==n(o+"0x16")?function(t,e){var r=i(String(t),3);return n(r,e>>>0||(a.test(r)?16:10))}:n},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},function(t,e,r){var n=r(10),i=r(137),o=r(24);t.exports=function(t,e,r,a){var f=String(o(t)),s=f.length,u=void 0===r?" ":String(r),h=n(e);if(h<=s||""==u)return f;var c=h-s,d=i.call(u,Math.ceil(c/u.length));return d.length>c&&(d=d.slice(0,c)),a?d+f:f+d}},function(t,e,r){e.f=r(7)},function(t,e,r){"use strict";var n=r(171);t.exports=r(79)("Map",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=n.getEntry(this,t);return e&&e.v},set:function(t,e){return n.def(this,0===t?0:t,e)}},n,!0)},function(t,e,r){r(8)&&"g"!=/./g.flags&&r(9).f(RegExp.prototype,"flags",{configurable:!0,get:r(81)})},function(t,e,r){"use strict";var n=r(171);t.exports=r(79)("Set",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t=0===t?0:t,t)}},n)},function(t,e,r){"use strict";var n,i=r(27)(0),o=r(15),a=r(36),f=r(179),s=r(173),u=r(6),h=a.getWeak,c=Object.isExtensible,d=s.ufstore,l={},p=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=h(t);return e===!0?d(this).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(this,t,e)}},v=t.exports=r(79)("WeakMap",p,b,s,!0,!0);7!=(new v).set((Object.freeze||Object)(l),7).get(l)&&(n=s.getConstructor(p),f(n.prototype,b),a.NEED=!0,i(["delete","has","get","set"],function(t){var e=v.prototype,r=e[t];o(e,t,function(e,i){if(u(e)&&!c(e)){this._f||(this._f=new n);var o=this._f[t](e,i);return"set"==t?this:o}return r.call(this,e,i)})}))},function(t,e){function r(t){throw new Error("Cannot find module '"+t+"'.")}r.keys=function(){return[]},r.resolve=r,t.exports=r,r.id=194},function(t,e){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,Object.getPrototypeOf(e).call(this));return Object.defineProperty(i,"message",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):""}),Object.defineProperty(i,"name",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){r(486),t.exports=r(197).Number.isInteger},function(t,e){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},function(t,e,r){var n=r(200),i=r(197),o=r(478),a=r(480),f="prototype",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,g=l?i:i[e]||(i[e]={}),m=g[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in g||(c=h?w[u]:r[u],g[u]=l&&"function"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&"function"==typeof c?o(Function.call,c):c,b&&((g.virtual||(g.virtual={}))[u]=c,t&s.R&&m&&!m[u]&&a(m,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e,r){"use strict";t.exports=r(473)},function(t,e,r){"use strict";(function(e){function n(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;f--)if(s[f]!==u[f])return!1;for(f=s.length-1;f>=0;f--)if(a=s[f],!l(t[a],e[a],r,n))return!1;return!0}function v(t,e,r){l(t,e,!0)&&c(t,e,r,"notDeepStrictEqual",v)}function y(t,e){if(!t||!e)return!1;if("[object RegExp]"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&e.call({},t)===!0}function g(t){var e;try{t()}catch(t){e=t}return e}function m(t,e,r,n){var i;if("function"!=typeof e)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=g(e),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&c(i,r,"Missing expected exception"+n);var o="string"==typeof n,a=!t&&w.isError(i),f=!t&&i&&!r;if((a&&o&&y(i,r)||f)&&c(i,r,"Got unwanted exception"+n),t&&i&&r&&!y(i,r)||!t&&i)throw i}var w=r(606),_=Object.prototype.hasOwnProperty,M=Array.prototype.slice,S=function(){return"foo"===function(){}.name}(),E=t.exports=d,A=/\s*function\s+([^\(\s]*)\s*/;E.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=h(this),this.generatedMessage=!0);var e=t.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=f(e),o=n.indexOf("\n"+i);if(o>=0){var a=n.indexOf("\n",o+1);n=n.substring(a+1)}this.stack=n}}},w.inherits(E.AssertionError,Error),E.fail=c,E.ok=d,E.equal=function(t,e,r){t!=e&&c(t,e,r,"==",E.equal)},E.notEqual=function(t,e,r){t==e&&c(t,e,r,"!=",E.notEqual)},E.deepEqual=function(t,e,r){l(t,e,!1)||c(t,e,r,"deepEqual",E.deepEqual)},E.deepStrictEqual=function(t,e,r){l(t,e,!0)||c(t,e,r,"deepStrictEqual",E.deepStrictEqual)},E.notDeepEqual=function(t,e,r){l(t,e,!1)&&c(t,e,r,"notDeepEqual",E.notDeepEqual)},E.notDeepStrictEqual=v,E.strictEqual=function(t,e,r){t!==e&&c(t,e,r,"===",E.strictEqual)},E.notStrictEqual=function(t,e,r){t===e&&c(t,e,r,"!==",E.notStrictEqual)},E.throws=function(t,e,r){m(!0,t,e,r)},E.doesNotThrow=function(t,e,r){m(!1,t,e,r)},E.ifError=function(t){if(t)throw t};var x=Object.keys||function(t){var e=[];for(var r in t)_.call(t,r)&&e.push(r);return e}}).call(e,r(39))},function(t,e,r){(function(e){function n(t,r,i,f){if(!(this instanceof n))return new n(t,r,i);a.call(this),this._finID=e.concat([i,new e([0,0,0,1])]),i=e.concat([i,new e([0,0,0,2])]),this._cipher=new o.AES(r),this._prev=new e(i.length),this._cache=new e(""),this._secCache=new e(""),this._decrypt=f,this._alen=0,this._len=0,i.copy(this._prev),this._mode=t;var u=new e(4);u.fill(0),this._ghash=new s(this._cipher.encryptBlock(u)),this._authTag=null,this._called=!1}function i(t,e){var r=0;t.length!==e.length&&r++;for(var n=Math.min(t.length,e.length),i=-1;++i>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error("length octect is too long");n=0;for(var o=0;o=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=c.tagClassByName[r||"universal"]<<6)}var f=r(2),s=r(1).Buffer,u=r(100),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return"gentime"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},i.prototype._encodeNull=function(){return this._createEncoderBuffer("")},i.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function s(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function u(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}var h=r(2),c=r(60),d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=new Array(64);h(n,c),n.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,h=0|this._c,c=0|this._d,l=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)e[y]=t.readInt32BE(4*y);for(;y<64;++y)e[y]=u(e[y-2])+e[y-7]+s(e[y-15])+e[y-16]|0;for(var g=0;g<64;++g){var m=v+f(l)+i(l,p,b)+d[g]+e[g]|0,w=a(r)+o(r,n,h)|0;v=b,b=p,p=l,l=c+m|0,c=h,h=n,n=r,r=m+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},n.prototype._hash=function(){var t=new e(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=v,p.call(this,128,112)}function i(t,e,r){return r^t&(e^r)}function o(t,e,r){return t&e|r&(t|e)}function a(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function s(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function u(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function h(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function c(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function d(t,e){return t>>>0>>0?1:0}var l=r(2),p=r(60),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);l(n,p),n.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,l=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,g=0|this._gh,m=0|this._hh,w=0|this._al,_=0|this._bl,M=0|this._cl,S=0|this._dl,E=0|this._el,A=0|this._fl,x=0|this._gl,k=0|this._hl,I=0;I<32;I+=2)e[I]=t.readInt32BE(4*I),e[I+1]=t.readInt32BE(4*I+4);for(;I<160;I+=2){var B=e[I-30],O=e[I-30+1],R=s(B,O),P=u(O,B);B=e[I-4],O=e[I-4+1];var T=h(B,O),j=c(O,B),C=e[I-14],U=e[I-14+1],N=e[I-32],L=e[I-32+1],z=P+U|0,D=R+C+d(z,P)|0;z=z+j|0,D=D+T+d(z,j)|0,z=z+L|0,D=D+N+d(z,L)|0,e[I]=D,e[I+1]=z}for(var F=0;F<160;F+=2){D=e[F],z=e[F+1];var q=o(r,n,l),K=o(w,_,M),Y=a(r,w),G=a(w,r),V=f(v,E),H=f(E,v),X=b[F],W=b[F+1],Z=i(v,y,g),J=i(E,A,x),$=k+H|0,Q=m+V+d($,k)|0;$=$+J|0,Q=Q+Z+d($,J)|0,$=$+W|0,Q=Q+X+d($,W)|0,$=$+z|0,Q=Q+D+d($,z)|0;var tt=G+K|0,et=Y+q+d(tt,G)|0;m=g,k=x,g=y,x=A,y=v,A=E,E=S+$|0,v=p+Q+d(E,S)|0,p=l,S=M,l=n,M=_,n=r,_=w,w=$+tt|0,r=Q+et+d(w,$)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+M|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+x|0,this._hl=this._hl+k|0,this._ah=this._ah+r+d(this._al,w)|0,this._bh=this._bh+n+d(this._bl,_)|0,this._ch=this._ch+l+d(this._cl,M)|0,this._dh=this._dh+p+d(this._dl,S)|0,this._eh=this._eh+v+d(this._el,E)|0,this._fh=this._fh+y+d(this._fl,A)|0,this._gh=this._gh+g+d(this._gl,x)|0,this._hh=this._hh+m+d(this._hl,k)|0},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(64);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){function n(){if(null!==m)return m;var t=1048576,e=[];e[0]=2;for(var r=1,n=3;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(d),r.testn(1)||r.iadd(l),e.cmp(l)){if(!e.cmp(p))for(;r.mod(b).cmp(v);)r.iadd(g)}else for(;r.mod(u).cmp(y);)r.iadd(g);if(n=r.shrn(1),i(n)&&i(r)&&o(n)&&o(r)&&c.test(n)&&c.test(r))return r}}var f=r(61);t.exports=a,a.simpleSieve=i,a.fermatTest=o;var s=r(150),u=new s(24),h=r(230),c=new h,d=new s(1),l=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),y=(new s(7),new s(11)),g=new s(4),m=(new s(12),null)},function(t,e,r){function n(t){this.rand=t||new o.Rand}var i=r(150),o=r(575);t.exports=n,n.create=function(t){return new n(t)},n.prototype._rand=function(t){var e=t.bitLength(),r=this.rand.generate(Math.ceil(e/8));r[0]|=3;var n=7&e;return 0!==n&&(r[r.length-1]>>=7-n),new i(r)},n.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),a=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var f=t.subn(1),s=f.subn(1),u=0;!f.testn(u);u++);for(var h=t.shrn(u),c=f.toRed(o),d=!0;e>0;e--){var l=this._rand(s);r&&r(l);var p=l.toRed(o).redPow(h);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var b=1;b0;e--){var c=this._rand(f),d=t.gcd(c);if(0!==d.cmpn(1))return d;var l=c.toRed(n).redPow(u);if(0!==l.cmp(o)&&0!==l.cmp(h)){for(var p=1;p=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(70),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){var r;"object"!=typeof t||e.isBuffer(t)||(r=t.passphrase,t=t.key),"string"==typeof t&&(t=new e(t));var n,a,s=f(t,r),u=s.tag,h=s.data;switch(u){case"PUBLIC KEY":switch(a=o.PublicKey.decode(h,"der"),n=a.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return o.RSAPublicKey.decode(a.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return a.subjectPrivateKey=a.subjectPublicKey,{type:"ec",data:a};case"1.2.840.10040.4.1":return a.algorithm.params.pub_key=o.DSAparam.decode(a.subjectPublicKey.data,"der"),{type:"dsa",data:a.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+u);case"ENCRYPTED PRIVATE KEY":h=o.EncryptedPrivateKey.decode(h,"der"),h=i(h,r);case"PRIVATE KEY":switch(a=o.PrivateKey.decode(h,"der"),n=a.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return o.RSAPrivateKey.decode(a.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:a.algorithm.curve,privateKey:o.ECPrivateKey.decode(a.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return a.algorithm.params.priv_key=o.DSAparam.decode(a.subjectPrivateKey,"der"),{type:"dsa",params:a.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+u);case"RSA PUBLIC KEY":return o.RSAPublicKey.decode(h,"der");case"RSA PRIVATE KEY":return o.RSAPrivateKey.decode(h,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:o.DSAPrivateKey.decode(h,"der")};case"EC PRIVATE KEY":return h=o.ECPrivateKey.decode(h,"der"),{curve:h.parameters.value,privateKey:h.privateKey};default:throw new Error("unknown key type "+u)}}function i(t,r){var n=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=a[t.algorithm.decrypt.cipher.algo.join(".")],f=t.algorithm.decrypt.cipher.iv,h=t.subjectPrivateKey,c=parseInt(o.split("-")[1],10)/8,d=u.pbkdf2Sync(r,n,i,c),l=s.createDecipheriv(o,d,f),p=[];return p.push(l.update(h)),p.push(l.final()),e.concat(p)}var o=r(578),a=r(469),f=r(579),s=r(239),u=r(151);t.exports=n,n.signature=o.signature}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){return a.call(this,e),f.isBuffer(t)?(this.base=t,this.offset=0,void(this.length=t.length)):void this.error("Input not Buffer")}function i(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(t){return t instanceof i||(t=new i(t,e)),this.length+=t.length,t},this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=f.byteLength(t);else{if(!f.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}var o=r(2),a=r(71).Reporter,f=r(1).Buffer;o(n,a),e.DecoderBuffer=n,n.prototype.save=function(){return{offset:this.offset,reporter:a.prototype.save.call(this)}},n.prototype.restore=function(t){var e=new n(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,a.prototype.restore.call(this,t.reporter),e},n.prototype.isEmpty=function(){return this.offset===this.length},n.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},n.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");var r=new n(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},n.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=i,i.prototype.join=function(t,e){return t||(t=new f(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach(function(r){r.join(t,e),e+=r.length}):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):f.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},function(t,e,r){var n=e;n._reverse=function(t){var e={};return Object.keys(t).forEach(function(r){(0|r)==r&&(r|=0);var n=t[r];e[n]=r}),e},n.der=r(583)},function(t,e,r){function n(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new i,this.tree._init(t.body)}function i(t){u.Node.call(this,"der",t)}function o(t,e){var r=t.readUInt8(e);if(t.isError(r))return r;var n=c.tagClass[r>>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error("length octect is too long");n=0;for(var o=0;o=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=c.tagClassByName[r||"universal"]<<6)}var f=r(2),s=r(1).Buffer,u=r(106),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return"gentime"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},i.prototype._encodeNull=function(){return this._createEncoderBuffer("")},i.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map"); +if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f0)if(e.ended&&!i){var a=new Error("stream.push() after EOF");t.emit("error",a)}else if(e.endEmitted&&i){var s=new Error("stream.unshift() after end event");t.emit("error",s)}else{var u;!e.decoder||i||n||(r=e.decoder.write(r),u=!e.objectMode&&0===r.length),i||(e.reading=!1),u||(e.flowing&&0===e.length&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&d(t))),p(t,e)}else i||(e.reading=!1);return f(e)}function f(t){return!t.ended&&(t.needReadable||t.length=F?t=F:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function u(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=s(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function h(t,e){var r=null;return T.isBuffer(e)||"string"==typeof e||null===e||void 0===e||t.objectMode||(r=new TypeError("Invalid non-string/buffer chunk")),r}function c(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,d(t)}}function d(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(N("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?B(l,t):l(t))}function l(t){N("emit readable"),t.emit("readable"),w(t)}function p(t,e){e.readingMore||(e.readingMore=!0,B(b,t,e))}function b(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=M(t,e.buffer,e.decoder),r}function M(t,e,r){var n;return to.length?o.length:t;if(i+=a===o.length?o:o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function E(t,e){var r=j.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,B(x,e,t))}function x(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function k(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return N("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?A(this):d(this),null;if(t=u(t,e),0===t&&e.ended)return 0===e.length&&A(this),null;var n=e.needReadable;N("need readable",n),(0===e.length||e.length-t0?_(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==i&&this.emit("data",i),i},o.prototype._read=function(t){this.emit("error",new Error("not implemented"))},o.prototype.pipe=function(t,r){function i(t){N("onunpipe"),t===d&&a()}function o(){N("onend"),t.end()}function a(){N("cleanup"),t.removeListener("close",u),t.removeListener("finish",h),t.removeListener("drain",y),t.removeListener("error",s),t.removeListener("unpipe",i),d.removeListener("end",o),d.removeListener("end",a),d.removeListener("data",f),g=!0,!l.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function f(e){N("ondata"),m=!1;var r=t.write(e);!1!==r||m||((1===l.pipesCount&&l.pipes===t||l.pipesCount>1&&I(l.pipes,t)!==-1)&&!g&&(N("false write response, pause",d._readableState.awaitDrain),d._readableState.awaitDrain++,m=!0),d.pause())}function s(e){N("onerror",e),c(),t.removeListener("error",s),0===P(t,"error")&&t.emit("error",e)}function u(){t.removeListener("finish",h),c()}function h(){N("onfinish"),t.removeListener("close",u),c()}function c(){N("unpipe"),d.unpipe(t)}var d=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=t;break;case 1:l.pipes=[l.pipes,t];break;default:l.pipes.push(t)}l.pipesCount+=1,N("pipe count=%d opts=%j",l.pipesCount,r);var p=(!r||r.end!==!1)&&t!==e.stdout&&t!==e.stderr,b=p?o:a;l.endEmitted?B(b):d.once("end",b),t.on("unpipe",i);var y=v(d);t.on("drain",y);var g=!1,m=!1;return d.on("data",f),n(t,"error",s),t.once("close",u),t.once("finish",h),t.emit("pipe",d),l.flowing||(N("pipe resume"),d.resume()),t},o.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this),this);if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128==(128&e)){if(e&=127,0==e)throw f("Indefinite length not supported");if(e>4)throw f("encoding too long");if(this._size-tthis._size-i)return null;if(this._offset=i,0===this.length)return r?new e(0):"";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,r?a:a.toString("utf8")},n.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i>0),r.join(".")},n.prototype._readTag=function(t){i.ok(void 0!==t);var e=this.peek();if(null===e)return null;if(e!==t)throw f("Expected 0x"+t.toString(16)+": got 0x"+e.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw f("Integer too long: "+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],o=0,a=0;a>0},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e){o.ok(t),o.equal(typeof t,"object"),o.ok(e),o.equal(typeof e,"object");var r=Object.getOwnPropertyNames(t);return r.forEach(function(r){if(!e[r]){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n)}}),e}function i(t){t=n(s,t||{}),this._buf=new e(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}var o=r(202),a=r(112),f=r(111),s=(f.newInvalidAsn1Error,{size:1024,growthFactor:8});Object.defineProperty(i.prototype,"buffer",{get:function(){if(this._seq.length)throw new InvalidAsn1Error(this._seq.length+" unended sequence(s)");return this._buf.slice(0,this._offset)}}),i.prototype.writeByte=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");this._ensure(1),this._buf[this._offset++]=t},i.prototype.writeInt=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");"number"!=typeof e&&(e=a.Integer);for(var r=4;(0===(4286578688&t)||(4286578688&t)===-8388608)&&r>1;)r--,t<<=8;if(r>4)throw new InvalidAsn1Error("BER ints cannot be > 0xffffffff");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},i.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},i.prototype.writeEnumeration=function(t,e){if("number"!=typeof t)throw new TypeError("argument must be a Number");return"number"!=typeof e&&(e=a.Enumeration),this.writeInt(t,e)},i.prototype.writeBoolean=function(t,e){if("boolean"!=typeof t)throw new TypeError("argument must be a Boolean");"number"!=typeof e&&(e=a.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},i.prototype.writeString=function(t,r){if("string"!=typeof t)throw new TypeError("argument must be a string (was: "+typeof t+")");"number"!=typeof r&&(r=a.OctetString);var n=e.byteLength(t);this.writeByte(r),this.writeLength(n),n&&(this._ensure(n),this._buf.write(t,this._offset),this._offset+=n)},i.prototype.writeBuffer=function(t,r){if("number"!=typeof r)throw new TypeError("tag must be a number");if(!e.isBuffer(t))throw new TypeError("argument must be a buffer");this.writeByte(r),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},i.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError("argument must be an Array[String]");var e=this;t.forEach(function(t){e.writeString(t)})},i.prototype.writeOID=function(t,e){function r(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(255&(e>>>7|128)),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e)):(t.push(255&(e>>>28|128)),t.push(255&(e>>>21|128)),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e))}if("string"!=typeof t)throw new TypeError("argument must be a string");if("number"!=typeof e&&(e=a.OID),!/^([0-9]+\.){3,}[0-9]+$/.test(t))throw new Error("argument is not a valid OID string");var n=t.split("."),i=[];i.push(40*parseInt(n[0],10)+parseInt(n[1],10)),n.slice(2).forEach(function(t){r(i,parseInt(t,10))});var o=this;this._ensure(2+i.length),this.writeByte(e),this.writeLength(i.length),i.forEach(function(t){o.writeByte(t)})},i.prototype.writeLength=function(t){if("number"!=typeof t)throw new TypeError("argument must be a Number");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw new InvalidAsn1ERror("Length too long (> 4 bytes)");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},i.prototype.startSequence=function(t){"number"!=typeof t&&(t=a.Sequence|a.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},i.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw new InvalidAsn1Error("Sequence too long");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},i.prototype._shift=function(t,e,r){o.ok(void 0!==t),o.ok(void 0!==e),o.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},i.prototype._ensure=function(t){if(o.ok(t),this._size-this._offset>>8*n-r,e.concat([l,u,new e([188])])}},{key:"verify",value:function(t,r,n){var i=Math.ceil(n/8),s=o.createHash(this.hashAlgorithm).update(t).digest();if(i>>8*i-n;if(h[0]&~d)return!1;var l=new a({hashAlgorithm:this.hashAlgorithm}),p=l.generate(c,i-this.hashLength-1),b=f(h,p);b[0]&=d;for(var v=i-this.hashLength-this.saltLength-2,y=0;y512||t.length<128)throw new Error("Modulus must be between 128 bytes (1017 bits) and 512 bytes (4096 bits), was: "+t.length+" bytes");this.modulus=t}},{key:"setSignature",value:function(t){if(!e.isBuffer(t))throw new TypeError("Signature must be a buffer, was: "+t);this.signature=t}},{key:"sign",value:function(t,e){this.modulus||this.setPublicModulus(s.modulusFromPrivateKey(e)),this.signature=l.sign(e,t)}},{key:"writeHashPayload",value:function(t){this.writeCommonHeader(t)}},{key:"parsePayload",value:function(t){this.setPublicModulus(t.readVarOctetString()),this.setSignature(t.readVarOctetString())}},{key:"writePayload",value:function(t){if(!this.signature)throw new c("Requires a signature");this.writeCommonHeader(t),t.writeVarOctetString(this.signature)}},{key:"calculateMaxFulfillmentLength",value:function(){var t=new h;if(!this.modulus)throw new c("Requires a public modulus");return this.writeCommonHeader(t),t.writeVarOctetString(this.modulus),t.getSize()}},{key:"validate",value:function(t){if(!e.isBuffer(t))throw new Error("Message must be provided as a Buffer, was: "+t);var r=l.verify(this.modulus,t,this.signature);if(!r)throw new d("Invalid RSA signature");return!0}}]),r}(u);p.TYPE_ID=3,p.FEATURE_BITMASK=17,t.exports=p}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;r=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var a=g.call(i,"catchLoc"),f=g.call(i,"finallyLoc");if(a&&f){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&g.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),l(r),I}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var i=n.arg;l(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:b(t),resultName:e,nextLoc:r},I}}}("object"==typeof e?e:"object"==typeof window?window:"object"==typeof self?self:this)}).call(e,r(39),r(26))},function(t,e,r){r(290),t.exports=r(32).RegExp.escape},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(77);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e,r){var n=r(270);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(77),i=r(165).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(165),i=r(163),o=r(272),a=r(275),f="prototype",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,g=l?i:i[e]||(i[e]={}),m=g[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in g||(c=h?w[u]:r[u],g[u]=l&&"function"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&"function"==typeof c?o(Function.call,c):c,b&&((g.virtual||(g.virtual={}))[u]=c,t&s.R&&m&&!m[u]&&a(m,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e,r){var n=r(278),i=r(279);t.exports=r(117)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(117)&&!r(164)(function(){return 7!=Object.defineProperty(r(273)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(77),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(271),i=r(276),o=r(280),a=Object.defineProperty;e.f=r(117)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(77);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){var n=r(274);n(n.S,"Number",{isInteger:r(277)})},function(t,e,r){var n=r(6),i=r(126),o=r(7)("species");t.exports=function(t){var e;return i(t)&&(e=t.constructor,"function"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),n(e)&&(e=e[o],null===e&&(e=void 0))),void 0===e?Array:e}},function(t,e,r){var n=r(282);t.exports=function(t,e){return new(n(t))(e)}},function(t,e,r){"use strict";var n=r(3),i=r(29),o="number";t.exports=function(t){if("string"!==t&&t!==o&&"default"!==t)throw TypeError("Incorrect hint");return i(n(this),t!=o)}},function(t,e,r){var n=r(44),i=r(86),o=r(66);t.exports=function(t){var e=n(t),r=i.f;if(r)for(var a,f=r(t),s=o.f,u=0;f.length>u;)s.call(t,a=f[u++])&&e.push(a);return e}},function(t,e,r){var n=r(44),i=r(17);t.exports=function(t,e){for(var r,o=i(t),a=n(o),f=a.length,s=0;f>s;)if(o[r=a[s++]]===e)return r}},function(t,e,r){"use strict";var n=r(288),i=r(82),o=r(13);t.exports=function(){for(var t=o(this),e=arguments.length,r=Array(e),a=0,f=n._,s=!1;e>a;)(r[a]=arguments[a++])===f&&(s=!0);return function(){var n,o=this,a=arguments.length,u=0,h=0;if(!s&&!a)return i(t,r,o);if(n=r.slice(),s)for(;e>u;u++)n[u]===f&&(n[u]=arguments[h++]);for(;a>h;)n.push(arguments[h++]);return i(t,n,o)}}},function(t,e,r){t.exports=r(4)},function(t,e){t.exports=function(t,e){var r=e===Object(e)?function(t){return e[t]}:e;return function(e){return String(e).replace(t,r)}}},function(t,e,r){var n=r(0),i=r(289)(/[\\^$*+?.()|[\]{}]/g,"\\$&");n(n.S,"RegExp",{escape:function(t){return i(t)}})},function(t,e,r){var n=r(0);n(n.P,"Array",{copyWithin:r(167)}),r(54)("copyWithin")},function(t,e,r){"use strict";var n=r(0),i=r(27)(4);n(n.P+n.F*!r(25)([].every,!0),"Array",{every:function(t){return i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.P,"Array",{fill:r(118)}),r(54)("fill")},function(t,e,r){"use strict";var n=r(0),i=r(27)(2);n(n.P+n.F*!r(25)([].filter,!0),"Array",{filter:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(0),i=r(27)(6),o="findIndex",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){"use strict";var n=r(0),i=r(27)(5),o="find",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){"use strict";var n=r(0),i=r(27)(0),o=r(25)([].forEach,!0);n(n.P+n.F*!o,"Array",{forEach:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(33),i=r(0),o=r(11),a=r(176),f=r(125),s=r(10),u=r(119),h=r(142);i(i.S+i.F*!r(84)(function(t){Array.from(t)}),"Array",{from:function(t){var e,r,i,c,d=o(t),l="function"==typeof this?this:Array,p=arguments.length,b=p>1?arguments[1]:void 0,v=void 0!==b,y=0,g=h(d);if(v&&(b=n(b,p>2?arguments[2]:void 0,2)),void 0==g||l==Array&&f(g))for(e=s(d.length),r=new l(e);e>y;y++)u(r,y,v?b(d[y],y):d[y]);else for(c=g.call(d),r=new l;!(i=c.next()).done;y++)u(r,y,v?a(c,b,[i.value,y],!0):i.value);return r.length=y,r}})},function(t,e,r){"use strict";var n=r(0),i=r(78)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;n(n.P+n.F*(a||!r(25)(o)),"Array",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.S,"Array",{isArray:r(126)})},function(t,e,r){"use strict";var n=r(0),i=r(17),o=[].join;n(n.P+n.F*(r(65)!=Object||!r(25)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,e,r){"use strict";var n=r(0),i=r(17),o=r(38),a=r(10),f=[].lastIndexOf,s=!!f&&1/[1].lastIndexOf(1,-0)<0;n(n.P+n.F*(s||!r(25)(f)),"Array",{lastIndexOf:function(t){if(s)return f.apply(this,arguments)||0;var e=i(this),r=a(e.length),n=r-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in e&&e[n]===t)return n||0;return-1}})},function(t,e,r){"use strict";var n=r(0),i=r(27)(1);n(n.P+n.F*!r(25)([].map,!0),"Array",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,r){"use strict";var n=r(0),i=r(119);n(n.S+n.F*r(5)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),"Array",{of:function(){for(var t=0,e=arguments.length,r=new("function"==typeof this?this:Array)(e);e>t;)i(r,t,arguments[t++]);return r.length=e,r}})},function(t,e,r){"use strict";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduceRight,!0),"Array",{reduceRight:function(t){return i(this,t,arguments.length,arguments[1],!0)}})},function(t,e,r){"use strict";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduce,!0),"Array",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},function(t,e,r){"use strict";var n=r(0),i=r(123),o=r(23),a=r(47),f=r(10),s=[].slice;n(n.P+n.F*r(5)(function(){i&&s.call(i)}),"Array",{slice:function(t,e){var r=f(this.length),n=o(this);if(e=void 0===e?r:e,"Array"==n)return s.call(this,t,e);for(var i=a(t,r),u=a(e,r),h=f(u-i),c=Array(h),d=0;d9?t:"0"+t};n(n.P+n.F*(i(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!i(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function(){if(!isFinite(o.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),r=t.getUTCMilliseconds(),n=e<0?"-":e>9999?"+":"";return n+("00000"+Math.abs(e)).slice(n?-6:-4)+"-"+a(t.getUTCMonth()+1)+"-"+a(t.getUTCDate())+"T"+a(t.getUTCHours())+":"+a(t.getUTCMinutes())+":"+a(t.getUTCSeconds())+"."+(r>99?r:"0"+a(r))+"Z"; +}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29);n(n.P+n.F*r(5)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(t){var e=i(this),r=o(e);return"number"!=typeof r||isFinite(r)?e.toISOString():null}})},function(t,e,r){var n=r(7)("toPrimitive"),i=Date.prototype;n in i||r(14)(i,n,r(284))},function(t,e,r){var n=Date.prototype,i="Invalid Date",o="toString",a=n[o],f=n.getTime;new Date(NaN)+""!=i&&r(15)(n,o,function(){var t=f.call(this);return t===t?a.call(this):i})},function(t,e,r){var n=r(0);n(n.P,"Function",{bind:r(170)})},function(t,e,r){"use strict";var n=r(6),i=r(21),o=r(7)("hasInstance"),a=Function.prototype;o in a||r(9).f(a,o,{value:function(t){if("function"!=typeof this||!n(t))return!1;if(!n(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,r){var n=r(9).f,i=r(37),o=r(12),a=Function.prototype,f=/^\s*function ([^ (]*)/,s="name",u=Object.isExtensible||function(){return!0};s in a||r(8)&&n(a,s,{configurable:!0,get:function(){try{var t=this,e=(""+t).match(f)[1];return o(t,s)||!u(t)||n(t,s,i(5,e)),e}catch(t){return""}}})},function(t,e,r){var n=r(0),i=r(178),o=Math.sqrt,a=Math.acosh;n(n.S+n.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,r){function n(t){return isFinite(t=+t)&&0!=t?t<0?-n(-t):Math.log(t+Math.sqrt(t*t+1)):t}var i=r(0),o=Math.asinh;i(i.S+i.F*!(o&&1/o(0)>0),"Math",{asinh:n})},function(t,e,r){var n=r(0),i=Math.atanh;n(n.S+n.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,r){var n=r(0),i=r(130);n(n.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,r){var n=r(0),i=Math.exp;n(n.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,r){var n=r(0),i=r(129);n(n.S+n.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,e,r){var n=r(0),i=r(130),o=Math.pow,a=o(2,-52),f=o(2,-23),s=o(2,127)*(2-f),u=o(2,-126),h=function(t){return t+1/a-1/a};n(n.S,"Math",{fround:function(t){var e,r,n=Math.abs(t),o=i(t);return ns||r!=r?o*(1/0):o*r)}})},function(t,e,r){var n=r(0),i=Math.abs;n(n.S,"Math",{hypot:function(t,e){for(var r,n,o=0,a=0,f=arguments.length,s=0;a0?(n=r/s,o+=n*n):o+=r;return s===1/0?1/0:s*Math.sqrt(o)}})},function(t,e,r){var n=r(0),i=Math.imul;n(n.S+n.F*r(5)(function(){return i(4294967295,5)!=-5||2!=i.length}),"Math",{imul:function(t,e){var r=65535,n=+t,i=+e,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{log10:function(t){return Math.log(t)/Math.LN10}})},function(t,e,r){var n=r(0);n(n.S,"Math",{log1p:r(178)})},function(t,e,r){var n=r(0);n(n.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,r){var n=r(0);n(n.S,"Math",{sign:r(130)})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S+n.F*r(5)(function(){return!Math.sinh(-2e-17)!=-2e-17}),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S,"Math",{tanh:function(t){var e=i(t=+t),r=i(-t);return e==1/0?1:r==1/0?-1:(e-r)/(o(t)+o(-t))}})},function(t,e,r){var n=r(0);n(n.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,r){"use strict";var n=r(4),i=r(12),o=r(23),a=r(124),f=r(29),s=r(5),u=r(43).f,h=r(20).f,c=r(9).f,d=r(58).trim,l="Number",p=n[l],b=p,v=p.prototype,y=o(r(42)(v))==l,g="trim"in String.prototype,m=function(t){var e=f(t,!1);if("string"==typeof e&&e.length>2){e=g?e.trim():d(e,3);var r,n,i,o=e.charCodeAt(0);if(43===o||45===o){if(r=e.charCodeAt(2),88===r||120===r)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+e}for(var a,s=e.slice(2),u=0,h=s.length;ui)return NaN;return parseInt(s,n)}}return+e};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var e=arguments.length<1?0:t,r=this;return r instanceof p&&(y?s(function(){v.valueOf.call(r)}):o(r)!=l)?a(new b(m(e)),r,p):m(e)};for(var w,_=r(8)?u(b):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),M=0;_.length>M;M++)i(b,w=_[M])&&!i(p,w)&&c(p,w,h(b,w));p.prototype=v,v.constructor=p,r(15)(n,l,p)}},function(t,e,r){var n=r(0);n(n.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,r){var n=r(0),i=r(4).isFinite;n(n.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,e,r){var n=r(0);n(n.S,"Number",{isInteger:r(175)})},function(t,e,r){var n=r(0);n(n.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,r){var n=r(0),i=r(175),o=Math.abs;n(n.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,r){var n=r(0);n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){var n=r(0);n(n.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,r){var n=r(0),i=r(185);n(n.S+n.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.S+n.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,e,r){"use strict";var n=r(0),i=r(38),o=r(166),a=r(137),f=1..toFixed,s=Math.floor,u=[0,0,0,0,0,0],h="Number.toFixed: incorrect invocation!",c="0",d=function(t,e){for(var r=-1,n=e;++r<6;)n+=t*u[r],u[r]=n%1e7,n=s(n/1e7)},l=function(t){for(var e=6,r=0;--e>=0;)r+=u[e],u[e]=s(r/t),r=r%t*1e7},p=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==u[t]){var r=String(u[t]);e=""===e?r:e+a.call(c,7-r.length)+r}return e},b=function(t,e,r){return 0===e?r:e%2===1?b(t,e-1,r*t):b(t*t,e/2,r)},v=function(t){for(var e=0,r=t;r>=4096;)e+=12,r/=4096;for(;r>=2;)e+=1,r/=2;return e};n(n.P+n.F*(!!f&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r(5)(function(){f.call({})})),"Number",{toFixed:function(t){var e,r,n,f,s=o(this,h),u=i(t),y="",g=c;if(u<0||u>20)throw RangeError(h);if(s!=s)return"NaN";if(s<=-1e21||s>=1e21)return String(s);if(s<0&&(y="-",s=-s),s>1e-21)if(e=v(s*b(2,69,1))-69,r=e<0?s*b(2,-e,1):s/b(2,e,1),r*=4503599627370496,e=52-e,e>0){for(d(0,r),n=u;n>=7;)d(1e7,0),n-=7;for(d(b(10,n,1),0),n=e-1;n>=23;)l(1<<23),n-=23;l(1<0?(f=g.length,g=y+(f<=u?"0."+a.call(c,u-f)+g:g.slice(0,f-u)+"."+g.slice(f-u))):g=y+g,g}})},function(t,e,r){"use strict";var n=r(0),i=r(5),o=r(166),a=1..toPrecision;n(n.P+n.F*(i(function(){return"1"!==a.call(1,void 0)})||!i(function(){a.call({})})),"Number",{toPrecision:function(t){var e=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,r){var n=r(0);n(n.S+n.F,"Object",{assign:r(179)})},function(t,e,r){var n=r(0);n(n.S,"Object",{create:r(42)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),"Object",{defineProperties:r(180)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),"Object",{defineProperty:r(9).f})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("freeze",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(17),i=r(20).f;r(28)("getOwnPropertyDescriptor",function(){return function(t,e){return i(n(t),e)}})},function(t,e,r){r(28)("getOwnPropertyNames",function(){return r(181).f})},function(t,e,r){var n=r(11),i=r(21);r(28)("getPrototypeOf",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6);r(28)("isExtensible",function(t){return function(e){return!!n(e)&&(!t||t(e))}})},function(t,e,r){var n=r(6);r(28)("isFrozen",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(6);r(28)("isSealed",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(0);n(n.S,"Object",{is:r(187)})},function(t,e,r){var n=r(11),i=r(44);r(28)("keys",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("preventExtensions",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)("seal",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(0);n(n.S,"Object",{setPrototypeOf:r(132).set})},function(t,e,r){"use strict";var n=r(64),i={};i[r(7)("toStringTag")]="z",i+""!="[object z]"&&r(15)(Object.prototype,"toString",function(){return"[object "+n(this)+"]"},!0)},function(t,e,r){var n=r(0),i=r(185);n(n.G+n.F*(parseFloat!=i),{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.G+n.F*(parseInt!=i),{parseInt:i})},function(t,e,r){"use strict";var n,i,o,a=r(41),f=r(4),s=r(33),u=r(64),h=r(0),c=r(6),d=r(13),l=r(40),p=r(55),b=r(134),v=r(139).set,y=r(131)(),g="Promise",m=f.TypeError,w=f.process,_=f[g],w=f.process,M="process"==u(w),S=function(){},E=!!function(){try{var t=_.resolve(1),e=(t.constructor={})[r(7)("species")]=function(t){t(S,S)};return(M||"function"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e}catch(t){}}(),A=function(t,e){return t===e||t===_&&e===o},x=function(t){var e;return!(!c(t)||"function"!=typeof(e=t.then))&&e},k=function(t){return A(_,t)?new I(t):new i(t)},I=i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw m("Bad Promise constructor");e=t,r=n}),this.resolve=d(e),this.reject=d(r)},B=function(t){try{t()}catch(t){return{error:t}}},O=function(t,e){if(!t._n){t._n=!0;var r=t._c;y(function(){for(var n=t._v,i=1==t._s,o=0,a=function(e){var r,o,a=i?e.ok:e.fail,f=e.resolve,s=e.reject,u=e.domain;try{a?(i||(2==t._h&&T(t),t._h=1),a===!0?r=n:(u&&u.enter(),r=a(n),u&&u.exit()),r===e.promise?s(m("Promise-chain cycle")):(o=x(r))?o.call(r,f,s):f(r)):s(n)}catch(t){s(t)}};r.length>o;)a(r[o++]);t._c=[],t._n=!1,e&&!t._h&&R(t)})}},R=function(t){v.call(f,function(){var e,r,n,i=t._v;if(P(t)&&(e=B(function(){M?w.emit("unhandledRejection",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(n=f.console)&&n.error&&n.error("Unhandled promise rejection",i)}),t._h=M||P(t)?2:1),t._a=void 0,e)throw e.error})},P=function(t){if(1==t._h)return!1;for(var e,r=t._a||t._c,n=0;r.length>n;)if(e=r[n++],e.fail||!P(e.promise))return!1;return!0},T=function(t){v.call(f,function(){var e;M?w.emit("rejectionHandled",t):(e=f.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),O(e,!0))},C=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw m("Promise can't be resolved itself");(e=x(t))?y(function(){var n={_w:r,_d:!1};try{e.call(t,s(C,n,1),s(j,n,1))}catch(t){j.call(n,t)}}):(r._v=t,r._s=1,O(r,!1))}catch(t){j.call({_w:r,_d:!1},t)}}};E||(_=function(t){l(this,_,g,"_h"),d(t),n.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},n=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},n.prototype=r(45)(_.prototype,{then:function(t,e){var r=k(b(this,_));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=M?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&O(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),I=function(){var t=new n;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)}),h(h.G+h.W+h.F*!E,{Promise:_}),r(57)(_,g),r(46)(g),o=r(32)[g],h(h.S+h.F*!E,g,{reject:function(t){var e=k(this),r=e.reject;return r(t),e.promise}}),h(h.S+h.F*(a||!E),g,{resolve:function(t){if(t instanceof _&&A(t.constructor,this))return t;var e=k(this),r=e.resolve;return r(t),e.promise}}),h(h.S+h.F*!(E&&r(84)(function(t){_.all(t).catch(S)})),g,{all:function(t){var e=this,r=k(e),n=r.resolve,i=r.reject,o=B(function(){var r=[],o=0,a=1;p(t,!1,function(t){var f=o++,s=!1;r.push(void 0),a++,e.resolve(t).then(function(t){s||(s=!0,r[f]=t,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(t){var e=this,r=k(e),n=r.reject,i=B(function(){p(t,!1,function(t){e.resolve(t).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},function(t,e,r){var n=r(0),i=r(13),o=r(3),a=(r(4).Reflect||{}).apply,f=Function.apply;n(n.S+n.F*!r(5)(function(){a(function(){})}),"Reflect",{apply:function(t,e,r){var n=i(t),s=o(r);return a?a(n,e,s):f.call(n,e,s)}})},function(t,e,r){var n=r(0),i=r(42),o=r(13),a=r(3),f=r(6),s=r(5),u=r(170),h=(r(4).Reflect||{}).construct,c=s(function(){function t(){}return!(h(function(){},[],t)instanceof t)}),d=!s(function(){h(function(){})});n(n.S+n.F*(c||d),"Reflect",{construct:function(t,e){o(t),a(e);var r=arguments.length<3?t:o(arguments[2]);if(d&&!c)return h(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(u.apply(t,n))}var s=r.prototype,l=i(f(s)?s:Object.prototype),p=Function.apply.call(t,l,e);return f(p)?p:l}})},function(t,e,r){var n=r(9),i=r(0),o=r(3),a=r(29);i(i.S+i.F*r(5)(function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function(t,e,r){o(t),e=a(e,!0),o(r);try{return n.f(t,e,r),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(20).f,o=r(3);n(n.S,"Reflect",{deleteProperty:function(t,e){var r=i(o(t),e);return!(r&&!r.configurable)&&delete t[e]}})},function(t,e,r){"use strict";var n=r(0),i=r(3),o=function(t){this._t=i(t),this._i=0;var e,r=this._k=[];for(e in t)r.push(e)};r(127)(o,"Object",function(){var t,e=this,r=e._k;do if(e._i>=r.length)return{value:void 0,done:!0};while(!((t=r[e._i++])in e._t));return{value:t,done:!1}}),n(n.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,e,r){var n=r(20),i=r(0),o=r(3);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return n.f(o(t),e)}})},function(t,e,r){var n=r(0),i=r(21),o=r(3);n(n.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,r){function n(t,e){var r,f,h=arguments.length<3?t:arguments[2];return u(t)===h?t[e]:(r=i.f(t,e))?a(r,"value")?r.value:void 0!==r.get?r.get.call(h):void 0:s(f=o(t))?n(f,e,h):void 0}var i=r(20),o=r(21),a=r(12),f=r(0),s=r(6),u=r(3);f(f.S,"Reflect",{get:n})},function(t,e,r){var n=r(0);n(n.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,r){var n=r(0),i=r(3),o=Object.isExtensible;n(n.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,r){var n=r(0);n(n.S,"Reflect",{ownKeys:r(184)})},function(t,e,r){var n=r(0),i=r(3),o=Object.preventExtensions;n(n.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(132);i&&n(n.S,"Reflect",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,r){function n(t,e,r){var s,d,l=arguments.length<4?t:arguments[3],p=o.f(h(t),e);if(!p){if(c(d=a(t)))return n(d,e,r,l);p=u(0)}return f(p,"value")?!(p.writable===!1||!c(l)||(s=o.f(l,e)||u(0),s.value=r,i.f(l,e,s),0)):void 0!==p.set&&(p.set.call(l,r),!0)}var i=r(9),o=r(20),a=r(21),f=r(12),s=r(0),u=r(37),h=r(3),c=r(6);s(s.S,"Reflect",{set:n})},function(t,e,r){var n=r(4),i=r(124),o=r(9).f,a=r(43).f,f=r(83),s=r(81),u=n.RegExp,h=u,c=u.prototype,d=/a/g,l=/a/g,p=new u(d)!==d;if(r(8)&&(!p||r(5)(function(){return l[r(7)("match")]=!1,u(d)!=d||u(l)==l||"/a/i"!=u(d,"i")}))){u=function(t,e){var r=this instanceof u,n=f(t),o=void 0===e;return!r&&n&&t.constructor===u&&o?t:i(p?new h(n&&!o?t.source:t,e):h((n=t instanceof u)?t.source:t,n&&o?s.call(t):e),r?this:c,u)};for(var b=(function(t){t in u||o(u,t,{configurable:!0,get:function(){return h[t]},set:function(e){h[t]=e}})}),v=a(h),y=0;v.length>y;)b(v[y++]);c.constructor=u,u.prototype=c,r(15)(n,"RegExp",u)}r(46)("RegExp")},function(t,e,r){r(80)("match",1,function(t,e,r){return[function(r){"use strict";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){r(80)("replace",2,function(t,e,r){return[function(n,i){"use strict";var o=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,o,i):r.call(String(o),n,i)},r]})},function(t,e,r){r(80)("search",1,function(t,e,r){return[function(r){"use strict";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){r(80)("split",2,function(t,e,n){"use strict";var i=r(83),o=n,a=[].push,f="split",s="length",u="lastIndex";if("c"=="abbc"[f](/(b)*/)[1]||4!="test"[f](/(?:)/,-1)[s]||2!="ab"[f](/(?:ab)*/)[s]||4!="."[f](/(.?)(.?)/)[s]||"."[f](/()()/)[s]>1||""[f](/.?/)[s]){var h=void 0===/()??/.exec("")[1];n=function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!i(t))return o.call(r,t,e);var n,f,c,d,l,p=[],b=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),v=0,y=void 0===e?4294967295:e>>>0,g=new RegExp(t.source,b+"g");for(h||(n=new RegExp("^"+g.source+"$(?!\\s)",b));(f=g.exec(r))&&(c=f.index+f[0][s],!(c>v&&(p.push(r.slice(v,f.index)),!h&&f[s]>1&&f[0].replace(n,function(){for(l=1;l1&&f.index=y)));)g[u]===f.index&&g[u]++;return v===r[s]?!d&&g.test("")||p.push(""):p.push(r.slice(v)),p[s]>y?p.slice(0,y):p}}else"0"[f](void 0,0)[s]&&(n=function(t,e){return void 0===t&&0===e?[]:o.call(this,t,e)});return[function(r,i){var o=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,o,i):n.call(String(o),r,i)},n]})},function(t,e,r){"use strict";r(191);var n=r(3),i=r(81),o=r(8),a="toString",f=/./[a],s=function(t){r(15)(RegExp.prototype,a,t,!0)};r(5)(function(){return"/a/b"!=f.call({source:"a",flags:"b"})})?s(function(){var t=n(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):f.name!=a&&s(function(){return f.call(this)})},function(t,e,r){"use strict";r(16)("anchor",function(t){return function(e){return t(this,"a","name",e)}})},function(t,e,r){"use strict";r(16)("big",function(t){return function(){return t(this,"big","","")}})},function(t,e,r){"use strict";r(16)("blink",function(t){return function(){return t(this,"blink","","")}})},function(t,e,r){"use strict";r(16)("bold",function(t){return function(){return t(this,"b","","")}})},function(t,e,r){"use strict";var n=r(0),i=r(135)(!1);n(n.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,e,r){"use strict";var n=r(0),i=r(10),o=r(136),a="endsWith",f=""[a];n(n.P+n.F*r(122)(a),"String",{endsWith:function(t){var e=o(this,t,a),r=arguments.length>1?arguments[1]:void 0,n=i(e.length),s=void 0===r?n:Math.min(i(r),n),u=String(t);return f?f.call(e,u,s):e.slice(s-u.length,s)===u}})},function(t,e,r){"use strict";r(16)("fixed",function(t){return function(){return t(this,"tt","","")}})},function(t,e,r){"use strict";r(16)("fontcolor",function(t){return function(e){return t(this,"font","color",e)}})},function(t,e,r){"use strict";r(16)("fontsize",function(t){return function(e){return t(this,"font","size",e)}})},function(t,e,r){var n=r(0),i=r(47),o=String.fromCharCode,a=String.fromCodePoint;n(n.S+n.F*(!!a&&1!=a.length),"String",{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,a=0;n>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");r.push(e<65536?o(e):o(((e-=65536)>>10)+55296,e%1024+56320))}return r.join("")}})},function(t,e,r){"use strict";var n=r(0),i=r(136),o="includes";n(n.P+n.F*r(122)(o),"String",{includes:function(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){"use strict";r(16)("italics",function(t){return function(){return t(this,"i","","")}})},function(t,e,r){"use strict";var n=r(135)(!0);r(128)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})})},function(t,e,r){"use strict";r(16)("link",function(t){return function(e){return t(this,"a","href",e)}})},function(t,e,r){var n=r(0),i=r(17),o=r(10);n(n.S,"String",{raw:function(t){for(var e=i(t.raw),r=o(e.length),n=arguments.length,a=[],f=0;r>f;)a.push(String(e[f++])),f1?arguments[1]:void 0,e.length)),n=String(t);return f?f.call(e,n,r):e.slice(r,r+n.length)===n}})},function(t,e,r){"use strict";r(16)("strike",function(t){return function(){return t(this,"strike","","")}})},function(t,e,r){"use strict";r(16)("sub",function(t){return function(){return t(this,"sub","","")}})},function(t,e,r){"use strict";r(16)("sup",function(t){return function(){return t(this,"sup","","")}})},function(t,e,r){"use strict";r(58)("trim",function(t){return function(){return t(this,3)}})},function(t,e,r){"use strict";var n=r(4),i=r(12),o=r(8),a=r(0),f=r(15),s=r(36).KEY,u=r(5),h=r(87),c=r(57),d=r(48),l=r(7),p=r(189),b=r(141),v=r(286),y=r(285),g=r(126),m=r(3),w=r(17),_=r(29),M=r(37),S=r(42),E=r(181),A=r(20),x=r(9),k=r(44),I=A.f,B=x.f,O=E.f,R=n.Symbol,P=n.JSON,T=P&&P.stringify,j="prototype",C=l("_hidden"),U=l("toPrimitive"),N={}.propertyIsEnumerable,L=h("symbol-registry"),z=h("symbols"),D=h("op-symbols"),F=Object[j],q="function"==typeof R,K=n.QObject,Y=!K||!K[j]||!K[j].findChild,G=o&&u(function(){return 7!=S(B({},"a",{get:function(){return B(this,"a",{value:7}).a}})).a})?function(t,e,r){var n=I(F,e);n&&delete F[e],B(t,e,r),n&&t!==F&&B(F,e,n)}:B,V=function(t){var e=z[t]=S(R[j]);return e._k=t,e},H=q&&"symbol"==typeof R.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof R},X=function(t,e,r){return t===F&&X(D,e,r),m(t),e=_(e,!0),m(r),i(z,e)?(r.enumerable?(i(t,C)&&t[C][e]&&(t[C][e]=!1),r=S(r,{enumerable:M(0,!1)})):(i(t,C)||B(t,C,M(1,{})),t[C][e]=!0),G(t,e,r)):B(t,e,r)},W=function(t,e){m(t);for(var r,n=y(e=w(e)),i=0,o=n.length;o>i;)X(t,r=n[i++],e[r]);return t},Z=function(t,e){return void 0===e?S(t):W(S(t),e)},J=function(t){var e=N.call(this,t=_(t,!0));return!(this===F&&i(z,t)&&!i(D,t))&&(!(e||!i(this,t)||!i(z,t)||i(this,C)&&this[C][t])||e)},$=function(t,e){if(t=w(t),e=_(e,!0),t!==F||!i(z,e)||i(D,e)){var r=I(t,e);return!r||!i(z,e)||i(t,C)&&t[C][e]||(r.enumerable=!0),r}},Q=function(t){for(var e,r=O(w(t)),n=[],o=0;r.length>o;)i(z,e=r[o++])||e==C||e==s||n.push(e);return n},tt=function(t){for(var e,r=t===F,n=O(r?D:w(t)),o=[],a=0;n.length>a;)!i(z,e=n[a++])||r&&!i(F,e)||o.push(z[e]);return o};q||(R=function(){if(this instanceof R)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(r){this===F&&e.call(D,r),i(this,C)&&i(this[C],t)&&(this[C][t]=!1),G(this,t,M(1,r))};return o&&Y&&G(F,t,{configurable:!0,set:e}),V(t)},f(R[j],"toString",function(){return this._k}),A.f=$,x.f=X,r(43).f=E.f=Q,r(66).f=J,r(86).f=tt,o&&!r(41)&&f(F,"propertyIsEnumerable",J,!0),p.f=function(t){return V(l(t))}),a(a.G+a.W+a.F*!q,{Symbol:R});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;et.length>rt;)l(et[rt++]);for(var et=k(l.store),rt=0;et.length>rt;)b(et[rt++]);a(a.S+a.F*!q,"Symbol",{for:function(t){return i(L,t+="")?L[t]:L[t]=R(t)},keyFor:function(t){if(H(t))return v(L,t);throw TypeError(t+" is not a symbol!")},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),a(a.S+a.F*!q,"Object",{create:Z,defineProperty:X,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),P&&a(a.S+a.F*(!q||u(function(){var t=R();return"[null]"!=T([t])||"{}"!=T({a:t})||"{}"!=T(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!H(t)){for(var e,r,n=[t],i=1;arguments.length>i;)n.push(arguments[i++]);return e=n[1],"function"==typeof e&&(r=e),!r&&g(e)||(e=function(t,e){if(r&&(e=r.call(this,t,e)),!H(e))return e}),n[1]=e,T.apply(P,n)}}}),R[j][U]||r(14)(R[j],U,R[j].valueOf),c(R,"Symbol"),c(Math,"Math",!0),c(n.JSON,"JSON",!0)},function(t,e,r){"use strict";var n=r(0),i=r(88),o=r(140),a=r(3),f=r(47),s=r(10),u=r(6),h=r(4).ArrayBuffer,c=r(134),d=o.ArrayBuffer,l=o.DataView,p=i.ABV&&h.isView,b=d.prototype.slice,v=i.VIEW,y="ArrayBuffer";n(n.G+n.W+n.F*(h!==d),{ArrayBuffer:d}),n(n.S+n.F*!i.CONSTR,y,{isView:function(t){return p&&p(t)||u(t)&&v in t}}),n(n.P+n.U+n.F*r(5)(function(){return!new d(2).slice(1,void 0).byteLength}),y,{slice:function(t,e){if(void 0!==b&&void 0===e)return b.call(a(this),t);for(var r=a(this).byteLength,n=f(t,r),i=f(void 0===e?r:e,r),o=new(c(this,d))(s(i-n)),u=new l(this),h=new l(o),p=0;n0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t,!0)}},n,!1,!0)},function(t,e,r){"use strict";var n=r(0),i=r(78)(!0);n(n.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)("includes")},function(t,e,r){var n=r(0),i=r(131)(),o=r(4).process,a="process"==r(23)(o);n(n.G,{asap:function(t){var e=a&&o.domain;i(e?e.bind(t):t)}})},function(t,e,r){var n=r(0),i=r(23);n(n.S,"Error",{isError:function(t){return"Error"===i(t)}})},function(t,e,r){var n=r(0);n(n.P+n.R,"Map",{toJSON:r(172)("Map")})},function(t,e,r){var n=r(0);n(n.S,"Math",{iaddh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o+(n>>>0)+((i&a|(i|a)&~(i+a>>>0))>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,"Math",{imulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>16,s=i>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>16)+((o*s>>>0)+(u&r)>>16)}})},function(t,e,r){var n=r(0);n(n.S,"Math",{isubh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o-(n>>>0)-((~i&a|~(i^a)&i-a>>>0)>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,"Math",{umulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>>16,s=i>>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>>16)+((o*s>>>0)+(u&r)>>>16)}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),"Object",{__defineGetter__:function(t,e){a.f(i(this),t,{get:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),"Object",{__defineSetter__:function(t,e){a.f(i(this),t,{set:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){var n=r(0),i=r(183)(!0);n(n.S,"Object",{entries:function(t){return i(t)}})},function(t,e,r){var n=r(0),i=r(184),o=r(17),a=r(20),f=r(119);n(n.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,r=o(t),n=a.f,s=i(r),u={},h=0;s.length>h;)f(u,e=s[h++],n(r,e));return u}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),"Object",{__lookupGetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.get;while(r=a(r))}})},function(t,e,r){"use strict";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),"Object",{__lookupSetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.set;while(r=a(r))}})},function(t,e,r){var n=r(0),i=r(183)(!1);n(n.S,"Object",{values:function(t){return i(t)}})},function(t,e,r){"use strict";var n=r(0),i=r(4),o=r(32),a=r(131)(),f=r(7)("observable"),s=r(13),u=r(3),h=r(40),c=r(45),d=r(14),l=r(55),p=l.RETURN,b=function(t){return null==t?void 0:s(t)},v=function(t){var e=t._c;e&&(t._c=void 0,e())},y=function(t){return void 0===t._o},g=function(t){y(t)||(t._o=void 0,v(t))},m=function(t,e){u(t),this._c=void 0,this._o=t,t=new w(this);try{var r=e(t),n=r;null!=r&&("function"==typeof r.unsubscribe?r=function(){n.unsubscribe()}:s(r),this._c=r)}catch(e){return void t.error(e)}y(this)&&v(this)};m.prototype=c({},{unsubscribe:function(){g(this)}});var w=function(t){this._s=t};w.prototype=c({},{next:function(t){var e=this._s;if(!y(e)){var r=e._o;try{var n=b(r.next);if(n)return n.call(r,t)}catch(t){try{g(e)}finally{throw t}}}},error:function(t){var e=this._s;if(y(e))throw t;var r=e._o;e._o=void 0;try{var n=b(r.error);if(!n)throw t;t=n.call(r,t)}catch(t){try{v(e)}finally{throw t}}return v(e),t},complete:function(t){var e=this._s;if(!y(e)){var r=e._o;e._o=void 0;try{var n=b(r.complete);t=n?n.call(r,t):void 0}catch(t){try{v(e)}finally{throw t}}return v(e),t}}});var _=function(t){h(this,_,"Observable","_f")._f=s(t)};c(_.prototype,{subscribe:function(t){return new m(t,this._f)},forEach:function(t){var e=this;return new(o.Promise||i.Promise)(function(r,n){s(t);var i=e.subscribe({next:function(e){try{return t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:r})})}}),c(_,{from:function(t){var e="function"==typeof this?this:_,r=b(u(t)[f]);if(r){var n=u(r.call(t));return n.constructor===e?n:new e(function(t){return n.subscribe(t)})}return new e(function(e){var r=!1;return a(function(){if(!r){try{if(l(t,!1,function(t){if(e.next(t),r)return p})===p)return}catch(t){if(r)throw t;return void e.error(t)}e.complete()}}),function(){r=!0}})},of:function(){for(var t=0,e=arguments.length,r=Array(e);t1?arguments[1]:void 0,!1)}})},function(t,e,r){"use strict";var n=r(0),i=r(188);n(n.P,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,r){"use strict";r(58)("trimLeft",function(t){return function(){return t(this,1)}},"trimStart")},function(t,e,r){"use strict";r(58)("trimRight",function(t){return function(){return t(this,2)}},"trimEnd")},function(t,e,r){r(141)("asyncIterator")},function(t,e,r){r(141)("observable")},function(t,e,r){var n=r(0);n(n.S,"System",{global:r(4)})},function(t,e,r){for(var n=r(143),i=r(15),o=r(4),a=r(14),f=r(56),s=r(7),u=s("iterator"),h=s("toStringTag"),c=f.Array,d=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],l=0;l<5;l++){var p,b=d[l],v=o[b],y=v&&v.prototype;if(y){y[u]||a(y,u,c),y[h]||a(y,h,b),f[b]=c;for(p in n)y[p]||i(y,p,n[p],!0)}}},function(t,e,r){var n=r(0),i=r(139);n(n.G+n.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,r){var n=r(4),i=r(0),o=r(82),a=r(287),f=n.navigator,s=!!f&&/MSIE .\./.test(f.userAgent),u=function(t){return s?function(e,r){return t(o(a,[].slice.call(arguments,2),"function"==typeof e?e:Function(e)),r)}:t};i(i.G+i.B+i.F*s,{setTimeout:u(n.setTimeout),setInterval:u(n.setInterval)})},function(t,e,r){r(410),r(349),r(351),r(350),r(353),r(355),r(360),r(354),r(352),r(362),r(361),r(357),r(358),r(356),r(348),r(359),r(363),r(364),r(316),r(318),r(317),r(366),r(365),r(336),r(346),r(347),r(337),r(338),r(339),r(340),r(341),r(342),r(343),r(344),r(345),r(319),r(320),r(321),r(322),r(323),r(324),r(325),r(326),r(327),r(328),r(329),r(330),r(331),r(332),r(333),r(334),r(335),r(397),r(402),r(409),r(400),r(392),r(393),r(398),r(403),r(405),r(388),r(389),r(390),r(391),r(394),r(395),r(396),r(399),r(401),r(404),r(406),r(407),r(408),r(311),r(313),r(312),r(315),r(314),r(300),r(298),r(304),r(301),r(307),r(309),r(297),r(303),r(294),r(308),r(292),r(306),r(305),r(299),r(302),r(291),r(293),r(296),r(295),r(310),r(143),r(382),r(387),r(191),r(383),r(384),r(385),r(386),r(367),r(190),r(192),r(193),r(422),r(411),r(412),r(417),r(420),r(421),r(415),r(418),r(416),r(419),r(413),r(414),r(368),r(369),r(370),r(371),r(372),r(375),r(373),r(374),r(376),r(377),r(378),r(379),r(381),r(380),r(423),r(449),r(452),r(451),r(453),r(454),r(450),r(455),r(456),r(434),r(437),r(433),r(431),r(432),r(435),r(436),r(426),r(448),r(457),r(425),r(427),r(429),r(428),r(430),r(439),r(440),r(442),r(441),r(444),r(443),r(445),r(446),r(447),r(424),r(438),r(460),r(459),r(458),t.exports=r(32)},function(t,e,r){t.exports=r(463)("ed25519")},function(t,e,r){(function(n,i){function o(t){"string"==typeof t?t={bindings:t}:t||(t={}),t.__proto__=c,t.module_root||(t.module_root=e.getRoot(e.getFileName())),".node"!=f.extname(t.bindings)&&(t.bindings+=".node");for(var r,n,i,o=[],a=0,u=t.try.length;a=6.0.0 <7.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.3.0",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569"},directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"}},function(t,e){t.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},function(t,e){t.exports={name:"elliptic",version:"6.3.2",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{jscs:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",jshint:"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js",lint:"npm run jscs && npm run jshint",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git+ssh://git@github.com/indutny/elliptic.git"},keywords:["EC","Elliptic","curve","Cryptography"],author:{name:"Fedor Indutny",email:"fedor@indutny.com"},license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^1.4.3",coveralls:"^2.11.3",grunt:"^0.4.5","grunt-browserify":"^5.0.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^8.6.2",istanbul:"^0.4.2",jscs:"^2.9.0",jshint:"^2.6.0",mocha:"^2.1.0"},dependencies:{"bn.js":"^4.4.0",brorand:"^1.0.1","hash.js":"^1.0.0",inherits:"^2.0.1"},gitHead:"cbace4683a4a548dc0306ef36756151a20299cd5",_id:"elliptic@6.3.2",_shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",_from:"elliptic@>=6.0.0 <7.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.3.0",_npmUser:{name:"indutny",email:"fedor@indutny.com"},dist:{shasum:"e4c81e0829cf0a65ab70e998b8232723b5c1bc48",tarball:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"},maintainers:[{name:"indutny",email:"fedor@indutny.com"}],_npmOperationalInternal:{host:"packages-16-east.internal.npmjs.com",tmp:"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569"},directories:{},_resolved:"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz"}},function(t,e){t.exports={modp1:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},modp2:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},modp5:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},modp14:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},modp15:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},modp16:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},modp17:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},modp18:{gen:"02",prime:"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}},function(t,e){t.exports={"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;r127){var e=Math.ceil(t.length.toString(2).length/8);this.skip(e)}this.skip(t.length)}},{key:"write",value:function(t){this.size+=t.length}},{key:"skip",value:function(t){this.size+=t}},{key:"getSize",value:function(){return this.size}}]),t}();[1,2,4,8].forEach(function(t){a.prototype["writeUInt"+8*t]=function(e){return this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){"use strict";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=function(){function t(t,e){for(var r=0;rt.MAX_INT_BYTES)throw new Error("Tried to read too large integer (requested: "+e+", max: "+t.MAX_INT_BYTES+")");this.ensureAvailable(e);var r=this.buffer.readUIntBE(this.cursor,e);return r}},{key:"skipUInt",value:function(t){this.skip(t)}},{key:"readUInt64",value:function(){return[this.readUInt32(),this.readUInt32()]}},{key:"peekUInt64",value:function(){this.bookmark();var t=this.readUInt64();return this.restore(),t}},{key:"skipUInt64",value:function(){this.skip(8)}},{key:"readVarUInt",value:function(){var e=this.readVarOctetString();if(e.length>t.MAX_INT_BYTES)throw new a("UInt of length "+e.length+" too large to parse as integer (max: "+t.MAX_INT_BYTES+")");if(0===e.length)throw new a("UInt of length 0 is invalid");return e.readUIntBE(0,e.length)}},{key:"peekVarUInt",value:function(){this.bookmark();var t=this.readVarUInt();return this.restore(),t}},{key:"skipVarUInt",value:function(){this.skipVarOctetString()}},{key:"readOctetString",value:function(t){return this.read(t)}},{key:"peekOctetString",value:function(t){return this.peek(t)}},{key:"skipOctetString",value:function(t){return this.skip(t)}},{key:"readLengthPrefix",value:function(){var e=this.readUInt8();if(e&t.HIGH_BIT){var r=e&t.LOWER_SEVEN_BITS,n=this.readUInt(r),i=Math.max(128,1<<8*(r-1));if(n8*r)throw new Error("UInt "+t+" does not fit in "+r+" bytes");var n=new e(r);n.writeUIntBE(t,0,r),this.write(n)}},{key:"writeVarUInt",value:function(r){if(e.isBuffer(r))return void this.writeVarOctetString(r);if(!o(r))throw new Error("UInt must be an integer");if(r<0)throw new Error("UInt must be positive");if(r>t.MAX_SAFE_INTEGER)throw new Error("UInt is too large");var n=Math.ceil(r.toString(2).length/8),i=new e(n);i.writeUIntBE(r,0,n),this.writeVarOctetString(i)}},{key:"writeUInt64",value:function(e){if(o(e)&&e<=t.MAX_SAFE_INTEGER)return this.writeUInt32(Math.floor(e/4294967296)),void this.writeUInt32(4294967295&e);if(!Array.isArray(e)||2!==e.length||!o(e[0])||!o(e[1]))throw new TypeError("Expected 64-bit integer as an array of two 32-bit words");this.writeUInt32(e[0]),this.writeUInt32(e[1])}},{key:"writeOctetString",value:function(t,e){if(t.length!==e)throw new Error("Incorrect length for octet string (actual: "+t.length+", expected: "+e+")");this.write(t)}},{key:"writeVarOctetString",value:function(t){if(!e.isBuffer(t))throw new TypeError("Expects a buffer");var r=128;if(t.length<=127)this.writeUInt8(t.length);else{var n=Math.ceil(t.length.toString(2).length/8);this.writeUInt8(r|n),this.writeUInt(t.length,n)}this.write(t)}},{key:"write",value:function(t){this.components.push(t)}},{key:"getBuffer",value:function(){return e.concat(this.components)}}]),t}();a.MAX_SAFE_INTEGER=r(475),[1,2,4].forEach(function(t){a.prototype["writeUInt"+8*t]=function(e){this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){r(487),t.exports=9007199254740991},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,r){var n=r(89);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e,r){var n=r(476);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(89),i=r(200).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(483),i=r(484);t.exports=r(144)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(144)&&!r(199)(function(){return 7!=Object.defineProperty(r(479)("div"),"a",{get:function(){return 7}}).a})},function(t,e,r){var n=r(89),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(477),i=r(481),o=r(485),a=Object.defineProperty;e.f=r(144)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(89);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e,r){var n=r(198);n(n.S,"Number",{isInteger:r(482)})},function(t,e,r){var n=r(198);n(n.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){!function(t){"use strict";function e(t,e,r,n){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r,t[e+4]=n>>24&255,t[e+5]=n>>16&255,t[e+6]=n>>8&255,t[e+7]=255&n}function n(t,e,r,n,i){var o,a=0;for(o=0;o>>8)-1}function i(t,e,r,i){return n(t,e,r,i,16)}function o(t,e,r,i){return n(t,e,r,i,32)}function a(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,g=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,m=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,x=h,k=c,I=d,B=l,O=p,R=b,P=v,T=y,j=g,C=m,U=w,N=0;N<20;N+=2)i=_+T|0, +A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=x+M|0,O^=i<<7|i>>>25,i=O+x|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,x^=i<<18|i>>>14,i=R+k|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,k^=i<<13|i>>>19,i=k+S|0,R^=i<<18|i>>>14,i=U+P|0,E^=i<<7|i>>>25,i=E+U|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,U^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=x+A|0,k^=i<<7|i>>>25,i=k+x|0,I^=i<<9|i>>>23,i=I+k|0,A^=i<<13|i>>>19,i=A+I|0,x^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=U+C|0,T^=i<<7|i>>>25,i=T+U|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,U^=i<<18|i>>>14;_=_+o|0,M=M+a|0,S=S+f|0,E=E+s|0,A=A+u|0,x=x+h|0,k=k+c|0,I=I+d|0,B=B+l|0,O=O+p|0,R=R+b|0,P=P+v|0,T=T+y|0,j=j+g|0,C=C+m|0,U=U+w|0,t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=M>>>0&255,t[5]=M>>>8&255,t[6]=M>>>16&255,t[7]=M>>>24&255,t[8]=S>>>0&255,t[9]=S>>>8&255,t[10]=S>>>16&255,t[11]=S>>>24&255,t[12]=E>>>0&255,t[13]=E>>>8&255,t[14]=E>>>16&255,t[15]=E>>>24&255,t[16]=A>>>0&255,t[17]=A>>>8&255,t[18]=A>>>16&255,t[19]=A>>>24&255,t[20]=x>>>0&255,t[21]=x>>>8&255,t[22]=x>>>16&255,t[23]=x>>>24&255,t[24]=k>>>0&255,t[25]=k>>>8&255,t[26]=k>>>16&255,t[27]=k>>>24&255,t[28]=I>>>0&255,t[29]=I>>>8&255,t[30]=I>>>16&255,t[31]=I>>>24&255,t[32]=B>>>0&255,t[33]=B>>>8&255,t[34]=B>>>16&255,t[35]=B>>>24&255,t[36]=O>>>0&255,t[37]=O>>>8&255,t[38]=O>>>16&255,t[39]=O>>>24&255,t[40]=R>>>0&255,t[41]=R>>>8&255,t[42]=R>>>16&255,t[43]=R>>>24&255,t[44]=P>>>0&255,t[45]=P>>>8&255,t[46]=P>>>16&255,t[47]=P>>>24&255,t[48]=T>>>0&255,t[49]=T>>>8&255,t[50]=T>>>16&255,t[51]=T>>>24&255,t[52]=j>>>0&255,t[53]=j>>>8&255,t[54]=j>>>16&255,t[55]=j>>>24&255,t[56]=C>>>0&255,t[57]=C>>>8&255,t[58]=C>>>16&255,t[59]=C>>>24&255,t[60]=U>>>0&255,t[61]=U>>>8&255,t[62]=U>>>16&255,t[63]=U>>>24&255}function f(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,g=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,m=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,x=h,k=c,I=d,B=l,O=p,R=b,P=v,T=y,j=g,C=m,U=w,N=0;N<20;N+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=x+M|0,O^=i<<7|i>>>25,i=O+x|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,x^=i<<18|i>>>14,i=R+k|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,k^=i<<13|i>>>19,i=k+S|0,R^=i<<18|i>>>14,i=U+P|0,E^=i<<7|i>>>25,i=E+U|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,U^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=x+A|0,k^=i<<7|i>>>25,i=k+x|0,I^=i<<9|i>>>23,i=I+k|0,A^=i<<13|i>>>19,i=A+I|0,x^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=U+C|0,T^=i<<7|i>>>25,i=T+U|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,U^=i<<18|i>>>14;t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=x>>>0&255,t[5]=x>>>8&255,t[6]=x>>>16&255,t[7]=x>>>24&255,t[8]=R>>>0&255,t[9]=R>>>8&255,t[10]=R>>>16&255,t[11]=R>>>24&255,t[12]=U>>>0&255,t[13]=U>>>8&255,t[14]=U>>>16&255,t[15]=U>>>24&255,t[16]=k>>>0&255,t[17]=k>>>8&255,t[18]=k>>>16&255,t[19]=k>>>24&255,t[20]=I>>>0&255,t[21]=I>>>8&255,t[22]=I>>>16&255,t[23]=I>>>24&255,t[24]=B>>>0&255,t[25]=B>>>8&255,t[26]=B>>>16&255,t[27]=B>>>24&255,t[28]=O>>>0&255,t[29]=O>>>8&255,t[30]=O>>>16&255,t[31]=O>>>24&255}function s(t,e,r,n){a(t,e,r,n)}function u(t,e,r,n){f(t,e,r,n)}function h(t,e,r,n,i,o,a){var f,u,h=new Uint8Array(16),c=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(s(c,h,a,dt),u=0;u<64;u++)t[e+u]=r[n+u]^c[u];for(f=1,u=8;u<16;u++)f=f+(255&h[u])|0,h[u]=255&f,f>>>=8;i-=64,e+=64,n+=64}if(i>0)for(s(c,h,a,dt),u=0;u=64;){for(s(u,f,i,dt),a=0;a<64;a++)t[e+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&f[a])|0,f[a]=255&o,o>>>=8;r-=64,e+=64}if(r>0)for(s(u,f,i,dt),a=0;a>16&1),o[r-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),i=o[15]>>16&1,o[14]&=65535,w(a,o,1-i)}for(r=0;r<16;r++)t[2*r]=255&a[r],t[2*r+1]=a[r]>>8}function M(t,e){var r=new Uint8Array(32),n=new Uint8Array(32);return _(r,t),_(n,e),o(r,0,n,0)}function S(t){var e=new Uint8Array(32);return _(e,t),1&e[0]}function E(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function A(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]+r[n]}function x(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]-r[n]}function k(t,e,r){var n,i,o=0,a=0,f=0,s=0,u=0,h=0,c=0,d=0,l=0,p=0,b=0,v=0,y=0,g=0,m=0,w=0,_=0,M=0,S=0,E=0,A=0,x=0,k=0,I=0,B=0,O=0,R=0,P=0,T=0,j=0,C=0,U=r[0],N=r[1],L=r[2],z=r[3],D=r[4],F=r[5],q=r[6],K=r[7],Y=r[8],G=r[9],V=r[10],H=r[11],X=r[12],W=r[13],Z=r[14],J=r[15];n=e[0],o+=n*U,a+=n*N,f+=n*L,s+=n*z,u+=n*D,h+=n*F,c+=n*q,d+=n*K,l+=n*Y,p+=n*G,b+=n*V,v+=n*H,y+=n*X,g+=n*W,m+=n*Z,w+=n*J,n=e[1],a+=n*U,f+=n*N,s+=n*L,u+=n*z,h+=n*D,c+=n*F,d+=n*q,l+=n*K,p+=n*Y,b+=n*G,v+=n*V,y+=n*H,g+=n*X,m+=n*W,w+=n*Z,_+=n*J,n=e[2],f+=n*U,s+=n*N,u+=n*L,h+=n*z,c+=n*D,d+=n*F,l+=n*q,p+=n*K,b+=n*Y,v+=n*G,y+=n*V,g+=n*H,m+=n*X,w+=n*W,_+=n*Z,M+=n*J,n=e[3],s+=n*U,u+=n*N,h+=n*L,c+=n*z,d+=n*D,l+=n*F,p+=n*q,b+=n*K,v+=n*Y,y+=n*G,g+=n*V,m+=n*H,w+=n*X,_+=n*W,M+=n*Z,S+=n*J,n=e[4],u+=n*U,h+=n*N,c+=n*L,d+=n*z,l+=n*D,p+=n*F,b+=n*q,v+=n*K,y+=n*Y,g+=n*G,m+=n*V,w+=n*H,_+=n*X,M+=n*W,S+=n*Z,E+=n*J,n=e[5],h+=n*U,c+=n*N,d+=n*L,l+=n*z,p+=n*D,b+=n*F,v+=n*q,y+=n*K,g+=n*Y,m+=n*G,w+=n*V,_+=n*H,M+=n*X,S+=n*W,E+=n*Z,A+=n*J,n=e[6],c+=n*U,d+=n*N,l+=n*L,p+=n*z,b+=n*D,v+=n*F,y+=n*q,g+=n*K,m+=n*Y,w+=n*G,_+=n*V,M+=n*H,S+=n*X,E+=n*W,A+=n*Z,x+=n*J,n=e[7],d+=n*U,l+=n*N,p+=n*L,b+=n*z,v+=n*D,y+=n*F,g+=n*q,m+=n*K,w+=n*Y,_+=n*G,M+=n*V,S+=n*H,E+=n*X,A+=n*W,x+=n*Z,k+=n*J,n=e[8],l+=n*U,p+=n*N,b+=n*L,v+=n*z,y+=n*D,g+=n*F,m+=n*q,w+=n*K,_+=n*Y,M+=n*G,S+=n*V,E+=n*H,A+=n*X,x+=n*W,k+=n*Z,I+=n*J,n=e[9],p+=n*U,b+=n*N,v+=n*L,y+=n*z,g+=n*D,m+=n*F,w+=n*q,_+=n*K,M+=n*Y,S+=n*G,E+=n*V,A+=n*H,x+=n*X,k+=n*W,I+=n*Z,B+=n*J,n=e[10],b+=n*U,v+=n*N,y+=n*L,g+=n*z,m+=n*D,w+=n*F,_+=n*q,M+=n*K,S+=n*Y,E+=n*G,A+=n*V,x+=n*H,k+=n*X,I+=n*W,B+=n*Z,O+=n*J,n=e[11],v+=n*U,y+=n*N,g+=n*L,m+=n*z,w+=n*D,_+=n*F,M+=n*q,S+=n*K,E+=n*Y,A+=n*G,x+=n*V,k+=n*H;I+=n*X;B+=n*W,O+=n*Z,R+=n*J,n=e[12],y+=n*U,g+=n*N,m+=n*L,w+=n*z,_+=n*D,M+=n*F,S+=n*q,E+=n*K,A+=n*Y,x+=n*G,k+=n*V,I+=n*H,B+=n*X,O+=n*W,R+=n*Z,P+=n*J,n=e[13],g+=n*U,m+=n*N,w+=n*L,_+=n*z,M+=n*D,S+=n*F,E+=n*q,A+=n*K,x+=n*Y,k+=n*G,I+=n*V,B+=n*H,O+=n*X,R+=n*W,P+=n*Z,T+=n*J,n=e[14],m+=n*U,w+=n*N,_+=n*L,M+=n*z,S+=n*D,E+=n*F,A+=n*q,x+=n*K,k+=n*Y,I+=n*G,B+=n*V,O+=n*H,R+=n*X,P+=n*W,T+=n*Z,j+=n*J,n=e[15],w+=n*U,_+=n*N,M+=n*L,S+=n*z,E+=n*D,A+=n*F,x+=n*q,k+=n*K,I+=n*Y,B+=n*G,O+=n*V,R+=n*H,P+=n*X,T+=n*W,j+=n*Z,C+=n*J,o+=38*_,a+=38*M,f+=38*S,s+=38*E,u+=38*A,h+=38*x,c+=38*k,d+=38*I,l+=38*B,p+=38*O,b+=38*R,v+=38*P,y+=38*T,g+=38*j,m+=38*C,i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),t[0]=o,t[1]=a,t[2]=f,t[3]=s,t[4]=u,t[5]=h,t[6]=c,t[7]=d,t[8]=l,t[9]=p,t[10]=b,t[11]=v,t[12]=y,t[13]=g;t[14]=m;t[15]=w}function I(t,e){k(t,e,e)}function B(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=253;r>=0;r--)I(n,n),2!==r&&4!==r&&k(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function O(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=250;r>=0;r--)I(n,n),1!==r&&k(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function R(t,e,r){var n,i,o=new Uint8Array(32),a=new Float64Array(80),f=tt(),s=tt(),u=tt(),h=tt(),c=tt(),d=tt();for(i=0;i<31;i++)o[i]=e[i];for(o[31]=127&e[31]|64,o[0]&=248,E(a,r),i=0;i<16;i++)s[i]=a[i],h[i]=f[i]=u[i]=0;for(f[0]=h[0]=1,i=254;i>=0;--i)n=o[i>>>3]>>>(7&i)&1,w(f,s,n),w(u,h,n),A(c,f,u),x(f,f,u),A(u,s,h),x(s,s,h),I(h,c),I(d,f),k(f,u,f),k(u,s,c),A(c,f,u),x(f,f,u),I(s,f),x(u,h,d),k(f,u,at),A(f,f,h),k(u,u,f),k(f,h,d),k(h,s,a),I(s,c),w(f,s,n),w(u,h,n);for(i=0;i<16;i++)a[i+16]=f[i],a[i+32]=u[i],a[i+48]=s[i],a[i+64]=h[i];var l=a.subarray(32),p=a.subarray(16);return B(l,l),k(p,p,l),_(t,p),0}function P(t,e){return R(t,e,nt)}function T(t,e){return et(e,32),P(t,e)}function j(t,e,r){var n=new Uint8Array(32);return R(n,r,e),u(t,rt,n,dt)}function C(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),pt(t,e,r,n,a)}function U(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),bt(t,e,r,n,a)}function N(t,e,r,n){for(var i,o,a,f,s,u,h,c,d,l,p,b,v,y,g,m,w,_,M,S,E,A,x,k,I,B,O=new Int32Array(16),R=new Int32Array(16),P=t[0],T=t[1],j=t[2],C=t[3],U=t[4],N=t[5],L=t[6],z=t[7],D=e[0],F=e[1],q=e[2],K=e[3],Y=e[4],G=e[5],V=e[6],H=e[7],X=0;n>=128;){for(M=0;M<16;M++)S=8*M+X,O[M]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[M]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(M=0;M<80;M++)if(i=P,o=T,a=j,f=C,s=U,u=N,h=L,c=z,d=D,l=F,p=q,b=K,v=Y,y=G,g=V,m=H,E=z,A=H,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=(U>>>14|Y<<18)^(U>>>18|Y<<14)^(Y>>>9|U<<23),A=(Y>>>14|U<<18)^(Y>>>18|U<<14)^(U>>>9|Y<<23),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=U&N^~U&L,A=Y&G^~Y&V,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=vt[2*M],A=vt[2*M+1],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=O[M%16],A=R[M%16],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,w=65535&I|B<<16,_=65535&x|k<<16,E=w,A=_,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=(P>>>28|D<<4)^(D>>>2|P<<30)^(D>>>7|P<<25),A=(D>>>28|P<<4)^(P>>>2|D<<30)^(P>>>7|D<<25),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=P&T^P&j^T&j,A=D&F^D&q^F&q,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,c=65535&I|B<<16,m=65535&x|k<<16,E=f,A=b,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=w,A=_,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,f=65535&I|B<<16,b=65535&x|k<<16,T=i,j=o,C=a,U=f,N=s,L=u,z=h,P=c,F=d,q=l,K=p,Y=b,G=v,V=y,H=g,D=m,M%16===15)for(S=0;S<16;S++)E=O[S],A=R[S],x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=O[(S+9)%16],A=R[(S+9)%16],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+1)%16],_=R[(S+1)%16],E=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,A=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+14)%16],_=R[(S+14)%16],E=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,A=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,O[S]=65535&I|B<<16,R[S]=65535&x|k<<16;E=P,A=D,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[0],A=e[0],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[0]=P=65535&I|B<<16,e[0]=D=65535&x|k<<16,E=T,A=F,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[1],A=e[1],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[1]=T=65535&I|B<<16,e[1]=F=65535&x|k<<16,E=j,A=q,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[2],A=e[2],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[2]=j=65535&I|B<<16,e[2]=q=65535&x|k<<16,E=C,A=K,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[3],A=e[3],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[3]=C=65535&I|B<<16,e[3]=K=65535&x|k<<16,E=U,A=Y,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[4],A=e[4],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[4]=U=65535&I|B<<16,e[4]=Y=65535&x|k<<16,E=N,A=G,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[5],A=e[5],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[5]=N=65535&I|B<<16,e[5]=G=65535&x|k<<16,E=L,A=V,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[6],A=e[6],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[6]=L=65535&I|B<<16,e[6]=V=65535&x|k<<16,E=z,A=H,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[7],A=e[7],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[7]=z=65535&I|B<<16,e[7]=H=65535&x|k<<16,X+=128,n-=128}return n}function L(t,r,n){var i,o=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),s=n;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,N(o,a,r,n),n%=128,i=0;i=0;--i)n=r[i/8|0]>>(7&i)&1,D(t,e,n),z(e,t),z(t,t),D(t,e,n)}function K(t,e){var r=[tt(),tt(),tt(),tt()];g(r[0],ut),g(r[1],ht),g(r[2],ot),k(r[3],ut,ht),q(t,r,e)}function Y(t,e,r){var n,i=new Uint8Array(64),o=[tt(),tt(),tt(),tt()];for(r||et(e,32),L(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,K(o,i),F(t,o),n=0;n<32;n++)e[n+32]=t[n];return 0}function G(t,e){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,e[i]-=256*r;e[i]+=r,e[n]=0}for(r=0,i=0;i<32;i++)e[i]+=r-(e[31]>>4)*yt[i],r=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=r*yt[i];for(n=0;n<32;n++)e[n+1]+=e[n]>>8,t[n]=255&e[n]}function V(t){var e,r=new Float64Array(64);for(e=0;e<64;e++)r[e]=t[e];for(e=0;e<64;e++)t[e]=0;G(t,r)}function H(t,e,r,n){var i,o,a=new Uint8Array(64),f=new Uint8Array(64),s=new Uint8Array(64),u=new Float64Array(64),h=[tt(),tt(),tt(),tt()];L(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=r+64;for(i=0;i>7&&x(t[0],it,t[0]),k(t[3],t[0],t[1]),0)}function W(t,e,r,n){var i,a,f=new Uint8Array(32),s=new Uint8Array(64),u=[tt(),tt(),tt(),tt()],h=[tt(),tt(),tt(),tt()];if(a=-1,r<64)return-1;if(X(h,n))return-1;for(i=0;i>>13|r<<3),n=255&t[4]|(255&t[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&t[6]|(255&t[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&t[8]|(255&t[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&t[10]|(255&t[11])<<8,this.r[6]=8191&(o>>>14|a<<2),f=255&t[12]|(255&t[13])<<8,this.r[7]=8065&(a>>>11|f<<5),s=255&t[14]|(255&t[15])<<8,this.r[8]=8191&(f>>>8|s<<8),this.r[9]=s>>>5&127,this.pad[0]=255&t[16]|(255&t[17])<<8,this.pad[1]=255&t[18]|(255&t[19])<<8,this.pad[2]=255&t[20]|(255&t[21])<<8,this.pad[3]=255&t[22]|(255&t[23])<<8,this.pad[4]=255&t[24]|(255&t[25])<<8,this.pad[5]=255&t[26]|(255&t[27])<<8,this.pad[6]=255&t[28]|(255&t[29])<<8,this.pad[7]=255&t[30]|(255&t[31])<<8};lt.prototype.blocks=function(t,e,r){for(var n,i,o,a,f,s,u,h,c,d,l,p,b,v,y,g,m,w,_,M=this.fin?0:2048,S=this.h[0],E=this.h[1],A=this.h[2],x=this.h[3],k=this.h[4],I=this.h[5],B=this.h[6],O=this.h[7],R=this.h[8],P=this.h[9],T=this.r[0],j=this.r[1],C=this.r[2],U=this.r[3],N=this.r[4],L=this.r[5],z=this.r[6],D=this.r[7],F=this.r[8],q=this.r[9];r>=16;)n=255&t[e+0]|(255&t[e+1])<<8,S+=8191&n,i=255&t[e+2]|(255&t[e+3])<<8,E+=8191&(n>>>13|i<<3),o=255&t[e+4]|(255&t[e+5])<<8,A+=8191&(i>>>10|o<<6),a=255&t[e+6]|(255&t[e+7])<<8,x+=8191&(o>>>7|a<<9),f=255&t[e+8]|(255&t[e+9])<<8,k+=8191&(a>>>4|f<<12),I+=f>>>1&8191,s=255&t[e+10]|(255&t[e+11])<<8,B+=8191&(f>>>14|s<<2),u=255&t[e+12]|(255&t[e+13])<<8,O+=8191&(s>>>11|u<<5),h=255&t[e+14]|(255&t[e+15])<<8,R+=8191&(u>>>8|h<<8),P+=h>>>5|M,c=0,d=c,d+=S*T,d+=E*(5*q),d+=A*(5*F),d+=x*(5*D),d+=k*(5*z),c=d>>>13,d&=8191,d+=I*(5*L),d+=B*(5*N),d+=O*(5*U),d+=R*(5*C),d+=P*(5*j),c+=d>>>13,d&=8191,l=c,l+=S*j,l+=E*T,l+=A*(5*q),l+=x*(5*F),l+=k*(5*D),c=l>>>13,l&=8191,l+=I*(5*z),l+=B*(5*L),l+=O*(5*N),l+=R*(5*U),l+=P*(5*C),c+=l>>>13,l&=8191,p=c,p+=S*C,p+=E*j,p+=A*T,p+=x*(5*q),p+=k*(5*F),c=p>>>13,p&=8191,p+=I*(5*D),p+=B*(5*z),p+=O*(5*L),p+=R*(5*N),p+=P*(5*U),c+=p>>>13,p&=8191,b=c,b+=S*U,b+=E*C,b+=A*j,b+=x*T,b+=k*(5*q),c=b>>>13,b&=8191,b+=I*(5*F),b+=B*(5*D),b+=O*(5*z),b+=R*(5*L),b+=P*(5*N),c+=b>>>13,b&=8191,v=c,v+=S*N,v+=E*U,v+=A*C,v+=x*j,v+=k*T,c=v>>>13,v&=8191,v+=I*(5*q),v+=B*(5*F),v+=O*(5*D),v+=R*(5*z),v+=P*(5*L),c+=v>>>13,v&=8191,y=c,y+=S*L,y+=E*N,y+=A*U,y+=x*C,y+=k*j,c=y>>>13,y&=8191,y+=I*T,y+=B*(5*q),y+=O*(5*F),y+=R*(5*D),y+=P*(5*z),c+=y>>>13,y&=8191,g=c,g+=S*z,g+=E*L,g+=A*N,g+=x*U,g+=k*C,c=g>>>13,g&=8191,g+=I*j,g+=B*T,g+=O*(5*q),g+=R*(5*F),g+=P*(5*D),c+=g>>>13,g&=8191,m=c,m+=S*D,m+=E*z,m+=A*L,m+=x*N,m+=k*U,c=m>>>13,m&=8191,m+=I*C,m+=B*j,m+=O*T,m+=R*(5*q),m+=P*(5*F),c+=m>>>13,m&=8191,w=c,w+=S*F,w+=E*D,w+=A*z,w+=x*L,w+=k*N,c=w>>>13,w&=8191,w+=I*U,w+=B*C,w+=O*j,w+=R*T,w+=P*(5*q),c+=w>>>13,w&=8191,_=c,_+=S*q,_+=E*F,_+=A*D,_+=x*z,_+=k*L,c=_>>>13,_&=8191,_+=I*N,_+=B*U,_+=O*C,_+=R*j,_+=P*T,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+d|0,d=8191&c,c>>>=13,l+=c,S=d,E=l,A=p,x=b,k=v,I=y,B=g,O=m,R=w,P=_,e+=16,r-=16;this.h[0]=S,this.h[1]=E,this.h[2]=A,this.h[3]=x,this.h[4]=k,this.h[5]=I,this.h[6]=B,this.h[7]=O,this.h[8]=R,this.h[9]=P},lt.prototype.finish=function(t,e){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;t[e+0]=this.h[0]>>>0&255,t[e+1]=this.h[0]>>>8&255,t[e+2]=this.h[1]>>>0&255,t[e+3]=this.h[1]>>>8&255,t[e+4]=this.h[2]>>>0&255,t[e+5]=this.h[2]>>>8&255,t[e+6]=this.h[3]>>>0&255,t[e+7]=this.h[3]>>>8&255,t[e+8]=this.h[4]>>>0&255,t[e+9]=this.h[4]>>>8&255,t[e+10]=this.h[5]>>>0&255,t[e+11]=this.h[5]>>>8&255,t[e+12]=this.h[6]>>>0&255,t[e+13]=this.h[6]>>>8&255,t[e+14]=this.h[7]>>>0&255,t[e+15]=this.h[7]>>>8&255},lt.prototype.update=function(t,e,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(t,e,i),e+=i,r-=i),r){for(n=0;n=0},t.sign.keyPair=function(){var t=new Uint8Array(Rt),e=new Uint8Array(Pt);return Y(t,e),{publicKey:t,secretKey:e}},t.sign.keyPair.fromSecretKey=function(t){if($(t),t.length!==Pt)throw new Error("bad secret key size");for(var e=new Uint8Array(Rt),r=0;r0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function n(t){return 3*t.length/4-r(t)}function i(t){var e,n,i,o,a,f,s=t.length;a=r(t),f=new h(3*s/4-a),i=a>0?s-4:s;var c=0;for(e=0,n=0;e>16&255,f[c++]=o>>8&255,f[c++]=255&o;return 2===a?(o=u[t.charCodeAt(e)]<<2|u[t.charCodeAt(e+1)]>>4,f[c++]=255&o):1===a&&(o=u[t.charCodeAt(e)]<<10|u[t.charCodeAt(e+1)]<<4|u[t.charCodeAt(e+2)]>>2,f[c++]=o>>8&255,f[c++]=255&o),f}function o(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function a(t,e,r){for(var n,i=[],a=e;ah?h:u+f));return 1===n?(e=t[r-1],i+=s[e>>2],i+=s[e<<4&63],i+="=="):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=s[e>>10],i+=s[e>>4&63],i+=s[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=n,e.toByteArray=i,e.fromByteArray=f;for(var s=[],u=[],h="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,l=c.length;d>1,h=-7,c=r?i-1:0,d=r?-1:1,l=t[e+c];for(c+=d,o=l&(1<<-h)-1,l>>=-h,h+=f;h>0;o=256*o+t[e+c],c+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=d,h-=8);if(0===o)o=1-u;else{if(o===s)return a?NaN:(l?-1:1)*(1/0);a+=Math.pow(2,n),o-=u}return(l?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,f,s,u=8*o-i-1,h=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,p=n?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+c>=1?d/s:d*Math.pow(2,1-c),e*s>=2&&(a++,s/=2),a+c>=h?(f=0,a=h):a+c>=1?(f=(e*s-1)*Math.pow(2,i),a+=c):(f=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+l]=255&f,l+=p,f/=256,i-=8);for(a=a<0;t[r+l]=255&a,l+=p,a/=256,u-=8);t[r+l-p]|=128*b}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){function n(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError("invalid suite type");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return o(t,i.key,i.iv)}function i(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError("invalid suite type");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return a(t,i.key,i.iv)}function o(t,e,r){if(t=t.toLowerCase(),d[t])return u.createCipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function a(t,e,r){if(t=t.toLowerCase(),d[t])return u.createDecipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}function f(){return Object.keys(c).concat(u.getCiphers())}var s=r(146),u=r(494),h=r(498),c=r(499),d=r(95);e.createCipher=e.Cipher=n,e.createCipheriv=e.Cipheriv=o,e.createDecipher=e.Decipher=i,e.createDecipheriv=e.Decipheriv=a,e.listCiphers=e.getCiphers=f},function(t,e,r){function n(){return Object.keys(a)}var i=r(496);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv;var o=r(495);e.createDecipher=e.Decipher=o.createDecipher,e.createDecipheriv=e.Decipheriv=o.createDecipheriv;var a=r(95);e.listCiphers=e.getCiphers=n},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(u.call(this),this._cache=new i,this._last=void 0,this._cipher=new s.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(t){for(var e=t[15],r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(208),CBC:r(204),CFB:r(205),CFB8:r(207),CFB1:r(206),OFB:r(209),CTR:r(96),GCM:r(96)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(94),s=r(97),u=r(2),h=r(95),c=r(146),d=r(210),l=r(203);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){i.call(this);var r,n=t.mode.toLowerCase(),o=f[n];r=t.decrypt?"decrypt":"encrypt";var a=t.key;"des-ede"!==n&&"des-ede-cbc"!==n||(a=e.concat([a,a.slice(0,8)]));var s=t.iv;this._des=o.create({key:a,iv:s,type:r})}var i=r(500),o=r(145),a=r(2),f={"des-ede3-cbc":o.CBC.instantiate(o.EDE),"des-ede3":o.EDE,"des-ede-cbc":o.CBC.instantiate(o.EDE),"des-ede":o.EDE,"des-cbc":o.CBC.instantiate(o.DES),"des-ecb":o.DES};f.des=f["des-cbc"],f.des3=f["des-ede3-cbc"],t.exports=n,a(n,i),n.prototype._update=function(t){return new e(this._des.update(t))},n.prototype._final=function(){return new e(this._des.final())}}).call(e,r(1).Buffer)},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,r){(function(e){function n(t){i.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._decoder=null,this._encoding=null}var i=r(31).Transform,o=r(2),a=r(52).StringDecoder;t.exports=n,o(n,i),n.prototype.update=function(t,r,n){"string"==typeof t&&(t=new e(t,r));var i=this._update(t);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},n.prototype.setAutoPadding=function(){},n.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},n.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},n.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},n.prototype._transform=function(t,e,r){var n;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){n=t}finally{r(n)}},n.prototype._flush=function(t){var e;try{this.push(this._final())}catch(t){e=t}finally{t(e)}},n.prototype._finalOrDigest=function(t){var r=this._final()||new e("");return t&&(r=this._toString(r,t,!0)),r},n.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new a(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var n=this._decoder.write(t);return r&&(n+=this._decoder.end()),n}}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t){o.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e0;n--)e+=this._buffer(t,e),r+=this._flushBuffer(i,r);return e+=this._buffer(t,e),i},n.prototype.final=function(t){var e;t&&(e=this.update(t));var r;return r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e>>1];r=s.r28shl(r,a),n=s.r28shl(n,a),s.pc2(r,n,t.keys,i)}},i.prototype._update=function(t,e,r,n){var i=this._desState,o=s.readUInt32BE(t,e),a=s.readUInt32BE(t,e+4);s.ip(o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],"encrypt"===this.type?this._encrypt(i,o,a,i.tmp,0):this._decrypt(i,o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],s.writeUInt32BE(r,o,n),s.writeUInt32BE(r,a,n+4)},i.prototype._pad=function(t,e){for(var r=t.length-e,n=e;n>>0,o=l}s.rip(a,o,n,i)},i.prototype._decrypt=function(t,e,r,n,i){for(var o=r,a=e,f=t.keys.length-2;f>=0;f-=2){var u=t.keys[f],h=t.keys[f+1];s.expand(o,t.tmp,0),u^=t.tmp[0],h^=t.tmp[1];var c=s.substitute(u,h),d=s.permute(c),l=o;o=(a^d)>>>0,a=l}s.rip(o,a,n,i)}},function(t,e,r){"use strict";function n(t,e){o.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),i=e.slice(16,24);"encrypt"===t?this.ciphers=[u.create({type:"encrypt",key:r}),u.create({type:"decrypt",key:n}),u.create({type:"encrypt",key:i})]:this.ciphers=[u.create({type:"decrypt",key:i}),u.create({type:"encrypt",key:n}),u.create({type:"decrypt",key:r})]}function i(t){s.call(this,t);var e=new n(this.type,this.options.key);this._edeState=e}var o=r(98),a=r(2),f=r(145),s=f.Cipher,u=f.DES;a(i,s),t.exports=i,i.create=function(t){return new i(t)},i.prototype._update=function(t,e,r,n){var i=this._edeState;i.ciphers[0]._update(t,e,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},i.prototype._pad=u.prototype._pad,i.prototype._unpad=u.prototype._unpad},function(t,e){"use strict";e.readUInt32BE=function(t,e){var r=t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e];return r>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,n){for(var i=0,o=0,a=6;a>=0;a-=2){for(var f=0;f<=24;f+=8)i<<=1,i|=e>>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>>f+a&1}for(var a=6;a>=0;a-=2){for(var f=1;f<=25;f+=8)o<<=1,o|=e>>>f+a&1;for(var f=1;f<=25;f+=8)o<<=1,o|=t>>>f+a&1}r[n+0]=i>>>0,r[n+1]=o>>>0},e.rip=function(t,e,r,n){for(var i=0,o=0,a=0;a<4;a++)for(var f=24;f>=0;f-=8)i<<=1,i|=e>>>f+a&1,i<<=1,i|=t>>>f+a&1;for(var a=4;a<8;a++)for(var f=24;f>=0;f-=8)o<<=1,o|=e>>>f+a&1,o<<=1,o|=t>>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.pc1=function(t,e,r,n){for(var i=0,o=0,a=7;a>=5;a--){for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>f+a&1}for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var a=1;a<=3;a++){for(var f=0;f<=24;f+=8)o<<=1,o|=e>>f+a&1;for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1}for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,n,i){for(var o=0,a=0,f=r.length>>>1,s=0;s>>r[s]&1;for(var s=f;s>>r[s]&1;n[i+0]=o>>>0,n[i+1]=a>>>0},e.expand=function(t,e,r){var n=0,i=0;n=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=t>>>o&63;for(var o=11;o>=3;o-=4)i|=t>>>o&63,i<<=6;i|=(31&t)<<1|t>>>31,e[r+0]=n>>>0,e[r+1]=i>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,i=0;i<4;i++){var o=t>>>18-6*i&63,a=n[64*i+o];r<<=4,r|=a}for(var i=0;i<4;i++){var o=e>>>18-6*i&63,a=n[256+64*i+o];r<<=4,r|=a}return r>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>i[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var n=t.toString(2);n.length=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(18),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){"use strict";function n(t,e){this.type=t,this.p=new o(e.p,16),this.red=e.prime?o.red(e.prime):o.mont(this.p),this.zero=new o(0).toRed(this.red),this.one=new o(1).toRed(this.red),this.two=new o(2).toRed(this.red),this.n=e.n&&new o(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(18),a=r(19),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error("Not implemented")},n.prototype.validate=function(){throw new Error("Not implemented")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a="affine"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return"affine"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=u(r[p],r[b]);h=Math.max(g[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var A=!0,m=0;m=0&&E++,M=M.dblp(E),c<0)break;for(var m=0;m0?d=a[m][x-1>>1]:x<0&&(d=a[m][-x-1>>1].neg()),M="affine"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){"use strict";function n(t){s.call(this,"mont",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(99),a=r(18),f=r(2),s=o.base,u=r(19),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){ +var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?"":""},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";function n(t){h.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(99),f=r(19),s=r(18),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),g=0;0!==d.cmpn(0);){var m=l.div(d);u=l.sub(m.mul(d)),h=v.sub(m.mul(p));var w=y.sub(m.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++g)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?"":""},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";function n(t){"short"===t.type?this.curve=new f.curve.short(t):"edwards"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(49),f=r(19),s=f.utils.assert;o.PresetCurve=n,i("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),i("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),i("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),i("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),i("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),i("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),i("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var u;try{u=r(520)}catch(t){u=void 0}i("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",u]})},function(t,e,r){"use strict";function n(t){return this instanceof n?("string"==typeof t&&(f(o.curves.hasOwnProperty(t),"Unknown curve "+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(18),o=r(19),a=o.utils,f=a.assert,s=r(514),u=r(515);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){"object"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray("be",a),s=t.toArray("be",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new u({r:v,s:y,recoveryParam:g})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,"hex");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,"The recovery param is more than two bits"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(18);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},n.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return""}},function(t,e,r){"use strict";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(18),u=r(19),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){"use strict";function n(t){if(f("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(49),o=r(19),a=o.utils,f=a.assert,s=a.parseBytes,u=r(517),h=r(518);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i=r(49),o=r(19),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?"0"+t:t}function o(t){for(var e="",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return"string"==typeof t?c.toArray(t,"hex"):t}function h(t){return new d(t,"hex","le")}var c=e,d=r(18);c.assert=function(t,e){if(!t)throw new Error(e||"Assertion failed")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return"hex"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var o=r(609);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=U(t,e,28),n=U(e,t,2),i=U(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=U(t,e,14),n=U(t,e,18),i=U(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=U(t,e,1),n=U(t,e,8),i=L(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=N(t,e,1),n=N(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=U(t,e,19),n=U(e,t,29),i=L(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(49),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,U=B.rotr64_hi,N=B.rotr64_lo,L=B.shr64_hi,z=B.shr64_lo,D=B.sum64,F=B.sum64_hi,q=B.sum64_lo,K=B.sum64_4_hi,Y=B.sum64_4_lo,G=B.sum64_5_hi,V=B.sum64_5_lo,H=I.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,H),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r="",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||"Assertion failed")}function g(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function m(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function x(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function k(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=g,e.sum64_hi=m,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=x,e.shr64_hi=k,e.shr64_lo=I},function(t,e,r){var n=r(100),i=n.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});e.RSAPrivateKey=i;var o=n.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});e.RSAPublicKey=o;var a=n.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())});e.PublicKey=a;var f=n.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),s=n.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(f),this.key("subjectPrivateKey").octstr())});e.PrivateKey=s;var u=n.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});e.EncryptedPrivateKey=u;var h=n.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});e.DSAPrivateKey=h,e.DSAparam=n.define("DSAparam",function(){this.int()});var c=n.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m,i=/^-----BEGIN (.*) KEY-----\r?\n/m,o=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m,a=r(148),f=r(219);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c="aes"+h[1],d=new e(h[2],"hex"),l=new e(h[3].replace(/\r?\n/g,""),"base64"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\r?\n/g,""),"base64")}var g=u.match(i)[1]+" KEY";return{tag:g,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(100),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(68).Reporter,o=r(68).EncoderBuffer,a=r(68).DecoderBuffer,f=r(538),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s),h=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];t.exports=n;var c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,"Root node can have only one child")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"int"===t||"enum"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error("Choice not matched")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");var n=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?"universal":"context";null===u?null===n.use&&e.error("Tag could be ommited only for .use()"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);throw new Error("Unsupported tag: "+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return"["+JSON.stringify(t)+"]"}).join(""),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(215);e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(216),n.pem=r(535)},function(t,e,r){function n(t){a.call(this,t),this.enc="pem"}var i=r(2),o=r(1).Buffer,a=r(216);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\r\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(224),CBC:r(220),CFB:r(221),CFB8:r(223),CFB1:r(222),OFB:r(225),CTR:r(102),GCM:r(102)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(101),s=r(103),u=r(2),h=r(147),c=r(148),d=r(226),l=r(218);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e,r,n){var a=v(e);if(a.curve){if("ecdsa"!==n)throw new Error("wrong private key type");return i(t,a)}if("dsa"===a.type){if("dsa"!==n)throw new Error("wrong private key type");return o(t,a,r)}if("rsa"!==n)throw new Error("wrong private key type");for(var f=a.modulus.byteLength(),s=[0,1];t.length+s.length+10&&r.ishrn(n),r}function u(t,r){t=s(t,r),t=t.mod(r);var n=new e(t.toArray());if(n.length=e)throw new Error("invalid sig")}var f=r(212),s=r(19),u=r(213),h=r(18),c=s.ec;t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){this.curveType=f[t],this.curveType||(this.curveType={name:t}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}function i(t,r,n){Array.isArray(t)||(t=t.toArray());var i=new e(t);if(n&&i.length0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(30),a=r(22),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error("Not implemented")},n.prototype.validate=function(){throw new Error("Not implemented")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a="affine"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return"affine"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],g=u(r[p],r[b]);h=Math.max(g[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var m=0;m=0;c--){for(var E=0;c>=0;){for(var A=!0,m=0;m=0&&E++,M=M.dblp(E),c<0)break;for(var m=0;m0?d=a[m][x-1>>1]:x<0&&(d=a[m][-x-1>>1].neg()),M="affine"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i":""},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){"use strict";function n(t){s.call(this,"mont",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(104),a=r(30),f=r(2),s=o.base,u=r(22),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?"":""},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){"use strict";function n(t){h.call(this,"short",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(104),f=r(22),s=r(30),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),g=0;0!==d.cmpn(0);){var m=l.div(d);u=l.sub(m.mul(d)),h=v.sub(m.mul(p));var w=y.sub(m.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++g)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o":""},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?"":""},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){"use strict";function n(t){"short"===t.type?this.curve=new f.curve.short(t):"edwards"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(50),f=r(22),s=f.utils.assert;o.PresetCurve=n,i("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),i("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),i("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),i("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),i("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),i("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"0",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),i("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var u;try{u=r(557)}catch(t){u=void 0}i("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",u]})},function(t,e,r){"use strict";function n(t){return this instanceof n?("string"==typeof t&&(f(o.curves.hasOwnProperty(t),"Unknown curve "+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(30),o=r(22),a=o.utils,f=a.assert,s=r(551),u=r(552);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){"object"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray("be",a),s=t.toArray("be",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var g=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),g^=1),new u({r:v,s:y,recoveryParam:g})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,"hex");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,"The recovery param is more than two bits"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error("Unable to find valid recovery factor")}},function(t,e,r){"use strict";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(30);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},n.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){ +return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return""}},function(t,e,r){"use strict";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,"Signature without r or s"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(30),u=r(22),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){"use strict";function n(t){if(f("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(50),o=r(22),a=o.utils,f=a.assert,s=a.parseBytes,u=r(554),h=r(555);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}var i=r(50),o=r(22),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?"0"+t:t}function o(t){for(var e="",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n="_"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return"string"==typeof t?c.toArray(t,"hex"):t}function h(t){return new d(t,"hex","le")}var c=e,d=r(30);c.assert=function(t,e){if(!t)throw new Error(e||"Assertion failed")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return"hex"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},"object"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error("Not implemented yet")};else try{var o=r(610);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=U(t,e,28),n=U(e,t,2),i=U(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=U(t,e,14),n=U(t,e,18),i=U(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=U(t,e,1),n=U(t,e,8),i=L(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=N(t,e,1),n=N(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=U(t,e,19),n=U(e,t,29),i=L(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(50),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,U=B.rotr64_hi,N=B.rotr64_lo,L=B.shr64_hi,z=B.shr64_lo,D=B.sum64,F=B.sum64_hi,q=B.sum64_lo,K=B.sum64_4_hi,Y=B.sum64_4_lo,G=B.sum64_5_hi,V=B.sum64_5_lo,H=I.common.BlockHash,X=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,H),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r="",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||"Assertion failed")}function g(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function m(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function x(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function k(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=g,e.sum64_hi=m,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=x,e.shr64_hi=k,e.shr64_lo=I},function(t,e,r){"use strict";(function(t){function r(e,r){if(e.length%o!==0){var n=e.length+(o-e.length%o);e=t.concat([e,a],n)}for(var i=[],f=r?e.readInt32BE:e.readInt32LE,s=0;s>>5]|=t[r]<<24-n%32;return e}function n(t){for(var e=[],r=0;r<32*t.length;r+=8)e.push(t[r>>>5]>>>24-r%32&255);return e}function i(t,e,r){for(var n=0;n<16;n++){var i=r+n,c=e[i];e[i]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var g,m,w,_,M,S,E,A,x,k;S=g=t[0],E=m=t[1],A=w=t[2],x=_=t[3],k=M=t[4];var I;for(n=0;n<80;n+=1)I=g+e[r+d[n]]|0,I+=n<16?o(m,w,_)+v[0]:n<32?a(m,w,_)+v[1]:n<48?f(m,w,_)+v[2]:n<64?s(m,w,_)+v[3]:u(m,w,_)+v[4],I|=0,I=h(I,p[n]),I=I+M|0,g=M,M=_,_=h(w,10),w=m,m=I,I=S+e[r+l[n]]|0,I+=n<16?u(E,A,x)+y[0]:n<32?s(E,A,x)+y[1]:n<48?f(E,A,x)+y[2]:n<64?a(E,A,x)+y[3]:o(E,A,x)+y[4],I|=0,I=h(I,b[n]),I=I+k|0,S=k,k=x,x=h(A,10),A=E,E=I;I=t[1]+w+x|0,t[1]=t[2]+_+k|0,t[2]=t[3]+M+S|0,t[3]=t[4]+g+E|0,t[4]=t[0]+m+A|0,t[0]=I}function o(t,e,r){return t^e^r}function a(t,e,r){return t&e|~t&r}function f(t,e,r){return(t|~e)^r}function s(t,e,r){return t&r|e&~r}function u(t,e,r){return t^(e|~r)}function h(t,e){return t<>>32-e}function c(t){var o=[1732584193,4023233417,2562383102,271733878,3285377520];"string"==typeof t&&(t=new e(t,"utf8"));var a=r(t),f=8*t.length,s=8*t.length;a[f>>>5]|=128<<24-f%32,a[(f+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var u=0;u>>24)|4278255360&(h<<24|h>>>8)}var c=n(o);return new e(c)}var d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];t.exports=c}).call(e,r(1).Buffer)},function(t,e,r){var e=t.exports=function(t){t=t.toLowerCase();var r=e[t];if(!r)throw new Error(t+" is not supported (we accept pull requests)");return new r};e.sha=r(569),e.sha1=r(570),e.sha224=r(571),e.sha256=r(227),e.sha384=r(572),e.sha512=r(228)},function(t,e,r){(function(e){function n(){this.init(),this._w=h,s.call(this,64,56)}function i(t){return t<<5|t>>>27}function o(t){return t<<30|t>>>2}function a(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var f=r(2),s=r(60),u=[1518500249,1859775393,-1894007588,-899497514],h=new Array(80);f(n,s),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,f=0|this._c,s=0|this._d,h=0|this._e,c=0;c<16;++c)e[c]=t.readInt32BE(4*c);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var d=0;d<80;++d){var l=~~(d/20),p=i(r)+a(l,n,f,s)+h+e[d]+u[l]|0;h=s,s=f,f=o(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=f+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=c,u.call(this,64,56)}function i(t){return t<<1|t>>>31}function o(t){return t<<5|t>>>27}function a(t){return t<<30|t>>>2}function f(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var s=r(2),u=r(60),h=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(n,u),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,s=0|this._c,u=0|this._d,c=0|this._e,d=0;d<16;++d)e[d]=t.readInt32BE(4*d);for(;d<80;++d)e[d]=i(e[d-3]^e[d-8]^e[d-14]^e[d-16]);for(var l=0;l<80;++l){var p=~~(l/20),b=o(r)+f(p,n,s,u)+c+e[l]+h[p]|0;c=u,u=s,s=a(n),n=r,r=b}this._a=r+this._a|0,this._b=n+this._b|0,this._c=s+this._c|0,this._d=u+this._d|0,this._e=c+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,64,56)}var i=r(2),o=r(227),a=r(60),f=new Array(64);i(n,o),n.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},n.prototype._hash=function(){var t=new e(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,128,112)}var i=r(2),o=r(228),a=r(60),f=new Array(160);i(n,o),n.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(48);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e){var r=new t(a[e].prime,"hex"),n=new t(a[e].gen,"hex");return new f(r,n)}function i(e,r,n,a){return t.isBuffer(r)||void 0===s[r]?i(e,"binary",r,n):(r=r||"binary",a=a||"binary",n=n||new t([2]),t.isBuffer(n)||(n=new t(n,a)),"number"==typeof e?new f(o(e,n),n,!0):(t.isBuffer(e)||(e=new t(e,r)),new f(e,n,!0)))}var o=r(229),a=r(468),f=r(574),s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=n,e.createDiffieHellman=e.DiffieHellman=i}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._pub=new s(t),this}function i(t,r){return r=r||"utf8",e.isBuffer(t)||(t=new e(t,r)),this._priv=new s(t),this}function o(t,e){var r=e.toString("hex"),n=[r,t.toString(16)].join("_");if(n in g)return g[n];var i=0;if(t.isEven()||!v.simpleSieve||!v.fermatTest(t)||!h.test(t))return i+=1,i+="02"===r||"05"===r?8:4,g[n]=i,i;h.test(t.shrn(1))||(i+=2);var o;switch(r){case"02":t.mod(c).cmp(d)&&(i+=8);break;case"05":o=t.mod(l),o.cmp(p)&&o.cmp(b)&&(i+=8);break;default:i+=4}return g[n]=i,i}function a(t,e,r){this.setGenerator(e),this.__prime=new s(t),this._prime=s.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=n,this.setPrivateKey=i):this._primeCode=8}function f(t,r){var n=new e(t.toArray());return r?n.toString(r):n}var s=r(150),u=r(230),h=new u,c=new s(24),d=new s(11),l=new s(10),p=new s(3),b=new s(7),v=r(229),y=r(61);t.exports=a;var g={};Object.defineProperty(a.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=o(this.__prime,this.__gen)),this._primeCode}}),a.prototype.generateKeys=function(){return this._priv||(this._priv=new s(y(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},a.prototype.computeSecret=function(t){t=new s(t),t=t.toRed(this._prime);var r=t.redPow(this._priv).fromRed(),n=new e(r.toArray()),i=this.getPrime();if(n.lengthr||e!==e)throw new TypeError("Bad key length")}},function(t,e,r){e.publicEncrypt=r(593),e.privateDecrypt=r(592),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var n=r(106),i=n.define("RSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())});e.RSAPrivateKey=i;var o=n.define("RSAPublicKey",function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())});e.RSAPublicKey=o;var a=n.define("SubjectPublicKeyInfo",function(){this.seq().obj(this.key("algorithm").use(f),this.key("subjectPublicKey").bitstr())});e.PublicKey=a;var f=n.define("AlgorithmIdentifier",function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())}),s=n.define("PrivateKeyInfo",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(f),this.key("subjectPrivateKey").octstr())});e.PrivateKey=s;var u=n.define("EncryptedPrivateKeyInfo",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())});e.EncryptedPrivateKey=u;var h=n.define("DSAPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())});e.DSAPrivateKey=h,e.DSAparam=n.define("DSAparam",function(){this.int()});var c=n.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define("ECParameters",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define("signature",function(){this.seq().obj(this.key("r").int(),this.key("s").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\r?\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\r?\n\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n/m,i=/^-----BEGIN (.*) KEY-----\r?\n/m,o=/^-----BEGIN (.*) KEY-----\r?\n([0-9A-z\n\r\+\/\=]+)\r?\n-----END \1 KEY-----$/m,a=r(153),f=r(239);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c="aes"+h[1],d=new e(h[2],"hex"),l=new e(h[3].replace(/\r?\n/g,""),"base64"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)), +b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\r?\n/g,""),"base64")}var g=u.match(i)[1]+" KEY";return{tag:g,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(106),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(71).Reporter,o=r(71).EncoderBuffer,a=r(71).DecoderBuffer,f=r(588),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s),h=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];t.exports=n;var c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,"Root node can have only one child")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"int"===t||"enum"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error("Choice not matched")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");var n=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?"universal":"context";null===u?null===n.use&&e.error("Tag could be ommited only for .use()"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);throw new Error("Unsupported tag: "+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return"["+JSON.stringify(t)+"]"}).join(""),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(235);e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(236),n.pem=r(585)},function(t,e,r){function n(t){a.call(this,t),this.enc="pem"}var i=r(2),o=r(1).Buffer,a=r(236);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\r\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(244),CBC:r(240),CFB:r(241),CFB8:r(243),CFB1:r(242),OFB:r(245),CTR:r(108),GCM:r(108)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t("")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError("invalid suite type");if("string"==typeof i&&(i=new t(i)),"string"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError("invalid key length "+r.length);if(i.length!==o.iv)throw new TypeError("invalid iv length "+i.length);return"stream"===o.type?new d(p[o.mode],r,i):"auth"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(107),s=r(109),u=r(2),h=r(152),c=r(153),d=r(246),l=r(238);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if("10101010101010101010101010101010"!==t.toString("hex"))throw this._cipher.scrub(),new Error("data not multiple of block length")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=(t.modulus,t.modulus.byteLength()),i=(r.length,c("sha1").update(new e("")).digest()),a=i.length;if(0!==r[0])throw new Error("decryption error");var u=r.slice(1,a+1),h=r.slice(a+1),d=s(u,f(h,a)),l=s(h,f(d,n-a-1));if(o(i,l.slice(0,a)))throw new Error("decryption error");for(var p=a;0===l[p];)p++;if(1!==l[p++])throw new Error("decryption error");return l.slice(p)}function i(t,e,r){for(var n=e.slice(0,2),i=2,o=0;0!==e[i++];)if(i>=e.length){o++;break}var a=e.slice(2,i-1);if(e.slice(i-1,i),("0002"!==n.toString("hex")&&!r||"0001"!==n.toString("hex")&&r)&&o++,a.length<8&&o++,o)throw new Error("decryption error");return e.slice(i)}function o(t,r){t=new e(t),r=new e(r);var n=0,i=t.length;t.length!==r.length&&(n++,i=Math.min(t.length,r.length));for(var o=-1;++oc||new u(r).cmp(s.modulus)>=0)throw new Error("decryption error");var l;l=o?d(new u(r),s):h(r,s);var p=new e(c-l.length);if(p.fill(0),l=e.concat([p,l],c),4===f)return n(s,l);if(1===f)return i(s,l,o);if(3===f)return l;throw new Error("unknown padding")}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=t.modulus.byteLength(),i=r.length,o=s("sha1").update(new e("")).digest(),a=o.length,d=2*a;if(i>n-d-2)throw new Error("message too long");var l=new e(n-i-d-2);l.fill(0);var p=n-a-1,b=f(a),v=h(e.concat([o,l,new e([1]),r],p),u(b,p)),y=h(b,u(v,a));return new c(e.concat([new e([0]),y,v],n))}function i(t,r,n){var i=r.length,a=t.modulus.byteLength();if(i>a-11)throw new Error("message too long");var f;return n?(f=new e(a-i-3),f.fill(255)):f=o(a-i-3),new c(e.concat([new e([0,n?1:2]),f,new e([0]),r],a))}function o(t,r){for(var n,i=new e(t),o=0,a=f(2*t),s=0;o=0)throw new Error("data too long for modulus")}return r?l(f,s):d(f,s)}}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function r(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];"."===i?t.splice(n,1):".."===i?(t.splice(n,1),r++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift("..");return t}function n(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!i;o--){var a=o>=0?arguments[o]:t.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(e=a+"/"+e,i="/"===a.charAt(0))}return e=r(n(e.split("/"),function(t){return!!t}),!i).join("/"),(i?"/":"")+e||"."},e.normalize=function(t){var i=e.isAbsolute(t),o="/"===a(t,-1);return t=r(n(t.split("/"),function(t){return!!t}),!i).join("/"),t||i||(t="."),t&&o&&(t+="/"),(i?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(n(t,function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},e.relative=function(t,r){function n(t){for(var e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var i=n(t.split("/")),o=n(r.split("/")),a=Math.min(i.length,o.length),f=a,s=0;s0?this.tail.next=e:this.head=e,this.tail=e,++this.length},n.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},n.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},n.prototype.clear=function(){this.head=this.tail=null,this.length=0},n.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r},n.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){(function(e){function r(t,e){function r(){if(!i){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(n("noDeprecation"))return t;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&"true"===String(r).toLowerCase()}t.exports=r}).call(e,r(39))},function(t,e,r){t.exports=r(249)},function(t,e,r){(function(n){var i=function(){try{return r(31)}catch(t){}}();e=t.exports=r(250),e.Stream=i||e,e.Readable=e,e.Writable=r(155),e.Duplex=r(51),e.Transform=r(154),e.PassThrough=r(249),!n.browser&&"disable"===n.env.READABLE_STREAM&&i&&(t.exports=i)}).call(e,r(26))},function(t,e,r){t.exports=r(154)},function(t,e,r){t.exports=r(155)},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e,r){(function(t,n){function i(t,r){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),b(r)?n.showHidden=r:r&&e._extend(n,r),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),s(n,t,n.depth)}function o(t,e){var r=i.styles[e];return r?"["+i.colors[r][0]+"m"+t+"["+i.colors[r][1]+"m":t}function a(t,e){return t}function f(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function s(t,r,n){if(t.customInspect&&r&&x(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return m(i)||(i=s(t,i,n)),i}var o=u(t,r);if(o)return o;var a=Object.keys(r),b=f(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),A(r)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return h(r);if(0===a.length){if(x(r)){var v=r.name?": "+r.name:"";return t.stylize("[Function"+v+"]","special")}if(M(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(E(r))return t.stylize(Date.prototype.toString.call(r),"date");if(A(r))return h(r)}var y="",g=!1,w=["{","}"];if(p(r)&&(g=!0,w=["[","]"]),x(r)){var _=r.name?": "+r.name:"";y=" [Function"+_+"]"}if(M(r)&&(y=" "+RegExp.prototype.toString.call(r)),E(r)&&(y=" "+Date.prototype.toUTCString.call(r)),A(r)&&(y=" "+h(r)),0===a.length&&(!g||0==r.length))return w[0]+y+w[1];if(n<0)return M(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special");t.seen.push(r);var S;return S=g?c(t,r,n,b,a):a.map(function(e){return d(t,r,n,b,e,g)}),t.seen.pop(),l(S,y,w)}function u(t,e){if(_(e))return t.stylize("undefined","undefined");if(m(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return g(e)?t.stylize(""+e,"number"):b(e)?t.stylize(""+e,"boolean"):v(e)?t.stylize("null","null"):void 0}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,r,n,i){for(var o=[],a=0,f=e.length;a-1&&(f=o?f.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+f.split("\n").map(function(t){return" "+t}).join("\n"))):f=t.stylize("[Circular]","special")),_(a)){if(o&&i.match(/^\d+$/))return f;a=JSON.stringify(""+i),a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,"name")):(a=a.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),a=t.stylize(a,"string"))}return a+": "+f}function l(t,e,r){var n=0,i=t.reduce(function(t,e){return n++,e.indexOf("\n")>=0&&n++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function p(t){return Array.isArray(t)}function b(t){return"boolean"==typeof t}function v(t){return null===t}function y(t){return null==t}function g(t){return"number"==typeof t}function m(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function _(t){return void 0===t}function M(t){return S(t)&&"[object RegExp]"===I(t)}function S(t){return"object"==typeof t&&null!==t}function E(t){return S(t)&&"[object Date]"===I(t)}function A(t){return S(t)&&("[object Error]"===I(t)||t instanceof Error)}function x(t){return"function"==typeof t}function k(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function I(t){return Object.prototype.toString.call(t)}function B(t){return t<10?"0"+t.toString(10):t.toString(10)}function O(){var t=new Date,e=[B(t.getHours()),B(t.getMinutes()),B(t.getSeconds())].join(":");return[t.getDate(),C[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var P=/%[sdj%]/g;e.format=function(t){if(!m(t)){for(var e=[],r=0;r=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),f=n[r];r>1,h=-7,c=r?i-1:0,d=r?-1:1,l=t[e+c];for(c+=d,o=l&(1<<-h)-1,l>>=-h,h+=f;h>0;o=256*o+t[e+c],c+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=d,h-=8);if(0===o)o=1-u;else{if(o===s)return a?NaN:(l?-1:1)*(1/0);a+=Math.pow(2,n),o-=u}return(l?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){ +var a,f,s,u=8*o-i-1,h=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,p=n?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+c>=1?d/s:d*Math.pow(2,1-c),e*s>=2&&(a++,s/=2),a+c>=h?(f=0,a=h):a+c>=1?(f=(e*s-1)*Math.pow(2,i),a+=c):(f=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+l]=255&f,l+=p,f/=256,i-=8);for(a=a<0;t[r+l]=255&a,l+=p,a/=256,u-=8);t[r+l-p]|=128*b}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){(function(e,r){!function(){"use strict";function n(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}var i="object"==typeof window?window:{},o=!i.JS_SHA3_NO_NODE_JS&&"object"==typeof e&&e.versions&&e.versions.node;o&&(i=r);for(var a=!i.JS_SHA3_NO_COMMON_JS&&"object"==typeof t&&t.exports,f="0123456789abcdef".split(""),s=[31,7936,2031616,520093696],u=[1,256,65536,16777216],h=[6,1536,393216,100663296],c=[0,8,16,24],d=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],l=[224,256,384,512],p=[128,256],b=["hex","buffer","arrayBuffer","array"],v=function(t,e,r){return function(i){return new n(t,e,t).update(i)[r]()}},y=function(t,e,r){return function(i,o){return new n(t,e,o).update(i)[r]()}},g=function(t,e){var r=v(t,e,"hex");r.create=function(){return new n(t,e,t)},r.update=function(t){return r.create().update(t)};for(var i=0;i>2]|=t[s]<>2]|=n<>2]|=(192|n>>6)<>2]|=(128|63&n)<=57344?(o[r>>2]|=(224|n>>12)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<>2]|=(240|n>>18)<>2]|=(128|n>>12&63)<>2]|=(128|n>>6&63)<>2]|=(128|63&n)<=a){for(this.start=r-a,this.block=o[f],r=0;r>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e>4&15]+f[15&t]+f[t>>12&15]+f[t>>8&15]+f[t>>20&15]+f[t>>16&15]+f[t>>28&15]+f[t>>24&15];a%e===0&&(I(r),o=0)}return i&&(t=r[o],i>0&&(s+=f[t>>4&15]+f[15&t]),i>1&&(s+=f[t>>12&15]+f[t>>8&15]),i>2&&(s+=f[t>>20&15]+f[t>>16&15])),s},n.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,i=this.extraBytes,o=0,a=0,f=this.outputBits>>3;t=i?new ArrayBuffer(n+1<<2):new ArrayBuffer(f);for(var s=new Uint32Array(t);a>8&255,s[t+2]=e>>16&255,s[t+3]=e>>24&255;f%r===0&&I(n)}return o&&(t=f<<2,e=n[a],o>0&&(s[t]=255&e),o>1&&(s[t+1]=e>>8&255),o>2&&(s[t+2]=e>>16&255)),s};var I=function(t){var e,r,n,i,o,a,f,s,u,h,c,l,p,b,v,y,g,m,w,_,M,S,E,A,x,k,I,B,O,R,P,T,j,C,U,N,L,z,D,F,q,K,Y,G,V,H,X,W,Z,J,$,Q,tt,et,rt,nt,it,ot,at,ft,st,ut,ht;for(n=0;n<48;n+=2)i=t[0]^t[10]^t[20]^t[30]^t[40],o=t[1]^t[11]^t[21]^t[31]^t[41],a=t[2]^t[12]^t[22]^t[32]^t[42],f=t[3]^t[13]^t[23]^t[33]^t[43],s=t[4]^t[14]^t[24]^t[34]^t[44],u=t[5]^t[15]^t[25]^t[35]^t[45],h=t[6]^t[16]^t[26]^t[36]^t[46],c=t[7]^t[17]^t[27]^t[37]^t[47],l=t[8]^t[18]^t[28]^t[38]^t[48],p=t[9]^t[19]^t[29]^t[39]^t[49],e=l^(a<<1|f>>>31),r=p^(f<<1|a>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=i^(s<<1|u>>>31),r=o^(u<<1|s>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=a^(h<<1|c>>>31),r=f^(c<<1|h>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=s^(l<<1|p>>>31),r=u^(p<<1|l>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=h^(i<<1|o>>>31),r=c^(o<<1|i>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,b=t[0],v=t[1],H=t[11]<<4|t[10]>>>28,X=t[10]<<4|t[11]>>>28,B=t[20]<<3|t[21]>>>29,O=t[21]<<3|t[20]>>>29,ft=t[31]<<9|t[30]>>>23,st=t[30]<<9|t[31]>>>23,K=t[40]<<18|t[41]>>>14,Y=t[41]<<18|t[40]>>>14,C=t[2]<<1|t[3]>>>31,U=t[3]<<1|t[2]>>>31,y=t[13]<<12|t[12]>>>20,g=t[12]<<12|t[13]>>>20,W=t[22]<<10|t[23]>>>22,Z=t[23]<<10|t[22]>>>22,R=t[33]<<13|t[32]>>>19,P=t[32]<<13|t[33]>>>19,ut=t[42]<<2|t[43]>>>30,ht=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,N=t[14]<<6|t[15]>>>26,L=t[15]<<6|t[14]>>>26,m=t[25]<<11|t[24]>>>21,w=t[24]<<11|t[25]>>>21,J=t[34]<<15|t[35]>>>17,$=t[35]<<15|t[34]>>>17,T=t[45]<<29|t[44]>>>3,j=t[44]<<29|t[45]>>>3,A=t[6]<<28|t[7]>>>4,x=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,it=t[16]<<23|t[17]>>>9,z=t[26]<<25|t[27]>>>7,D=t[27]<<25|t[26]>>>7,_=t[36]<<21|t[37]>>>11,M=t[37]<<21|t[36]>>>11,Q=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,G=t[8]<<27|t[9]>>>5,V=t[9]<<27|t[8]>>>5,k=t[18]<<20|t[19]>>>12,I=t[19]<<20|t[18]>>>12,ot=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,F=t[38]<<8|t[39]>>>24,q=t[39]<<8|t[38]>>>24,S=t[48]<<14|t[49]>>>18,E=t[49]<<14|t[48]>>>18,t[0]=b^~y&m,t[1]=v^~g&w,t[10]=A^~k&B,t[11]=x^~I&O,t[20]=C^~N&z,t[21]=U^~L&D,t[30]=G^~H&W,t[31]=V^~X&Z,t[40]=et^~nt&ot,t[41]=rt^~it&at,t[2]=y^~m&_,t[3]=g^~w&M,t[12]=k^~B&R,t[13]=I^~O&P,t[22]=N^~z&F,t[23]=L^~D&q,t[32]=H^~W&J,t[33]=X^~Z&$,t[42]=nt^~ot&ft,t[43]=it^~at&st,t[4]=m^~_&S,t[5]=w^~M&E,t[14]=B^~R&T,t[15]=O^~P&j,t[24]=z^~F&K,t[25]=D^~q&Y,t[34]=W^~J&Q,t[35]=Z^~$&tt,t[44]=ot^~ft&ut,t[45]=at^~st&ht,t[6]=_^~S&b,t[7]=M^~E&v,t[16]=R^~T&A,t[17]=P^~j&x,t[26]=F^~K&C,t[27]=q^~Y&U,t[36]=J^~Q&G,t[37]=$^~tt&V,t[46]=ft^~ut&et,t[47]=st^~ht&rt,t[8]=S^~b&y,t[9]=E^~v&g,t[18]=T^~A&k,t[19]=j^~x&I,t[28]=K^~C&N,t[29]=Y^~U&L,t[38]=Q^~G&H,t[39]=tt^~V&X,t[48]=ut^~et&nt,t[49]=ht^~rt&it,t[0]^=d[n],t[1]^=d[n+1]};if(a)t.exports=_;else for(var S=0;S="0"&&n<="9";)e+=n,s();if("."===n)for(e+=".";s()&&n>="0"&&n<="9";)e+=n;if("e"===n||"E"===n)for(e+=n,s(),"-"!==n&&"+"!==n||(e+=n,s());n>="0"&&n<="9";)e+=n,s();return t=+e,isFinite(t)?t:void f("Bad number")},h=function(){var t,e,r,i="";if('"'===n)for(;s();){if('"'===n)return s(),i;if("\\"===n)if(s(),"u"===n){for(r=0,e=0;e<4&&(t=parseInt(s(),16),isFinite(t));e+=1)r=16*r+t;i+=String.fromCharCode(r)}else{if("string"!=typeof a[n])break;i+=a[n]}else i+=n}f("Bad string")},c=function(){for(;n&&n<=" ";)s()},d=function(){switch(n){case"t":return s("t"),s("r"),s("u"),s("e"),!0;case"f":return s("f"),s("a"),s("l"),s("s"),s("e"),!1;case"n":return s("n"),s("u"),s("l"),s("l"),null}f("Unexpected '"+n+"'")},l=function(){var t=[];if("["===n){if(s("["),c(),"]"===n)return s("]"),t;for(;n;){if(t.push(o()),c(),"]"===n)return s("]"),t;s(","),c()}}f("Bad array")},p=function(){var t,e={};if("{"===n){if(s("{"),c(),"}"===n)return s("}"),e;for(;n;){if(t=h(),c(),s(":"),Object.hasOwnProperty.call(e,t)&&f('Duplicate key "'+t+'"'),e[t]=o(),c(),"}"===n)return s("}"),e;s(","),c()}}f("Bad object")};o=function(){switch(c(),n){case"{":return p();case"[":return l();case'"':return h();case"-":return u();default:return n>="0"&&n<="9"?u():d()}},t.exports=function(t,e){var a;return i=t,r=0,n=" ",a=o(),c(),n&&f("Syntax error"),"function"==typeof e?function t(r,n){var i,o,a=r[n];if(a&&"object"==typeof a)for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(o=t(a,i),void 0!==o?a[i]=o:delete a[i]);return e.call(r,n,a)}({"":a},""):a}},function(t,e){function r(t){return f.lastIndex=0,f.test(t)?'"'+t.replace(f,function(t){var e=s[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function n(t,e){var f,s,u,h,c,d=i,l=e[t];switch(l&&"object"==typeof l&&"function"==typeof l.toJSON&&(l=l.toJSON(t)),"function"==typeof a&&(l=a.call(e,t,l)),typeof l){case"string":return r(l);case"number":return isFinite(l)?String(l):"null";case"boolean":case"null":return String(l);case"object":if(!l)return"null";if(i+=o,c=[],"[object Array]"===Object.prototype.toString.apply(l)){for(h=l.length,f=0;f1)for(var r=1;r>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r,t[e+4]=n>>24&255,t[e+5]=n>>16&255,t[e+6]=n>>8&255,t[e+7]=255&n}function n(t,e,r,n,i){var o,a=0;for(o=0;o>>8)-1}function i(t,e,r,i){return n(t,e,r,i,16)}function o(t,e,r,i){return n(t,e,r,i,32)}function a(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,g=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,m=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,x=h,k=c,I=d,B=l,O=p,R=b,P=v,T=y,j=g,C=m,U=w,N=0;N<20;N+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=x+M|0,O^=i<<7|i>>>25,i=O+x|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,x^=i<<18|i>>>14,i=R+k|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,k^=i<<13|i>>>19,i=k+S|0,R^=i<<18|i>>>14,i=U+P|0,E^=i<<7|i>>>25,i=E+U|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,U^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=x+A|0,k^=i<<7|i>>>25,i=k+x|0,I^=i<<9|i>>>23,i=I+k|0,A^=i<<13|i>>>19,i=A+I|0,x^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=U+C|0,T^=i<<7|i>>>25,i=T+U|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,U^=i<<18|i>>>14;_=_+o|0,M=M+a|0,S=S+f|0,E=E+s|0,A=A+u|0,x=x+h|0,k=k+c|0,I=I+d|0,B=B+l|0,O=O+p|0,R=R+b|0,P=P+v|0,T=T+y|0,j=j+g|0,C=C+m|0,U=U+w|0,t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=M>>>0&255,t[5]=M>>>8&255,t[6]=M>>>16&255,t[7]=M>>>24&255,t[8]=S>>>0&255,t[9]=S>>>8&255,t[10]=S>>>16&255,t[11]=S>>>24&255,t[12]=E>>>0&255,t[13]=E>>>8&255,t[14]=E>>>16&255,t[15]=E>>>24&255,t[16]=A>>>0&255,t[17]=A>>>8&255,t[18]=A>>>16&255,t[19]=A>>>24&255,t[20]=x>>>0&255,t[21]=x>>>8&255,t[22]=x>>>16&255,t[23]=x>>>24&255,t[24]=k>>>0&255,t[25]=k>>>8&255,t[26]=k>>>16&255,t[27]=k>>>24&255,t[28]=I>>>0&255,t[29]=I>>>8&255,t[30]=I>>>16&255,t[31]=I>>>24&255,t[32]=B>>>0&255,t[33]=B>>>8&255,t[34]=B>>>16&255,t[35]=B>>>24&255,t[36]=O>>>0&255,t[37]=O>>>8&255,t[38]=O>>>16&255,t[39]=O>>>24&255,t[40]=R>>>0&255,t[41]=R>>>8&255,t[42]=R>>>16&255,t[43]=R>>>24&255,t[44]=P>>>0&255,t[45]=P>>>8&255,t[46]=P>>>16&255,t[47]=P>>>24&255,t[48]=T>>>0&255,t[49]=T>>>8&255,t[50]=T>>>16&255,t[51]=T>>>24&255,t[52]=j>>>0&255,t[53]=j>>>8&255,t[54]=j>>>16&255,t[55]=j>>>24&255,t[56]=C>>>0&255,t[57]=C>>>8&255,t[58]=C>>>16&255,t[59]=C>>>24&255,t[60]=U>>>0&255,t[61]=U>>>8&255,t[62]=U>>>16&255,t[63]=U>>>24&255}function f(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,g=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,m=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,x=h,k=c,I=d,B=l,O=p,R=b,P=v,T=y,j=g,C=m,U=w,N=0;N<20;N+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=x+M|0,O^=i<<7|i>>>25,i=O+x|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,x^=i<<18|i>>>14,i=R+k|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,k^=i<<13|i>>>19,i=k+S|0,R^=i<<18|i>>>14,i=U+P|0,E^=i<<7|i>>>25,i=E+U|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,U^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=x+A|0,k^=i<<7|i>>>25,i=k+x|0,I^=i<<9|i>>>23,i=I+k|0,A^=i<<13|i>>>19,i=A+I|0,x^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=U+C|0,T^=i<<7|i>>>25,i=T+U|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,U^=i<<18|i>>>14;t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=x>>>0&255,t[5]=x>>>8&255,t[6]=x>>>16&255,t[7]=x>>>24&255,t[8]=R>>>0&255,t[9]=R>>>8&255,t[10]=R>>>16&255,t[11]=R>>>24&255,t[12]=U>>>0&255,t[13]=U>>>8&255,t[14]=U>>>16&255,t[15]=U>>>24&255,t[16]=k>>>0&255,t[17]=k>>>8&255,t[18]=k>>>16&255,t[19]=k>>>24&255,t[20]=I>>>0&255,t[21]=I>>>8&255,t[22]=I>>>16&255,t[23]=I>>>24&255,t[24]=B>>>0&255,t[25]=B>>>8&255,t[26]=B>>>16&255,t[27]=B>>>24&255,t[28]=O>>>0&255,t[29]=O>>>8&255,t[30]=O>>>16&255,t[31]=O>>>24&255}function s(t,e,r,n){a(t,e,r,n)}function u(t,e,r,n){f(t,e,r,n)}function h(t,e,r,n,i,o,a){var f,u,h=new Uint8Array(16),c=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(s(c,h,a,dt),u=0;u<64;u++)t[e+u]=r[n+u]^c[u];for(f=1,u=8;u<16;u++)f=f+(255&h[u])|0,h[u]=255&f,f>>>=8;i-=64,e+=64,n+=64}if(i>0)for(s(c,h,a,dt),u=0;u=64;){for(s(u,f,i,dt),a=0;a<64;a++)t[e+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&f[a])|0,f[a]=255&o,o>>>=8;r-=64,e+=64}if(r>0)for(s(u,f,i,dt),a=0;a>16&1),o[r-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),i=o[15]>>16&1,o[14]&=65535,w(a,o,1-i)}for(r=0;r<16;r++)t[2*r]=255&a[r],t[2*r+1]=a[r]>>8}function M(t,e){var r=new Uint8Array(32),n=new Uint8Array(32);return _(r,t),_(n,e),o(r,0,n,0)}function S(t){var e=new Uint8Array(32);return _(e,t),1&e[0]}function E(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function A(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]+r[n]}function x(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]-r[n]}function k(t,e,r){var n,i,o=0,a=0,f=0,s=0,u=0,h=0,c=0,d=0,l=0,p=0,b=0,v=0,y=0,g=0,m=0,w=0,_=0,M=0,S=0,E=0,A=0,x=0,k=0,I=0,B=0,O=0,R=0,P=0,T=0,j=0,C=0,U=r[0],N=r[1],L=r[2],z=r[3],D=r[4],F=r[5],q=r[6],K=r[7],Y=r[8],G=r[9],V=r[10],H=r[11],X=r[12],W=r[13],Z=r[14],J=r[15];n=e[0],o+=n*U,a+=n*N,f+=n*L,s+=n*z,u+=n*D,h+=n*F,c+=n*q,d+=n*K,l+=n*Y,p+=n*G,b+=n*V,v+=n*H,y+=n*X,g+=n*W,m+=n*Z,w+=n*J,n=e[1],a+=n*U,f+=n*N,s+=n*L,u+=n*z,h+=n*D,c+=n*F,d+=n*q,l+=n*K,p+=n*Y,b+=n*G,v+=n*V,y+=n*H,g+=n*X,m+=n*W,w+=n*Z,_+=n*J,n=e[2],f+=n*U,s+=n*N,u+=n*L,h+=n*z,c+=n*D,d+=n*F,l+=n*q,p+=n*K,b+=n*Y,v+=n*G,y+=n*V,g+=n*H,m+=n*X,w+=n*W,_+=n*Z,M+=n*J,n=e[3],s+=n*U,u+=n*N,h+=n*L,c+=n*z,d+=n*D,l+=n*F,p+=n*q,b+=n*K,v+=n*Y,y+=n*G,g+=n*V,m+=n*H,w+=n*X,_+=n*W,M+=n*Z,S+=n*J,n=e[4],u+=n*U,h+=n*N,c+=n*L,d+=n*z,l+=n*D,p+=n*F,b+=n*q,v+=n*K,y+=n*Y,g+=n*G,m+=n*V,w+=n*H,_+=n*X,M+=n*W,S+=n*Z,E+=n*J,n=e[5],h+=n*U,c+=n*N,d+=n*L,l+=n*z,p+=n*D,b+=n*F,v+=n*q,y+=n*K,g+=n*Y,m+=n*G,w+=n*V,_+=n*H,M+=n*X,S+=n*W,E+=n*Z,A+=n*J,n=e[6],c+=n*U,d+=n*N,l+=n*L,p+=n*z,b+=n*D,v+=n*F,y+=n*q,g+=n*K,m+=n*Y,w+=n*G,_+=n*V,M+=n*H,S+=n*X,E+=n*W,A+=n*Z,x+=n*J,n=e[7],d+=n*U,l+=n*N,p+=n*L,b+=n*z,v+=n*D,y+=n*F,g+=n*q,m+=n*K,w+=n*Y,_+=n*G,M+=n*V,S+=n*H,E+=n*X,A+=n*W,x+=n*Z,k+=n*J,n=e[8],l+=n*U,p+=n*N,b+=n*L,v+=n*z,y+=n*D,g+=n*F,m+=n*q,w+=n*K,_+=n*Y,M+=n*G,S+=n*V,E+=n*H,A+=n*X,x+=n*W,k+=n*Z,I+=n*J,n=e[9],p+=n*U,b+=n*N,v+=n*L,y+=n*z,g+=n*D,m+=n*F,w+=n*q,_+=n*K,M+=n*Y,S+=n*G,E+=n*V,A+=n*H,x+=n*X,k+=n*W,I+=n*Z,B+=n*J,n=e[10],b+=n*U,v+=n*N,y+=n*L,g+=n*z,m+=n*D,w+=n*F,_+=n*q,M+=n*K,S+=n*Y,E+=n*G,A+=n*V,x+=n*H,k+=n*X,I+=n*W,B+=n*Z,O+=n*J,n=e[11],v+=n*U,y+=n*N,g+=n*L,m+=n*z,w+=n*D,_+=n*F,M+=n*q,S+=n*K,E+=n*Y,A+=n*G,x+=n*V,k+=n*H;I+=n*X;B+=n*W,O+=n*Z,R+=n*J,n=e[12],y+=n*U,g+=n*N,m+=n*L,w+=n*z,_+=n*D,M+=n*F,S+=n*q,E+=n*K,A+=n*Y,x+=n*G,k+=n*V,I+=n*H,B+=n*X,O+=n*W,R+=n*Z,P+=n*J,n=e[13],g+=n*U,m+=n*N,w+=n*L,_+=n*z,M+=n*D,S+=n*F,E+=n*q,A+=n*K,x+=n*Y,k+=n*G,I+=n*V,B+=n*H,O+=n*X,R+=n*W,P+=n*Z,T+=n*J,n=e[14],m+=n*U,w+=n*N,_+=n*L,M+=n*z,S+=n*D,E+=n*F,A+=n*q,x+=n*K,k+=n*Y,I+=n*G,B+=n*V,O+=n*H,R+=n*X,P+=n*W,T+=n*Z,j+=n*J,n=e[15],w+=n*U,_+=n*N,M+=n*L,S+=n*z,E+=n*D,A+=n*F,x+=n*q,k+=n*K,I+=n*Y,B+=n*G,O+=n*V,R+=n*H,P+=n*X,T+=n*W,j+=n*Z,C+=n*J,o+=38*_,a+=38*M,f+=38*S,s+=38*E,u+=38*A,h+=38*x,c+=38*k,d+=38*I,l+=38*B,p+=38*O,b+=38*R,v+=38*P,y+=38*T,g+=38*j,m+=38*C,i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),t[0]=o,t[1]=a,t[2]=f,t[3]=s,t[4]=u,t[5]=h,t[6]=c,t[7]=d,t[8]=l,t[9]=p,t[10]=b,t[11]=v,t[12]=y,t[13]=g;t[14]=m;t[15]=w}function I(t,e){k(t,e,e)}function B(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=253;r>=0;r--)I(n,n),2!==r&&4!==r&&k(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function O(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=250;r>=0;r--)I(n,n),1!==r&&k(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function R(t,e,r){var n,i,o=new Uint8Array(32),a=new Float64Array(80),f=tt(),s=tt(),u=tt(),h=tt(),c=tt(),d=tt();for(i=0;i<31;i++)o[i]=e[i];for(o[31]=127&e[31]|64,o[0]&=248,E(a,r),i=0;i<16;i++)s[i]=a[i],h[i]=f[i]=u[i]=0;for(f[0]=h[0]=1,i=254;i>=0;--i)n=o[i>>>3]>>>(7&i)&1,w(f,s,n),w(u,h,n),A(c,f,u),x(f,f,u),A(u,s,h),x(s,s,h),I(h,c),I(d,f),k(f,u,f),k(u,s,c),A(c,f,u),x(f,f,u),I(s,f),x(u,h,d),k(f,u,at),A(f,f,h),k(u,u,f),k(f,h,d),k(h,s,a),I(s,c),w(f,s,n),w(u,h,n);for(i=0;i<16;i++)a[i+16]=f[i],a[i+32]=u[i],a[i+48]=s[i],a[i+64]=h[i];var l=a.subarray(32),p=a.subarray(16);return B(l,l),k(p,p,l),_(t,p),0}function P(t,e){return R(t,e,nt)}function T(t,e){return et(e,32),P(t,e)}function j(t,e,r){var n=new Uint8Array(32);return R(n,r,e),u(t,rt,n,dt)}function C(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),pt(t,e,r,n,a)}function U(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),bt(t,e,r,n,a)}function N(t,e,r,n){for(var i,o,a,f,s,u,h,c,d,l,p,b,v,y,g,m,w,_,M,S,E,A,x,k,I,B,O=new Int32Array(16),R=new Int32Array(16),P=t[0],T=t[1],j=t[2],C=t[3],U=t[4],N=t[5],L=t[6],z=t[7],D=e[0],F=e[1],q=e[2],K=e[3],Y=e[4],G=e[5],V=e[6],H=e[7],X=0;n>=128;){for(M=0;M<16;M++)S=8*M+X,O[M]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[M]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(M=0;M<80;M++)if(i=P,o=T,a=j,f=C,s=U,u=N,h=L,c=z,d=D,l=F,p=q,b=K,v=Y,y=G,g=V,m=H,E=z,A=H,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=(U>>>14|Y<<18)^(U>>>18|Y<<14)^(Y>>>9|U<<23),A=(Y>>>14|U<<18)^(Y>>>18|U<<14)^(U>>>9|Y<<23),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=U&N^~U&L,A=Y&G^~Y&V,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=vt[2*M],A=vt[2*M+1],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=O[M%16],A=R[M%16],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,w=65535&I|B<<16,_=65535&x|k<<16,E=w,A=_,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=(P>>>28|D<<4)^(D>>>2|P<<30)^(D>>>7|P<<25),A=(D>>>28|P<<4)^(P>>>2|D<<30)^(P>>>7|D<<25),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,E=P&T^P&j^T&j,A=D&F^D&q^F&q,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,c=65535&I|B<<16,m=65535&x|k<<16,E=f,A=b,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=w,A=_,x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,f=65535&I|B<<16,b=65535&x|k<<16,T=i,j=o,C=a,U=f,N=s,L=u,z=h,P=c,F=d,q=l,K=p,Y=b,G=v,V=y,H=g,D=m,M%16===15)for(S=0;S<16;S++)E=O[S],A=R[S],x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=O[(S+9)%16],A=R[(S+9)%16],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+1)%16],_=R[(S+1)%16],E=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,A=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+14)%16],_=R[(S+14)%16],E=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,A=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,O[S]=65535&I|B<<16,R[S]=65535&x|k<<16;E=P,A=D,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[0],A=e[0],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[0]=P=65535&I|B<<16,e[0]=D=65535&x|k<<16,E=T,A=F,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[1],A=e[1],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[1]=T=65535&I|B<<16,e[1]=F=65535&x|k<<16,E=j,A=q,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[2],A=e[2],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[2]=j=65535&I|B<<16,e[2]=q=65535&x|k<<16,E=C,A=K,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[3],A=e[3],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[3]=C=65535&I|B<<16,e[3]=K=65535&x|k<<16,E=U,A=Y,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[4],A=e[4],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[4]=U=65535&I|B<<16,e[4]=Y=65535&x|k<<16,E=N,A=G,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[5],A=e[5],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[5]=N=65535&I|B<<16,e[5]=G=65535&x|k<<16,E=L,A=V,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[6],A=e[6],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[6]=L=65535&I|B<<16,e[6]=V=65535&x|k<<16,E=z,A=H,x=65535&A,k=A>>>16,I=65535&E,B=E>>>16,E=t[7],A=e[7],x+=65535&A,k+=A>>>16,I+=65535&E,B+=E>>>16,k+=x>>>16,I+=k>>>16,B+=I>>>16,t[7]=z=65535&I|B<<16,e[7]=H=65535&x|k<<16,X+=128,n-=128}return n}function L(t,r,n){var i,o=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),s=n;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,N(o,a,r,n),n%=128,i=0;i=0;--i)n=r[i/8|0]>>(7&i)&1,D(t,e,n),z(e,t),z(t,t),D(t,e,n)}function K(t,e){var r=[tt(),tt(),tt(),tt()];g(r[0],ut),g(r[1],ht),g(r[2],ot),k(r[3],ut,ht),q(t,r,e)}function Y(t,e,r){var n,i=new Uint8Array(64),o=[tt(),tt(),tt(),tt()];for(r||et(e,32),L(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,K(o,i),F(t,o),n=0;n<32;n++)e[n+32]=t[n];return 0}function G(t,e){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,e[i]-=256*r;e[i]+=r,e[n]=0}for(r=0,i=0;i<32;i++)e[i]+=r-(e[31]>>4)*yt[i],r=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=r*yt[i]; +for(n=0;n<32;n++)e[n+1]+=e[n]>>8,t[n]=255&e[n]}function V(t){var e,r=new Float64Array(64);for(e=0;e<64;e++)r[e]=t[e];for(e=0;e<64;e++)t[e]=0;G(t,r)}function H(t,e,r,n){var i,o,a=new Uint8Array(64),f=new Uint8Array(64),s=new Uint8Array(64),u=new Float64Array(64),h=[tt(),tt(),tt(),tt()];L(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=r+64;for(i=0;i>7&&x(t[0],it,t[0]),k(t[3],t[0],t[1]),0)}function W(t,e,r,n){var i,a,f=new Uint8Array(32),s=new Uint8Array(64),u=[tt(),tt(),tt(),tt()],h=[tt(),tt(),tt(),tt()];if(a=-1,r<64)return-1;if(X(h,n))return-1;for(i=0;i>>13|r<<3),n=255&t[4]|(255&t[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&t[6]|(255&t[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&t[8]|(255&t[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&t[10]|(255&t[11])<<8,this.r[6]=8191&(o>>>14|a<<2),f=255&t[12]|(255&t[13])<<8,this.r[7]=8065&(a>>>11|f<<5),s=255&t[14]|(255&t[15])<<8,this.r[8]=8191&(f>>>8|s<<8),this.r[9]=s>>>5&127,this.pad[0]=255&t[16]|(255&t[17])<<8,this.pad[1]=255&t[18]|(255&t[19])<<8,this.pad[2]=255&t[20]|(255&t[21])<<8,this.pad[3]=255&t[22]|(255&t[23])<<8,this.pad[4]=255&t[24]|(255&t[25])<<8,this.pad[5]=255&t[26]|(255&t[27])<<8,this.pad[6]=255&t[28]|(255&t[29])<<8,this.pad[7]=255&t[30]|(255&t[31])<<8};lt.prototype.blocks=function(t,e,r){for(var n,i,o,a,f,s,u,h,c,d,l,p,b,v,y,g,m,w,_,M=this.fin?0:2048,S=this.h[0],E=this.h[1],A=this.h[2],x=this.h[3],k=this.h[4],I=this.h[5],B=this.h[6],O=this.h[7],R=this.h[8],P=this.h[9],T=this.r[0],j=this.r[1],C=this.r[2],U=this.r[3],N=this.r[4],L=this.r[5],z=this.r[6],D=this.r[7],F=this.r[8],q=this.r[9];r>=16;)n=255&t[e+0]|(255&t[e+1])<<8,S+=8191&n,i=255&t[e+2]|(255&t[e+3])<<8,E+=8191&(n>>>13|i<<3),o=255&t[e+4]|(255&t[e+5])<<8,A+=8191&(i>>>10|o<<6),a=255&t[e+6]|(255&t[e+7])<<8,x+=8191&(o>>>7|a<<9),f=255&t[e+8]|(255&t[e+9])<<8,k+=8191&(a>>>4|f<<12),I+=f>>>1&8191,s=255&t[e+10]|(255&t[e+11])<<8,B+=8191&(f>>>14|s<<2),u=255&t[e+12]|(255&t[e+13])<<8,O+=8191&(s>>>11|u<<5),h=255&t[e+14]|(255&t[e+15])<<8,R+=8191&(u>>>8|h<<8),P+=h>>>5|M,c=0,d=c,d+=S*T,d+=E*(5*q),d+=A*(5*F),d+=x*(5*D),d+=k*(5*z),c=d>>>13,d&=8191,d+=I*(5*L),d+=B*(5*N),d+=O*(5*U),d+=R*(5*C),d+=P*(5*j),c+=d>>>13,d&=8191,l=c,l+=S*j,l+=E*T,l+=A*(5*q),l+=x*(5*F),l+=k*(5*D),c=l>>>13,l&=8191,l+=I*(5*z),l+=B*(5*L),l+=O*(5*N),l+=R*(5*U),l+=P*(5*C),c+=l>>>13,l&=8191,p=c,p+=S*C,p+=E*j,p+=A*T,p+=x*(5*q),p+=k*(5*F),c=p>>>13,p&=8191,p+=I*(5*D),p+=B*(5*z),p+=O*(5*L),p+=R*(5*N),p+=P*(5*U),c+=p>>>13,p&=8191,b=c,b+=S*U,b+=E*C,b+=A*j,b+=x*T,b+=k*(5*q),c=b>>>13,b&=8191,b+=I*(5*F),b+=B*(5*D),b+=O*(5*z),b+=R*(5*L),b+=P*(5*N),c+=b>>>13,b&=8191,v=c,v+=S*N,v+=E*U,v+=A*C,v+=x*j,v+=k*T,c=v>>>13,v&=8191,v+=I*(5*q),v+=B*(5*F),v+=O*(5*D),v+=R*(5*z),v+=P*(5*L),c+=v>>>13,v&=8191,y=c,y+=S*L,y+=E*N,y+=A*U,y+=x*C,y+=k*j,c=y>>>13,y&=8191,y+=I*T,y+=B*(5*q),y+=O*(5*F),y+=R*(5*D),y+=P*(5*z),c+=y>>>13,y&=8191,g=c,g+=S*z,g+=E*L,g+=A*N,g+=x*U,g+=k*C,c=g>>>13,g&=8191,g+=I*j,g+=B*T,g+=O*(5*q),g+=R*(5*F),g+=P*(5*D),c+=g>>>13,g&=8191,m=c,m+=S*D,m+=E*z,m+=A*L,m+=x*N,m+=k*U,c=m>>>13,m&=8191,m+=I*C,m+=B*j,m+=O*T,m+=R*(5*q),m+=P*(5*F),c+=m>>>13,m&=8191,w=c,w+=S*F,w+=E*D,w+=A*z,w+=x*L,w+=k*N,c=w>>>13,w&=8191,w+=I*U,w+=B*C,w+=O*j,w+=R*T,w+=P*(5*q),c+=w>>>13,w&=8191,_=c,_+=S*q,_+=E*F,_+=A*D,_+=x*z,_+=k*L,c=_>>>13,_&=8191,_+=I*N,_+=B*U,_+=O*C,_+=R*j,_+=P*T,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+d|0,d=8191&c,c>>>=13,l+=c,S=d,E=l,A=p,x=b,k=v,I=y,B=g,O=m,R=w,P=_,e+=16,r-=16;this.h[0]=S,this.h[1]=E,this.h[2]=A,this.h[3]=x,this.h[4]=k,this.h[5]=I,this.h[6]=B,this.h[7]=O,this.h[8]=R,this.h[9]=P},lt.prototype.finish=function(t,e){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;t[e+0]=this.h[0]>>>0&255,t[e+1]=this.h[0]>>>8&255,t[e+2]=this.h[1]>>>0&255,t[e+3]=this.h[1]>>>8&255,t[e+4]=this.h[2]>>>0&255,t[e+5]=this.h[2]>>>8&255,t[e+6]=this.h[3]>>>0&255,t[e+7]=this.h[3]>>>8&255,t[e+8]=this.h[4]>>>0&255,t[e+9]=this.h[4]>>>8&255,t[e+10]=this.h[5]>>>0&255,t[e+11]=this.h[5]>>>8&255,t[e+12]=this.h[6]>>>0&255,t[e+13]=this.h[6]>>>8&255,t[e+14]=this.h[7]>>>0&255,t[e+15]=this.h[7]>>>8&255},lt.prototype.update=function(t,e,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(t,e,i),e+=i,r-=i),r){for(n=0;n=0},t.sign.keyPair=function(){var t=new Uint8Array(Rt),e=new Uint8Array(Pt);return Y(t,e),{publicKey:t,secretKey:e}},t.sign.keyPair.fromSecretKey=function(t){if($(t),t.length!==Pt)throw new Error("bad secret key size");for(var e=new Uint8Array(Rt),r=0;r \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nvar base64 = __webpack_require__(15)\nvar ieee754 = __webpack_require__(46)\nvar isArray = __webpack_require__(47)\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nvar core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(22);\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(7)\n , defined = __webpack_require__(6);\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_buffer__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_buffer___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_buffer__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bs58__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_bs58___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_bs58__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_clone__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_clone___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_clone__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_five_bells_condition__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_five_bells_condition__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_tweetnacl__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_tweetnacl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_tweetnacl__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_sha3__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_js_sha3___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_js_sha3__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_json_stable_stringify__);\n/* harmony export (immutable) */ __webpack_exports__[\"Ed25519Keypair\"] = Ed25519Keypair;\n/* harmony export (immutable) */ __webpack_exports__[\"makeEd25519Condition\"] = makeEd25519Condition;\n/* harmony export (immutable) */ __webpack_exports__[\"makeOutput\"] = makeOutput;\n/* harmony export (immutable) */ __webpack_exports__[\"makeCreateTransaction\"] = makeCreateTransaction;\n/* harmony export (immutable) */ __webpack_exports__[\"makeTransferTransaction\"] = makeTransferTransaction;\n/* harmony export (immutable) */ __webpack_exports__[\"signTransaction\"] = signTransaction;\n\n\n\n\n\n\n\n\n\n\n/**\n * @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys)\n * @type {Object}\n * @property {string} publicKey\n * @property {string} privateKey\n */\nfunction Ed25519Keypair() {\n var keyPair = __WEBPACK_IMPORTED_MODULE_5_tweetnacl___default.a.sign.keyPair();\n this.publicKey = __WEBPACK_IMPORTED_MODULE_2_bs58___default.a.encode(keyPair.publicKey);\n\n // tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer)\n this.privateKey = __WEBPACK_IMPORTED_MODULE_2_bs58___default.a.encode(keyPair.secretKey.slice(0, 32));\n}\n\n/**\n * Create an Ed25519 Cryptocondition from an Ed25519 public key to put into an Output of a Transaction\n * @param {string} publicKey base58 encoded Ed25519 public key for the recipient of the Transaction\n * @returns {object} Ed25519 Condition (that will need to wrapped in an Output)\n */\nfunction makeEd25519Condition(publicKey) {\n var publicKeyBuffer = new __WEBPACK_IMPORTED_MODULE_1_buffer__[\"Buffer\"](__WEBPACK_IMPORTED_MODULE_2_bs58___default.a.decode(publicKey));\n\n var ed25519Fulfillment = new __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default.a.Ed25519();\n ed25519Fulfillment.setPublicKey(publicKeyBuffer);\n var conditionUri = ed25519Fulfillment.getConditionUri();\n\n return {\n 'details': {\n 'signature': null,\n 'type_id': 4,\n 'type': 'fulfillment',\n 'bitmask': 32,\n 'public_key': publicKey\n },\n 'uri': conditionUri\n };\n}\n\n/**\n * Create an Output from a Condition.\n * Note: Assumes the given Condition was generated from a single public key (e.g. a Ed25519 Condition)\n * @param {object} condition Condition (e.g. a Ed25519 Condition from `makeEd25519Condition()`)\n * @param {number} amount Amount of the output\n * @returns {object} An Output usable in a Transaction\n */\nfunction makeOutput(condition) {\n var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n return {\n amount: amount,\n condition: condition,\n 'public_keys': [condition.details.public_key]\n };\n}\n\n/**\n * Generate a `CREATE` transaction holding the `asset`, `metadata`, and `outputs`, to be signed by\n * the `issuers`.\n * @param {object} asset Created asset's data\n * @param {object} metadata Metadata for the Transaction\n * @param {object[]} outputs Array of Output objects to add to the Transaction.\n * Think of these as the recipients of the asset after the transaction.\n * For `CREATE` Transactions, this should usually just be a list of\n * Outputs wrapping Ed25519 Conditions generated from the issuers' public\n * keys (so that the issuers are the recipients of the created asset).\n * @param {...string[]} issuers Public key of one or more issuers to the asset being created by this\n * Transaction.\n * Note: Each of the private keys corresponding to the given public\n * keys MUST be used later (and in the same order) when signing the\n * Transaction (`signTransaction()`).\n * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before\n * sending it off!\n */\nfunction makeCreateTransaction(asset, metadata, outputs) {\n var assetDefinition = {\n 'data': asset || null\n };\n\n for (var _len = arguments.length, issuers = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n issuers[_key - 3] = arguments[_key];\n }\n\n var inputs = issuers.map(function (issuer) {\n return makeInputTemplate([issuer]);\n });\n\n return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs);\n}\n\n/**\n * Generate a `TRANSFER` transaction holding the `asset`, `metadata`, and `outputs`, that fulfills\n * the `fulfilledOutputs` of `unspentTransaction`.\n * @param {object} unspentTransaction Previous Transaction you have control over (i.e. can fulfill\n * its Output Condition)\n * @param {object} metadata Metadata for the Transaction\n * @param {object[]} outputs Array of Output objects to add to the Transaction.\n * Think of these as the recipients of the asset after the transaction.\n * For `TRANSFER` Transactions, this should usually just be a list of\n * Outputs wrapping Ed25519 Conditions generated from the public keys of\n * the recipients.\n * @param {...number} fulfilledOutputs Indices of the Outputs in `unspentTransaction` that this\n * Transaction fulfills.\n * Note that the public keys listed in the fulfilled Outputs\n * must be used (and in the same order) to sign the Transaction\n * (`signTransaction()`).\n * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before\n * sending it off!\n */\nfunction makeTransferTransaction(unspentTransaction, metadata, outputs) {\n for (var _len2 = arguments.length, fulfilledOutputs = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n fulfilledOutputs[_key2 - 3] = arguments[_key2];\n }\n\n var inputs = fulfilledOutputs.map(function (outputIndex) {\n var fulfilledOutput = unspentTransaction.outputs[outputIndex];\n var transactionLink = {\n 'output': outputIndex,\n 'txid': unspentTransaction.id\n };\n\n return makeInputTemplate(fulfilledOutput.public_keys, transactionLink);\n });\n\n var assetLink = {\n 'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id : unspentTransaction.asset.id\n };\n\n return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs);\n}\n\n/**\n * Sign the given `transaction` with the given `privateKey`s, returning a new copy of `transaction`\n * that's been signed.\n * Note: Only generates Ed25519 Fulfillments. Thresholds and other types of Fulfillments are left as\n * an exercise for the user.\n * @param {object} transaction Transaction to sign. `transaction` is not modified.\n * @param {...string} privateKeys Private keys associated with the issuers of the `transaction`.\n * Looped through to iteratively sign any Input Fulfillments found in\n * the `transaction`.\n * @returns {object} The signed version of `transaction`.\n */\nfunction signTransaction(transaction) {\n for (var _len3 = arguments.length, privateKeys = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n privateKeys[_key3 - 1] = arguments[_key3];\n }\n\n var signedTx = __WEBPACK_IMPORTED_MODULE_3_clone___default()(transaction);\n signedTx.inputs.forEach(function (input, index) {\n var privateKey = privateKeys[index];\n var privateKeyBuffer = new __WEBPACK_IMPORTED_MODULE_1_buffer__[\"Buffer\"](__WEBPACK_IMPORTED_MODULE_2_bs58___default.a.decode(privateKey));\n var serializedTransaction = serializeTransactionIntoCanonicalString(transaction);\n\n var ed25519Fulfillment = new __WEBPACK_IMPORTED_MODULE_4_five_bells_condition___default.a.Ed25519();\n ed25519Fulfillment.sign(new __WEBPACK_IMPORTED_MODULE_1_buffer__[\"Buffer\"](serializedTransaction), privateKeyBuffer);\n var fulfillmentUri = ed25519Fulfillment.serializeUri();\n\n input.fulfillment = fulfillmentUri;\n });\n\n return signedTx;\n}\n\n/*********************\n * Transaction utils *\n *********************/\n\nfunction makeTransactionTemplate() {\n return {\n 'id': null,\n 'operation': null,\n 'outputs': [],\n 'inputs': [],\n 'metadata': null,\n 'asset': null,\n 'version': '0.9'\n };\n}\n\nfunction makeInputTemplate() {\n var publicKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var fulfills = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var fulfillment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n return {\n fulfillment: fulfillment,\n fulfills: fulfills,\n 'owners_before': publicKeys\n };\n}\n\nfunction makeTransaction(operation, asset) {\n var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var outputs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var inputs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n\n var tx = makeTransactionTemplate();\n tx.operation = operation;\n tx.asset = asset;\n tx.metadata = metadata;\n tx.inputs = inputs;\n tx.outputs = outputs;\n\n // Hashing must be done after, as the hash is of the Transaction (up to now)\n tx.id = hashTransaction(tx);\n return tx;\n}\n\n/****************\n * Crypto utils *\n ****************/\n\nfunction hashTransaction(transaction) {\n // Safely remove any tx id from the given transaction for hashing\n var tx = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({}, transaction);\n delete tx.id;\n\n return sha256Hash(serializeTransactionIntoCanonicalString(tx));\n}\n\nfunction sha256Hash(data) {\n return __WEBPACK_IMPORTED_MODULE_6_js_sha3___default.a.sha3_256.create().update(data).hex();\n}\n\nfunction serializeTransactionIntoCanonicalString(transaction) {\n // BigchainDB signs fulfillments by serializing transactions into a \"canonical\" format where\n // each fulfillment URI is removed before sorting the remaining keys\n var tx = __WEBPACK_IMPORTED_MODULE_3_clone___default()(transaction);\n tx.inputs.forEach(function (input) {\n input.fulfillment = null;\n });\n\n // Sort the keys\n return __WEBPACK_IMPORTED_MODULE_7_json_stable_stringify___default()(tx, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(18), __esModule: true };\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(12);\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Buffer) {// 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\nmodule.exports = function base (ALPHABET) {\n var ALPHABET_MAP = {}\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n\n // pre-compute lookup table\n for (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\n function encode (source) {\n if (source.length === 0) return ''\n\n var digits = [0]\n for (var i = 0; i < source.length; ++i) {\n for (var j = 0, carry = source[i]; j < digits.length; ++j) {\n carry += digits[j] << 8\n digits[j] = carry % BASE\n carry = (carry / BASE) | 0\n }\n\n while (carry > 0) {\n digits.push(carry % BASE)\n carry = (carry / BASE) | 0\n }\n }\n\n var string = ''\n\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]\n\n return string\n }\n\n function decodeUnsafe (string) {\n if (string.length === 0) return Buffer.allocUnsafe(0)\n\n var bytes = [0]\n for (var i = 0; i < string.length; i++) {\n var value = ALPHABET_MAP[string[i]]\n if (value === undefined) return\n\n for (var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * 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 (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {\n bytes.push(0)\n }\n\n return Buffer.from(bytes.reverse())\n }\n\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) return buffer\n\n throw new Error('Non-base' + BASE + ' character')\n }\n\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer))\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar basex = __webpack_require__(14)\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(Buffer) {var clone = (function() {\n'use strict';\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (parent instanceof nativeMap) {\n child = new nativeMap();\n } else if (parent instanceof nativeSet) {\n child = new nativeSet();\n } else if (parent instanceof nativePromise) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (parent instanceof Error) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (parent instanceof nativeMap) {\n var keyIterator = parent.keys();\n while(true) {\n var next = keyIterator.next();\n if (next.done) {\n break;\n }\n var keyChild = _clone(next.value, depth - 1);\n var valueChild = _clone(parent.get(next.value), depth - 1);\n child.set(keyChild, valueChild);\n }\n }\n if (parent instanceof nativeSet) {\n var iterator = parent.keys();\n while(true) {\n var next = iterator.next();\n if (next.done) {\n break;\n }\n var entryChild = _clone(next.value, depth - 1);\n child.add(entryChild);\n }\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4).Buffer))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(44);\nmodule.exports = __webpack_require__(5).Object.assign;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(3);\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(9)\n , toLength = __webpack_require__(40)\n , toIndex = __webpack_require__(39);\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(19);\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(3)\n , document = __webpack_require__(2).document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(2)\n , core = __webpack_require__(5)\n , ctx = __webpack_require__(23)\n , hide = __webpack_require__(28)\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(31)\n , createDesc = __webpack_require__(36);\nmodule.exports = __webpack_require__(0) ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(0) && !__webpack_require__(1)(function(){\n return Object.defineProperty(__webpack_require__(24)('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(34)\n , gOPS = __webpack_require__(32)\n , pIE = __webpack_require__(35)\n , toObject = __webpack_require__(41)\n , IObject = __webpack_require__(7)\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(1)(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(20)\n , IE8_DOM_DEFINE = __webpack_require__(29)\n , toPrimitive = __webpack_require__(42)\n , dP = Object.defineProperty;\n\nexports.f = __webpack_require__(0) ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(27)\n , toIObject = __webpack_require__(9)\n , arrayIndexOf = __webpack_require__(21)(false)\n , IE_PROTO = __webpack_require__(37)('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(33)\n , enumBugKeys = __webpack_require__(25);\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(38)('keys')\n , uid = __webpack_require__(43);\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(2)\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(8)\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(8)\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(6);\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(3);\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nvar id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(26);\n\n$export($export.S + $export.F, 'Object', {assign: __webpack_require__(30)});\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(t,e){ true?module.exports=e():\"function\"==typeof define&&define.amd?define(\"FiveBellsCondition\",[],e):\"object\"==typeof exports?exports.FiveBellsCondition=e():t.FiveBellsCondition=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,e,r){Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,\"a\",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=613)}([function(t,e,r){var n=r(4),i=r(32),o=r(14),a=r(15),f=r(33),s=\"prototype\",u=function(t,e,r){var h,c,d,l,p=t&u.F,b=t&u.G,v=t&u.S,y=t&u.P,m=t&u.B,g=b?n:v?n[e]||(n[e]={}):(n[e]||{})[s],w=b?i:i[e]||(i[e]={}),_=w[s]||(w[s]={});b&&(r=e);for(h in r)c=!p&&g&&void 0!==g[h],d=(c?g:r)[h],l=m&&c?f(d,n):y&&\"function\"==typeof d?f(Function.call,d):d,g&&a(g,h,d,t&u.U),w[h]!=d&&o(w,h,l),y&&_[h]!=d&&(_[h]=d)};n.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,r){\"use strict\";(function(t,n){function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,r){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|t}function v(e){return+e!=e&&(e=0),t.alloc(+e)}function y(e,r){if(t.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":case void 0:return V(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return Y(e).length;default:if(i)return V(e).length;r=(\"\"+r).toLowerCase(),i=!0}}function m(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if(r>>>=0,e>>>=0,r<=e)return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return T(this,e,r);case\"utf8\":case\"utf-8\":return B(this,e,r);case\"ascii\":return R(this,e,r);case\"latin1\":case\"binary\":return P(this,e,r);case\"base64\":return I(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return j(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function w(e,r,n,i,o){if(0===e.length)return-1;if(\"string\"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if(\"string\"==typeof r&&(r=t.from(r,i)),t.isBuffer(r))return 0===r.length?-1:_(e,r,n,i,o);if(\"number\"==typeof r)return r&=255,t.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):_(e,[r],n,i,o);throw new TypeError(\"val must be string, number or Buffer\")}function _(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,f=t.length,s=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),\"ucs2\"===n||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;a=2,f/=2,s/=2,r/=2}var u;if(i){var h=-1;for(u=r;uf&&(r=f-s),u=r;u>=0;u--){for(var c=!0,d=0;di&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+f<=r){var s,u,h,c;switch(f){case 1:o<128&&(a=o);break;case 2:s=t[i+1],128===(192&s)&&(c=(31&o)<<6|63&s,c>127&&(a=c));break;case 3:s=t[i+1],u=t[i+2],128===(192&s)&&128===(192&u)&&(c=(15&o)<<12|(63&s)<<6|63&u,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:s=t[i+1],u=t[i+2],h=t[i+3],128===(192&s)&&128===(192&u)&&128===(192&h)&&(c=(15&o)<<18|(63&s)<<12|(63&u)<<6|63&h,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,f=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=f}return O(n)}function O(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var r=\"\",n=0;nn)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function N(e,r,n,i,o,a){if(!t.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>o||re.length)throw new RangeError(\"Index out of range\")}function L(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function U(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function D(t,e,r,n,i){return i||z(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(t,e,r,n,23,4),r+4}function q(t,e,r,n,i){return i||z(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(t,e,r,n,52,8),r+8}function F(t){if(t=K(t).replace(et,\"\"),t.length<2)return\"\";for(;t.length%4!==0;)t+=\"=\";return t}function K(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function G(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function Y(t){return J.toByteArray(F(t))}function W(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t){return t!==t}var J=r(490),$=r(491),Q=r(492);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,r){return f(null,t,e,r)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,r){return u(null,t,e,r)},t.allocUnsafe=function(t){return h(null,t)},t.allocUnsafeSlow=function(t){return h(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,r){if(!t.isBuffer(e)||!t.isBuffer(r))throw new TypeError(\"Arguments must be Buffers\");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,a=Math.min(n,i);o0&&(t=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(t+=\" ... \")),\"\"},t.prototype.compare=function(e,r,n,i,o){if(!t.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var a=o-i,f=n-r,s=Math.min(a,f),u=this.slice(i,o),h=e.slice(r,n),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return M(this,t,e,r);case\"utf8\":case\"utf-8\":return S(this,t,e,r);case\"ascii\":return E(this,t,e,r);case\"latin1\":case\"binary\":return A(this,t,e,r);case\"base64\":return k(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,r){var n=this.length;e=~~e,r=void 0===r?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--e]*i;return n},t.prototype.readUInt8=function(t,e){return e||C(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||C(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||C(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||C(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},t.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||C(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(t,e){e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(t,e){return e||C(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||C(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;N(this,t,e,r,i,0)}var o=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+o]=t/a&255;return e+r},t.prototype.writeUInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},t.prototype.writeUInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeUInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeUInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):U(this,e,r,!0),r+4},t.prototype.writeUInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=0,a=1,f=0;for(this[e]=255&t;++o>0)-f&255;return e+r},t.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=r-1,a=1,f=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===f&&0!==this[e+o+1]&&(f=1),this[e+o]=(t/a>>0)-f&255;return e+r},t.prototype.writeInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},t.prototype.writeInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):U(this,e,r,!0),r+4},t.prototype.writeInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},t.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},t.prototype.writeDoubleLE=function(t,e,r){return q(this,t,e,!0,r)},t.prototype.writeDoubleBE=function(t,e,r){return q(this,t,e,!1,r)},t.prototype.copy=function(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(a<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if(\"number\"==typeof e)for(a=r;a0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(24);t.exports=function(t){return Object(n(t))}},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(9),i=r(37);t.exports=r(8)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(4),i=r(14),o=r(12),a=r(48)(\"src\"),f=\"toString\",s=Function[f],u=(\"\"+s).split(f);r(32).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,r,f){var s=\"function\"==typeof r;s&&(o(r,\"name\")||i(r,\"name\",e)),t[e]!==r&&(s&&(o(r,a)||i(r,a,t[e]?\"\"+t[e]:u.join(String(e)))),t===n?t[e]=r:f?t[e]?t[e]=r:i(t,e,r):(delete t[e],i(t,e,r)))})(Function.prototype,f,function(){return\"function\"==typeof this&&this[a]||s.call(this)})},function(t,e,r){var n=r(0),i=r(5),o=r(24),a=/\"/g,f=function(t,e,r,n){var i=String(o(t)),f=\"<\"+e;return\"\"!==r&&(f+=\" \"+r+'=\"'+String(n).replace(a,\""\")+'\"'),f+\">\"+i+\"\"};t.exports=function(t,e){var r={};r[t]=e(f),n(n.P+n.F*i(function(){var e=\"\"[t]('\"');return e!==e.toLowerCase()||e.split('\"').length>3}),\"String\",r)}},function(t,e,r){var n=r(65),i=r(24);t.exports=function(t){return n(i(t))}},function(t,e,r){(function(t){!function(t,e){\"use strict\";function n(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&(\"le\"!==e&&\"be\"!==e||(r=e,e=10),this._init(t||0,e||10,r||\"be\"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);\nreturn r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){\"use strict\";var n=e;n.version=r(465).version,n.utils=r(521),n.rand=r(522),n.hmacDRBG=r(519),n.curve=r(99),n.curves=r(512),n.ec=r(513),n.eddsa=r(516)},function(t,e,r){var n=r(66),i=r(37),o=r(17),a=r(29),f=r(12),s=r(174),u=Object.getOwnPropertyDescriptor;e.f=r(8)?u:function(t,e){if(t=o(t),e=a(e,!0),s)try{return u(t,e)}catch(t){}if(f(t,e))return i(!n.f.call(t,e),t[e])}},function(t,e,r){var n=r(12),i=r(11),o=r(133)(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,r){\"use strict\";var n=e;n.version=r(467).version,n.utils=r(558),n.rand=r(559),n.hmacDRBG=r(556),n.curve=r(104),n.curves=r(549),n.ec=r(550),n.eddsa=r(553)},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,r){var n=r(5);t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e){function r(){throw new Error(\"setTimeout has not been defined\")}function n(){throw new Error(\"clearTimeout has not been defined\")}function i(t){if(h===setTimeout)return setTimeout(t,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){b&&l&&(b=!1,l.length?p=l.concat(p):v=-1,p.length&&f())}function f(){if(!b){var t=i(a);b=!0;for(var e=p.length;e;){for(l=p,p=[];++v1)for(var r=1;r_;_++)if((d||_ in m)&&(b=m[_],v=g(b,_,y),t))if(r)M[_]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return _;case 2:M.push(b)}else if(h)return!1;return c?-1:u||h?h:M}}},function(t,e,r){var n=r(0),i=r(32),o=r(5);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],a={};a[t]=e(r),n(n.S+n.F*o(function(){r(1)}),\"Object\",a)}},function(t,e,r){var n=r(6);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){(function(t){!function(t,e){\"use strict\";function n(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&(\"le\"!==e&&\"be\"!==e||(r=e,e=10),this._init(t||0,e||10,r||\"be\"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){function n(){i.call(this)}t.exports=n;var i=r(110).EventEmitter,o=r(603);o(n,i),n.Readable=r(600),n.Writable=r(602),n.Duplex=r(595),n.Transform=r(601),n.PassThrough=r(599),n.Stream=n,n.prototype.pipe=function(t,e){function r(e){t.writable&&!1===t.write(e)&&u.pause&&u.pause()}function n(){u.readable&&u.resume&&u.resume()}function o(){h||(h=!0,t.end())}function a(){h||(h=!0,\"function\"==typeof t.destroy&&t.destroy())}function f(t){if(s(),0===i.listenerCount(this,\"error\"))throw t}function s(){u.removeListener(\"data\",r),t.removeListener(\"drain\",n),u.removeListener(\"end\",o),u.removeListener(\"close\",a),u.removeListener(\"error\",f),t.removeListener(\"error\",f),u.removeListener(\"end\",s),u.removeListener(\"close\",s),t.removeListener(\"close\",s)}var u=this;u.on(\"data\",r),t.on(\"drain\",n),t._isStdio||e&&e.end===!1||(u.on(\"end\",o),u.on(\"close\",a));var h=!1;return u.on(\"error\",f),t.on(\"error\",f),u.on(\"end\",s),u.on(\"close\",s),t.on(\"close\",s),t.emit(\"pipe\",u),t}},function(t,e){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,e,r){var n=r(13);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(190),i=r(0),o=r(87)(\"metadata\"),a=o.store||(o.store=new(r(193))),f=function(t,e,r){var i=a.get(t);if(!i){if(!r)return;a.set(t,i=new n)}var o=i.get(e);if(!o){if(!r)return;i.set(e,o=new n)}return o},s=function(t,e,r){var n=f(e,r,!1);return void 0!==n&&n.has(t)},u=function(t,e,r){var n=f(e,r,!1);return void 0===n?void 0:n.get(t)},h=function(t,e,r,n){f(r,n,!0).set(t,e)},c=function(t,e){var r=f(t,e,!1),n=[];return r&&r.forEach(function(t,e){n.push(e)}),n},d=function(t){return void 0===t||\"symbol\"==typeof t?t:String(t)},l=function(t){i(i.S,\"Reflect\",t)};t.exports={store:a,map:f,has:s,get:u,set:h,keys:c,key:d,exp:l}},function(t,e,r){\"use strict\";if(r(8)){var n=r(41),i=r(4),o=r(5),a=r(0),f=r(88),s=r(140),u=r(33),h=r(40),c=r(37),d=r(14),l=r(45),p=r(38),b=r(10),v=r(47),y=r(29),m=r(12),g=r(187),w=r(64),_=r(6),M=r(11),S=r(125),E=r(42),A=r(21),k=r(43).f,x=r(142),I=r(48),B=r(7),O=r(27),R=r(78),P=r(134),T=r(143),j=r(56),C=r(84),N=r(46),L=r(118),U=r(167),z=r(9),D=r(20),q=z.f,F=D.f,K=i.RangeError,G=i.TypeError,V=i.Uint8Array,H=\"ArrayBuffer\",X=\"Shared\"+H,Y=\"BYTES_PER_ELEMENT\",W=\"prototype\",Z=Array[W],J=s.ArrayBuffer,$=s.DataView,Q=O(0),tt=O(2),et=O(3),rt=O(4),nt=O(5),it=O(6),ot=R(!0),at=R(!1),ft=T.values,st=T.keys,ut=T.entries,ht=Z.lastIndexOf,ct=Z.reduce,dt=Z.reduceRight,lt=Z.join,pt=Z.sort,bt=Z.slice,vt=Z.toString,yt=Z.toLocaleString,mt=B(\"iterator\"),gt=B(\"toStringTag\"),wt=I(\"typed_constructor\"),_t=I(\"def_constructor\"),Mt=f.CONSTR,St=f.TYPED,Et=f.VIEW,At=\"Wrong length!\",kt=O(1,function(t,e){return Pt(P(t,t[_t]),e)}),xt=o(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),It=!!V&&!!V[W].set&&o(function(){new V(1).set({})}),Bt=function(t,e){if(void 0===t)throw G(At);var r=+t,n=b(t);if(e&&!g(r,n))throw K(At);return n},Ot=function(t,e){var r=p(t);if(r<0||r%e)throw K(\"Wrong offset!\");return r},Rt=function(t){if(_(t)&&St in t)return t;throw G(t+\" is not a typed array!\")},Pt=function(t,e){if(!(_(t)&&wt in t))throw G(\"It is not a typed array constructor!\");return new t(e)},Tt=function(t,e){return jt(P(t,t[_t]),e)},jt=function(t,e){for(var r=0,n=e.length,i=Pt(t,n);n>r;)i[r]=e[r++];return i},Ct=function(t,e,r){q(t,e,{get:function(){return this._d[r]}})},Nt=function(t){var e,r,n,i,o,a,f=M(t),s=arguments.length,h=s>1?arguments[1]:void 0,c=void 0!==h,d=x(f);if(void 0!=d&&!S(d)){for(a=d.call(f),n=[],e=0;!(o=a.next()).done;e++)n.push(o.value);f=n}for(c&&s>2&&(h=u(h,arguments[2],2)),e=0,r=b(f.length),i=Pt(this,r);r>e;e++)i[e]=c?h(f[e],e):f[e];return i},Lt=function(){for(var t=0,e=arguments.length,r=Pt(this,e);e>t;)r[t]=arguments[t++];return r},Ut=!!V&&o(function(){yt.call(new V(1))}),zt=function(){return yt.apply(Ut?bt.call(Rt(this)):Rt(this),arguments)},Dt={copyWithin:function(t,e){return U.call(Rt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return rt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return L.apply(Rt(this),arguments)},filter:function(t){return Tt(this,tt(Rt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return nt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return it(Rt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Rt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return at(Rt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return ot(Rt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return lt.apply(Rt(this),arguments)},lastIndexOf:function(t){return ht.apply(Rt(this),arguments)},map:function(t){return kt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Rt(this),arguments)},reduceRight:function(t){return dt.apply(Rt(this),arguments)},reverse:function(){for(var t,e=this,r=Rt(e).length,n=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function(t){return pt.call(Rt(this),t)},subarray:function(t,e){var r=Rt(this),n=r.length,i=v(t,n);return new(P(r,r[_t]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,b((void 0===e?n:v(e,n))-i))}},qt=function(t,e){return Tt(this,bt.call(Rt(this),t,e))},Ft=function(t){Rt(this);var e=Ot(arguments[1],1),r=this.length,n=M(t),i=b(n.length),o=0;if(i+e>r)throw K(At);for(;o255?255:255&n),i.v[p](r*e+i.o,n,xt)},B=function(t,e){q(t,e,{get:function(){return x(this,e)},set:function(t){return I(this,e,t)},enumerable:!0})};g?(v=r(function(t,r,n,i){h(t,v,u,\"_d\");var o,a,f,s,c=0,l=0;if(_(r)){if(!(r instanceof J||(s=w(r))==H||s==X))return St in r?jt(v,r):Nt.call(v,r);o=r,l=Ot(n,e);var p=r.byteLength;if(void 0===i){if(p%e)throw K(At);if(a=p-l,a<0)throw K(At)}else if(a=b(i)*e,a+l>p)throw K(At);f=a/e}else f=Bt(r,!0),a=f*e,o=new J(a);for(d(t,\"_d\",{b:o,o:l,l:a,e:f,v:new $(o)});c0?n:r)(t)}},function(t,e){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+\": incorrect invocation!\");return t}},function(t,e){t.exports=!1},function(t,e,r){var n=r(3),i=r(180),o=r(121),a=r(133)(\"IE_PROTO\"),f=function(){},s=\"prototype\",u=function(){var t,e=r(120)(\"iframe\"),n=o.length,i=\"<\",a=\">\";for(e.style.display=\"none\",r(123).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(i+\"script\"+a+\"document.F=Object\"+i+\"/script\"+a),t.close(),u=t.F;n--;)delete u[s][o[n]];return u()};t.exports=Object.create||function(t,e){var r;return null!==t?(f[s]=n(t),r=new f,f[s]=null,r[a]=t):r=u(),void 0===e?r:i(r,e)}},function(t,e,r){var n=r(182),i=r(121).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},function(t,e,r){var n=r(182),i=r(121);t.exports=Object.keys||function(t){return n(t,i)}},function(t,e,r){var n=r(15);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},function(t,e,r){\"use strict\";var n=r(4),i=r(9),o=r(8),a=r(7)(\"species\");t.exports=function(t){var e=n[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,r){var n=r(38),i=Math.max,o=Math.min;t.exports=function(t,e){return t=n(t),t<0?i(t+e,0):o(t,e)}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+n).toString(36))}},function(t,e,r){var n=e;n.utils=r(527),n.common=r(523),n.sha=r(526),n.ripemd=r(525),n.hmac=r(524),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){var n=e;n.utils=r(564),n.common=r(560),n.sha=r(563),n.ripemd=r(562),n.hmac=r(561),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(u.call(this,t),h.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once(\"end\",i)):new n(t)}function i(){this.allowHalfOpen||this._writableState.ended||f(o,this)}function o(t){t.end()}var a=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=n;var f=r(157),s=r(73);s.inherits=r(74);var u=r(250),h=r(155);s.inherits(n,u);for(var c=a(h.prototype),d=0;d=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&n<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=\"\"}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,n=e.charCodeAt(i);if(n>=55296&&n<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},u.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},u.prototype.end=function(t){var e=\"\";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\nreturn!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){var n=r(7)(\"unscopables\"),i=Array.prototype;void 0==i[n]&&r(14)(i,n,{}),t.exports=function(t){i[n][t]=!0}},function(t,e,r){var n=r(33),i=r(176),o=r(125),a=r(3),f=r(10),s=r(142),u={},h={},e=t.exports=function(t,e,r,c,d){var l,p,b,v,y=d?function(){return t}:s(t),m=n(r,c,e?2:1),g=0;if(\"function\"!=typeof y)throw TypeError(t+\" is not iterable!\");if(o(y)){for(l=f(t.length);l>g;g++)if(v=e?m(a(p=t[g])[0],p[1]):m(t[g]),v===u||v===h)return v}else for(b=y.call(t);!(p=b.next()).done;)if(v=i(b,m,p.value,e),v===u||v===h)return v};e.BREAK=u,e.RETURN=h},function(t,e){t.exports={}},function(t,e,r){var n=r(9).f,i=r(12),o=r(7)(\"toStringTag\");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},function(t,e,r){var n=r(0),i=r(24),o=r(5),a=r(138),f=\"[\"+a+\"]\",s=\"​…\",u=RegExp(\"^\"+f+f+\"*\"),h=RegExp(f+f+\"*$\"),c=function(t,e,r){var i={},f=o(function(){return!!a[t]()||s[t]()!=s}),u=i[t]=f?e(d):a[t];r&&(i[r]=u),n(n.P+n.F*f,\"String\",i)},d=c.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(u,\"\")),2&e&&(t=t.replace(h,\"\")),t};t.exports=c},function(t,e,r){\"use strict\";(function(e){function n(t){u.call(this,\"digest\"),this._hash=t,this.buffers=[]}function i(t){u.call(this,\"digest\"),this._hash=t}var o=r(2),a=r(105),f=r(567),s=r(568),u=r(566);o(n,u),n.prototype._update=function(t){this.buffers.push(t)},n.prototype._final=function(){var t=e.concat(this.buffers),r=this._hash(t);return this.buffers=null,r},o(i,u),i.prototype._update=function(t){this._hash.update(t)},i.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return t=t.toLowerCase(),\"md5\"===t?new n(a):\"rmd160\"===t||\"ripemd160\"===t?new n(f):new i(s(t))}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function r(t,r){this._block=new e(t),this._finalSize=r,this._blockSize=t,this._len=0,this._s=0}r.prototype.update=function(t,r){\"string\"==typeof t&&(r=r||\"utf8\",t=new e(t,r));for(var n=this._len+=t.length,i=this._s||0,o=0,a=this._block;i=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(e,this._blockSize-4);var r=this._update(this._block)||this._hash();return t?r.toString(t):r},r.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},t.exports=r}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e,r,n){function i(){throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\")}function o(t,i){if(t>65536)throw new Error(\"requested too many random bytes\");var o=new e.Uint8Array(t);t>0&&a.getRandomValues(o);var f=new r(o.buffer);return\"function\"==typeof i?n.nextTick(function(){i(null,f)}):f}var a=e.crypto||e.msCrypto;a&&a.getRandomValues?t.exports=o:t.exports=i}).call(e,r(39),r(1).Buffer,r(26))},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return Object.defineProperty(i,\"message\",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):\"\"}),Object.defineProperty(i,\"name\",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},\nd.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){var n=e;n.Reporter=r(582).Reporter,n.DecoderBuffer=r(234).DecoderBuffer,n.EncoderBuffer=r(234).EncoderBuffer,n.Node=r(581)},function(t,e,r){(function(e){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),o=0;ot.MAX_SAFE_BITMASK)throw new Error(\"Bitmask too large to be safely represented\");if(this.getBitmask()&~t.SUPPORTED_BITMASK)throw new Error(\"Condition requested unsupported feature suites\");if(this.getMaxFulfillmentLength()>t.MAX_FULFILLMENT_LENGTH)throw new Error(\"Condition requested too large of a max fulfillment size\");return!0}}],[{key:\"fromUri\",value:function(e){if(e instanceof t)return e;if(\"string\"!=typeof e)throw new Error(\"Serialized condition must be a string\");var r=e.split(\":\");if(\"cc\"!==r[0])throw new a('Serialized condition must start with \"cc:\"');if(!t.REGEX_STRICT.exec(e))throw new f(\"Invalid condition format\");var n=new t;return n.setTypeId(parseInt(r[1],16)),n.setBitmask(parseInt(r[2],16)),n.setHash(u.decode(r[3])),n.setMaxFulfillmentLength(parseInt(r[4],10)),n}},{key:\"fromBinary\",value:function(e){e=h.from(e);var r=new t;return r.parseBinary(e),r}}]),t}();b.MAX_SAFE_BITMASK=4294967295,b.SUPPORTED_BITMASK=63,b.MAX_FULFILLMENT_LENGTH=65535,b.REGEX=l,b.REGEX_STRICT=p,t.exports=b}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rh;)if(f=s[h++],f!=f)return!0}else for(;u>h;h++)if((t||h in s)&&s[h]===r)return t||h||0;return!t&&-1}}},function(t,e,r){\"use strict\";var n=r(4),i=r(0),o=r(15),a=r(45),f=r(36),s=r(55),u=r(40),h=r(6),c=r(5),d=r(84),l=r(57),p=r(124);t.exports=function(t,e,r,b,v,y){var m=n[t],g=m,w=v?\"set\":\"add\",_=g&&g.prototype,M={},S=function(t){var e=_[t];o(_,t,\"delete\"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:\"has\"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:\"get\"==t?function(t){return y&&!h(t)?void 0:e.call(this,0===t?0:t)}:\"add\"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,r){return e.call(this,0===t?0:t,r),this})};if(\"function\"==typeof g&&(y||_.forEach&&!c(function(){(new g).entries().next()}))){var E=new g,A=E[w](y?{}:-0,1)!=E,k=c(function(){E.has(1)}),x=d(function(t){new g(t)}),I=!y&&c(function(){for(var t=new g,e=5;e--;)t[w](e,e);return!t.has(-0)});x||(g=e(function(e,r){u(e,g,t);var n=p(new m,e,g);return void 0!=r&&s(r,v,n[w],n),n}),g.prototype=_,_.constructor=g),(k||I)&&(S(\"delete\"),S(\"has\"),v&&S(\"get\")),(I||A)&&S(w),y&&_.clear&&delete _.clear}else g=b.getConstructor(e,t,v,w),a(g.prototype,r),f.NEED=!0;return l(g,t),M[t]=g,i(i.G+i.W+i.F*(g!=m),M),y||b.setStrong(g,t,v),g}},function(t,e,r){\"use strict\";var n=r(14),i=r(15),o=r(5),a=r(24),f=r(7);t.exports=function(t,e,r){var s=f(t),u=r(a,s,\"\"[t]),h=u[0],c=u[1];o(function(){var e={};return e[s]=function(){return 7},7!=\"\"[t](e)})&&(i(String.prototype,t,h),n(RegExp.prototype,s,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},function(t,e,r){\"use strict\";var n=r(3);t.exports=function(){var t=n(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e){t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},function(t,e,r){var n=r(6),i=r(23),o=r(7)(\"match\");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:\"RegExp\"==i(t))}},function(t,e,r){var n=r(7)(\"iterator\"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},t(o)}catch(t){}return r}},function(t,e,r){t.exports=r(41)||!r(5)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete r(4)[t]})},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(4),i=\"__core-js_shared__\",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){for(var n,i=r(4),o=r(14),a=r(48),f=a(\"typed_array\"),s=a(\"view\"),u=!(!i.ArrayBuffer||!i.DataView),h=u,c=0,d=9,l=\"Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array\".split(\",\");cf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];\nreturn!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e){e[\"aes-128-ecb\"]={cipher:\"AES\",key:128,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-192-ecb\"]={cipher:\"AES\",key:192,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-256-ecb\"]={cipher:\"AES\",key:256,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-128-cbc\"]={cipher:\"AES\",key:128,iv:16,mode:\"CBC\",type:\"block\"},e[\"aes-192-cbc\"]={cipher:\"AES\",key:192,iv:16,mode:\"CBC\",type:\"block\"},e[\"aes-256-cbc\"]={cipher:\"AES\",key:256,iv:16,mode:\"CBC\",type:\"block\"},e.aes128=e[\"aes-128-cbc\"],e.aes192=e[\"aes-192-cbc\"],e.aes256=e[\"aes-256-cbc\"],e[\"aes-128-cfb\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-192-cfb\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-256-cfb\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-128-cfb8\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-192-cfb8\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-256-cfb8\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-128-cfb1\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-192-cfb1\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-256-cfb1\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-128-ofb\"]={cipher:\"AES\",key:128,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-192-ofb\"]={cipher:\"AES\",key:192,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-256-ofb\"]={cipher:\"AES\",key:256,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-128-ctr\"]={cipher:\"AES\",key:128,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-192-ctr\"]={cipher:\"AES\",key:192,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-256-ctr\"]={cipher:\"AES\",key:256,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-128-gcm\"]={cipher:\"AES\",key:128,iv:12,mode:\"GCM\",type:\"auth\"},e[\"aes-192-gcm\"]={cipher:\"AES\",key:192,iv:12,mode:\"GCM\",type:\"auth\"},e[\"aes-256-gcm\"]={cipher:\"AES\",key:256,iv:12,mode:\"GCM\",type:\"auth\"}},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(67);e.encrypt=function(e,r){for(;e._cache.lengthf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(69);e.encrypt=function(e,r){for(;e._cache.length>5]|=128<>>9<<4)+14]=e;for(var r=1732584193,n=-271733879,i=-1732584194,h=271733878,c=0;c>16)+(e>>16)+(r>>16);return n<<16|65535&r}function h(t,e){return t<>>32-e}var c=r(565);t.exports=function(t){return c.hash(t,n,16)}},function(t,e,r){var n=e;n.bignum=r(70),n.define=r(580).define,n.base=r(71),n.constants=r(235),n.decoders=r(584),n.encoders=r(586)},function(t,e,r){(function(t){function r(t){var e,r;return e=t>f||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(72);e.encrypt=function(e,r){for(;e._cache.length0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[t].length),\"function\"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),i||(i=!0,e.apply(this,arguments))}if(!n(e))throw TypeError(\"listener must be a function\");var i=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,i,a,f;if(!n(e))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,i=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit(\"removeListener\",t,e);else if(o(r)){for(f=a;f-- >0;)if(r[f]===e||r[f].listener&&r[f].listener===e){i=f;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(i,1),this._events.removeListener&&this.emit(\"removeListener\",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)\"removeListener\"!==e&&this.removeAllListeners(e);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(r=this._events[t],n(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name=\"InvalidAsn1Error\",e.message=t||\"\",e}}},function(t,e){t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rNumber.MAX_SAFE_INTEGER)throw new o(\"Type \"+e+\" is not supported\");var r=!0,n=!1,i=void 0;try{for(var a,f=t.registeredTypes[Symbol.iterator]();!(r=(a=f.next()).done);r=!0){var s=a.value;if(e===s.typeId)return s.Class}}catch(t){n=!0,i=t}finally{try{!r&&f.return&&f.return()}finally{if(n)throw i}}throw new o(\"Type \"+e+\" is not supported\")}},{key:\"registerType\",value:function(e){t.registeredTypes.push({typeId:e.TYPE_ID,Class:e})}}]),t}();a.registeredTypes=[],t.exports=a},function(t,e,r){\"use strict\";(function(e){function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var n=function(){function t(t,e){for(var r=0;r1?arguments[1]:void 0,r),s=a>2?arguments[2]:void 0,u=void 0===s?r:i(s,r);u>f;)e[f++]=t;return e}},function(t,e,r){\"use strict\";var n=r(9),i=r(37);t.exports=function(t,e,r){e in t?n.f(t,e,i(0,r)):t[e]=r}},function(t,e,r){var n=r(6),i=r(4).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,r){var n=r(7)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(r){try{return e[n]=!1,!\"/./\"[t](e)}catch(t){}}return!0}},function(t,e,r){t.exports=r(4).document&&document.documentElement},function(t,e,r){var n=r(6),i=r(132).set;t.exports=function(t,e,r){var o,a=e.constructor;return a!==r&&\"function\"==typeof a&&(o=a.prototype)!==r.prototype&&n(o)&&i&&i(t,o),t}},function(t,e,r){var n=r(56),i=r(7)(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[i]===t)}},function(t,e,r){var n=r(23);t.exports=Array.isArray||function(t){return\"Array\"==n(t)}},function(t,e,r){\"use strict\";var n=r(42),i=r(37),o=r(57),a={};r(14)(a,r(7)(\"iterator\"),function(){return this}),t.exports=function(t,e,r){t.prototype=n(a,{next:i(1,r)}),o(t,e+\" Iterator\")}},function(t,e,r){\"use strict\";var n=r(41),i=r(0),o=r(15),a=r(14),f=r(12),s=r(56),u=r(127),h=r(57),c=r(21),d=r(7)(\"iterator\"),l=!([].keys&&\"next\"in[].keys()),p=\"@@iterator\",b=\"keys\",v=\"values\",y=function(){return this};t.exports=function(t,e,r,m,g,w,_){u(r,e,m);var M,S,E,A=function(t){if(!l&&t in B)return B[t];switch(t){case b:return function(){return new r(this,t)};case v:return function(){return new r(this,t)}}return function(){return new r(this,t)}},k=e+\" Iterator\",x=g==v,I=!1,B=t.prototype,O=B[d]||B[p]||g&&B[g],R=O||A(g),P=g?x?A(\"entries\"):R:void 0,T=\"Array\"==e?B.entries||O:O;if(T&&(E=c(T.call(new t)),E!==Object.prototype&&(h(E,k,!0),n||f(E,d)||a(E,d,y))),x&&O&&O.name!==v&&(I=!0,R=function(){return O.call(this)}),n&&!_||!l&&!I&&B[d]||a(B,d,R),s[e]=R,s[k]=y,g)if(M={values:x?R:A(v),keys:w?R:A(b),entries:P},_)for(S in M)S in B||o(B,S,M[S]);else i(i.P+i.F*(l||I),e,M);return M}},function(t,e){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||r(-2e-17)!=-2e-17?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,r){var n=r(4),i=r(139).set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,f=n.Promise,s=\"process\"==r(23)(a);t.exports=function(){var t,e,r,u=function(){var n,i;for(s&&(n=a.domain)&&n.exit();t;){i=t.fn,t=t.next;try{i()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(s)r=function(){a.nextTick(u)};else if(o){var h=!0,c=document.createTextNode(\"\");new o(u).observe(c,{characterData:!0}),r=function(){c.data=h=!h}}else if(f&&f.resolve){var d=f.resolve();r=function(){d.then(u)}}else r=function(){i.call(n,u)};return function(n){var i={fn:n,next:void 0};e&&(e.next=i),t||(t=i,r()),e=i}}},function(t,e,r){var n=r(6),i=r(3),o=function(t,e){if(i(t),!n(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,n){try{n=r(33)(Function.call,r(20).f(Object.prototype,\"__proto__\").set,2),n(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,r){return o(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check:o}},function(t,e,r){var n=r(87)(\"keys\"),i=r(48);t.exports=function(t){return n[t]||(n[t]=i(t))}},function(t,e,r){var n=r(3),i=r(13),o=r(7)(\"species\");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||void 0==(r=n(a)[o])?e:i(r)}},function(t,e,r){var n=r(38),i=r(24);t.exports=function(t){return function(e,r){var o,a,f=String(i(e)),s=n(r),u=f.length;return s<0||s>=u?t?\"\":void 0:(o=f.charCodeAt(s),o<55296||o>56319||s+1===u||(a=f.charCodeAt(s+1))<56320||a>57343?t?f.charAt(s):o:t?f.slice(s,s+2):(o-55296<<10)+(a-56320)+65536)}}},function(t,e,r){var n=r(83),i=r(24);t.exports=function(t,e,r){if(n(e))throw TypeError(\"String#\"+r+\" doesn't accept regex!\");return String(i(t))}},function(t,e,r){\"use strict\";var n=r(38),i=r(24);t.exports=function(t){var e=String(i(this)),r=\"\",o=n(t);if(o<0||o==1/0)throw RangeError(\"Count can't be negative\");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(r+=e);return r}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,r){var n,i,o,a=r(33),f=r(82),s=r(123),u=r(120),h=r(4),c=h.process,d=h.setImmediate,l=h.clearImmediate,p=h.MessageChannel,b=0,v={},y=\"onreadystatechange\",m=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},g=function(t){m.call(t.data)};d&&l||(d=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return v[++b]=function(){f(\"function\"==typeof t?t:Function(t),e)},n(b),b},l=function(t){delete v[t]},\"process\"==r(23)(c)?n=function(t){c.nextTick(a(m,t,1))}:p?(i=new p,o=i.port2,i.port1.onmessage=g,n=a(o.postMessage,o,1)):h.addEventListener&&\"function\"==typeof postMessage&&!h.importScripts?(n=function(t){h.postMessage(t+\"\",\"*\")},h.addEventListener(\"message\",g,!1)):n=y in u(\"script\")?function(t){s.appendChild(u(\"script\"))[y]=function(){s.removeChild(this),m.call(t)}}:function(t){setTimeout(a(m,t,1),0)}),t.exports={set:d,clear:l}},function(t,e,r){\"use strict\";var n=r(4),i=r(8),o=r(41),a=r(88),f=r(14),s=r(45),u=r(5),h=r(40),c=r(38),d=r(10),l=r(43).f,p=r(9).f,b=r(118),v=r(57),y=\"ArrayBuffer\",m=\"DataView\",g=\"prototype\",w=\"Wrong length!\",_=\"Wrong index!\",M=n[y],S=n[m],E=n.Math,A=n.RangeError,k=n.Infinity,x=M,I=E.abs,B=E.pow,O=E.floor,R=E.log,P=E.LN2,T=\"buffer\",j=\"byteLength\",C=\"byteOffset\",N=i?\"_b\":T,L=i?\"_l\":j,U=i?\"_o\":C,z=function(t,e,r){\nvar n,i,o,a=Array(r),f=8*r-e-1,s=(1<>1,h=23===e?B(2,-24)-B(2,-77):0,c=0,d=t<0||0===t&&1/t<0?1:0;for(t=I(t),t!=t||t===k?(i=t!=t?1:0,n=s):(n=O(R(t)/P),t*(o=B(2,-n))<1&&(n--,o*=2),t+=n+u>=1?h/o:h*B(2,1-u),t*o>=2&&(n++,o/=2),n+u>=s?(i=0,n=s):n+u>=1?(i=(t*o-1)*B(2,e),n+=u):(i=t*B(2,u-1)*B(2,e),n=0));e>=8;a[c++]=255&i,i/=256,e-=8);for(n=n<0;a[c++]=255&n,n/=256,f-=8);return a[--c]|=128*d,a},D=function(t,e,r){var n,i=8*r-e-1,o=(1<>1,f=i-7,s=r-1,u=t[s--],h=127&u;for(u>>=7;f>0;h=256*h+t[s],s--,f-=8);for(n=h&(1<<-f)-1,h>>=-f,f+=e;f>0;n=256*n+t[s],s--,f-=8);if(0===h)h=1-a;else{if(h===o)return n?NaN:u?-k:k;n+=B(2,e),h-=a}return(u?-1:1)*n*B(2,h-e)},q=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},F=function(t){return[255&t]},K=function(t){return[255&t,t>>8&255]},G=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},V=function(t){return z(t,52,8)},H=function(t){return z(t,23,4)},X=function(t,e,r){p(t[g],e,{get:function(){return this[r]}})},Y=function(t,e,r,n){var i=+r,o=c(i);if(i!=o||o<0||o+e>t[L])throw A(_);var a=t[N]._b,f=o+t[U],s=a.slice(f,f+e);return n?s:s.reverse()},W=function(t,e,r,n,i,o){var a=+r,f=c(a);if(a!=f||f<0||f+e>t[L])throw A(_);for(var s=t[N]._b,u=f+t[U],h=n(+i),d=0;dtt;)(J=Q[tt++])in M||f(M,J,x[J]);o||($.constructor=M)}var et=new S(new M(2)),rt=S[g].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),!et.getInt8(0)&&et.getInt8(1)||s(S[g],{setInt8:function(t,e){rt.call(this,t,e<<24>>24)},setUint8:function(t,e){rt.call(this,t,e<<24>>24)}},!0)}else M=function(t){var e=Z(this,t);this._b=b.call(Array(e),0),this[L]=e},S=function(t,e,r){h(this,S,m),h(t,M,m);var n=t[L],i=c(e);if(i<0||i>n)throw A(\"Wrong offset!\");if(r=void 0===r?n-i:d(r),i+r>n)throw A(w);this[N]=t,this[U]=i,this[L]=r},i&&(X(M,j,\"_l\"),X(S,T,\"_b\"),X(S,j,\"_l\"),X(S,C,\"_o\")),s(S[g],{getInt8:function(t){return Y(this,1,t)[0]<<24>>24},getUint8:function(t){return Y(this,1,t)[0]},getInt16:function(t){var e=Y(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Y(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return q(Y(this,4,t,arguments[1]))},getUint32:function(t){return q(Y(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return D(Y(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return D(Y(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){W(this,1,t,F,e)},setUint8:function(t,e){W(this,1,t,F,e)},setInt16:function(t,e){W(this,2,t,K,e,arguments[2])},setUint16:function(t,e){W(this,2,t,K,e,arguments[2])},setInt32:function(t,e){W(this,4,t,G,e,arguments[2])},setUint32:function(t,e){W(this,4,t,G,e,arguments[2])},setFloat32:function(t,e){W(this,4,t,H,e,arguments[2])},setFloat64:function(t,e){W(this,8,t,V,e,arguments[2])}});v(M,y),v(S,m),f(S[g],a.VIEW,!0),e[y]=M,e[m]=S},function(t,e,r){var n=r(4),i=r(32),o=r(41),a=r(189),f=r(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:n.Symbol||{});\"_\"==t.charAt(0)||t in e||f(e,t,{value:a.f(t)})}},function(t,e,r){var n=r(64),i=r(7)(\"iterator\"),o=r(56);t.exports=r(32).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t[\"@@iterator\"]||o[n(t)]}},function(t,e,r){\"use strict\";var n=r(54),i=r(177),o=r(56),a=r(17);t.exports=r(128)(Array,\"Array\",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):\"keys\"==e?i(0,r):\"values\"==e?i(0,t[r]):i(0,[r,t[r]])},\"values\"),o.Arguments=o.Array,n(\"keys\"),n(\"values\"),n(\"entries\")},function(t,e,r){t.exports=!r(199)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e,r){\"use strict\";e.utils=r(505),e.Cipher=r(502),e.DES=r(503),e.CBC=r(501),e.EDE=r(504)},function(t,e,r){(function(e){function n(t,r,n,o){e.isBuffer(t)||(t=new e(t,\"binary\")),r&&!e.isBuffer(r)&&(r=new e(r,\"binary\")),n/=8,o=o||0;for(var a,f,s=0,u=0,h=new e(n),c=new e(o),d=0,l=[];;){if(d++>0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;fn?r=i(t).update(r).digest():r.length=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){(function(t,n){var i=r(149),o=r(576);e.pbkdf2=function(t,r,n,i,a,f){if(\"function\"==typeof a&&(f=a,a=void 0),o(n,i),\"function\"!=typeof f)throw new Error(\"No callback provided to pbkdf2\");setTimeout(function(){f(null,e.pbkdf2Sync(t,r,n,i,a))})};var a;if(t.browser)a=\"utf-8\";else{var f=parseInt(t.version.split(\".\")[0].slice(1),10);a=f>=6?\"utf-8\":\"binary\"}e.pbkdf2Sync=function(t,e,r,f,s){n.isBuffer(t)||(t=new n(t,a)),n.isBuffer(e)||(e=new n(e,a)),o(r,f),s=s||\"sha1\";var u,h=1,c=new n(f),d=new n(e.length+4);e.copy(d,0,0,e.length);for(var l,p,b=1;b<=h;b++){d.writeUInt32BE(b,e.length);var v=i(s,t).update(d).digest();u||(u=v.length,p=new n(u),h=Math.ceil(f/u),l=f-(h-1)*u),v.copy(p,0,0,u);for(var y=1;y0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f-1?n:E;f.WritableState=a;var k=r(73);k.inherits=r(74);var x,I={deprecate:r(598)};!function(){try{x=r(31)}catch(t){}finally{x||(x=r(110).EventEmitter)}}();var B=r(1).Buffer,O=r(156);k.inherits(f,x);var R;a.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(a.prototype,\"buffer\",{get:I.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\")})}catch(t){}}();var R;f.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},f.prototype.write=function(t,e,r){var n=this._writableState,o=!1;return\"function\"==typeof e&&(r=e,e=null),B.isBuffer(t)?e=\"buffer\":e||(e=n.defaultEncoding),\"function\"!=typeof r&&(r=i),n.ended?s(this,r):u(this,n,t,r)&&(n.pendingcb++,o=c(this,n,t,e,r)),o},f.prototype.cork=function(){var t=this._writableState;t.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||m(this,t))},f.prototype.setDefaultEncoding=function(t){if(\"string\"==typeof t&&(t=t.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((t+\"\").toLowerCase())>-1))throw new TypeError(\"Unknown encoding: \"+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,r){r(new Error(\"not implemented\"))},f.prototype._writev=null,f.prototype.end=function(t,e,r){var n=this._writableState;\"function\"==typeof t?(r=t,t=null,e=null):\"function\"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||M(this,n,r)}}).call(e,r(26),r(158).setImmediate)},function(t,e,r){\"use strict\";(function(t){var n=r(1),i=n.Buffer,o=n.SlowBuffer,a=n.kMaxLength||2147483647;e.alloc=function(t,e,r){if(\"function\"==typeof i.alloc)return i.alloc(t,e,r);if(\"number\"==typeof r)throw new TypeError(\"encoding must not be number\");if(\"number\"!=typeof t)throw new TypeError(\"size must be a number\");if(t>a)throw new RangeError(\"size is too large\");var n=r,o=e;void 0===o&&(n=void 0,o=0);var f=new i(t);if(\"string\"==typeof o)for(var s=new i(o,n),u=s.length,h=-1;++ha)throw new RangeError(\"size is too large\");return new i(t)},e.from=function(e,r,n){if(\"function\"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,r,n);if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');if(\"string\"==typeof e)return new i(e,r);if(\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var o=r;if(1===arguments.length)return new i(e);\"undefined\"==typeof o&&(o=0);var a=n;if(\"undefined\"==typeof a&&(a=e.byteLength-o),o>=e.byteLength)throw new RangeError(\"'offset' is out of bounds\");if(a>e.byteLength-o)throw new RangeError(\"'length' is out of bounds\");return new i(e.slice(o,o+a))}if(i.isBuffer(e)){var f=new i(e.length);return e.copy(f,0,0,e.length),f}if(e){if(Array.isArray(e)||\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return new i(e);if(\"Buffer\"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")},e.allocUnsafeSlow=function(t){if(\"function\"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(t);if(\"number\"!=typeof t)throw new TypeError(\"size must be a number\");if(t>=a)throw new RangeError(\"size is too large\");return new o(t)}}).call(e,r(39))},function(t,e,r){\"use strict\";(function(e){function r(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError('\"callback\" argument must be a function');var o,a,f=arguments.length;switch(f){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(f-1),a=0;a=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate=\"function\"==typeof t?t:function(t){var r=u++,n=!(arguments.length<2)&&f.call(arguments,1);return s[r]=!0,o(function(){s[r]&&(n?t.apply(null,n):t.call(null),e.clearImmediate(r))}),r},e.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(e,r(158).setImmediate,r(158).clearImmediate)},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r2?arguments[2]:void 0,h=Math.min((void 0===u?a:i(u,a))-s,a-f),c=1;for(s0;)s in r?r[f]=r[s]:delete r[f],f+=c,s+=c;return r}},function(t,e,r){var n=r(55);t.exports=function(t,e){var r=[];return n(t,!1,r.push,r,e),r}},function(t,e,r){var n=r(13),i=r(11),o=r(65),a=r(10);t.exports=function(t,e,r,f,s){n(e);var u=i(t),h=o(u),c=a(u.length),d=s?c-1:0,l=s?-1:1;if(r<2)for(;;){if(d in h){f=h[d],d+=l;break}if(d+=l,s?d<0:c<=d)throw TypeError(\"Reduce of empty array with no initial value\")}for(;s?d>=0:c>d;d+=l)d in h&&(f=e(f,h[d],d,u));return f}},function(t,e,r){\"use strict\";var n=r(13),i=r(6),o=r(82),a=[].slice,f={},s=function(t,e,r){if(!(e in f)){for(var n=[],i=0;i1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!v(this,t)}}),l&&n(c.prototype,\"size\",{get:function(){return s(this[b])}}),c},def:function(t,e,r){var n,i,o=v(t,e);return o?o.v=r:(t._l=o={i:i=p(e,!0),k:e,v:r,p:n=t._l,n:void 0,r:!1},t._f||(t._f=o),n&&(n.n=o),t[b]++,\"F\"!==i&&(t._i[i]=o)),t},getEntry:v,setStrong:function(t,e,r){h(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?\"keys\"==e?c(0,r.k):\"values\"==e?c(0,r.v):c(0,[r.k,r.v]):(t._t=void 0,c(1))},r?\"entries\":\"values\",!r,!0),d(e)}}},function(t,e,r){var n=r(64),i=r(168);t.exports=function(t){return function(){if(n(this)!=t)throw TypeError(t+\"#toJSON isn't generic\");return i(this)}}},function(t,e,r){\"use strict\";var n=r(45),i=r(36).getWeak,o=r(3),a=r(6),f=r(40),s=r(55),u=r(27),h=r(12),c=u(5),d=u(6),l=0,p=function(t){return t._l||(t._l=new b)},b=function(){this.a=[]},v=function(t,e){return c(t.a,function(t){return t[0]===e})};b.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var r=v(this,t);r?r[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,r,o){var u=t(function(t,n){f(t,u,e,\"_i\"),t._i=l++,t._l=void 0,void 0!=n&&s(n,r,t[o],t)});return n(u.prototype,{delete:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).delete(t):e&&h(e,this._i)&&delete e[this._i]},has:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).has(t):e&&h(e,this._i)}}),u},def:function(t,e,r){var n=i(o(e),!0);return n===!0?p(t).set(e,r):n[t._i]=r,t},ufstore:p}},function(t,e,r){t.exports=!r(8)&&!r(5)(function(){return 7!=Object.defineProperty(r(120)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(6),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(3);t.exports=function(t,e,r,i){try{return i?e(n(r)[0],r[1]):e(r)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,r){\"use strict\";var n=r(44),i=r(86),o=r(66),a=r(11),f=r(65),s=Object.assign;t.exports=!s||r(5)(function(){var t={},e={},r=Symbol(),n=\"abcdefghijklmnopqrst\";return t[r]=7,n.split(\"\").forEach(function(t){e[t]=t}),7!=s({},t)[r]||Object.keys(s({},e)).join(\"\")!=n})?function(t,e){for(var r=a(t),s=arguments.length,u=1,h=i.f,c=o.f;s>u;)for(var d,l=f(arguments[u++]),p=h?n(l).concat(h(l)):n(l),b=p.length,v=0;b>v;)c.call(l,d=p[v++])&&(r[d]=l[d]);return r}:s},function(t,e,r){var n=r(9),i=r(3),o=r(44);t.exports=r(8)?Object.defineProperties:function(t,e){i(t);for(var r,a=o(e),f=a.length,s=0;f>s;)n.f(t,r=a[s++],e[r]);return t}},function(t,e,r){var n=r(17),i=r(43).f,o={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],f=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&\"[object Window]\"==o.call(t)?f(t):i(n(t))}},function(t,e,r){var n=r(12),i=r(17),o=r(78)(!1),a=r(133)(\"IE_PROTO\");t.exports=function(t,e){var r,f=i(t),s=0,u=[];for(r in f)r!=a&&n(f,r)&&u.push(r);for(;e.length>s;)n(f,r=e[s++])&&(~o(u,r)||u.push(r));return u}},function(t,e,r){var n=r(44),i=r(17),o=r(66).f;t.exports=function(t){return function(e){for(var r,a=i(e),f=n(a),s=f.length,u=0,h=[];s>u;)o.call(a,r=f[u++])&&h.push(t?[r,a[r]]:a[r]);return h}}},function(t,e,r){var n=r(43),i=r(86),o=r(3),a=r(4).Reflect;t.exports=a&&a.ownKeys||function(t){var e=n.f(o(t)),r=i.f;return r?e.concat(r(t)):e}},function(t,e,r){var n=r(4).parseFloat,i=r(58).trim;t.exports=1/n(r(138)+\"-0\")!==-(1/0)?function(t){var e=i(String(t),3),r=n(e);return 0===r&&\"-\"==e.charAt(0)?-0:r}:n},function(t,e,r){var n=r(4).parseInt,i=r(58).trim,o=r(138),a=/^[\\-+]?0[xX]/;t.exports=8!==n(o+\"08\")||22!==n(o+\"0x16\")?function(t,e){var r=i(String(t),3);return n(r,e>>>0||(a.test(r)?16:10))}:n},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},function(t,e,r){var n=r(10),i=r(137),o=r(24);t.exports=function(t,e,r,a){var f=String(o(t)),s=f.length,u=void 0===r?\" \":String(r),h=n(e);if(h<=s||\"\"==u)return f;var c=h-s,d=i.call(u,Math.ceil(c/u.length));return d.length>c&&(d=d.slice(0,c)),a?d+f:f+d}},function(t,e,r){e.f=r(7)},function(t,e,r){\"use strict\";var n=r(171);t.exports=r(79)(\"Map\",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=n.getEntry(this,t);return e&&e.v},set:function(t,e){return n.def(this,0===t?0:t,e)}},n,!0)},function(t,e,r){r(8)&&\"g\"!=/./g.flags&&r(9).f(RegExp.prototype,\"flags\",{configurable:!0,get:r(81)})},function(t,e,r){\"use strict\";var n=r(171);t.exports=r(79)(\"Set\",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t=0===t?0:t,t)}},n)},function(t,e,r){\"use strict\";var n,i=r(27)(0),o=r(15),a=r(36),f=r(179),s=r(173),u=r(6),h=a.getWeak,c=Object.isExtensible,d=s.ufstore,l={},p=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=h(t);return e===!0?d(this).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(this,t,e)}},v=t.exports=r(79)(\"WeakMap\",p,b,s,!0,!0);7!=(new v).set((Object.freeze||Object)(l),7).get(l)&&(n=s.getConstructor(p),f(n.prototype,b),a.NEED=!0,i([\"delete\",\"has\",\"get\",\"set\"],function(t){var e=v.prototype,r=e[t];o(e,t,function(e,i){if(u(e)&&!c(e)){this._f||(this._f=new n);var o=this._f[t](e,i);return\"set\"==t?this:o}return r.call(this,e,i)})}))},function(t,e){function r(t){throw new Error(\"Cannot find module '\"+t+\"'.\")}r.keys=function(){return[]},r.resolve=r,t.exports=r,r.id=194},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,Object.getPrototypeOf(e).call(this));return Object.defineProperty(i,\"message\",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):\"\"}),Object.defineProperty(i,\"name\",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){r(486),t.exports=r(197).Number.isInteger},function(t,e){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,e,r){var n=r(200),i=r(197),o=r(478),a=r(480),f=\"prototype\",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&\"function\"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&\"function\"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,e,r){\"use strict\";t.exports=r(473)},function(t,e,r){\"use strict\";(function(e){/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;f--)if(s[f]!==u[f])return!1;for(f=s.length-1;f>=0;f--)if(a=s[f],!l(t[a],e[a],r,n))return!1;return!0}function v(t,e,r){l(t,e,!0)&&c(t,e,r,\"notDeepStrictEqual\",v)}function y(t,e){if(!t||!e)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&e.call({},t)===!0}function m(t){var e;try{t()}catch(t){e=t}return e}function g(t,e,r,n){var i;if(\"function\"!=typeof e)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=m(e),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),t&&!i&&c(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,a=!t&&w.isError(i),f=!t&&i&&!r;if((a&&o&&y(i,r)||f)&&c(i,r,\"Got unwanted exception\"+n),t&&i&&r&&!y(i,r)||!t&&i)throw i}var w=r(606),_=Object.prototype.hasOwnProperty,M=Array.prototype.slice,S=function(){return\"foo\"===function(){}.name}(),E=t.exports=d,A=/\\s*function\\s+([^\\(\\s]*)\\s*/;E.AssertionError=function(t){this.name=\"AssertionError\",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=h(this),this.generatedMessage=!0);var e=t.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=f(e),o=n.indexOf(\"\\n\"+i);if(o>=0){var a=n.indexOf(\"\\n\",o+1);n=n.substring(a+1)}this.stack=n}}},w.inherits(E.AssertionError,Error),E.fail=c,E.ok=d,E.equal=function(t,e,r){t!=e&&c(t,e,r,\"==\",E.equal)},E.notEqual=function(t,e,r){t==e&&c(t,e,r,\"!=\",E.notEqual)},E.deepEqual=function(t,e,r){l(t,e,!1)||c(t,e,r,\"deepEqual\",E.deepEqual)},E.deepStrictEqual=function(t,e,r){l(t,e,!0)||c(t,e,r,\"deepStrictEqual\",E.deepStrictEqual)},E.notDeepEqual=function(t,e,r){l(t,e,!1)&&c(t,e,r,\"notDeepEqual\",E.notDeepEqual)},E.notDeepStrictEqual=v,E.strictEqual=function(t,e,r){t!==e&&c(t,e,r,\"===\",E.strictEqual)},E.notStrictEqual=function(t,e,r){t===e&&c(t,e,r,\"!==\",E.notStrictEqual)},E.throws=function(t,e,r){g(!0,t,e,r)},E.doesNotThrow=function(t,e,r){g(!1,t,e,r)},E.ifError=function(t){if(t)throw t};var k=Object.keys||function(t){var e=[];for(var r in t)_.call(t,r)&&e.push(r);return e}}).call(e,r(39))},function(t,e,r){(function(e){function n(t,r,i,f){if(!(this instanceof n))return new n(t,r,i);a.call(this),this._finID=e.concat([i,new e([0,0,0,1])]),i=e.concat([i,new e([0,0,0,2])]),this._cipher=new o.AES(r),this._prev=new e(i.length),this._cache=new e(\"\"),this._secCache=new e(\"\"),this._decrypt=f,this._alen=0,this._len=0,i.copy(this._prev),this._mode=t;var u=new e(4);u.fill(0),this._ghash=new s(this._cipher.encryptBlock(u)),this._authTag=null,this._called=!1}function i(t,e){var r=0;t.length!==e.length&&r++;for(var n=Math.min(t.length,e.length),i=-1;++i>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error(\"length octect is too long\");n=0;for(var o=0;o=31?n.error(\"Multi-octet tag encoding unsupported\"):(e||(i|=32),i|=c.tagClassByName[r||\"universal\"]<<6)}var f=r(2),s=r(1).Buffer,u=r(100),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if(\"bitstr\"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if(\"bmpstr\"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error(\"Second objid identifier OOB\");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return\"gentime\"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+e+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},i.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},i.prototype._encodeInt=function(t,e){if(\"string\"==typeof t){if(!e)return this.reporter.error(\"String int or enum given, but no values map\");if(!e.hasOwnProperty(t))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(t));t=e[t]}if(\"number\"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return\"function\"==typeof t&&(t=t(e)),t._getEncoder(\"der\").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function s(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function u(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}var h=r(2),c=r(60),d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=new Array(64);h(n,c),n.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,h=0|this._c,c=0|this._d,l=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)e[y]=t.readInt32BE(4*y);for(;y<64;++y)e[y]=u(e[y-2])+e[y-7]+s(e[y-15])+e[y-16]|0;for(var m=0;m<64;++m){var g=v+f(l)+i(l,p,b)+d[m]+e[m]|0,w=a(r)+o(r,n,h)|0;v=b,b=p,p=l,l=c+g|0,c=h,h=n,n=r,r=g+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},n.prototype._hash=function(){var t=new e(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=v,p.call(this,128,112)}function i(t,e,r){return r^t&(e^r)}function o(t,e,r){return t&e|r&(t|e)}function a(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function s(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function u(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function h(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function c(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function d(t,e){return t>>>0>>0?1:0}var l=r(2),p=r(60),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);l(n,p),n.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,l=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,m=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,M=0|this._cl,S=0|this._dl,E=0|this._el,A=0|this._fl,k=0|this._gl,x=0|this._hl,I=0;I<32;I+=2)e[I]=t.readInt32BE(4*I),e[I+1]=t.readInt32BE(4*I+4);for(;I<160;I+=2){var B=e[I-30],O=e[I-30+1],R=s(B,O),P=u(O,B);\nB=e[I-4],O=e[I-4+1];var T=h(B,O),j=c(O,B),C=e[I-14],N=e[I-14+1],L=e[I-32],U=e[I-32+1],z=P+N|0,D=R+C+d(z,P)|0;z=z+j|0,D=D+T+d(z,j)|0,z=z+U|0,D=D+L+d(z,U)|0,e[I]=D,e[I+1]=z}for(var q=0;q<160;q+=2){D=e[q],z=e[q+1];var F=o(r,n,l),K=o(w,_,M),G=a(r,w),V=a(w,r),H=f(v,E),X=f(E,v),Y=b[q],W=b[q+1],Z=i(v,y,m),J=i(E,A,k),$=x+X|0,Q=g+H+d($,x)|0;$=$+J|0,Q=Q+Z+d($,J)|0,$=$+W|0,Q=Q+Y+d($,W)|0,$=$+z|0,Q=Q+D+d($,z)|0;var tt=V+K|0,et=G+F+d(tt,V)|0;g=m,x=k,m=y,k=A,y=v,A=E,E=S+$|0,v=p+Q+d(E,S)|0,p=l,S=M,l=n,M=_,n=r,_=w,w=$+tt|0,r=Q+et+d(w,$)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+M|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+k|0,this._hl=this._hl+x|0,this._ah=this._ah+r+d(this._al,w)|0,this._bh=this._bh+n+d(this._bl,_)|0,this._ch=this._ch+l+d(this._cl,M)|0,this._dh=this._dh+p+d(this._dl,S)|0,this._eh=this._eh+v+d(this._el,E)|0,this._fh=this._fh+y+d(this._fl,A)|0,this._gh=this._gh+m+d(this._gl,k)|0,this._hh=this._hh+g+d(this._hl,x)|0},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(64);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){function n(){if(null!==g)return g;var t=1048576,e=[];e[0]=2;for(var r=1,n=3;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(d),r.testn(1)||r.iadd(l),e.cmp(l)){if(!e.cmp(p))for(;r.mod(b).cmp(v);)r.iadd(m)}else for(;r.mod(u).cmp(y);)r.iadd(m);if(n=r.shrn(1),i(n)&&i(r)&&o(n)&&o(r)&&c.test(n)&&c.test(r))return r}}var f=r(61);t.exports=a,a.simpleSieve=i,a.fermatTest=o;var s=r(150),u=new s(24),h=r(230),c=new h,d=new s(1),l=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),y=(new s(7),new s(11)),m=new s(4),g=(new s(12),null)},function(t,e,r){function n(t){this.rand=t||new o.Rand}var i=r(150),o=r(575);t.exports=n,n.create=function(t){return new n(t)},n.prototype._rand=function(t){var e=t.bitLength(),r=this.rand.generate(Math.ceil(e/8));r[0]|=3;var n=7&e;return 0!==n&&(r[r.length-1]>>=7-n),new i(r)},n.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),a=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var f=t.subn(1),s=f.subn(1),u=0;!f.testn(u);u++);for(var h=t.shrn(u),c=f.toRed(o),d=!0;e>0;e--){var l=this._rand(s);r&&r(l);var p=l.toRed(o).redPow(h);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var b=1;b0;e--){var c=this._rand(f),d=t.gcd(c);if(0!==d.cmpn(1))return d;var l=c.toRed(n).redPow(u);if(0!==l.cmp(o)&&0!==l.cmp(h)){for(var p=1;p=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(70),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){var r;\"object\"!=typeof t||e.isBuffer(t)||(r=t.passphrase,t=t.key),\"string\"==typeof t&&(t=new e(t));var n,a,s=f(t,r),u=s.tag,h=s.data;switch(u){case\"PUBLIC KEY\":switch(a=o.PublicKey.decode(h,\"der\"),n=a.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return o.RSAPublicKey.decode(a.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":return a.subjectPrivateKey=a.subjectPublicKey,{type:\"ec\",data:a};case\"1.2.840.10040.4.1\":return a.algorithm.params.pub_key=o.DSAparam.decode(a.subjectPublicKey.data,\"der\"),{type:\"dsa\",data:a.algorithm.params};default:throw new Error(\"unknown key id \"+n)}throw new Error(\"unknown key type \"+u);case\"ENCRYPTED PRIVATE KEY\":h=o.EncryptedPrivateKey.decode(h,\"der\"),h=i(h,r);case\"PRIVATE KEY\":switch(a=o.PrivateKey.decode(h,\"der\"),n=a.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return o.RSAPrivateKey.decode(a.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:a.algorithm.curve,privateKey:o.ECPrivateKey.decode(a.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":return a.algorithm.params.priv_key=o.DSAparam.decode(a.subjectPrivateKey,\"der\"),{type:\"dsa\",params:a.algorithm.params};default:throw new Error(\"unknown key id \"+n)}throw new Error(\"unknown key type \"+u);case\"RSA PUBLIC KEY\":return o.RSAPublicKey.decode(h,\"der\");case\"RSA PRIVATE KEY\":return o.RSAPrivateKey.decode(h,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:o.DSAPrivateKey.decode(h,\"der\")};case\"EC PRIVATE KEY\":return h=o.ECPrivateKey.decode(h,\"der\"),{curve:h.parameters.value,privateKey:h.privateKey};default:throw new Error(\"unknown key type \"+u)}}function i(t,r){var n=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=a[t.algorithm.decrypt.cipher.algo.join(\".\")],f=t.algorithm.decrypt.cipher.iv,h=t.subjectPrivateKey,c=parseInt(o.split(\"-\")[1],10)/8,d=u.pbkdf2Sync(r,n,i,c),l=s.createDecipheriv(o,d,f),p=[];return p.push(l.update(h)),p.push(l.final()),e.concat(p)}var o=r(578),a=r(469),f=r(579),s=r(239),u=r(151);t.exports=n,n.signature=o.signature}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){return a.call(this,e),f.isBuffer(t)?(this.base=t,this.offset=0,void(this.length=t.length)):void this.error(\"Input not Buffer\")}function i(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(t){return t instanceof i||(t=new i(t,e)),this.length+=t.length,t},this);else if(\"number\"==typeof t){if(!(0<=t&&t<=255))return e.error(\"non-byte EncoderBuffer value\");this.value=t,this.length=1}else if(\"string\"==typeof t)this.value=t,this.length=f.byteLength(t);else{if(!f.isBuffer(t))return e.error(\"Unsupported type: \"+typeof t);this.value=t,this.length=t.length}}var o=r(2),a=r(71).Reporter,f=r(1).Buffer;o(n,a),e.DecoderBuffer=n,n.prototype.save=function(){return{offset:this.offset,reporter:a.prototype.save.call(this)}},n.prototype.restore=function(t){var e=new n(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,a.prototype.restore.call(this,t.reporter),e},n.prototype.isEmpty=function(){return this.offset===this.length},n.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||\"DecoderBuffer overrun\")},n.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||\"DecoderBuffer overrun\");var r=new n(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},n.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=i,i.prototype.join=function(t,e){return t||(t=new f(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach(function(r){r.join(t,e),e+=r.length}):(\"number\"==typeof this.value?t[e]=this.value:\"string\"==typeof this.value?t.write(this.value,e):f.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},function(t,e,r){var n=e;n._reverse=function(t){var e={};return Object.keys(t).forEach(function(r){(0|r)==r&&(r|=0);var n=t[r];e[n]=r}),e},n.der=r(583)},function(t,e,r){function n(t){this.enc=\"der\",this.name=t.name,this.entity=t,this.tree=new i,this.tree._init(t.body)}function i(t){u.Node.call(this,\"der\",t)}function o(t,e){var r=t.readUInt8(e);if(t.isError(r))return r;var n=c.tagClass[r>>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error(\"length octect is too long\");n=0;for(var o=0;o=31?n.error(\"Multi-octet tag encoding unsupported\"):(e||(i|=32),i|=c.tagClassByName[r||\"universal\"]<<6)}var f=r(2),s=r(1).Buffer,u=r(106),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if(\"bitstr\"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if(\"bmpstr\"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error(\"Second objid identifier OOB\");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return\"gentime\"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+e+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},i.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},i.prototype._encodeInt=function(t,e){if(\"string\"==typeof t){if(!e)return this.reporter.error(\"String int or enum given, but no values map\");if(!e.hasOwnProperty(t))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(t));t=e[t]}if(\"number\"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return\"function\"==typeof t&&(t=t(e)),t._getEncoder(\"der\").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f0)if(e.ended&&!i){var a=new Error(\"stream.push() after EOF\");t.emit(\"error\",a)}else if(e.endEmitted&&i){var s=new Error(\"stream.unshift() after end event\");t.emit(\"error\",s)}else{var u;!e.decoder||i||n||(r=e.decoder.write(r),u=!e.objectMode&&0===r.length),i||(e.reading=!1),u||(e.flowing&&0===e.length&&!e.sync?(t.emit(\"data\",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&d(t))),p(t,e)}else i||(e.reading=!1);return f(e)}function f(t){return!t.ended&&(t.needReadable||t.length=q?t=q:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function u(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=s(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function h(t,e){var r=null;return T.isBuffer(e)||\"string\"==typeof e||null===e||void 0===e||t.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\")),r}function c(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,d(t)}}function d(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(L(\"emitReadable\",e.flowing),e.emittedReadable=!0,e.sync?B(l,t):l(t))}function l(t){L(\"emit readable\"),t.emit(\"readable\"),w(t)}function p(t,e){e.readingMore||(e.readingMore=!0,B(b,t,e))}function b(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=M(t,e.buffer,e.decoder),r}function M(t,e,r){var n;return to.length?o.length:t;if(i+=a===o.length?o:o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function E(t,e){var r=j.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('\"endReadable()\" called on non-empty stream');e.endEmitted||(e.ended=!0,B(k,e,t))}function k(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"))}function x(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return L(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?A(this):d(this),null;if(t=u(t,e),0===t&&e.ended)return 0===e.length&&A(this),null;var n=e.needReadable;L(\"need readable\",n),(0===e.length||e.length-t0?_(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==i&&this.emit(\"data\",i),i},o.prototype._read=function(t){this.emit(\"error\",new Error(\"not implemented\"))},o.prototype.pipe=function(t,r){function i(t){L(\"onunpipe\"),t===d&&a()}function o(){L(\"onend\"),t.end()}function a(){L(\"cleanup\"),t.removeListener(\"close\",u),t.removeListener(\"finish\",h),t.removeListener(\"drain\",y),t.removeListener(\"error\",s),t.removeListener(\"unpipe\",i),d.removeListener(\"end\",o),d.removeListener(\"end\",a),d.removeListener(\"data\",f),m=!0,!l.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function f(e){L(\"ondata\"),g=!1;var r=t.write(e);!1!==r||g||((1===l.pipesCount&&l.pipes===t||l.pipesCount>1&&I(l.pipes,t)!==-1)&&!m&&(L(\"false write response, pause\",d._readableState.awaitDrain),d._readableState.awaitDrain++,g=!0),d.pause())}function s(e){L(\"onerror\",e),c(),t.removeListener(\"error\",s),0===P(t,\"error\")&&t.emit(\"error\",e)}function u(){t.removeListener(\"finish\",h),c()}function h(){L(\"onfinish\"),t.removeListener(\"close\",u),c()}function c(){L(\"unpipe\"),d.unpipe(t)}var d=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=t;break;case 1:l.pipes=[l.pipes,t];break;default:l.pipes.push(t)}l.pipesCount+=1,L(\"pipe count=%d opts=%j\",l.pipesCount,r);var p=(!r||r.end!==!1)&&t!==e.stdout&&t!==e.stderr,b=p?o:a;l.endEmitted?B(b):d.once(\"end\",b),t.on(\"unpipe\",i);var y=v(d);t.on(\"drain\",y);var m=!1,g=!1;return d.on(\"data\",f),n(t,\"error\",s),t.once(\"close\",u),t.once(\"finish\",h),t.emit(\"pipe\",d),l.flowing||(L(\"pipe resume\"),d.resume()),t},o.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this),this);if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128==(128&e)){if(e&=127,0==e)throw f(\"Indefinite length not supported\");if(e>4)throw f(\"encoding too long\");if(this._size-tthis._size-i)return null;if(this._offset=i,0===this.length)return r?new e(0):\"\";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,r?a:a.toString(\"utf8\")},n.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i>0),r.join(\".\")},n.prototype._readTag=function(t){i.ok(void 0!==t);var e=this.peek();if(null===e)return null;if(e!==t)throw f(\"Expected 0x\"+t.toString(16)+\": got 0x\"+e.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw f(\"Integer too long: \"+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],o=0,a=0;a>0},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e){o.ok(t),o.equal(typeof t,\"object\"),o.ok(e),o.equal(typeof e,\"object\");var r=Object.getOwnPropertyNames(t);return r.forEach(function(r){if(!e[r]){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n)}}),e}function i(t){t=n(s,t||{}),this._buf=new e(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}var o=r(202),a=r(112),f=r(111),s=(f.newInvalidAsn1Error,{size:1024,growthFactor:8});Object.defineProperty(i.prototype,\"buffer\",{get:function(){if(this._seq.length)throw new InvalidAsn1Error(this._seq.length+\" unended sequence(s)\");return this._buf.slice(0,this._offset)}}),i.prototype.writeByte=function(t){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");this._ensure(1),this._buf[this._offset++]=t},i.prototype.writeInt=function(t,e){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");\"number\"!=typeof e&&(e=a.Integer);for(var r=4;(0===(4286578688&t)||(4286578688&t)===-8388608)&&r>1;)r--,t<<=8;if(r>4)throw new InvalidAsn1Error(\"BER ints cannot be > 0xffffffff\");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},i.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},i.prototype.writeEnumeration=function(t,e){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");return\"number\"!=typeof e&&(e=a.Enumeration),this.writeInt(t,e)},i.prototype.writeBoolean=function(t,e){if(\"boolean\"!=typeof t)throw new TypeError(\"argument must be a Boolean\");\"number\"!=typeof e&&(e=a.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},i.prototype.writeString=function(t,r){if(\"string\"!=typeof t)throw new TypeError(\"argument must be a string (was: \"+typeof t+\")\");\"number\"!=typeof r&&(r=a.OctetString);var n=e.byteLength(t);this.writeByte(r),this.writeLength(n),n&&(this._ensure(n),this._buf.write(t,this._offset),this._offset+=n)},i.prototype.writeBuffer=function(t,r){if(\"number\"!=typeof r)throw new TypeError(\"tag must be a number\");if(!e.isBuffer(t))throw new TypeError(\"argument must be a buffer\");this.writeByte(r),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},i.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError(\"argument must be an Array[String]\");var e=this;t.forEach(function(t){e.writeString(t)})},i.prototype.writeOID=function(t,e){function r(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(255&(e>>>7|128)),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e)):(t.push(255&(e>>>28|128)),t.push(255&(e>>>21|128)),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e))}if(\"string\"!=typeof t)throw new TypeError(\"argument must be a string\");if(\"number\"!=typeof e&&(e=a.OID),!/^([0-9]+\\.){3,}[0-9]+$/.test(t))throw new Error(\"argument is not a valid OID string\");var n=t.split(\".\"),i=[];i.push(40*parseInt(n[0],10)+parseInt(n[1],10)),n.slice(2).forEach(function(t){r(i,parseInt(t,10))});var o=this;this._ensure(2+i.length),this.writeByte(e),this.writeLength(i.length),i.forEach(function(t){o.writeByte(t)})},i.prototype.writeLength=function(t){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw new InvalidAsn1ERror(\"Length too long (> 4 bytes)\");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},i.prototype.startSequence=function(t){\"number\"!=typeof t&&(t=a.Sequence|a.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},i.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw new InvalidAsn1Error(\"Sequence too long\");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},i.prototype._shift=function(t,e,r){o.ok(void 0!==t),o.ok(void 0!==e),o.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},i.prototype._ensure=function(t){if(o.ok(t),this._size-this._offset>>8*n-r,e.concat([l,u,new e([188])])}},{key:\"verify\",value:function(t,r,n){var i=Math.ceil(n/8),s=o.createHash(this.hashAlgorithm).update(t).digest();if(i>>8*i-n;if(h[0]&~d)return!1;var l=new a({hashAlgorithm:this.hashAlgorithm}),p=l.generate(c,i-this.hashLength-1),b=f(h,p);b[0]&=d;for(var v=i-this.hashLength-this.saltLength-2,y=0;y512||t.length<128)throw new Error(\"Modulus must be between 128 bytes (1017 bits) and 512 bytes (4096 bits), was: \"+t.length+\" bytes\");this.modulus=t}},{key:\"setSignature\",value:function(t){if(!e.isBuffer(t))throw new TypeError(\"Signature must be a buffer, was: \"+t);this.signature=t}},{key:\"sign\",value:function(t,e){this.modulus||this.setPublicModulus(s.modulusFromPrivateKey(e)),this.signature=l.sign(e,t)}},{key:\"writeHashPayload\",value:function(t){this.writeCommonHeader(t)}},{key:\"parsePayload\",value:function(t){this.setPublicModulus(t.readVarOctetString()),this.setSignature(t.readVarOctetString())}},{key:\"writePayload\",value:function(t){if(!this.signature)throw new c(\"Requires a signature\");this.writeCommonHeader(t),t.writeVarOctetString(this.signature)}},{key:\"calculateMaxFulfillmentLength\",value:function(){var t=new h;if(!this.modulus)throw new c(\"Requires a public modulus\");return this.writeCommonHeader(t),t.writeVarOctetString(this.modulus),t.getSize()}},{key:\"validate\",value:function(t){if(!e.isBuffer(t))throw new Error(\"Message must be provided as a Buffer, was: \"+t);var r=l.verify(this.modulus,t,this.signature);if(!r)throw new d(\"Invalid RSA signature\");return!0}}]),r}(u);p.TYPE_ID=3,p.FEATURE_BITMASK=17,t.exports=p}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;r=0;--n){var i=this.tryEntries[n],o=i.completion;if(\"root\"===i.tryLoc)return e(\"end\");if(i.tryLoc<=this.prev){var a=m.call(i,\"catchLoc\"),f=m.call(i,\"finallyLoc\");if(a&&f){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,\"finallyLoc\")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),l(r),I}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if(\"throw\"===n.type){var i=n.arg;l(r)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,r){return this.delegate={iterator:b(t),resultName:e,nextLoc:r},I}}}(\"object\"==typeof e?e:\"object\"==typeof window?window:\"object\"==typeof self?self:this)}).call(e,r(39),r(26))},function(t,e,r){r(290),t.exports=r(32).RegExp.escape},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(77);t.exports=function(t){if(!n(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,r){var n=r(270);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(77),i=r(165).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(165),i=r(163),o=r(272),a=r(275),f=\"prototype\",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&\"function\"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&\"function\"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e,r){var n=r(278),i=r(279);t.exports=r(117)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(117)&&!r(164)(function(){return 7!=Object.defineProperty(r(273)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(77),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(271),i=r(276),o=r(280),a=Object.defineProperty;e.f=r(117)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(77);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){var n=r(274);n(n.S,\"Number\",{isInteger:r(277)})},function(t,e,r){var n=r(6),i=r(126),o=r(7)(\"species\");t.exports=function(t){var e;return i(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),n(e)&&(e=e[o],null===e&&(e=void 0))),void 0===e?Array:e}},function(t,e,r){var n=r(282);t.exports=function(t,e){return new(n(t))(e)}},function(t,e,r){\"use strict\";var n=r(3),i=r(29),o=\"number\";t.exports=function(t){if(\"string\"!==t&&t!==o&&\"default\"!==t)throw TypeError(\"Incorrect hint\");return i(n(this),t!=o)}},function(t,e,r){var n=r(44),i=r(86),o=r(66);t.exports=function(t){var e=n(t),r=i.f;if(r)for(var a,f=r(t),s=o.f,u=0;f.length>u;)s.call(t,a=f[u++])&&e.push(a);return e}},function(t,e,r){var n=r(44),i=r(17);t.exports=function(t,e){for(var r,o=i(t),a=n(o),f=a.length,s=0;f>s;)if(o[r=a[s++]]===e)return r}},function(t,e,r){\"use strict\";var n=r(288),i=r(82),o=r(13);t.exports=function(){for(var t=o(this),e=arguments.length,r=Array(e),a=0,f=n._,s=!1;e>a;)(r[a]=arguments[a++])===f&&(s=!0);return function(){var n,o=this,a=arguments.length,u=0,h=0;if(!s&&!a)return i(t,r,o);if(n=r.slice(),s)for(;e>u;u++)n[u]===f&&(n[u]=arguments[h++]);for(;a>h;)n.push(arguments[h++]);return i(t,n,o)}}},function(t,e,r){t.exports=r(4)},function(t,e){t.exports=function(t,e){var r=e===Object(e)?function(t){return e[t]}:e;return function(e){return String(e).replace(t,r)}}},function(t,e,r){var n=r(0),i=r(289)(/[\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\");n(n.S,\"RegExp\",{escape:function(t){return i(t)}})},function(t,e,r){var n=r(0);n(n.P,\"Array\",{copyWithin:r(167)}),r(54)(\"copyWithin\")},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(4);n(n.P+n.F*!r(25)([].every,!0),\"Array\",{every:function(t){return i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.P,\"Array\",{fill:r(118)}),r(54)(\"fill\")},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(2);n(n.P+n.F*!r(25)([].filter,!0),\"Array\",{filter:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(6),o=\"findIndex\",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,\"Array\",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(5),o=\"find\",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,\"Array\",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(0),o=r(25)([].forEach,!0);n(n.P+n.F*!o,\"Array\",{forEach:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(33),i=r(0),o=r(11),a=r(176),f=r(125),s=r(10),u=r(119),h=r(142);i(i.S+i.F*!r(84)(function(t){Array.from(t)}),\"Array\",{from:function(t){var e,r,i,c,d=o(t),l=\"function\"==typeof this?this:Array,p=arguments.length,b=p>1?arguments[1]:void 0,v=void 0!==b,y=0,m=h(d);if(v&&(b=n(b,p>2?arguments[2]:void 0,2)),void 0==m||l==Array&&f(m))for(e=s(d.length),r=new l(e);e>y;y++)u(r,y,v?b(d[y],y):d[y]);else for(c=m.call(d),r=new l;!(i=c.next()).done;y++)u(r,y,v?a(c,b,[i.value,y],!0):i.value);return r.length=y,r}})},function(t,e,r){\"use strict\";var n=r(0),i=r(78)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;n(n.P+n.F*(a||!r(25)(o)),\"Array\",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.S,\"Array\",{isArray:r(126)})},function(t,e,r){\"use strict\";var n=r(0),i=r(17),o=[].join;n(n.P+n.F*(r(65)!=Object||!r(25)(o)),\"Array\",{join:function(t){return o.call(i(this),void 0===t?\",\":t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(17),o=r(38),a=r(10),f=[].lastIndexOf,s=!!f&&1/[1].lastIndexOf(1,-0)<0;n(n.P+n.F*(s||!r(25)(f)),\"Array\",{lastIndexOf:function(t){if(s)return f.apply(this,arguments)||0;var e=i(this),r=a(e.length),n=r-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in e&&e[n]===t)return n||0;return-1}})},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(1);n(n.P+n.F*!r(25)([].map,!0),\"Array\",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(0),i=r(119);n(n.S+n.F*r(5)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),\"Array\",{of:function(){for(var t=0,e=arguments.length,r=new(\"function\"==typeof this?this:Array)(e);e>t;)i(r,t,arguments[t++]);return r.length=e,r}})},function(t,e,r){\"use strict\";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduceRight,!0),\"Array\",{reduceRight:function(t){return i(this,t,arguments.length,arguments[1],!0)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduce,!0),\"Array\",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(123),o=r(23),a=r(47),f=r(10),s=[].slice;n(n.P+n.F*r(5)(function(){i&&s.call(i)}),\"Array\",{slice:function(t,e){var r=f(this.length),n=o(this);if(e=void 0===e?r:e,\"Array\"==n)return s.call(this,t,e);for(var i=a(t,r),u=a(e,r),h=f(u-i),c=Array(h),d=0;d9?t:\"0\"+t};n(n.P+n.F*(i(function(){return\"0385-07-25T07:06:39.999Z\"!=new Date(-5e13-1).toISOString()})||!i(function(){new Date(NaN).toISOString()})),\"Date\",{toISOString:function(){if(!isFinite(o.call(this)))throw RangeError(\"Invalid time value\");var t=this,e=t.getUTCFullYear(),r=t.getUTCMilliseconds(),n=e<0?\"-\":e>9999?\"+\":\"\";return n+(\"00000\"+Math.abs(e)).slice(n?-6:-4)+\"-\"+a(t.getUTCMonth()+1)+\"-\"+a(t.getUTCDate())+\"T\"+a(t.getUTCHours())+\":\"+a(t.getUTCMinutes())+\":\"+a(t.getUTCSeconds())+\".\"+(r>99?r:\"0\"+a(r))+\"Z\"}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29);n(n.P+n.F*r(5)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),\"Date\",{toJSON:function(t){var e=i(this),r=o(e);return\"number\"!=typeof r||isFinite(r)?e.toISOString():null}})},function(t,e,r){var n=r(7)(\"toPrimitive\"),i=Date.prototype;n in i||r(14)(i,n,r(284))},function(t,e,r){var n=Date.prototype,i=\"Invalid Date\",o=\"toString\",a=n[o],f=n.getTime;new Date(NaN)+\"\"!=i&&r(15)(n,o,function(){var t=f.call(this);return t===t?a.call(this):i})},function(t,e,r){var n=r(0);n(n.P,\"Function\",{bind:r(170)})},function(t,e,r){\"use strict\";var n=r(6),i=r(21),o=r(7)(\"hasInstance\"),a=Function.prototype;o in a||r(9).f(a,o,{value:function(t){if(\"function\"!=typeof this||!n(t))return!1;if(!n(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,r){var n=r(9).f,i=r(37),o=r(12),a=Function.prototype,f=/^\\s*function ([^ (]*)/,s=\"name\",u=Object.isExtensible||function(){return!0};s in a||r(8)&&n(a,s,{configurable:!0,get:function(){try{var t=this,e=(\"\"+t).match(f)[1];return o(t,s)||!u(t)||n(t,s,i(5,e)),e}catch(t){return\"\"}}})},function(t,e,r){var n=r(0),i=r(178),o=Math.sqrt,a=Math.acosh;n(n.S+n.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),\"Math\",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,r){function n(t){return isFinite(t=+t)&&0!=t?t<0?-n(-t):Math.log(t+Math.sqrt(t*t+1)):t}var i=r(0),o=Math.asinh;i(i.S+i.F*!(o&&1/o(0)>0),\"Math\",{asinh:n})},function(t,e,r){var n=r(0),i=Math.atanh;n(n.S+n.F*!(i&&1/i(-0)<0),\"Math\",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,r){var n=r(0),i=r(130);n(n.S,\"Math\",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,r){var n=r(0),i=Math.exp;n(n.S,\"Math\",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,r){var n=r(0),i=r(129);n(n.S+n.F*(i!=Math.expm1),\"Math\",{expm1:i})},function(t,e,r){var n=r(0),i=r(130),o=Math.pow,a=o(2,-52),f=o(2,-23),s=o(2,127)*(2-f),u=o(2,-126),h=function(t){return t+1/a-1/a};n(n.S,\"Math\",{fround:function(t){var e,r,n=Math.abs(t),o=i(t);return ns||r!=r?o*(1/0):o*r)}})},function(t,e,r){var n=r(0),i=Math.abs;n(n.S,\"Math\",{hypot:function(t,e){for(var r,n,o=0,a=0,f=arguments.length,s=0;a0?(n=r/s,o+=n*n):o+=r;return s===1/0?1/0:s*Math.sqrt(o)}})},function(t,e,r){var n=r(0),i=Math.imul;n(n.S+n.F*r(5)(function(){return i(4294967295,5)!=-5||2!=i.length}),\"Math\",{imul:function(t,e){var r=65535,n=+t,i=+e,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log10:function(t){return Math.log(t)/Math.LN10}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log1p:r(178)})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{sign:r(130)})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S+n.F*r(5)(function(){return!Math.sinh(-2e-17)!=-2e-17}),\"Math\",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S,\"Math\",{tanh:function(t){var e=i(t=+t),r=i(-t);return e==1/0?1:r==1/0?-1:(e-r)/(o(t)+o(-t))}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,r){\"use strict\";var n=r(4),i=r(12),o=r(23),a=r(124),f=r(29),s=r(5),u=r(43).f,h=r(20).f,c=r(9).f,d=r(58).trim,l=\"Number\",p=n[l],b=p,v=p.prototype,y=o(r(42)(v))==l,m=\"trim\"in String.prototype,g=function(t){var e=f(t,!1);if(\"string\"==typeof e&&e.length>2){e=m?e.trim():d(e,3);var r,n,i,o=e.charCodeAt(0);if(43===o||45===o){if(r=e.charCodeAt(2),88===r||120===r)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+e}for(var a,s=e.slice(2),u=0,h=s.length;ui)return NaN;return parseInt(s,n)}}return+e};if(!p(\" 0o1\")||!p(\"0b1\")||p(\"+0x1\")){p=function(t){var e=arguments.length<1?0:t,r=this;return r instanceof p&&(y?s(function(){v.valueOf.call(r)}):o(r)!=l)?a(new b(g(e)),r,p):g(e)};for(var w,_=r(8)?u(b):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),M=0;_.length>M;M++)i(b,w=_[M])&&!i(p,w)&&c(p,w,h(b,w));p.prototype=v,v.constructor=p,r(15)(n,l,p)}},function(t,e,r){var n=r(0);n(n.S,\"Number\",{EPSILON:Math.pow(2,-52)})},function(t,e,r){var n=r(0),i=r(4).isFinite;n(n.S,\"Number\",{isFinite:function(t){return\"number\"==typeof t&&i(t)}})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{isInteger:r(175)})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{isNaN:function(t){return t!=t}})},function(t,e,r){var n=r(0),i=r(175),o=Math.abs;n(n.S,\"Number\",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,r){var n=r(0),i=r(185);n(n.S+n.F*(Number.parseFloat!=i),\"Number\",{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.S+n.F*(Number.parseInt!=i),\"Number\",{parseInt:i})},function(t,e,r){\"use strict\";var n=r(0),i=r(38),o=r(166),a=r(137),f=1..toFixed,s=Math.floor,u=[0,0,0,0,0,0],h=\"Number.toFixed: incorrect invocation!\",c=\"0\",d=function(t,e){for(var r=-1,n=e;++r<6;)n+=t*u[r],u[r]=n%1e7,n=s(n/1e7)},l=function(t){for(var e=6,r=0;--e>=0;)r+=u[e],u[e]=s(r/t),r=r%t*1e7},p=function(){for(var t=6,e=\"\";--t>=0;)if(\"\"!==e||0===t||0!==u[t]){var r=String(u[t]);e=\"\"===e?r:e+a.call(c,7-r.length)+r}return e},b=function(t,e,r){return 0===e?r:e%2===1?b(t,e-1,r*t):b(t*t,e/2,r)},v=function(t){for(var e=0,r=t;r>=4096;)e+=12,r/=4096;for(;r>=2;)e+=1,r/=2;return e};n(n.P+n.F*(!!f&&(\"0.000\"!==8e-5.toFixed(3)||\"1\"!==.9.toFixed(0)||\"1.25\"!==1.255.toFixed(2)||\"1000000000000000128\"!==(0xde0b6b3a7640080).toFixed(0))||!r(5)(function(){f.call({})})),\"Number\",{toFixed:function(t){var e,r,n,f,s=o(this,h),u=i(t),y=\"\",m=c;if(u<0||u>20)throw RangeError(h);if(s!=s)return\"NaN\";if(s<=-1e21||s>=1e21)return String(s);if(s<0&&(y=\"-\",s=-s),s>1e-21)if(e=v(s*b(2,69,1))-69,r=e<0?s*b(2,-e,1):s/b(2,e,1),r*=4503599627370496,e=52-e,e>0){for(d(0,r),n=u;n>=7;)d(1e7,0),n-=7;for(d(b(10,n,1),0),n=e-1;n>=23;)l(1<<23),n-=23;l(1<0?(f=m.length,m=y+(f<=u?\"0.\"+a.call(c,u-f)+m:m.slice(0,f-u)+\".\"+m.slice(f-u))):m=y+m,m}})},function(t,e,r){\"use strict\";var n=r(0),i=r(5),o=r(166),a=1..toPrecision;n(n.P+n.F*(i(function(){return\"1\"!==a.call(1,void 0)})||!i(function(){a.call({})})),\"Number\",{toPrecision:function(t){var e=o(this,\"Number#toPrecision: incorrect invocation!\");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,r){var n=r(0);n(n.S+n.F,\"Object\",{assign:r(179)})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{create:r(42)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),\"Object\",{defineProperties:r(180)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),\"Object\",{defineProperty:r(9).f})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"freeze\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(17),i=r(20).f;r(28)(\"getOwnPropertyDescriptor\",function(){return function(t,e){return i(n(t),e)}})},function(t,e,r){r(28)(\"getOwnPropertyNames\",function(){return r(181).f})},function(t,e,r){var n=r(11),i=r(21);r(28)(\"getPrototypeOf\",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6);r(28)(\"isExtensible\",function(t){return function(e){return!!n(e)&&(!t||t(e))}})},function(t,e,r){var n=r(6);r(28)(\"isFrozen\",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(6);r(28)(\"isSealed\",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{is:r(187)})},function(t,e,r){var n=r(11),i=r(44);r(28)(\"keys\",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"preventExtensions\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"seal\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{setPrototypeOf:r(132).set})},function(t,e,r){\"use strict\";var n=r(64),i={};i[r(7)(\"toStringTag\")]=\"z\",i+\"\"!=\"[object z]\"&&r(15)(Object.prototype,\"toString\",function(){return\"[object \"+n(this)+\"]\"},!0)},function(t,e,r){var n=r(0),i=r(185);n(n.G+n.F*(parseFloat!=i),{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.G+n.F*(parseInt!=i),{parseInt:i})},function(t,e,r){\"use strict\";var n,i,o,a=r(41),f=r(4),s=r(33),u=r(64),h=r(0),c=r(6),d=r(13),l=r(40),p=r(55),b=r(134),v=r(139).set,y=r(131)(),m=\"Promise\",g=f.TypeError,w=f.process,_=f[m],w=f.process,M=\"process\"==u(w),S=function(){},E=!!function(){try{var t=_.resolve(1),e=(t.constructor={})[r(7)(\"species\")]=function(t){t(S,S)};return(M||\"function\"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e}catch(t){}}(),A=function(t,e){return t===e||t===_&&e===o},k=function(t){var e;return!(!c(t)||\"function\"!=typeof(e=t.then))&&e},x=function(t){return A(_,t)?new I(t):new i(t)},I=i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw g(\"Bad Promise constructor\");e=t,r=n}),this.resolve=d(e),this.reject=d(r)},B=function(t){try{t()}catch(t){return{error:t}}},O=function(t,e){if(!t._n){t._n=!0;var r=t._c;y(function(){for(var n=t._v,i=1==t._s,o=0,a=function(e){var r,o,a=i?e.ok:e.fail,f=e.resolve,s=e.reject,u=e.domain;try{a?(i||(2==t._h&&T(t),t._h=1),a===!0?r=n:(u&&u.enter(),r=a(n),u&&u.exit()),r===e.promise?s(g(\"Promise-chain cycle\")):(o=k(r))?o.call(r,f,s):f(r)):s(n)}catch(t){s(t)}};r.length>o;)a(r[o++]);t._c=[],t._n=!1,e&&!t._h&&R(t)})}},R=function(t){v.call(f,function(){var e,r,n,i=t._v;if(P(t)&&(e=B(function(){M?w.emit(\"unhandledRejection\",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(n=f.console)&&n.error&&n.error(\"Unhandled promise rejection\",i)}),t._h=M||P(t)?2:1),t._a=void 0,e)throw e.error})},P=function(t){if(1==t._h)return!1;for(var e,r=t._a||t._c,n=0;r.length>n;)if(e=r[n++],e.fail||!P(e.promise))return!1;return!0},T=function(t){v.call(f,function(){var e;M?w.emit(\"rejectionHandled\",t):(e=f.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),O(e,!0))},C=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw g(\"Promise can't be resolved itself\");(e=k(t))?y(function(){var n={_w:r,_d:!1};try{e.call(t,s(C,n,1),s(j,n,1))}catch(t){j.call(n,t)}}):(r._v=t,r._s=1,O(r,!1))}catch(t){j.call({_w:r,_d:!1},t)}}};E||(_=function(t){l(this,_,m,\"_h\"),d(t),n.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},n=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},n.prototype=r(45)(_.prototype,{then:function(t,e){var r=x(b(this,_));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof e&&e,r.domain=M?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&O(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),I=function(){var t=new n;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)}),h(h.G+h.W+h.F*!E,{Promise:_}),r(57)(_,m),r(46)(m),o=r(32)[m],h(h.S+h.F*!E,m,{reject:function(t){var e=x(this),r=e.reject;return r(t),e.promise}}),h(h.S+h.F*(a||!E),m,{resolve:function(t){if(t instanceof _&&A(t.constructor,this))return t;var e=x(this),r=e.resolve;return r(t),e.promise}}),h(h.S+h.F*!(E&&r(84)(function(t){_.all(t).catch(S)})),m,{all:function(t){var e=this,r=x(e),n=r.resolve,i=r.reject,o=B(function(){var r=[],o=0,a=1;p(t,!1,function(t){var f=o++,s=!1;r.push(void 0),a++,e.resolve(t).then(function(t){s||(s=!0,r[f]=t,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(t){var e=this,r=x(e),n=r.reject,i=B(function(){p(t,!1,function(t){e.resolve(t).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},function(t,e,r){var n=r(0),i=r(13),o=r(3),a=(r(4).Reflect||{}).apply,f=Function.apply;n(n.S+n.F*!r(5)(function(){a(function(){})}),\"Reflect\",{apply:function(t,e,r){var n=i(t),s=o(r);return a?a(n,e,s):f.call(n,e,s)}})},function(t,e,r){var n=r(0),i=r(42),o=r(13),a=r(3),f=r(6),s=r(5),u=r(170),h=(r(4).Reflect||{}).construct,c=s(function(){function t(){}return!(h(function(){},[],t)instanceof t)}),d=!s(function(){h(function(){})});n(n.S+n.F*(c||d),\"Reflect\",{construct:function(t,e){o(t),a(e);var r=arguments.length<3?t:o(arguments[2]);if(d&&!c)return h(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(u.apply(t,n))}var s=r.prototype,l=i(f(s)?s:Object.prototype),p=Function.apply.call(t,l,e);return f(p)?p:l}})},function(t,e,r){var n=r(9),i=r(0),o=r(3),a=r(29);i(i.S+i.F*r(5)(function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function(t,e,r){o(t),e=a(e,!0),o(r);try{return n.f(t,e,r),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(20).f,o=r(3);n(n.S,\"Reflect\",{deleteProperty:function(t,e){var r=i(o(t),e);return!(r&&!r.configurable)&&delete t[e]}})},function(t,e,r){\"use strict\";var n=r(0),i=r(3),o=function(t){this._t=i(t),this._i=0;var e,r=this._k=[];for(e in t)r.push(e)};r(127)(o,\"Object\",function(){var t,e=this,r=e._k;do if(e._i>=r.length)return{value:void 0,done:!0};while(!((t=r[e._i++])in e._t));return{value:t,done:!1}}),n(n.S,\"Reflect\",{enumerate:function(t){return new o(t)}})},function(t,e,r){var n=r(20),i=r(0),o=r(3);i(i.S,\"Reflect\",{getOwnPropertyDescriptor:function(t,e){return n.f(o(t),e)}})},function(t,e,r){var n=r(0),i=r(21),o=r(3);n(n.S,\"Reflect\",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,r){function n(t,e){var r,f,h=arguments.length<3?t:arguments[2];return u(t)===h?t[e]:(r=i.f(t,e))?a(r,\"value\")?r.value:void 0!==r.get?r.get.call(h):void 0:s(f=o(t))?n(f,e,h):void 0}var i=r(20),o=r(21),a=r(12),f=r(0),s=r(6),u=r(3);f(f.S,\"Reflect\",{get:n})},function(t,e,r){var n=r(0);n(n.S,\"Reflect\",{has:function(t,e){return e in t}})},function(t,e,r){var n=r(0),i=r(3),o=Object.isExtensible;n(n.S,\"Reflect\",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,r){var n=r(0);n(n.S,\"Reflect\",{ownKeys:r(184)})},function(t,e,r){var n=r(0),i=r(3),o=Object.preventExtensions;n(n.S,\"Reflect\",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(132);i&&n(n.S,\"Reflect\",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,r){function n(t,e,r){var s,d,l=arguments.length<4?t:arguments[3],p=o.f(h(t),e);if(!p){if(c(d=a(t)))return n(d,e,r,l);p=u(0)}return f(p,\"value\")?!(p.writable===!1||!c(l))&&(s=o.f(l,e)||u(0),s.value=r,i.f(l,e,s),!0):void 0!==p.set&&(p.set.call(l,r),!0)}var i=r(9),o=r(20),a=r(21),f=r(12),s=r(0),u=r(37),h=r(3),c=r(6);s(s.S,\"Reflect\",{set:n})},function(t,e,r){var n=r(4),i=r(124),o=r(9).f,a=r(43).f,f=r(83),s=r(81),u=n.RegExp,h=u,c=u.prototype,d=/a/g,l=/a/g,p=new u(d)!==d;if(r(8)&&(!p||r(5)(function(){return l[r(7)(\"match\")]=!1,u(d)!=d||u(l)==l||\"/a/i\"!=u(d,\"i\")}))){u=function(t,e){var r=this instanceof u,n=f(t),o=void 0===e;return!r&&n&&t.constructor===u&&o?t:i(p?new h(n&&!o?t.source:t,e):h((n=t instanceof u)?t.source:t,n&&o?s.call(t):e),r?this:c,u)};for(var b=(function(t){t in u||o(u,t,{configurable:!0,get:function(){return h[t]},set:function(e){h[t]=e}})}),v=a(h),y=0;v.length>y;)b(v[y++]);c.constructor=u,u.prototype=c,r(15)(n,\"RegExp\",u)}r(46)(\"RegExp\")},function(t,e,r){r(80)(\"match\",1,function(t,e,r){return[function(r){\"use strict\";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){\nr(80)(\"replace\",2,function(t,e,r){return[function(n,i){\"use strict\";var o=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,o,i):r.call(String(o),n,i)},r]})},function(t,e,r){r(80)(\"search\",1,function(t,e,r){return[function(r){\"use strict\";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){r(80)(\"split\",2,function(t,e,n){\"use strict\";var i=r(83),o=n,a=[].push,f=\"split\",s=\"length\",u=\"lastIndex\";if(\"c\"==\"abbc\"[f](/(b)*/)[1]||4!=\"test\"[f](/(?:)/,-1)[s]||2!=\"ab\"[f](/(?:ab)*/)[s]||4!=\".\"[f](/(.?)(.?)/)[s]||\".\"[f](/()()/)[s]>1||\"\"[f](/.?/)[s]){var h=void 0===/()??/.exec(\"\")[1];n=function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!i(t))return o.call(r,t,e);var n,f,c,d,l,p=[],b=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),v=0,y=void 0===e?4294967295:e>>>0,m=new RegExp(t.source,b+\"g\");for(h||(n=new RegExp(\"^\"+m.source+\"$(?!\\\\s)\",b));(f=m.exec(r))&&(c=f.index+f[0][s],!(c>v&&(p.push(r.slice(v,f.index)),!h&&f[s]>1&&f[0].replace(n,function(){for(l=1;l1&&f.index=y)));)m[u]===f.index&&m[u]++;return v===r[s]?!d&&m.test(\"\")||p.push(\"\"):p.push(r.slice(v)),p[s]>y?p.slice(0,y):p}}else\"0\"[f](void 0,0)[s]&&(n=function(t,e){return void 0===t&&0===e?[]:o.call(this,t,e)});return[function(r,i){var o=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,o,i):n.call(String(o),r,i)},n]})},function(t,e,r){\"use strict\";r(191);var n=r(3),i=r(81),o=r(8),a=\"toString\",f=/./[a],s=function(t){r(15)(RegExp.prototype,a,t,!0)};r(5)(function(){return\"/a/b\"!=f.call({source:\"a\",flags:\"b\"})})?s(function(){var t=n(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):f.name!=a&&s(function(){return f.call(this)})},function(t,e,r){\"use strict\";r(16)(\"anchor\",function(t){return function(e){return t(this,\"a\",\"name\",e)}})},function(t,e,r){\"use strict\";r(16)(\"big\",function(t){return function(){return t(this,\"big\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"blink\",function(t){return function(){return t(this,\"blink\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"bold\",function(t){return function(){return t(this,\"b\",\"\",\"\")}})},function(t,e,r){\"use strict\";var n=r(0),i=r(135)(!1);n(n.P,\"String\",{codePointAt:function(t){return i(this,t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(10),o=r(136),a=\"endsWith\",f=\"\"[a];n(n.P+n.F*r(122)(a),\"String\",{endsWith:function(t){var e=o(this,t,a),r=arguments.length>1?arguments[1]:void 0,n=i(e.length),s=void 0===r?n:Math.min(i(r),n),u=String(t);return f?f.call(e,u,s):e.slice(s-u.length,s)===u}})},function(t,e,r){\"use strict\";r(16)(\"fixed\",function(t){return function(){return t(this,\"tt\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"fontcolor\",function(t){return function(e){return t(this,\"font\",\"color\",e)}})},function(t,e,r){\"use strict\";r(16)(\"fontsize\",function(t){return function(e){return t(this,\"font\",\"size\",e)}})},function(t,e,r){var n=r(0),i=r(47),o=String.fromCharCode,a=String.fromCodePoint;n(n.S+n.F*(!!a&&1!=a.length),\"String\",{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,a=0;n>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+\" is not a valid code point\");r.push(e<65536?o(e):o(((e-=65536)>>10)+55296,e%1024+56320))}return r.join(\"\")}})},function(t,e,r){\"use strict\";var n=r(0),i=r(136),o=\"includes\";n(n.P+n.F*r(122)(o),\"String\",{includes:function(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){\"use strict\";r(16)(\"italics\",function(t){return function(){return t(this,\"i\",\"\",\"\")}})},function(t,e,r){\"use strict\";var n=r(135)(!0);r(128)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})})},function(t,e,r){\"use strict\";r(16)(\"link\",function(t){return function(e){return t(this,\"a\",\"href\",e)}})},function(t,e,r){var n=r(0),i=r(17),o=r(10);n(n.S,\"String\",{raw:function(t){for(var e=i(t.raw),r=o(e.length),n=arguments.length,a=[],f=0;r>f;)a.push(String(e[f++])),f1?arguments[1]:void 0,e.length)),n=String(t);return f?f.call(e,n,r):e.slice(r,r+n.length)===n}})},function(t,e,r){\"use strict\";r(16)(\"strike\",function(t){return function(){return t(this,\"strike\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"sub\",function(t){return function(){return t(this,\"sub\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"sup\",function(t){return function(){return t(this,\"sup\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(58)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,r){\"use strict\";var n=r(4),i=r(12),o=r(8),a=r(0),f=r(15),s=r(36).KEY,u=r(5),h=r(87),c=r(57),d=r(48),l=r(7),p=r(189),b=r(141),v=r(286),y=r(285),m=r(126),g=r(3),w=r(17),_=r(29),M=r(37),S=r(42),E=r(181),A=r(20),k=r(9),x=r(44),I=A.f,B=k.f,O=E.f,R=n.Symbol,P=n.JSON,T=P&&P.stringify,j=\"prototype\",C=l(\"_hidden\"),N=l(\"toPrimitive\"),L={}.propertyIsEnumerable,U=h(\"symbol-registry\"),z=h(\"symbols\"),D=h(\"op-symbols\"),q=Object[j],F=\"function\"==typeof R,K=n.QObject,G=!K||!K[j]||!K[j].findChild,V=o&&u(function(){return 7!=S(B({},\"a\",{get:function(){return B(this,\"a\",{value:7}).a}})).a})?function(t,e,r){var n=I(q,e);n&&delete q[e],B(t,e,r),n&&t!==q&&B(q,e,n)}:B,H=function(t){var e=z[t]=S(R[j]);return e._k=t,e},X=F&&\"symbol\"==typeof R.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof R},Y=function(t,e,r){return t===q&&Y(D,e,r),g(t),e=_(e,!0),g(r),i(z,e)?(r.enumerable?(i(t,C)&&t[C][e]&&(t[C][e]=!1),r=S(r,{enumerable:M(0,!1)})):(i(t,C)||B(t,C,M(1,{})),t[C][e]=!0),V(t,e,r)):B(t,e,r)},W=function(t,e){g(t);for(var r,n=y(e=w(e)),i=0,o=n.length;o>i;)Y(t,r=n[i++],e[r]);return t},Z=function(t,e){return void 0===e?S(t):W(S(t),e)},J=function(t){var e=L.call(this,t=_(t,!0));return!(this===q&&i(z,t)&&!i(D,t))&&(!(e||!i(this,t)||!i(z,t)||i(this,C)&&this[C][t])||e)},$=function(t,e){if(t=w(t),e=_(e,!0),t!==q||!i(z,e)||i(D,e)){var r=I(t,e);return!r||!i(z,e)||i(t,C)&&t[C][e]||(r.enumerable=!0),r}},Q=function(t){for(var e,r=O(w(t)),n=[],o=0;r.length>o;)i(z,e=r[o++])||e==C||e==s||n.push(e);return n},tt=function(t){for(var e,r=t===q,n=O(r?D:w(t)),o=[],a=0;n.length>a;)!i(z,e=n[a++])||r&&!i(q,e)||o.push(z[e]);return o};F||(R=function(){if(this instanceof R)throw TypeError(\"Symbol is not a constructor!\");var t=d(arguments.length>0?arguments[0]:void 0),e=function(r){this===q&&e.call(D,r),i(this,C)&&i(this[C],t)&&(this[C][t]=!1),V(this,t,M(1,r))};return o&&G&&V(q,t,{configurable:!0,set:e}),H(t)},f(R[j],\"toString\",function(){return this._k}),A.f=$,k.f=Y,r(43).f=E.f=Q,r(66).f=J,r(86).f=tt,o&&!r(41)&&f(q,\"propertyIsEnumerable\",J,!0),p.f=function(t){return H(l(t))}),a(a.G+a.W+a.F*!F,{Symbol:R});for(var et=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),rt=0;et.length>rt;)l(et[rt++]);for(var et=x(l.store),rt=0;et.length>rt;)b(et[rt++]);a(a.S+a.F*!F,\"Symbol\",{for:function(t){return i(U,t+=\"\")?U[t]:U[t]=R(t)},keyFor:function(t){if(X(t))return v(U,t);throw TypeError(t+\" is not a symbol!\")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!F,\"Object\",{create:Z,defineProperty:Y,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),P&&a(a.S+a.F*(!F||u(function(){var t=R();return\"[null]\"!=T([t])||\"{}\"!=T({a:t})||\"{}\"!=T(Object(t))})),\"JSON\",{stringify:function(t){if(void 0!==t&&!X(t)){for(var e,r,n=[t],i=1;arguments.length>i;)n.push(arguments[i++]);return e=n[1],\"function\"==typeof e&&(r=e),!r&&m(e)||(e=function(t,e){if(r&&(e=r.call(this,t,e)),!X(e))return e}),n[1]=e,T.apply(P,n)}}}),R[j][N]||r(14)(R[j],N,R[j].valueOf),c(R,\"Symbol\"),c(Math,\"Math\",!0),c(n.JSON,\"JSON\",!0)},function(t,e,r){\"use strict\";var n=r(0),i=r(88),o=r(140),a=r(3),f=r(47),s=r(10),u=r(6),h=r(4).ArrayBuffer,c=r(134),d=o.ArrayBuffer,l=o.DataView,p=i.ABV&&h.isView,b=d.prototype.slice,v=i.VIEW,y=\"ArrayBuffer\";n(n.G+n.W+n.F*(h!==d),{ArrayBuffer:d}),n(n.S+n.F*!i.CONSTR,y,{isView:function(t){return p&&p(t)||u(t)&&v in t}}),n(n.P+n.U+n.F*r(5)(function(){return!new d(2).slice(1,void 0).byteLength}),y,{slice:function(t,e){if(void 0!==b&&void 0===e)return b.call(a(this),t);for(var r=a(this).byteLength,n=f(t,r),i=f(void 0===e?r:e,r),o=new(c(this,d))(s(i-n)),u=new l(this),h=new l(o),p=0;n0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t,!0)}},n,!1,!0)},function(t,e,r){\"use strict\";var n=r(0),i=r(78)(!0);n(n.P,\"Array\",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(\"includes\")},function(t,e,r){var n=r(0),i=r(131)(),o=r(4).process,a=\"process\"==r(23)(o);n(n.G,{asap:function(t){var e=a&&o.domain;i(e?e.bind(t):t)}})},function(t,e,r){var n=r(0),i=r(23);n(n.S,\"Error\",{isError:function(t){return\"Error\"===i(t)}})},function(t,e,r){var n=r(0);n(n.P+n.R,\"Map\",{toJSON:r(172)(\"Map\")})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{iaddh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o+(n>>>0)+((i&a|(i|a)&~(i+a>>>0))>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{imulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>16,s=i>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>16)+((o*s>>>0)+(u&r)>>16)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{isubh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o-(n>>>0)-((~i&a|~(i^a)&i-a>>>0)>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{umulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>>16,s=i>>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>>16)+((o*s>>>0)+(u&r)>>>16)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),\"Object\",{__defineGetter__:function(t,e){a.f(i(this),t,{get:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),\"Object\",{__defineSetter__:function(t,e){a.f(i(this),t,{set:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){var n=r(0),i=r(183)(!0);n(n.S,\"Object\",{entries:function(t){return i(t)}})},function(t,e,r){var n=r(0),i=r(184),o=r(17),a=r(20),f=r(119);n(n.S,\"Object\",{getOwnPropertyDescriptors:function(t){for(var e,r=o(t),n=a.f,s=i(r),u={},h=0;s.length>h;)f(u,e=s[h++],n(r,e));return u}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),\"Object\",{__lookupGetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.get;while(r=a(r))}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),\"Object\",{__lookupSetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.set;while(r=a(r))}})},function(t,e,r){var n=r(0),i=r(183)(!1);n(n.S,\"Object\",{values:function(t){return i(t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(4),o=r(32),a=r(131)(),f=r(7)(\"observable\"),s=r(13),u=r(3),h=r(40),c=r(45),d=r(14),l=r(55),p=l.RETURN,b=function(t){return null==t?void 0:s(t)},v=function(t){var e=t._c;e&&(t._c=void 0,e())},y=function(t){return void 0===t._o},m=function(t){y(t)||(t._o=void 0,v(t))},g=function(t,e){u(t),this._c=void 0,this._o=t,t=new w(this);try{var r=e(t),n=r;null!=r&&(\"function\"==typeof r.unsubscribe?r=function(){n.unsubscribe()}:s(r),this._c=r)}catch(e){return void t.error(e)}y(this)&&v(this)};g.prototype=c({},{unsubscribe:function(){m(this)}});var w=function(t){this._s=t};w.prototype=c({},{next:function(t){var e=this._s;if(!y(e)){var r=e._o;try{var n=b(r.next);if(n)return n.call(r,t)}catch(t){try{m(e)}finally{throw t}}}},error:function(t){var e=this._s;if(y(e))throw t;var r=e._o;e._o=void 0;try{var n=b(r.error);if(!n)throw t;t=n.call(r,t)}catch(t){try{v(e)}finally{throw t}}return v(e),t},complete:function(t){var e=this._s;if(!y(e)){var r=e._o;e._o=void 0;try{var n=b(r.complete);t=n?n.call(r,t):void 0}catch(t){try{v(e)}finally{throw t}}return v(e),t}}});var _=function(t){h(this,_,\"Observable\",\"_f\")._f=s(t)};c(_.prototype,{subscribe:function(t){return new g(t,this._f)},forEach:function(t){var e=this;return new(o.Promise||i.Promise)(function(r,n){s(t);var i=e.subscribe({next:function(e){try{return t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:r})})}}),c(_,{from:function(t){var e=\"function\"==typeof this?this:_,r=b(u(t)[f]);if(r){var n=u(r.call(t));return n.constructor===e?n:new e(function(t){return n.subscribe(t)})}return new e(function(e){var r=!1;return a(function(){if(!r){try{if(l(t,!1,function(t){if(e.next(t),r)return p})===p)return}catch(t){if(r)throw t;return void e.error(t)}e.complete()}}),function(){r=!0}})},of:function(){for(var t=0,e=arguments.length,r=Array(e);t1?arguments[1]:void 0,!1)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(188);n(n.P,\"String\",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,r){\"use strict\";r(58)(\"trimLeft\",function(t){return function(){return t(this,1)}},\"trimStart\")},function(t,e,r){\"use strict\";r(58)(\"trimRight\",function(t){return function(){return t(this,2)}},\"trimEnd\")},function(t,e,r){r(141)(\"asyncIterator\")},function(t,e,r){r(141)(\"observable\")},function(t,e,r){var n=r(0);n(n.S,\"System\",{global:r(4)})},function(t,e,r){for(var n=r(143),i=r(15),o=r(4),a=r(14),f=r(56),s=r(7),u=s(\"iterator\"),h=s(\"toStringTag\"),c=f.Array,d=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],l=0;l<5;l++){var p,b=d[l],v=o[b],y=v&&v.prototype;if(y){y[u]||a(y,u,c),y[h]||a(y,h,b),f[b]=c;for(p in n)y[p]||i(y,p,n[p],!0)}}},function(t,e,r){var n=r(0),i=r(139);n(n.G+n.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,r){var n=r(4),i=r(0),o=r(82),a=r(287),f=n.navigator,s=!!f&&/MSIE .\\./.test(f.userAgent),u=function(t){return s?function(e,r){return t(o(a,[].slice.call(arguments,2),\"function\"==typeof e?e:Function(e)),r)}:t};i(i.G+i.B+i.F*s,{setTimeout:u(n.setTimeout),setInterval:u(n.setInterval)})},function(t,e,r){r(410),r(349),r(351),r(350),r(353),r(355),r(360),r(354),r(352),r(362),r(361),r(357),r(358),r(356),r(348),r(359),r(363),r(364),r(316),r(318),r(317),r(366),r(365),r(336),r(346),r(347),r(337),r(338),r(339),r(340),r(341),r(342),r(343),r(344),r(345),r(319),r(320),r(321),r(322),r(323),r(324),r(325),r(326),r(327),r(328),r(329),r(330),r(331),r(332),r(333),r(334),r(335),r(397),r(402),r(409),r(400),r(392),r(393),r(398),r(403),r(405),r(388),r(389),r(390),r(391),r(394),r(395),r(396),r(399),r(401),r(404),r(406),r(407),r(408),r(311),r(313),r(312),r(315),r(314),r(300),r(298),r(304),r(301),r(307),r(309),r(297),r(303),r(294),r(308),r(292),r(306),r(305),r(299),r(302),r(291),r(293),r(296),r(295),r(310),r(143),r(382),r(387),r(191),r(383),r(384),r(385),r(386),r(367),r(190),r(192),r(193),r(422),r(411),r(412),r(417),r(420),r(421),r(415),r(418),r(416),r(419),r(413),r(414),r(368),r(369),r(370),r(371),r(372),r(375),r(373),r(374),r(376),r(377),r(378),r(379),r(381),r(380),r(423),r(449),r(452),r(451),r(453),r(454),r(450),r(455),r(456),r(434),r(437),r(433),r(431),r(432),r(435),r(436),r(426),r(448),r(457),r(425),r(427),r(429),r(428),r(430),r(439),r(440),r(442),r(441),r(444),r(443),r(445),r(446),r(447),r(424),r(438),r(460),r(459),r(458),t.exports=r(32)},function(t,e,r){t.exports=r(463)(\"ed25519\")},function(t,e,r){(function(n,i){function o(t){\"string\"==typeof t?t={bindings:t}:t||(t={}),t.__proto__=c,t.module_root||(t.module_root=e.getRoot(e.getFileName())),\".node\"!=f.extname(t.bindings)&&(t.bindings+=\".node\");for(var r,n,i,o=[],a=0,u=t.try.length;a=6.0.0 <7.0.0\",_npmVersion:\"3.10.3\",_nodeVersion:\"6.3.0\",_npmUser:{name:\"indutny\",email:\"fedor@indutny.com\"},dist:{shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",tarball:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"},maintainers:[{name:\"indutny\",email:\"fedor@indutny.com\"}],_npmOperationalInternal:{host:\"packages-16-east.internal.npmjs.com\",tmp:\"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569\"},directories:{},_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"}},function(t,e){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},function(t,e){t.exports={name:\"elliptic\",version:\"6.3.2\",description:\"EC cryptography\",main:\"lib/elliptic.js\",files:[\"lib\"],scripts:{jscs:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",jshint:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",lint:\"npm run jscs && npm run jshint\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",test:\"npm run lint && npm run unit\",version:\"grunt dist && git add dist/\"},repository:{type:\"git\",url:\"git+ssh://git@github.com/indutny/elliptic.git\"},keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],author:{name:\"Fedor Indutny\",email:\"fedor@indutny.com\"},license:\"MIT\",bugs:{url:\"https://github.com/indutny/elliptic/issues\"},homepage:\"https://github.com/indutny/elliptic\",devDependencies:{brfs:\"^1.4.3\",coveralls:\"^2.11.3\",grunt:\"^0.4.5\",\"grunt-browserify\":\"^5.0.0\",\"grunt-contrib-connect\":\"^1.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^1.0.1\",\"grunt-mocha-istanbul\":\"^3.0.1\",\"grunt-saucelabs\":\"^8.6.2\",istanbul:\"^0.4.2\",jscs:\"^2.9.0\",jshint:\"^2.6.0\",mocha:\"^2.1.0\"},dependencies:{\"bn.js\":\"^4.4.0\",brorand:\"^1.0.1\",\"hash.js\":\"^1.0.0\",inherits:\"^2.0.1\"},gitHead:\"cbace4683a4a548dc0306ef36756151a20299cd5\",_id:\"elliptic@6.3.2\",_shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",_from:\"elliptic@>=6.0.0 <7.0.0\",_npmVersion:\"3.10.3\",_nodeVersion:\"6.3.0\",_npmUser:{name:\"indutny\",email:\"fedor@indutny.com\"},dist:{shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",tarball:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"},maintainers:[{name:\"indutny\",email:\"fedor@indutny.com\"}],_npmOperationalInternal:{host:\"packages-16-east.internal.npmjs.com\",tmp:\"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569\"},directories:{},_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"}},function(t,e){t.exports={modp1:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},modp2:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},modp5:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},modp14:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},modp15:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},modp16:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n},modp17:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},modp18:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}},function(t,e){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r127){var e=Math.ceil(t.length.toString(2).length/8);this.skip(e)}this.skip(t.length)}},{key:\"write\",value:function(t){this.size+=t.length}},{key:\"skip\",value:function(t){this.size+=t}},{key:\"getSize\",value:function(){return this.size}}]),t}();[1,2,4,8].forEach(function(t){a.prototype[\"writeUInt\"+8*t]=function(e){return this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;rt.MAX_INT_BYTES)throw new Error(\"Tried to read too large integer (requested: \"+e+\", max: \"+t.MAX_INT_BYTES+\")\");this.ensureAvailable(e);var r=this.buffer.readUIntBE(this.cursor,e);return r}},{key:\"skipUInt\",value:function(t){this.skip(t)}},{key:\"readUInt64\",value:function(){return[this.readUInt32(),this.readUInt32()]}},{key:\"peekUInt64\",value:function(){this.bookmark();var t=this.readUInt64();return this.restore(),t}},{key:\"skipUInt64\",value:function(){this.skip(8)}},{key:\"readVarUInt\",value:function(){var e=this.readVarOctetString();if(e.length>t.MAX_INT_BYTES)throw new a(\"UInt of length \"+e.length+\" too large to parse as integer (max: \"+t.MAX_INT_BYTES+\")\");if(0===e.length)throw new a(\"UInt of length 0 is invalid\");return e.readUIntBE(0,e.length)}},{key:\"peekVarUInt\",value:function(){this.bookmark();var t=this.readVarUInt();return this.restore(),t}},{key:\"skipVarUInt\",value:function(){this.skipVarOctetString()}},{key:\"readOctetString\",value:function(t){return this.read(t)}},{key:\"peekOctetString\",value:function(t){return this.peek(t)}},{key:\"skipOctetString\",value:function(t){return this.skip(t)}},{key:\"readLengthPrefix\",value:function(){var e=this.readUInt8();if(e&t.HIGH_BIT){var r=e&t.LOWER_SEVEN_BITS,n=this.readUInt(r),i=Math.max(128,1<<8*(r-1));if(n8*r)throw new Error(\"UInt \"+t+\" does not fit in \"+r+\" bytes\");var n=new e(r);n.writeUIntBE(t,0,r),this.write(n)}},{key:\"writeVarUInt\",value:function(r){if(e.isBuffer(r))return void this.writeVarOctetString(r);if(!o(r))throw new Error(\"UInt must be an integer\");if(r<0)throw new Error(\"UInt must be positive\");if(r>t.MAX_SAFE_INTEGER)throw new Error(\"UInt is too large\");var n=Math.ceil(r.toString(2).length/8),i=new e(n);i.writeUIntBE(r,0,n),this.writeVarOctetString(i)}},{key:\"writeUInt64\",value:function(e){if(o(e)&&e<=t.MAX_SAFE_INTEGER)return this.writeUInt32(Math.floor(e/4294967296)),void this.writeUInt32(4294967295&e);if(!Array.isArray(e)||2!==e.length||!o(e[0])||!o(e[1]))throw new TypeError(\"Expected 64-bit integer as an array of two 32-bit words\");this.writeUInt32(e[0]),this.writeUInt32(e[1])}},{key:\"writeOctetString\",value:function(t,e){if(t.length!==e)throw new Error(\"Incorrect length for octet string (actual: \"+t.length+\", expected: \"+e+\")\");this.write(t)}},{key:\"writeVarOctetString\",value:function(t){if(!e.isBuffer(t))throw new TypeError(\"Expects a buffer\");var r=128;if(t.length<=127)this.writeUInt8(t.length);else{var n=Math.ceil(t.length.toString(2).length/8);this.writeUInt8(r|n),this.writeUInt(t.length,n)}this.write(t)}},{key:\"write\",value:function(t){this.components.push(t)}},{key:\"getBuffer\",value:function(){return e.concat(this.components)}}]),t}();a.MAX_SAFE_INTEGER=r(475),[1,2,4].forEach(function(t){a.prototype[\"writeUInt\"+8*t]=function(e){this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){r(487),t.exports=9007199254740991},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(89);t.exports=function(t){if(!n(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,r){var n=r(476);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(89),i=r(200).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(483),i=r(484);t.exports=r(144)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(144)&&!r(199)(function(){return 7!=Object.defineProperty(r(479)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(89),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(477),i=r(481),o=r(485),a=Object.defineProperty;e.f=r(144)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(89);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){var n=r(198);n(n.S,\"Number\",{isInteger:r(482)})},function(t,e,r){var n=r(198);n(n.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){!function(t){\"use strict\";function e(t,e,r,n){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r,t[e+4]=n>>24&255,t[e+5]=n>>16&255,t[e+6]=n>>8&255,t[e+7]=255&n}function n(t,e,r,n,i){var o,a=0;for(o=0;o>>8)-1}function i(t,e,r,i){return n(t,e,r,i,16)}function o(t,e,r,i){return n(t,e,r,i,32)}function a(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;_=_+o|0,M=M+a|0,S=S+f|0,E=E+s|0,A=A+u|0,k=k+h|0,x=x+c|0,I=I+d|0,B=B+l|0,O=O+p|0,R=R+b|0,P=P+v|0,T=T+y|0,j=j+m|0,C=C+g|0,N=N+w|0,t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=M>>>0&255,t[5]=M>>>8&255,t[6]=M>>>16&255,t[7]=M>>>24&255,t[8]=S>>>0&255,t[9]=S>>>8&255,t[10]=S>>>16&255,t[11]=S>>>24&255,t[12]=E>>>0&255,t[13]=E>>>8&255,t[14]=E>>>16&255,t[15]=E>>>24&255,t[16]=A>>>0&255,t[17]=A>>>8&255,t[18]=A>>>16&255,t[19]=A>>>24&255,t[20]=k>>>0&255,t[21]=k>>>8&255,t[22]=k>>>16&255,t[23]=k>>>24&255,t[24]=x>>>0&255,t[25]=x>>>8&255,t[26]=x>>>16&255,t[27]=x>>>24&255,t[28]=I>>>0&255,t[29]=I>>>8&255,t[30]=I>>>16&255,t[31]=I>>>24&255,t[32]=B>>>0&255,t[33]=B>>>8&255,t[34]=B>>>16&255,t[35]=B>>>24&255,t[36]=O>>>0&255,t[37]=O>>>8&255,t[38]=O>>>16&255,t[39]=O>>>24&255,t[40]=R>>>0&255,t[41]=R>>>8&255,t[42]=R>>>16&255,t[43]=R>>>24&255,t[44]=P>>>0&255,t[45]=P>>>8&255,t[46]=P>>>16&255,t[47]=P>>>24&255,t[48]=T>>>0&255,t[49]=T>>>8&255,t[50]=T>>>16&255,t[51]=T>>>24&255,t[52]=j>>>0&255,t[53]=j>>>8&255,t[54]=j>>>16&255,t[55]=j>>>24&255,t[56]=C>>>0&255,t[57]=C>>>8&255,t[58]=C>>>16&255,t[59]=C>>>24&255,t[60]=N>>>0&255,t[61]=N>>>8&255,t[62]=N>>>16&255,t[63]=N>>>24&255}function f(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=k>>>0&255,t[5]=k>>>8&255,t[6]=k>>>16&255,t[7]=k>>>24&255,t[8]=R>>>0&255,t[9]=R>>>8&255,t[10]=R>>>16&255,t[11]=R>>>24&255,t[12]=N>>>0&255,t[13]=N>>>8&255,t[14]=N>>>16&255,t[15]=N>>>24&255,t[16]=x>>>0&255,t[17]=x>>>8&255,t[18]=x>>>16&255,t[19]=x>>>24&255,t[20]=I>>>0&255,t[21]=I>>>8&255,t[22]=I>>>16&255,t[23]=I>>>24&255,t[24]=B>>>0&255,t[25]=B>>>8&255,t[26]=B>>>16&255,t[27]=B>>>24&255,t[28]=O>>>0&255,t[29]=O>>>8&255,t[30]=O>>>16&255,t[31]=O>>>24&255}function s(t,e,r,n){a(t,e,r,n)}function u(t,e,r,n){f(t,e,r,n)}function h(t,e,r,n,i,o,a){var f,u,h=new Uint8Array(16),c=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(s(c,h,a,dt),u=0;u<64;u++)t[e+u]=r[n+u]^c[u];for(f=1,u=8;u<16;u++)f=f+(255&h[u])|0,h[u]=255&f,f>>>=8;i-=64,e+=64,n+=64}if(i>0)for(s(c,h,a,dt),u=0;u=64;){for(s(u,f,i,dt),a=0;a<64;a++)t[e+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&f[a])|0,f[a]=255&o,o>>>=8;r-=64,e+=64}if(r>0)for(s(u,f,i,dt),a=0;a>16&1),o[r-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),i=o[15]>>16&1,o[14]&=65535,w(a,o,1-i)}for(r=0;r<16;r++)t[2*r]=255&a[r],t[2*r+1]=a[r]>>8}function M(t,e){var r=new Uint8Array(32),n=new Uint8Array(32);return _(r,t),_(n,e),o(r,0,n,0)}function S(t){var e=new Uint8Array(32);return _(e,t),1&e[0]}function E(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function A(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]+r[n]}function k(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]-r[n]}function x(t,e,r){var n,i,o=0,a=0,f=0,s=0,u=0,h=0,c=0,d=0,l=0,p=0,b=0,v=0,y=0,m=0,g=0,w=0,_=0,M=0,S=0,E=0,A=0,k=0,x=0,I=0,B=0,O=0,R=0,P=0,T=0,j=0,C=0,N=r[0],L=r[1],U=r[2],z=r[3],D=r[4],q=r[5],F=r[6],K=r[7],G=r[8],V=r[9],H=r[10],X=r[11],Y=r[12],W=r[13],Z=r[14],J=r[15];n=e[0],o+=n*N,a+=n*L,f+=n*U,s+=n*z,u+=n*D,h+=n*q,c+=n*F,d+=n*K,l+=n*G,p+=n*V,b+=n*H,v+=n*X,y+=n*Y,m+=n*W,g+=n*Z,w+=n*J,n=e[1],a+=n*N,f+=n*L,s+=n*U,u+=n*z,h+=n*D,c+=n*q,d+=n*F,l+=n*K,p+=n*G,b+=n*V,v+=n*H,y+=n*X,m+=n*Y,g+=n*W,w+=n*Z,_+=n*J,n=e[2],f+=n*N,s+=n*L,u+=n*U,h+=n*z,c+=n*D,d+=n*q,l+=n*F,p+=n*K,b+=n*G,v+=n*V,y+=n*H,m+=n*X,g+=n*Y,w+=n*W,_+=n*Z,M+=n*J,n=e[3],s+=n*N,u+=n*L,h+=n*U,c+=n*z,d+=n*D,l+=n*q,p+=n*F,b+=n*K,v+=n*G,y+=n*V,m+=n*H,g+=n*X,w+=n*Y,_+=n*W,M+=n*Z,S+=n*J,n=e[4],u+=n*N,h+=n*L,c+=n*U,d+=n*z,l+=n*D,p+=n*q,b+=n*F,v+=n*K,y+=n*G,m+=n*V,g+=n*H,w+=n*X,_+=n*Y,M+=n*W,S+=n*Z,E+=n*J,n=e[5],h+=n*N,c+=n*L,d+=n*U,l+=n*z,p+=n*D,b+=n*q,v+=n*F,y+=n*K,m+=n*G,g+=n*V,w+=n*H,_+=n*X,M+=n*Y,S+=n*W,E+=n*Z,A+=n*J,n=e[6],c+=n*N,d+=n*L,l+=n*U,p+=n*z,b+=n*D,v+=n*q,y+=n*F,m+=n*K,g+=n*G,w+=n*V,_+=n*H,M+=n*X,S+=n*Y,E+=n*W,A+=n*Z,k+=n*J,n=e[7],d+=n*N,l+=n*L,p+=n*U,b+=n*z,v+=n*D,y+=n*q,m+=n*F,g+=n*K,w+=n*G,_+=n*V,M+=n*H,S+=n*X,E+=n*Y,A+=n*W,k+=n*Z,x+=n*J,n=e[8],l+=n*N,p+=n*L,b+=n*U,v+=n*z,y+=n*D,m+=n*q,g+=n*F,w+=n*K,_+=n*G,M+=n*V,S+=n*H,E+=n*X,A+=n*Y,k+=n*W,x+=n*Z,I+=n*J,n=e[9],p+=n*N,b+=n*L,v+=n*U,y+=n*z,m+=n*D,g+=n*q,w+=n*F,_+=n*K,M+=n*G,S+=n*V,E+=n*H,A+=n*X,k+=n*Y,x+=n*W,I+=n*Z,B+=n*J,n=e[10],b+=n*N,v+=n*L,y+=n*U,m+=n*z,g+=n*D,w+=n*q,_+=n*F,M+=n*K,S+=n*G,E+=n*V,A+=n*H,k+=n*X,x+=n*Y,I+=n*W,B+=n*Z,O+=n*J,n=e[11],v+=n*N,y+=n*L,m+=n*U,g+=n*z,w+=n*D,_+=n*q,M+=n*F,S+=n*K,E+=n*G,A+=n*V,k+=n*H,x+=n*X;I+=n*Y;B+=n*W,O+=n*Z,R+=n*J,n=e[12],y+=n*N,m+=n*L,g+=n*U,w+=n*z,_+=n*D,M+=n*q,S+=n*F,E+=n*K,A+=n*G,k+=n*V,x+=n*H,I+=n*X,B+=n*Y,O+=n*W,R+=n*Z,P+=n*J,n=e[13],m+=n*N,g+=n*L,w+=n*U,_+=n*z,M+=n*D,S+=n*q,E+=n*F,A+=n*K,k+=n*G,x+=n*V,I+=n*H,B+=n*X,O+=n*Y,R+=n*W,P+=n*Z,T+=n*J,n=e[14],g+=n*N,w+=n*L,_+=n*U,M+=n*z,S+=n*D,E+=n*q,A+=n*F,k+=n*K,x+=n*G,I+=n*V,B+=n*H,O+=n*X,R+=n*Y,P+=n*W,T+=n*Z,j+=n*J,n=e[15],w+=n*N,_+=n*L,M+=n*U,S+=n*z,E+=n*D,A+=n*q,k+=n*F,x+=n*K,I+=n*G,B+=n*V,O+=n*H,R+=n*X,P+=n*Y,T+=n*W,j+=n*Z,C+=n*J,o+=38*_,a+=38*M,f+=38*S,s+=38*E,u+=38*A,h+=38*k,c+=38*x,d+=38*I,l+=38*B,p+=38*O,b+=38*R,v+=38*P,y+=38*T,m+=38*j,g+=38*C,i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),t[0]=o,t[1]=a,t[2]=f,t[3]=s,t[4]=u,t[5]=h,t[6]=c,t[7]=d,t[8]=l,t[9]=p,t[10]=b,t[11]=v,t[12]=y,t[13]=m;t[14]=g;t[15]=w}function I(t,e){x(t,e,e)}function B(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=253;r>=0;r--)I(n,n),2!==r&&4!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function O(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=250;r>=0;r--)I(n,n),1!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function R(t,e,r){var n,i,o=new Uint8Array(32),a=new Float64Array(80),f=tt(),s=tt(),u=tt(),h=tt(),c=tt(),d=tt();for(i=0;i<31;i++)o[i]=e[i];for(o[31]=127&e[31]|64,o[0]&=248,E(a,r),i=0;i<16;i++)s[i]=a[i],h[i]=f[i]=u[i]=0;for(f[0]=h[0]=1,i=254;i>=0;--i)n=o[i>>>3]>>>(7&i)&1,w(f,s,n),w(u,h,n),A(c,f,u),k(f,f,u),A(u,s,h),k(s,s,h),I(h,c),I(d,f),x(f,u,f),x(u,s,c),A(c,f,u),k(f,f,u),I(s,f),k(u,h,d),x(f,u,at),A(f,f,h),x(u,u,f),x(f,h,d),x(h,s,a),I(s,c),w(f,s,n),w(u,h,n);for(i=0;i<16;i++)a[i+16]=f[i],a[i+32]=u[i],a[i+48]=s[i],a[i+64]=h[i];var l=a.subarray(32),p=a.subarray(16);return B(l,l),x(p,p,l),_(t,p),0}function P(t,e){return R(t,e,nt)}function T(t,e){return et(e,32),P(t,e)}function j(t,e,r){var n=new Uint8Array(32);return R(n,r,e),u(t,rt,n,dt)}function C(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),pt(t,e,r,n,a)}function N(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),bt(t,e,r,n,a)}function L(t,e,r,n){for(var i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M,S,E,A,k,x,I,B,O=new Int32Array(16),R=new Int32Array(16),P=t[0],T=t[1],j=t[2],C=t[3],N=t[4],L=t[5],U=t[6],z=t[7],D=e[0],q=e[1],F=e[2],K=e[3],G=e[4],V=e[5],H=e[6],X=e[7],Y=0;n>=128;){for(M=0;M<16;M++)S=8*M+Y,O[M]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[M]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(M=0;M<80;M++)if(i=P,o=T,a=j,f=C,s=N,u=L,h=U,c=z,d=D,l=q,p=F,b=K,v=G,y=V,m=H,g=X,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(N>>>14|G<<18)^(N>>>18|G<<14)^(G>>>9|N<<23),A=(G>>>14|N<<18)^(G>>>18|N<<14)^(N>>>9|G<<23),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=N&L^~N&U,A=G&V^~G&H,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=vt[2*M],A=vt[2*M+1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=O[M%16],A=R[M%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,w=65535&I|B<<16,_=65535&k|x<<16,E=w,A=_,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(P>>>28|D<<4)^(D>>>2|P<<30)^(D>>>7|P<<25),A=(D>>>28|P<<4)^(P>>>2|D<<30)^(P>>>7|D<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=P&T^P&j^T&j,A=D&q^D&F^q&F,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,c=65535&I|B<<16,g=65535&k|x<<16,E=f,A=b,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=w,A=_,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,f=65535&I|B<<16,b=65535&k|x<<16,T=i,j=o,C=a,N=f,L=s,U=u,z=h,P=c,q=d,F=l,K=p,G=b,V=v,H=y,X=m,D=g,M%16===15)for(S=0;S<16;S++)E=O[S],A=R[S],k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=O[(S+9)%16],A=R[(S+9)%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+1)%16],_=R[(S+1)%16],E=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,A=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+14)%16],_=R[(S+14)%16],E=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,A=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,O[S]=65535&I|B<<16,R[S]=65535&k|x<<16;E=P,A=D,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[0],A=e[0],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[0]=P=65535&I|B<<16,e[0]=D=65535&k|x<<16,E=T,A=q,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[1],A=e[1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[1]=T=65535&I|B<<16,e[1]=q=65535&k|x<<16,E=j,A=F,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[2],A=e[2],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[2]=j=65535&I|B<<16,e[2]=F=65535&k|x<<16,E=C,A=K,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[3],A=e[3],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[3]=C=65535&I|B<<16,e[3]=K=65535&k|x<<16,E=N,A=G,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[4],A=e[4],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[4]=N=65535&I|B<<16,e[4]=G=65535&k|x<<16,E=L,A=V,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[5],A=e[5],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[5]=L=65535&I|B<<16,e[5]=V=65535&k|x<<16,E=U,A=H,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[6],A=e[6],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[6]=U=65535&I|B<<16,e[6]=H=65535&k|x<<16,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[7],A=e[7],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[7]=z=65535&I|B<<16,e[7]=X=65535&k|x<<16,Y+=128,n-=128}return n}function U(t,r,n){var i,o=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),s=n;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,L(o,a,r,n),n%=128,i=0;i=0;--i)n=r[i/8|0]>>(7&i)&1,D(t,e,n),z(e,t),z(t,t),D(t,e,n)}function K(t,e){var r=[tt(),tt(),tt(),tt()];\nm(r[0],ut),m(r[1],ht),m(r[2],ot),x(r[3],ut,ht),F(t,r,e)}function G(t,e,r){var n,i=new Uint8Array(64),o=[tt(),tt(),tt(),tt()];for(r||et(e,32),U(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,K(o,i),q(t,o),n=0;n<32;n++)e[n+32]=t[n];return 0}function V(t,e){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,e[i]-=256*r;e[i]+=r,e[n]=0}for(r=0,i=0;i<32;i++)e[i]+=r-(e[31]>>4)*yt[i],r=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=r*yt[i];for(n=0;n<32;n++)e[n+1]+=e[n]>>8,t[n]=255&e[n]}function H(t){var e,r=new Float64Array(64);for(e=0;e<64;e++)r[e]=t[e];for(e=0;e<64;e++)t[e]=0;V(t,r)}function X(t,e,r,n){var i,o,a=new Uint8Array(64),f=new Uint8Array(64),s=new Uint8Array(64),u=new Float64Array(64),h=[tt(),tt(),tt(),tt()];U(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=r+64;for(i=0;i>7&&k(t[0],it,t[0]),x(t[3],t[0],t[1]),0)}function W(t,e,r,n){var i,a,f=new Uint8Array(32),s=new Uint8Array(64),u=[tt(),tt(),tt(),tt()],h=[tt(),tt(),tt(),tt()];if(a=-1,r<64)return-1;if(Y(h,n))return-1;for(i=0;i>>13|r<<3),n=255&t[4]|(255&t[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&t[6]|(255&t[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&t[8]|(255&t[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&t[10]|(255&t[11])<<8,this.r[6]=8191&(o>>>14|a<<2),f=255&t[12]|(255&t[13])<<8,this.r[7]=8065&(a>>>11|f<<5),s=255&t[14]|(255&t[15])<<8,this.r[8]=8191&(f>>>8|s<<8),this.r[9]=s>>>5&127,this.pad[0]=255&t[16]|(255&t[17])<<8,this.pad[1]=255&t[18]|(255&t[19])<<8,this.pad[2]=255&t[20]|(255&t[21])<<8,this.pad[3]=255&t[22]|(255&t[23])<<8,this.pad[4]=255&t[24]|(255&t[25])<<8,this.pad[5]=255&t[26]|(255&t[27])<<8,this.pad[6]=255&t[28]|(255&t[29])<<8,this.pad[7]=255&t[30]|(255&t[31])<<8};lt.prototype.blocks=function(t,e,r){for(var n,i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M=this.fin?0:2048,S=this.h[0],E=this.h[1],A=this.h[2],k=this.h[3],x=this.h[4],I=this.h[5],B=this.h[6],O=this.h[7],R=this.h[8],P=this.h[9],T=this.r[0],j=this.r[1],C=this.r[2],N=this.r[3],L=this.r[4],U=this.r[5],z=this.r[6],D=this.r[7],q=this.r[8],F=this.r[9];r>=16;)n=255&t[e+0]|(255&t[e+1])<<8,S+=8191&n,i=255&t[e+2]|(255&t[e+3])<<8,E+=8191&(n>>>13|i<<3),o=255&t[e+4]|(255&t[e+5])<<8,A+=8191&(i>>>10|o<<6),a=255&t[e+6]|(255&t[e+7])<<8,k+=8191&(o>>>7|a<<9),f=255&t[e+8]|(255&t[e+9])<<8,x+=8191&(a>>>4|f<<12),I+=f>>>1&8191,s=255&t[e+10]|(255&t[e+11])<<8,B+=8191&(f>>>14|s<<2),u=255&t[e+12]|(255&t[e+13])<<8,O+=8191&(s>>>11|u<<5),h=255&t[e+14]|(255&t[e+15])<<8,R+=8191&(u>>>8|h<<8),P+=h>>>5|M,c=0,d=c,d+=S*T,d+=E*(5*F),d+=A*(5*q),d+=k*(5*D),d+=x*(5*z),c=d>>>13,d&=8191,d+=I*(5*U),d+=B*(5*L),d+=O*(5*N),d+=R*(5*C),d+=P*(5*j),c+=d>>>13,d&=8191,l=c,l+=S*j,l+=E*T,l+=A*(5*F),l+=k*(5*q),l+=x*(5*D),c=l>>>13,l&=8191,l+=I*(5*z),l+=B*(5*U),l+=O*(5*L),l+=R*(5*N),l+=P*(5*C),c+=l>>>13,l&=8191,p=c,p+=S*C,p+=E*j,p+=A*T,p+=k*(5*F),p+=x*(5*q),c=p>>>13,p&=8191,p+=I*(5*D),p+=B*(5*z),p+=O*(5*U),p+=R*(5*L),p+=P*(5*N),c+=p>>>13,p&=8191,b=c,b+=S*N,b+=E*C,b+=A*j,b+=k*T,b+=x*(5*F),c=b>>>13,b&=8191,b+=I*(5*q),b+=B*(5*D),b+=O*(5*z),b+=R*(5*U),b+=P*(5*L),c+=b>>>13,b&=8191,v=c,v+=S*L,v+=E*N,v+=A*C,v+=k*j,v+=x*T,c=v>>>13,v&=8191,v+=I*(5*F),v+=B*(5*q),v+=O*(5*D),v+=R*(5*z),v+=P*(5*U),c+=v>>>13,v&=8191,y=c,y+=S*U,y+=E*L,y+=A*N,y+=k*C,y+=x*j,c=y>>>13,y&=8191,y+=I*T,y+=B*(5*F),y+=O*(5*q),y+=R*(5*D),y+=P*(5*z),c+=y>>>13,y&=8191,m=c,m+=S*z,m+=E*U,m+=A*L,m+=k*N,m+=x*C,c=m>>>13,m&=8191,m+=I*j,m+=B*T,m+=O*(5*F),m+=R*(5*q),m+=P*(5*D),c+=m>>>13,m&=8191,g=c,g+=S*D,g+=E*z,g+=A*U,g+=k*L,g+=x*N,c=g>>>13,g&=8191,g+=I*C,g+=B*j,g+=O*T,g+=R*(5*F),g+=P*(5*q),c+=g>>>13,g&=8191,w=c,w+=S*q,w+=E*D,w+=A*z,w+=k*U,w+=x*L,c=w>>>13,w&=8191,w+=I*N,w+=B*C,w+=O*j,w+=R*T,w+=P*(5*F),c+=w>>>13,w&=8191,_=c,_+=S*F,_+=E*q,_+=A*D,_+=k*z,_+=x*U,c=_>>>13,_&=8191,_+=I*L,_+=B*N,_+=O*C,_+=R*j,_+=P*T,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+d|0,d=8191&c,c>>>=13,l+=c,S=d,E=l,A=p,k=b,x=v,I=y,B=m,O=g,R=w,P=_,e+=16,r-=16;this.h[0]=S,this.h[1]=E,this.h[2]=A,this.h[3]=k,this.h[4]=x,this.h[5]=I,this.h[6]=B,this.h[7]=O,this.h[8]=R,this.h[9]=P},lt.prototype.finish=function(t,e){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;t[e+0]=this.h[0]>>>0&255,t[e+1]=this.h[0]>>>8&255,t[e+2]=this.h[1]>>>0&255,t[e+3]=this.h[1]>>>8&255,t[e+4]=this.h[2]>>>0&255,t[e+5]=this.h[2]>>>8&255,t[e+6]=this.h[3]>>>0&255,t[e+7]=this.h[3]>>>8&255,t[e+8]=this.h[4]>>>0&255,t[e+9]=this.h[4]>>>8&255,t[e+10]=this.h[5]>>>0&255,t[e+11]=this.h[5]>>>8&255,t[e+12]=this.h[6]>>>0&255,t[e+13]=this.h[6]>>>8&255,t[e+14]=this.h[7]>>>0&255,t[e+15]=this.h[7]>>>8&255},lt.prototype.update=function(t,e,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(t,e,i),e+=i,r-=i),r){for(n=0;n=0},t.sign.keyPair=function(){var t=new Uint8Array(Rt),e=new Uint8Array(Pt);return G(t,e),{publicKey:t,secretKey:e}},t.sign.keyPair.fromSecretKey=function(t){if($(t),t.length!==Pt)throw new Error(\"bad secret key size\");for(var e=new Uint8Array(Rt),r=0;r0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===t[e-2]?2:\"=\"===t[e-1]?1:0}function n(t){return 3*t.length/4-r(t)}function i(t){var e,n,i,o,a,f,s=t.length;a=r(t),f=new h(3*s/4-a),i=a>0?s-4:s;var c=0;for(e=0,n=0;e>16&255,f[c++]=o>>8&255,f[c++]=255&o;return 2===a?(o=u[t.charCodeAt(e)]<<2|u[t.charCodeAt(e+1)]>>4,f[c++]=255&o):1===a&&(o=u[t.charCodeAt(e)]<<10|u[t.charCodeAt(e+1)]<<4|u[t.charCodeAt(e+2)]>>2,f[c++]=o>>8&255,f[c++]=255&o),f}function o(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function a(t,e,r){for(var n,i=[],a=e;ah?h:u+f));return 1===n?(e=t[r-1],i+=s[e>>2],i+=s[e<<4&63],i+=\"==\"):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=s[e>>10],i+=s[e>>4&63],i+=s[e<<2&63],i+=\"=\"),o.push(i),o.join(\"\")}e.byteLength=n,e.toByteArray=i,e.fromByteArray=f;for(var s=[],u=[],h=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",d=0,l=c.length;d>1,h=-7,c=r?i-1:0,d=r?-1:1,l=t[e+c];for(c+=d,o=l&(1<<-h)-1,l>>=-h,h+=f;h>0;o=256*o+t[e+c],c+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=d,h-=8);if(0===o)o=1-u;else{if(o===s)return a?NaN:(l?-1:1)*(1/0);a+=Math.pow(2,n),o-=u}return(l?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,f,s,u=8*o-i-1,h=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,p=n?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+c>=1?d/s:d*Math.pow(2,1-c),e*s>=2&&(a++,s/=2),a+c>=h?(f=0,a=h):a+c>=1?(f=(e*s-1)*Math.pow(2,i),a+=c):(f=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+l]=255&f,l+=p,f/=256,i-=8);for(a=a<0;t[r+l]=255&a,l+=p,a/=256,u-=8);t[r+l-p]|=128*b}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){function n(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError(\"invalid suite type\");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return o(t,i.key,i.iv)}function i(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError(\"invalid suite type\");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return a(t,i.key,i.iv)}function o(t,e,r){if(t=t.toLowerCase(),d[t])return u.createCipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t});throw new TypeError(\"invalid suite type\")}function a(t,e,r){if(t=t.toLowerCase(),d[t])return u.createDecipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError(\"invalid suite type\")}function f(){return Object.keys(c).concat(u.getCiphers())}var s=r(146),u=r(494),h=r(498),c=r(499),d=r(95);e.createCipher=e.Cipher=n,e.createCipheriv=e.Cipheriv=o,e.createDecipher=e.Decipher=i,e.createDecipheriv=e.Decipheriv=a,e.listCiphers=e.getCiphers=f},function(t,e,r){function n(){return Object.keys(a)}var i=r(496);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv;var o=r(495);e.createDecipher=e.Decipher=o.createDecipher,e.createDecipheriv=e.Decipheriv=o.createDecipheriv;var a=r(95);e.listCiphers=e.getCiphers=n},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(u.call(this),this._cache=new i,this._last=void 0,this._cipher=new s.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(t){for(var e=t[15],r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(208),CBC:r(204),CFB:r(205),CFB8:r(207),CFB1:r(206),OFB:r(209),CTR:r(96),GCM:r(96)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(94),s=r(97),u=r(2),h=r(95),c=r(146),d=r(210),l=r(203);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){i.call(this);var r,n=t.mode.toLowerCase(),o=f[n];r=t.decrypt?\"decrypt\":\"encrypt\";var a=t.key;\"des-ede\"!==n&&\"des-ede-cbc\"!==n||(a=e.concat([a,a.slice(0,8)]));var s=t.iv;this._des=o.create({key:a,iv:s,type:r})}var i=r(500),o=r(145),a=r(2),f={\"des-ede3-cbc\":o.CBC.instantiate(o.EDE),\"des-ede3\":o.EDE,\"des-ede-cbc\":o.CBC.instantiate(o.EDE),\"des-ede\":o.EDE,\"des-cbc\":o.CBC.instantiate(o.DES),\"des-ecb\":o.DES};f.des=f[\"des-cbc\"],f.des3=f[\"des-ede3-cbc\"],t.exports=n,a(n,i),n.prototype._update=function(t){return new e(this._des.update(t))},n.prototype._final=function(){return new e(this._des.final())}}).call(e,r(1).Buffer)},function(t,e){e[\"des-ecb\"]={key:8,iv:0},e[\"des-cbc\"]=e.des={key:8,iv:8},e[\"des-ede3-cbc\"]=e.des3={key:24,iv:8},e[\"des-ede3\"]={key:24,iv:0},e[\"des-ede-cbc\"]={key:16,iv:8},e[\"des-ede\"]={key:16,iv:0}},function(t,e,r){(function(e){function n(t){i.call(this),this.hashMode=\"string\"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._decoder=null,this._encoding=null}var i=r(31).Transform,o=r(2),a=r(52).StringDecoder;t.exports=n,o(n,i),n.prototype.update=function(t,r,n){\"string\"==typeof t&&(t=new e(t,r));var i=this._update(t);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},n.prototype.setAutoPadding=function(){},n.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")},n.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")},n.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")},n.prototype._transform=function(t,e,r){var n;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){n=t}finally{r(n)}},n.prototype._flush=function(t){var e;try{this.push(this._final())}catch(t){e=t}finally{t(e)}},n.prototype._finalOrDigest=function(t){var r=this._final()||new e(\"\");return t&&(r=this._toString(r,t,!0)),r},n.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new a(e),this._encoding=e),this._encoding!==e)throw new Error(\"can't switch encodings\");var n=this._decoder.write(t);return r&&(n+=this._decoder.end()),n}}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t){o.equal(t.length,8,\"Invalid IV length\"),this.iv=new Array(8);for(var e=0;e0;n--)e+=this._buffer(t,e),r+=this._flushBuffer(i,r);return e+=this._buffer(t,e),i},n.prototype.final=function(t){var e;t&&(e=this.update(t));var r;return r=\"encrypt\"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e>>1];r=s.r28shl(r,a),n=s.r28shl(n,a),s.pc2(r,n,t.keys,i)}},i.prototype._update=function(t,e,r,n){var i=this._desState,o=s.readUInt32BE(t,e),a=s.readUInt32BE(t,e+4);s.ip(o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],\"encrypt\"===this.type?this._encrypt(i,o,a,i.tmp,0):this._decrypt(i,o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],s.writeUInt32BE(r,o,n),s.writeUInt32BE(r,a,n+4)},i.prototype._pad=function(t,e){for(var r=t.length-e,n=e;n>>0,o=l}s.rip(a,o,n,i)},i.prototype._decrypt=function(t,e,r,n,i){for(var o=r,a=e,f=t.keys.length-2;f>=0;f-=2){var u=t.keys[f],h=t.keys[f+1];s.expand(o,t.tmp,0),u^=t.tmp[0],h^=t.tmp[1];var c=s.substitute(u,h),d=s.permute(c),l=o;o=(a^d)>>>0,a=l}s.rip(o,a,n,i)}},function(t,e,r){\"use strict\";function n(t,e){o.equal(e.length,24,\"Invalid key length\");var r=e.slice(0,8),n=e.slice(8,16),i=e.slice(16,24);\"encrypt\"===t?this.ciphers=[u.create({type:\"encrypt\",key:r}),u.create({type:\"decrypt\",key:n}),u.create({type:\"encrypt\",key:i})]:this.ciphers=[u.create({type:\"decrypt\",key:i}),u.create({type:\"encrypt\",key:n}),u.create({type:\"decrypt\",key:r})]}function i(t){s.call(this,t);var e=new n(this.type,this.options.key);this._edeState=e}var o=r(98),a=r(2),f=r(145),s=f.Cipher,u=f.DES;a(i,s),t.exports=i,i.create=function(t){return new i(t)},i.prototype._update=function(t,e,r,n){var i=this._edeState;i.ciphers[0]._update(t,e,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},i.prototype._pad=u.prototype._pad,i.prototype._unpad=u.prototype._unpad},function(t,e){\"use strict\";e.readUInt32BE=function(t,e){var r=t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e];return r>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,n){for(var i=0,o=0,a=6;a>=0;a-=2){for(var f=0;f<=24;f+=8)i<<=1,i|=e>>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>>f+a&1}for(var a=6;a>=0;a-=2){for(var f=1;f<=25;f+=8)o<<=1,o|=e>>>f+a&1;for(var f=1;f<=25;f+=8)o<<=1,o|=t>>>f+a&1}r[n+0]=i>>>0,r[n+1]=o>>>0},e.rip=function(t,e,r,n){for(var i=0,o=0,a=0;a<4;a++)for(var f=24;f>=0;f-=8)i<<=1,i|=e>>>f+a&1,i<<=1,i|=t>>>f+a&1;for(var a=4;a<8;a++)for(var f=24;f>=0;f-=8)o<<=1,o|=e>>>f+a&1,o<<=1,o|=t>>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.pc1=function(t,e,r,n){for(var i=0,o=0,a=7;a>=5;a--){\nfor(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>f+a&1}for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var a=1;a<=3;a++){for(var f=0;f<=24;f+=8)o<<=1,o|=e>>f+a&1;for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1}for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,n,i){for(var o=0,a=0,f=r.length>>>1,s=0;s>>r[s]&1;for(var s=f;s>>r[s]&1;n[i+0]=o>>>0,n[i+1]=a>>>0},e.expand=function(t,e,r){var n=0,i=0;n=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=t>>>o&63;for(var o=11;o>=3;o-=4)i|=t>>>o&63,i<<=6;i|=(31&t)<<1|t>>>31,e[r+0]=n>>>0,e[r+1]=i>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,i=0;i<4;i++){var o=t>>>18-6*i&63,a=n[64*i+o];r<<=4,r|=a}for(var i=0;i<4;i++){var o=e>>>18-6*i&63,a=n[256+64*i+o];r<<=4,r|=a}return r>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>i[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var n=t.toString(2);n.length=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(18),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t,e){this.type=t,this.p=new o(e.p,16),this.red=e.prime?o.red(e.prime):o.mont(this.p),this.zero=new o(0).toRed(this.red),this.one=new o(1).toRed(this.red),this.two=new o(2).toRed(this.red),this.n=e.n&&new o(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(18),a=r(19),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error(\"Not implemented\")},n.prototype.validate=function(){throw new Error(\"Not implemented\")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a=\"affine\"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return\"affine\"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M=\"affine\"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i\":\"\"},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){\"use strict\";function n(t){s.call(this,\"mont\",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,\"projective\"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(99),a=r(18),f=r(2),s=o.base,u=r(19),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){\"use strict\";function n(t){h.call(this,\"short\",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,\"affine\"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,\"jacobian\"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(99),f=r(19),s=r(18),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o\":\"\"},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){\"use strict\";function n(t){\"short\"===t.type?this.curve=new f.curve.short(t):\"edwards\"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(49),f=r(19),s=f.utils.assert;o.PresetCurve=n,i(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:a.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),i(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:a.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),i(\"p256\",{\ntype:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:a.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),i(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:a.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),i(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:a.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),i(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"0\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"9\"]}),i(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var u;try{u=r(520)}catch(t){u=void 0}i(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:a.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",u]})},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(\"string\"==typeof t&&(f(o.curves.hasOwnProperty(t),\"Unknown curve \"+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(18),o=r(19),a=o.utils,f=a.assert,s=r(514),u=r(515);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){\"object\"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray(\"be\",a),s=t.toArray(\"be\",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,\"hex\");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,\"The recovery param is more than two bits\"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error(\"Unable to find sencond key candinate\");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},function(t,e,r){\"use strict\";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(18);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:\"Invalid public key\"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},n.prototype.getPublic=function(t,e){return\"string\"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return\"hex\"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return\"\"}},function(t,e,r){\"use strict\";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,\"Signature without r or s\"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(18),u=r(19),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){\"use strict\";function n(t){if(f(\"ed25519\"===t,\"only tested with ed25519 so far\"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(49),o=r(19),a=o.utils,f=a.assert,s=a.parseBytes,u=r(517),h=r(518);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(e,r,i)}var i=r(49),o=r(19),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?\"0\"+t:t}function o(t){for(var e=\"\",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n=\"_\"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return\"string\"==typeof t?c.toArray(t,\"hex\"):t}function h(t){return new d(t,\"hex\",\"le\")}var c=e,d=r(18);c.assert=function(t,e){if(!t)throw new Error(e||\"Assertion failed\")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return\"hex\"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},\"object\"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error(\"Not implemented yet\")};else try{var o=r(609);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(49),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r=\"\",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){var n=r(100),i=n.define(\"RSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())});e.RSAPrivateKey=i;var o=n.define(\"RSAPublicKey\",function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())});e.RSAPublicKey=o;var a=n.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(f),this.key(\"subjectPublicKey\").bitstr())});e.PublicKey=a;var f=n.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}),s=n.define(\"PrivateKeyInfo\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(f),this.key(\"subjectPrivateKey\").octstr())});e.PrivateKey=s;var u=n.define(\"EncryptedPrivateKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())});e.EncryptedPrivateKey=u;var h=n.define(\"DSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())});e.DSAPrivateKey=h,e.DSAparam=n.define(\"DSAparam\",function(){this.int()});var c=n.define(\"ECPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(d),this.key(\"publicKey\").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define(\"ECParameters\",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define(\"signature\",function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m,i=/^-----BEGIN (.*) KEY-----\\r?\\n/m,o=/^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m,a=r(148),f=r(219);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c=\"aes\"+h[1],d=new e(h[2],\"hex\"),l=new e(h[3].replace(/\\r?\\n/g,\"\"),\"base64\"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\\r?\\n/g,\"\"),\"base64\")}var m=u.match(i)[1]+\" KEY\";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(100),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext(\"(function \"+this.name+\"(entity) {\\n this._initNamed(entity);\\n})\")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||\"der\",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||\"der\",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(68).Reporter,o=r(68).EncoderBuffer,a=r(68).DecoderBuffer,f=r(538),s=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],u=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(s),h=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];t.exports=n;var c=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,\"Root node can have only one child\")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if(\"object\"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+\" not implemented for encoding: \"+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,\"tagged\"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,\"content\"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return\"seq\"===t||\"set\"===t?null:\"seqof\"===t||\"setof\"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):\"objid\"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):\"objid\"===t?this._decodeObjid(e,null,null,r):\"gentime\"===t||\"utctime\"===t?this._decodeTime(e,t,r):\"null_\"===t?this._decodeNull(e,r):\"bool\"===t?this._decodeBool(e,r):\"int\"===t||\"enum\"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error(\"unknown tag: \"+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error(\"Choice not matched\")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error(\"Child should have a key\");var n=e.enterKey(r._baseState.key);if(\"object\"!=typeof t)return e.error(\"Child expected, but input is not object\");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if(\"seqof\"===n.tag||\"setof\"===n.tag){if(!n.args||1!==n.args.length)return e.error(\"Too many args for : \"+n.tag);if(!Array.isArray(t))return e.error(\"seqof/setof, but data is not Array\");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?\"universal\":\"context\";null===u?null===n.use&&e.error(\"Tag could be ommited only for .use()\"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,\"context\",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if(\"objid\"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if(\"objid\"===t)return this._encodeObjid(e,null,null);if(\"gentime\"===t||\"utctime\"===t)return this._encodeTime(e,t);if(\"null_\"===t)return this._encodeNull();if(\"int\"===t||\"enum\"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if(\"bool\"===t)return this._encodeBool(e);throw new Error(\"Unsupported tag: \"+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join(\"/\")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return\"[\"+JSON.stringify(t)+\"]\"}).join(\"\"),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(215);e.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",\n21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(216),n.pem=r(535)},function(t,e,r){function n(t){a.call(this,t),this.enc=\"pem\"}var i=r(2),o=r(1).Buffer,a=r(216);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\\r\\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(224),CBC:r(220),CFB:r(221),CFB8:r(223),CFB1:r(222),OFB:r(225),CTR:r(102),GCM:r(102)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(101),s=r(103),u=r(2),h=r(147),c=r(148),d=r(226),l=r(218);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e,r,n){var a=v(e);if(a.curve){if(\"ecdsa\"!==n)throw new Error(\"wrong private key type\");return i(t,a)}if(\"dsa\"===a.type){if(\"dsa\"!==n)throw new Error(\"wrong private key type\");return o(t,a,r)}if(\"rsa\"!==n)throw new Error(\"wrong private key type\");for(var f=a.modulus.byteLength(),s=[0,1];t.length+s.length+10&&r.ishrn(n),r}function u(t,r){t=s(t,r),t=t.mod(r);var n=new e(t.toArray());if(n.length=e)throw new Error(\"invalid sig\")}var f=r(212),s=r(19),u=r(213),h=r(18),c=s.ec;t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){this.curveType=f[t],this.curveType||(this.curveType={name:t}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}function i(t,r,n){Array.isArray(t)||(t=t.toArray());var i=new e(t);if(n&&i.length0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(30),a=r(22),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error(\"Not implemented\")},n.prototype.validate=function(){throw new Error(\"Not implemented\")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a=\"affine\"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return\"affine\"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M=\"affine\"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i\":\"\"},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){\"use strict\";function n(t){s.call(this,\"mont\",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,\"projective\"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(104),a=r(30),f=r(2),s=o.base,u=r(22),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){\"use strict\";function n(t){h.call(this,\"short\",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,\"affine\"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,\"jacobian\"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(104),f=r(22),s=r(30),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o\":\"\"},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},\nu(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){\"use strict\";function n(t){\"short\"===t.type?this.curve=new f.curve.short(t):\"edwards\"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(50),f=r(22),s=f.utils.assert;o.PresetCurve=n,i(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:a.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),i(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:a.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),i(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:a.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),i(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:a.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),i(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:a.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),i(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"0\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"9\"]}),i(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var u;try{u=r(557)}catch(t){u=void 0}i(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:a.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",u]})},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(\"string\"==typeof t&&(f(o.curves.hasOwnProperty(t),\"Unknown curve \"+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(30),o=r(22),a=o.utils,f=a.assert,s=r(551),u=r(552);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){\"object\"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray(\"be\",a),s=t.toArray(\"be\",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,\"hex\");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,\"The recovery param is more than two bits\"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error(\"Unable to find sencond key candinate\");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},function(t,e,r){\"use strict\";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(30);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:\"Invalid public key\"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},n.prototype.getPublic=function(t,e){return\"string\"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return\"hex\"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return\"\"}},function(t,e,r){\"use strict\";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,\"Signature without r or s\"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(30),u=r(22),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){\"use strict\";function n(t){if(f(\"ed25519\"===t,\"only tested with ed25519 so far\"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(50),o=r(22),a=o.utils,f=a.assert,s=a.parseBytes,u=r(554),h=r(555);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(e,r,i)}var i=r(50),o=r(22),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?\"0\"+t:t}function o(t){for(var e=\"\",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n=\"_\"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return\"string\"==typeof t?c.toArray(t,\"hex\"):t}function h(t){return new d(t,\"hex\",\"le\")}var c=e,d=r(30);c.assert=function(t,e){if(!t)throw new Error(e||\"Assertion failed\")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return\"hex\"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},\"object\"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error(\"Not implemented yet\")};else try{var o=r(610);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(50),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r=\"\",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){\"use strict\";(function(t){function r(e,r){if(e.length%o!==0){var n=e.length+(o-e.length%o);e=t.concat([e,a],n)}for(var i=[],f=r?e.readInt32BE:e.readInt32LE,s=0;s>>5]|=t[r]<<24-n%32;return e}function n(t){for(var e=[],r=0;r<32*t.length;r+=8)e.push(t[r>>>5]>>>24-r%32&255);return e}function i(t,e,r){for(var n=0;n<16;n++){var i=r+n,c=e[i];e[i]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var m,g,w,_,M,S,E,A,k,x;S=m=t[0],E=g=t[1],A=w=t[2],k=_=t[3],x=M=t[4];var I;for(n=0;n<80;n+=1)I=m+e[r+d[n]]|0,I+=n<16?o(g,w,_)+v[0]:n<32?a(g,w,_)+v[1]:n<48?f(g,w,_)+v[2]:n<64?s(g,w,_)+v[3]:u(g,w,_)+v[4],I|=0,I=h(I,p[n]),I=I+M|0,m=M,M=_,_=h(w,10),w=g,g=I,I=S+e[r+l[n]]|0,I+=n<16?u(E,A,k)+y[0]:n<32?s(E,A,k)+y[1]:n<48?f(E,A,k)+y[2]:n<64?a(E,A,k)+y[3]:o(E,A,k)+y[4],I|=0,I=h(I,b[n]),I=I+x|0,S=x,x=k,k=h(A,10),A=E,E=I;I=t[1]+w+k|0,t[1]=t[2]+_+x|0,t[2]=t[3]+M+S|0,t[3]=t[4]+m+E|0,t[4]=t[0]+g+A|0,t[0]=I}function o(t,e,r){return t^e^r}function a(t,e,r){return t&e|~t&r}function f(t,e,r){return(t|~e)^r}function s(t,e,r){return t&r|e&~r}function u(t,e,r){return t^(e|~r)}function h(t,e){return t<>>32-e}function c(t){var o=[1732584193,4023233417,2562383102,271733878,3285377520];\"string\"==typeof t&&(t=new e(t,\"utf8\"));var a=r(t),f=8*t.length,s=8*t.length;a[f>>>5]|=128<<24-f%32,a[(f+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var u=0;u>>24)|4278255360&(h<<24|h>>>8)}var c=n(o);return new e(c)}/** @preserve\n(c) 2012 by Cédric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];t.exports=c}).call(e,r(1).Buffer)},function(t,e,r){var e=t.exports=function(t){t=t.toLowerCase();var r=e[t];if(!r)throw new Error(t+\" is not supported (we accept pull requests)\");return new r};e.sha=r(569),e.sha1=r(570),e.sha224=r(571),e.sha256=r(227),e.sha384=r(572),e.sha512=r(228)},function(t,e,r){(function(e){function n(){this.init(),this._w=h,s.call(this,64,56)}function i(t){return t<<5|t>>>27}function o(t){return t<<30|t>>>2}function a(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var f=r(2),s=r(60),u=[1518500249,1859775393,-1894007588,-899497514],h=new Array(80);f(n,s),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,f=0|this._c,s=0|this._d,h=0|this._e,c=0;c<16;++c)e[c]=t.readInt32BE(4*c);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var d=0;d<80;++d){var l=~~(d/20),p=i(r)+a(l,n,f,s)+h+e[d]+u[l]|0;h=s,s=f,f=o(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=f+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=c,u.call(this,64,56)}function i(t){return t<<1|t>>>31}function o(t){return t<<5|t>>>27}function a(t){return t<<30|t>>>2}function f(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var s=r(2),u=r(60),h=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(n,u),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,s=0|this._c,u=0|this._d,c=0|this._e,d=0;d<16;++d)e[d]=t.readInt32BE(4*d);for(;d<80;++d)e[d]=i(e[d-3]^e[d-8]^e[d-14]^e[d-16]);for(var l=0;l<80;++l){var p=~~(l/20),b=o(r)+f(p,n,s,u)+c+e[l]+h[p]|0;c=u,u=s,s=a(n),n=r,r=b}this._a=r+this._a|0,this._b=n+this._b|0,this._c=s+this._c|0,this._d=u+this._d|0,this._e=c+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,64,56)}var i=r(2),o=r(227),a=r(60),f=new Array(64);i(n,o),n.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},n.prototype._hash=function(){var t=new e(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,128,112)}var i=r(2),o=r(228),a=r(60),f=new Array(160);i(n,o),n.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(48);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e){var r=new t(a[e].prime,\"hex\"),n=new t(a[e].gen,\"hex\");return new f(r,n)}function i(e,r,n,a){return t.isBuffer(r)||void 0===s[r]?i(e,\"binary\",r,n):(r=r||\"binary\",a=a||\"binary\",n=n||new t([2]),t.isBuffer(n)||(n=new t(n,a)),\"number\"==typeof e?new f(o(e,n),n,!0):(t.isBuffer(e)||(e=new t(e,r)),new f(e,n,!0)))}var o=r(229),a=r(468),f=r(574),s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=n,e.createDiffieHellman=e.DiffieHellman=i}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){return r=r||\"utf8\",e.isBuffer(t)||(t=new e(t,r)),this._pub=new s(t),this}function i(t,r){return r=r||\"utf8\",e.isBuffer(t)||(t=new e(t,r)),this._priv=new s(t),this}function o(t,e){var r=e.toString(\"hex\"),n=[r,t.toString(16)].join(\"_\");if(n in m)return m[n];var i=0;if(t.isEven()||!v.simpleSieve||!v.fermatTest(t)||!h.test(t))return i+=1,i+=\"02\"===r||\"05\"===r?8:4,m[n]=i,i;h.test(t.shrn(1))||(i+=2);var o;switch(r){case\"02\":t.mod(c).cmp(d)&&(i+=8);break;case\"05\":o=t.mod(l),o.cmp(p)&&o.cmp(b)&&(i+=8);break;default:i+=4}return m[n]=i,i}function a(t,e,r){this.setGenerator(e),this.__prime=new s(t),this._prime=s.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=n,this.setPrivateKey=i):this._primeCode=8}function f(t,r){var n=new e(t.toArray());return r?n.toString(r):n}var s=r(150),u=r(230),h=new u,c=new s(24),d=new s(11),l=new s(10),p=new s(3),b=new s(7),v=r(229),y=r(61);t.exports=a;var m={};Object.defineProperty(a.prototype,\"verifyError\",{enumerable:!0,get:function(){return\"number\"!=typeof this._primeCode&&(this._primeCode=o(this.__prime,this.__gen)),this._primeCode}}),a.prototype.generateKeys=function(){return this._priv||(this._priv=new s(y(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},a.prototype.computeSecret=function(t){t=new s(t),t=t.toRed(this._prime);var r=t.redPow(this._priv).fromRed(),n=new e(r.toArray()),i=this.getPrime();if(n.lengthr||e!==e)throw new TypeError(\"Bad key length\")}},function(t,e,r){e.publicEncrypt=r(593),e.privateDecrypt=r(592),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var n=r(106),i=n.define(\"RSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())});e.RSAPrivateKey=i;var o=n.define(\"RSAPublicKey\",function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())});e.RSAPublicKey=o;var a=n.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(f),this.key(\"subjectPublicKey\").bitstr())});e.PublicKey=a;var f=n.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}),s=n.define(\"PrivateKeyInfo\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(f),this.key(\"subjectPrivateKey\").octstr())});e.PrivateKey=s;var u=n.define(\"EncryptedPrivateKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())});e.EncryptedPrivateKey=u;var h=n.define(\"DSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())});e.DSAPrivateKey=h,e.DSAparam=n.define(\"DSAparam\",function(){this.int()});var c=n.define(\"ECPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(d),this.key(\"publicKey\").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define(\"ECParameters\",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define(\"signature\",function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m,i=/^-----BEGIN (.*) KEY-----\\r?\\n/m,o=/^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m,a=r(153),f=r(239);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c=\"aes\"+h[1],d=new e(h[2],\"hex\"),l=new e(h[3].replace(/\\r?\\n/g,\"\"),\"base64\"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\\r?\\n/g,\"\"),\"base64\")}var m=u.match(i)[1]+\" KEY\";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(106),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext(\"(function \"+this.name+\"(entity) {\\n this._initNamed(entity);\\n})\")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||\"der\",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||\"der\",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(71).Reporter,o=r(71).EncoderBuffer,a=r(71).DecoderBuffer,f=r(588),s=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],u=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(s),h=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];t.exports=n;var c=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,\"Root node can have only one child\")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if(\"object\"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+\" not implemented for encoding: \"+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,\"tagged\"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,\"content\"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return\"seq\"===t||\"set\"===t?null:\"seqof\"===t||\"setof\"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):\"objid\"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):\"objid\"===t?this._decodeObjid(e,null,null,r):\"gentime\"===t||\"utctime\"===t?this._decodeTime(e,t,r):\"null_\"===t?this._decodeNull(e,r):\"bool\"===t?this._decodeBool(e,r):\"int\"===t||\"enum\"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error(\"unknown tag: \"+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error(\"Choice not matched\")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error(\"Child should have a key\");var n=e.enterKey(r._baseState.key);if(\"object\"!=typeof t)return e.error(\"Child expected, but input is not object\");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if(\"seqof\"===n.tag||\"setof\"===n.tag){if(!n.args||1!==n.args.length)return e.error(\"Too many args for : \"+n.tag);if(!Array.isArray(t))return e.error(\"seqof/setof, but data is not Array\");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?\"universal\":\"context\";null===u?null===n.use&&e.error(\"Tag could be ommited only for .use()\"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,\"context\",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if(\"objid\"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if(\"objid\"===t)return this._encodeObjid(e,null,null);if(\"gentime\"===t||\"utctime\"===t)return this._encodeTime(e,t);if(\"null_\"===t)return this._encodeNull();if(\"int\"===t||\"enum\"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if(\"bool\"===t)return this._encodeBool(e);throw new Error(\"Unsupported tag: \"+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join(\"/\")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return\"[\"+JSON.stringify(t)+\"]\"}).join(\"\"),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(235);e.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(236),n.pem=r(585)},function(t,e,r){function n(t){a.call(this,t),this.enc=\"pem\"}var i=r(2),o=r(1).Buffer,a=r(236);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\\r\\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(244),CBC:r(240),CFB:r(241),CFB8:r(243),CFB1:r(242),OFB:r(245),CTR:r(108),GCM:r(108)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(107),s=r(109),u=r(2),h=r(152),c=r(153),d=r(246),l=r(238);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=(t.modulus,t.modulus.byteLength()),i=(r.length,c(\"sha1\").update(new e(\"\")).digest()),a=i.length;if(0!==r[0])throw new Error(\"decryption error\");var u=r.slice(1,a+1),h=r.slice(a+1),d=s(u,f(h,a)),l=s(h,f(d,n-a-1));if(o(i,l.slice(0,a)))throw new Error(\"decryption error\");for(var p=a;0===l[p];)p++;if(1!==l[p++])throw new Error(\"decryption error\");return l.slice(p)}function i(t,e,r){for(var n=e.slice(0,2),i=2,o=0;0!==e[i++];)if(i>=e.length){o++;break}var a=e.slice(2,i-1);e.slice(i-1,i);if((\"0002\"!==n.toString(\"hex\")&&!r||\"0001\"!==n.toString(\"hex\")&&r)&&o++,a.length<8&&o++,o)throw new Error(\"decryption error\");return e.slice(i)}function o(t,r){t=new e(t),r=new e(r);var n=0,i=t.length;t.length!==r.length&&(n++,i=Math.min(t.length,r.length));for(var o=-1;++oc||new u(r).cmp(s.modulus)>=0)throw new Error(\"decryption error\");var l;l=o?d(new u(r),s):h(r,s);var p=new e(c-l.length);if(p.fill(0),l=e.concat([p,l],c),4===f)return n(s,l);if(1===f)return i(s,l,o);if(3===f)return l;throw new Error(\"unknown padding\")}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=t.modulus.byteLength(),i=r.length,o=s(\"sha1\").update(new e(\"\")).digest(),a=o.length,d=2*a;if(i>n-d-2)throw new Error(\"message too long\");var l=new e(n-i-d-2);l.fill(0);var p=n-a-1,b=f(a),v=h(e.concat([o,l,new e([1]),r],p),u(b,p)),y=h(b,u(v,a));return new c(e.concat([new e([0]),y,v],n))}function i(t,r,n){var i=r.length,a=t.modulus.byteLength();if(i>a-11)throw new Error(\"message too long\");var f;return n?(f=new e(a-i-3),f.fill(255)):f=o(a-i-3),new c(e.concat([new e([0,n?1:2]),f,new e([0]),r],a))}function o(t,r){for(var n,i=new e(t),o=0,a=f(2*t),s=0;o=0)throw new Error(\"data too long for modulus\")}return r?l(f,s):d(f,s)}}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function r(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];\".\"===i?t.splice(n,1):\"..\"===i?(t.splice(n,1),\nr++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift(\"..\");return t}function n(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!i;o--){var a=o>=0?arguments[o]:t.cwd();if(\"string\"!=typeof a)throw new TypeError(\"Arguments to path.resolve must be strings\");a&&(e=a+\"/\"+e,i=\"/\"===a.charAt(0))}return e=r(n(e.split(\"/\"),function(t){return!!t}),!i).join(\"/\"),(i?\"/\":\"\")+e||\".\"},e.normalize=function(t){var i=e.isAbsolute(t),o=\"/\"===a(t,-1);return t=r(n(t.split(\"/\"),function(t){return!!t}),!i).join(\"/\"),t||i||(t=\".\"),t&&o&&(t+=\"/\"),(i?\"/\":\"\")+t},e.isAbsolute=function(t){return\"/\"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(n(t,function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"Arguments to path.join must be strings\");return t}).join(\"/\"))},e.relative=function(t,r){function n(t){for(var e=0;e=0&&\"\"===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var i=n(t.split(\"/\")),o=n(r.split(\"/\")),a=Math.min(i.length,o.length),f=a,s=0;s0?this.tail.next=e:this.head=e,this.tail=e,++this.length},n.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},n.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},n.prototype.clear=function(){this.head=this.tail=null,this.length=0},n.prototype.join=function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r},n.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){(function(e){function r(t,e){function r(){if(!i){if(n(\"throwDeprecation\"))throw new Error(e);n(\"traceDeprecation\")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(n(\"noDeprecation\"))return t;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&\"true\"===String(r).toLowerCase()}t.exports=r}).call(e,r(39))},function(t,e,r){t.exports=r(249)},function(t,e,r){(function(n){var i=function(){try{return r(31)}catch(t){}}();e=t.exports=r(250),e.Stream=i||e,e.Readable=e,e.Writable=r(155),e.Duplex=r(51),e.Transform=r(154),e.PassThrough=r(249),!n.browser&&\"disable\"===n.env.READABLE_STREAM&&i&&(t.exports=i)}).call(e,r(26))},function(t,e,r){t.exports=r(154)},function(t,e,r){t.exports=r(155)},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){t.exports=function(t){return t&&\"object\"==typeof t&&\"function\"==typeof t.copy&&\"function\"==typeof t.fill&&\"function\"==typeof t.readUInt8}},function(t,e,r){(function(t,n){function i(t,r){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),b(r)?n.showHidden=r:r&&e._extend(n,r),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),s(n,t,n.depth)}function o(t,e){var r=i.styles[e];return r?\"\u001b[\"+i.colors[r][0]+\"m\"+t+\"\u001b[\"+i.colors[r][1]+\"m\":t}function a(t,e){return t}function f(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function s(t,r,n){if(t.customInspect&&r&&k(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return g(i)||(i=s(t,i,n)),i}var o=u(t,r);if(o)return o;var a=Object.keys(r),b=f(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),A(r)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0))return h(r);if(0===a.length){if(k(r)){var v=r.name?\": \"+r.name:\"\";return t.stylize(\"[Function\"+v+\"]\",\"special\")}if(M(r))return t.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(E(r))return t.stylize(Date.prototype.toString.call(r),\"date\");if(A(r))return h(r)}var y=\"\",m=!1,w=[\"{\",\"}\"];if(p(r)&&(m=!0,w=[\"[\",\"]\"]),k(r)){var _=r.name?\": \"+r.name:\"\";y=\" [Function\"+_+\"]\"}if(M(r)&&(y=\" \"+RegExp.prototype.toString.call(r)),E(r)&&(y=\" \"+Date.prototype.toUTCString.call(r)),A(r)&&(y=\" \"+h(r)),0===a.length&&(!m||0==r.length))return w[0]+y+w[1];if(n<0)return M(r)?t.stylize(RegExp.prototype.toString.call(r),\"regexp\"):t.stylize(\"[Object]\",\"special\");t.seen.push(r);var S;return S=m?c(t,r,n,b,a):a.map(function(e){return d(t,r,n,b,e,m)}),t.seen.pop(),l(S,y,w)}function u(t,e){if(_(e))return t.stylize(\"undefined\",\"undefined\");if(g(e)){var r=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return t.stylize(r,\"string\")}return m(e)?t.stylize(\"\"+e,\"number\"):b(e)?t.stylize(\"\"+e,\"boolean\"):v(e)?t.stylize(\"null\",\"null\"):void 0}function h(t){return\"[\"+Error.prototype.toString.call(t)+\"]\"}function c(t,e,r,n,i){for(var o=[],a=0,f=e.length;a-1&&(f=o?f.split(\"\\n\").map(function(t){return\" \"+t}).join(\"\\n\").substr(2):\"\\n\"+f.split(\"\\n\").map(function(t){return\" \"+t}).join(\"\\n\"))):f=t.stylize(\"[Circular]\",\"special\")),_(a)){if(o&&i.match(/^\\d+$/))return f;a=JSON.stringify(\"\"+i),a.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,\"name\")):(a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),a=t.stylize(a,\"string\"))}return a+\": \"+f}function l(t,e,r){var n=0,i=t.reduce(function(t,e){return n++,e.indexOf(\"\\n\")>=0&&n++,t+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0);return i>60?r[0]+(\"\"===e?\"\":e+\"\\n \")+\" \"+t.join(\",\\n \")+\" \"+r[1]:r[0]+e+\" \"+t.join(\", \")+\" \"+r[1]}function p(t){return Array.isArray(t)}function b(t){return\"boolean\"==typeof t}function v(t){return null===t}function y(t){return null==t}function m(t){return\"number\"==typeof t}function g(t){return\"string\"==typeof t}function w(t){return\"symbol\"==typeof t}function _(t){return void 0===t}function M(t){return S(t)&&\"[object RegExp]\"===I(t)}function S(t){return\"object\"==typeof t&&null!==t}function E(t){return S(t)&&\"[object Date]\"===I(t)}function A(t){return S(t)&&(\"[object Error]\"===I(t)||t instanceof Error)}function k(t){return\"function\"==typeof t}function x(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||\"undefined\"==typeof t}function I(t){return Object.prototype.toString.call(t)}function B(t){return t<10?\"0\"+t.toString(10):t.toString(10)}function O(){var t=new Date,e=[B(t.getHours()),B(t.getMinutes()),B(t.getSeconds())].join(\":\");return[t.getDate(),C[t.getMonth()],e].join(\" \")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var P=/%[sdj%]/g;e.format=function(t){if(!g(t)){for(var e=[],r=0;r=o)return t;switch(t){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(t){return\"[Circular]\"}default:return t}}),f=n[r];r> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {/**\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\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(53), __webpack_require__(10)))\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar json = typeof JSON !== 'undefined' ? JSON : __webpack_require__(50);\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports.parse = __webpack_require__(51);\nexports.stringify = __webpack_require__(52);\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nvar at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar 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 crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (true) {\n // Node.js.\n crypto = __webpack_require__(55);\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(11);\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// bundle.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 56);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap feecbb298d3f6a066145","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_descriptors.js\n// module id = 0\n// module chunks = 0","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_fails.js\n// module id = 1\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_global.js\n// module id = 2\n// module chunks = 0","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_is-object.js\n// module id = 3\n// module chunks = 0","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/node-libs-browser/~/buffer/index.js\n// module id = 4\n// module chunks = 0","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_core.js\n// module id = 5\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_defined.js\n// module id = 6\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_iobject.js\n// module id = 7\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-integer.js\n// module id = 8\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-iobject.js\n// module id = 9\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 10\n// module chunks = 0","import { Buffer } from 'buffer';\n\nimport base58 from 'bs58';\nimport clone from 'clone';\nimport cc from 'five-bells-condition';\nimport nacl from 'tweetnacl';\nimport sha3 from 'js-sha3';\nimport stableStringify from 'json-stable-stringify';\n\n/**\n * @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys)\n * @type {Object}\n * @property {string} publicKey\n * @property {string} privateKey\n */\nexport function Ed25519Keypair() {\n const keyPair = nacl.sign.keyPair();\n this.publicKey = base58.encode(keyPair.publicKey);\n\n // tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer)\n this.privateKey = base58.encode(keyPair.secretKey.slice(0, 32));\n}\n\n/**\n * Create an Ed25519 Cryptocondition from an Ed25519 public key to put into an Output of a Transaction\n * @param {string} publicKey base58 encoded Ed25519 public key for the recipient of the Transaction\n * @returns {object} Ed25519 Condition (that will need to wrapped in an Output)\n */\nexport function makeEd25519Condition(publicKey) {\n const publicKeyBuffer = new Buffer(base58.decode(publicKey));\n\n const ed25519Fulfillment = new cc.Ed25519();\n ed25519Fulfillment.setPublicKey(publicKeyBuffer);\n const conditionUri = ed25519Fulfillment.getConditionUri();\n\n return {\n 'details': {\n 'signature': null,\n 'type_id': 4,\n 'type': 'fulfillment',\n 'bitmask': 32,\n 'public_key': publicKey,\n },\n 'uri': conditionUri,\n };\n}\n\n/**\n * Create an Output from a Condition.\n * Note: Assumes the given Condition was generated from a single public key (e.g. a Ed25519 Condition)\n * @param {object} condition Condition (e.g. a Ed25519 Condition from `makeEd25519Condition()`)\n * @param {number} amount Amount of the output\n * @returns {object} An Output usable in a Transaction\n */\nexport function makeOutput(condition, amount = 1) {\n return {\n amount,\n condition,\n 'public_keys': [condition.details.public_key],\n };\n}\n\n/**\n * Generate a `CREATE` transaction holding the `asset`, `metadata`, and `outputs`, to be signed by\n * the `issuers`.\n * @param {object} asset Created asset's data\n * @param {object} metadata Metadata for the Transaction\n * @param {object[]} outputs Array of Output objects to add to the Transaction.\n * Think of these as the recipients of the asset after the transaction.\n * For `CREATE` Transactions, this should usually just be a list of\n * Outputs wrapping Ed25519 Conditions generated from the issuers' public\n * keys (so that the issuers are the recipients of the created asset).\n * @param {...string[]} issuers Public key of one or more issuers to the asset being created by this\n * Transaction.\n * Note: Each of the private keys corresponding to the given public\n * keys MUST be used later (and in the same order) when signing the\n * Transaction (`signTransaction()`).\n * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before\n * sending it off!\n */\nexport function makeCreateTransaction(asset, metadata, outputs, ...issuers) {\n const assetDefinition = {\n 'data': asset || null,\n };\n const inputs = issuers.map((issuer) => makeInputTemplate([issuer]));\n\n return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs);\n}\n\n/**\n * Generate a `TRANSFER` transaction holding the `asset`, `metadata`, and `outputs`, that fulfills\n * the `fulfilledOutputs` of `unspentTransaction`.\n * @param {object} unspentTransaction Previous Transaction you have control over (i.e. can fulfill\n * its Output Condition)\n * @param {object} metadata Metadata for the Transaction\n * @param {object[]} outputs Array of Output objects to add to the Transaction.\n * Think of these as the recipients of the asset after the transaction.\n * For `TRANSFER` Transactions, this should usually just be a list of\n * Outputs wrapping Ed25519 Conditions generated from the public keys of\n * the recipients.\n * @param {...number} fulfilledOutputs Indices of the Outputs in `unspentTransaction` that this\n * Transaction fulfills.\n * Note that the public keys listed in the fulfilled Outputs\n * must be used (and in the same order) to sign the Transaction\n * (`signTransaction()`).\n * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before\n * sending it off!\n */\nexport function makeTransferTransaction(unspentTransaction, metadata, outputs, ...fulfilledOutputs) {\n const inputs = fulfilledOutputs.map((outputIndex) => {\n const fulfilledOutput = unspentTransaction.outputs[outputIndex];\n const transactionLink = {\n 'output': outputIndex,\n 'txid': unspentTransaction.id,\n };\n\n return makeInputTemplate(fulfilledOutput.public_keys, transactionLink);\n });\n\n const assetLink = {\n 'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id\n : unspentTransaction.asset.id\n };\n\n return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs);\n}\n\n/**\n * Sign the given `transaction` with the given `privateKey`s, returning a new copy of `transaction`\n * that's been signed.\n * Note: Only generates Ed25519 Fulfillments. Thresholds and other types of Fulfillments are left as\n * an exercise for the user.\n * @param {object} transaction Transaction to sign. `transaction` is not modified.\n * @param {...string} privateKeys Private keys associated with the issuers of the `transaction`.\n * Looped through to iteratively sign any Input Fulfillments found in\n * the `transaction`.\n * @returns {object} The signed version of `transaction`.\n */\nexport function signTransaction(transaction, ...privateKeys) {\n const signedTx = clone(transaction);\n signedTx.inputs.forEach((input, index) => {\n const privateKey = privateKeys[index];\n const privateKeyBuffer = new Buffer(base58.decode(privateKey));\n const serializedTransaction = serializeTransactionIntoCanonicalString(transaction);\n\n const ed25519Fulfillment = new cc.Ed25519();\n ed25519Fulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer);\n const fulfillmentUri = ed25519Fulfillment.serializeUri();\n\n input.fulfillment = fulfillmentUri;\n });\n\n return signedTx;\n}\n\n/*********************\n * Transaction utils *\n *********************/\n\nfunction makeTransactionTemplate() {\n return {\n 'id': null,\n 'operation': null,\n 'outputs': [],\n 'inputs': [],\n 'metadata': null,\n 'asset': null,\n 'version': '0.9',\n };\n}\n\nfunction makeInputTemplate(publicKeys = [], fulfills = null, fulfillment = null) {\n return {\n fulfillment,\n fulfills,\n 'owners_before': publicKeys,\n };\n}\n\nfunction makeTransaction(operation, asset, metadata = null, outputs = [], inputs = []) {\n const tx = makeTransactionTemplate();\n tx.operation = operation;\n tx.asset = asset;\n tx.metadata = metadata;\n tx.inputs = inputs;\n tx.outputs = outputs;\n\n // Hashing must be done after, as the hash is of the Transaction (up to now)\n tx.id = hashTransaction(tx);\n return tx;\n}\n\n/****************\n * Crypto utils *\n ****************/\n\nfunction hashTransaction(transaction) {\n // Safely remove any tx id from the given transaction for hashing\n const tx = { ...transaction };\n delete tx.id;\n\n return sha256Hash(serializeTransactionIntoCanonicalString(tx));\n}\n\nfunction sha256Hash(data) {\n return sha3.sha3_256\n .create()\n .update(data)\n .hex();\n}\n\nfunction serializeTransactionIntoCanonicalString(transaction) {\n // BigchainDB signs fulfillments by serializing transactions into a \"canonical\" format where\n // each fulfillment URI is removed before sorting the remaining keys\n const tx = clone(transaction);\n tx.inputs.forEach((input) => {\n input.fulfillment = null;\n });\n\n // Sort the keys\n return stableStringify(tx, (a, b) => (a.key > b.key ? 1 : -1));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/core-js/object/assign.js\n// module id = 12\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/babel-runtime/helpers/extends.js\n// module id = 13\n// module chunks = 0","// 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\nmodule.exports = function base (ALPHABET) {\n var ALPHABET_MAP = {}\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n\n // pre-compute lookup table\n for (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\n function encode (source) {\n if (source.length === 0) return ''\n\n var digits = [0]\n for (var i = 0; i < source.length; ++i) {\n for (var j = 0, carry = source[i]; j < digits.length; ++j) {\n carry += digits[j] << 8\n digits[j] = carry % BASE\n carry = (carry / BASE) | 0\n }\n\n while (carry > 0) {\n digits.push(carry % BASE)\n carry = (carry / BASE) | 0\n }\n }\n\n var string = ''\n\n // deal with leading zeros\n for (var k = 0; source[k] === 0 && k < source.length - 1; ++k) string += ALPHABET[0]\n // convert digits to a string\n for (var q = digits.length - 1; q >= 0; --q) string += ALPHABET[digits[q]]\n\n return string\n }\n\n function decodeUnsafe (string) {\n if (string.length === 0) return Buffer.allocUnsafe(0)\n\n var bytes = [0]\n for (var i = 0; i < string.length; i++) {\n var value = ALPHABET_MAP[string[i]]\n if (value === undefined) return\n\n for (var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * 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 (var k = 0; string[k] === LEADER && k < string.length - 1; ++k) {\n bytes.push(0)\n }\n\n return Buffer.from(bytes.reverse())\n }\n\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) return buffer\n\n throw new Error('Non-base' + BASE + ' character')\n }\n\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base-x/index.js\n// module id = 14\n// module chunks = 0","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base64-js/index.js\n// module id = 15\n// module chunks = 0","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/bs58/index.js\n// module id = 16\n// module chunks = 0","var clone = (function() {\n'use strict';\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (parent instanceof nativeMap) {\n child = new nativeMap();\n } else if (parent instanceof nativeSet) {\n child = new nativeSet();\n } else if (parent instanceof nativePromise) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (parent instanceof Error) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (parent instanceof nativeMap) {\n var keyIterator = parent.keys();\n while(true) {\n var next = keyIterator.next();\n if (next.done) {\n break;\n }\n var keyChild = _clone(next.value, depth - 1);\n var valueChild = _clone(parent.get(next.value), depth - 1);\n child.set(keyChild, valueChild);\n }\n }\n if (parent instanceof nativeSet) {\n var iterator = parent.keys();\n while(true) {\n var next = iterator.next();\n if (next.done) {\n break;\n }\n var entryChild = _clone(next.value, depth - 1);\n child.add(entryChild);\n }\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/clone/clone.js\n// module id = 17\n// module chunks = 0","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/fn/object/assign.js\n// module id = 18\n// module chunks = 0","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_a-function.js\n// module id = 19\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_an-object.js\n// module id = 20\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_array-includes.js\n// module id = 21\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_cof.js\n// module id = 22\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ctx.js\n// module id = 23\n// module chunks = 0","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_dom-create.js\n// module id = 24\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_enum-bug-keys.js\n// module id = 25\n// module chunks = 0","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_export.js\n// module id = 26\n// module chunks = 0","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_has.js\n// module id = 27\n// module chunks = 0","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_hide.js\n// module id = 28\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_ie8-dom-define.js\n// module id = 29\n// module chunks = 0","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys')\n , gOPS = require('./_object-gops')\n , pIE = require('./_object-pie')\n , toObject = require('./_to-object')\n , IObject = require('./_iobject')\n , $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function(){\n var A = {}\n , B = {}\n , S = Symbol()\n , K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function(k){ B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source){ // eslint-disable-line no-unused-vars\n var T = toObject(target)\n , aLen = arguments.length\n , index = 1\n , getSymbols = gOPS.f\n , isEnum = pIE.f;\n while(aLen > index){\n var S = IObject(arguments[index++])\n , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)\n , length = keys.length\n , j = 0\n , key;\n while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];\n } return T;\n} : $assign;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-assign.js\n// module id = 30\n// module chunks = 0","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-dp.js\n// module id = 31\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-gops.js\n// module id = 32\n// module chunks = 0","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys-internal.js\n// module id = 33\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-keys.js\n// module id = 34\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_object-pie.js\n// module id = 35\n// module chunks = 0","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_property-desc.js\n// module id = 36\n// module chunks = 0","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared-key.js\n// module id = 37\n// module chunks = 0","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_shared.js\n// module id = 38\n// module chunks = 0","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-index.js\n// module id = 39\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-length.js\n// module id = 40\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-object.js\n// module id = 41\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_to-primitive.js\n// module id = 42\n// module chunks = 0","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/_uid.js\n// module id = 43\n// module chunks = 0","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/library/modules/es6.object.assign.js\n// module id = 44\n// module chunks = 0","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"FiveBellsCondition\",[],e):\"object\"==typeof exports?exports.FiveBellsCondition=e():t.FiveBellsCondition=e()}(this,function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,e,r){Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,\"a\",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=613)}([function(t,e,r){var n=r(4),i=r(32),o=r(14),a=r(15),f=r(33),s=\"prototype\",u=function(t,e,r){var h,c,d,l,p=t&u.F,b=t&u.G,v=t&u.S,y=t&u.P,m=t&u.B,g=b?n:v?n[e]||(n[e]={}):(n[e]||{})[s],w=b?i:i[e]||(i[e]={}),_=w[s]||(w[s]={});b&&(r=e);for(h in r)c=!p&&g&&void 0!==g[h],d=(c?g:r)[h],l=m&&c?f(d,n):y&&\"function\"==typeof d?f(Function.call,d):d,g&&a(g,h,d,t&u.U),w[h]!=d&&o(w,h,l),y&&_[h]!=d&&(_[h]=d)};n.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},function(t,e,r){\"use strict\";(function(t,n){function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}function o(){return t.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,r){if(o()=o())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+o().toString(16)+\" bytes\");return 0|t}function v(e){return+e!=e&&(e=0),t.alloc(+e)}function y(e,r){if(t.isBuffer(e))return e.length;if(\"undefined\"!=typeof ArrayBuffer&&\"function\"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!=typeof e&&(e=\"\"+e);var n=e.length;if(0===n)return 0;for(var i=!1;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":case void 0:return V(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return Y(e).length;default:if(i)return V(e).length;r=(\"\"+r).toLowerCase(),i=!0}}function m(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if(r>>>=0,e>>>=0,r<=e)return\"\";for(t||(t=\"utf8\");;)switch(t){case\"hex\":return T(this,e,r);case\"utf8\":case\"utf-8\":return B(this,e,r);case\"ascii\":return R(this,e,r);case\"latin1\":case\"binary\":return P(this,e,r);case\"base64\":return I(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return j(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function w(e,r,n,i,o){if(0===e.length)return-1;if(\"string\"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if(\"string\"==typeof r&&(r=t.from(r,i)),t.isBuffer(r))return 0===r.length?-1:_(e,r,n,i,o);if(\"number\"==typeof r)return r&=255,t.TYPED_ARRAY_SUPPORT&&\"function\"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):_(e,[r],n,i,o);throw new TypeError(\"val must be string, number or Buffer\")}function _(t,e,r,n,i){function o(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}var a=1,f=t.length,s=e.length;if(void 0!==n&&(n=String(n).toLowerCase(),\"ucs2\"===n||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(t.length<2||e.length<2)return-1;a=2,f/=2,s/=2,r/=2}var u;if(i){var h=-1;for(u=r;uf&&(r=f-s),u=r;u>=0;u--){for(var c=!0,d=0;di&&(n=i)):n=i;var o=e.length;if(o%2!==0)throw new TypeError(\"Invalid hex string\");n>o/2&&(n=o/2);for(var a=0;a239?4:o>223?3:o>191?2:1;if(i+f<=r){var s,u,h,c;switch(f){case 1:o<128&&(a=o);break;case 2:s=t[i+1],128===(192&s)&&(c=(31&o)<<6|63&s,c>127&&(a=c));break;case 3:s=t[i+1],u=t[i+2],128===(192&s)&&128===(192&u)&&(c=(15&o)<<12|(63&s)<<6|63&u,c>2047&&(c<55296||c>57343)&&(a=c));break;case 4:s=t[i+1],u=t[i+2],h=t[i+3],128===(192&s)&&128===(192&u)&&128===(192&h)&&(c=(15&o)<<18|(63&s)<<12|(63&u)<<6|63&h,c>65535&&c<1114112&&(a=c))}}null===a?(a=65533,f=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=f}return O(n)}function O(t){var e=t.length;if(e<=tt)return String.fromCharCode.apply(String,t);for(var r=\"\",n=0;nn)&&(r=n);for(var i=\"\",o=e;or)throw new RangeError(\"Trying to access beyond buffer length\")}function N(e,r,n,i,o,a){if(!t.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>o||re.length)throw new RangeError(\"Index out of range\")}function L(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function U(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function z(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function D(t,e,r,n,i){return i||z(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(t,e,r,n,23,4),r+4}function q(t,e,r,n,i){return i||z(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(t,e,r,n,52,8),r+8}function F(t){if(t=K(t).replace(et,\"\"),t.length<2)return\"\";for(;t.length%4!==0;)t+=\"=\";return t}function K(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function G(t){return t<16?\"0\"+t.toString(16):t.toString(16)}function V(t,e){e=e||1/0;for(var r,n=t.length,i=null,o=[],a=0;a55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(t){for(var e=[],r=0;r>8,i=r%256,o.push(i),o.push(n);return o}function Y(t){return J.toByteArray(F(t))}function W(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t){return t!==t}var J=r(490),$=r(491),Q=r(492);e.Buffer=t,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,t.TYPED_ARRAY_SUPPORT=void 0!==n.TYPED_ARRAY_SUPPORT?n.TYPED_ARRAY_SUPPORT:i(),e.kMaxLength=o(),t.poolSize=8192,t._augment=function(e){return e.__proto__=t.prototype,e},t.from=function(t,e,r){return f(null,t,e,r)},t.TYPED_ARRAY_SUPPORT&&(t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0})),t.alloc=function(t,e,r){return u(null,t,e,r)},t.allocUnsafe=function(t){return h(null,t)},t.allocUnsafeSlow=function(t){return h(null,t)},t.isBuffer=function(t){return!(null==t||!t._isBuffer)},t.compare=function(e,r){if(!t.isBuffer(e)||!t.isBuffer(r))throw new TypeError(\"Arguments must be Buffers\");if(e===r)return 0;for(var n=e.length,i=r.length,o=0,a=Math.min(n,i);o0&&(t=this.toString(\"hex\",0,r).match(/.{2}/g).join(\" \"),this.length>r&&(t+=\" ... \")),\"\"},t.prototype.compare=function(e,r,n,i,o){if(!t.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError(\"out of range index\");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;for(var a=o-i,f=n-r,s=Math.min(a,f),u=this.slice(i,o),h=e.slice(r,n),c=0;ci)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return M(this,t,e,r);case\"utf8\":case\"utf-8\":return S(this,t,e,r);case\"ascii\":return E(this,t,e,r);case\"latin1\":case\"binary\":return A(this,t,e,r);case\"base64\":return k(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return x(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var tt=4096;t.prototype.slice=function(e,r){var n=this.length;e=~~e,r=void 0===r?n:~~r,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--e]*i;return n},t.prototype.readUInt8=function(t,e){return e||C(t,1,this.length),this[t]},t.prototype.readUInt16LE=function(t,e){return e||C(t,2,this.length),this[t]|this[t+1]<<8},t.prototype.readUInt16BE=function(t,e){return e||C(t,2,this.length),this[t]<<8|this[t+1]},t.prototype.readUInt32LE=function(t,e){return e||C(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},t.prototype.readUInt32BE=function(t,e){return e||C(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},t.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=this[t],i=1,o=0;++o=i&&(n-=Math.pow(2,8*e)),n},t.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||C(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},t.prototype.readInt8=function(t,e){return e||C(t,1,this.length),128&this[t]?(255-this[t]+1)*-1:this[t]},t.prototype.readInt16LE=function(t,e){e||C(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(t,e){e||C(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(t,e){return e||C(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},t.prototype.readInt32BE=function(t,e){return e||C(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},t.prototype.readFloatLE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!0,23,4)},t.prototype.readFloatBE=function(t,e){return e||C(t,4,this.length),$.read(this,t,!1,23,4)},t.prototype.readDoubleLE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!0,52,8)},t.prototype.readDoubleBE=function(t,e){return e||C(t,8,this.length),$.read(this,t,!1,52,8)},t.prototype.writeUIntLE=function(t,e,r,n){if(t=+t,e|=0,r|=0,!n){var i=Math.pow(2,8*r)-1;N(this,t,e,r,i,0)}var o=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+o]=t/a&255;return e+r},t.prototype.writeUInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,255,0),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[r]=255&e,r+1},t.prototype.writeUInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeUInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,65535,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeUInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=255&e):U(this,e,r,!0),r+4},t.prototype.writeUInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,4294967295,0),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=0,a=1,f=0;for(this[e]=255&t;++o>0)-f&255;return e+r},t.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=r-1,a=1,f=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===f&&0!==this[e+o+1]&&(f=1),this[e+o]=(t/a>>0)-f&255;return e+r},t.prototype.writeInt8=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,1,127,-128),t.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[r]=255&e,r+1},t.prototype.writeInt16LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8):L(this,e,r,!0),r+2},t.prototype.writeInt16BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,2,32767,-32768),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>8,this[r+1]=255&e):L(this,e,r,!1),r+2},t.prototype.writeInt32LE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),t.TYPED_ARRAY_SUPPORT?(this[r]=255&e,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24):U(this,e,r,!0),r+4},t.prototype.writeInt32BE=function(e,r,n){return e=+e,r|=0,n||N(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),t.TYPED_ARRAY_SUPPORT?(this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=255&e):U(this,e,r,!1),r+4},t.prototype.writeFloatLE=function(t,e,r){return D(this,t,e,!0,r)},t.prototype.writeFloatBE=function(t,e,r){return D(this,t,e,!1,r)},t.prototype.writeDoubleLE=function(t,e,r){return q(this,t,e,!0,r)},t.prototype.writeDoubleBE=function(t,e,r){return q(this,t,e,!1,r)},t.prototype.copy=function(e,r,n,i){if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i=this.length)throw new RangeError(\"sourceStart out of bounds\");if(i<0)throw new RangeError(\"sourceEnd out of bounds\");i>this.length&&(i=this.length),e.length-r=0;--o)e[o+r]=this[o+n];else if(a<1e3||!t.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if(\"number\"==typeof e)for(a=r;a0?i(n(t),9007199254740991):0}},function(t,e,r){var n=r(24);t.exports=function(t){return Object(n(t))}},function(t,e){var r={}.hasOwnProperty;t.exports=function(t,e){return r.call(t,e)}},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(9),i=r(37);t.exports=r(8)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){var n=r(4),i=r(14),o=r(12),a=r(48)(\"src\"),f=\"toString\",s=Function[f],u=(\"\"+s).split(f);r(32).inspectSource=function(t){return s.call(t)},(t.exports=function(t,e,r,f){var s=\"function\"==typeof r;s&&(o(r,\"name\")||i(r,\"name\",e)),t[e]!==r&&(s&&(o(r,a)||i(r,a,t[e]?\"\"+t[e]:u.join(String(e)))),t===n?t[e]=r:f?t[e]?t[e]=r:i(t,e,r):(delete t[e],i(t,e,r)))})(Function.prototype,f,function(){return\"function\"==typeof this&&this[a]||s.call(this)})},function(t,e,r){var n=r(0),i=r(5),o=r(24),a=/\"/g,f=function(t,e,r,n){var i=String(o(t)),f=\"<\"+e;return\"\"!==r&&(f+=\" \"+r+'=\"'+String(n).replace(a,\""\")+'\"'),f+\">\"+i+\"\"};t.exports=function(t,e){var r={};r[t]=e(f),n(n.P+n.F*i(function(){var e=\"\"[t]('\"');return e!==e.toLowerCase()||e.split('\"').length>3}),\"String\",r)}},function(t,e,r){var n=r(65),i=r(24);t.exports=function(t){return n(i(t))}},function(t,e,r){(function(t){!function(t,e){\"use strict\";function n(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&(\"le\"!==e&&\"be\"!==e||(r=e,e=10),this._init(t||0,e||10,r||\"be\"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);\nreturn r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){\"use strict\";var n=e;n.version=r(465).version,n.utils=r(521),n.rand=r(522),n.hmacDRBG=r(519),n.curve=r(99),n.curves=r(512),n.ec=r(513),n.eddsa=r(516)},function(t,e,r){var n=r(66),i=r(37),o=r(17),a=r(29),f=r(12),s=r(174),u=Object.getOwnPropertyDescriptor;e.f=r(8)?u:function(t,e){if(t=o(t),e=a(e,!0),s)try{return u(t,e)}catch(t){}if(f(t,e))return i(!n.f.call(t,e),t[e])}},function(t,e,r){var n=r(12),i=r(11),o=r(133)(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,r){\"use strict\";var n=e;n.version=r(467).version,n.utils=r(558),n.rand=r(559),n.hmacDRBG=r(556),n.curve=r(104),n.curves=r(549),n.ec=r(550),n.eddsa=r(553)},function(t,e){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e,r){var n=r(5);t.exports=function(t,e){return!!t&&n(function(){e?t.call(null,function(){},1):t.call(null)})}},function(t,e){function r(){throw new Error(\"setTimeout has not been defined\")}function n(){throw new Error(\"clearTimeout has not been defined\")}function i(t){if(h===setTimeout)return setTimeout(t,0);if((h===r||!h)&&setTimeout)return h=setTimeout,setTimeout(t,0);try{return h(t,0)}catch(e){try{return h.call(null,t,0)}catch(e){return h.call(this,t,0)}}}function o(t){if(c===clearTimeout)return clearTimeout(t);if((c===n||!c)&&clearTimeout)return c=clearTimeout,clearTimeout(t);try{return c(t)}catch(e){try{return c.call(null,t)}catch(e){return c.call(this,t)}}}function a(){b&&l&&(b=!1,l.length?p=l.concat(p):v=-1,p.length&&f())}function f(){if(!b){var t=i(a);b=!0;for(var e=p.length;e;){for(l=p,p=[];++v1)for(var r=1;r_;_++)if((d||_ in m)&&(b=m[_],v=g(b,_,y),t))if(r)M[_]=v;else if(v)switch(t){case 3:return!0;case 5:return b;case 6:return _;case 2:M.push(b)}else if(h)return!1;return c?-1:u||h?h:M}}},function(t,e,r){var n=r(0),i=r(32),o=r(5);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],a={};a[t]=e(r),n(n.S+n.F*o(function(){r(1)}),\"Object\",a)}},function(t,e,r){var n=r(6);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){(function(t){!function(t,e){\"use strict\";function n(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){return o.isBN(t)?t:(this.negative=0,this.words=null,this.length=0,this.red=null,void(null!==t&&(\"le\"!==e&&\"be\"!==e||(r=e,e=10),this._init(t||0,e||10,r||\"be\"))))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),o=e;o=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){function n(){i.call(this)}t.exports=n;var i=r(110).EventEmitter,o=r(603);o(n,i),n.Readable=r(600),n.Writable=r(602),n.Duplex=r(595),n.Transform=r(601),n.PassThrough=r(599),n.Stream=n,n.prototype.pipe=function(t,e){function r(e){t.writable&&!1===t.write(e)&&u.pause&&u.pause()}function n(){u.readable&&u.resume&&u.resume()}function o(){h||(h=!0,t.end())}function a(){h||(h=!0,\"function\"==typeof t.destroy&&t.destroy())}function f(t){if(s(),0===i.listenerCount(this,\"error\"))throw t}function s(){u.removeListener(\"data\",r),t.removeListener(\"drain\",n),u.removeListener(\"end\",o),u.removeListener(\"close\",a),u.removeListener(\"error\",f),t.removeListener(\"error\",f),u.removeListener(\"end\",s),u.removeListener(\"close\",s),t.removeListener(\"close\",s)}var u=this;u.on(\"data\",r),t.on(\"drain\",n),t._isStdio||e&&e.end===!1||(u.on(\"end\",o),u.on(\"close\",a));var h=!1;return u.on(\"error\",f),t.on(\"error\",f),u.on(\"end\",s),u.on(\"close\",s),t.on(\"close\",s),t.emit(\"pipe\",u),t}},function(t,e){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,e,r){var n=r(13);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(190),i=r(0),o=r(87)(\"metadata\"),a=o.store||(o.store=new(r(193))),f=function(t,e,r){var i=a.get(t);if(!i){if(!r)return;a.set(t,i=new n)}var o=i.get(e);if(!o){if(!r)return;i.set(e,o=new n)}return o},s=function(t,e,r){var n=f(e,r,!1);return void 0!==n&&n.has(t)},u=function(t,e,r){var n=f(e,r,!1);return void 0===n?void 0:n.get(t)},h=function(t,e,r,n){f(r,n,!0).set(t,e)},c=function(t,e){var r=f(t,e,!1),n=[];return r&&r.forEach(function(t,e){n.push(e)}),n},d=function(t){return void 0===t||\"symbol\"==typeof t?t:String(t)},l=function(t){i(i.S,\"Reflect\",t)};t.exports={store:a,map:f,has:s,get:u,set:h,keys:c,key:d,exp:l}},function(t,e,r){\"use strict\";if(r(8)){var n=r(41),i=r(4),o=r(5),a=r(0),f=r(88),s=r(140),u=r(33),h=r(40),c=r(37),d=r(14),l=r(45),p=r(38),b=r(10),v=r(47),y=r(29),m=r(12),g=r(187),w=r(64),_=r(6),M=r(11),S=r(125),E=r(42),A=r(21),k=r(43).f,x=r(142),I=r(48),B=r(7),O=r(27),R=r(78),P=r(134),T=r(143),j=r(56),C=r(84),N=r(46),L=r(118),U=r(167),z=r(9),D=r(20),q=z.f,F=D.f,K=i.RangeError,G=i.TypeError,V=i.Uint8Array,H=\"ArrayBuffer\",X=\"Shared\"+H,Y=\"BYTES_PER_ELEMENT\",W=\"prototype\",Z=Array[W],J=s.ArrayBuffer,$=s.DataView,Q=O(0),tt=O(2),et=O(3),rt=O(4),nt=O(5),it=O(6),ot=R(!0),at=R(!1),ft=T.values,st=T.keys,ut=T.entries,ht=Z.lastIndexOf,ct=Z.reduce,dt=Z.reduceRight,lt=Z.join,pt=Z.sort,bt=Z.slice,vt=Z.toString,yt=Z.toLocaleString,mt=B(\"iterator\"),gt=B(\"toStringTag\"),wt=I(\"typed_constructor\"),_t=I(\"def_constructor\"),Mt=f.CONSTR,St=f.TYPED,Et=f.VIEW,At=\"Wrong length!\",kt=O(1,function(t,e){return Pt(P(t,t[_t]),e)}),xt=o(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),It=!!V&&!!V[W].set&&o(function(){new V(1).set({})}),Bt=function(t,e){if(void 0===t)throw G(At);var r=+t,n=b(t);if(e&&!g(r,n))throw K(At);return n},Ot=function(t,e){var r=p(t);if(r<0||r%e)throw K(\"Wrong offset!\");return r},Rt=function(t){if(_(t)&&St in t)return t;throw G(t+\" is not a typed array!\")},Pt=function(t,e){if(!(_(t)&&wt in t))throw G(\"It is not a typed array constructor!\");return new t(e)},Tt=function(t,e){return jt(P(t,t[_t]),e)},jt=function(t,e){for(var r=0,n=e.length,i=Pt(t,n);n>r;)i[r]=e[r++];return i},Ct=function(t,e,r){q(t,e,{get:function(){return this._d[r]}})},Nt=function(t){var e,r,n,i,o,a,f=M(t),s=arguments.length,h=s>1?arguments[1]:void 0,c=void 0!==h,d=x(f);if(void 0!=d&&!S(d)){for(a=d.call(f),n=[],e=0;!(o=a.next()).done;e++)n.push(o.value);f=n}for(c&&s>2&&(h=u(h,arguments[2],2)),e=0,r=b(f.length),i=Pt(this,r);r>e;e++)i[e]=c?h(f[e],e):f[e];return i},Lt=function(){for(var t=0,e=arguments.length,r=Pt(this,e);e>t;)r[t]=arguments[t++];return r},Ut=!!V&&o(function(){yt.call(new V(1))}),zt=function(){return yt.apply(Ut?bt.call(Rt(this)):Rt(this),arguments)},Dt={copyWithin:function(t,e){return U.call(Rt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return rt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return L.apply(Rt(this),arguments)},filter:function(t){return Tt(this,tt(Rt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return nt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return it(Rt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Rt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return at(Rt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return ot(Rt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return lt.apply(Rt(this),arguments)},lastIndexOf:function(t){return ht.apply(Rt(this),arguments)},map:function(t){return kt(Rt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Rt(this),arguments)},reduceRight:function(t){return dt.apply(Rt(this),arguments)},reverse:function(){for(var t,e=this,r=Rt(e).length,n=Math.floor(r/2),i=0;i1?arguments[1]:void 0)},sort:function(t){return pt.call(Rt(this),t)},subarray:function(t,e){var r=Rt(this),n=r.length,i=v(t,n);return new(P(r,r[_t]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,b((void 0===e?n:v(e,n))-i))}},qt=function(t,e){return Tt(this,bt.call(Rt(this),t,e))},Ft=function(t){Rt(this);var e=Ot(arguments[1],1),r=this.length,n=M(t),i=b(n.length),o=0;if(i+e>r)throw K(At);for(;o255?255:255&n),i.v[p](r*e+i.o,n,xt)},B=function(t,e){q(t,e,{get:function(){return x(this,e)},set:function(t){return I(this,e,t)},enumerable:!0})};g?(v=r(function(t,r,n,i){h(t,v,u,\"_d\");var o,a,f,s,c=0,l=0;if(_(r)){if(!(r instanceof J||(s=w(r))==H||s==X))return St in r?jt(v,r):Nt.call(v,r);o=r,l=Ot(n,e);var p=r.byteLength;if(void 0===i){if(p%e)throw K(At);if(a=p-l,a<0)throw K(At)}else if(a=b(i)*e,a+l>p)throw K(At);f=a/e}else f=Bt(r,!0),a=f*e,o=new J(a);for(d(t,\"_d\",{b:o,o:l,l:a,e:f,v:new $(o)});c0?n:r)(t)}},function(t,e){var r;r=function(){return this}();try{r=r||Function(\"return this\")()||(0,eval)(\"this\")}catch(t){\"object\"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+\": incorrect invocation!\");return t}},function(t,e){t.exports=!1},function(t,e,r){var n=r(3),i=r(180),o=r(121),a=r(133)(\"IE_PROTO\"),f=function(){},s=\"prototype\",u=function(){var t,e=r(120)(\"iframe\"),n=o.length,i=\"<\",a=\">\";for(e.style.display=\"none\",r(123).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(i+\"script\"+a+\"document.F=Object\"+i+\"/script\"+a),t.close(),u=t.F;n--;)delete u[s][o[n]];return u()};t.exports=Object.create||function(t,e){var r;return null!==t?(f[s]=n(t),r=new f,f[s]=null,r[a]=t):r=u(),void 0===e?r:i(r,e)}},function(t,e,r){var n=r(182),i=r(121).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},function(t,e,r){var n=r(182),i=r(121);t.exports=Object.keys||function(t){return n(t,i)}},function(t,e,r){var n=r(15);t.exports=function(t,e,r){for(var i in e)n(t,i,e[i],r);return t}},function(t,e,r){\"use strict\";var n=r(4),i=r(9),o=r(8),a=r(7)(\"species\");t.exports=function(t){var e=n[t];o&&e&&!e[a]&&i.f(e,a,{configurable:!0,get:function(){return this}})}},function(t,e,r){var n=r(38),i=Math.max,o=Math.min;t.exports=function(t,e){return t=n(t),t<0?i(t+e,0):o(t,e)}},function(t,e){var r=0,n=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+n).toString(36))}},function(t,e,r){var n=e;n.utils=r(527),n.common=r(523),n.sha=r(526),n.ripemd=r(525),n.hmac=r(524),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){var n=e;n.utils=r(564),n.common=r(560),n.sha=r(563),n.ripemd=r(562),n.hmac=r(561),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(u.call(this,t),h.call(this,t),t&&t.readable===!1&&(this.readable=!1),t&&t.writable===!1&&(this.writable=!1),this.allowHalfOpen=!0,t&&t.allowHalfOpen===!1&&(this.allowHalfOpen=!1),void this.once(\"end\",i)):new n(t)}function i(){this.allowHalfOpen||this._writableState.ended||f(o,this)}function o(t){t.end()}var a=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=n;var f=r(157),s=r(73);s.inherits=r(74);var u=r(250),h=r(155);s.inherits(n,u);for(var c=a(h.prototype),d=0;d=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,r),this.charReceived+=r,this.charReceived=55296&&n<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=\"\"}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,n=e.charCodeAt(i);if(n>=55296&&n<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},u.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var r=t[t.length-e];if(1==e&&r>>5==6){this.charLength=2;break}if(e<=2&&r>>4==14){this.charLength=3;break}if(e<=3&&r>>3==30){this.charLength=4;break}}this.charReceived=e},u.prototype.end=function(t){var e=\"\";if(t&&t.length&&(e=this.write(t)),this.charReceived){var r=this.charReceived,n=this.charBuffer,i=this.encoding;e+=n.slice(0,r).toString(i)}return e}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\nreturn!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){var n=r(7)(\"unscopables\"),i=Array.prototype;void 0==i[n]&&r(14)(i,n,{}),t.exports=function(t){i[n][t]=!0}},function(t,e,r){var n=r(33),i=r(176),o=r(125),a=r(3),f=r(10),s=r(142),u={},h={},e=t.exports=function(t,e,r,c,d){var l,p,b,v,y=d?function(){return t}:s(t),m=n(r,c,e?2:1),g=0;if(\"function\"!=typeof y)throw TypeError(t+\" is not iterable!\");if(o(y)){for(l=f(t.length);l>g;g++)if(v=e?m(a(p=t[g])[0],p[1]):m(t[g]),v===u||v===h)return v}else for(b=y.call(t);!(p=b.next()).done;)if(v=i(b,m,p.value,e),v===u||v===h)return v};e.BREAK=u,e.RETURN=h},function(t,e){t.exports={}},function(t,e,r){var n=r(9).f,i=r(12),o=r(7)(\"toStringTag\");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},function(t,e,r){var n=r(0),i=r(24),o=r(5),a=r(138),f=\"[\"+a+\"]\",s=\"​…\",u=RegExp(\"^\"+f+f+\"*\"),h=RegExp(f+f+\"*$\"),c=function(t,e,r){var i={},f=o(function(){return!!a[t]()||s[t]()!=s}),u=i[t]=f?e(d):a[t];r&&(i[r]=u),n(n.P+n.F*f,\"String\",i)},d=c.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(u,\"\")),2&e&&(t=t.replace(h,\"\")),t};t.exports=c},function(t,e,r){\"use strict\";(function(e){function n(t){u.call(this,\"digest\"),this._hash=t,this.buffers=[]}function i(t){u.call(this,\"digest\"),this._hash=t}var o=r(2),a=r(105),f=r(567),s=r(568),u=r(566);o(n,u),n.prototype._update=function(t){this.buffers.push(t)},n.prototype._final=function(){var t=e.concat(this.buffers),r=this._hash(t);return this.buffers=null,r},o(i,u),i.prototype._update=function(t){this._hash.update(t)},i.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return t=t.toLowerCase(),\"md5\"===t?new n(a):\"rmd160\"===t||\"ripemd160\"===t?new n(f):new i(s(t))}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function r(t,r){this._block=new e(t),this._finalSize=r,this._blockSize=t,this._len=0,this._s=0}r.prototype.update=function(t,r){\"string\"==typeof t&&(r=r||\"utf8\",t=new e(t,r));for(var n=this._len+=t.length,i=this._s||0,o=0,a=this._block;i=8*this._finalSize&&(this._update(this._block),this._block.fill(0)),this._block.writeInt32BE(e,this._blockSize-4);var r=this._update(this._block)||this._hash();return t?r.toString(t):r},r.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},t.exports=r}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e,r,n){function i(){throw new Error(\"secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11\")}function o(t,i){if(t>65536)throw new Error(\"requested too many random bytes\");var o=new e.Uint8Array(t);t>0&&a.getRandomValues(o);var f=new r(o.buffer);return\"function\"==typeof i?n.nextTick(function(){i(null,f)}):f}var a=e.crypto||e.msCrypto;a&&a.getRandomValues?t.exports=o:t.exports=i}).call(e,r(39),r(1).Buffer,r(26))},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return Object.defineProperty(i,\"message\",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):\"\"}),Object.defineProperty(i,\"name\",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},\nd.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){var n=e;n.Reporter=r(582).Reporter,n.DecoderBuffer=r(234).DecoderBuffer,n.EncoderBuffer=r(234).EncoderBuffer,n.Node=r(581)},function(t,e,r){(function(e){t.exports=function(t,r){for(var n=Math.min(t.length,r.length),i=new e(n),o=0;ot.MAX_SAFE_BITMASK)throw new Error(\"Bitmask too large to be safely represented\");if(this.getBitmask()&~t.SUPPORTED_BITMASK)throw new Error(\"Condition requested unsupported feature suites\");if(this.getMaxFulfillmentLength()>t.MAX_FULFILLMENT_LENGTH)throw new Error(\"Condition requested too large of a max fulfillment size\");return!0}}],[{key:\"fromUri\",value:function(e){if(e instanceof t)return e;if(\"string\"!=typeof e)throw new Error(\"Serialized condition must be a string\");var r=e.split(\":\");if(\"cc\"!==r[0])throw new a('Serialized condition must start with \"cc:\"');if(!t.REGEX_STRICT.exec(e))throw new f(\"Invalid condition format\");var n=new t;return n.setTypeId(parseInt(r[1],16)),n.setBitmask(parseInt(r[2],16)),n.setHash(u.decode(r[3])),n.setMaxFulfillmentLength(parseInt(r[4],10)),n}},{key:\"fromBinary\",value:function(e){e=h.from(e);var r=new t;return r.parseBinary(e),r}}]),t}();b.MAX_SAFE_BITMASK=4294967295,b.SUPPORTED_BITMASK=63,b.MAX_FULFILLMENT_LENGTH=65535,b.REGEX=l,b.REGEX_STRICT=p,t.exports=b}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rh;)if(f=s[h++],f!=f)return!0}else for(;u>h;h++)if((t||h in s)&&s[h]===r)return t||h||0;return!t&&-1}}},function(t,e,r){\"use strict\";var n=r(4),i=r(0),o=r(15),a=r(45),f=r(36),s=r(55),u=r(40),h=r(6),c=r(5),d=r(84),l=r(57),p=r(124);t.exports=function(t,e,r,b,v,y){var m=n[t],g=m,w=v?\"set\":\"add\",_=g&&g.prototype,M={},S=function(t){var e=_[t];o(_,t,\"delete\"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:\"has\"==t?function(t){return!(y&&!h(t))&&e.call(this,0===t?0:t)}:\"get\"==t?function(t){return y&&!h(t)?void 0:e.call(this,0===t?0:t)}:\"add\"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,r){return e.call(this,0===t?0:t,r),this})};if(\"function\"==typeof g&&(y||_.forEach&&!c(function(){(new g).entries().next()}))){var E=new g,A=E[w](y?{}:-0,1)!=E,k=c(function(){E.has(1)}),x=d(function(t){new g(t)}),I=!y&&c(function(){for(var t=new g,e=5;e--;)t[w](e,e);return!t.has(-0)});x||(g=e(function(e,r){u(e,g,t);var n=p(new m,e,g);return void 0!=r&&s(r,v,n[w],n),n}),g.prototype=_,_.constructor=g),(k||I)&&(S(\"delete\"),S(\"has\"),v&&S(\"get\")),(I||A)&&S(w),y&&_.clear&&delete _.clear}else g=b.getConstructor(e,t,v,w),a(g.prototype,r),f.NEED=!0;return l(g,t),M[t]=g,i(i.G+i.W+i.F*(g!=m),M),y||b.setStrong(g,t,v),g}},function(t,e,r){\"use strict\";var n=r(14),i=r(15),o=r(5),a=r(24),f=r(7);t.exports=function(t,e,r){var s=f(t),u=r(a,s,\"\"[t]),h=u[0],c=u[1];o(function(){var e={};return e[s]=function(){return 7},7!=\"\"[t](e)})&&(i(String.prototype,t,h),n(RegExp.prototype,s,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},function(t,e,r){\"use strict\";var n=r(3);t.exports=function(){var t=n(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}},function(t,e){t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},function(t,e,r){var n=r(6),i=r(23),o=r(7)(\"match\");t.exports=function(t){var e;return n(t)&&(void 0!==(e=t[o])?!!e:\"RegExp\"==i(t))}},function(t,e,r){var n=r(7)(\"iterator\"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var o=[7],a=o[n]();a.next=function(){return{done:r=!0}},o[n]=function(){return a},t(o)}catch(t){}return r}},function(t,e,r){t.exports=r(41)||!r(5)(function(){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete r(4)[t]})},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,r){var n=r(4),i=\"__core-js_shared__\",o=n[i]||(n[i]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,e,r){for(var n,i=r(4),o=r(14),a=r(48),f=a(\"typed_array\"),s=a(\"view\"),u=!(!i.ArrayBuffer||!i.DataView),h=u,c=0,d=9,l=\"Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array\".split(\",\");cf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];\nreturn!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e){e[\"aes-128-ecb\"]={cipher:\"AES\",key:128,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-192-ecb\"]={cipher:\"AES\",key:192,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-256-ecb\"]={cipher:\"AES\",key:256,iv:0,mode:\"ECB\",type:\"block\"},e[\"aes-128-cbc\"]={cipher:\"AES\",key:128,iv:16,mode:\"CBC\",type:\"block\"},e[\"aes-192-cbc\"]={cipher:\"AES\",key:192,iv:16,mode:\"CBC\",type:\"block\"},e[\"aes-256-cbc\"]={cipher:\"AES\",key:256,iv:16,mode:\"CBC\",type:\"block\"},e.aes128=e[\"aes-128-cbc\"],e.aes192=e[\"aes-192-cbc\"],e.aes256=e[\"aes-256-cbc\"],e[\"aes-128-cfb\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-192-cfb\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-256-cfb\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB\",type:\"stream\"},e[\"aes-128-cfb8\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-192-cfb8\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-256-cfb8\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB8\",type:\"stream\"},e[\"aes-128-cfb1\"]={cipher:\"AES\",key:128,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-192-cfb1\"]={cipher:\"AES\",key:192,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-256-cfb1\"]={cipher:\"AES\",key:256,iv:16,mode:\"CFB1\",type:\"stream\"},e[\"aes-128-ofb\"]={cipher:\"AES\",key:128,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-192-ofb\"]={cipher:\"AES\",key:192,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-256-ofb\"]={cipher:\"AES\",key:256,iv:16,mode:\"OFB\",type:\"stream\"},e[\"aes-128-ctr\"]={cipher:\"AES\",key:128,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-192-ctr\"]={cipher:\"AES\",key:192,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-256-ctr\"]={cipher:\"AES\",key:256,iv:16,mode:\"CTR\",type:\"stream\"},e[\"aes-128-gcm\"]={cipher:\"AES\",key:128,iv:12,mode:\"GCM\",type:\"auth\"},e[\"aes-192-gcm\"]={cipher:\"AES\",key:192,iv:12,mode:\"GCM\",type:\"auth\"},e[\"aes-256-gcm\"]={cipher:\"AES\",key:256,iv:12,mode:\"GCM\",type:\"auth\"}},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(67);e.encrypt=function(e,r){for(;e._cache.lengthf||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(69);e.encrypt=function(e,r){for(;e._cache.length>5]|=128<>>9<<4)+14]=e;for(var r=1732584193,n=-271733879,i=-1732584194,h=271733878,c=0;c>16)+(e>>16)+(r>>16);return n<<16|65535&r}function h(t,e){return t<>>32-e}var c=r(565);t.exports=function(t){return c.hash(t,n,16)}},function(t,e,r){var n=e;n.bignum=r(70),n.define=r(580).define,n.base=r(71),n.constants=r(235),n.decoders=r(584),n.encoders=r(586)},function(t,e,r){(function(t){function r(t){var e,r;return e=t>f||t<0?(r=Math.abs(t)%f,t<0?f-r:r):t}function n(t){for(var e=0;e>>8^255&r^99,this.SBOX[i]=r,this.INV_SBOX[r]=i,o=t[i],a=t[o],f=t[a],n=257*t[r]^16843008*r,this.SUB_MIX[0][i]=n<<24|n>>>8,this.SUB_MIX[1][i]=n<<16|n>>>16,this.SUB_MIX[2][i]=n<<8|n>>>24,this.SUB_MIX[3][i]=n,n=16843009*f^65537*a^257*o^16843008*i,this.INV_SUB_MIX[0][r]=n<<24|n>>>8,this.INV_SUB_MIX[1][r]=n<<16|n>>>16,this.INV_SUB_MIX[2][r]=n<<8|n>>>24,this.INV_SUB_MIX[3][r]=n,0===i?i=s=1:(i=o^t[t[t[f^o]]],s^=t[t[s]]);return!0};var s=new i;a.blockSize=16,a.prototype.blockSize=a.blockSize,a.keySize=32,a.prototype.keySize=a.keySize,a.prototype._doReset=function(){var t,e,r,n,i,o;for(r=this._key,e=r.length,this._nRounds=e+6,i=4*(this._nRounds+1),this._keySchedule=[],n=0;n>>24,o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o],o^=s.RCON[n/e|0]<<24):e>6&&n%e===4?o=s.SBOX[o>>>24]<<24|s.SBOX[o>>>16&255]<<16|s.SBOX[o>>>8&255]<<8|s.SBOX[255&o]:void 0,this._keySchedule[n-e]^o);for(this._invKeySchedule=[],t=0;t>>24]]^s.INV_SUB_MIX[1][s.SBOX[o>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[o>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&o]];return!0},a.prototype.encryptBlock=function(e){e=o(new t(e));var r=this._doCryptBlock(e,this._keySchedule,s.SUB_MIX,s.SBOX),n=new t(16);return n.writeUInt32BE(r[0],0),n.writeUInt32BE(r[1],4),n.writeUInt32BE(r[2],8),n.writeUInt32BE(r[3],12),n},a.prototype.decryptBlock=function(e){e=o(new t(e));var r=[e[3],e[1]];e[1]=r[0],e[3]=r[1];var n=this._doCryptBlock(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX),i=new t(16);return i.writeUInt32BE(n[0],0),i.writeUInt32BE(n[3],4),i.writeUInt32BE(n[2],8),i.writeUInt32BE(n[1],12),i},a.prototype.scrub=function(){n(this._keySchedule),n(this._invKeySchedule),n(this._key)},a.prototype._doCryptBlock=function(t,e,n,i){var o,a,f,s,u,h,c,d,l;a=t[0]^e[0],f=t[1]^e[1],s=t[2]^e[2],u=t[3]^e[3],o=4;for(var p=1;p>>24]^n[1][f>>>16&255]^n[2][s>>>8&255]^n[3][255&u]^e[o++],c=n[0][f>>>24]^n[1][s>>>16&255]^n[2][u>>>8&255]^n[3][255&a]^e[o++],d=n[0][s>>>24]^n[1][u>>>16&255]^n[2][a>>>8&255]^n[3][255&f]^e[o++],l=n[0][u>>>24]^n[1][a>>>16&255]^n[2][f>>>8&255]^n[3][255&s]^e[o++],a=h,f=c,s=d,u=l;return h=(i[a>>>24]<<24|i[f>>>16&255]<<16|i[s>>>8&255]<<8|i[255&u])^e[o++],c=(i[f>>>24]<<24|i[s>>>16&255]<<16|i[u>>>8&255]<<8|i[255&a])^e[o++],d=(i[s>>>24]<<24|i[u>>>16&255]<<16|i[a>>>8&255]<<8|i[255&f])^e[o++],l=(i[u>>>24]<<24|i[a>>>16&255]<<16|i[f>>>8&255]<<8|i[255&s])^e[o++],[r(h),r(c),r(d),r(l)]},e.AES=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(t){for(var e,r=t.length;r--;){if(e=t.readUInt8(r),255!==e){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}function i(t){var e=t._cipher.encryptBlock(t._prev);return n(t._prev),e}var o=r(72);e.encrypt=function(e,r){for(;e._cache.length0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[t].length),\"function\"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),i||(i=!0,e.apply(this,arguments))}if(!n(e))throw TypeError(\"listener must be a function\");var i=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,i,a,f;if(!n(e))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,i=-1,r===e||n(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit(\"removeListener\",t,e);else if(o(r)){for(f=a;f-- >0;)if(r[f]===e||r[f].listener&&r[f].listener===e){i=f;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(i,1),this._events.removeListener&&this.emit(\"removeListener\",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)\"removeListener\"!==e&&this.removeAllListeners(e);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(r=this._events[t],n(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?n(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(n(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e){t.exports={newInvalidAsn1Error:function(t){var e=new Error;return e.name=\"InvalidAsn1Error\",e.message=t||\"\",e}}},function(t,e){t.exports={EOC:0,Boolean:1,Integer:2,BitString:3,OctetString:4,Null:5,OID:6,ObjectDescriptor:7,External:8,Real:9,Enumeration:10,PDV:11,Utf8String:12,RelativeOID:13,Sequence:16,Set:17,NumericString:18,PrintableString:19,T61String:20,VideotexString:21,IA5String:22,UTCTime:23,GeneralizedTime:24,GraphicString:25,VisibleString:26,GeneralString:28,UniversalString:29,CharacterString:30,BMPString:31,Constructor:32,Context:128}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;rNumber.MAX_SAFE_INTEGER)throw new o(\"Type \"+e+\" is not supported\");var r=!0,n=!1,i=void 0;try{for(var a,f=t.registeredTypes[Symbol.iterator]();!(r=(a=f.next()).done);r=!0){var s=a.value;if(e===s.typeId)return s.Class}}catch(t){n=!0,i=t}finally{try{!r&&f.return&&f.return()}finally{if(n)throw i}}throw new o(\"Type \"+e+\" is not supported\")}},{key:\"registerType\",value:function(e){t.registeredTypes.push({typeId:e.TYPE_ID,Class:e})}}]),t}();a.registeredTypes=[],t.exports=a},function(t,e,r){\"use strict\";(function(e){function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var n=function(){function t(t,e){for(var r=0;r1?arguments[1]:void 0,r),s=a>2?arguments[2]:void 0,u=void 0===s?r:i(s,r);u>f;)e[f++]=t;return e}},function(t,e,r){\"use strict\";var n=r(9),i=r(37);t.exports=function(t,e,r){e in t?n.f(t,e,i(0,r)):t[e]=r}},function(t,e,r){var n=r(6),i=r(4).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e,r){var n=r(7)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(r){try{return e[n]=!1,!\"/./\"[t](e)}catch(t){}}return!0}},function(t,e,r){t.exports=r(4).document&&document.documentElement},function(t,e,r){var n=r(6),i=r(132).set;t.exports=function(t,e,r){var o,a=e.constructor;return a!==r&&\"function\"==typeof a&&(o=a.prototype)!==r.prototype&&n(o)&&i&&i(t,o),t}},function(t,e,r){var n=r(56),i=r(7)(\"iterator\"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[i]===t)}},function(t,e,r){var n=r(23);t.exports=Array.isArray||function(t){return\"Array\"==n(t)}},function(t,e,r){\"use strict\";var n=r(42),i=r(37),o=r(57),a={};r(14)(a,r(7)(\"iterator\"),function(){return this}),t.exports=function(t,e,r){t.prototype=n(a,{next:i(1,r)}),o(t,e+\" Iterator\")}},function(t,e,r){\"use strict\";var n=r(41),i=r(0),o=r(15),a=r(14),f=r(12),s=r(56),u=r(127),h=r(57),c=r(21),d=r(7)(\"iterator\"),l=!([].keys&&\"next\"in[].keys()),p=\"@@iterator\",b=\"keys\",v=\"values\",y=function(){return this};t.exports=function(t,e,r,m,g,w,_){u(r,e,m);var M,S,E,A=function(t){if(!l&&t in B)return B[t];switch(t){case b:return function(){return new r(this,t)};case v:return function(){return new r(this,t)}}return function(){return new r(this,t)}},k=e+\" Iterator\",x=g==v,I=!1,B=t.prototype,O=B[d]||B[p]||g&&B[g],R=O||A(g),P=g?x?A(\"entries\"):R:void 0,T=\"Array\"==e?B.entries||O:O;if(T&&(E=c(T.call(new t)),E!==Object.prototype&&(h(E,k,!0),n||f(E,d)||a(E,d,y))),x&&O&&O.name!==v&&(I=!0,R=function(){return O.call(this)}),n&&!_||!l&&!I&&B[d]||a(B,d,R),s[e]=R,s[k]=y,g)if(M={values:x?R:A(v),keys:w?R:A(b),entries:P},_)for(S in M)S in B||o(B,S,M[S]);else i(i.P+i.F*(l||I),e,M);return M}},function(t,e){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||r(-2e-17)!=-2e-17?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e,r){var n=r(4),i=r(139).set,o=n.MutationObserver||n.WebKitMutationObserver,a=n.process,f=n.Promise,s=\"process\"==r(23)(a);t.exports=function(){var t,e,r,u=function(){var n,i;for(s&&(n=a.domain)&&n.exit();t;){i=t.fn,t=t.next;try{i()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(s)r=function(){a.nextTick(u)};else if(o){var h=!0,c=document.createTextNode(\"\");new o(u).observe(c,{characterData:!0}),r=function(){c.data=h=!h}}else if(f&&f.resolve){var d=f.resolve();r=function(){d.then(u)}}else r=function(){i.call(n,u)};return function(n){var i={fn:n,next:void 0};e&&(e.next=i),t||(t=i,r()),e=i}}},function(t,e,r){var n=r(6),i=r(3),o=function(t,e){if(i(t),!n(e)&&null!==e)throw TypeError(e+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,e,n){try{n=r(33)(Function.call,r(20).f(Object.prototype,\"__proto__\").set,2),n(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,r){return o(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check:o}},function(t,e,r){var n=r(87)(\"keys\"),i=r(48);t.exports=function(t){return n[t]||(n[t]=i(t))}},function(t,e,r){var n=r(3),i=r(13),o=r(7)(\"species\");t.exports=function(t,e){var r,a=n(t).constructor;return void 0===a||void 0==(r=n(a)[o])?e:i(r)}},function(t,e,r){var n=r(38),i=r(24);t.exports=function(t){return function(e,r){var o,a,f=String(i(e)),s=n(r),u=f.length;return s<0||s>=u?t?\"\":void 0:(o=f.charCodeAt(s),o<55296||o>56319||s+1===u||(a=f.charCodeAt(s+1))<56320||a>57343?t?f.charAt(s):o:t?f.slice(s,s+2):(o-55296<<10)+(a-56320)+65536)}}},function(t,e,r){var n=r(83),i=r(24);t.exports=function(t,e,r){if(n(e))throw TypeError(\"String#\"+r+\" doesn't accept regex!\");return String(i(t))}},function(t,e,r){\"use strict\";var n=r(38),i=r(24);t.exports=function(t){var e=String(i(this)),r=\"\",o=n(t);if(o<0||o==1/0)throw RangeError(\"Count can't be negative\");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(r+=e);return r}},function(t,e){t.exports=\"\\t\\n\\v\\f\\r   ᠎              \\u2028\\u2029\\ufeff\"},function(t,e,r){var n,i,o,a=r(33),f=r(82),s=r(123),u=r(120),h=r(4),c=h.process,d=h.setImmediate,l=h.clearImmediate,p=h.MessageChannel,b=0,v={},y=\"onreadystatechange\",m=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},g=function(t){m.call(t.data)};d&&l||(d=function(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return v[++b]=function(){f(\"function\"==typeof t?t:Function(t),e)},n(b),b},l=function(t){delete v[t]},\"process\"==r(23)(c)?n=function(t){c.nextTick(a(m,t,1))}:p?(i=new p,o=i.port2,i.port1.onmessage=g,n=a(o.postMessage,o,1)):h.addEventListener&&\"function\"==typeof postMessage&&!h.importScripts?(n=function(t){h.postMessage(t+\"\",\"*\")},h.addEventListener(\"message\",g,!1)):n=y in u(\"script\")?function(t){s.appendChild(u(\"script\"))[y]=function(){s.removeChild(this),m.call(t)}}:function(t){setTimeout(a(m,t,1),0)}),t.exports={set:d,clear:l}},function(t,e,r){\"use strict\";var n=r(4),i=r(8),o=r(41),a=r(88),f=r(14),s=r(45),u=r(5),h=r(40),c=r(38),d=r(10),l=r(43).f,p=r(9).f,b=r(118),v=r(57),y=\"ArrayBuffer\",m=\"DataView\",g=\"prototype\",w=\"Wrong length!\",_=\"Wrong index!\",M=n[y],S=n[m],E=n.Math,A=n.RangeError,k=n.Infinity,x=M,I=E.abs,B=E.pow,O=E.floor,R=E.log,P=E.LN2,T=\"buffer\",j=\"byteLength\",C=\"byteOffset\",N=i?\"_b\":T,L=i?\"_l\":j,U=i?\"_o\":C,z=function(t,e,r){\nvar n,i,o,a=Array(r),f=8*r-e-1,s=(1<>1,h=23===e?B(2,-24)-B(2,-77):0,c=0,d=t<0||0===t&&1/t<0?1:0;for(t=I(t),t!=t||t===k?(i=t!=t?1:0,n=s):(n=O(R(t)/P),t*(o=B(2,-n))<1&&(n--,o*=2),t+=n+u>=1?h/o:h*B(2,1-u),t*o>=2&&(n++,o/=2),n+u>=s?(i=0,n=s):n+u>=1?(i=(t*o-1)*B(2,e),n+=u):(i=t*B(2,u-1)*B(2,e),n=0));e>=8;a[c++]=255&i,i/=256,e-=8);for(n=n<0;a[c++]=255&n,n/=256,f-=8);return a[--c]|=128*d,a},D=function(t,e,r){var n,i=8*r-e-1,o=(1<>1,f=i-7,s=r-1,u=t[s--],h=127&u;for(u>>=7;f>0;h=256*h+t[s],s--,f-=8);for(n=h&(1<<-f)-1,h>>=-f,f+=e;f>0;n=256*n+t[s],s--,f-=8);if(0===h)h=1-a;else{if(h===o)return n?NaN:u?-k:k;n+=B(2,e),h-=a}return(u?-1:1)*n*B(2,h-e)},q=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},F=function(t){return[255&t]},K=function(t){return[255&t,t>>8&255]},G=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},V=function(t){return z(t,52,8)},H=function(t){return z(t,23,4)},X=function(t,e,r){p(t[g],e,{get:function(){return this[r]}})},Y=function(t,e,r,n){var i=+r,o=c(i);if(i!=o||o<0||o+e>t[L])throw A(_);var a=t[N]._b,f=o+t[U],s=a.slice(f,f+e);return n?s:s.reverse()},W=function(t,e,r,n,i,o){var a=+r,f=c(a);if(a!=f||f<0||f+e>t[L])throw A(_);for(var s=t[N]._b,u=f+t[U],h=n(+i),d=0;dtt;)(J=Q[tt++])in M||f(M,J,x[J]);o||($.constructor=M)}var et=new S(new M(2)),rt=S[g].setInt8;et.setInt8(0,2147483648),et.setInt8(1,2147483649),!et.getInt8(0)&&et.getInt8(1)||s(S[g],{setInt8:function(t,e){rt.call(this,t,e<<24>>24)},setUint8:function(t,e){rt.call(this,t,e<<24>>24)}},!0)}else M=function(t){var e=Z(this,t);this._b=b.call(Array(e),0),this[L]=e},S=function(t,e,r){h(this,S,m),h(t,M,m);var n=t[L],i=c(e);if(i<0||i>n)throw A(\"Wrong offset!\");if(r=void 0===r?n-i:d(r),i+r>n)throw A(w);this[N]=t,this[U]=i,this[L]=r},i&&(X(M,j,\"_l\"),X(S,T,\"_b\"),X(S,j,\"_l\"),X(S,C,\"_o\")),s(S[g],{getInt8:function(t){return Y(this,1,t)[0]<<24>>24},getUint8:function(t){return Y(this,1,t)[0]},getInt16:function(t){var e=Y(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Y(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return q(Y(this,4,t,arguments[1]))},getUint32:function(t){return q(Y(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return D(Y(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return D(Y(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){W(this,1,t,F,e)},setUint8:function(t,e){W(this,1,t,F,e)},setInt16:function(t,e){W(this,2,t,K,e,arguments[2])},setUint16:function(t,e){W(this,2,t,K,e,arguments[2])},setInt32:function(t,e){W(this,4,t,G,e,arguments[2])},setUint32:function(t,e){W(this,4,t,G,e,arguments[2])},setFloat32:function(t,e){W(this,4,t,H,e,arguments[2])},setFloat64:function(t,e){W(this,8,t,V,e,arguments[2])}});v(M,y),v(S,m),f(S[g],a.VIEW,!0),e[y]=M,e[m]=S},function(t,e,r){var n=r(4),i=r(32),o=r(41),a=r(189),f=r(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:n.Symbol||{});\"_\"==t.charAt(0)||t in e||f(e,t,{value:a.f(t)})}},function(t,e,r){var n=r(64),i=r(7)(\"iterator\"),o=r(56);t.exports=r(32).getIteratorMethod=function(t){if(void 0!=t)return t[i]||t[\"@@iterator\"]||o[n(t)]}},function(t,e,r){\"use strict\";var n=r(54),i=r(177),o=r(56),a=r(17);t.exports=r(128)(Array,\"Array\",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):\"keys\"==e?i(0,r):\"values\"==e?i(0,t[r]):i(0,[r,t[r]])},\"values\"),o.Arguments=o.Array,n(\"keys\"),n(\"values\"),n(\"entries\")},function(t,e,r){t.exports=!r(199)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e,r){\"use strict\";e.utils=r(505),e.Cipher=r(502),e.DES=r(503),e.CBC=r(501),e.EDE=r(504)},function(t,e,r){(function(e){function n(t,r,n,o){e.isBuffer(t)||(t=new e(t,\"binary\")),r&&!e.isBuffer(r)&&(r=new e(r,\"binary\")),n/=8,o=o||0;for(var a,f,s=0,u=0,h=new e(n),c=new e(o),d=0,l=[];;){if(d++>0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;fn?r=i(t).update(r).digest():r.length=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function f(t,e,r,n){for(var i=0,o=Math.min(t.length,r),a=e;a=49?f-49+10:f>=17?f-17+10:f}return i}function s(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}function u(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],o=0|e.words[0],a=i*o,f=67108863&a,s=a/67108864|0;r.words[0]=f;for(var u=1;u>>26,c=67108863&s,d=Math.min(u,e.length-1),l=Math.max(0,u-t.length+1);l<=d;l++){var p=u-l|0;i=0|t.words[p],o=0|e.words[l],a=i*o+c,h+=a/67108864|0,c=67108863&a}r.words[u]=0|c,s=0|h}return 0!==s?r.words[u]=0|s:r.length--,r.strip()}function h(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,o=0;o>>26)|0,i+=a>>>26,a&=67108863}r.words[o]=f,n=a,a=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}function c(t,e,r){var n=new d;return n.mulp(t,e,r)}function d(t,e){this.x=t,this.y=e}function l(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){l.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function b(){l.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function v(){l.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function y(){l.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function m(t){if(\"string\"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),\"modulus must be greater than 1\"),this.m=t,this.prime=null}function g(t){m.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}\"object\"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;var w;try{w=r(1).Buffer}catch(t){}o.isBN=function(t){return t instanceof o||null!==t&&\"object\"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if(\"number\"==typeof t)return this._initNumber(t,e,r);if(\"object\"==typeof t)return this._initArray(t,e,r);\"hex\"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initNumber=function(t,e,r){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(n(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),e,r)},o.prototype._initArray=function(t,e,r){if(n(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)a=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[o]|=a<>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);else if(\"le\"===r)for(i=0,o=0;i>>26-f&67108863,f+=24,f>=26&&(f-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6)i=a(t,r,r+6),this.words[n]|=i<>>26-o&4194303,o+=24,o>=26&&(o-=26,n++);r+6!==e&&(i=a(t,e,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var o=t.length-r,a=o%n,s=Math.min(o,o-a)+r,u=0,h=r;h1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?\"\"};var _=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],S=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];o.prototype.toString=function(t,e){t=t||10,e=0|e||1;var r;if(16===t||\"hex\"===t){r=\"\";for(var i=0,o=0,a=0;a>>24-i&16777215,r=0!==o||a!==this.length-1?_[6-s.length]+s+r:s+r,i+=2,i>=26&&(i-=26,a--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=M[t],h=S[t];r=\"\";var c=this.clone();for(c.negative=0;!c.isZero();){var d=c.modn(h).toString(t);c=c.idivn(h),r=c.isZero()?d+r:_[u-d.length]+d+r}for(this.isZero()&&(r=\"0\"+r);r.length%e!==0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return n(\"undefined\"!=typeof w),this.toArrayLike(w,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,\"byte array longer than desired length\"),n(o>0,\"Requested array length <= 0\"),this.strip();var a,f,s=\"le\"===e,u=new t(o),h=this.clone();if(s){for(f=0;!h.isZero();f++)a=h.andln(255),h.iushrn(8),u[f]=a;for(;f=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){n(\"number\"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){n(\"number\"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),e?this.words[r]=this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r=this.cmp(t);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var o=0,a=0;a>26,this.words[a]=67108863&e;for(;0!==o&&a>26,this.words[a]=67108863&e;if(0===o&&a>>13,l=0|a[1],p=8191&l,b=l>>>13,v=0|a[2],y=8191&v,m=v>>>13,g=0|a[3],w=8191&g,_=g>>>13,M=0|a[4],S=8191&M,E=M>>>13,A=0|a[5],k=8191&A,x=A>>>13,I=0|a[6],B=8191&I,O=I>>>13,R=0|a[7],P=8191&R,T=R>>>13,j=0|a[8],C=8191&j,N=j>>>13,L=0|a[9],U=8191&L,z=L>>>13,D=0|f[0],q=8191&D,F=D>>>13,K=0|f[1],G=8191&K,V=K>>>13,H=0|f[2],X=8191&H,Y=H>>>13,W=0|f[3],Z=8191&W,J=W>>>13,$=0|f[4],Q=8191&$,tt=$>>>13,et=0|f[5],rt=8191&et,nt=et>>>13,it=0|f[6],ot=8191&it,at=it>>>13,ft=0|f[7],st=8191&ft,ut=ft>>>13,ht=0|f[8],ct=8191&ht,dt=ht>>>13,lt=0|f[9],pt=8191<,bt=lt>>>13;r.negative=t.negative^e.negative,r.length=19,n=Math.imul(c,q),i=Math.imul(c,F),i=i+Math.imul(d,q)|0,o=Math.imul(d,F);var vt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(p,q),i=Math.imul(p,F),i=i+Math.imul(b,q)|0,o=Math.imul(b,F),n=n+Math.imul(c,G)|0,i=i+Math.imul(c,V)|0,i=i+Math.imul(d,G)|0,o=o+Math.imul(d,V)|0;var yt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,q),i=Math.imul(y,F),i=i+Math.imul(m,q)|0,o=Math.imul(m,F),n=n+Math.imul(p,G)|0,i=i+Math.imul(p,V)|0,i=i+Math.imul(b,G)|0,o=o+Math.imul(b,V)|0,n=n+Math.imul(c,X)|0,i=i+Math.imul(c,Y)|0,i=i+Math.imul(d,X)|0,o=o+Math.imul(d,Y)|0;var mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,n=Math.imul(w,q),i=Math.imul(w,F),i=i+Math.imul(_,q)|0,o=Math.imul(_,F),n=n+Math.imul(y,G)|0,i=i+Math.imul(y,V)|0,i=i+Math.imul(m,G)|0,o=o+Math.imul(m,V)|0,n=n+Math.imul(p,X)|0,i=i+Math.imul(p,Y)|0,i=i+Math.imul(b,X)|0,o=o+Math.imul(b,Y)|0,n=n+Math.imul(c,Z)|0,i=i+Math.imul(c,J)|0,i=i+Math.imul(d,Z)|0,o=o+Math.imul(d,J)|0;var gt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(S,q),i=Math.imul(S,F),i=i+Math.imul(E,q)|0,o=Math.imul(E,F),n=n+Math.imul(w,G)|0,i=i+Math.imul(w,V)|0,i=i+Math.imul(_,G)|0,o=o+Math.imul(_,V)|0,n=n+Math.imul(y,X)|0,i=i+Math.imul(y,Y)|0,i=i+Math.imul(m,X)|0,o=o+Math.imul(m,Y)|0,n=n+Math.imul(p,Z)|0,i=i+Math.imul(p,J)|0,i=i+Math.imul(b,Z)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(c,Q)|0,i=i+Math.imul(c,tt)|0,i=i+Math.imul(d,Q)|0,o=o+Math.imul(d,tt)|0;var wt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(k,q),i=Math.imul(k,F),i=i+Math.imul(x,q)|0,o=Math.imul(x,F),n=n+Math.imul(S,G)|0,i=i+Math.imul(S,V)|0,i=i+Math.imul(E,G)|0,o=o+Math.imul(E,V)|0,n=n+Math.imul(w,X)|0,i=i+Math.imul(w,Y)|0,i=i+Math.imul(_,X)|0,o=o+Math.imul(_,Y)|0,n=n+Math.imul(y,Z)|0,i=i+Math.imul(y,J)|0,i=i+Math.imul(m,Z)|0,o=o+Math.imul(m,J)|0,n=n+Math.imul(p,Q)|0,i=i+Math.imul(p,tt)|0,i=i+Math.imul(b,Q)|0,o=o+Math.imul(b,tt)|0,n=n+Math.imul(c,rt)|0,i=i+Math.imul(c,nt)|0,i=i+Math.imul(d,rt)|0,o=o+Math.imul(d,nt)|0;var _t=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(B,q),i=Math.imul(B,F),i=i+Math.imul(O,q)|0,o=Math.imul(O,F),n=n+Math.imul(k,G)|0,i=i+Math.imul(k,V)|0,i=i+Math.imul(x,G)|0,o=o+Math.imul(x,V)|0,n=n+Math.imul(S,X)|0,i=i+Math.imul(S,Y)|0,i=i+Math.imul(E,X)|0,o=o+Math.imul(E,Y)|0,n=n+Math.imul(w,Z)|0,i=i+Math.imul(w,J)|0,i=i+Math.imul(_,Z)|0,o=o+Math.imul(_,J)|0,n=n+Math.imul(y,Q)|0,i=i+Math.imul(y,tt)|0,i=i+Math.imul(m,Q)|0,o=o+Math.imul(m,tt)|0,n=n+Math.imul(p,rt)|0,i=i+Math.imul(p,nt)|0,i=i+Math.imul(b,rt)|0,o=o+Math.imul(b,nt)|0,n=n+Math.imul(c,ot)|0,i=i+Math.imul(c,at)|0,i=i+Math.imul(d,ot)|0,o=o+Math.imul(d,at)|0;var Mt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(P,q),i=Math.imul(P,F),i=i+Math.imul(T,q)|0,o=Math.imul(T,F),n=n+Math.imul(B,G)|0,i=i+Math.imul(B,V)|0,i=i+Math.imul(O,G)|0,o=o+Math.imul(O,V)|0,n=n+Math.imul(k,X)|0,i=i+Math.imul(k,Y)|0,i=i+Math.imul(x,X)|0,o=o+Math.imul(x,Y)|0,n=n+Math.imul(S,Z)|0,i=i+Math.imul(S,J)|0,i=i+Math.imul(E,Z)|0,o=o+Math.imul(E,J)|0,n=n+Math.imul(w,Q)|0,i=i+Math.imul(w,tt)|0,i=i+Math.imul(_,Q)|0,o=o+Math.imul(_,tt)|0,n=n+Math.imul(y,rt)|0,i=i+Math.imul(y,nt)|0,i=i+Math.imul(m,rt)|0,o=o+Math.imul(m,nt)|0,n=n+Math.imul(p,ot)|0,i=i+Math.imul(p,at)|0,i=i+Math.imul(b,ot)|0,o=o+Math.imul(b,at)|0,n=n+Math.imul(c,st)|0,i=i+Math.imul(c,ut)|0,i=i+Math.imul(d,st)|0,o=o+Math.imul(d,ut)|0;var St=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(C,q),i=Math.imul(C,F),i=i+Math.imul(N,q)|0,o=Math.imul(N,F),n=n+Math.imul(P,G)|0,i=i+Math.imul(P,V)|0,i=i+Math.imul(T,G)|0,o=o+Math.imul(T,V)|0,n=n+Math.imul(B,X)|0,i=i+Math.imul(B,Y)|0,i=i+Math.imul(O,X)|0,o=o+Math.imul(O,Y)|0,n=n+Math.imul(k,Z)|0,i=i+Math.imul(k,J)|0,i=i+Math.imul(x,Z)|0,o=o+Math.imul(x,J)|0,n=n+Math.imul(S,Q)|0,i=i+Math.imul(S,tt)|0,i=i+Math.imul(E,Q)|0,o=o+Math.imul(E,tt)|0,n=n+Math.imul(w,rt)|0,i=i+Math.imul(w,nt)|0,i=i+Math.imul(_,rt)|0,o=o+Math.imul(_,nt)|0,n=n+Math.imul(y,ot)|0,i=i+Math.imul(y,at)|0,i=i+Math.imul(m,ot)|0,o=o+Math.imul(m,at)|0,n=n+Math.imul(p,st)|0,i=i+Math.imul(p,ut)|0,i=i+Math.imul(b,st)|0,o=o+Math.imul(b,ut)|0,n=n+Math.imul(c,ct)|0,i=i+Math.imul(c,dt)|0,i=i+Math.imul(d,ct)|0,o=o+Math.imul(d,dt)|0;var Et=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(U,q),i=Math.imul(U,F),i=i+Math.imul(z,q)|0,o=Math.imul(z,F),n=n+Math.imul(C,G)|0,i=i+Math.imul(C,V)|0,i=i+Math.imul(N,G)|0,o=o+Math.imul(N,V)|0,n=n+Math.imul(P,X)|0,i=i+Math.imul(P,Y)|0,i=i+Math.imul(T,X)|0,o=o+Math.imul(T,Y)|0,n=n+Math.imul(B,Z)|0,i=i+Math.imul(B,J)|0,i=i+Math.imul(O,Z)|0,o=o+Math.imul(O,J)|0,n=n+Math.imul(k,Q)|0,i=i+Math.imul(k,tt)|0,i=i+Math.imul(x,Q)|0,o=o+Math.imul(x,tt)|0,n=n+Math.imul(S,rt)|0,i=i+Math.imul(S,nt)|0,i=i+Math.imul(E,rt)|0,o=o+Math.imul(E,nt)|0,n=n+Math.imul(w,ot)|0,i=i+Math.imul(w,at)|0,i=i+Math.imul(_,ot)|0,o=o+Math.imul(_,at)|0,n=n+Math.imul(y,st)|0,i=i+Math.imul(y,ut)|0,i=i+Math.imul(m,st)|0,o=o+Math.imul(m,ut)|0,n=n+Math.imul(p,ct)|0,i=i+Math.imul(p,dt)|0,i=i+Math.imul(b,ct)|0,o=o+Math.imul(b,dt)|0,n=n+Math.imul(c,pt)|0,i=i+Math.imul(c,bt)|0,i=i+Math.imul(d,pt)|0,o=o+Math.imul(d,bt)|0;var At=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(U,G),i=Math.imul(U,V),i=i+Math.imul(z,G)|0,o=Math.imul(z,V),n=n+Math.imul(C,X)|0,i=i+Math.imul(C,Y)|0,i=i+Math.imul(N,X)|0,o=o+Math.imul(N,Y)|0,n=n+Math.imul(P,Z)|0,i=i+Math.imul(P,J)|0,i=i+Math.imul(T,Z)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(B,Q)|0,i=i+Math.imul(B,tt)|0,i=i+Math.imul(O,Q)|0,o=o+Math.imul(O,tt)|0,n=n+Math.imul(k,rt)|0,i=i+Math.imul(k,nt)|0,i=i+Math.imul(x,rt)|0,o=o+Math.imul(x,nt)|0,n=n+Math.imul(S,ot)|0,i=i+Math.imul(S,at)|0,i=i+Math.imul(E,ot)|0,o=o+Math.imul(E,at)|0,n=n+Math.imul(w,st)|0,i=i+Math.imul(w,ut)|0,i=i+Math.imul(_,st)|0,o=o+Math.imul(_,ut)|0,n=n+Math.imul(y,ct)|0,i=i+Math.imul(y,dt)|0,i=i+Math.imul(m,ct)|0,o=o+Math.imul(m,dt)|0,n=n+Math.imul(p,pt)|0,i=i+Math.imul(p,bt)|0,i=i+Math.imul(b,pt)|0,o=o+Math.imul(b,bt)|0;var kt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(U,X),i=Math.imul(U,Y),i=i+Math.imul(z,X)|0,o=Math.imul(z,Y),n=n+Math.imul(C,Z)|0,i=i+Math.imul(C,J)|0,i=i+Math.imul(N,Z)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(P,Q)|0,i=i+Math.imul(P,tt)|0,i=i+Math.imul(T,Q)|0,o=o+Math.imul(T,tt)|0,n=n+Math.imul(B,rt)|0,i=i+Math.imul(B,nt)|0,i=i+Math.imul(O,rt)|0,o=o+Math.imul(O,nt)|0,n=n+Math.imul(k,ot)|0,i=i+Math.imul(k,at)|0,i=i+Math.imul(x,ot)|0,o=o+Math.imul(x,at)|0,n=n+Math.imul(S,st)|0,i=i+Math.imul(S,ut)|0,i=i+Math.imul(E,st)|0,o=o+Math.imul(E,ut)|0,n=n+Math.imul(w,ct)|0,i=i+Math.imul(w,dt)|0,i=i+Math.imul(_,ct)|0,o=o+Math.imul(_,dt)|0,n=n+Math.imul(y,pt)|0,i=i+Math.imul(y,bt)|0,i=i+Math.imul(m,pt)|0,o=o+Math.imul(m,bt)|0;var xt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(U,Z),i=Math.imul(U,J),i=i+Math.imul(z,Z)|0,o=Math.imul(z,J),n=n+Math.imul(C,Q)|0,i=i+Math.imul(C,tt)|0,i=i+Math.imul(N,Q)|0,o=o+Math.imul(N,tt)|0,n=n+Math.imul(P,rt)|0,i=i+Math.imul(P,nt)|0,i=i+Math.imul(T,rt)|0,o=o+Math.imul(T,nt)|0,n=n+Math.imul(B,ot)|0,i=i+Math.imul(B,at)|0,i=i+Math.imul(O,ot)|0,o=o+Math.imul(O,at)|0,n=n+Math.imul(k,st)|0,i=i+Math.imul(k,ut)|0,i=i+Math.imul(x,st)|0,o=o+Math.imul(x,ut)|0,n=n+Math.imul(S,ct)|0,i=i+Math.imul(S,dt)|0,i=i+Math.imul(E,ct)|0,o=o+Math.imul(E,dt)|0,n=n+Math.imul(w,pt)|0,i=i+Math.imul(w,bt)|0,i=i+Math.imul(_,pt)|0,o=o+Math.imul(_,bt)|0;var It=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(U,Q),i=Math.imul(U,tt),i=i+Math.imul(z,Q)|0,o=Math.imul(z,tt),n=n+Math.imul(C,rt)|0,i=i+Math.imul(C,nt)|0,i=i+Math.imul(N,rt)|0,o=o+Math.imul(N,nt)|0,n=n+Math.imul(P,ot)|0,i=i+Math.imul(P,at)|0,i=i+Math.imul(T,ot)|0,o=o+Math.imul(T,at)|0,n=n+Math.imul(B,st)|0,i=i+Math.imul(B,ut)|0,i=i+Math.imul(O,st)|0,o=o+Math.imul(O,ut)|0,n=n+Math.imul(k,ct)|0,i=i+Math.imul(k,dt)|0,i=i+Math.imul(x,ct)|0,o=o+Math.imul(x,dt)|0,n=n+Math.imul(S,pt)|0,i=i+Math.imul(S,bt)|0,i=i+Math.imul(E,pt)|0,o=o+Math.imul(E,bt)|0;var Bt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,n=Math.imul(U,rt),i=Math.imul(U,nt),i=i+Math.imul(z,rt)|0,o=Math.imul(z,nt),n=n+Math.imul(C,ot)|0,i=i+Math.imul(C,at)|0,i=i+Math.imul(N,ot)|0,o=o+Math.imul(N,at)|0,n=n+Math.imul(P,st)|0,i=i+Math.imul(P,ut)|0,i=i+Math.imul(T,st)|0,o=o+Math.imul(T,ut)|0,n=n+Math.imul(B,ct)|0,i=i+Math.imul(B,dt)|0,i=i+Math.imul(O,ct)|0,o=o+Math.imul(O,dt)|0,n=n+Math.imul(k,pt)|0,i=i+Math.imul(k,bt)|0,i=i+Math.imul(x,pt)|0,o=o+Math.imul(x,bt)|0;var Ot=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,n=Math.imul(U,ot),i=Math.imul(U,at),i=i+Math.imul(z,ot)|0,o=Math.imul(z,at),n=n+Math.imul(C,st)|0,i=i+Math.imul(C,ut)|0,i=i+Math.imul(N,st)|0,o=o+Math.imul(N,ut)|0,n=n+Math.imul(P,ct)|0,i=i+Math.imul(P,dt)|0,i=i+Math.imul(T,ct)|0,o=o+Math.imul(T,dt)|0,n=n+Math.imul(B,pt)|0,i=i+Math.imul(B,bt)|0,i=i+Math.imul(O,pt)|0,o=o+Math.imul(O,bt)|0;var Rt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,n=Math.imul(U,st),i=Math.imul(U,ut),i=i+Math.imul(z,st)|0,o=Math.imul(z,ut),n=n+Math.imul(C,ct)|0,i=i+Math.imul(C,dt)|0,i=i+Math.imul(N,ct)|0,o=o+Math.imul(N,dt)|0,n=n+Math.imul(P,pt)|0,i=i+Math.imul(P,bt)|0,i=i+Math.imul(T,pt)|0,o=o+Math.imul(T,bt)|0;var Pt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(U,ct),i=Math.imul(U,dt),i=i+Math.imul(z,ct)|0,o=Math.imul(z,dt),n=n+Math.imul(C,pt)|0,i=i+Math.imul(C,bt)|0,i=i+Math.imul(N,pt)|0,o=o+Math.imul(N,bt)|0;var Tt=(u+n|0)+((8191&i)<<13)|0;u=(o+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(U,pt),i=Math.imul(U,bt),i=i+Math.imul(z,pt)|0,o=Math.imul(z,bt);var jt=(u+n|0)+((8191&i)<<13)|0;return u=(o+(i>>>13)|0)+(jt>>>26)|0,jt&=67108863,s[0]=vt,s[1]=yt,s[2]=mt,s[3]=gt,s[4]=wt,s[5]=_t,s[6]=Mt,s[7]=St,s[8]=Et,s[9]=At,s[10]=kt,s[11]=xt,s[12]=It,s[13]=Bt,s[14]=Ot,s[15]=Rt,s[16]=Pt,s[17]=Tt,s[18]=jt,0!==u&&(s[19]=u,r.length++),r};Math.imul||(E=u),o.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?E(this,t,e):n<63?u(this,t,e):n<1024?h(this,t,e):c(this,t,e)},d.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,n=0;n>=1;return n},d.prototype.permute=function(t,e,r,n,i,o){for(var a=0;a>>=1)i++;return 1<>>=13,r[2*a+1]=8191&o,o>>>=13;for(a=2*e;a>=26,e+=i/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=s(t);if(0===e.length)return new o(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(e=0;e>>26-r}a&&(this.words[e]=a,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0);var i;i=e?(e-e%26)/26:0;var o=t%26,a=Math.min((t-o)/26,this.length),f=67108863^67108863>>>o<a)for(this.length-=a,u=0;u=0&&(0!==h||u>=i);u--){var c=0|this.words[u];this.words[u]=h<<26-o|c>>>o,h=c&f}return s&&0!==h&&(s.words[s.length++]=h),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){n(\"number\"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(n(\"number\"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(s/67108864|0),this.words[i+r]=67108863&a}for(;i>26,this.words[i+r]=67108863&a;if(0===f)return this.strip();for(n(f===-1),f=0,i=0;i>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),i=t,a=0|i.words[i.length-1],f=this._countBits(a);r=26-f,0!==r&&(i=i.ushln(r),n.iushln(r),a=0|i.words[i.length-1]);var s,u=n.length-i.length;if(\"mod\"!==e){s=new o(null),s.length=u+1,s.words=new Array(s.length);for(var h=0;h=0;d--){var l=67108864*(0|n.words[i.length+d])+(0|n.words[i.length+d-1]);for(l=Math.min(l/a|0,67108863),n._ishlnsubmul(i,l,d);0!==n.negative;)l--,n.negative=0,n._ishlnsubmul(i,1,d),n.isZero()||(n.negative^=1);s&&(s.words[d]=l)}return s&&s.strip(),n.strip(),\"div\"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},o.prototype.divmod=function(t,e,r){if(n(!t.isZero()),this.isZero())return{div:new o(0),mod:new o(0)};var i,a,f;return 0!==this.negative&&0===t.negative?(f=this.neg().divmod(t,e),\"mod\"!==e&&(i=f.div.neg()),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.iadd(t)),{div:i,mod:a}):0===this.negative&&0!==t.negative?(f=this.divmod(t.neg(),e),\"mod\"!==e&&(i=f.div.neg()),{div:i,mod:f.mod}):0!==(this.negative&t.negative)?(f=this.neg().divmod(t.neg(),e),\"div\"!==e&&(a=f.mod.neg(),r&&0!==a.negative&&a.isub(t)),{div:f.div,mod:a}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e)},o.prototype.div=function(t){return this.divmod(t,\"div\",!1).div},o.prototype.mod=function(t){return this.divmod(t,\"mod\",!1).mod},o.prototype.umod=function(t){return this.divmod(t,\"mod\",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},o.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=new o(0),s=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var h=r.clone(),c=e.clone();!e.isZero();){for(var d=0,l=1;0===(e.words[0]&l)&&d<26;++d,l<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(i.isOdd()||a.isOdd())&&(i.iadd(h),a.isub(c)),i.iushrn(1),a.iushrn(1);for(var p=0,b=1;0===(r.words[0]&b)&&p<26;++p,b<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(f.isOdd()||s.isOdd())&&(f.iadd(h),s.isub(c)),f.iushrn(1),s.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(f),a.isub(s)):(r.isub(e),f.isub(i),s.isub(a))}return{a:f,b:s,gcd:r.iushln(u)}},o.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new o(1),a=new o(0),f=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var s=0,u=1;0===(e.words[0]&u)&&s<26;++s,u<<=1);if(s>0)for(e.iushrn(s);s-- >0;)i.isOdd()&&i.iadd(f),i.iushrn(1);for(var h=0,c=1;0===(r.words[0]&c)&&h<26;++h,c<<=1);if(h>0)for(r.iushrn(h);h-- >0;)a.isOdd()&&a.iadd(f),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(a)):(r.isub(e),a.isub(i))}var d;return d=0===e.cmpn(1)?i:a,d.cmpn(0)<0&&d.iadd(t),d},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var o=e;e=r,r=o}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0===(1&this.words[0])},o.prototype.isOdd=function(){return 1===(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){n(\"number\"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,f&=67108863,this.words[a]=f}return 0!==o&&(this.words[a]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e=t<0;if(0!==this.negative&&!e)return-1;if(0===this.negative&&e)return 1;this.strip();var r;if(this.length>1)r=1;else{e&&(t=-t),n(t<=67108863,\"Number is too big\");var i=0|this.words[0];r=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return this.cmpn(t)===-1},o.prototype.lt=function(t){return this.cmp(t)===-1},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new m(t)},o.prototype.toRed=function(t){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},o.prototype.redAdd=function(t){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},o.prototype.redISub=function(t){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},o.prototype.redShl=function(t){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},o.prototype.redMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return n(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var A={k256:null,p224:null,p192:null,p25519:null};l.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},l.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},l.prototype.split=function(t,e){t.iushrn(this.n,0,e)},l.prototype.imulK=function(t){return t.imul(this.k)},i(p,l),p.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,o=a}o>>>=22,t.words[i-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},p.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function t(e){if(A[e])return A[e];var t;if(\"k256\"===e)t=new p;else if(\"p224\"===e)t=new b;else if(\"p192\"===e)t=new v;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new y}return A[e]=t,t},m.prototype._verify1=function(t){n(0===t.negative,\"red works only with positives\"),n(t.red,\"red works only with red numbers\")},m.prototype._verify2=function(t,e){n(0===(t.negative|e.negative),\"red works only with positives\"),n(t.red&&t.red===e.red,\"red works only with red numbers\")},m.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},m.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},m.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},m.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},m.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},m.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},m.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},m.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},m.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},m.prototype.isqr=function(t){return this.imul(t,t.clone())},m.prototype.sqr=function(t){return this.mul(t,t)},m.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2===1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),a=0;!i.isZero()&&0===i.andln(1);)a++,i.iushrn(1);n(!i.isZero());var f=new o(1).toRed(this),s=f.redNeg(),u=this.m.subn(1).iushrn(1),h=this.m.bitLength();for(h=new o(2*h*h).toRed(this);0!==this.pow(h,u).cmp(s);)h.redIAdd(s);for(var c=this.pow(h,i),d=this.pow(t,i.addn(1).iushrn(1)),l=this.pow(t,i),p=a;0!==l.cmp(f);){for(var b=l,v=0;0!==b.cmp(f);v++)b=b.redSqr();n(v=0;i--){for(var h=e.words[i],c=u-1;c>=0;c--){var d=h>>c&1;a!==n[0]&&(a=this.sqr(a)),0!==d||0!==f?(f<<=1,f|=d,s++,(s===r||0===i&&0===c)&&(a=this.mul(a,n[f]),s=0,f=0)):s=0}u=26}return a},m.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},m.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new g(t)},i(g,m),g.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},g.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},g.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},g.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},g.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof t||t,this)}).call(e,r(92)(t))},function(t,e,r){(function(t,n){var i=r(149),o=r(576);e.pbkdf2=function(t,r,n,i,a,f){if(\"function\"==typeof a&&(f=a,a=void 0),o(n,i),\"function\"!=typeof f)throw new Error(\"No callback provided to pbkdf2\");setTimeout(function(){f(null,e.pbkdf2Sync(t,r,n,i,a))})};var a;if(t.browser)a=\"utf-8\";else{var f=parseInt(t.version.split(\".\")[0].slice(1),10);a=f>=6?\"utf-8\":\"binary\"}e.pbkdf2Sync=function(t,e,r,f,s){n.isBuffer(t)||(t=new n(t,a)),n.isBuffer(e)||(e=new n(e,a)),o(r,f),s=s||\"sha1\";var u,h=1,c=new n(f),d=new n(e.length+4);e.copy(d,0,0,e.length);for(var l,p,b=1;b<=h;b++){d.writeUInt32BE(b,e.length);var v=i(s,t).update(d).digest();u||(u=v.length,p=new n(u),h=Math.ceil(f/u),l=f-(h-1)*u),v.copy(p,0,0,u);for(var y=1;y0&&l.push(a),l.push(t),r&&l.push(r),a=i(e.concat(l)),l=[],f=0,n>0)for(;;){if(0===n)break;if(f===a.length)break;h[s++]=a[f],n--,f++}if(o>0&&f!==a.length)for(;;){if(0===o)break;if(f===a.length)break;c[u++]=a[f],o--,f++}if(0===n&&0===o)break}for(f=0;f-1?n:E;f.WritableState=a;var k=r(73);k.inherits=r(74);var x,I={deprecate:r(598)};!function(){try{x=r(31)}catch(t){}finally{x||(x=r(110).EventEmitter)}}();var B=r(1).Buffer,O=r(156);k.inherits(f,x);var R;a.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(a.prototype,\"buffer\",{get:I.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\")})}catch(t){}}();var R;f.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},f.prototype.write=function(t,e,r){var n=this._writableState,o=!1;return\"function\"==typeof e&&(r=e,e=null),B.isBuffer(t)?e=\"buffer\":e||(e=n.defaultEncoding),\"function\"!=typeof r&&(r=i),n.ended?s(this,r):u(this,n,t,r)&&(n.pendingcb++,o=c(this,n,t,e,r)),o},f.prototype.cork=function(){var t=this._writableState;t.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||m(this,t))},f.prototype.setDefaultEncoding=function(t){if(\"string\"==typeof t&&(t=t.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((t+\"\").toLowerCase())>-1))throw new TypeError(\"Unknown encoding: \"+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,r){r(new Error(\"not implemented\"))},f.prototype._writev=null,f.prototype.end=function(t,e,r){var n=this._writableState;\"function\"==typeof t?(r=t,t=null,e=null):\"function\"==typeof e&&(r=e,e=null),null!==t&&void 0!==t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||M(this,n,r)}}).call(e,r(26),r(158).setImmediate)},function(t,e,r){\"use strict\";(function(t){var n=r(1),i=n.Buffer,o=n.SlowBuffer,a=n.kMaxLength||2147483647;e.alloc=function(t,e,r){if(\"function\"==typeof i.alloc)return i.alloc(t,e,r);if(\"number\"==typeof r)throw new TypeError(\"encoding must not be number\");if(\"number\"!=typeof t)throw new TypeError(\"size must be a number\");if(t>a)throw new RangeError(\"size is too large\");var n=r,o=e;void 0===o&&(n=void 0,o=0);var f=new i(t);if(\"string\"==typeof o)for(var s=new i(o,n),u=s.length,h=-1;++ha)throw new RangeError(\"size is too large\");return new i(t)},e.from=function(e,r,n){if(\"function\"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,r,n);if(\"number\"==typeof e)throw new TypeError('\"value\" argument must not be a number');if(\"string\"==typeof e)return new i(e,r);if(\"undefined\"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var o=r;if(1===arguments.length)return new i(e);\"undefined\"==typeof o&&(o=0);var a=n;if(\"undefined\"==typeof a&&(a=e.byteLength-o),o>=e.byteLength)throw new RangeError(\"'offset' is out of bounds\");if(a>e.byteLength-o)throw new RangeError(\"'length' is out of bounds\");return new i(e.slice(o,o+a))}if(i.isBuffer(e)){var f=new i(e.length);return e.copy(f,0,0,e.length),f}if(e){if(Array.isArray(e)||\"undefined\"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||\"length\"in e)return new i(e);if(\"Buffer\"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")},e.allocUnsafeSlow=function(t){if(\"function\"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(t);if(\"number\"!=typeof t)throw new TypeError(\"size must be a number\");if(t>=a)throw new RangeError(\"size is too large\");return new o(t)}}).call(e,r(39))},function(t,e,r){\"use strict\";(function(e){function r(t,r,n,i){if(\"function\"!=typeof t)throw new TypeError('\"callback\" argument must be a function');var o,a,f=arguments.length;switch(f){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,r)});case 3:return e.nextTick(function(){t.call(null,r,n)});case 4:return e.nextTick(function(){t.call(null,r,n,i)});default:for(o=new Array(f-1),a=0;a=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},e.setImmediate=\"function\"==typeof t?t:function(t){var r=u++,n=!(arguments.length<2)&&f.call(arguments,1);return s[r]=!0,o(function(){s[r]&&(n?t.apply(null,n):t.call(null),e.clearImmediate(r))}),r},e.clearImmediate=\"function\"==typeof n?n:function(t){delete s[t]}}).call(e,r(158).setImmediate,r(158).clearImmediate)},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(62),f=function(t){function e(){return n(this,e),i(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r2?arguments[2]:void 0,h=Math.min((void 0===u?a:i(u,a))-s,a-f),c=1;for(s0;)s in r?r[f]=r[s]:delete r[f],f+=c,s+=c;return r}},function(t,e,r){var n=r(55);t.exports=function(t,e){var r=[];return n(t,!1,r.push,r,e),r}},function(t,e,r){var n=r(13),i=r(11),o=r(65),a=r(10);t.exports=function(t,e,r,f,s){n(e);var u=i(t),h=o(u),c=a(u.length),d=s?c-1:0,l=s?-1:1;if(r<2)for(;;){if(d in h){f=h[d],d+=l;break}if(d+=l,s?d<0:c<=d)throw TypeError(\"Reduce of empty array with no initial value\")}for(;s?d>=0:c>d;d+=l)d in h&&(f=e(f,h[d],d,u));return f}},function(t,e,r){\"use strict\";var n=r(13),i=r(6),o=r(82),a=[].slice,f={},s=function(t,e,r){if(!(e in f)){for(var n=[],i=0;i1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(r(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!v(this,t)}}),l&&n(c.prototype,\"size\",{get:function(){return s(this[b])}}),c},def:function(t,e,r){var n,i,o=v(t,e);return o?o.v=r:(t._l=o={i:i=p(e,!0),k:e,v:r,p:n=t._l,n:void 0,r:!1},t._f||(t._f=o),n&&(n.n=o),t[b]++,\"F\"!==i&&(t._i[i]=o)),t},getEntry:v,setStrong:function(t,e,r){h(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?\"keys\"==e?c(0,r.k):\"values\"==e?c(0,r.v):c(0,[r.k,r.v]):(t._t=void 0,c(1))},r?\"entries\":\"values\",!r,!0),d(e)}}},function(t,e,r){var n=r(64),i=r(168);t.exports=function(t){return function(){if(n(this)!=t)throw TypeError(t+\"#toJSON isn't generic\");return i(this)}}},function(t,e,r){\"use strict\";var n=r(45),i=r(36).getWeak,o=r(3),a=r(6),f=r(40),s=r(55),u=r(27),h=r(12),c=u(5),d=u(6),l=0,p=function(t){return t._l||(t._l=new b)},b=function(){this.a=[]},v=function(t,e){return c(t.a,function(t){return t[0]===e})};b.prototype={get:function(t){var e=v(this,t);if(e)return e[1]},has:function(t){return!!v(this,t)},set:function(t,e){var r=v(this,t);r?r[1]=e:this.a.push([t,e])},delete:function(t){var e=d(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,r,o){var u=t(function(t,n){f(t,u,e,\"_i\"),t._i=l++,t._l=void 0,void 0!=n&&s(n,r,t[o],t)});return n(u.prototype,{delete:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).delete(t):e&&h(e,this._i)&&delete e[this._i]},has:function(t){if(!a(t))return!1;var e=i(t);return e===!0?p(this).has(t):e&&h(e,this._i)}}),u},def:function(t,e,r){var n=i(o(e),!0);return n===!0?p(t).set(e,r):n[t._i]=r,t},ufstore:p}},function(t,e,r){t.exports=!r(8)&&!r(5)(function(){return 7!=Object.defineProperty(r(120)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(6),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(3);t.exports=function(t,e,r,i){try{return i?e(n(r)[0],r[1]):e(r)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,r){\"use strict\";var n=r(44),i=r(86),o=r(66),a=r(11),f=r(65),s=Object.assign;t.exports=!s||r(5)(function(){var t={},e={},r=Symbol(),n=\"abcdefghijklmnopqrst\";return t[r]=7,n.split(\"\").forEach(function(t){e[t]=t}),7!=s({},t)[r]||Object.keys(s({},e)).join(\"\")!=n})?function(t,e){for(var r=a(t),s=arguments.length,u=1,h=i.f,c=o.f;s>u;)for(var d,l=f(arguments[u++]),p=h?n(l).concat(h(l)):n(l),b=p.length,v=0;b>v;)c.call(l,d=p[v++])&&(r[d]=l[d]);return r}:s},function(t,e,r){var n=r(9),i=r(3),o=r(44);t.exports=r(8)?Object.defineProperties:function(t,e){i(t);for(var r,a=o(e),f=a.length,s=0;f>s;)n.f(t,r=a[s++],e[r]);return t}},function(t,e,r){var n=r(17),i=r(43).f,o={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],f=function(t){try{return i(t)}catch(t){return a.slice()}};t.exports.f=function(t){return a&&\"[object Window]\"==o.call(t)?f(t):i(n(t))}},function(t,e,r){var n=r(12),i=r(17),o=r(78)(!1),a=r(133)(\"IE_PROTO\");t.exports=function(t,e){var r,f=i(t),s=0,u=[];for(r in f)r!=a&&n(f,r)&&u.push(r);for(;e.length>s;)n(f,r=e[s++])&&(~o(u,r)||u.push(r));return u}},function(t,e,r){var n=r(44),i=r(17),o=r(66).f;t.exports=function(t){return function(e){for(var r,a=i(e),f=n(a),s=f.length,u=0,h=[];s>u;)o.call(a,r=f[u++])&&h.push(t?[r,a[r]]:a[r]);return h}}},function(t,e,r){var n=r(43),i=r(86),o=r(3),a=r(4).Reflect;t.exports=a&&a.ownKeys||function(t){var e=n.f(o(t)),r=i.f;return r?e.concat(r(t)):e}},function(t,e,r){var n=r(4).parseFloat,i=r(58).trim;t.exports=1/n(r(138)+\"-0\")!==-(1/0)?function(t){var e=i(String(t),3),r=n(e);return 0===r&&\"-\"==e.charAt(0)?-0:r}:n},function(t,e,r){var n=r(4).parseInt,i=r(58).trim,o=r(138),a=/^[\\-+]?0[xX]/;t.exports=8!==n(o+\"08\")||22!==n(o+\"0x16\")?function(t,e){var r=i(String(t),3);return n(r,e>>>0||(a.test(r)?16:10))}:n},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},function(t,e,r){var n=r(10),i=r(137),o=r(24);t.exports=function(t,e,r,a){var f=String(o(t)),s=f.length,u=void 0===r?\" \":String(r),h=n(e);if(h<=s||\"\"==u)return f;var c=h-s,d=i.call(u,Math.ceil(c/u.length));return d.length>c&&(d=d.slice(0,c)),a?d+f:f+d}},function(t,e,r){e.f=r(7)},function(t,e,r){\"use strict\";var n=r(171);t.exports=r(79)(\"Map\",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{get:function(t){var e=n.getEntry(this,t);return e&&e.v},set:function(t,e){return n.def(this,0===t?0:t,e)}},n,!0)},function(t,e,r){r(8)&&\"g\"!=/./g.flags&&r(9).f(RegExp.prototype,\"flags\",{configurable:!0,get:r(81)})},function(t,e,r){\"use strict\";var n=r(171);t.exports=r(79)(\"Set\",function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t=0===t?0:t,t)}},n)},function(t,e,r){\"use strict\";var n,i=r(27)(0),o=r(15),a=r(36),f=r(179),s=r(173),u=r(6),h=a.getWeak,c=Object.isExtensible,d=s.ufstore,l={},p=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(u(t)){var e=h(t);return e===!0?d(this).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(this,t,e)}},v=t.exports=r(79)(\"WeakMap\",p,b,s,!0,!0);7!=(new v).set((Object.freeze||Object)(l),7).get(l)&&(n=s.getConstructor(p),f(n.prototype,b),a.NEED=!0,i([\"delete\",\"has\",\"get\",\"set\"],function(t){var e=v.prototype,r=e[t];o(e,t,function(e,i){if(u(e)&&!c(e)){this._f||(this._f=new n);var o=this._f[t](e,i);return\"set\"==t?this:o}return r.call(this,e,i)})}))},function(t,e){function r(t){throw new Error(\"Cannot find module '\"+t+\"'.\")}r.keys=function(){return[]},r.resolve=r,t.exports=r,r.id=194},function(t,e){\"use strict\";function r(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function i(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=function(t){function e(t){r(this,e);var i=n(this,Object.getPrototypeOf(e).call(this));return Object.defineProperty(i,\"message\",{configurable:!0,enumerable:!1,value:void 0!==t?String(t):\"\"}),Object.defineProperty(i,\"name\",{configurable:!0,enumerable:!1,value:i.constructor.name}),Error.captureStackTrace&&Error.captureStackTrace(i,i.constructor),i}return i(e,t),e}(Error);t.exports=o},function(t,e,r){r(486),t.exports=r(197).Number.isInteger},function(t,e){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,e,r){var n=r(200),i=r(197),o=r(478),a=r(480),f=\"prototype\",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&\"function\"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&\"function\"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,e,r){\"use strict\";t.exports=r(473)},function(t,e,r){\"use strict\";(function(e){/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction n(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i=0;f--)if(s[f]!==u[f])return!1;for(f=s.length-1;f>=0;f--)if(a=s[f],!l(t[a],e[a],r,n))return!1;return!0}function v(t,e,r){l(t,e,!0)&&c(t,e,r,\"notDeepStrictEqual\",v)}function y(t,e){if(!t||!e)return!1;if(\"[object RegExp]\"==Object.prototype.toString.call(e))return e.test(t);try{if(t instanceof e)return!0}catch(t){}return!Error.isPrototypeOf(e)&&e.call({},t)===!0}function m(t){var e;try{t()}catch(t){e=t}return e}function g(t,e,r,n){var i;if(\"function\"!=typeof e)throw new TypeError('\"block\" argument must be a function');\"string\"==typeof r&&(n=r,r=null),i=m(e),n=(r&&r.name?\" (\"+r.name+\").\":\".\")+(n?\" \"+n:\".\"),t&&!i&&c(i,r,\"Missing expected exception\"+n);var o=\"string\"==typeof n,a=!t&&w.isError(i),f=!t&&i&&!r;if((a&&o&&y(i,r)||f)&&c(i,r,\"Got unwanted exception\"+n),t&&i&&r&&!y(i,r)||!t&&i)throw i}var w=r(606),_=Object.prototype.hasOwnProperty,M=Array.prototype.slice,S=function(){return\"foo\"===function(){}.name}(),E=t.exports=d,A=/\\s*function\\s+([^\\(\\s]*)\\s*/;E.AssertionError=function(t){this.name=\"AssertionError\",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=h(this),this.generatedMessage=!0);var e=t.stackStartFunction||c;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,i=f(e),o=n.indexOf(\"\\n\"+i);if(o>=0){var a=n.indexOf(\"\\n\",o+1);n=n.substring(a+1)}this.stack=n}}},w.inherits(E.AssertionError,Error),E.fail=c,E.ok=d,E.equal=function(t,e,r){t!=e&&c(t,e,r,\"==\",E.equal)},E.notEqual=function(t,e,r){t==e&&c(t,e,r,\"!=\",E.notEqual)},E.deepEqual=function(t,e,r){l(t,e,!1)||c(t,e,r,\"deepEqual\",E.deepEqual)},E.deepStrictEqual=function(t,e,r){l(t,e,!0)||c(t,e,r,\"deepStrictEqual\",E.deepStrictEqual)},E.notDeepEqual=function(t,e,r){l(t,e,!1)&&c(t,e,r,\"notDeepEqual\",E.notDeepEqual)},E.notDeepStrictEqual=v,E.strictEqual=function(t,e,r){t!==e&&c(t,e,r,\"===\",E.strictEqual)},E.notStrictEqual=function(t,e,r){t===e&&c(t,e,r,\"!==\",E.notStrictEqual)},E.throws=function(t,e,r){g(!0,t,e,r)},E.doesNotThrow=function(t,e,r){g(!1,t,e,r)},E.ifError=function(t){if(t)throw t};var k=Object.keys||function(t){var e=[];for(var r in t)_.call(t,r)&&e.push(r);return e}}).call(e,r(39))},function(t,e,r){(function(e){function n(t,r,i,f){if(!(this instanceof n))return new n(t,r,i);a.call(this),this._finID=e.concat([i,new e([0,0,0,1])]),i=e.concat([i,new e([0,0,0,2])]),this._cipher=new o.AES(r),this._prev=new e(i.length),this._cache=new e(\"\"),this._secCache=new e(\"\"),this._decrypt=f,this._alen=0,this._len=0,i.copy(this._prev),this._mode=t;var u=new e(4);u.fill(0),this._ghash=new s(this._cipher.encryptBlock(u)),this._authTag=null,this._called=!1}function i(t,e){var r=0;t.length!==e.length&&r++;for(var n=Math.min(t.length,e.length),i=-1;++i>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error(\"length octect is too long\");n=0;for(var o=0;o=31?n.error(\"Multi-octet tag encoding unsupported\"):(e||(i|=32),i|=c.tagClassByName[r||\"universal\"]<<6)}var f=r(2),s=r(1).Buffer,u=r(100),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if(\"bitstr\"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if(\"bmpstr\"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error(\"Second objid identifier OOB\");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return\"gentime\"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+e+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},i.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},i.prototype._encodeInt=function(t,e){if(\"string\"==typeof t){if(!e)return this.reporter.error(\"String int or enum given, but no values map\");if(!e.hasOwnProperty(t))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(t));t=e[t]}if(\"number\"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return\"function\"==typeof t&&(t=t(e)),t._getEncoder(\"der\").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function s(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}function u(t){return(t>>>17|t<<15)^(t>>>19|t<<13)^t>>>10}var h=r(2),c=r(60),d=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],l=new Array(64);h(n,c),n.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,h=0|this._c,c=0|this._d,l=0|this._e,p=0|this._f,b=0|this._g,v=0|this._h,y=0;y<16;++y)e[y]=t.readInt32BE(4*y);for(;y<64;++y)e[y]=u(e[y-2])+e[y-7]+s(e[y-15])+e[y-16]|0;for(var m=0;m<64;++m){var g=v+f(l)+i(l,p,b)+d[m]+e[m]|0,w=a(r)+o(r,n,h)|0;v=b,b=p,p=l,l=c+g|0,c=h,h=n,n=r,r=g+w|0}this._a=r+this._a|0,this._b=n+this._b|0,this._c=h+this._c|0,this._d=c+this._d|0,this._e=l+this._e|0,this._f=p+this._f|0,this._g=b+this._g|0,this._h=v+this._h|0},n.prototype._hash=function(){var t=new e(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=v,p.call(this,128,112)}function i(t,e,r){return r^t&(e^r)}function o(t,e,r){return t&e|r&(t|e)}function a(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function s(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function u(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function h(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function c(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function d(t,e){return t>>>0>>0?1:0}var l=r(2),p=r(60),b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],v=new Array(160);l(n,p),n.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._ah,n=0|this._bh,l=0|this._ch,p=0|this._dh,v=0|this._eh,y=0|this._fh,m=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,M=0|this._cl,S=0|this._dl,E=0|this._el,A=0|this._fl,k=0|this._gl,x=0|this._hl,I=0;I<32;I+=2)e[I]=t.readInt32BE(4*I),e[I+1]=t.readInt32BE(4*I+4);for(;I<160;I+=2){var B=e[I-30],O=e[I-30+1],R=s(B,O),P=u(O,B);\nB=e[I-4],O=e[I-4+1];var T=h(B,O),j=c(O,B),C=e[I-14],N=e[I-14+1],L=e[I-32],U=e[I-32+1],z=P+N|0,D=R+C+d(z,P)|0;z=z+j|0,D=D+T+d(z,j)|0,z=z+U|0,D=D+L+d(z,U)|0,e[I]=D,e[I+1]=z}for(var q=0;q<160;q+=2){D=e[q],z=e[q+1];var F=o(r,n,l),K=o(w,_,M),G=a(r,w),V=a(w,r),H=f(v,E),X=f(E,v),Y=b[q],W=b[q+1],Z=i(v,y,m),J=i(E,A,k),$=x+X|0,Q=g+H+d($,x)|0;$=$+J|0,Q=Q+Z+d($,J)|0,$=$+W|0,Q=Q+Y+d($,W)|0,$=$+z|0,Q=Q+D+d($,z)|0;var tt=V+K|0,et=G+F+d(tt,V)|0;g=m,x=k,m=y,k=A,y=v,A=E,E=S+$|0,v=p+Q+d(E,S)|0,p=l,S=M,l=n,M=_,n=r,_=w,w=$+tt|0,r=Q+et+d(w,$)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+M|0,this._dl=this._dl+S|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+k|0,this._hl=this._hl+x|0,this._ah=this._ah+r+d(this._al,w)|0,this._bh=this._bh+n+d(this._bl,_)|0,this._ch=this._ch+l+d(this._cl,M)|0,this._dh=this._dh+p+d(this._dl,S)|0,this._eh=this._eh+v+d(this._el,E)|0,this._fh=this._fh+y+d(this._fl,A)|0,this._gh=this._gh+m+d(this._gl,k)|0,this._hh=this._hh+g+d(this._hl,x)|0},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(64);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){function n(){if(null!==g)return g;var t=1048576,e=[];e[0]=2;for(var r=1,n=3;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(d),r.testn(1)||r.iadd(l),e.cmp(l)){if(!e.cmp(p))for(;r.mod(b).cmp(v);)r.iadd(m)}else for(;r.mod(u).cmp(y);)r.iadd(m);if(n=r.shrn(1),i(n)&&i(r)&&o(n)&&o(r)&&c.test(n)&&c.test(r))return r}}var f=r(61);t.exports=a,a.simpleSieve=i,a.fermatTest=o;var s=r(150),u=new s(24),h=r(230),c=new h,d=new s(1),l=new s(2),p=new s(5),b=(new s(16),new s(8),new s(10)),v=new s(3),y=(new s(7),new s(11)),m=new s(4),g=(new s(12),null)},function(t,e,r){function n(t){this.rand=t||new o.Rand}var i=r(150),o=r(575);t.exports=n,n.create=function(t){return new n(t)},n.prototype._rand=function(t){var e=t.bitLength(),r=this.rand.generate(Math.ceil(e/8));r[0]|=3;var n=7&e;return 0!==n&&(r[r.length-1]>>=7-n),new i(r)},n.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),a=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var f=t.subn(1),s=f.subn(1),u=0;!f.testn(u);u++);for(var h=t.shrn(u),c=f.toRed(o),d=!0;e>0;e--){var l=this._rand(s);r&&r(l);var p=l.toRed(o).redPow(h);if(0!==p.cmp(a)&&0!==p.cmp(c)){for(var b=1;b0;e--){var c=this._rand(f),d=t.gcd(c);if(0!==d.cmpn(1))return d;var l=c.toRed(n).redPow(u);if(0!==l.cmp(o)&&0!==l.cmp(h)){for(var p=1;p=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(70),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){var r;\"object\"!=typeof t||e.isBuffer(t)||(r=t.passphrase,t=t.key),\"string\"==typeof t&&(t=new e(t));var n,a,s=f(t,r),u=s.tag,h=s.data;switch(u){case\"PUBLIC KEY\":switch(a=o.PublicKey.decode(h,\"der\"),n=a.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return o.RSAPublicKey.decode(a.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":return a.subjectPrivateKey=a.subjectPublicKey,{type:\"ec\",data:a};case\"1.2.840.10040.4.1\":return a.algorithm.params.pub_key=o.DSAparam.decode(a.subjectPublicKey.data,\"der\"),{type:\"dsa\",data:a.algorithm.params};default:throw new Error(\"unknown key id \"+n)}throw new Error(\"unknown key type \"+u);case\"ENCRYPTED PRIVATE KEY\":h=o.EncryptedPrivateKey.decode(h,\"der\"),h=i(h,r);case\"PRIVATE KEY\":switch(a=o.PrivateKey.decode(h,\"der\"),n=a.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return o.RSAPrivateKey.decode(a.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:a.algorithm.curve,privateKey:o.ECPrivateKey.decode(a.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":return a.algorithm.params.priv_key=o.DSAparam.decode(a.subjectPrivateKey,\"der\"),{type:\"dsa\",params:a.algorithm.params};default:throw new Error(\"unknown key id \"+n)}throw new Error(\"unknown key type \"+u);case\"RSA PUBLIC KEY\":return o.RSAPublicKey.decode(h,\"der\");case\"RSA PRIVATE KEY\":return o.RSAPrivateKey.decode(h,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:o.DSAPrivateKey.decode(h,\"der\")};case\"EC PRIVATE KEY\":return h=o.ECPrivateKey.decode(h,\"der\"),{curve:h.parameters.value,privateKey:h.privateKey};default:throw new Error(\"unknown key type \"+u)}}function i(t,r){var n=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=a[t.algorithm.decrypt.cipher.algo.join(\".\")],f=t.algorithm.decrypt.cipher.iv,h=t.subjectPrivateKey,c=parseInt(o.split(\"-\")[1],10)/8,d=u.pbkdf2Sync(r,n,i,c),l=s.createDecipheriv(o,d,f),p=[];return p.push(l.update(h)),p.push(l.final()),e.concat(p)}var o=r(578),a=r(469),f=r(579),s=r(239),u=r(151);t.exports=n,n.signature=o.signature}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){return a.call(this,e),f.isBuffer(t)?(this.base=t,this.offset=0,void(this.length=t.length)):void this.error(\"Input not Buffer\")}function i(t,e){if(Array.isArray(t))this.length=0,this.value=t.map(function(t){return t instanceof i||(t=new i(t,e)),this.length+=t.length,t},this);else if(\"number\"==typeof t){if(!(0<=t&&t<=255))return e.error(\"non-byte EncoderBuffer value\");this.value=t,this.length=1}else if(\"string\"==typeof t)this.value=t,this.length=f.byteLength(t);else{if(!f.isBuffer(t))return e.error(\"Unsupported type: \"+typeof t);this.value=t,this.length=t.length}}var o=r(2),a=r(71).Reporter,f=r(1).Buffer;o(n,a),e.DecoderBuffer=n,n.prototype.save=function(){return{offset:this.offset,reporter:a.prototype.save.call(this)}},n.prototype.restore=function(t){var e=new n(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,a.prototype.restore.call(this,t.reporter),e},n.prototype.isEmpty=function(){return this.offset===this.length},n.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||\"DecoderBuffer overrun\")},n.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||\"DecoderBuffer overrun\");var r=new n(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},n.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=i,i.prototype.join=function(t,e){return t||(t=new f(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach(function(r){r.join(t,e),e+=r.length}):(\"number\"==typeof this.value?t[e]=this.value:\"string\"==typeof this.value?t.write(this.value,e):f.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},function(t,e,r){var n=e;n._reverse=function(t){var e={};return Object.keys(t).forEach(function(r){(0|r)==r&&(r|=0);var n=t[r];e[n]=r}),e},n.der=r(583)},function(t,e,r){function n(t){this.enc=\"der\",this.name=t.name,this.entity=t,this.tree=new i,this.tree._init(t.body)}function i(t){u.Node.call(this,\"der\",t)}function o(t,e){var r=t.readUInt8(e);if(t.isError(r))return r;var n=c.tagClass[r>>6],i=0===(32&r);if(31===(31&r)){var o=r;for(r=0;128===(128&o);){if(o=t.readUInt8(e),t.isError(o))return o;r<<=7,r|=127&o}}else r&=31;var a=c.tag[r];return{cls:n,primitive:i,tag:r,tagStr:a}}function a(t,e,r){var n=t.readUInt8(r);if(t.isError(n))return n;if(!e&&128===n)return null;if(0===(128&n))return n;var i=127&n;if(i>=4)return t.error(\"length octect is too long\");n=0;for(var o=0;o=31?n.error(\"Multi-octet tag encoding unsupported\"):(e||(i|=32),i|=c.tagClassByName[r||\"universal\"]<<6)}var f=r(2),s=r(1).Buffer,u=r(106),h=u.base,c=u.constants.der;t.exports=n,n.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},f(i,h.Node),i.prototype._encodeComposite=function(t,e,r,n){var i=a(t,e,r,this.reporter);if(n.length<128){var o=new s(2);return o[0]=i,o[1]=n.length,this._createEncoderBuffer([o,n])}for(var f=1,u=n.length;u>=256;u>>=8)f++;var o=new s(2+f);o[0]=i,o[1]=128|f;for(var u=1+f,h=n.length;h>0;u--,h>>=8)o[u]=255&h;return this._createEncoderBuffer([o,n])},i.prototype._encodeStr=function(t,e){if(\"bitstr\"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if(\"bmpstr\"===e){for(var r=new s(2*t.length),n=0;n=40)return this.reporter.error(\"Second objid identifier OOB\");t.splice(0,2,40*t[0]+t[1])}for(var i=0,n=0;n=128;o>>=7)i++}for(var a=new s(i),f=a.length-1,n=t.length-1;n>=0;n--){var o=t[n];for(a[f--]=127&o;(o>>=7)>0;)a[f--]=128|127&o}return this._createEncoderBuffer(a)},i.prototype._encodeTime=function(t,e){var r,n=new Date(t);return\"gentime\"===e?r=[o(n.getFullYear()),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===e?r=[o(n.getFullYear()%100),o(n.getUTCMonth()+1),o(n.getUTCDate()),o(n.getUTCHours()),o(n.getUTCMinutes()),o(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+e+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},i.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},i.prototype._encodeInt=function(t,e){if(\"string\"==typeof t){if(!e)return this.reporter.error(\"String int or enum given, but no values map\");if(!e.hasOwnProperty(t))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(t));t=e[t]}if(\"number\"!=typeof t&&!s.isBuffer(t)){var r=t.toArray();!t.sign&&128&r[0]&&r.unshift(0),t=new s(r)}if(s.isBuffer(t)){var n=t.length;0===t.length&&n++;var i=new s(n);return t.copy(i),0===t.length&&(i[0]=0),this._createEncoderBuffer(i)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);for(var n=1,o=t;o>=256;o>>=8)n++;for(var i=new Array(n),o=i.length-1;o>=0;o--)i[o]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new s(i))},i.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},i.prototype._use=function(t,e){return\"function\"==typeof t&&(t=t(e)),t._getEncoder(\"der\").tree},i.prototype._skipDefault=function(t,e,r){var n,i=this._baseState;if(null===i.default)return!1;var o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n>f%8,t._prev=n(t._prev,r?o:a);return u}function n(e,r){var n=e.length,i=-1,o=new t(e.length);for(e=t.concat([e,new t([r])]);++i>7;return o}e.encrypt=function(e,n,i){for(var o=n.length,a=new t(o),f=-1;++f0)if(e.ended&&!i){var a=new Error(\"stream.push() after EOF\");t.emit(\"error\",a)}else if(e.endEmitted&&i){var s=new Error(\"stream.unshift() after end event\");t.emit(\"error\",s)}else{var u;!e.decoder||i||n||(r=e.decoder.write(r),u=!e.objectMode&&0===r.length),i||(e.reading=!1),u||(e.flowing&&0===e.length&&!e.sync?(t.emit(\"data\",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&d(t))),p(t,e)}else i||(e.reading=!1);return f(e)}function f(t){return!t.ended&&(t.needReadable||t.length=q?t=q:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function u(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=s(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function h(t,e){var r=null;return T.isBuffer(e)||\"string\"==typeof e||null===e||void 0===e||t.objectMode||(r=new TypeError(\"Invalid non-string/buffer chunk\")),r}function c(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,d(t)}}function d(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(L(\"emitReadable\",e.flowing),e.emittedReadable=!0,e.sync?B(l,t):l(t))}function l(t){L(\"emit readable\"),t.emit(\"readable\"),w(t)}function p(t,e){e.readingMore||(e.readingMore=!0,B(b,t,e))}function b(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length=e.length?(r=e.decoder?e.buffer.join(\"\"):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):r=M(t,e.buffer,e.decoder),r}function M(t,e,r){var n;return to.length?o.length:t;if(i+=a===o.length?o:o.slice(0,t),t-=a,0===t){a===o.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++n}return e.length-=n,i}function E(t,e){var r=j.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(o.copy(r,r.length-t,0,a),t-=a,0===t){a===o.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++i}return e.length-=i,r}function A(t){var e=t._readableState;if(e.length>0)throw new Error('\"endReadable()\" called on non-empty stream');e.endEmitted||(e.ended=!0,B(k,e,t))}function k(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"))}function x(t,e){for(var r=0,n=t.length;r=e.highWaterMark||e.ended))return L(\"read: emitReadable\",e.length,e.ended),0===e.length&&e.ended?A(this):d(this),null;if(t=u(t,e),0===t&&e.ended)return 0===e.length&&A(this),null;var n=e.needReadable;L(\"need readable\",n),(0===e.length||e.length-t0?_(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&A(this)),null!==i&&this.emit(\"data\",i),i},o.prototype._read=function(t){this.emit(\"error\",new Error(\"not implemented\"))},o.prototype.pipe=function(t,r){function i(t){L(\"onunpipe\"),t===d&&a()}function o(){L(\"onend\"),t.end()}function a(){L(\"cleanup\"),t.removeListener(\"close\",u),t.removeListener(\"finish\",h),t.removeListener(\"drain\",y),t.removeListener(\"error\",s),t.removeListener(\"unpipe\",i),d.removeListener(\"end\",o),d.removeListener(\"end\",a),d.removeListener(\"data\",f),m=!0,!l.awaitDrain||t._writableState&&!t._writableState.needDrain||y()}function f(e){L(\"ondata\"),g=!1;var r=t.write(e);!1!==r||g||((1===l.pipesCount&&l.pipes===t||l.pipesCount>1&&I(l.pipes,t)!==-1)&&!m&&(L(\"false write response, pause\",d._readableState.awaitDrain),d._readableState.awaitDrain++,g=!0),d.pause())}function s(e){L(\"onerror\",e),c(),t.removeListener(\"error\",s),0===P(t,\"error\")&&t.emit(\"error\",e)}function u(){t.removeListener(\"finish\",h),c()}function h(){L(\"onfinish\"),t.removeListener(\"close\",u),c()}function c(){L(\"unpipe\"),d.unpipe(t)}var d=this,l=this._readableState;switch(l.pipesCount){case 0:l.pipes=t;break;case 1:l.pipes=[l.pipes,t];break;default:l.pipes.push(t)}l.pipesCount+=1,L(\"pipe count=%d opts=%j\",l.pipesCount,r);var p=(!r||r.end!==!1)&&t!==e.stdout&&t!==e.stderr,b=p?o:a;l.endEmitted?B(b):d.once(\"end\",b),t.on(\"unpipe\",i);var y=v(d);t.on(\"drain\",y);var m=!1,g=!1;return d.on(\"data\",f),n(t,\"error\",s),t.once(\"close\",u),t.once(\"finish\",h),t.emit(\"pipe\",d),l.flowing||(L(\"pipe resume\"),d.resume()),t},o.prototype.unpipe=function(t){var e=this._readableState;if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this),this);if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i=this._size)return null;var e=255&this._buf[t++];if(null===e)return null;if(128==(128&e)){if(e&=127,0==e)throw f(\"Indefinite length not supported\");if(e>4)throw f(\"encoding too long\");if(this._size-tthis._size-i)return null;if(this._offset=i,0===this.length)return r?new e(0):\"\";var a=this._buf.slice(this._offset,this._offset+this.length);return this._offset+=this.length,r?a:a.toString(\"utf8\")},n.prototype.readOID=function(t){t||(t=o.OID);var e=this.readString(t,!0);if(null===e)return null;for(var r=[],n=0,i=0;i>0),r.join(\".\")},n.prototype._readTag=function(t){i.ok(void 0!==t);var e=this.peek();if(null===e)return null;if(e!==t)throw f(\"Expected 0x\"+t.toString(16)+\": got 0x\"+e.toString(16));var r=this.readLength(this._offset+1);if(null===r)return null;if(this.length>4)throw f(\"Integer too long: \"+this.length);if(this.length>this._size-r)return null;this._offset=r;for(var n=this._buf[this._offset],o=0,a=0;a>0},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e){o.ok(t),o.equal(typeof t,\"object\"),o.ok(e),o.equal(typeof e,\"object\");var r=Object.getOwnPropertyNames(t);return r.forEach(function(r){if(!e[r]){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n)}}),e}function i(t){t=n(s,t||{}),this._buf=new e(t.size||1024),this._size=this._buf.length,this._offset=0,this._options=t,this._seq=[]}var o=r(202),a=r(112),f=r(111),s=(f.newInvalidAsn1Error,{size:1024,growthFactor:8});Object.defineProperty(i.prototype,\"buffer\",{get:function(){if(this._seq.length)throw new InvalidAsn1Error(this._seq.length+\" unended sequence(s)\");return this._buf.slice(0,this._offset)}}),i.prototype.writeByte=function(t){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");this._ensure(1),this._buf[this._offset++]=t},i.prototype.writeInt=function(t,e){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");\"number\"!=typeof e&&(e=a.Integer);for(var r=4;(0===(4286578688&t)||(4286578688&t)===-8388608)&&r>1;)r--,t<<=8;if(r>4)throw new InvalidAsn1Error(\"BER ints cannot be > 0xffffffff\");for(this._ensure(2+r),this._buf[this._offset++]=e,this._buf[this._offset++]=r;r-- >0;)this._buf[this._offset++]=(4278190080&t)>>>24,t<<=8},i.prototype.writeNull=function(){this.writeByte(a.Null),this.writeByte(0)},i.prototype.writeEnumeration=function(t,e){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");return\"number\"!=typeof e&&(e=a.Enumeration),this.writeInt(t,e)},i.prototype.writeBoolean=function(t,e){if(\"boolean\"!=typeof t)throw new TypeError(\"argument must be a Boolean\");\"number\"!=typeof e&&(e=a.Boolean),this._ensure(3),this._buf[this._offset++]=e,this._buf[this._offset++]=1,this._buf[this._offset++]=t?255:0},i.prototype.writeString=function(t,r){if(\"string\"!=typeof t)throw new TypeError(\"argument must be a string (was: \"+typeof t+\")\");\"number\"!=typeof r&&(r=a.OctetString);var n=e.byteLength(t);this.writeByte(r),this.writeLength(n),n&&(this._ensure(n),this._buf.write(t,this._offset),this._offset+=n)},i.prototype.writeBuffer=function(t,r){if(\"number\"!=typeof r)throw new TypeError(\"tag must be a number\");if(!e.isBuffer(t))throw new TypeError(\"argument must be a buffer\");this.writeByte(r),this.writeLength(t.length),this._ensure(t.length),t.copy(this._buf,this._offset,0,t.length),this._offset+=t.length},i.prototype.writeStringArray=function(t){if(!t instanceof Array)throw new TypeError(\"argument must be an Array[String]\");var e=this;t.forEach(function(t){e.writeString(t)})},i.prototype.writeOID=function(t,e){function r(t,e){e<128?t.push(e):e<16384?(t.push(e>>>7|128),t.push(127&e)):e<2097152?(t.push(e>>>14|128),t.push(255&(e>>>7|128)),t.push(127&e)):e<268435456?(t.push(e>>>21|128),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e)):(t.push(255&(e>>>28|128)),t.push(255&(e>>>21|128)),t.push(255&(e>>>14|128)),t.push(255&(e>>>7|128)),t.push(127&e))}if(\"string\"!=typeof t)throw new TypeError(\"argument must be a string\");if(\"number\"!=typeof e&&(e=a.OID),!/^([0-9]+\\.){3,}[0-9]+$/.test(t))throw new Error(\"argument is not a valid OID string\");var n=t.split(\".\"),i=[];i.push(40*parseInt(n[0],10)+parseInt(n[1],10)),n.slice(2).forEach(function(t){r(i,parseInt(t,10))});var o=this;this._ensure(2+i.length),this.writeByte(e),this.writeLength(i.length),i.forEach(function(t){o.writeByte(t)})},i.prototype.writeLength=function(t){if(\"number\"!=typeof t)throw new TypeError(\"argument must be a Number\");if(this._ensure(4),t<=127)this._buf[this._offset++]=t;else if(t<=255)this._buf[this._offset++]=129,this._buf[this._offset++]=t;else if(t<=65535)this._buf[this._offset++]=130,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t;else{if(!(t<=16777215))throw new InvalidAsn1ERror(\"Length too long (> 4 bytes)\");this._buf[this._offset++]=131,this._buf[this._offset++]=t>>16,this._buf[this._offset++]=t>>8,this._buf[this._offset++]=t}},i.prototype.startSequence=function(t){\"number\"!=typeof t&&(t=a.Sequence|a.Constructor),this.writeByte(t),this._seq.push(this._offset),this._ensure(3),this._offset+=3},i.prototype.endSequence=function(){var t=this._seq.pop(),e=t+3,r=this._offset-e;if(r<=127)this._shift(e,r,-2),this._buf[t]=r;else if(r<=255)this._shift(e,r,-1),this._buf[t]=129,this._buf[t+1]=r;else if(r<=65535)this._buf[t]=130,this._buf[t+1]=r>>8,this._buf[t+2]=r;else{if(!(r<=16777215))throw new InvalidAsn1Error(\"Sequence too long\");this._shift(e,r,1),this._buf[t]=131,this._buf[t+1]=r>>16,this._buf[t+2]=r>>8,this._buf[t+3]=r}},i.prototype._shift=function(t,e,r){o.ok(void 0!==t),o.ok(void 0!==e),o.ok(r),this._buf.copy(this._buf,t+r,t,t+e),this._offset+=r},i.prototype._ensure=function(t){if(o.ok(t),this._size-this._offset>>8*n-r,e.concat([l,u,new e([188])])}},{key:\"verify\",value:function(t,r,n){var i=Math.ceil(n/8),s=o.createHash(this.hashAlgorithm).update(t).digest();if(i>>8*i-n;if(h[0]&~d)return!1;var l=new a({hashAlgorithm:this.hashAlgorithm}),p=l.generate(c,i-this.hashLength-1),b=f(h,p);b[0]&=d;for(var v=i-this.hashLength-this.saltLength-2,y=0;y512||t.length<128)throw new Error(\"Modulus must be between 128 bytes (1017 bits) and 512 bytes (4096 bits), was: \"+t.length+\" bytes\");this.modulus=t}},{key:\"setSignature\",value:function(t){if(!e.isBuffer(t))throw new TypeError(\"Signature must be a buffer, was: \"+t);this.signature=t}},{key:\"sign\",value:function(t,e){this.modulus||this.setPublicModulus(s.modulusFromPrivateKey(e)),this.signature=l.sign(e,t)}},{key:\"writeHashPayload\",value:function(t){this.writeCommonHeader(t)}},{key:\"parsePayload\",value:function(t){this.setPublicModulus(t.readVarOctetString()),this.setSignature(t.readVarOctetString())}},{key:\"writePayload\",value:function(t){if(!this.signature)throw new c(\"Requires a signature\");this.writeCommonHeader(t),t.writeVarOctetString(this.signature)}},{key:\"calculateMaxFulfillmentLength\",value:function(){var t=new h;if(!this.modulus)throw new c(\"Requires a public modulus\");return this.writeCommonHeader(t),t.writeVarOctetString(this.modulus),t.getSize()}},{key:\"validate\",value:function(t){if(!e.isBuffer(t))throw new Error(\"Message must be provided as a Buffer, was: \"+t);var r=l.verify(this.modulus,t,this.signature);if(!r)throw new d(\"Invalid RSA signature\");return!0}}]),r}(u);p.TYPE_ID=3,p.FEATURE_BITMASK=17,t.exports=p}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var r=0;r=0;--n){var i=this.tryEntries[n],o=i.completion;if(\"root\"===i.tryLoc)return e(\"end\");if(i.tryLoc<=this.prev){var a=m.call(i,\"catchLoc\"),f=m.call(i,\"finallyLoc\");if(a&&f){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&m.call(n,\"finallyLoc\")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),l(r),I}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if(\"throw\"===n.type){var i=n.arg;l(r)}return i}}throw new Error(\"illegal catch attempt\")},delegateYield:function(t,e,r){return this.delegate={iterator:b(t),resultName:e,nextLoc:r},I}}}(\"object\"==typeof e?e:\"object\"==typeof window?window:\"object\"==typeof self?self:this)}).call(e,r(39),r(26))},function(t,e,r){r(290),t.exports=r(32).RegExp.escape},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(77);t.exports=function(t){if(!n(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,r){var n=r(270);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(77),i=r(165).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(165),i=r(163),o=r(272),a=r(275),f=\"prototype\",s=function(t,e,r){var u,h,c,d=t&s.F,l=t&s.G,p=t&s.S,b=t&s.P,v=t&s.B,y=t&s.W,m=l?i:i[e]||(i[e]={}),g=m[f],w=l?n:p?n[e]:(n[e]||{})[f];l&&(r=e);for(u in r)h=!d&&w&&void 0!==w[u],h&&u in m||(c=h?w[u]:r[u],m[u]=l&&\"function\"!=typeof w[u]?r[u]:v&&h?o(c,n):y&&w[u]==c?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e[f]=t[f],e}(c):b&&\"function\"==typeof c?o(Function.call,c):c,b&&((m.virtual||(m.virtual={}))[u]=c,t&s.R&&g&&!g[u]&&a(g,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e,r){var n=r(278),i=r(279);t.exports=r(117)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(117)&&!r(164)(function(){return 7!=Object.defineProperty(r(273)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(77),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(271),i=r(276),o=r(280),a=Object.defineProperty;e.f=r(117)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(77);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){var n=r(274);n(n.S,\"Number\",{isInteger:r(277)})},function(t,e,r){var n=r(6),i=r(126),o=r(7)(\"species\");t.exports=function(t){var e;return i(t)&&(e=t.constructor,\"function\"!=typeof e||e!==Array&&!i(e.prototype)||(e=void 0),n(e)&&(e=e[o],null===e&&(e=void 0))),void 0===e?Array:e}},function(t,e,r){var n=r(282);t.exports=function(t,e){return new(n(t))(e)}},function(t,e,r){\"use strict\";var n=r(3),i=r(29),o=\"number\";t.exports=function(t){if(\"string\"!==t&&t!==o&&\"default\"!==t)throw TypeError(\"Incorrect hint\");return i(n(this),t!=o)}},function(t,e,r){var n=r(44),i=r(86),o=r(66);t.exports=function(t){var e=n(t),r=i.f;if(r)for(var a,f=r(t),s=o.f,u=0;f.length>u;)s.call(t,a=f[u++])&&e.push(a);return e}},function(t,e,r){var n=r(44),i=r(17);t.exports=function(t,e){for(var r,o=i(t),a=n(o),f=a.length,s=0;f>s;)if(o[r=a[s++]]===e)return r}},function(t,e,r){\"use strict\";var n=r(288),i=r(82),o=r(13);t.exports=function(){for(var t=o(this),e=arguments.length,r=Array(e),a=0,f=n._,s=!1;e>a;)(r[a]=arguments[a++])===f&&(s=!0);return function(){var n,o=this,a=arguments.length,u=0,h=0;if(!s&&!a)return i(t,r,o);if(n=r.slice(),s)for(;e>u;u++)n[u]===f&&(n[u]=arguments[h++]);for(;a>h;)n.push(arguments[h++]);return i(t,n,o)}}},function(t,e,r){t.exports=r(4)},function(t,e){t.exports=function(t,e){var r=e===Object(e)?function(t){return e[t]}:e;return function(e){return String(e).replace(t,r)}}},function(t,e,r){var n=r(0),i=r(289)(/[\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\");n(n.S,\"RegExp\",{escape:function(t){return i(t)}})},function(t,e,r){var n=r(0);n(n.P,\"Array\",{copyWithin:r(167)}),r(54)(\"copyWithin\")},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(4);n(n.P+n.F*!r(25)([].every,!0),\"Array\",{every:function(t){return i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.P,\"Array\",{fill:r(118)}),r(54)(\"fill\")},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(2);n(n.P+n.F*!r(25)([].filter,!0),\"Array\",{filter:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(6),o=\"findIndex\",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,\"Array\",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(5),o=\"find\",a=!0;o in[]&&Array(1)[o](function(){a=!1}),n(n.P+n.F*a,\"Array\",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(o)},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(0),o=r(25)([].forEach,!0);n(n.P+n.F*!o,\"Array\",{forEach:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(33),i=r(0),o=r(11),a=r(176),f=r(125),s=r(10),u=r(119),h=r(142);i(i.S+i.F*!r(84)(function(t){Array.from(t)}),\"Array\",{from:function(t){var e,r,i,c,d=o(t),l=\"function\"==typeof this?this:Array,p=arguments.length,b=p>1?arguments[1]:void 0,v=void 0!==b,y=0,m=h(d);if(v&&(b=n(b,p>2?arguments[2]:void 0,2)),void 0==m||l==Array&&f(m))for(e=s(d.length),r=new l(e);e>y;y++)u(r,y,v?b(d[y],y):d[y]);else for(c=m.call(d),r=new l;!(i=c.next()).done;y++)u(r,y,v?a(c,b,[i.value,y],!0):i.value);return r.length=y,r}})},function(t,e,r){\"use strict\";var n=r(0),i=r(78)(!1),o=[].indexOf,a=!!o&&1/[1].indexOf(1,-0)<0;n(n.P+n.F*(a||!r(25)(o)),\"Array\",{indexOf:function(t){return a?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},function(t,e,r){var n=r(0);n(n.S,\"Array\",{isArray:r(126)})},function(t,e,r){\"use strict\";var n=r(0),i=r(17),o=[].join;n(n.P+n.F*(r(65)!=Object||!r(25)(o)),\"Array\",{join:function(t){return o.call(i(this),void 0===t?\",\":t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(17),o=r(38),a=r(10),f=[].lastIndexOf,s=!!f&&1/[1].lastIndexOf(1,-0)<0;n(n.P+n.F*(s||!r(25)(f)),\"Array\",{lastIndexOf:function(t){if(s)return f.apply(this,arguments)||0;var e=i(this),r=a(e.length),n=r-1;for(arguments.length>1&&(n=Math.min(n,o(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in e&&e[n]===t)return n||0;return-1}})},function(t,e,r){\"use strict\";var n=r(0),i=r(27)(1);n(n.P+n.F*!r(25)([].map,!0),\"Array\",{map:function(t){return i(this,t,arguments[1])}})},function(t,e,r){\"use strict\";var n=r(0),i=r(119);n(n.S+n.F*r(5)(function(){function t(){}return!(Array.of.call(t)instanceof t)}),\"Array\",{of:function(){for(var t=0,e=arguments.length,r=new(\"function\"==typeof this?this:Array)(e);e>t;)i(r,t,arguments[t++]);return r.length=e,r}})},function(t,e,r){\"use strict\";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduceRight,!0),\"Array\",{reduceRight:function(t){return i(this,t,arguments.length,arguments[1],!0)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(169);n(n.P+n.F*!r(25)([].reduce,!0),\"Array\",{reduce:function(t){return i(this,t,arguments.length,arguments[1],!1)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(123),o=r(23),a=r(47),f=r(10),s=[].slice;n(n.P+n.F*r(5)(function(){i&&s.call(i)}),\"Array\",{slice:function(t,e){var r=f(this.length),n=o(this);if(e=void 0===e?r:e,\"Array\"==n)return s.call(this,t,e);for(var i=a(t,r),u=a(e,r),h=f(u-i),c=Array(h),d=0;d9?t:\"0\"+t};n(n.P+n.F*(i(function(){return\"0385-07-25T07:06:39.999Z\"!=new Date(-5e13-1).toISOString()})||!i(function(){new Date(NaN).toISOString()})),\"Date\",{toISOString:function(){if(!isFinite(o.call(this)))throw RangeError(\"Invalid time value\");var t=this,e=t.getUTCFullYear(),r=t.getUTCMilliseconds(),n=e<0?\"-\":e>9999?\"+\":\"\";return n+(\"00000\"+Math.abs(e)).slice(n?-6:-4)+\"-\"+a(t.getUTCMonth()+1)+\"-\"+a(t.getUTCDate())+\"T\"+a(t.getUTCHours())+\":\"+a(t.getUTCMinutes())+\":\"+a(t.getUTCSeconds())+\".\"+(r>99?r:\"0\"+a(r))+\"Z\"}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29);n(n.P+n.F*r(5)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),\"Date\",{toJSON:function(t){var e=i(this),r=o(e);return\"number\"!=typeof r||isFinite(r)?e.toISOString():null}})},function(t,e,r){var n=r(7)(\"toPrimitive\"),i=Date.prototype;n in i||r(14)(i,n,r(284))},function(t,e,r){var n=Date.prototype,i=\"Invalid Date\",o=\"toString\",a=n[o],f=n.getTime;new Date(NaN)+\"\"!=i&&r(15)(n,o,function(){var t=f.call(this);return t===t?a.call(this):i})},function(t,e,r){var n=r(0);n(n.P,\"Function\",{bind:r(170)})},function(t,e,r){\"use strict\";var n=r(6),i=r(21),o=r(7)(\"hasInstance\"),a=Function.prototype;o in a||r(9).f(a,o,{value:function(t){if(\"function\"!=typeof this||!n(t))return!1;if(!n(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,r){var n=r(9).f,i=r(37),o=r(12),a=Function.prototype,f=/^\\s*function ([^ (]*)/,s=\"name\",u=Object.isExtensible||function(){return!0};s in a||r(8)&&n(a,s,{configurable:!0,get:function(){try{var t=this,e=(\"\"+t).match(f)[1];return o(t,s)||!u(t)||n(t,s,i(5,e)),e}catch(t){return\"\"}}})},function(t,e,r){var n=r(0),i=r(178),o=Math.sqrt,a=Math.acosh;n(n.S+n.F*!(a&&710==Math.floor(a(Number.MAX_VALUE))&&a(1/0)==1/0),\"Math\",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,r){function n(t){return isFinite(t=+t)&&0!=t?t<0?-n(-t):Math.log(t+Math.sqrt(t*t+1)):t}var i=r(0),o=Math.asinh;i(i.S+i.F*!(o&&1/o(0)>0),\"Math\",{asinh:n})},function(t,e,r){var n=r(0),i=Math.atanh;n(n.S+n.F*!(i&&1/i(-0)<0),\"Math\",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,r){var n=r(0),i=r(130);n(n.S,\"Math\",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,r){var n=r(0),i=Math.exp;n(n.S,\"Math\",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,r){var n=r(0),i=r(129);n(n.S+n.F*(i!=Math.expm1),\"Math\",{expm1:i})},function(t,e,r){var n=r(0),i=r(130),o=Math.pow,a=o(2,-52),f=o(2,-23),s=o(2,127)*(2-f),u=o(2,-126),h=function(t){return t+1/a-1/a};n(n.S,\"Math\",{fround:function(t){var e,r,n=Math.abs(t),o=i(t);return ns||r!=r?o*(1/0):o*r)}})},function(t,e,r){var n=r(0),i=Math.abs;n(n.S,\"Math\",{hypot:function(t,e){for(var r,n,o=0,a=0,f=arguments.length,s=0;a0?(n=r/s,o+=n*n):o+=r;return s===1/0?1/0:s*Math.sqrt(o)}})},function(t,e,r){var n=r(0),i=Math.imul;n(n.S+n.F*r(5)(function(){return i(4294967295,5)!=-5||2!=i.length}),\"Math\",{imul:function(t,e){var r=65535,n=+t,i=+e,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log10:function(t){return Math.log(t)/Math.LN10}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log1p:r(178)})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{sign:r(130)})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S+n.F*r(5)(function(){return!Math.sinh(-2e-17)!=-2e-17}),\"Math\",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,r){var n=r(0),i=r(129),o=Math.exp;n(n.S,\"Math\",{tanh:function(t){var e=i(t=+t),r=i(-t);return e==1/0?1:r==1/0?-1:(e-r)/(o(t)+o(-t))}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,r){\"use strict\";var n=r(4),i=r(12),o=r(23),a=r(124),f=r(29),s=r(5),u=r(43).f,h=r(20).f,c=r(9).f,d=r(58).trim,l=\"Number\",p=n[l],b=p,v=p.prototype,y=o(r(42)(v))==l,m=\"trim\"in String.prototype,g=function(t){var e=f(t,!1);if(\"string\"==typeof e&&e.length>2){e=m?e.trim():d(e,3);var r,n,i,o=e.charCodeAt(0);if(43===o||45===o){if(r=e.charCodeAt(2),88===r||120===r)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+e}for(var a,s=e.slice(2),u=0,h=s.length;ui)return NaN;return parseInt(s,n)}}return+e};if(!p(\" 0o1\")||!p(\"0b1\")||p(\"+0x1\")){p=function(t){var e=arguments.length<1?0:t,r=this;return r instanceof p&&(y?s(function(){v.valueOf.call(r)}):o(r)!=l)?a(new b(g(e)),r,p):g(e)};for(var w,_=r(8)?u(b):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger\".split(\",\"),M=0;_.length>M;M++)i(b,w=_[M])&&!i(p,w)&&c(p,w,h(b,w));p.prototype=v,v.constructor=p,r(15)(n,l,p)}},function(t,e,r){var n=r(0);n(n.S,\"Number\",{EPSILON:Math.pow(2,-52)})},function(t,e,r){var n=r(0),i=r(4).isFinite;n(n.S,\"Number\",{isFinite:function(t){return\"number\"==typeof t&&i(t)}})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{isInteger:r(175)})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{isNaN:function(t){return t!=t}})},function(t,e,r){var n=r(0),i=r(175),o=Math.abs;n(n.S,\"Number\",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){var n=r(0);n(n.S,\"Number\",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,r){var n=r(0),i=r(185);n(n.S+n.F*(Number.parseFloat!=i),\"Number\",{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.S+n.F*(Number.parseInt!=i),\"Number\",{parseInt:i})},function(t,e,r){\"use strict\";var n=r(0),i=r(38),o=r(166),a=r(137),f=1..toFixed,s=Math.floor,u=[0,0,0,0,0,0],h=\"Number.toFixed: incorrect invocation!\",c=\"0\",d=function(t,e){for(var r=-1,n=e;++r<6;)n+=t*u[r],u[r]=n%1e7,n=s(n/1e7)},l=function(t){for(var e=6,r=0;--e>=0;)r+=u[e],u[e]=s(r/t),r=r%t*1e7},p=function(){for(var t=6,e=\"\";--t>=0;)if(\"\"!==e||0===t||0!==u[t]){var r=String(u[t]);e=\"\"===e?r:e+a.call(c,7-r.length)+r}return e},b=function(t,e,r){return 0===e?r:e%2===1?b(t,e-1,r*t):b(t*t,e/2,r)},v=function(t){for(var e=0,r=t;r>=4096;)e+=12,r/=4096;for(;r>=2;)e+=1,r/=2;return e};n(n.P+n.F*(!!f&&(\"0.000\"!==8e-5.toFixed(3)||\"1\"!==.9.toFixed(0)||\"1.25\"!==1.255.toFixed(2)||\"1000000000000000128\"!==(0xde0b6b3a7640080).toFixed(0))||!r(5)(function(){f.call({})})),\"Number\",{toFixed:function(t){var e,r,n,f,s=o(this,h),u=i(t),y=\"\",m=c;if(u<0||u>20)throw RangeError(h);if(s!=s)return\"NaN\";if(s<=-1e21||s>=1e21)return String(s);if(s<0&&(y=\"-\",s=-s),s>1e-21)if(e=v(s*b(2,69,1))-69,r=e<0?s*b(2,-e,1):s/b(2,e,1),r*=4503599627370496,e=52-e,e>0){for(d(0,r),n=u;n>=7;)d(1e7,0),n-=7;for(d(b(10,n,1),0),n=e-1;n>=23;)l(1<<23),n-=23;l(1<0?(f=m.length,m=y+(f<=u?\"0.\"+a.call(c,u-f)+m:m.slice(0,f-u)+\".\"+m.slice(f-u))):m=y+m,m}})},function(t,e,r){\"use strict\";var n=r(0),i=r(5),o=r(166),a=1..toPrecision;n(n.P+n.F*(i(function(){return\"1\"!==a.call(1,void 0)})||!i(function(){a.call({})})),\"Number\",{toPrecision:function(t){var e=o(this,\"Number#toPrecision: incorrect invocation!\");return void 0===t?a.call(e):a.call(e,t)}})},function(t,e,r){var n=r(0);n(n.S+n.F,\"Object\",{assign:r(179)})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{create:r(42)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),\"Object\",{defineProperties:r(180)})},function(t,e,r){var n=r(0);n(n.S+n.F*!r(8),\"Object\",{defineProperty:r(9).f})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"freeze\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(17),i=r(20).f;r(28)(\"getOwnPropertyDescriptor\",function(){return function(t,e){return i(n(t),e)}})},function(t,e,r){r(28)(\"getOwnPropertyNames\",function(){return r(181).f})},function(t,e,r){var n=r(11),i=r(21);r(28)(\"getPrototypeOf\",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6);r(28)(\"isExtensible\",function(t){return function(e){return!!n(e)&&(!t||t(e))}})},function(t,e,r){var n=r(6);r(28)(\"isFrozen\",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(6);r(28)(\"isSealed\",function(t){return function(e){return!n(e)||!!t&&t(e)}})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{is:r(187)})},function(t,e,r){var n=r(11),i=r(44);r(28)(\"keys\",function(){return function(t){return i(n(t))}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"preventExtensions\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(6),i=r(36).onFreeze;r(28)(\"seal\",function(t){return function(e){return t&&n(e)?t(i(e)):e}})},function(t,e,r){var n=r(0);n(n.S,\"Object\",{setPrototypeOf:r(132).set})},function(t,e,r){\"use strict\";var n=r(64),i={};i[r(7)(\"toStringTag\")]=\"z\",i+\"\"!=\"[object z]\"&&r(15)(Object.prototype,\"toString\",function(){return\"[object \"+n(this)+\"]\"},!0)},function(t,e,r){var n=r(0),i=r(185);n(n.G+n.F*(parseFloat!=i),{parseFloat:i})},function(t,e,r){var n=r(0),i=r(186);n(n.G+n.F*(parseInt!=i),{parseInt:i})},function(t,e,r){\"use strict\";var n,i,o,a=r(41),f=r(4),s=r(33),u=r(64),h=r(0),c=r(6),d=r(13),l=r(40),p=r(55),b=r(134),v=r(139).set,y=r(131)(),m=\"Promise\",g=f.TypeError,w=f.process,_=f[m],w=f.process,M=\"process\"==u(w),S=function(){},E=!!function(){try{var t=_.resolve(1),e=(t.constructor={})[r(7)(\"species\")]=function(t){t(S,S)};return(M||\"function\"==typeof PromiseRejectionEvent)&&t.then(S)instanceof e}catch(t){}}(),A=function(t,e){return t===e||t===_&&e===o},k=function(t){var e;return!(!c(t)||\"function\"!=typeof(e=t.then))&&e},x=function(t){return A(_,t)?new I(t):new i(t)},I=i=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw g(\"Bad Promise constructor\");e=t,r=n}),this.resolve=d(e),this.reject=d(r)},B=function(t){try{t()}catch(t){return{error:t}}},O=function(t,e){if(!t._n){t._n=!0;var r=t._c;y(function(){for(var n=t._v,i=1==t._s,o=0,a=function(e){var r,o,a=i?e.ok:e.fail,f=e.resolve,s=e.reject,u=e.domain;try{a?(i||(2==t._h&&T(t),t._h=1),a===!0?r=n:(u&&u.enter(),r=a(n),u&&u.exit()),r===e.promise?s(g(\"Promise-chain cycle\")):(o=k(r))?o.call(r,f,s):f(r)):s(n)}catch(t){s(t)}};r.length>o;)a(r[o++]);t._c=[],t._n=!1,e&&!t._h&&R(t)})}},R=function(t){v.call(f,function(){var e,r,n,i=t._v;if(P(t)&&(e=B(function(){M?w.emit(\"unhandledRejection\",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(n=f.console)&&n.error&&n.error(\"Unhandled promise rejection\",i)}),t._h=M||P(t)?2:1),t._a=void 0,e)throw e.error})},P=function(t){if(1==t._h)return!1;for(var e,r=t._a||t._c,n=0;r.length>n;)if(e=r[n++],e.fail||!P(e.promise))return!1;return!0},T=function(t){v.call(f,function(){var e;M?w.emit(\"rejectionHandled\",t):(e=f.onrejectionhandled)&&e({promise:t,reason:t._v})})},j=function(t){var e=this;e._d||(e._d=!0,e=e._w||e,e._v=t,e._s=2,e._a||(e._a=e._c.slice()),O(e,!0))},C=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw g(\"Promise can't be resolved itself\");(e=k(t))?y(function(){var n={_w:r,_d:!1};try{e.call(t,s(C,n,1),s(j,n,1))}catch(t){j.call(n,t)}}):(r._v=t,r._s=1,O(r,!1))}catch(t){j.call({_w:r,_d:!1},t)}}};E||(_=function(t){l(this,_,m,\"_h\"),d(t),n.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},n=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},n.prototype=r(45)(_.prototype,{then:function(t,e){var r=x(b(this,_));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof e&&e,r.domain=M?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&O(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),I=function(){var t=new n;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)}),h(h.G+h.W+h.F*!E,{Promise:_}),r(57)(_,m),r(46)(m),o=r(32)[m],h(h.S+h.F*!E,m,{reject:function(t){var e=x(this),r=e.reject;return r(t),e.promise}}),h(h.S+h.F*(a||!E),m,{resolve:function(t){if(t instanceof _&&A(t.constructor,this))return t;var e=x(this),r=e.resolve;return r(t),e.promise}}),h(h.S+h.F*!(E&&r(84)(function(t){_.all(t).catch(S)})),m,{all:function(t){var e=this,r=x(e),n=r.resolve,i=r.reject,o=B(function(){var r=[],o=0,a=1;p(t,!1,function(t){var f=o++,s=!1;r.push(void 0),a++,e.resolve(t).then(function(t){s||(s=!0,r[f]=t,--a||n(r))},i)}),--a||n(r)});return o&&i(o.error),r.promise},race:function(t){var e=this,r=x(e),n=r.reject,i=B(function(){p(t,!1,function(t){e.resolve(t).then(r.resolve,n)})});return i&&n(i.error),r.promise}})},function(t,e,r){var n=r(0),i=r(13),o=r(3),a=(r(4).Reflect||{}).apply,f=Function.apply;n(n.S+n.F*!r(5)(function(){a(function(){})}),\"Reflect\",{apply:function(t,e,r){var n=i(t),s=o(r);return a?a(n,e,s):f.call(n,e,s)}})},function(t,e,r){var n=r(0),i=r(42),o=r(13),a=r(3),f=r(6),s=r(5),u=r(170),h=(r(4).Reflect||{}).construct,c=s(function(){function t(){}return!(h(function(){},[],t)instanceof t)}),d=!s(function(){h(function(){})});n(n.S+n.F*(c||d),\"Reflect\",{construct:function(t,e){o(t),a(e);var r=arguments.length<3?t:o(arguments[2]);if(d&&!c)return h(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(u.apply(t,n))}var s=r.prototype,l=i(f(s)?s:Object.prototype),p=Function.apply.call(t,l,e);return f(p)?p:l}})},function(t,e,r){var n=r(9),i=r(0),o=r(3),a=r(29);i(i.S+i.F*r(5)(function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})}),\"Reflect\",{defineProperty:function(t,e,r){o(t),e=a(e,!0),o(r);try{return n.f(t,e,r),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(20).f,o=r(3);n(n.S,\"Reflect\",{deleteProperty:function(t,e){var r=i(o(t),e);return!(r&&!r.configurable)&&delete t[e]}})},function(t,e,r){\"use strict\";var n=r(0),i=r(3),o=function(t){this._t=i(t),this._i=0;var e,r=this._k=[];for(e in t)r.push(e)};r(127)(o,\"Object\",function(){var t,e=this,r=e._k;do if(e._i>=r.length)return{value:void 0,done:!0};while(!((t=r[e._i++])in e._t));return{value:t,done:!1}}),n(n.S,\"Reflect\",{enumerate:function(t){return new o(t)}})},function(t,e,r){var n=r(20),i=r(0),o=r(3);i(i.S,\"Reflect\",{getOwnPropertyDescriptor:function(t,e){return n.f(o(t),e)}})},function(t,e,r){var n=r(0),i=r(21),o=r(3);n(n.S,\"Reflect\",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,r){function n(t,e){var r,f,h=arguments.length<3?t:arguments[2];return u(t)===h?t[e]:(r=i.f(t,e))?a(r,\"value\")?r.value:void 0!==r.get?r.get.call(h):void 0:s(f=o(t))?n(f,e,h):void 0}var i=r(20),o=r(21),a=r(12),f=r(0),s=r(6),u=r(3);f(f.S,\"Reflect\",{get:n})},function(t,e,r){var n=r(0);n(n.S,\"Reflect\",{has:function(t,e){return e in t}})},function(t,e,r){var n=r(0),i=r(3),o=Object.isExtensible;n(n.S,\"Reflect\",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,r){var n=r(0);n(n.S,\"Reflect\",{ownKeys:r(184)})},function(t,e,r){var n=r(0),i=r(3),o=Object.preventExtensions;n(n.S,\"Reflect\",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,r){var n=r(0),i=r(132);i&&n(n.S,\"Reflect\",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,r){function n(t,e,r){var s,d,l=arguments.length<4?t:arguments[3],p=o.f(h(t),e);if(!p){if(c(d=a(t)))return n(d,e,r,l);p=u(0)}return f(p,\"value\")?!(p.writable===!1||!c(l))&&(s=o.f(l,e)||u(0),s.value=r,i.f(l,e,s),!0):void 0!==p.set&&(p.set.call(l,r),!0)}var i=r(9),o=r(20),a=r(21),f=r(12),s=r(0),u=r(37),h=r(3),c=r(6);s(s.S,\"Reflect\",{set:n})},function(t,e,r){var n=r(4),i=r(124),o=r(9).f,a=r(43).f,f=r(83),s=r(81),u=n.RegExp,h=u,c=u.prototype,d=/a/g,l=/a/g,p=new u(d)!==d;if(r(8)&&(!p||r(5)(function(){return l[r(7)(\"match\")]=!1,u(d)!=d||u(l)==l||\"/a/i\"!=u(d,\"i\")}))){u=function(t,e){var r=this instanceof u,n=f(t),o=void 0===e;return!r&&n&&t.constructor===u&&o?t:i(p?new h(n&&!o?t.source:t,e):h((n=t instanceof u)?t.source:t,n&&o?s.call(t):e),r?this:c,u)};for(var b=(function(t){t in u||o(u,t,{configurable:!0,get:function(){return h[t]},set:function(e){h[t]=e}})}),v=a(h),y=0;v.length>y;)b(v[y++]);c.constructor=u,u.prototype=c,r(15)(n,\"RegExp\",u)}r(46)(\"RegExp\")},function(t,e,r){r(80)(\"match\",1,function(t,e,r){return[function(r){\"use strict\";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){\nr(80)(\"replace\",2,function(t,e,r){return[function(n,i){\"use strict\";var o=t(this),a=void 0==n?void 0:n[e];return void 0!==a?a.call(n,o,i):r.call(String(o),n,i)},r]})},function(t,e,r){r(80)(\"search\",1,function(t,e,r){return[function(r){\"use strict\";var n=t(this),i=void 0==r?void 0:r[e];return void 0!==i?i.call(r,n):new RegExp(r)[e](String(n))},r]})},function(t,e,r){r(80)(\"split\",2,function(t,e,n){\"use strict\";var i=r(83),o=n,a=[].push,f=\"split\",s=\"length\",u=\"lastIndex\";if(\"c\"==\"abbc\"[f](/(b)*/)[1]||4!=\"test\"[f](/(?:)/,-1)[s]||2!=\"ab\"[f](/(?:ab)*/)[s]||4!=\".\"[f](/(.?)(.?)/)[s]||\".\"[f](/()()/)[s]>1||\"\"[f](/.?/)[s]){var h=void 0===/()??/.exec(\"\")[1];n=function(t,e){var r=String(this);if(void 0===t&&0===e)return[];if(!i(t))return o.call(r,t,e);var n,f,c,d,l,p=[],b=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),v=0,y=void 0===e?4294967295:e>>>0,m=new RegExp(t.source,b+\"g\");for(h||(n=new RegExp(\"^\"+m.source+\"$(?!\\\\s)\",b));(f=m.exec(r))&&(c=f.index+f[0][s],!(c>v&&(p.push(r.slice(v,f.index)),!h&&f[s]>1&&f[0].replace(n,function(){for(l=1;l1&&f.index=y)));)m[u]===f.index&&m[u]++;return v===r[s]?!d&&m.test(\"\")||p.push(\"\"):p.push(r.slice(v)),p[s]>y?p.slice(0,y):p}}else\"0\"[f](void 0,0)[s]&&(n=function(t,e){return void 0===t&&0===e?[]:o.call(this,t,e)});return[function(r,i){var o=t(this),a=void 0==r?void 0:r[e];return void 0!==a?a.call(r,o,i):n.call(String(o),r,i)},n]})},function(t,e,r){\"use strict\";r(191);var n=r(3),i=r(81),o=r(8),a=\"toString\",f=/./[a],s=function(t){r(15)(RegExp.prototype,a,t,!0)};r(5)(function(){return\"/a/b\"!=f.call({source:\"a\",flags:\"b\"})})?s(function(){var t=n(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):f.name!=a&&s(function(){return f.call(this)})},function(t,e,r){\"use strict\";r(16)(\"anchor\",function(t){return function(e){return t(this,\"a\",\"name\",e)}})},function(t,e,r){\"use strict\";r(16)(\"big\",function(t){return function(){return t(this,\"big\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"blink\",function(t){return function(){return t(this,\"blink\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"bold\",function(t){return function(){return t(this,\"b\",\"\",\"\")}})},function(t,e,r){\"use strict\";var n=r(0),i=r(135)(!1);n(n.P,\"String\",{codePointAt:function(t){return i(this,t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(10),o=r(136),a=\"endsWith\",f=\"\"[a];n(n.P+n.F*r(122)(a),\"String\",{endsWith:function(t){var e=o(this,t,a),r=arguments.length>1?arguments[1]:void 0,n=i(e.length),s=void 0===r?n:Math.min(i(r),n),u=String(t);return f?f.call(e,u,s):e.slice(s-u.length,s)===u}})},function(t,e,r){\"use strict\";r(16)(\"fixed\",function(t){return function(){return t(this,\"tt\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"fontcolor\",function(t){return function(e){return t(this,\"font\",\"color\",e)}})},function(t,e,r){\"use strict\";r(16)(\"fontsize\",function(t){return function(e){return t(this,\"font\",\"size\",e)}})},function(t,e,r){var n=r(0),i=r(47),o=String.fromCharCode,a=String.fromCodePoint;n(n.S+n.F*(!!a&&1!=a.length),\"String\",{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,a=0;n>a;){if(e=+arguments[a++],i(e,1114111)!==e)throw RangeError(e+\" is not a valid code point\");r.push(e<65536?o(e):o(((e-=65536)>>10)+55296,e%1024+56320))}return r.join(\"\")}})},function(t,e,r){\"use strict\";var n=r(0),i=r(136),o=\"includes\";n(n.P+n.F*r(122)(o),\"String\",{includes:function(t){return!!~i(this,t,o).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,r){\"use strict\";r(16)(\"italics\",function(t){return function(){return t(this,\"i\",\"\",\"\")}})},function(t,e,r){\"use strict\";var n=r(135)(!0);r(128)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})})},function(t,e,r){\"use strict\";r(16)(\"link\",function(t){return function(e){return t(this,\"a\",\"href\",e)}})},function(t,e,r){var n=r(0),i=r(17),o=r(10);n(n.S,\"String\",{raw:function(t){for(var e=i(t.raw),r=o(e.length),n=arguments.length,a=[],f=0;r>f;)a.push(String(e[f++])),f1?arguments[1]:void 0,e.length)),n=String(t);return f?f.call(e,n,r):e.slice(r,r+n.length)===n}})},function(t,e,r){\"use strict\";r(16)(\"strike\",function(t){return function(){return t(this,\"strike\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"sub\",function(t){return function(){return t(this,\"sub\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(16)(\"sup\",function(t){return function(){return t(this,\"sup\",\"\",\"\")}})},function(t,e,r){\"use strict\";r(58)(\"trim\",function(t){return function(){return t(this,3)}})},function(t,e,r){\"use strict\";var n=r(4),i=r(12),o=r(8),a=r(0),f=r(15),s=r(36).KEY,u=r(5),h=r(87),c=r(57),d=r(48),l=r(7),p=r(189),b=r(141),v=r(286),y=r(285),m=r(126),g=r(3),w=r(17),_=r(29),M=r(37),S=r(42),E=r(181),A=r(20),k=r(9),x=r(44),I=A.f,B=k.f,O=E.f,R=n.Symbol,P=n.JSON,T=P&&P.stringify,j=\"prototype\",C=l(\"_hidden\"),N=l(\"toPrimitive\"),L={}.propertyIsEnumerable,U=h(\"symbol-registry\"),z=h(\"symbols\"),D=h(\"op-symbols\"),q=Object[j],F=\"function\"==typeof R,K=n.QObject,G=!K||!K[j]||!K[j].findChild,V=o&&u(function(){return 7!=S(B({},\"a\",{get:function(){return B(this,\"a\",{value:7}).a}})).a})?function(t,e,r){var n=I(q,e);n&&delete q[e],B(t,e,r),n&&t!==q&&B(q,e,n)}:B,H=function(t){var e=z[t]=S(R[j]);return e._k=t,e},X=F&&\"symbol\"==typeof R.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof R},Y=function(t,e,r){return t===q&&Y(D,e,r),g(t),e=_(e,!0),g(r),i(z,e)?(r.enumerable?(i(t,C)&&t[C][e]&&(t[C][e]=!1),r=S(r,{enumerable:M(0,!1)})):(i(t,C)||B(t,C,M(1,{})),t[C][e]=!0),V(t,e,r)):B(t,e,r)},W=function(t,e){g(t);for(var r,n=y(e=w(e)),i=0,o=n.length;o>i;)Y(t,r=n[i++],e[r]);return t},Z=function(t,e){return void 0===e?S(t):W(S(t),e)},J=function(t){var e=L.call(this,t=_(t,!0));return!(this===q&&i(z,t)&&!i(D,t))&&(!(e||!i(this,t)||!i(z,t)||i(this,C)&&this[C][t])||e)},$=function(t,e){if(t=w(t),e=_(e,!0),t!==q||!i(z,e)||i(D,e)){var r=I(t,e);return!r||!i(z,e)||i(t,C)&&t[C][e]||(r.enumerable=!0),r}},Q=function(t){for(var e,r=O(w(t)),n=[],o=0;r.length>o;)i(z,e=r[o++])||e==C||e==s||n.push(e);return n},tt=function(t){for(var e,r=t===q,n=O(r?D:w(t)),o=[],a=0;n.length>a;)!i(z,e=n[a++])||r&&!i(q,e)||o.push(z[e]);return o};F||(R=function(){if(this instanceof R)throw TypeError(\"Symbol is not a constructor!\");var t=d(arguments.length>0?arguments[0]:void 0),e=function(r){this===q&&e.call(D,r),i(this,C)&&i(this[C],t)&&(this[C][t]=!1),V(this,t,M(1,r))};return o&&G&&V(q,t,{configurable:!0,set:e}),H(t)},f(R[j],\"toString\",function(){return this._k}),A.f=$,k.f=Y,r(43).f=E.f=Q,r(66).f=J,r(86).f=tt,o&&!r(41)&&f(q,\"propertyIsEnumerable\",J,!0),p.f=function(t){return H(l(t))}),a(a.G+a.W+a.F*!F,{Symbol:R});for(var et=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),rt=0;et.length>rt;)l(et[rt++]);for(var et=x(l.store),rt=0;et.length>rt;)b(et[rt++]);a(a.S+a.F*!F,\"Symbol\",{for:function(t){return i(U,t+=\"\")?U[t]:U[t]=R(t)},keyFor:function(t){if(X(t))return v(U,t);throw TypeError(t+\" is not a symbol!\")},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!F,\"Object\",{create:Z,defineProperty:Y,defineProperties:W,getOwnPropertyDescriptor:$,getOwnPropertyNames:Q,getOwnPropertySymbols:tt}),P&&a(a.S+a.F*(!F||u(function(){var t=R();return\"[null]\"!=T([t])||\"{}\"!=T({a:t})||\"{}\"!=T(Object(t))})),\"JSON\",{stringify:function(t){if(void 0!==t&&!X(t)){for(var e,r,n=[t],i=1;arguments.length>i;)n.push(arguments[i++]);return e=n[1],\"function\"==typeof e&&(r=e),!r&&m(e)||(e=function(t,e){if(r&&(e=r.call(this,t,e)),!X(e))return e}),n[1]=e,T.apply(P,n)}}}),R[j][N]||r(14)(R[j],N,R[j].valueOf),c(R,\"Symbol\"),c(Math,\"Math\",!0),c(n.JSON,\"JSON\",!0)},function(t,e,r){\"use strict\";var n=r(0),i=r(88),o=r(140),a=r(3),f=r(47),s=r(10),u=r(6),h=r(4).ArrayBuffer,c=r(134),d=o.ArrayBuffer,l=o.DataView,p=i.ABV&&h.isView,b=d.prototype.slice,v=i.VIEW,y=\"ArrayBuffer\";n(n.G+n.W+n.F*(h!==d),{ArrayBuffer:d}),n(n.S+n.F*!i.CONSTR,y,{isView:function(t){return p&&p(t)||u(t)&&v in t}}),n(n.P+n.U+n.F*r(5)(function(){return!new d(2).slice(1,void 0).byteLength}),y,{slice:function(t,e){if(void 0!==b&&void 0===e)return b.call(a(this),t);for(var r=a(this).byteLength,n=f(t,r),i=f(void 0===e?r:e,r),o=new(c(this,d))(s(i-n)),u=new l(this),h=new l(o),p=0;n0?arguments[0]:void 0)}},{add:function(t){return n.def(this,t,!0)}},n,!1,!0)},function(t,e,r){\"use strict\";var n=r(0),i=r(78)(!0);n(n.P,\"Array\",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(54)(\"includes\")},function(t,e,r){var n=r(0),i=r(131)(),o=r(4).process,a=\"process\"==r(23)(o);n(n.G,{asap:function(t){var e=a&&o.domain;i(e?e.bind(t):t)}})},function(t,e,r){var n=r(0),i=r(23);n(n.S,\"Error\",{isError:function(t){return\"Error\"===i(t)}})},function(t,e,r){var n=r(0);n(n.P+n.R,\"Map\",{toJSON:r(172)(\"Map\")})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{iaddh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o+(n>>>0)+((i&a|(i|a)&~(i+a>>>0))>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{imulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>16,s=i>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>16)+((o*s>>>0)+(u&r)>>16)}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{isubh:function(t,e,r,n){var i=t>>>0,o=e>>>0,a=r>>>0;return o-(n>>>0)-((~i&a|~(i^a)&i-a>>>0)>>>31)|0}})},function(t,e,r){var n=r(0);n(n.S,\"Math\",{umulh:function(t,e){var r=65535,n=+t,i=+e,o=n&r,a=i&r,f=n>>>16,s=i>>>16,u=(f*a>>>0)+(o*a>>>16);return f*s+(u>>>16)+((o*s>>>0)+(u&r)>>>16)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),\"Object\",{__defineGetter__:function(t,e){a.f(i(this),t,{get:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(13),a=r(9);r(8)&&n(n.P+r(85),\"Object\",{__defineSetter__:function(t,e){a.f(i(this),t,{set:o(e),enumerable:!0,configurable:!0})}})},function(t,e,r){var n=r(0),i=r(183)(!0);n(n.S,\"Object\",{entries:function(t){return i(t)}})},function(t,e,r){var n=r(0),i=r(184),o=r(17),a=r(20),f=r(119);n(n.S,\"Object\",{getOwnPropertyDescriptors:function(t){for(var e,r=o(t),n=a.f,s=i(r),u={},h=0;s.length>h;)f(u,e=s[h++],n(r,e));return u}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),\"Object\",{__lookupGetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.get;while(r=a(r))}})},function(t,e,r){\"use strict\";var n=r(0),i=r(11),o=r(29),a=r(21),f=r(20).f;r(8)&&n(n.P+r(85),\"Object\",{__lookupSetter__:function(t){var e,r=i(this),n=o(t,!0);do if(e=f(r,n))return e.set;while(r=a(r))}})},function(t,e,r){var n=r(0),i=r(183)(!1);n(n.S,\"Object\",{values:function(t){return i(t)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(4),o=r(32),a=r(131)(),f=r(7)(\"observable\"),s=r(13),u=r(3),h=r(40),c=r(45),d=r(14),l=r(55),p=l.RETURN,b=function(t){return null==t?void 0:s(t)},v=function(t){var e=t._c;e&&(t._c=void 0,e())},y=function(t){return void 0===t._o},m=function(t){y(t)||(t._o=void 0,v(t))},g=function(t,e){u(t),this._c=void 0,this._o=t,t=new w(this);try{var r=e(t),n=r;null!=r&&(\"function\"==typeof r.unsubscribe?r=function(){n.unsubscribe()}:s(r),this._c=r)}catch(e){return void t.error(e)}y(this)&&v(this)};g.prototype=c({},{unsubscribe:function(){m(this)}});var w=function(t){this._s=t};w.prototype=c({},{next:function(t){var e=this._s;if(!y(e)){var r=e._o;try{var n=b(r.next);if(n)return n.call(r,t)}catch(t){try{m(e)}finally{throw t}}}},error:function(t){var e=this._s;if(y(e))throw t;var r=e._o;e._o=void 0;try{var n=b(r.error);if(!n)throw t;t=n.call(r,t)}catch(t){try{v(e)}finally{throw t}}return v(e),t},complete:function(t){var e=this._s;if(!y(e)){var r=e._o;e._o=void 0;try{var n=b(r.complete);t=n?n.call(r,t):void 0}catch(t){try{v(e)}finally{throw t}}return v(e),t}}});var _=function(t){h(this,_,\"Observable\",\"_f\")._f=s(t)};c(_.prototype,{subscribe:function(t){return new g(t,this._f)},forEach:function(t){var e=this;return new(o.Promise||i.Promise)(function(r,n){s(t);var i=e.subscribe({next:function(e){try{return t(e)}catch(t){n(t),i.unsubscribe()}},error:n,complete:r})})}}),c(_,{from:function(t){var e=\"function\"==typeof this?this:_,r=b(u(t)[f]);if(r){var n=u(r.call(t));return n.constructor===e?n:new e(function(t){return n.subscribe(t)})}return new e(function(e){var r=!1;return a(function(){if(!r){try{if(l(t,!1,function(t){if(e.next(t),r)return p})===p)return}catch(t){if(r)throw t;return void e.error(t)}e.complete()}}),function(){r=!0}})},of:function(){for(var t=0,e=arguments.length,r=Array(e);t1?arguments[1]:void 0,!1)}})},function(t,e,r){\"use strict\";var n=r(0),i=r(188);n(n.P,\"String\",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,r){\"use strict\";r(58)(\"trimLeft\",function(t){return function(){return t(this,1)}},\"trimStart\")},function(t,e,r){\"use strict\";r(58)(\"trimRight\",function(t){return function(){return t(this,2)}},\"trimEnd\")},function(t,e,r){r(141)(\"asyncIterator\")},function(t,e,r){r(141)(\"observable\")},function(t,e,r){var n=r(0);n(n.S,\"System\",{global:r(4)})},function(t,e,r){for(var n=r(143),i=r(15),o=r(4),a=r(14),f=r(56),s=r(7),u=s(\"iterator\"),h=s(\"toStringTag\"),c=f.Array,d=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],l=0;l<5;l++){var p,b=d[l],v=o[b],y=v&&v.prototype;if(y){y[u]||a(y,u,c),y[h]||a(y,h,b),f[b]=c;for(p in n)y[p]||i(y,p,n[p],!0)}}},function(t,e,r){var n=r(0),i=r(139);n(n.G+n.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,r){var n=r(4),i=r(0),o=r(82),a=r(287),f=n.navigator,s=!!f&&/MSIE .\\./.test(f.userAgent),u=function(t){return s?function(e,r){return t(o(a,[].slice.call(arguments,2),\"function\"==typeof e?e:Function(e)),r)}:t};i(i.G+i.B+i.F*s,{setTimeout:u(n.setTimeout),setInterval:u(n.setInterval)})},function(t,e,r){r(410),r(349),r(351),r(350),r(353),r(355),r(360),r(354),r(352),r(362),r(361),r(357),r(358),r(356),r(348),r(359),r(363),r(364),r(316),r(318),r(317),r(366),r(365),r(336),r(346),r(347),r(337),r(338),r(339),r(340),r(341),r(342),r(343),r(344),r(345),r(319),r(320),r(321),r(322),r(323),r(324),r(325),r(326),r(327),r(328),r(329),r(330),r(331),r(332),r(333),r(334),r(335),r(397),r(402),r(409),r(400),r(392),r(393),r(398),r(403),r(405),r(388),r(389),r(390),r(391),r(394),r(395),r(396),r(399),r(401),r(404),r(406),r(407),r(408),r(311),r(313),r(312),r(315),r(314),r(300),r(298),r(304),r(301),r(307),r(309),r(297),r(303),r(294),r(308),r(292),r(306),r(305),r(299),r(302),r(291),r(293),r(296),r(295),r(310),r(143),r(382),r(387),r(191),r(383),r(384),r(385),r(386),r(367),r(190),r(192),r(193),r(422),r(411),r(412),r(417),r(420),r(421),r(415),r(418),r(416),r(419),r(413),r(414),r(368),r(369),r(370),r(371),r(372),r(375),r(373),r(374),r(376),r(377),r(378),r(379),r(381),r(380),r(423),r(449),r(452),r(451),r(453),r(454),r(450),r(455),r(456),r(434),r(437),r(433),r(431),r(432),r(435),r(436),r(426),r(448),r(457),r(425),r(427),r(429),r(428),r(430),r(439),r(440),r(442),r(441),r(444),r(443),r(445),r(446),r(447),r(424),r(438),r(460),r(459),r(458),t.exports=r(32)},function(t,e,r){t.exports=r(463)(\"ed25519\")},function(t,e,r){(function(n,i){function o(t){\"string\"==typeof t?t={bindings:t}:t||(t={}),t.__proto__=c,t.module_root||(t.module_root=e.getRoot(e.getFileName())),\".node\"!=f.extname(t.bindings)&&(t.bindings+=\".node\");for(var r,n,i,o=[],a=0,u=t.try.length;a=6.0.0 <7.0.0\",_npmVersion:\"3.10.3\",_nodeVersion:\"6.3.0\",_npmUser:{name:\"indutny\",email:\"fedor@indutny.com\"},dist:{shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",tarball:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"},maintainers:[{name:\"indutny\",email:\"fedor@indutny.com\"}],_npmOperationalInternal:{host:\"packages-16-east.internal.npmjs.com\",tmp:\"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569\"},directories:{},_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"}},function(t,e){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},function(t,e){t.exports={name:\"elliptic\",version:\"6.3.2\",description:\"EC cryptography\",main:\"lib/elliptic.js\",files:[\"lib\"],scripts:{jscs:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",jshint:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",lint:\"npm run jscs && npm run jshint\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",test:\"npm run lint && npm run unit\",version:\"grunt dist && git add dist/\"},repository:{type:\"git\",url:\"git+ssh://git@github.com/indutny/elliptic.git\"},keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],author:{name:\"Fedor Indutny\",email:\"fedor@indutny.com\"},license:\"MIT\",bugs:{url:\"https://github.com/indutny/elliptic/issues\"},homepage:\"https://github.com/indutny/elliptic\",devDependencies:{brfs:\"^1.4.3\",coveralls:\"^2.11.3\",grunt:\"^0.4.5\",\"grunt-browserify\":\"^5.0.0\",\"grunt-contrib-connect\":\"^1.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^1.0.1\",\"grunt-mocha-istanbul\":\"^3.0.1\",\"grunt-saucelabs\":\"^8.6.2\",istanbul:\"^0.4.2\",jscs:\"^2.9.0\",jshint:\"^2.6.0\",mocha:\"^2.1.0\"},dependencies:{\"bn.js\":\"^4.4.0\",brorand:\"^1.0.1\",\"hash.js\":\"^1.0.0\",inherits:\"^2.0.1\"},gitHead:\"cbace4683a4a548dc0306ef36756151a20299cd5\",_id:\"elliptic@6.3.2\",_shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",_from:\"elliptic@>=6.0.0 <7.0.0\",_npmVersion:\"3.10.3\",_nodeVersion:\"6.3.0\",_npmUser:{name:\"indutny\",email:\"fedor@indutny.com\"},dist:{shasum:\"e4c81e0829cf0a65ab70e998b8232723b5c1bc48\",tarball:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"},maintainers:[{name:\"indutny\",email:\"fedor@indutny.com\"}],_npmOperationalInternal:{host:\"packages-16-east.internal.npmjs.com\",tmp:\"tmp/elliptic-6.3.2.tgz_1473938837205_0.3108903462998569\"},directories:{},_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz\"}},function(t,e){t.exports={modp1:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},modp2:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},modp5:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},modp14:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},modp15:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},modp16:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"\n},modp17:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},modp18:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}},function(t,e){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function i(t,e){if(!t)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!e||\"object\"!=typeof e&&\"function\"!=typeof e?t:e}function o(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=r(195),f=function(t){function e(){return n(this,e),i(this,Object.getPrototypeOf(e).apply(this,arguments))}return o(e,t),e}(a);t.exports=f},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;r127){var e=Math.ceil(t.length.toString(2).length/8);this.skip(e)}this.skip(t.length)}},{key:\"write\",value:function(t){this.size+=t.length}},{key:\"skip\",value:function(t){this.size+=t}},{key:\"getSize\",value:function(){return this.size}}]),t}();[1,2,4,8].forEach(function(t){a.prototype[\"writeUInt\"+8*t]=function(e){return this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";(function(e){function n(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var i=function(){function t(t,e){for(var r=0;rt.MAX_INT_BYTES)throw new Error(\"Tried to read too large integer (requested: \"+e+\", max: \"+t.MAX_INT_BYTES+\")\");this.ensureAvailable(e);var r=this.buffer.readUIntBE(this.cursor,e);return r}},{key:\"skipUInt\",value:function(t){this.skip(t)}},{key:\"readUInt64\",value:function(){return[this.readUInt32(),this.readUInt32()]}},{key:\"peekUInt64\",value:function(){this.bookmark();var t=this.readUInt64();return this.restore(),t}},{key:\"skipUInt64\",value:function(){this.skip(8)}},{key:\"readVarUInt\",value:function(){var e=this.readVarOctetString();if(e.length>t.MAX_INT_BYTES)throw new a(\"UInt of length \"+e.length+\" too large to parse as integer (max: \"+t.MAX_INT_BYTES+\")\");if(0===e.length)throw new a(\"UInt of length 0 is invalid\");return e.readUIntBE(0,e.length)}},{key:\"peekVarUInt\",value:function(){this.bookmark();var t=this.readVarUInt();return this.restore(),t}},{key:\"skipVarUInt\",value:function(){this.skipVarOctetString()}},{key:\"readOctetString\",value:function(t){return this.read(t)}},{key:\"peekOctetString\",value:function(t){return this.peek(t)}},{key:\"skipOctetString\",value:function(t){return this.skip(t)}},{key:\"readLengthPrefix\",value:function(){var e=this.readUInt8();if(e&t.HIGH_BIT){var r=e&t.LOWER_SEVEN_BITS,n=this.readUInt(r),i=Math.max(128,1<<8*(r-1));if(n8*r)throw new Error(\"UInt \"+t+\" does not fit in \"+r+\" bytes\");var n=new e(r);n.writeUIntBE(t,0,r),this.write(n)}},{key:\"writeVarUInt\",value:function(r){if(e.isBuffer(r))return void this.writeVarOctetString(r);if(!o(r))throw new Error(\"UInt must be an integer\");if(r<0)throw new Error(\"UInt must be positive\");if(r>t.MAX_SAFE_INTEGER)throw new Error(\"UInt is too large\");var n=Math.ceil(r.toString(2).length/8),i=new e(n);i.writeUIntBE(r,0,n),this.writeVarOctetString(i)}},{key:\"writeUInt64\",value:function(e){if(o(e)&&e<=t.MAX_SAFE_INTEGER)return this.writeUInt32(Math.floor(e/4294967296)),void this.writeUInt32(4294967295&e);if(!Array.isArray(e)||2!==e.length||!o(e[0])||!o(e[1]))throw new TypeError(\"Expected 64-bit integer as an array of two 32-bit words\");this.writeUInt32(e[0]),this.writeUInt32(e[1])}},{key:\"writeOctetString\",value:function(t,e){if(t.length!==e)throw new Error(\"Incorrect length for octet string (actual: \"+t.length+\", expected: \"+e+\")\");this.write(t)}},{key:\"writeVarOctetString\",value:function(t){if(!e.isBuffer(t))throw new TypeError(\"Expects a buffer\");var r=128;if(t.length<=127)this.writeUInt8(t.length);else{var n=Math.ceil(t.length.toString(2).length/8);this.writeUInt8(r|n),this.writeUInt(t.length,n)}this.write(t)}},{key:\"write\",value:function(t){this.components.push(t)}},{key:\"getBuffer\",value:function(){return e.concat(this.components)}}]),t}();a.MAX_SAFE_INTEGER=r(475),[1,2,4].forEach(function(t){a.prototype[\"writeUInt\"+8*t]=function(e){this.writeUInt(e,t)}}),t.exports=a}).call(e,r(1).Buffer)},function(t,e,r){r(487),t.exports=9007199254740991},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e,r){var n=r(89);t.exports=function(t){if(!n(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,r){var n=r(476);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,r){var n=r(89),i=r(200).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,r){var n=r(483),i=r(484);t.exports=r(144)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},function(t,e,r){t.exports=!r(144)&&!r(199)(function(){return 7!=Object.defineProperty(r(479)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,e,r){var n=r(89),i=Math.floor;t.exports=function(t){return!n(t)&&isFinite(t)&&i(t)===t}},function(t,e,r){var n=r(477),i=r(481),o=r(485),a=Object.defineProperty;e.f=r(144)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return a(t,e,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[e]=r.value),t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,r){var n=r(89);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if(\"function\"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&\"function\"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,r){var n=r(198);n(n.S,\"Number\",{isInteger:r(482)})},function(t,e,r){var n=r(198);n(n.S,\"Number\",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,r){!function(t){\"use strict\";function e(t,e,r,n){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r,t[e+4]=n>>24&255,t[e+5]=n>>16&255,t[e+6]=n>>8&255,t[e+7]=255&n}function n(t,e,r,n,i){var o,a=0;for(o=0;o>>8)-1}function i(t,e,r,i){return n(t,e,r,i,16)}function o(t,e,r,i){return n(t,e,r,i,32)}function a(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;_=_+o|0,M=M+a|0,S=S+f|0,E=E+s|0,A=A+u|0,k=k+h|0,x=x+c|0,I=I+d|0,B=B+l|0,O=O+p|0,R=R+b|0,P=P+v|0,T=T+y|0,j=j+m|0,C=C+g|0,N=N+w|0,t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=M>>>0&255,t[5]=M>>>8&255,t[6]=M>>>16&255,t[7]=M>>>24&255,t[8]=S>>>0&255,t[9]=S>>>8&255,t[10]=S>>>16&255,t[11]=S>>>24&255,t[12]=E>>>0&255,t[13]=E>>>8&255,t[14]=E>>>16&255,t[15]=E>>>24&255,t[16]=A>>>0&255,t[17]=A>>>8&255,t[18]=A>>>16&255,t[19]=A>>>24&255,t[20]=k>>>0&255,t[21]=k>>>8&255,t[22]=k>>>16&255,t[23]=k>>>24&255,t[24]=x>>>0&255,t[25]=x>>>8&255,t[26]=x>>>16&255,t[27]=x>>>24&255,t[28]=I>>>0&255,t[29]=I>>>8&255,t[30]=I>>>16&255,t[31]=I>>>24&255,t[32]=B>>>0&255,t[33]=B>>>8&255,t[34]=B>>>16&255,t[35]=B>>>24&255,t[36]=O>>>0&255,t[37]=O>>>8&255,t[38]=O>>>16&255,t[39]=O>>>24&255,t[40]=R>>>0&255,t[41]=R>>>8&255,t[42]=R>>>16&255,t[43]=R>>>24&255,t[44]=P>>>0&255,t[45]=P>>>8&255,t[46]=P>>>16&255,t[47]=P>>>24&255,t[48]=T>>>0&255,t[49]=T>>>8&255,t[50]=T>>>16&255,t[51]=T>>>24&255,t[52]=j>>>0&255,t[53]=j>>>8&255,t[54]=j>>>16&255,t[55]=j>>>24&255,t[56]=C>>>0&255,t[57]=C>>>8&255,t[58]=C>>>16&255,t[59]=C>>>24&255,t[60]=N>>>0&255,t[61]=N>>>8&255,t[62]=N>>>16&255,t[63]=N>>>24&255}function f(t,e,r,n){for(var i,o=255&n[0]|(255&n[1])<<8|(255&n[2])<<16|(255&n[3])<<24,a=255&r[0]|(255&r[1])<<8|(255&r[2])<<16|(255&r[3])<<24,f=255&r[4]|(255&r[5])<<8|(255&r[6])<<16|(255&r[7])<<24,s=255&r[8]|(255&r[9])<<8|(255&r[10])<<16|(255&r[11])<<24,u=255&r[12]|(255&r[13])<<8|(255&r[14])<<16|(255&r[15])<<24,h=255&n[4]|(255&n[5])<<8|(255&n[6])<<16|(255&n[7])<<24,c=255&e[0]|(255&e[1])<<8|(255&e[2])<<16|(255&e[3])<<24,d=255&e[4]|(255&e[5])<<8|(255&e[6])<<16|(255&e[7])<<24,l=255&e[8]|(255&e[9])<<8|(255&e[10])<<16|(255&e[11])<<24,p=255&e[12]|(255&e[13])<<8|(255&e[14])<<16|(255&e[15])<<24,b=255&n[8]|(255&n[9])<<8|(255&n[10])<<16|(255&n[11])<<24,v=255&r[16]|(255&r[17])<<8|(255&r[18])<<16|(255&r[19])<<24,y=255&r[20]|(255&r[21])<<8|(255&r[22])<<16|(255&r[23])<<24,m=255&r[24]|(255&r[25])<<8|(255&r[26])<<16|(255&r[27])<<24,g=255&r[28]|(255&r[29])<<8|(255&r[30])<<16|(255&r[31])<<24,w=255&n[12]|(255&n[13])<<8|(255&n[14])<<16|(255&n[15])<<24,_=o,M=a,S=f,E=s,A=u,k=h,x=c,I=d,B=l,O=p,R=b,P=v,T=y,j=m,C=g,N=w,L=0;L<20;L+=2)i=_+T|0,A^=i<<7|i>>>25,i=A+_|0,B^=i<<9|i>>>23,i=B+A|0,T^=i<<13|i>>>19,i=T+B|0,_^=i<<18|i>>>14,i=k+M|0,O^=i<<7|i>>>25,i=O+k|0,j^=i<<9|i>>>23,i=j+O|0,M^=i<<13|i>>>19,i=M+j|0,k^=i<<18|i>>>14,i=R+x|0,C^=i<<7|i>>>25,i=C+R|0,S^=i<<9|i>>>23,i=S+C|0,x^=i<<13|i>>>19,i=x+S|0,R^=i<<18|i>>>14,i=N+P|0,E^=i<<7|i>>>25,i=E+N|0,I^=i<<9|i>>>23,i=I+E|0,P^=i<<13|i>>>19,i=P+I|0,N^=i<<18|i>>>14,i=_+E|0,M^=i<<7|i>>>25,i=M+_|0,S^=i<<9|i>>>23,i=S+M|0,E^=i<<13|i>>>19,i=E+S|0,_^=i<<18|i>>>14,i=k+A|0,x^=i<<7|i>>>25,i=x+k|0,I^=i<<9|i>>>23,i=I+x|0,A^=i<<13|i>>>19,i=A+I|0,k^=i<<18|i>>>14,i=R+O|0,P^=i<<7|i>>>25,i=P+R|0,B^=i<<9|i>>>23,i=B+P|0,O^=i<<13|i>>>19,i=O+B|0,R^=i<<18|i>>>14,i=N+C|0,T^=i<<7|i>>>25,i=T+N|0,j^=i<<9|i>>>23,i=j+T|0,C^=i<<13|i>>>19,i=C+j|0,N^=i<<18|i>>>14;t[0]=_>>>0&255,t[1]=_>>>8&255,t[2]=_>>>16&255,t[3]=_>>>24&255,t[4]=k>>>0&255,t[5]=k>>>8&255,t[6]=k>>>16&255,t[7]=k>>>24&255,t[8]=R>>>0&255,t[9]=R>>>8&255,t[10]=R>>>16&255,t[11]=R>>>24&255,t[12]=N>>>0&255,t[13]=N>>>8&255,t[14]=N>>>16&255,t[15]=N>>>24&255,t[16]=x>>>0&255,t[17]=x>>>8&255,t[18]=x>>>16&255,t[19]=x>>>24&255,t[20]=I>>>0&255,t[21]=I>>>8&255,t[22]=I>>>16&255,t[23]=I>>>24&255,t[24]=B>>>0&255,t[25]=B>>>8&255,t[26]=B>>>16&255,t[27]=B>>>24&255,t[28]=O>>>0&255,t[29]=O>>>8&255,t[30]=O>>>16&255,t[31]=O>>>24&255}function s(t,e,r,n){a(t,e,r,n)}function u(t,e,r,n){f(t,e,r,n)}function h(t,e,r,n,i,o,a){var f,u,h=new Uint8Array(16),c=new Uint8Array(64);for(u=0;u<16;u++)h[u]=0;for(u=0;u<8;u++)h[u]=o[u];for(;i>=64;){for(s(c,h,a,dt),u=0;u<64;u++)t[e+u]=r[n+u]^c[u];for(f=1,u=8;u<16;u++)f=f+(255&h[u])|0,h[u]=255&f,f>>>=8;i-=64,e+=64,n+=64}if(i>0)for(s(c,h,a,dt),u=0;u=64;){for(s(u,f,i,dt),a=0;a<64;a++)t[e+a]=u[a];for(o=1,a=8;a<16;a++)o=o+(255&f[a])|0,f[a]=255&o,o>>>=8;r-=64,e+=64}if(r>0)for(s(u,f,i,dt),a=0;a>16&1),o[r-1]&=65535;o[15]=a[15]-32767-(o[14]>>16&1),i=o[15]>>16&1,o[14]&=65535,w(a,o,1-i)}for(r=0;r<16;r++)t[2*r]=255&a[r],t[2*r+1]=a[r]>>8}function M(t,e){var r=new Uint8Array(32),n=new Uint8Array(32);return _(r,t),_(n,e),o(r,0,n,0)}function S(t){var e=new Uint8Array(32);return _(e,t),1&e[0]}function E(t,e){var r;for(r=0;r<16;r++)t[r]=e[2*r]+(e[2*r+1]<<8);t[15]&=32767}function A(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]+r[n]}function k(t,e,r){for(var n=0;n<16;n++)t[n]=e[n]-r[n]}function x(t,e,r){var n,i,o=0,a=0,f=0,s=0,u=0,h=0,c=0,d=0,l=0,p=0,b=0,v=0,y=0,m=0,g=0,w=0,_=0,M=0,S=0,E=0,A=0,k=0,x=0,I=0,B=0,O=0,R=0,P=0,T=0,j=0,C=0,N=r[0],L=r[1],U=r[2],z=r[3],D=r[4],q=r[5],F=r[6],K=r[7],G=r[8],V=r[9],H=r[10],X=r[11],Y=r[12],W=r[13],Z=r[14],J=r[15];n=e[0],o+=n*N,a+=n*L,f+=n*U,s+=n*z,u+=n*D,h+=n*q,c+=n*F,d+=n*K,l+=n*G,p+=n*V,b+=n*H,v+=n*X,y+=n*Y,m+=n*W,g+=n*Z,w+=n*J,n=e[1],a+=n*N,f+=n*L,s+=n*U,u+=n*z,h+=n*D,c+=n*q,d+=n*F,l+=n*K,p+=n*G,b+=n*V,v+=n*H,y+=n*X,m+=n*Y,g+=n*W,w+=n*Z,_+=n*J,n=e[2],f+=n*N,s+=n*L,u+=n*U,h+=n*z,c+=n*D,d+=n*q,l+=n*F,p+=n*K,b+=n*G,v+=n*V,y+=n*H,m+=n*X,g+=n*Y,w+=n*W,_+=n*Z,M+=n*J,n=e[3],s+=n*N,u+=n*L,h+=n*U,c+=n*z,d+=n*D,l+=n*q,p+=n*F,b+=n*K,v+=n*G,y+=n*V,m+=n*H,g+=n*X,w+=n*Y,_+=n*W,M+=n*Z,S+=n*J,n=e[4],u+=n*N,h+=n*L,c+=n*U,d+=n*z,l+=n*D,p+=n*q,b+=n*F,v+=n*K,y+=n*G,m+=n*V,g+=n*H,w+=n*X,_+=n*Y,M+=n*W,S+=n*Z,E+=n*J,n=e[5],h+=n*N,c+=n*L,d+=n*U,l+=n*z,p+=n*D,b+=n*q,v+=n*F,y+=n*K,m+=n*G,g+=n*V,w+=n*H,_+=n*X,M+=n*Y,S+=n*W,E+=n*Z,A+=n*J,n=e[6],c+=n*N,d+=n*L,l+=n*U,p+=n*z,b+=n*D,v+=n*q,y+=n*F,m+=n*K,g+=n*G,w+=n*V,_+=n*H,M+=n*X,S+=n*Y,E+=n*W,A+=n*Z,k+=n*J,n=e[7],d+=n*N,l+=n*L,p+=n*U,b+=n*z,v+=n*D,y+=n*q,m+=n*F,g+=n*K,w+=n*G,_+=n*V,M+=n*H,S+=n*X,E+=n*Y,A+=n*W,k+=n*Z,x+=n*J,n=e[8],l+=n*N,p+=n*L,b+=n*U,v+=n*z,y+=n*D,m+=n*q,g+=n*F,w+=n*K,_+=n*G,M+=n*V,S+=n*H,E+=n*X,A+=n*Y,k+=n*W,x+=n*Z,I+=n*J,n=e[9],p+=n*N,b+=n*L,v+=n*U,y+=n*z,m+=n*D,g+=n*q,w+=n*F,_+=n*K,M+=n*G,S+=n*V,E+=n*H,A+=n*X,k+=n*Y,x+=n*W,I+=n*Z,B+=n*J,n=e[10],b+=n*N,v+=n*L,y+=n*U,m+=n*z,g+=n*D,w+=n*q,_+=n*F,M+=n*K,S+=n*G,E+=n*V,A+=n*H,k+=n*X,x+=n*Y,I+=n*W,B+=n*Z,O+=n*J,n=e[11],v+=n*N,y+=n*L,m+=n*U,g+=n*z,w+=n*D,_+=n*q,M+=n*F,S+=n*K,E+=n*G,A+=n*V,k+=n*H,x+=n*X;I+=n*Y;B+=n*W,O+=n*Z,R+=n*J,n=e[12],y+=n*N,m+=n*L,g+=n*U,w+=n*z,_+=n*D,M+=n*q,S+=n*F,E+=n*K,A+=n*G,k+=n*V,x+=n*H,I+=n*X,B+=n*Y,O+=n*W,R+=n*Z,P+=n*J,n=e[13],m+=n*N,g+=n*L,w+=n*U,_+=n*z,M+=n*D,S+=n*q,E+=n*F,A+=n*K,k+=n*G,x+=n*V,I+=n*H,B+=n*X,O+=n*Y,R+=n*W,P+=n*Z,T+=n*J,n=e[14],g+=n*N,w+=n*L,_+=n*U,M+=n*z,S+=n*D,E+=n*q,A+=n*F,k+=n*K,x+=n*G,I+=n*V,B+=n*H,O+=n*X,R+=n*Y,P+=n*W,T+=n*Z,j+=n*J,n=e[15],w+=n*N,_+=n*L,M+=n*U,S+=n*z,E+=n*D,A+=n*q,k+=n*F,x+=n*K,I+=n*G,B+=n*V,O+=n*H,R+=n*X,P+=n*Y,T+=n*W,j+=n*Z,C+=n*J,o+=38*_,a+=38*M,f+=38*S,s+=38*E,u+=38*A,h+=38*k,c+=38*x,d+=38*I,l+=38*B,p+=38*O,b+=38*R,v+=38*P,y+=38*T,m+=38*j,g+=38*C,i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),i=1,n=o+i+65535,i=Math.floor(n/65536),o=n-65536*i,n=a+i+65535,i=Math.floor(n/65536),a=n-65536*i,n=f+i+65535,i=Math.floor(n/65536),f=n-65536*i,n=s+i+65535,i=Math.floor(n/65536),s=n-65536*i,n=u+i+65535,i=Math.floor(n/65536),u=n-65536*i,n=h+i+65535,i=Math.floor(n/65536),h=n-65536*i,n=c+i+65535,i=Math.floor(n/65536),c=n-65536*i,n=d+i+65535,i=Math.floor(n/65536),d=n-65536*i,n=l+i+65535,i=Math.floor(n/65536),l=n-65536*i,n=p+i+65535,i=Math.floor(n/65536),p=n-65536*i,n=b+i+65535,i=Math.floor(n/65536),b=n-65536*i,n=v+i+65535,i=Math.floor(n/65536),v=n-65536*i,n=y+i+65535,i=Math.floor(n/65536),y=n-65536*i,n=m+i+65535,i=Math.floor(n/65536),m=n-65536*i,n=g+i+65535,i=Math.floor(n/65536),g=n-65536*i,n=w+i+65535,i=Math.floor(n/65536),w=n-65536*i,o+=i-1+37*(i-1),t[0]=o,t[1]=a,t[2]=f,t[3]=s,t[4]=u,t[5]=h,t[6]=c,t[7]=d,t[8]=l,t[9]=p,t[10]=b,t[11]=v,t[12]=y,t[13]=m;t[14]=g;t[15]=w}function I(t,e){x(t,e,e)}function B(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=253;r>=0;r--)I(n,n),2!==r&&4!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function O(t,e){var r,n=tt();for(r=0;r<16;r++)n[r]=e[r];for(r=250;r>=0;r--)I(n,n),1!==r&&x(n,n,e);for(r=0;r<16;r++)t[r]=n[r]}function R(t,e,r){var n,i,o=new Uint8Array(32),a=new Float64Array(80),f=tt(),s=tt(),u=tt(),h=tt(),c=tt(),d=tt();for(i=0;i<31;i++)o[i]=e[i];for(o[31]=127&e[31]|64,o[0]&=248,E(a,r),i=0;i<16;i++)s[i]=a[i],h[i]=f[i]=u[i]=0;for(f[0]=h[0]=1,i=254;i>=0;--i)n=o[i>>>3]>>>(7&i)&1,w(f,s,n),w(u,h,n),A(c,f,u),k(f,f,u),A(u,s,h),k(s,s,h),I(h,c),I(d,f),x(f,u,f),x(u,s,c),A(c,f,u),k(f,f,u),I(s,f),k(u,h,d),x(f,u,at),A(f,f,h),x(u,u,f),x(f,h,d),x(h,s,a),I(s,c),w(f,s,n),w(u,h,n);for(i=0;i<16;i++)a[i+16]=f[i],a[i+32]=u[i],a[i+48]=s[i],a[i+64]=h[i];var l=a.subarray(32),p=a.subarray(16);return B(l,l),x(p,p,l),_(t,p),0}function P(t,e){return R(t,e,nt)}function T(t,e){return et(e,32),P(t,e)}function j(t,e,r){var n=new Uint8Array(32);return R(n,r,e),u(t,rt,n,dt)}function C(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),pt(t,e,r,n,a)}function N(t,e,r,n,i,o){var a=new Uint8Array(32);return j(a,i,o),bt(t,e,r,n,a)}function L(t,e,r,n){for(var i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M,S,E,A,k,x,I,B,O=new Int32Array(16),R=new Int32Array(16),P=t[0],T=t[1],j=t[2],C=t[3],N=t[4],L=t[5],U=t[6],z=t[7],D=e[0],q=e[1],F=e[2],K=e[3],G=e[4],V=e[5],H=e[6],X=e[7],Y=0;n>=128;){for(M=0;M<16;M++)S=8*M+Y,O[M]=r[S+0]<<24|r[S+1]<<16|r[S+2]<<8|r[S+3],R[M]=r[S+4]<<24|r[S+5]<<16|r[S+6]<<8|r[S+7];for(M=0;M<80;M++)if(i=P,o=T,a=j,f=C,s=N,u=L,h=U,c=z,d=D,l=q,p=F,b=K,v=G,y=V,m=H,g=X,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(N>>>14|G<<18)^(N>>>18|G<<14)^(G>>>9|N<<23),A=(G>>>14|N<<18)^(G>>>18|N<<14)^(N>>>9|G<<23),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=N&L^~N&U,A=G&V^~G&H,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=vt[2*M],A=vt[2*M+1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=O[M%16],A=R[M%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,w=65535&I|B<<16,_=65535&k|x<<16,E=w,A=_,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=(P>>>28|D<<4)^(D>>>2|P<<30)^(D>>>7|P<<25),A=(D>>>28|P<<4)^(P>>>2|D<<30)^(P>>>7|D<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,E=P&T^P&j^T&j,A=D&q^D&F^q&F,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,c=65535&I|B<<16,g=65535&k|x<<16,E=f,A=b,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=w,A=_,k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,f=65535&I|B<<16,b=65535&k|x<<16,T=i,j=o,C=a,N=f,L=s,U=u,z=h,P=c,q=d,F=l,K=p,G=b,V=v,H=y,X=m,D=g,M%16===15)for(S=0;S<16;S++)E=O[S],A=R[S],k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=O[(S+9)%16],A=R[(S+9)%16],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+1)%16],_=R[(S+1)%16],E=(w>>>1|_<<31)^(w>>>8|_<<24)^w>>>7,A=(_>>>1|w<<31)^(_>>>8|w<<24)^(_>>>7|w<<25),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,w=O[(S+14)%16],_=R[(S+14)%16],E=(w>>>19|_<<13)^(_>>>29|w<<3)^w>>>6,A=(_>>>19|w<<13)^(w>>>29|_<<3)^(_>>>6|w<<26),k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,O[S]=65535&I|B<<16,R[S]=65535&k|x<<16;E=P,A=D,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[0],A=e[0],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[0]=P=65535&I|B<<16,e[0]=D=65535&k|x<<16,E=T,A=q,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[1],A=e[1],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[1]=T=65535&I|B<<16,e[1]=q=65535&k|x<<16,E=j,A=F,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[2],A=e[2],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[2]=j=65535&I|B<<16,e[2]=F=65535&k|x<<16,E=C,A=K,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[3],A=e[3],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[3]=C=65535&I|B<<16,e[3]=K=65535&k|x<<16,E=N,A=G,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[4],A=e[4],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[4]=N=65535&I|B<<16,e[4]=G=65535&k|x<<16,E=L,A=V,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[5],A=e[5],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[5]=L=65535&I|B<<16,e[5]=V=65535&k|x<<16,E=U,A=H,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[6],A=e[6],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[6]=U=65535&I|B<<16,e[6]=H=65535&k|x<<16,E=z,A=X,k=65535&A,x=A>>>16,I=65535&E,B=E>>>16,E=t[7],A=e[7],k+=65535&A,x+=A>>>16,I+=65535&E,B+=E>>>16,x+=k>>>16,I+=x>>>16,B+=I>>>16,t[7]=z=65535&I|B<<16,e[7]=X=65535&k|x<<16,Y+=128,n-=128}return n}function U(t,r,n){var i,o=new Int32Array(8),a=new Int32Array(8),f=new Uint8Array(256),s=n;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,a[0]=4089235720,a[1]=2227873595,a[2]=4271175723,a[3]=1595750129,a[4]=2917565137,a[5]=725511199,a[6]=4215389547,a[7]=327033209,L(o,a,r,n),n%=128,i=0;i=0;--i)n=r[i/8|0]>>(7&i)&1,D(t,e,n),z(e,t),z(t,t),D(t,e,n)}function K(t,e){var r=[tt(),tt(),tt(),tt()];\nm(r[0],ut),m(r[1],ht),m(r[2],ot),x(r[3],ut,ht),F(t,r,e)}function G(t,e,r){var n,i=new Uint8Array(64),o=[tt(),tt(),tt(),tt()];for(r||et(e,32),U(i,e,32),i[0]&=248,i[31]&=127,i[31]|=64,K(o,i),q(t,o),n=0;n<32;n++)e[n+32]=t[n];return 0}function V(t,e){var r,n,i,o;for(n=63;n>=32;--n){for(r=0,i=n-32,o=n-12;i>8,e[i]-=256*r;e[i]+=r,e[n]=0}for(r=0,i=0;i<32;i++)e[i]+=r-(e[31]>>4)*yt[i],r=e[i]>>8,e[i]&=255;for(i=0;i<32;i++)e[i]-=r*yt[i];for(n=0;n<32;n++)e[n+1]+=e[n]>>8,t[n]=255&e[n]}function H(t){var e,r=new Float64Array(64);for(e=0;e<64;e++)r[e]=t[e];for(e=0;e<64;e++)t[e]=0;V(t,r)}function X(t,e,r,n){var i,o,a=new Uint8Array(64),f=new Uint8Array(64),s=new Uint8Array(64),u=new Float64Array(64),h=[tt(),tt(),tt(),tt()];U(a,n,32),a[0]&=248,a[31]&=127,a[31]|=64;var c=r+64;for(i=0;i>7&&k(t[0],it,t[0]),x(t[3],t[0],t[1]),0)}function W(t,e,r,n){var i,a,f=new Uint8Array(32),s=new Uint8Array(64),u=[tt(),tt(),tt(),tt()],h=[tt(),tt(),tt(),tt()];if(a=-1,r<64)return-1;if(Y(h,n))return-1;for(i=0;i>>13|r<<3),n=255&t[4]|(255&t[5])<<8,this.r[2]=7939&(r>>>10|n<<6),i=255&t[6]|(255&t[7])<<8,this.r[3]=8191&(n>>>7|i<<9),o=255&t[8]|(255&t[9])<<8,this.r[4]=255&(i>>>4|o<<12),this.r[5]=o>>>1&8190,a=255&t[10]|(255&t[11])<<8,this.r[6]=8191&(o>>>14|a<<2),f=255&t[12]|(255&t[13])<<8,this.r[7]=8065&(a>>>11|f<<5),s=255&t[14]|(255&t[15])<<8,this.r[8]=8191&(f>>>8|s<<8),this.r[9]=s>>>5&127,this.pad[0]=255&t[16]|(255&t[17])<<8,this.pad[1]=255&t[18]|(255&t[19])<<8,this.pad[2]=255&t[20]|(255&t[21])<<8,this.pad[3]=255&t[22]|(255&t[23])<<8,this.pad[4]=255&t[24]|(255&t[25])<<8,this.pad[5]=255&t[26]|(255&t[27])<<8,this.pad[6]=255&t[28]|(255&t[29])<<8,this.pad[7]=255&t[30]|(255&t[31])<<8};lt.prototype.blocks=function(t,e,r){for(var n,i,o,a,f,s,u,h,c,d,l,p,b,v,y,m,g,w,_,M=this.fin?0:2048,S=this.h[0],E=this.h[1],A=this.h[2],k=this.h[3],x=this.h[4],I=this.h[5],B=this.h[6],O=this.h[7],R=this.h[8],P=this.h[9],T=this.r[0],j=this.r[1],C=this.r[2],N=this.r[3],L=this.r[4],U=this.r[5],z=this.r[6],D=this.r[7],q=this.r[8],F=this.r[9];r>=16;)n=255&t[e+0]|(255&t[e+1])<<8,S+=8191&n,i=255&t[e+2]|(255&t[e+3])<<8,E+=8191&(n>>>13|i<<3),o=255&t[e+4]|(255&t[e+5])<<8,A+=8191&(i>>>10|o<<6),a=255&t[e+6]|(255&t[e+7])<<8,k+=8191&(o>>>7|a<<9),f=255&t[e+8]|(255&t[e+9])<<8,x+=8191&(a>>>4|f<<12),I+=f>>>1&8191,s=255&t[e+10]|(255&t[e+11])<<8,B+=8191&(f>>>14|s<<2),u=255&t[e+12]|(255&t[e+13])<<8,O+=8191&(s>>>11|u<<5),h=255&t[e+14]|(255&t[e+15])<<8,R+=8191&(u>>>8|h<<8),P+=h>>>5|M,c=0,d=c,d+=S*T,d+=E*(5*F),d+=A*(5*q),d+=k*(5*D),d+=x*(5*z),c=d>>>13,d&=8191,d+=I*(5*U),d+=B*(5*L),d+=O*(5*N),d+=R*(5*C),d+=P*(5*j),c+=d>>>13,d&=8191,l=c,l+=S*j,l+=E*T,l+=A*(5*F),l+=k*(5*q),l+=x*(5*D),c=l>>>13,l&=8191,l+=I*(5*z),l+=B*(5*U),l+=O*(5*L),l+=R*(5*N),l+=P*(5*C),c+=l>>>13,l&=8191,p=c,p+=S*C,p+=E*j,p+=A*T,p+=k*(5*F),p+=x*(5*q),c=p>>>13,p&=8191,p+=I*(5*D),p+=B*(5*z),p+=O*(5*U),p+=R*(5*L),p+=P*(5*N),c+=p>>>13,p&=8191,b=c,b+=S*N,b+=E*C,b+=A*j,b+=k*T,b+=x*(5*F),c=b>>>13,b&=8191,b+=I*(5*q),b+=B*(5*D),b+=O*(5*z),b+=R*(5*U),b+=P*(5*L),c+=b>>>13,b&=8191,v=c,v+=S*L,v+=E*N,v+=A*C,v+=k*j,v+=x*T,c=v>>>13,v&=8191,v+=I*(5*F),v+=B*(5*q),v+=O*(5*D),v+=R*(5*z),v+=P*(5*U),c+=v>>>13,v&=8191,y=c,y+=S*U,y+=E*L,y+=A*N,y+=k*C,y+=x*j,c=y>>>13,y&=8191,y+=I*T,y+=B*(5*F),y+=O*(5*q),y+=R*(5*D),y+=P*(5*z),c+=y>>>13,y&=8191,m=c,m+=S*z,m+=E*U,m+=A*L,m+=k*N,m+=x*C,c=m>>>13,m&=8191,m+=I*j,m+=B*T,m+=O*(5*F),m+=R*(5*q),m+=P*(5*D),c+=m>>>13,m&=8191,g=c,g+=S*D,g+=E*z,g+=A*U,g+=k*L,g+=x*N,c=g>>>13,g&=8191,g+=I*C,g+=B*j,g+=O*T,g+=R*(5*F),g+=P*(5*q),c+=g>>>13,g&=8191,w=c,w+=S*q,w+=E*D,w+=A*z,w+=k*U,w+=x*L,c=w>>>13,w&=8191,w+=I*N,w+=B*C,w+=O*j,w+=R*T,w+=P*(5*F),c+=w>>>13,w&=8191,_=c,_+=S*F,_+=E*q,_+=A*D,_+=k*z,_+=x*U,c=_>>>13,_&=8191,_+=I*L,_+=B*N,_+=O*C,_+=R*j,_+=P*T,c+=_>>>13,_&=8191,c=(c<<2)+c|0,c=c+d|0,d=8191&c,c>>>=13,l+=c,S=d,E=l,A=p,k=b,x=v,I=y,B=m,O=g,R=w,P=_,e+=16,r-=16;this.h[0]=S,this.h[1]=E,this.h[2]=A,this.h[3]=k,this.h[4]=x,this.h[5]=I,this.h[6]=B,this.h[7]=O,this.h[8]=R,this.h[9]=P},lt.prototype.finish=function(t,e){var r,n,i,o,a=new Uint16Array(10);if(this.leftover){for(o=this.leftover,this.buffer[o++]=1;o<16;o++)this.buffer[o]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(r=this.h[1]>>>13,this.h[1]&=8191,o=2;o<10;o++)this.h[o]+=r,r=this.h[o]>>>13,this.h[o]&=8191;for(this.h[0]+=5*r,r=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=r,r=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=r,a[0]=this.h[0]+5,r=a[0]>>>13,a[0]&=8191,o=1;o<10;o++)a[o]=this.h[o]+r,r=a[o]>>>13,a[o]&=8191;for(a[9]-=8192,n=(1^r)-1,o=0;o<10;o++)a[o]&=n;for(n=~n,o=0;o<10;o++)this.h[o]=this.h[o]&n|a[o];for(this.h[0]=65535&(this.h[0]|this.h[1]<<13),this.h[1]=65535&(this.h[1]>>>3|this.h[2]<<10),this.h[2]=65535&(this.h[2]>>>6|this.h[3]<<7),this.h[3]=65535&(this.h[3]>>>9|this.h[4]<<4),this.h[4]=65535&(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14),this.h[5]=65535&(this.h[6]>>>2|this.h[7]<<11),this.h[6]=65535&(this.h[7]>>>5|this.h[8]<<8),this.h[7]=65535&(this.h[8]>>>8|this.h[9]<<5),i=this.h[0]+this.pad[0],this.h[0]=65535&i,o=1;o<8;o++)i=(this.h[o]+this.pad[o]|0)+(i>>>16)|0,this.h[o]=65535&i;t[e+0]=this.h[0]>>>0&255,t[e+1]=this.h[0]>>>8&255,t[e+2]=this.h[1]>>>0&255,t[e+3]=this.h[1]>>>8&255,t[e+4]=this.h[2]>>>0&255,t[e+5]=this.h[2]>>>8&255,t[e+6]=this.h[3]>>>0&255,t[e+7]=this.h[3]>>>8&255,t[e+8]=this.h[4]>>>0&255,t[e+9]=this.h[4]>>>8&255,t[e+10]=this.h[5]>>>0&255,t[e+11]=this.h[5]>>>8&255,t[e+12]=this.h[6]>>>0&255,t[e+13]=this.h[6]>>>8&255,t[e+14]=this.h[7]>>>0&255,t[e+15]=this.h[7]>>>8&255},lt.prototype.update=function(t,e,r){var n,i;if(this.leftover){for(i=16-this.leftover,i>r&&(i=r),n=0;n=16&&(i=r-r%16,this.blocks(t,e,i),e+=i,r-=i),r){for(n=0;n=0},t.sign.keyPair=function(){var t=new Uint8Array(Rt),e=new Uint8Array(Pt);return G(t,e),{publicKey:t,secretKey:e}},t.sign.keyPair.fromSecretKey=function(t){if($(t),t.length!==Pt)throw new Error(\"bad secret key size\");for(var e=new Uint8Array(Rt),r=0;r0)throw new Error(\"Invalid string. Length must be a multiple of 4\");return\"=\"===t[e-2]?2:\"=\"===t[e-1]?1:0}function n(t){return 3*t.length/4-r(t)}function i(t){var e,n,i,o,a,f,s=t.length;a=r(t),f=new h(3*s/4-a),i=a>0?s-4:s;var c=0;for(e=0,n=0;e>16&255,f[c++]=o>>8&255,f[c++]=255&o;return 2===a?(o=u[t.charCodeAt(e)]<<2|u[t.charCodeAt(e+1)]>>4,f[c++]=255&o):1===a&&(o=u[t.charCodeAt(e)]<<10|u[t.charCodeAt(e+1)]<<4|u[t.charCodeAt(e+2)]>>2,f[c++]=o>>8&255,f[c++]=255&o),f}function o(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function a(t,e,r){for(var n,i=[],a=e;ah?h:u+f));return 1===n?(e=t[r-1],i+=s[e>>2],i+=s[e<<4&63],i+=\"==\"):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=s[e>>10],i+=s[e>>4&63],i+=s[e<<2&63],i+=\"=\"),o.push(i),o.join(\"\")}e.byteLength=n,e.toByteArray=i,e.fromByteArray=f;for(var s=[],u=[],h=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",d=0,l=c.length;d>1,h=-7,c=r?i-1:0,d=r?-1:1,l=t[e+c];for(c+=d,o=l&(1<<-h)-1,l>>=-h,h+=f;h>0;o=256*o+t[e+c],c+=d,h-=8);for(a=o&(1<<-h)-1,o>>=-h,h+=n;h>0;a=256*a+t[e+c],c+=d,h-=8);if(0===o)o=1-u;else{if(o===s)return a?NaN:(l?-1:1)*(1/0);a+=Math.pow(2,n),o-=u}return(l?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,f,s,u=8*o-i-1,h=(1<>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,p=n?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(f=isNaN(e)?1:0,a=h):(a=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-a))<1&&(a--,s*=2),e+=a+c>=1?d/s:d*Math.pow(2,1-c),e*s>=2&&(a++,s/=2),a+c>=h?(f=0,a=h):a+c>=1?(f=(e*s-1)*Math.pow(2,i),a+=c):(f=e*Math.pow(2,c-1)*Math.pow(2,i),a=0));i>=8;t[r+l]=255&f,l+=p,f/=256,i-=8);for(a=a<0;t[r+l]=255&a,l+=p,a/=256,u-=8);t[r+l-p]|=128*b}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){function n(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError(\"invalid suite type\");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return o(t,i.key,i.iv)}function i(t,e){var r,n;if(t=t.toLowerCase(),d[t])r=d[t].key,n=d[t].iv;else{if(!c[t])throw new TypeError(\"invalid suite type\");r=8*c[t].key,n=c[t].iv}var i=s(e,!1,r,n);return a(t,i.key,i.iv)}function o(t,e,r){if(t=t.toLowerCase(),d[t])return u.createCipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t});throw new TypeError(\"invalid suite type\")}function a(t,e,r){if(t=t.toLowerCase(),d[t])return u.createDecipheriv(t,e,r);if(c[t])return new h({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError(\"invalid suite type\")}function f(){return Object.keys(c).concat(u.getCiphers())}var s=r(146),u=r(494),h=r(498),c=r(499),d=r(95);e.createCipher=e.Cipher=n,e.createCipheriv=e.Cipheriv=o,e.createDecipher=e.Decipher=i,e.createDecipheriv=e.Decipheriv=a,e.listCiphers=e.getCiphers=f},function(t,e,r){function n(){return Object.keys(a)}var i=r(496);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv;var o=r(495);e.createDecipher=e.Decipher=o.createDecipher,e.createDecipheriv=e.Decipheriv=o.createDecipheriv;var a=r(95);e.listCiphers=e.getCiphers=n},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(u.call(this),this._cache=new i,this._last=void 0,this._cipher=new s.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(t){for(var e=t[15],r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(208),CBC:r(204),CFB:r(205),CFB8:r(207),CFB1:r(206),OFB:r(209),CTR:r(96),GCM:r(96)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(94),s=r(97),u=r(2),h=r(95),c=r(146),d=r(210),l=r(203);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){i.call(this);var r,n=t.mode.toLowerCase(),o=f[n];r=t.decrypt?\"decrypt\":\"encrypt\";var a=t.key;\"des-ede\"!==n&&\"des-ede-cbc\"!==n||(a=e.concat([a,a.slice(0,8)]));var s=t.iv;this._des=o.create({key:a,iv:s,type:r})}var i=r(500),o=r(145),a=r(2),f={\"des-ede3-cbc\":o.CBC.instantiate(o.EDE),\"des-ede3\":o.EDE,\"des-ede-cbc\":o.CBC.instantiate(o.EDE),\"des-ede\":o.EDE,\"des-cbc\":o.CBC.instantiate(o.DES),\"des-ecb\":o.DES};f.des=f[\"des-cbc\"],f.des3=f[\"des-ede3-cbc\"],t.exports=n,a(n,i),n.prototype._update=function(t){return new e(this._des.update(t))},n.prototype._final=function(){return new e(this._des.final())}}).call(e,r(1).Buffer)},function(t,e){e[\"des-ecb\"]={key:8,iv:0},e[\"des-cbc\"]=e.des={key:8,iv:8},e[\"des-ede3-cbc\"]=e.des3={key:24,iv:8},e[\"des-ede3\"]={key:24,iv:0},e[\"des-ede-cbc\"]={key:16,iv:8},e[\"des-ede\"]={key:16,iv:0}},function(t,e,r){(function(e){function n(t){i.call(this),this.hashMode=\"string\"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._decoder=null,this._encoding=null}var i=r(31).Transform,o=r(2),a=r(52).StringDecoder;t.exports=n,o(n,i),n.prototype.update=function(t,r,n){\"string\"==typeof t&&(t=new e(t,r));var i=this._update(t);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},n.prototype.setAutoPadding=function(){},n.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")},n.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")},n.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")},n.prototype._transform=function(t,e,r){var n;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){n=t}finally{r(n)}},n.prototype._flush=function(t){var e;try{this.push(this._final())}catch(t){e=t}finally{t(e)}},n.prototype._finalOrDigest=function(t){var r=this._final()||new e(\"\");return t&&(r=this._toString(r,t,!0)),r},n.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new a(e),this._encoding=e),this._encoding!==e)throw new Error(\"can't switch encodings\");var n=this._decoder.write(t);return r&&(n+=this._decoder.end()),n}}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t){o.equal(t.length,8,\"Invalid IV length\"),this.iv=new Array(8);for(var e=0;e0;n--)e+=this._buffer(t,e),r+=this._flushBuffer(i,r);return e+=this._buffer(t,e),i},n.prototype.final=function(t){var e;t&&(e=this.update(t));var r;return r=\"encrypt\"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e>>1];r=s.r28shl(r,a),n=s.r28shl(n,a),s.pc2(r,n,t.keys,i)}},i.prototype._update=function(t,e,r,n){var i=this._desState,o=s.readUInt32BE(t,e),a=s.readUInt32BE(t,e+4);s.ip(o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],\"encrypt\"===this.type?this._encrypt(i,o,a,i.tmp,0):this._decrypt(i,o,a,i.tmp,0),o=i.tmp[0],a=i.tmp[1],s.writeUInt32BE(r,o,n),s.writeUInt32BE(r,a,n+4)},i.prototype._pad=function(t,e){for(var r=t.length-e,n=e;n>>0,o=l}s.rip(a,o,n,i)},i.prototype._decrypt=function(t,e,r,n,i){for(var o=r,a=e,f=t.keys.length-2;f>=0;f-=2){var u=t.keys[f],h=t.keys[f+1];s.expand(o,t.tmp,0),u^=t.tmp[0],h^=t.tmp[1];var c=s.substitute(u,h),d=s.permute(c),l=o;o=(a^d)>>>0,a=l}s.rip(o,a,n,i)}},function(t,e,r){\"use strict\";function n(t,e){o.equal(e.length,24,\"Invalid key length\");var r=e.slice(0,8),n=e.slice(8,16),i=e.slice(16,24);\"encrypt\"===t?this.ciphers=[u.create({type:\"encrypt\",key:r}),u.create({type:\"decrypt\",key:n}),u.create({type:\"encrypt\",key:i})]:this.ciphers=[u.create({type:\"decrypt\",key:i}),u.create({type:\"encrypt\",key:n}),u.create({type:\"decrypt\",key:r})]}function i(t){s.call(this,t);var e=new n(this.type,this.options.key);this._edeState=e}var o=r(98),a=r(2),f=r(145),s=f.Cipher,u=f.DES;a(i,s),t.exports=i,i.create=function(t){return new i(t)},i.prototype._update=function(t,e,r,n){var i=this._edeState;i.ciphers[0]._update(t,e,r,n),i.ciphers[1]._update(r,n,r,n),i.ciphers[2]._update(r,n,r,n)},i.prototype._pad=u.prototype._pad,i.prototype._unpad=u.prototype._unpad},function(t,e){\"use strict\";e.readUInt32BE=function(t,e){var r=t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e];return r>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,n){for(var i=0,o=0,a=6;a>=0;a-=2){for(var f=0;f<=24;f+=8)i<<=1,i|=e>>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>>f+a&1}for(var a=6;a>=0;a-=2){for(var f=1;f<=25;f+=8)o<<=1,o|=e>>>f+a&1;for(var f=1;f<=25;f+=8)o<<=1,o|=t>>>f+a&1}r[n+0]=i>>>0,r[n+1]=o>>>0},e.rip=function(t,e,r,n){for(var i=0,o=0,a=0;a<4;a++)for(var f=24;f>=0;f-=8)i<<=1,i|=e>>>f+a&1,i<<=1,i|=t>>>f+a&1;for(var a=4;a<8;a++)for(var f=24;f>=0;f-=8)o<<=1,o|=e>>>f+a&1,o<<=1,o|=t>>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.pc1=function(t,e,r,n){for(var i=0,o=0,a=7;a>=5;a--){\nfor(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var f=0;f<=24;f+=8)i<<=1,i|=t>>f+a&1}for(var f=0;f<=24;f+=8)i<<=1,i|=e>>f+a&1;for(var a=1;a<=3;a++){for(var f=0;f<=24;f+=8)o<<=1,o|=e>>f+a&1;for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1}for(var f=0;f<=24;f+=8)o<<=1,o|=t>>f+a&1;r[n+0]=i>>>0,r[n+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,n,i){for(var o=0,a=0,f=r.length>>>1,s=0;s>>r[s]&1;for(var s=f;s>>r[s]&1;n[i+0]=o>>>0,n[i+1]=a>>>0},e.expand=function(t,e,r){var n=0,i=0;n=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)n<<=6,n|=t>>>o&63;for(var o=11;o>=3;o-=4)i|=t>>>o&63,i<<=6;i|=(31&t)<<1|t>>>31,e[r+0]=n>>>0,e[r+1]=i>>>0};var n=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,i=0;i<4;i++){var o=t>>>18-6*i&63,a=n[64*i+o];r<<=4,r|=a}for(var i=0;i<4;i++){var o=e>>>18-6*i&63,a=n[256+64*i+o];r<<=4,r|=a}return r>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>i[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var n=t.toString(2);n.length=0||!r.umod(t.prime1)||!r.umod(t.prime2);)r=new a(f(e));return r}var a=r(18),f=r(61);t.exports=i,i.getr=o}).call(e,r(1).Buffer)},function(t,e,r){\"use strict\";function n(t,e){this.type=t,this.p=new o(e.p,16),this.red=e.prime?o.red(e.prime):o.mont(this.p),this.zero=new o(0).toRed(this.red),this.one=new o(1).toRed(this.red),this.two=new o(2).toRed(this.red),this.n=e.n&&new o(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(18),a=r(19),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error(\"Not implemented\")},n.prototype.validate=function(){throw new Error(\"Not implemented\")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a=\"affine\"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return\"affine\"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M=\"affine\"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i\":\"\"},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){\"use strict\";function n(t){s.call(this,\"mont\",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,\"projective\"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(99),a=r(18),f=r(2),s=o.base,u=r(19),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){\"use strict\";function n(t){h.call(this,\"short\",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,\"affine\"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,\"jacobian\"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(99),f=r(19),s=r(18),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o\":\"\"},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},u(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){\"use strict\";function n(t){\"short\"===t.type?this.curve=new f.curve.short(t):\"edwards\"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(49),f=r(19),s=f.utils.assert;o.PresetCurve=n,i(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:a.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),i(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:a.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),i(\"p256\",{\ntype:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:a.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),i(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:a.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),i(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:a.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),i(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"0\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"9\"]}),i(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var u;try{u=r(520)}catch(t){u=void 0}i(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:a.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",u]})},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(\"string\"==typeof t&&(f(o.curves.hasOwnProperty(t),\"Unknown curve \"+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(18),o=r(19),a=o.utils,f=a.assert,s=r(514),u=r(515);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){\"object\"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray(\"be\",a),s=t.toArray(\"be\",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,\"hex\");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,\"The recovery param is more than two bits\"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error(\"Unable to find sencond key candinate\");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},function(t,e,r){\"use strict\";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(18);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:\"Invalid public key\"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},n.prototype.getPublic=function(t,e){return\"string\"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return\"hex\"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return\"\"}},function(t,e,r){\"use strict\";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,\"Signature without r or s\"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(18),u=r(19),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){\"use strict\";function n(t){if(f(\"ed25519\"===t,\"only tested with ed25519 so far\"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(49),o=r(19),a=o.utils,f=a.assert,s=a.parseBytes,u=r(517),h=r(518);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(e,r,i)}var i=r(49),o=r(19),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?\"0\"+t:t}function o(t){for(var e=\"\",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n=\"_\"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return\"string\"==typeof t?c.toArray(t,\"hex\"):t}function h(t){return new d(t,\"hex\",\"le\")}var c=e,d=r(18);c.assert=function(t,e){if(!t)throw new Error(e||\"Assertion failed\")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return\"hex\"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},\"object\"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error(\"Not implemented yet\")};else try{var o=r(609);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(49),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r=\"\",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){var n=r(100),i=n.define(\"RSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())});e.RSAPrivateKey=i;var o=n.define(\"RSAPublicKey\",function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())});e.RSAPublicKey=o;var a=n.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(f),this.key(\"subjectPublicKey\").bitstr())});e.PublicKey=a;var f=n.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}),s=n.define(\"PrivateKeyInfo\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(f),this.key(\"subjectPrivateKey\").octstr())});e.PrivateKey=s;var u=n.define(\"EncryptedPrivateKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())});e.EncryptedPrivateKey=u;var h=n.define(\"DSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())});e.DSAPrivateKey=h,e.DSAparam=n.define(\"DSAparam\",function(){this.int()});var c=n.define(\"ECPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(d),this.key(\"publicKey\").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define(\"ECParameters\",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define(\"signature\",function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m,i=/^-----BEGIN (.*) KEY-----\\r?\\n/m,o=/^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m,a=r(148),f=r(219);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c=\"aes\"+h[1],d=new e(h[2],\"hex\"),l=new e(h[3].replace(/\\r?\\n/g,\"\"),\"base64\"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\\r?\\n/g,\"\"),\"base64\")}var m=u.match(i)[1]+\" KEY\";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(100),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext(\"(function \"+this.name+\"(entity) {\\n this._initNamed(entity);\\n})\")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||\"der\",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||\"der\",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(68).Reporter,o=r(68).EncoderBuffer,a=r(68).DecoderBuffer,f=r(538),s=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],u=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(s),h=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];t.exports=n;var c=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,\"Root node can have only one child\")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if(\"object\"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+\" not implemented for encoding: \"+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,\"tagged\"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,\"content\"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return\"seq\"===t||\"set\"===t?null:\"seqof\"===t||\"setof\"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):\"objid\"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):\"objid\"===t?this._decodeObjid(e,null,null,r):\"gentime\"===t||\"utctime\"===t?this._decodeTime(e,t,r):\"null_\"===t?this._decodeNull(e,r):\"bool\"===t?this._decodeBool(e,r):\"int\"===t||\"enum\"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error(\"unknown tag: \"+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error(\"Choice not matched\")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error(\"Child should have a key\");var n=e.enterKey(r._baseState.key);if(\"object\"!=typeof t)return e.error(\"Child expected, but input is not object\");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if(\"seqof\"===n.tag||\"setof\"===n.tag){if(!n.args||1!==n.args.length)return e.error(\"Too many args for : \"+n.tag);if(!Array.isArray(t))return e.error(\"seqof/setof, but data is not Array\");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?\"universal\":\"context\";null===u?null===n.use&&e.error(\"Tag could be ommited only for .use()\"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,\"context\",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if(\"objid\"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if(\"objid\"===t)return this._encodeObjid(e,null,null);if(\"gentime\"===t||\"utctime\"===t)return this._encodeTime(e,t);if(\"null_\"===t)return this._encodeNull();if(\"int\"===t||\"enum\"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if(\"bool\"===t)return this._encodeBool(e);throw new Error(\"Unsupported tag: \"+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join(\"/\")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return\"[\"+JSON.stringify(t)+\"]\"}).join(\"\"),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(215);e.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",\n21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(216),n.pem=r(535)},function(t,e,r){function n(t){a.call(this,t),this.enc=\"pem\"}var i=r(2),o=r(1).Buffer,a=r(216);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\\r\\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(224),CBC:r(220),CFB:r(221),CFB8:r(223),CFB1:r(222),OFB:r(225),CTR:r(102),GCM:r(102)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(101),s=r(103),u=r(2),h=r(147),c=r(148),d=r(226),l=r(218);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,e,r,n){var a=v(e);if(a.curve){if(\"ecdsa\"!==n)throw new Error(\"wrong private key type\");return i(t,a)}if(\"dsa\"===a.type){if(\"dsa\"!==n)throw new Error(\"wrong private key type\");return o(t,a,r)}if(\"rsa\"!==n)throw new Error(\"wrong private key type\");for(var f=a.modulus.byteLength(),s=[0,1];t.length+s.length+10&&r.ishrn(n),r}function u(t,r){t=s(t,r),t=t.mod(r);var n=new e(t.toArray());if(n.length=e)throw new Error(\"invalid sig\")}var f=r(212),s=r(19),u=r(213),h=r(18),c=s.ec;t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t){this.curveType=f[t],this.curveType||(this.curveType={name:t}),this.curve=new o.ec(this.curveType.name),this.keys=void 0}function i(t,r,n){Array.isArray(t)||(t=t.toArray());var i=new e(t);if(n&&i.length0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function i(t,e){this.curve=t,this.type=e,this.precomputed=null}var o=r(30),a=r(22),f=a.utils,s=f.getNAF,u=f.getJSF,h=f.assert;t.exports=n,n.prototype.point=function(){throw new Error(\"Not implemented\")},n.prototype.validate=function(){throw new Error(\"Not implemented\")},n.prototype._fixedNafMul=function(t,e){h(t.precomputed);var r=t._getDoubles(),n=s(e,1),i=(1<=a;e--)f=(f<<1)+n[e];o.push(f)}for(var u=this.jpoint(null,null,null),c=this.jpoint(null,null,null),d=i;d>0;d--){for(var a=0;a=0;f--){for(var e=0;f>=0&&0===o[f];f--)e++;if(f>=0&&e++,a=a.dblp(e),f<0)break;var u=o[f];h(0!==u),a=\"affine\"===t.type?u>0?a.mixedAdd(i[u-1>>1]):a.mixedAdd(i[-u-1>>1].neg()):u>0?a.add(i[u-1>>1]):a.add(i[-u-1>>1].neg())}return\"affine\"===t.type?a.toP():a},n.prototype._wnafMulAdd=function(t,e,r,n,i){for(var o=this._wnafT1,a=this._wnafT2,f=this._wnafT3,h=0,c=0;c=1;c-=2){var p=c-1,b=c;if(1===o[p]&&1===o[b]){var v=[e[p],null,null,e[b]];0===e[p].y.cmp(e[b].y)?(v[1]=e[p].add(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg())):0===e[p].y.cmp(e[b].y.redNeg())?(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].add(e[b].neg())):(v[1]=e[p].toJ().mixedAdd(e[b]),v[2]=e[p].toJ().mixedAdd(e[b].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],m=u(r[p],r[b]);h=Math.max(m[0].length,h),f[p]=new Array(h),f[b]=new Array(h);for(var g=0;g=0;c--){for(var E=0;c>=0;){for(var A=!0,g=0;g=0&&E++,M=M.dblp(E),c<0)break;for(var g=0;g0?d=a[g][k-1>>1]:k<0&&(d=a[g][-k-1>>1].neg()),M=\"affine\"===d.type?M.mixedAdd(d):M.add(d))}}for(var c=0;c=Math.ceil((t.bitLength()+1)/e.step)},i.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,i=0;i\":\"\"},i.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&0===this.y.cmp(this.z)},i.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=n.redAdd(e),a=o.redSub(r),f=n.redSub(e),s=i.redMul(a),u=o.redMul(f),h=i.redMul(f),c=a.redMul(o);return this.curve.point(s,u,c,h)},i.prototype._projDbl=function(){var t,e,r,n=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var a=this.curve._mulA(i),f=a.redAdd(o);if(this.zOne)t=n.redSub(i).redSub(o).redMul(f.redSub(this.curve.two)),e=f.redMul(a.redSub(o)),r=f.redSqr().redSub(f).redSub(f);else{var s=this.z.redSqr(),u=f.redSub(s).redISub(s);t=n.redSub(i).redISub(o).redMul(u),e=f.redMul(a.redSub(o)),r=f.redMul(u)}}else{var a=i.redAdd(o),s=this.curve._mulC(this.c.redMul(this.z)).redSqr(),u=a.redSub(s).redSub(s);t=this.curve._mulC(n.redISub(a)).redMul(u),e=this.curve._mulC(a).redMul(i.redISub(o)),r=a.redMul(u)}return this.curve.point(t,e,r)},i.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},i.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),n=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),a=i.redSub(n),f=i.redAdd(n),s=r.redAdd(e),u=o.redMul(a),h=f.redMul(s),c=o.redMul(s),d=a.redMul(f);return this.curve.point(u,h,d,c)},i.prototype._projAdd=function(t){var e,r,n=this.z.redMul(t.z),i=n.redSqr(),o=this.x.redMul(t.x),a=this.y.redMul(t.y),f=this.curve.d.redMul(o).redMul(a),s=i.redSub(f),u=i.redAdd(f),h=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(a),c=n.redMul(s).redMul(h);return this.curve.twisted?(e=n.redMul(u).redMul(a.redSub(this.curve._mulA(o))),r=s.redMul(u)):(e=n.redMul(u).redMul(a.redSub(o)),r=this.curve._mulC(s).redMul(u)),this.curve.point(c,e,r)},i.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},i.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},i.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},i.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},i.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()},i.prototype.getY=function(){return this.normalize(),this.y.fromRed()},i.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},i.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(n),0===this.x.cmp(e))return!0}return!1},i.prototype.toP=i.prototype.normalize,i.prototype.mixedAdd=i.prototype.add},function(t,e,r){\"use strict\";function n(t){s.call(this,\"mont\",t),this.a=new a(t.a,16).toRed(this.red),this.b=new a(t.b,16).toRed(this.red),this.i4=new a(4).toRed(this.red).redInvm(),this.two=new a(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function i(t,e,r){s.BasePoint.call(this,t,\"projective\"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new a(e,16),this.z=new a(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}var o=r(104),a=r(30),f=r(2),s=o.base,u=r(22),h=u.utils;f(n,s),t.exports=n,n.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),n=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e),i=n.redSqrt();return 0===i.redSqr().cmp(n)},f(i,s.BasePoint),n.prototype.decodePoint=function(t,e){return this.point(h.toArray(t,e),1)},n.prototype.point=function(t,e){return new i(this,t,e)},n.prototype.pointFromJSON=function(t){return i.fromJSON(this,t)},i.prototype.precompute=function(){},i.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},i.fromJSON=function(t,e){return new i(t,e[0],e[1]||t.one)},i.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},i.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},i.prototype.dbl=function(){var t=this.x.redAdd(this.z),e=t.redSqr(),r=this.x.redSub(this.z),n=r.redSqr(),i=e.redSub(n),o=e.redMul(n),a=i.redMul(n.redAdd(this.curve.a24.redMul(i)));return this.curve.point(o,a)},i.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),i=t.x.redAdd(t.z),o=t.x.redSub(t.z),a=o.redMul(r),f=i.redMul(n),s=e.z.redMul(a.redAdd(f).redSqr()),u=e.x.redMul(a.redISub(f).redSqr());return this.curve.point(s,u)},i.prototype.mul=function(t){for(var e=t.clone(),r=this,n=this.curve.point(null,null),i=this,o=[];0!==e.cmpn(0);e.iushrn(1))o.push(e.andln(1));for(var a=o.length-1;a>=0;a--)0===o[a]?(r=r.diffAdd(n,i),n=n.dbl()):(n=r.diffAdd(n,i),r=r.dbl());return n},i.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},i.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},i.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},i.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,r){\"use strict\";function n(t){h.call(this,\"short\",t),this.a=new s(t.a,16).toRed(this.red),this.b=new s(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function i(t,e,r,n){h.BasePoint.call(this,t,\"affine\"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new s(e,16),this.y=new s(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function o(t,e,r,n){h.BasePoint.call(this,t,\"jacobian\"),null===e&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new s(0)):(this.x=new s(e,16),this.y=new s(r,16),this.z=new s(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}var a=r(104),f=r(22),s=r(30),u=r(2),h=a.base,c=f.utils.assert;u(n,h),t.exports=n,n.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new s(t.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);e=n[0].cmp(n[1])<0?n[0]:n[1],e=e.toRed(this.red)}if(t.lambda)r=new s(t.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(e))?r=i[0]:(r=i[1],c(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}var o;return o=t.basis?t.basis.map(function(t){return{a:new s(t.a,16),b:new s(t.b,16)}}):this._getEndoBasis(r),{beta:e,lambda:r,basis:o}}},n.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:s.mont(t),r=new s(2).toRed(e).redInvm(),n=r.redNeg(),i=new s(3).toRed(e).redNeg().redSqrt().redMul(r),o=n.redAdd(i).fromRed(),a=n.redSub(i).fromRed();return[o,a]},n.prototype._getEndoBasis=function(t){for(var e,r,n,i,o,a,f,u,h,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,l=this.n.clone(),p=new s(1),b=new s(0),v=new s(0),y=new s(1),m=0;0!==d.cmpn(0);){var g=l.div(d);u=l.sub(g.mul(d)),h=v.sub(g.mul(p));var w=y.sub(g.mul(b));if(!n&&u.cmp(c)<0)e=f.neg(),r=p,n=u.neg(),i=h;else if(n&&2===++m)break;f=u,l=d,d=u,v=p,p=h,y=b,b=w}o=u.neg(),a=h;var _=n.sqr().add(i.sqr()),M=o.sqr().add(a.sqr());return M.cmp(_)>=0&&(o=e,a=r),n.negative&&(n=n.neg(),i=i.neg()),o.negative&&(o=o.neg(),a=a.neg()),[{a:n,b:i},{a:o,b:a}]},n.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],n=e[1],i=n.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),a=i.mul(r.a),f=o.mul(n.a),s=i.mul(r.b),u=o.mul(n.b),h=t.sub(a).sub(f),c=s.add(u).neg();return{k1:h,k2:c}},n.prototype.pointFromX=function(t,e){t=new s(t,16),t.red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var i=n.fromRed().isOdd();return(e&&!i||!e&&i)&&(n=n.redNeg()),this.point(t,n)},n.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,n=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(i).cmpn(0)},n.prototype._endoWnafMulAdd=function(t,e,r){for(var n=this._endoWnafT1,i=this._endoWnafT2,o=0;o\":\"\"},i.prototype.isInfinity=function(){return this.inf},i.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),n=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},i.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),n=t.redInvm(),i=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(n),o=i.redSqr().redISub(this.x.redAdd(this.x)),a=i.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,a)},i.prototype.getX=function(){return this.x.fromRed()},i.prototype.getY=function(){return this.y.fromRed()},i.prototype.mul=function(t){return t=new s(t,16),this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},i.prototype.mulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i):this.curve._wnafMulAdd(1,n,i,2)},i.prototype.jmulAdd=function(t,e,r){var n=[this,e],i=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,i,!0):this.curve._wnafMulAdd(1,n,i,2,!0)},i.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},i.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,n=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return e},i.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var t=this.curve.jpoint(this.x,this.y,this.curve.one);return t},\nu(o,h.BasePoint),n.prototype.jpoint=function(t,e,r){return new o(this,t,e,r)},o.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),n=this.y.redMul(e).redMul(t);return this.curve.point(r,n)},o.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},o.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(e),i=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),a=t.y.redMul(r.redMul(this.z)),f=n.redSub(i),s=o.redSub(a);if(0===f.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=f.redSqr(),h=u.redMul(f),c=n.redMul(u),d=s.redSqr().redIAdd(h).redISub(c).redISub(c),l=s.redMul(c.redISub(d)).redISub(o.redMul(h)),p=this.z.redMul(t.z).redMul(f);return this.curve.jpoint(d,l,p)},o.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,n=t.x.redMul(e),i=this.y,o=t.y.redMul(e).redMul(this.z),a=r.redSub(n),f=i.redSub(o);if(0===a.cmpn(0))return 0!==f.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=a.redSqr(),u=s.redMul(a),h=r.redMul(s),c=f.redSqr().redIAdd(u).redISub(h).redISub(h),d=f.redMul(h.redISub(c)).redISub(i.redMul(u)),l=this.z.redMul(a);return this.curve.jpoint(c,d,l)},o.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,r=0;r=0)return!1;if(r.redIAdd(i),0===this.x.cmp(r))return!0}return!1},o.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},o.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,r){\"use strict\";function n(t){\"short\"===t.type?this.curve=new f.curve.short(t):\"edwards\"===t.type?this.curve=new f.curve.edwards(t):this.curve=new f.curve.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function i(t,e){Object.defineProperty(o,t,{configurable:!0,enumerable:!0,get:function(){var r=new n(e);return Object.defineProperty(o,t,{configurable:!0,enumerable:!0,value:r}),r}})}var o=e,a=r(50),f=r(22),s=f.utils.assert;o.PresetCurve=n,i(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:a.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),i(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:a.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),i(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:a.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),i(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:a.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),i(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:a.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),i(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"0\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"9\"]}),i(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:a.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var u;try{u=r(557)}catch(t){u=void 0}i(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:a.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",u]})},function(t,e,r){\"use strict\";function n(t){return this instanceof n?(\"string\"==typeof t&&(f(o.curves.hasOwnProperty(t),\"Unknown curve \"+t),t=o.curves[t]),t instanceof o.curves.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),void(this.hash=t.hash||t.curve.hash)):new n(t)}var i=r(30),o=r(22),a=o.utils,f=a.assert,s=r(551),u=r(552);t.exports=n,n.prototype.keyPair=function(t){return new s(this,t)},n.prototype.keyFromPrivate=function(t,e){return s.fromPrivate(this,t,e)},n.prototype.keyFromPublic=function(t,e){return s.fromPublic(this,t,e)},n.prototype.genKeyPair=function(t){t||(t={});for(var e=new o.hmacDRBG({hash:this.hash,pers:t.pers,entropy:t.entropy||o.rand(this.hash.hmacStrength),nonce:this.n.toArray()}),r=this.n.byteLength(),n=this.n.sub(new i(2));;){var a=new i(e.generate(r));if(!(a.cmp(n)>0))return a.iaddn(1),this.keyFromPrivate(a)}},n.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},n.prototype.sign=function(t,e,r,n){\"object\"==typeof r&&(n=r,r=null),n||(n={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var a=this.n.byteLength(),f=e.getPrivate().toArray(\"be\",a),s=t.toArray(\"be\",a),h=new o.hmacDRBG({hash:this.hash,entropy:f,nonce:s,pers:n.pers,persEnc:n.persEnc}),c=this.n.sub(new i(1)),d=0;!0;d++){var l=n.k?n.k(d):new i(h.generate(this.n.byteLength()));if(l=this._truncateToN(l,!0),!(l.cmpn(1)<=0||l.cmp(c)>=0)){var p=this.g.mul(l);if(!p.isInfinity()){var b=p.getX(),v=b.umod(this.n);if(0!==v.cmpn(0)){var y=l.invm(this.n).mul(v.mul(e.getPrivate()).iadd(t));if(y=y.umod(this.n),0!==y.cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==b.cmp(v)?2:0);return n.canonical&&y.cmp(this.nh)>0&&(y=this.n.sub(y),m^=1),new u({r:v,s:y,recoveryParam:m})}}}}}},n.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n),e=new u(e,\"hex\");var o=e.r,a=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var f=a.invm(this.n),s=f.mul(t).umod(this.n),h=f.mul(o).umod(this.n);if(!this.curve._maxwellTrick){var c=this.g.mulAdd(s,r.getPublic(),h);return!c.isInfinity()&&0===c.getX().umod(this.n).cmp(o)}var c=this.g.jmulAdd(s,r.getPublic(),h);return!c.isInfinity()&&c.eqXToP(o)},n.prototype.recoverPubKey=function(t,e,r,n){f((3&r)===r,\"The recovery param is more than two bits\"),e=new u(e,n);var o=this.n,a=new i(t),s=e.r,h=e.s,c=1&r,d=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error(\"Unable to find sencond key candinate\");s=d?this.curve.pointFromX(s.add(this.curve.n),c):this.curve.pointFromX(s,c);var l=e.r.invm(o),p=o.sub(a).mul(l).umod(o),b=h.mul(l).umod(o);return this.g.mulAdd(p,s,b)},n.prototype.getKeyRecoveryParam=function(t,e,r,n){if(e=new u(e,n),null!==e.recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(t,e,i)}catch(t){continue}if(o.eq(r))return i}throw new Error(\"Unable to find valid recovery factor\")}},function(t,e,r){\"use strict\";function n(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}var i=r(30);t.exports=n,n.fromPublic=function(t,e,r){return e instanceof n?e:new n(t,{pub:e,pubEnc:r})},n.fromPrivate=function(t,e,r){return e instanceof n?e:new n(t,{priv:e,privEnc:r})},n.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:\"Invalid public key\"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},n.prototype.getPublic=function(t,e){return\"string\"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},n.prototype.getPrivate=function(t){return\"hex\"===t?this.priv.toString(16,2):this.priv},n.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},n.prototype._importPublic=function(t,e){return t.x||t.y?void(this.pub=this.ec.curve.point(t.x,t.y)):void(this.pub=this.ec.curve.decodePoint(t,e))},n.prototype.derive=function(t){return t.mul(this.priv).getX()},n.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},n.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},n.prototype.inspect=function(){return\"\"}},function(t,e,r){\"use strict\";function n(t,e){return t instanceof n?t:void(this._importDER(t,e)||(c(t.r&&t.s,\"Signature without r or s\"),this.r=new s(t.r,16),this.s=new s(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam))}function i(){this.place=0}function o(t,e){var r=t[e.place++];if(!(128&r))return r;for(var n=15&r,i=0,o=0,a=e.place;o>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}var s=r(30),u=r(22),h=u.utils,c=h.assert;t.exports=n,n.prototype._importDER=function(t,e){t=h.toArray(t,e);var r=new i;if(48!==t[r.place++])return!1;var n=o(t,r);if(n+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var a=o(t,r),f=t.slice(r.place,a+r.place);if(r.place+=a,2!==t[r.place++])return!1;var u=o(t,r);if(t.length!==u+r.place)return!1;var c=t.slice(r.place,u+r.place);return 0===f[0]&&128&f[1]&&(f=f.slice(1)),0===c[0]&&128&c[1]&&(c=c.slice(1)),this.r=new s(f),this.s=new s(c),this.recoveryParam=null,!0},n.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=a(e),r=a(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,e.length),n=n.concat(e),n.push(2),f(n,r.length);var i=n.concat(r),o=[48];return f(o,i.length),o=o.concat(i),h.encode(o,t)}},function(t,e,r){\"use strict\";function n(t){if(f(\"ed25519\"===t,\"only tested with ed25519 so far\"),!(this instanceof n))return new n(t);var t=o.curves[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}var i=r(50),o=r(22),a=o.utils,f=a.assert,s=a.parseBytes,u=r(554),h=r(555);t.exports=n,n.prototype.sign=function(t,e){t=s(t);var r=this.keyFromSecret(e),n=this.hashInt(r.messagePrefix(),t),i=this.g.mul(n),o=this.encodePoint(i),a=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),f=n.add(a).umod(this.curve.n);return this.makeSignature({R:i,S:f,Rencoded:o})},n.prototype.verify=function(t,e,r){t=s(t),e=this.makeSignature(e);var n=this.keyFromPublic(r),i=this.hashInt(e.Rencoded(),n.pubBytes(),t),o=this.g.mul(e.S()),a=e.R().add(n.pub().mul(i));return a.eq(o)},n.prototype.hashInt=function(){for(var t=this.hash(),e=0;e=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(e,r,i)}var i=r(50),o=r(22),a=o.utils,f=a.assert;t.exports=n,n.prototype._init=function(t,e,r){var n=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(t.concat(r||[])),this.reseed=1},n.prototype.generate=function(t,e,r,n){if(this.reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof e&&(n=r,r=e,e=null),r&&(r=a.toArray(r,n),this._update(r));for(var i=[];i.length>8,a=255&i;o?r.push(o,a):r.push(a)}return r}function i(t){return 1===t.length?\"0\"+t:t}function o(t){for(var e=\"\",r=0;r=0;){var o;if(i.isOdd()){var a=i.andln(n-1);o=a>(n>>1)-1?(n>>1)-a:a,i.isubn(o)}else o=0;r.push(o);for(var f=0!==i.cmpn(0)&&0===i.andln(n-1)?e+1:1,s=1;s0||e.cmpn(-i)>0;){var o=t.andln(3)+n&3,a=e.andln(3)+i&3;3===o&&(o=-1),3===a&&(a=-1);var f;if(0===(1&o))f=0;else{var s=t.andln(7)+n&7;f=3!==s&&5!==s||2!==a?o:-o}r[0].push(f);var u;if(0===(1&a))u=0;else{var s=e.andln(7)+i&7;u=3!==s&&5!==s||2!==o?a:-a}r[1].push(u),2*n===f+1&&(n=1-n),2*i===u+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return r}function s(t,e,r){var n=\"_\"+e;t.prototype[e]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}}function u(t){return\"string\"==typeof t?c.toArray(t,\"hex\"):t}function h(t){return new d(t,\"hex\",\"le\")}var c=e,d=r(30);c.assert=function(t,e){if(!t)throw new Error(e||\"Assertion failed\")},c.toArray=n,c.zero2=i,c.toHex=o,c.encode=function(t,e){return\"hex\"===e?o(t):t},c.getNAF=a,c.getJSF=f,c.cachedProperty=s,c.parseBytes=u,c.intFromLE=h},function(t,e,r){function n(t){this.rand=t}var i;if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},\"object\"==typeof window)window.crypto&&window.crypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.crypto.getRandomValues(e),e}:window.msCrypto&&window.msCrypto.getRandomValues?n.prototype._rand=function(t){var e=new Uint8Array(t);return window.msCrypto.getRandomValues(e),e}:n.prototype._rand=function(){throw new Error(\"Not implemented yet\")};else try{var o=r(610);n.prototype._rand=function(t){return o.randomBytes(t)}}catch(t){n.prototype._rand=function(t){for(var e=new Uint8Array(t),r=0;r=this._delta8){t=this.pending;var r=t.length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=o.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,n[i++]=t>>>16&255,n[i++]=t>>>8&255,n[i++]=255&t}else{n[i++]=255&t,n[i++]=t>>>8&255,n[i++]=t>>>16&255,n[i++]=t>>>24&255,n[i++]=0,n[i++]=0,n[i++]=0,n[i++]=0;for(var o=8;othis.blockSize&&(t=(new this.Hash).update(t).digest()),a(t.length<=this.blockSize);for(var e=t.length;e>>3}function p(t){return R(t,17)^R(t,19)^t>>>10}function b(t,e,r,n){return 0===t?s(e,r,n):1===t||3===t?h(e,r,n):2===t?u(e,r,n):void 0}function v(t,e,r,n,i,o){var a=t&r^~t&i;return a<0&&(a+=4294967296),a}function y(t,e,r,n,i,o){var a=e&n^~e&o;return a<0&&(a+=4294967296),a}function m(t,e,r,n,i,o){var a=t&r^t&i^r&i;return a<0&&(a+=4294967296),a}function g(t,e,r,n,i,o){var a=e&n^e&o^n&o;return a<0&&(a+=4294967296),a}function w(t,e){var r=N(t,e,28),n=N(e,t,2),i=N(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function _(t,e){var r=L(t,e,28),n=L(e,t,2),i=L(e,t,7),o=r^n^i;return o<0&&(o+=4294967296),o}function M(t,e){var r=N(t,e,14),n=N(t,e,18),i=N(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function S(t,e){var r=L(t,e,14),n=L(t,e,18),i=L(e,t,9),o=r^n^i;return o<0&&(o+=4294967296),o}function E(t,e){var r=N(t,e,1),n=N(t,e,8),i=U(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function A(t,e){var r=L(t,e,1),n=L(t,e,8),i=z(t,e,7),o=r^n^i;return o<0&&(o+=4294967296),o}function k(t,e){var r=N(t,e,19),n=N(e,t,29),i=U(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}function x(t,e){var r=L(t,e,19),n=L(e,t,29),i=z(t,e,6),o=r^n^i;return o<0&&(o+=4294967296),o}var I=r(50),B=I.utils,O=B.assert,R=B.rotr32,P=B.rotl32,T=B.sum32,j=B.sum32_4,C=B.sum32_5,N=B.rotr64_hi,L=B.rotr64_lo,U=B.shr64_hi,z=B.shr64_lo,D=B.sum64,q=B.sum64_hi,F=B.sum64_lo,K=B.sum64_4_hi,G=B.sum64_4_lo,V=B.sum64_5_hi,H=B.sum64_5_lo,X=I.common.BlockHash,Y=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],W=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],Z=[1518500249,1859775393,2400959708,3395469782];B.inherits(n,X),e.sha256=n,n.blockSize=512,n.outSize=256,n.hmacStrength=192,n.padLength=64,n.prototype._update=function(t,e){for(var r=this.W,n=0;n<16;n++)r[n]=t[e+n];for(;n>8,a=255&i;o?r.push(o,a):r.push(a)}else for(var n=0;n>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24;return e>>>0}function a(t,e){for(var r=\"\",n=0;n>>0}return o}function h(t,e){for(var r=new Array(4*t.length),n=0,i=0;n>>24,r[i+1]=o>>>16&255,r[i+2]=o>>>8&255,r[i+3]=255&o):(r[i+3]=o>>>24,r[i+2]=o>>>16&255,r[i+1]=o>>>8&255,r[i]=255&o)}return r}function c(t,e){return t>>>e|t<<32-e}function d(t,e){return t<>>32-e}function l(t,e){return t+e>>>0}function p(t,e,r){return t+e+r>>>0}function b(t,e,r,n){return t+e+r+n>>>0}function v(t,e,r,n,i){return t+e+r+n+i>>>0}function y(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function m(t,e,r,n){var i=t[e],o=t[e+1],a=n+o>>>0,f=(a>>0,t[e+1]=a}function g(t,e,r,n){var i=e+n>>>0,o=(i>>0}function w(t,e,r,n){var i=e+n;return i>>>0}function _(t,e,r,n,i,o,a,f){var s=0,u=e;u=u+n>>>0,s+=u>>0,s+=u>>0,s+=u>>0}function M(t,e,r,n,i,o,a,f){var s=e+n+o+f;return s>>>0}function S(t,e,r,n,i,o,a,f,s,u){var h=0,c=e;c=c+n>>>0,h+=c>>0,h+=c>>0,h+=c>>0,h+=c>>0}function E(t,e,r,n,i,o,a,f,s,u){var h=e+n+o+f+u;return h>>>0}function A(t,e,r){var n=e<<32-r|t>>>r;return n>>>0}function k(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}function x(t,e,r){return t>>>r}function I(t,e,r){var n=t<<32-r|e>>>r;return n>>>0}var B=e,O=r(2);B.toArray=n,B.toHex=i,B.htonl=o,B.toHex32=a,B.zero2=f,B.zero8=s,B.join32=u,B.split32=h,B.rotr32=c,B.rotl32=d,B.sum32=l,B.sum32_3=p,B.sum32_4=b,B.sum32_5=v,B.assert=y,B.inherits=O,e.sum64=m,e.sum64_hi=g,e.sum64_lo=w,e.sum64_4_hi=_,e.sum64_4_lo=M,e.sum64_5_hi=S,e.sum64_5_lo=E,e.rotr64_hi=A,e.rotr64_lo=k,e.shr64_hi=x,e.shr64_lo=I},function(t,e,r){\"use strict\";(function(t){function r(e,r){if(e.length%o!==0){var n=e.length+(o-e.length%o);e=t.concat([e,a],n)}for(var i=[],f=r?e.readInt32BE:e.readInt32LE,s=0;s>>5]|=t[r]<<24-n%32;return e}function n(t){for(var e=[],r=0;r<32*t.length;r+=8)e.push(t[r>>>5]>>>24-r%32&255);return e}function i(t,e,r){for(var n=0;n<16;n++){var i=r+n,c=e[i];e[i]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}var m,g,w,_,M,S,E,A,k,x;S=m=t[0],E=g=t[1],A=w=t[2],k=_=t[3],x=M=t[4];var I;for(n=0;n<80;n+=1)I=m+e[r+d[n]]|0,I+=n<16?o(g,w,_)+v[0]:n<32?a(g,w,_)+v[1]:n<48?f(g,w,_)+v[2]:n<64?s(g,w,_)+v[3]:u(g,w,_)+v[4],I|=0,I=h(I,p[n]),I=I+M|0,m=M,M=_,_=h(w,10),w=g,g=I,I=S+e[r+l[n]]|0,I+=n<16?u(E,A,k)+y[0]:n<32?s(E,A,k)+y[1]:n<48?f(E,A,k)+y[2]:n<64?a(E,A,k)+y[3]:o(E,A,k)+y[4],I|=0,I=h(I,b[n]),I=I+x|0,S=x,x=k,k=h(A,10),A=E,E=I;I=t[1]+w+k|0,t[1]=t[2]+_+x|0,t[2]=t[3]+M+S|0,t[3]=t[4]+m+E|0,t[4]=t[0]+g+A|0,t[0]=I}function o(t,e,r){return t^e^r}function a(t,e,r){return t&e|~t&r}function f(t,e,r){return(t|~e)^r}function s(t,e,r){return t&r|e&~r}function u(t,e,r){return t^(e|~r)}function h(t,e){return t<>>32-e}function c(t){var o=[1732584193,4023233417,2562383102,271733878,3285377520];\"string\"==typeof t&&(t=new e(t,\"utf8\"));var a=r(t),f=8*t.length,s=8*t.length;a[f>>>5]|=128<<24-f%32,a[(f+64>>>9<<4)+14]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8);for(var u=0;u>>24)|4278255360&(h<<24|h>>>8)}var c=n(o);return new e(c)}/** @preserve\n(c) 2012 by Cédric Mesnil. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nvar d=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],l=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],p=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],v=[0,1518500249,1859775393,2400959708,2840853838],y=[1352829926,1548603684,1836072691,2053994217,0];t.exports=c}).call(e,r(1).Buffer)},function(t,e,r){var e=t.exports=function(t){t=t.toLowerCase();var r=e[t];if(!r)throw new Error(t+\" is not supported (we accept pull requests)\");return new r};e.sha=r(569),e.sha1=r(570),e.sha224=r(571),e.sha256=r(227),e.sha384=r(572),e.sha512=r(228)},function(t,e,r){(function(e){function n(){this.init(),this._w=h,s.call(this,64,56)}function i(t){return t<<5|t>>>27}function o(t){return t<<30|t>>>2}function a(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var f=r(2),s=r(60),u=[1518500249,1859775393,-1894007588,-899497514],h=new Array(80);f(n,s),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,f=0|this._c,s=0|this._d,h=0|this._e,c=0;c<16;++c)e[c]=t.readInt32BE(4*c);for(;c<80;++c)e[c]=e[c-3]^e[c-8]^e[c-14]^e[c-16];for(var d=0;d<80;++d){var l=~~(d/20),p=i(r)+a(l,n,f,s)+h+e[d]+u[l]|0;h=s,s=f,f=o(n),n=r,r=p}this._a=r+this._a|0,this._b=n+this._b|0,this._c=f+this._c|0,this._d=s+this._d|0,this._e=h+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=c,u.call(this,64,56)}function i(t){return t<<1|t>>>31}function o(t){return t<<5|t>>>27}function a(t){return t<<30|t>>>2}function f(t,e,r,n){return 0===t?e&r|~e&n:2===t?e&r|e&n|r&n:e^r^n}var s=r(2),u=r(60),h=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);s(n,u),n.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},n.prototype._update=function(t){for(var e=this._w,r=0|this._a,n=0|this._b,s=0|this._c,u=0|this._d,c=0|this._e,d=0;d<16;++d)e[d]=t.readInt32BE(4*d);for(;d<80;++d)e[d]=i(e[d-3]^e[d-8]^e[d-14]^e[d-16]);for(var l=0;l<80;++l){var p=~~(l/20),b=o(r)+f(p,n,s,u)+c+e[l]+h[p]|0;c=u,u=s,s=a(n),n=r,r=b}this._a=r+this._a|0,this._b=n+this._b|0,this._c=s+this._c|0,this._d=u+this._d|0,this._e=c+this._e|0},n.prototype._hash=function(){var t=new e(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,64,56)}var i=r(2),o=r(227),a=r(60),f=new Array(64);i(n,o),n.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},n.prototype._hash=function(){var t=new e(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(){this.init(),this._w=f,a.call(this,128,112)}var i=r(2),o=r(228),a=r(60),f=new Array(160);i(n,o),n.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},n.prototype._hash=function(){function t(t,e,n){r.writeInt32BE(t,n),r.writeInt32BE(e,n+4)}var r=new e(48);return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),r},t.exports=n}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e){var r=new t(a[e].prime,\"hex\"),n=new t(a[e].gen,\"hex\");return new f(r,n)}function i(e,r,n,a){return t.isBuffer(r)||void 0===s[r]?i(e,\"binary\",r,n):(r=r||\"binary\",a=a||\"binary\",n=n||new t([2]),t.isBuffer(n)||(n=new t(n,a)),\"number\"==typeof e?new f(o(e,n),n,!0):(t.isBuffer(e)||(e=new t(e,r)),new f(e,n,!0)))}var o=r(229),a=r(468),f=r(574),s={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=n,e.createDiffieHellman=e.DiffieHellman=i}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){return r=r||\"utf8\",e.isBuffer(t)||(t=new e(t,r)),this._pub=new s(t),this}function i(t,r){return r=r||\"utf8\",e.isBuffer(t)||(t=new e(t,r)),this._priv=new s(t),this}function o(t,e){var r=e.toString(\"hex\"),n=[r,t.toString(16)].join(\"_\");if(n in m)return m[n];var i=0;if(t.isEven()||!v.simpleSieve||!v.fermatTest(t)||!h.test(t))return i+=1,i+=\"02\"===r||\"05\"===r?8:4,m[n]=i,i;h.test(t.shrn(1))||(i+=2);var o;switch(r){case\"02\":t.mod(c).cmp(d)&&(i+=8);break;case\"05\":o=t.mod(l),o.cmp(p)&&o.cmp(b)&&(i+=8);break;default:i+=4}return m[n]=i,i}function a(t,e,r){this.setGenerator(e),this.__prime=new s(t),this._prime=s.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=n,this.setPrivateKey=i):this._primeCode=8}function f(t,r){var n=new e(t.toArray());return r?n.toString(r):n}var s=r(150),u=r(230),h=new u,c=new s(24),d=new s(11),l=new s(10),p=new s(3),b=new s(7),v=r(229),y=r(61);t.exports=a;var m={};Object.defineProperty(a.prototype,\"verifyError\",{enumerable:!0,get:function(){return\"number\"!=typeof this._primeCode&&(this._primeCode=o(this.__prime,this.__gen)),this._primeCode}}),a.prototype.generateKeys=function(){return this._priv||(this._priv=new s(y(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},a.prototype.computeSecret=function(t){t=new s(t),t=t.toRed(this._prime);var r=t.redPow(this._priv).fromRed(),n=new e(r.toArray()),i=this.getPrime();if(n.lengthr||e!==e)throw new TypeError(\"Bad key length\")}},function(t,e,r){e.publicEncrypt=r(593),e.privateDecrypt=r(592),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},function(t,e,r){var n=r(106),i=n.define(\"RSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())});e.RSAPrivateKey=i;var o=n.define(\"RSAPublicKey\",function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())});e.RSAPublicKey=o;var a=n.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(f),this.key(\"subjectPublicKey\").bitstr())});e.PublicKey=a;var f=n.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}),s=n.define(\"PrivateKeyInfo\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(f),this.key(\"subjectPrivateKey\").octstr())});e.PrivateKey=s;var u=n.define(\"EncryptedPrivateKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())});e.EncryptedPrivateKey=u;var h=n.define(\"DSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())});e.DSAPrivateKey=h,e.DSAparam=n.define(\"DSAparam\",function(){this.int()});var c=n.define(\"ECPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(d),this.key(\"publicKey\").optional().explicit(1).bitstr())});e.ECPrivateKey=c;var d=n.define(\"ECParameters\",function(){this.choice({namedCurve:this.objid()})});e.signature=n.define(\"signature\",function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())})},function(t,e,r){(function(e){var n=/Proc-Type: 4,ENCRYPTED\\r?\\nDEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\\r?\\n\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n/m,i=/^-----BEGIN (.*) KEY-----\\r?\\n/m,o=/^-----BEGIN (.*) KEY-----\\r?\\n([0-9A-z\\n\\r\\+\\/\\=]+)\\r?\\n-----END \\1 KEY-----$/m,a=r(153),f=r(239);t.exports=function(t,r){var s,u=t.toString(),h=u.match(n);if(h){var c=\"aes\"+h[1],d=new e(h[2],\"hex\"),l=new e(h[3].replace(/\\r?\\n/g,\"\"),\"base64\"),p=a(r,d.slice(0,8),parseInt(h[1],10)).key,b=[],v=f.createDecipheriv(c,p,d);b.push(v.update(l)),b.push(v.final()),s=e.concat(b)}else{var y=u.match(o);s=new e(y[2].replace(/\\r?\\n/g,\"\"),\"base64\")}var m=u.match(i)[1]+\" KEY\";return{tag:m,data:s}}}).call(e,r(1).Buffer)},function(t,e,r){function n(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}var i=r(106),o=r(2),a=e;a.define=function(t,e){return new n(t,e)},n.prototype._createNamed=function(t){var e;try{e=r(251).runInThisContext(\"(function \"+this.name+\"(entity) {\\n this._initNamed(entity);\\n})\")}catch(t){e=function(t){this._initNamed(t)}}return o(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},n.prototype._getDecoder=function(t){return t=t||\"der\",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(i.decoders[t])),this.decoders[t]},n.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},n.prototype._getEncoder=function(t){return t=t||\"der\",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i.encoders[t])),this.encoders[t]},n.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},function(t,e,r){function n(t,e){var r={};this._baseState=r,r.enc=t,r.parent=e||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}var i=r(71).Reporter,o=r(71).EncoderBuffer,a=r(71).DecoderBuffer,f=r(588),s=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],u=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(s),h=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];t.exports=n;var c=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];n.prototype.clone=function(){var t=this._baseState,e={};c.forEach(function(r){e[r]=t[r]});var r=new this.constructor(e.parent);return r._baseState=e,r},n.prototype._wrap=function(){var t=this._baseState;u.forEach(function(e){this[e]=function(){var r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}},this)},n.prototype._init=function(t){var e=this._baseState;f(null===e.parent),t.call(this),e.children=e.children.filter(function(t){return t._baseState.parent===this},this),f.equal(e.children.length,1,\"Root node can have only one child\")},n.prototype._useArgs=function(t){var e=this._baseState,r=t.filter(function(t){return t instanceof this.constructor},this);t=t.filter(function(t){return!(t instanceof this.constructor)},this),0!==r.length&&(f(null===e.children),e.children=r,r.forEach(function(t){t._baseState.parent=this},this)),0!==t.length&&(f(null===e.args),e.args=t,e.reverseArgs=t.map(function(t){if(\"object\"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach(function(r){r==(0|r)&&(r|=0);var n=t[r];e[n]=r}),e}))},h.forEach(function(t){n.prototype[t]=function(){var e=this._baseState;throw new Error(t+\" not implemented for encoding: \"+e.enc)}}),s.forEach(function(t){n.prototype[t]=function(){var e=this._baseState,r=Array.prototype.slice.call(arguments);return f(null===e.tag),e.tag=t,this._useArgs(r),this}}),n.prototype.use=function(t){var e=this._baseState;return f(null===e.use),e.use=t,this},n.prototype.optional=function(){var t=this._baseState;return t.optional=!0,this},n.prototype.def=function(t){var e=this._baseState;return f(null===e.default),e.default=t,e.optional=!0,this},n.prototype.explicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.explicit=t,this},n.prototype.implicit=function(t){var e=this._baseState;return f(null===e.explicit&&null===e.implicit),e.implicit=t,this},n.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},n.prototype.key=function(t){var e=this._baseState;return f(null===e.key),e.key=t,this},n.prototype.any=function(){var t=this._baseState;return t.any=!0,this},n.prototype.choice=function(t){var e=this._baseState;return f(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map(function(e){return t[e]})),this},n.prototype.contains=function(t){var e=this._baseState;return f(null===e.use),e.contains=t,this},n.prototype._decode=function(t,e){var r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));var n=r.default,i=!0,o=null;if(null!==r.key&&(o=t.enterKey(r.key)),r.optional){var f=null;if(null!==r.explicit?f=r.explicit:null!==r.implicit?f=r.implicit:null!==r.tag&&(f=r.tag),null!==f||r.any){if(i=this._peekTag(t,f,r.any),t.isError(i))return i}else{var s=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),i=!0}catch(t){i=!1}t.restore(s)}}var u;if(r.obj&&i&&(u=t.enterObject()),i){if(null!==r.explicit){var h=this._decodeTag(t,r.explicit);if(t.isError(h))return h;t=h}var c=t.offset;if(null===r.use&&null===r.choice){if(r.any)var s=t.save();var d=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(d))return d;r.any?n=t.raw(s):t=d}if(e&&e.track&&null!==r.tag&&e.track(t.path(),c,t.length,\"tagged\"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,\"content\"),n=r.any?n:null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach(function(r){r._decode(t,e)}),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){var l=new a(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(l,e)}}return r.obj&&i&&(n=t.leaveObject(u)),null===r.key||null===n&&i!==!0?null!==o&&t.exitKey(o):t.leaveKey(o,r.key,n),n},n.prototype._decodeGeneric=function(t,e,r){var n=this._baseState;return\"seq\"===t||\"set\"===t?null:\"seqof\"===t||\"setof\"===t?this._decodeList(e,t,n.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):\"objid\"===t&&n.args?this._decodeObjid(e,n.args[0],n.args[1],r):\"objid\"===t?this._decodeObjid(e,null,null,r):\"gentime\"===t||\"utctime\"===t?this._decodeTime(e,t,r):\"null_\"===t?this._decodeNull(e,r):\"bool\"===t?this._decodeBool(e,r):\"int\"===t||\"enum\"===t?this._decodeInt(e,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,e._reporterState.obj)._decode(e,r):e.error(\"unknown tag: \"+t)},n.prototype._getUse=function(t,e){var r=this._baseState;return r.useDecoder=this._use(t,e),f(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},n.prototype._decodeChoice=function(t,e){var r=this._baseState,n=null,i=!1;return Object.keys(r.choice).some(function(o){var a=t.save(),f=r.choice[o];try{var s=f._decode(t,e);if(t.isError(s))return!1;n={type:o,value:s},i=!0}catch(e){return t.restore(a),!1}return!0},this),i?n:t.error(\"Choice not matched\")},n.prototype._createEncoderBuffer=function(t){return new o(t,this.reporter)},n.prototype._encode=function(t,e,r){var n=this._baseState;if(null===n.default||n.default!==t){var i=this._encodeValue(t,e,r);if(void 0!==i&&!this._skipDefault(i,e,r))return i}},n.prototype._encodeValue=function(t,e,r){var n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);var o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}var a=null,f=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)a=this._getUse(n.contains,r)._encode(t,e),f=!0;else if(n.children)a=n.children.map(function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error(\"Child should have a key\");var n=e.enterKey(r._baseState.key);if(\"object\"!=typeof t)return e.error(\"Child expected, but input is not object\");var i=r._encode(t[r._baseState.key],e,t);return e.leaveKey(n),i},this).filter(function(t){return t}),a=this._createEncoderBuffer(a);else if(\"seqof\"===n.tag||\"setof\"===n.tag){if(!n.args||1!==n.args.length)return e.error(\"Too many args for : \"+n.tag);if(!Array.isArray(t))return e.error(\"seqof/setof, but data is not Array\");var s=this.clone();s._baseState.implicit=null,a=this._createEncoderBuffer(t.map(function(r){var n=this._baseState;return this._getUse(n.args[0],t)._encode(r,e)},s))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(a=this._encodePrimitive(n.tag,t),f=!0);var o;if(!n.any&&null===n.choice){var u=null!==n.implicit?n.implicit:n.tag,h=null===n.implicit?\"universal\":\"context\";null===u?null===n.use&&e.error(\"Tag could be ommited only for .use()\"):null===n.use&&(o=this._encodeComposite(u,f,h,a))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,\"context\",o)),o},n.prototype._encodeChoice=function(t,e){var r=this._baseState,n=r.choice[t.type];return n||f(!1,t.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(t.value,e)},n.prototype._encodePrimitive=function(t,e){var r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if(\"objid\"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if(\"objid\"===t)return this._encodeObjid(e,null,null);if(\"gentime\"===t||\"utctime\"===t)return this._encodeTime(e,t);if(\"null_\"===t)return this._encodeNull();if(\"int\"===t||\"enum\"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if(\"bool\"===t)return this._encodeBool(e);throw new Error(\"Unsupported tag: \"+t)},n.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},n.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(t)}},function(t,e,r){function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function i(t,e){this.path=t,this.rethrow(e)}var o=r(2);e.Reporter=n,n.prototype.isError=function(t){return t instanceof i},n.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){var n=this._reporterState;this.exitKey(t),null!==n.obj&&(n.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join(\"/\")},n.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){var e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){var e,r=this._reporterState,n=t instanceof i;if(e=n?t:new i(r.path.map(function(t){return\"[\"+JSON.stringify(t)+\"]\"}).join(\"\"),t.message||t,t.stack),!r.options.partial)throw e;return n||r.errors.push(e),e},n.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},o(i,Error),i.prototype.rethrow=function(t){if(this.message=t+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,r){var n=r(235);e.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},e.tagClassByName=n._reverse(e.tagClass),e.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},e.tagByName=n._reverse(e.tag)},function(t,e,r){var n=e;n.der=r(236),n.pem=r(585)},function(t,e,r){function n(t){a.call(this,t),this.enc=\"pem\"}var i=r(2),o=r(1).Buffer,a=r(236);i(n,a),t.exports=n,n.prototype.decode=function(t,e){for(var r=t.toString().split(/[\\r\\n]+/g),n=e.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,f=-1,s=-1,u=0;u16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},i.prototype.flush=function(){if(this.cache.length)return this.cache};var b={ECB:r(244),CBC:r(240),CFB:r(241),CFB8:r(243),CFB1:r(242),OFB:r(245),CTR:r(108),GCM:r(108)};e.createDecipher=f,e.createDecipheriv=a}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function n(e,r,o){return this instanceof n?(s.call(this),this._cache=new i,this._cipher=new f.AES(r),this._prev=new t(o.length),o.copy(this._prev),this._mode=e,void(this._autopadding=!0)):new n(e,r,o)}function i(){return this instanceof i?void(this.cache=new t(\"\")):new i}function o(e,r,i){var o=h[e.toLowerCase()];if(!o)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof i&&(i=new t(i)),\"string\"==typeof r&&(r=new t(r)),r.length!==o.key/8)throw new TypeError(\"invalid key length \"+r.length);if(i.length!==o.iv)throw new TypeError(\"invalid iv length \"+i.length);return\"stream\"===o.type?new d(p[o.mode],r,i):\"auth\"===o.type?new l(p[o.mode],r,i):new n(p[o.mode],r,i)}function a(t,e){var r=h[t.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(e,!1,r.key,r.iv);return o(t,n.key,n.iv)}var f=r(107),s=r(109),u=r(2),h=r(152),c=r(153),d=r(246),l=r(238);u(n,s),n.prototype._update=function(e){this._cache.add(e);for(var r,n,i=[];r=this._cache.get();)n=this._mode.encrypt(this,r),i.push(n);return t.concat(i)},n.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(\"10101010101010101010101010101010\"!==t.toString(\"hex\"))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},n.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},i.prototype.add=function(e){this.cache=t.concat([this.cache,e])},i.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},i.prototype.flush=function(){for(var e=16-this.cache.length,r=new t(e),n=-1;++ns||t<0?(r=Math.abs(t)%s,t<0?s-r:r):t}function a(t,e){return[t[0]^e[0],t[1]^e[1],t[2]^e[2],t[3]^e[3]]}var f=new e(16);f.fill(0),t.exports=r,r.prototype.ghash=function(t){for(var e=-1;++e0;t--)o[t]=o[t]>>>1|(1&o[t-1])<<31;o[0]=o[0]>>>1,r&&(o[0]=o[0]^225<<24)}this.state=i(f)},r.prototype.update=function(t){this.cache=e.concat([this.cache,t]);for(var r;this.cache.length>=16;)r=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(r)},r.prototype.final=function(t,r){return this.cache.length&&this.ghash(e.concat([this.cache,f],16)),this.ghash(i([0,t,0,r])),this.state};var s=Math.pow(2,32)}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=(t.modulus,t.modulus.byteLength()),i=(r.length,c(\"sha1\").update(new e(\"\")).digest()),a=i.length;if(0!==r[0])throw new Error(\"decryption error\");var u=r.slice(1,a+1),h=r.slice(a+1),d=s(u,f(h,a)),l=s(h,f(d,n-a-1));if(o(i,l.slice(0,a)))throw new Error(\"decryption error\");for(var p=a;0===l[p];)p++;if(1!==l[p++])throw new Error(\"decryption error\");return l.slice(p)}function i(t,e,r){for(var n=e.slice(0,2),i=2,o=0;0!==e[i++];)if(i>=e.length){o++;break}var a=e.slice(2,i-1);e.slice(i-1,i);if((\"0002\"!==n.toString(\"hex\")&&!r||\"0001\"!==n.toString(\"hex\")&&r)&&o++,a.length<8&&o++,o)throw new Error(\"decryption error\");return e.slice(i)}function o(t,r){t=new e(t),r=new e(r);var n=0,i=t.length;t.length!==r.length&&(n++,i=Math.min(t.length,r.length));for(var o=-1;++oc||new u(r).cmp(s.modulus)>=0)throw new Error(\"decryption error\");var l;l=o?d(new u(r),s):h(r,s);var p=new e(c-l.length);if(p.fill(0),l=e.concat([p,l],c),4===f)return n(s,l);if(1===f)return i(s,l,o);if(3===f)return l;throw new Error(\"unknown padding\")}}).call(e,r(1).Buffer)},function(t,e,r){(function(e){function n(t,r){var n=t.modulus.byteLength(),i=r.length,o=s(\"sha1\").update(new e(\"\")).digest(),a=o.length,d=2*a;if(i>n-d-2)throw new Error(\"message too long\");var l=new e(n-i-d-2);l.fill(0);var p=n-a-1,b=f(a),v=h(e.concat([o,l,new e([1]),r],p),u(b,p)),y=h(b,u(v,a));return new c(e.concat([new e([0]),y,v],n))}function i(t,r,n){var i=r.length,a=t.modulus.byteLength();if(i>a-11)throw new Error(\"message too long\");var f;return n?(f=new e(a-i-3),f.fill(255)):f=o(a-i-3),new c(e.concat([new e([0,n?1:2]),f,new e([0]),r],a))}function o(t,r){for(var n,i=new e(t),o=0,a=f(2*t),s=0;o=0)throw new Error(\"data too long for modulus\")}return r?l(f,s):d(f,s)}}).call(e,r(1).Buffer)},function(t,e,r){(function(t){function r(t,e){for(var r=0,n=t.length-1;n>=0;n--){var i=t[n];\".\"===i?t.splice(n,1):\"..\"===i?(t.splice(n,1),\nr++):r&&(t.splice(n,1),r--)}if(e)for(;r--;r)t.unshift(\"..\");return t}function n(t,e){if(t.filter)return t.filter(e);for(var r=[],n=0;n=-1&&!i;o--){var a=o>=0?arguments[o]:t.cwd();if(\"string\"!=typeof a)throw new TypeError(\"Arguments to path.resolve must be strings\");a&&(e=a+\"/\"+e,i=\"/\"===a.charAt(0))}return e=r(n(e.split(\"/\"),function(t){return!!t}),!i).join(\"/\"),(i?\"/\":\"\")+e||\".\"},e.normalize=function(t){var i=e.isAbsolute(t),o=\"/\"===a(t,-1);return t=r(n(t.split(\"/\"),function(t){return!!t}),!i).join(\"/\"),t||i||(t=\".\"),t&&o&&(t+=\"/\"),(i?\"/\":\"\")+t},e.isAbsolute=function(t){return\"/\"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(n(t,function(t,e){if(\"string\"!=typeof t)throw new TypeError(\"Arguments to path.join must be strings\");return t}).join(\"/\"))},e.relative=function(t,r){function n(t){for(var e=0;e=0&&\"\"===t[r];r--);return e>r?[]:t.slice(e,r-e+1)}t=e.resolve(t).substr(1),r=e.resolve(r).substr(1);for(var i=n(t.split(\"/\")),o=n(r.split(\"/\")),a=Math.min(i.length,o.length),f=a,s=0;s0?this.tail.next=e:this.head=e,this.tail=e,++this.length},n.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},n.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},n.prototype.clear=function(){this.head=this.tail=null,this.length=0},n.prototype.join=function(t){if(0===this.length)return\"\";for(var e=this.head,r=\"\"+e.data;e=e.next;)r+=t+e.data;return r},n.prototype.concat=function(t){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var e=i.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return\"[object Array]\"==r.call(t)}},function(t,e,r){(function(e){function r(t,e){function r(){if(!i){if(n(\"throwDeprecation\"))throw new Error(e);n(\"traceDeprecation\")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(n(\"noDeprecation\"))return t;var i=!1;return r}function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var r=e.localStorage[t];return null!=r&&\"true\"===String(r).toLowerCase()}t.exports=r}).call(e,r(39))},function(t,e,r){t.exports=r(249)},function(t,e,r){(function(n){var i=function(){try{return r(31)}catch(t){}}();e=t.exports=r(250),e.Stream=i||e,e.Readable=e,e.Writable=r(155),e.Duplex=r(51),e.Transform=r(154),e.PassThrough=r(249),!n.browser&&\"disable\"===n.env.READABLE_STREAM&&i&&(t.exports=i)}).call(e,r(26))},function(t,e,r){t.exports=r(154)},function(t,e,r){t.exports=r(155)},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){\"function\"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},function(t,e){t.exports=function(t){return t&&\"object\"==typeof t&&\"function\"==typeof t.copy&&\"function\"==typeof t.fill&&\"function\"==typeof t.readUInt8}},function(t,e,r){(function(t,n){function i(t,r){var n={seen:[],stylize:a};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),b(r)?n.showHidden=r:r&&e._extend(n,r),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),s(n,t,n.depth)}function o(t,e){var r=i.styles[e];return r?\"\u001b[\"+i.colors[r][0]+\"m\"+t+\"\u001b[\"+i.colors[r][1]+\"m\":t}function a(t,e){return t}function f(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}function s(t,r,n){if(t.customInspect&&r&&k(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,t);return g(i)||(i=s(t,i,n)),i}var o=u(t,r);if(o)return o;var a=Object.keys(r),b=f(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(r)),A(r)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0))return h(r);if(0===a.length){if(k(r)){var v=r.name?\": \"+r.name:\"\";return t.stylize(\"[Function\"+v+\"]\",\"special\")}if(M(r))return t.stylize(RegExp.prototype.toString.call(r),\"regexp\");if(E(r))return t.stylize(Date.prototype.toString.call(r),\"date\");if(A(r))return h(r)}var y=\"\",m=!1,w=[\"{\",\"}\"];if(p(r)&&(m=!0,w=[\"[\",\"]\"]),k(r)){var _=r.name?\": \"+r.name:\"\";y=\" [Function\"+_+\"]\"}if(M(r)&&(y=\" \"+RegExp.prototype.toString.call(r)),E(r)&&(y=\" \"+Date.prototype.toUTCString.call(r)),A(r)&&(y=\" \"+h(r)),0===a.length&&(!m||0==r.length))return w[0]+y+w[1];if(n<0)return M(r)?t.stylize(RegExp.prototype.toString.call(r),\"regexp\"):t.stylize(\"[Object]\",\"special\");t.seen.push(r);var S;return S=m?c(t,r,n,b,a):a.map(function(e){return d(t,r,n,b,e,m)}),t.seen.pop(),l(S,y,w)}function u(t,e){if(_(e))return t.stylize(\"undefined\",\"undefined\");if(g(e)){var r=\"'\"+JSON.stringify(e).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return t.stylize(r,\"string\")}return m(e)?t.stylize(\"\"+e,\"number\"):b(e)?t.stylize(\"\"+e,\"boolean\"):v(e)?t.stylize(\"null\",\"null\"):void 0}function h(t){return\"[\"+Error.prototype.toString.call(t)+\"]\"}function c(t,e,r,n,i){for(var o=[],a=0,f=e.length;a-1&&(f=o?f.split(\"\\n\").map(function(t){return\" \"+t}).join(\"\\n\").substr(2):\"\\n\"+f.split(\"\\n\").map(function(t){return\" \"+t}).join(\"\\n\"))):f=t.stylize(\"[Circular]\",\"special\")),_(a)){if(o&&i.match(/^\\d+$/))return f;a=JSON.stringify(\"\"+i),a.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(a=a.substr(1,a.length-2),a=t.stylize(a,\"name\")):(a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),a=t.stylize(a,\"string\"))}return a+\": \"+f}function l(t,e,r){var n=0,i=t.reduce(function(t,e){return n++,e.indexOf(\"\\n\")>=0&&n++,t+e.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0);return i>60?r[0]+(\"\"===e?\"\":e+\"\\n \")+\" \"+t.join(\",\\n \")+\" \"+r[1]:r[0]+e+\" \"+t.join(\", \")+\" \"+r[1]}function p(t){return Array.isArray(t)}function b(t){return\"boolean\"==typeof t}function v(t){return null===t}function y(t){return null==t}function m(t){return\"number\"==typeof t}function g(t){return\"string\"==typeof t}function w(t){return\"symbol\"==typeof t}function _(t){return void 0===t}function M(t){return S(t)&&\"[object RegExp]\"===I(t)}function S(t){return\"object\"==typeof t&&null!==t}function E(t){return S(t)&&\"[object Date]\"===I(t)}function A(t){return S(t)&&(\"[object Error]\"===I(t)||t instanceof Error)}function k(t){return\"function\"==typeof t}function x(t){return null===t||\"boolean\"==typeof t||\"number\"==typeof t||\"string\"==typeof t||\"symbol\"==typeof t||\"undefined\"==typeof t}function I(t){return Object.prototype.toString.call(t)}function B(t){return t<10?\"0\"+t.toString(10):t.toString(10)}function O(){var t=new Date,e=[B(t.getHours()),B(t.getMinutes()),B(t.getSeconds())].join(\":\");return[t.getDate(),C[t.getMonth()],e].join(\" \")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var P=/%[sdj%]/g;e.format=function(t){if(!g(t)){for(var e=[],r=0;r=o)return t;switch(t){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(t){return\"[Circular]\"}default:return t}}),f=n[r];r> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ieee754/index.js\n// module id = 46\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/isarray/index.js\n// module id = 47\n// module chunks = 0","/**\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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/js-sha3/src/sha3.js\n// module id = 48\n// module chunks = 0","var json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/json-stable-stringify/index.js\n// module id = 49\n// module chunks = 0","exports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/jsonify/index.js\n// module id = 50\n// module chunks = 0","var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/jsonify/lib/parse.js\n// module id = 51\n// module chunks = 0","var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/jsonify/lib/stringify.js\n// module id = 52\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 53\n// module chunks = 0","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar 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 crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n mlen = n;\n return mlen;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n var t, i;\n for (i = 0; i < arguments.length; i++) {\n if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]')\n throw new TypeError('unexpected type ' + t + ', use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\n// TODO: Completely remove this in v0.15.\nif (!nacl.util) {\n nacl.util = {};\n nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() {\n throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js');\n };\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return false;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n if (arguments.length !== 2)\n throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?');\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/tweetnacl/nacl-fast.js\n// module id = 54\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/node/index.js b/dist/node/index.js new file mode 100644 index 0000000..f34cfbd --- /dev/null +++ b/dist/node/index.js @@ -0,0 +1,281 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _extends2 = require('babel-runtime/helpers/extends'); + +var _extends3 = _interopRequireDefault(_extends2); + +exports.Ed25519Keypair = Ed25519Keypair; +exports.makeEd25519Condition = makeEd25519Condition; +exports.makeOutput = makeOutput; +exports.makeCreateTransaction = makeCreateTransaction; +exports.makeTransferTransaction = makeTransferTransaction; +exports.signTransaction = signTransaction; + +var _buffer = require('buffer'); + +var _bs = require('bs58'); + +var _bs2 = _interopRequireDefault(_bs); + +var _clone = require('clone'); + +var _clone2 = _interopRequireDefault(_clone); + +var _fiveBellsCondition = require('five-bells-condition'); + +var _fiveBellsCondition2 = _interopRequireDefault(_fiveBellsCondition); + +var _tweetnacl = require('tweetnacl'); + +var _tweetnacl2 = _interopRequireDefault(_tweetnacl); + +var _jsSha = require('js-sha3'); + +var _jsSha2 = _interopRequireDefault(_jsSha); + +var _jsonStableStringify = require('json-stable-stringify'); + +var _jsonStableStringify2 = _interopRequireDefault(_jsonStableStringify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys) + * @type {Object} + * @property {string} publicKey + * @property {string} privateKey + */ +function Ed25519Keypair() { + var keyPair = _tweetnacl2.default.sign.keyPair(); + this.publicKey = _bs2.default.encode(keyPair.publicKey); + + // tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer) + this.privateKey = _bs2.default.encode(keyPair.secretKey.slice(0, 32)); +} + +/** + * Create an Ed25519 Cryptocondition from an Ed25519 public key to put into an Output of a Transaction + * @param {string} publicKey base58 encoded Ed25519 public key for the recipient of the Transaction + * @returns {object} Ed25519 Condition (that will need to wrapped in an Output) + */ +function makeEd25519Condition(publicKey) { + var publicKeyBuffer = new _buffer.Buffer(_bs2.default.decode(publicKey)); + + var ed25519Fulfillment = new _fiveBellsCondition2.default.Ed25519(); + ed25519Fulfillment.setPublicKey(publicKeyBuffer); + var conditionUri = ed25519Fulfillment.getConditionUri(); + + return { + 'details': { + 'signature': null, + 'type_id': 4, + 'type': 'fulfillment', + 'bitmask': 32, + 'public_key': publicKey + }, + 'uri': conditionUri + }; +} + +/** + * Create an Output from a Condition. + * Note: Assumes the given Condition was generated from a single public key (e.g. a Ed25519 Condition) + * @param {object} condition Condition (e.g. a Ed25519 Condition from `makeEd25519Condition()`) + * @param {number} amount Amount of the output + * @returns {object} An Output usable in a Transaction + */ +function makeOutput(condition) { + var amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + + return { + amount: amount, + condition: condition, + 'public_keys': [condition.details.public_key] + }; +} + +/** + * Generate a `CREATE` transaction holding the `asset`, `metadata`, and `outputs`, to be signed by + * the `issuers`. + * @param {object} asset Created asset's data + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `CREATE` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the issuers' public + * keys (so that the issuers are the recipients of the created asset). + * @param {...string[]} issuers Public key of one or more issuers to the asset being created by this + * Transaction. + * Note: Each of the private keys corresponding to the given public + * keys MUST be used later (and in the same order) when signing the + * Transaction (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +function makeCreateTransaction(asset, metadata, outputs) { + var assetDefinition = { + 'data': asset || null + }; + + for (var _len = arguments.length, issuers = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + issuers[_key - 3] = arguments[_key]; + } + + var inputs = issuers.map(function (issuer) { + return makeInputTemplate([issuer]); + }); + + return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs); +} + +/** + * Generate a `TRANSFER` transaction holding the `asset`, `metadata`, and `outputs`, that fulfills + * the `fulfilledOutputs` of `unspentTransaction`. + * @param {object} unspentTransaction Previous Transaction you have control over (i.e. can fulfill + * its Output Condition) + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `TRANSFER` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the public keys of + * the recipients. + * @param {...number} fulfilledOutputs Indices of the Outputs in `unspentTransaction` that this + * Transaction fulfills. + * Note that the public keys listed in the fulfilled Outputs + * must be used (and in the same order) to sign the Transaction + * (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +function makeTransferTransaction(unspentTransaction, metadata, outputs) { + for (var _len2 = arguments.length, fulfilledOutputs = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) { + fulfilledOutputs[_key2 - 3] = arguments[_key2]; + } + + var inputs = fulfilledOutputs.map(function (outputIndex) { + var fulfilledOutput = unspentTransaction.outputs[outputIndex]; + var transactionLink = { + 'output': outputIndex, + 'txid': unspentTransaction.id + }; + + return makeInputTemplate(fulfilledOutput.public_keys, transactionLink); + }); + + var assetLink = { + 'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id : unspentTransaction.asset.id + }; + + return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs); +} + +/** + * Sign the given `transaction` with the given `privateKey`s, returning a new copy of `transaction` + * that's been signed. + * Note: Only generates Ed25519 Fulfillments. Thresholds and other types of Fulfillments are left as + * an exercise for the user. + * @param {object} transaction Transaction to sign. `transaction` is not modified. + * @param {...string} privateKeys Private keys associated with the issuers of the `transaction`. + * Looped through to iteratively sign any Input Fulfillments found in + * the `transaction`. + * @returns {object} The signed version of `transaction`. + */ +function signTransaction(transaction) { + for (var _len3 = arguments.length, privateKeys = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + privateKeys[_key3 - 1] = arguments[_key3]; + } + + var signedTx = (0, _clone2.default)(transaction); + signedTx.inputs.forEach(function (input, index) { + var privateKey = privateKeys[index]; + var privateKeyBuffer = new _buffer.Buffer(_bs2.default.decode(privateKey)); + var serializedTransaction = serializeTransactionIntoCanonicalString(transaction); + + var ed25519Fulfillment = new _fiveBellsCondition2.default.Ed25519(); + ed25519Fulfillment.sign(new _buffer.Buffer(serializedTransaction), privateKeyBuffer); + var fulfillmentUri = ed25519Fulfillment.serializeUri(); + + input.fulfillment = fulfillmentUri; + }); + + return signedTx; +} + +/********************* + * Transaction utils * + *********************/ + +function makeTransactionTemplate() { + return { + 'id': null, + 'operation': null, + 'outputs': [], + 'inputs': [], + 'metadata': null, + 'asset': null, + 'version': '0.9' + }; +} + +function makeInputTemplate() { + var publicKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var fulfills = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var fulfillment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + return { + fulfillment: fulfillment, + fulfills: fulfills, + 'owners_before': publicKeys + }; +} + +function makeTransaction(operation, asset) { + var metadata = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var outputs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; + var inputs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; + + var tx = makeTransactionTemplate(); + tx.operation = operation; + tx.asset = asset; + tx.metadata = metadata; + tx.inputs = inputs; + tx.outputs = outputs; + + // Hashing must be done after, as the hash is of the Transaction (up to now) + tx.id = hashTransaction(tx); + return tx; +} + +/**************** + * Crypto utils * + ****************/ + +function hashTransaction(transaction) { + // Safely remove any tx id from the given transaction for hashing + var tx = (0, _extends3.default)({}, transaction); + delete tx.id; + + return sha256Hash(serializeTransactionIntoCanonicalString(tx)); +} + +function sha256Hash(data) { + return _jsSha2.default.sha3_256.create().update(data).hex(); +} + +function serializeTransactionIntoCanonicalString(transaction) { + // BigchainDB signs fulfillments by serializing transactions into a "canonical" format where + // each fulfillment URI is removed before sorting the remaining keys + var tx = (0, _clone2.default)(transaction); + tx.inputs.forEach(function (input) { + input.fulfillment = null; + }); + + // Sort the keys + return (0, _jsonStableStringify2.default)(tx, function (a, b) { + return a.key > b.key ? 1 : -1; + }); +} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..e298010 --- /dev/null +++ b/index.js @@ -0,0 +1,222 @@ +import { Buffer } from 'buffer'; + +import base58 from 'bs58'; +import clone from 'clone'; +import cc from 'five-bells-condition'; +import nacl from 'tweetnacl'; +import sha3 from 'js-sha3'; +import stableStringify from 'json-stable-stringify'; + +/** + * @class Keypair Ed25519 keypair in base58 (as BigchainDB expects base58 keys) + * @type {Object} + * @property {string} publicKey + * @property {string} privateKey + */ +export function Ed25519Keypair() { + const keyPair = nacl.sign.keyPair(); + this.publicKey = base58.encode(keyPair.publicKey); + + // tweetnacl's generated secret key is the secret key + public key (resulting in a 64-byte buffer) + this.privateKey = base58.encode(keyPair.secretKey.slice(0, 32)); +} + +/** + * Create an Ed25519 Cryptocondition from an Ed25519 public key to put into an Output of a Transaction + * @param {string} publicKey base58 encoded Ed25519 public key for the recipient of the Transaction + * @returns {object} Ed25519 Condition (that will need to wrapped in an Output) + */ +export function makeEd25519Condition(publicKey) { + const publicKeyBuffer = new Buffer(base58.decode(publicKey)); + + const ed25519Fulfillment = new cc.Ed25519(); + ed25519Fulfillment.setPublicKey(publicKeyBuffer); + const conditionUri = ed25519Fulfillment.getConditionUri(); + + return { + 'details': { + 'signature': null, + 'type_id': 4, + 'type': 'fulfillment', + 'bitmask': 32, + 'public_key': publicKey, + }, + 'uri': conditionUri, + }; +} + +/** + * Create an Output from a Condition. + * Note: Assumes the given Condition was generated from a single public key (e.g. a Ed25519 Condition) + * @param {object} condition Condition (e.g. a Ed25519 Condition from `makeEd25519Condition()`) + * @param {number} amount Amount of the output + * @returns {object} An Output usable in a Transaction + */ +export function makeOutput(condition, amount = 1) { + return { + amount, + condition, + 'public_keys': [condition.details.public_key], + }; +} + +/** + * Generate a `CREATE` transaction holding the `asset`, `metadata`, and `outputs`, to be signed by + * the `issuers`. + * @param {object} asset Created asset's data + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `CREATE` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the issuers' public + * keys (so that the issuers are the recipients of the created asset). + * @param {...string[]} issuers Public key of one or more issuers to the asset being created by this + * Transaction. + * Note: Each of the private keys corresponding to the given public + * keys MUST be used later (and in the same order) when signing the + * Transaction (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +export function makeCreateTransaction(asset, metadata, outputs, ...issuers) { + const assetDefinition = { + 'data': asset || null, + }; + const inputs = issuers.map((issuer) => makeInputTemplate([issuer])); + + return makeTransaction('CREATE', assetDefinition, metadata, outputs, inputs); +} + +/** + * Generate a `TRANSFER` transaction holding the `asset`, `metadata`, and `outputs`, that fulfills + * the `fulfilledOutputs` of `unspentTransaction`. + * @param {object} unspentTransaction Previous Transaction you have control over (i.e. can fulfill + * its Output Condition) + * @param {object} metadata Metadata for the Transaction + * @param {object[]} outputs Array of Output objects to add to the Transaction. + * Think of these as the recipients of the asset after the transaction. + * For `TRANSFER` Transactions, this should usually just be a list of + * Outputs wrapping Ed25519 Conditions generated from the public keys of + * the recipients. + * @param {...number} fulfilledOutputs Indices of the Outputs in `unspentTransaction` that this + * Transaction fulfills. + * Note that the public keys listed in the fulfilled Outputs + * must be used (and in the same order) to sign the Transaction + * (`signTransaction()`). + * @returns {object} Unsigned transaction -- make sure to call signTransaction() on it before + * sending it off! + */ +export function makeTransferTransaction(unspentTransaction, metadata, outputs, ...fulfilledOutputs) { + const inputs = fulfilledOutputs.map((outputIndex) => { + const fulfilledOutput = unspentTransaction.outputs[outputIndex]; + const transactionLink = { + 'output': outputIndex, + 'txid': unspentTransaction.id, + }; + + return makeInputTemplate(fulfilledOutput.public_keys, transactionLink); + }); + + const assetLink = { + 'id': unspentTransaction.operation === 'CREATE' ? unspentTransaction.id + : unspentTransaction.asset.id + }; + + return makeTransaction('TRANSFER', assetLink, metadata, outputs, inputs); +} + +/** + * Sign the given `transaction` with the given `privateKey`s, returning a new copy of `transaction` + * that's been signed. + * Note: Only generates Ed25519 Fulfillments. Thresholds and other types of Fulfillments are left as + * an exercise for the user. + * @param {object} transaction Transaction to sign. `transaction` is not modified. + * @param {...string} privateKeys Private keys associated with the issuers of the `transaction`. + * Looped through to iteratively sign any Input Fulfillments found in + * the `transaction`. + * @returns {object} The signed version of `transaction`. + */ +export function signTransaction(transaction, ...privateKeys) { + const signedTx = clone(transaction); + signedTx.inputs.forEach((input, index) => { + const privateKey = privateKeys[index]; + const privateKeyBuffer = new Buffer(base58.decode(privateKey)); + const serializedTransaction = serializeTransactionIntoCanonicalString(transaction); + + const ed25519Fulfillment = new cc.Ed25519(); + ed25519Fulfillment.sign(new Buffer(serializedTransaction), privateKeyBuffer); + const fulfillmentUri = ed25519Fulfillment.serializeUri(); + + input.fulfillment = fulfillmentUri; + }); + + return signedTx; +} + +/********************* + * Transaction utils * + *********************/ + +function makeTransactionTemplate() { + return { + 'id': null, + 'operation': null, + 'outputs': [], + 'inputs': [], + 'metadata': null, + 'asset': null, + 'version': '0.9', + }; +} + +function makeInputTemplate(publicKeys = [], fulfills = null, fulfillment = null) { + return { + fulfillment, + fulfills, + 'owners_before': publicKeys, + }; +} + +function makeTransaction(operation, asset, metadata = null, outputs = [], inputs = []) { + const tx = makeTransactionTemplate(); + tx.operation = operation; + tx.asset = asset; + tx.metadata = metadata; + tx.inputs = inputs; + tx.outputs = outputs; + + // Hashing must be done after, as the hash is of the Transaction (up to now) + tx.id = hashTransaction(tx); + return tx; +} + +/**************** + * Crypto utils * + ****************/ + +function hashTransaction(transaction) { + // Safely remove any tx id from the given transaction for hashing + const tx = { ...transaction }; + delete tx.id; + + return sha256Hash(serializeTransactionIntoCanonicalString(tx)); +} + +function sha256Hash(data) { + return sha3.sha3_256 + .create() + .update(data) + .hex(); +} + +function serializeTransactionIntoCanonicalString(transaction) { + // BigchainDB signs fulfillments by serializing transactions into a "canonical" format where + // each fulfillment URI is removed before sorting the remaining keys + const tx = clone(transaction); + tx.inputs.forEach((input) => { + input.fulfillment = null; + }); + + // Sort the keys + return stableStringify(tx, (a, b) => (a.key > b.key ? 1 : -1)); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c28cacf --- /dev/null +++ b/package.json @@ -0,0 +1,51 @@ +{ + "name": "js-bigchaindb-quickstart", + "version": "0.0.1", + "description": "Some quickstarting for BigchainDB with JavaScript (node + browser)", + "repository": { + "type": "git", + "url": "git+https://github.com/sohkai/js-bigchaindb-quickstart.git" + }, + "license": "¯\\_(ツ)_/¯", + "author": "BigchainDB", + "main": "index.js", + "scripts": { + "lint": "eslint ./", + "build": "npm run clean && npm run build:bundle && npm run build:cjs && npm run build:dist", + "build:bundle": "webpack", + "build:cjs": "cross-env BABEL_ENV=cjs babel index.js -d dist/node", + "build:dist": "cross-env NODE_ENV=production webpack -p", + "clean": "rimraf dist/bundle dist/node", + "test": "echo \"Error: no test specified AWWWW YEAHHH\" && exit 1" + }, + "devDependencies": { + "babel-cli": "^6.22.2", + "babel-eslint": "^7.1.1", + "babel-loader": "^6.2.10", + "babel-plugin-transform-object-assign": "^6.22.0", + "babel-plugin-transform-object-rest-spread": "^6.22.0", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-preset-latest": "^6.22.0", + "babel-runtime": "^6.22.0", + "cross-env": "^3.1.4", + "eslint": "^3.14.1", + "eslint-config-ascribe": "^3.0.1", + "eslint-plugin-import": "^2.2.0", + "rimraf": "^2.5.4", + "webpack": "^2.2.1" + }, + "dependencies": { + "bs58": "^4.0.0", + "buffer": "^5.0.2", + "clone": "^2.1.0", + "core-js": "^2.4.1", + "five-bells-condition": "=3.3.1", + "js-sha3": "^0.5.7", + "json-stable-stringify": "^1.0.1", + "tweetnacl": "^0.14.5" + }, + "keywords": [ + "bigchaindb", + "cryptoconditions" + ] +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..ed2fbec --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,80 @@ +/* eslint-disable strict, no-console, object-shorthand */ + +'use strict'; + +const path = require('path'); + +const webpack = require('webpack'); + +const PRODUCTION = process.env.NODE_ENV === 'production'; + +const PATHS = { + ENTRY: path.resolve(__dirname, 'index.js'), + BUNDLE: path.resolve(__dirname, 'dist/bundle'), + NODE_MODULES: path.resolve(__dirname, 'node_modules'), +}; + + +/** PLUGINS **/ +const PLUGINS = [ + new webpack.NoEmitOnErrorsPlugin(), +]; + +const PROD_PLUGINS = [ + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false, + }, + output: { + comments: false, + }, + sourceMap: true, + }), + new webpack.LoaderOptionsPlugin({ + debug: false, + minimize: true, + }), +]; + +if (PRODUCTION) { + PLUGINS.push(...PROD_PLUGINS); +} + + +/** EXPORTED WEBPACK CONFIG **/ +const config = { + entry: [PATHS.ENTRY], + + output: { + filename: PRODUCTION ? 'bundle.min.js' : 'bundle.js', + library: 'js-bigchaindb-quickstart', + libraryTarget: 'umd', + path: PATHS.BUNDLE, + }, + + devtool: PRODUCTION ? '#source-map' : '#inline-source-map', + + resolve: { + extensions: ['.js'], + modules: ['node_modules'], // Don't use absolute path here to allow recursive matching + }, + + plugins: PLUGINS, + + module: { + rules: [ + { + test: /\.js$/, + exclude: [PATHS.NODE_MODULES], + use: [{ + loader: 'babel-loader', + options: { + cacheDirectory: true, + }, + }], + }, + ], + }, +}; + +module.exports = config;