Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

slopes

Package Overview
Dependencies
Maintainers
1
Versions
62
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slopes - npm Package Compare versions

Comparing version 1.1.3 to 1.1.4

2

package.json
{
"name": "slopes",
"version": "1.1.3",
"version": "1.1.4",
"description": "AVA Platform JS Library",

@@ -5,0 +5,0 @@ "main": "typings/src/index.js",

@@ -1,6 +0,6 @@

# Slopes - The **AVA** Platform JavaScript Library
# Slopes - The AVA Platform JavaScript Library
## Overview
Slopes is a JavaScript Library for interfacing with the **AVA** Platform. It is built using TypeScript and intended to support both browser and Node.js. The Slopes library allows one to issue commands to the AVA node APIs.
Slopes is a JavaScript Library for interfacing with the AVA Platform. It is built using TypeScript and intended to support both browser and Node.js. The Slopes library allows one to issue commands to the AVA node APIs.

@@ -16,3 +16,3 @@ The APIs currently supported by default are:

We built Slopes with ease of use in mind. With this library, any Javascript developer is able to interact with a node on the **AVA** Platform who has enabled their API endpoints for the developer's consumption. We keep the library up-to-date with the latest changes in the [**AVA** Platform Specification](https://avalabs.org/docs/).
We built Slopes with ease of use in mind. With this library, any Javascript developer is able to interact with a node on the AVA Platform who has enabled their API endpoints for the developer's consumption. We keep the library up-to-date with the latest changes in the [AVA Platform Specification](https://avalabs.org/docs/).

@@ -28,3 +28,3 @@ Using Slopes, developers are able to:

* Administer a local node
* Retrieve **AVA** network information from a node
* Retrieve AVA network information from a node

@@ -91,3 +91,3 @@ The entirety of the Slopes documentation can be found on our [XXX Fix Link XXX Slopes documentation page](https://avalabs.org/docs/slopes).

Slopes comes with its own AVM Keychain. This keychain is used in the functions of the API, enabling them to sign using keys it's registered. The first step in this process is to create an instance of Slopes connected to our **AVA** Platform endpoint of choice.
Slopes comes with its own AVM Keychain. This keychain is used in the functions of the API, enabling them to sign using keys it's registered. The first step in this process is to create an instance of Slopes connected to our AVA Platform endpoint of choice.

@@ -124,3 +124,3 @@ ```js

... or an **AVA** serialized string works, too:
... or an AVA serialized string works, too:

@@ -137,3 +137,3 @@ ```js

```js
let addresses = myKeychain.getAddreses(); //returns an array of all addresses managed
let addresses = myKeychain.getAddresses(); //returns an array of all addresses managed
let exists = myKeychain.hasKey(myaddress); //returns true if the address is managed

@@ -151,6 +151,6 @@ let keypair = myKeychain.getKey(myaddress); //returns the keypair class

let pubk = keypair.getPublicKey(); //returns Buffer
let pubkstr = keypair.getPublicKeyString(); //returns string
let pubkstr = keypair.getPublicKeyString(); //returns an AVA serialized string
let privk = keypair.getPrivateKey(); //returns Buffer
let privkstr = keypair.getPrivateKeyString(); //returns string
let privkstr = keypair.getPrivateKeyString(); //returns an AVA serialized string

@@ -170,3 +170,3 @@ keypair.generateKey(); //creates a new random keypair

This example creates an asset in the AVM and publishes it to the **AVA** Platform. The first step in this process is to create an instance of Slopes connected to our **AVA** Platform endpoint of choice.
This example creates an asset in the AVM and publishes it to the AVA Platform. The first step in this process is to create an instance of Slopes connected to our AVA Platform endpoint of choice.

@@ -198,3 +198,3 @@ ```js

bintools.avaSerialize(Buffer.from(address1, "hex")),
bintools.avaSerialize(Buffer.from(address2, "hex"))
bintools.avaSerialize(Buffer.from(address2, "hex")),
address3

@@ -228,3 +228,3 @@ ];

Using the Slopes AVM API, we going to call the issueTx function. This function can take either the Tx class returned in the previous step, a base-58 string **AVA** serialized representation of the transaction, or a raw Buffer class with the data for the transaction. Examples of each are below:
Using the Slopes AVM API, we going to call the issueTx function. This function can take either the Tx class returned in the previous step, a base-58 string AVA serialized representation of the transaction, or a raw Buffer class with the data for the transaction. Examples of each are below:

@@ -269,3 +269,3 @@ ```js

## Example 3 — Sending An Asset
This example sends an asset in the AVM to a single recipient. The first step in this process is to create an instance of Slopes connected to our **AVA** Platform endpoint of choice.
This example sends an asset in the AVM to a single recipient. The first step in this process is to create an instance of Slopes connected to our AVA Platform endpoint of choice.

@@ -272,0 +272,0 @@ ```js

@@ -123,6 +123,6 @@ /**

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/
getPrivateKeyString = ():string => {
return bintools.bufferToB58(this.privk);
return bintools.avaSerialize(this.privk);
}

@@ -133,6 +133,6 @@

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/
getPublicKeyString = ():string => {
return bintools.bufferToB58(this.pubk);
return bintools.avaSerialize(this.pubk);
}

@@ -139,0 +139,0 @@

@@ -264,3 +264,3 @@ /**

*/
getAddreses = ():Array<string> => {
getAddresses = ():Array<string> => {
return Object.keys(this.keys);

@@ -267,0 +267,0 @@ }

@@ -160,4 +160,4 @@ import mockAxios from 'jest-mock-axios';

let amount:BN = new BN(amnt);
let addresses:Array<string> = api.keyChain().getAddreses();
let fallAddresses:Array<string> = keymgr2.getAddreses()
let addresses:Array<string> = api.keyChain().getAddresses();
let fallAddresses:Array<string> = keymgr2.getAddresses()
let locktime:BN = new BN(54321);

@@ -164,0 +164,0 @@ let fallLocktime:BN = locktime.add(new BN(50));

@@ -35,4 +35,4 @@ import { UTXOSet, UTXO } from 'src/apis/avm/utxos';

let amount:BN = new BN(amnt);
let addresses:Array<string> = keymgr1.getAddreses();
let fallAddresses:Array<string> = keymgr2.getAddreses()
let addresses:Array<string> = keymgr1.getAddresses();
let fallAddresses:Array<string> = keymgr2.getAddresses()
let locktime:BN = new BN(54321);

@@ -39,0 +39,0 @@ let fallLocktime:BN = locktime.add(new BN(50));

@@ -49,4 +49,4 @@ import { UTXOSet, UTXO } from 'src/apis/avm/utxos';

let amount:BN = new BN(amnt);
let addresses:Array<string> = keymgr1.getAddreses();
let fallAddresses:Array<string> = keymgr2.getAddreses()
let addresses:Array<string> = keymgr1.getAddresses();
let fallAddresses:Array<string> = keymgr2.getAddresses()
let locktime:BN = new BN(54321);

@@ -53,0 +53,0 @@ let fallLocktime:BN = locktime.add(new BN(50));

@@ -48,3 +48,3 @@ /**

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/

@@ -55,3 +55,3 @@ getPrivateKeyString: () => string;

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/

@@ -58,0 +58,0 @@ getPublicKeyString: () => string;

@@ -124,6 +124,6 @@ "use strict";

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/
this.getPrivateKeyString = () => {
return bintools.bufferToB58(this.privk);
return bintools.avaSerialize(this.privk);
};

@@ -133,6 +133,6 @@ /**

*
* @returns A string representation of the public key
* @returns An AVA serialized string representation of the public key
*/
this.getPublicKeyString = () => {
return bintools.bufferToB58(this.pubk);
return bintools.avaSerialize(this.pubk);
};

@@ -254,2 +254,2 @@ /**

exports.AVMKeyChain = AVMKeyChain;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpcy9hdm0va2V5Y2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvQ0FBK0I7QUFDL0IsbURBQXFDO0FBQ3JDLG9FQUE0QztBQUM1Qyw2QkFBc0M7QUFDdEMsbUNBQTRDO0FBRTVDLDhEQUFxQztBQUNyQyw2Q0FBc0Q7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBRXZCOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBRTFCOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBR3hDOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsZUFBTztJQTRJbkM7O09BRUc7SUFDSCxZQUFZLFVBQTJCLEtBQUs7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUE3SVo7O1dBRUc7UUFDTyxzQkFBaUIsR0FBRyxDQUFDLEdBQVUsRUFBK0IsRUFBRTtZQUN0RSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLGFBQWEsR0FBVSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzRSxJQUFJLE1BQU0sR0FBRztnQkFDVCxDQUFDLEVBQUMsQ0FBQztnQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDSCxhQUFhLEVBQUMsYUFBYTthQUM5QixDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFBO1FBRUQ7Ozs7V0FJRztRQUNILGdCQUFXLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUUvQiw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxJQUFJLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFBO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsY0FBUyxHQUFHLENBQUMsS0FBWSxFQUFVLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLDRDQUE0QztZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwRSxPQUFPLElBQUksQ0FBQyxDQUFDLDBHQUEwRztRQUMzSCxDQUFDLENBQUE7UUFFRDs7OztXQUlHO1FBQ0gsZUFBVSxHQUFHLEdBQVUsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFBO1FBRUQ7Ozs7OztXQU1HO1FBQ0gseUJBQW9CLEdBQUcsQ0FBQyxJQUFXLEVBQVUsRUFBRTtZQUMzQyxJQUFJLE9BQU8sR0FBVSxFQUFFLENBQUM7WUFDeEIsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRTtnQkFDbEIsMEJBQTBCO2dCQUMxQixJQUFJLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7YUFDbkg7WUFDRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFDO2dCQUNqQixJQUFJLE1BQU0sR0FBVSxlQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzVFLElBQUksT0FBTyxHQUFVLGVBQU0sQ0FBQyxJQUFJLENBQUMscUJBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sT0FBTyxDQUFDO2FBQ2xCO1lBQ0QsMEJBQTBCO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUE7UUFFRDs7OztXQUlHO1FBQ0gsd0JBQW1CLEdBQUcsR0FBVSxFQUFFO1lBQzlCLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFBO1FBRUQ7Ozs7V0FJRztRQUNILHVCQUFrQixHQUFHLEdBQVUsRUFBRTtZQUM3QixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQTtRQUVEOzs7Ozs7V0FNRztRQUNILFNBQUksR0FBRyxDQUFDLEdBQVUsRUFBUyxFQUFFO1lBQ3pCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLFFBQVEsR0FBVSxlQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsR0FBVSxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMseURBQXlEO1lBQ2pILElBQUksQ0FBQyxHQUFVLGVBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5REFBeUQ7WUFDakgsSUFBSSxNQUFNLEdBQVUsZUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFBO1FBRUQ7Ozs7Ozs7V0FPRztRQUNILFdBQU0sR0FBRyxDQUFDLEdBQVUsRUFBRSxHQUFVLEVBQVUsRUFBRTtZQUN4QyxJQUFJLE1BQU0sR0FBZ0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUE7UUFFRDs7Ozs7OztXQU9HO1FBQ0gsWUFBTyxHQUFHLENBQUMsR0FBVSxFQUFFLEdBQVUsRUFBUyxFQUFFO1lBQ3hDLElBQUksTUFBTSxHQUFnQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRCxPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUE7UUFPRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztDQUVKO0FBcEpELGdDQW9KQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxnQkFBb0I7SUE0RGpEOztPQUVHO0lBQ0g7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQTlEWjs7Ozs7O1dBTUc7UUFDSCxZQUFPLEdBQUcsQ0FBQyxVQUEyQixLQUFLLEVBQVMsRUFBRTtZQUNsRCxJQUFJLE9BQU8sR0FBYyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQTtRQUVEOzs7Ozs7V0FNRztRQUNILGNBQVMsR0FBRyxDQUFDLEtBQXFCLEVBQVMsRUFBRTtZQUN6QyxJQUFJLE9BQU8sR0FBYyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzFDLElBQUksRUFBUyxDQUFDO1lBQ2QsSUFBRyxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUM7Z0JBQ3pCLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNILEVBQUUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pDO1lBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN0QixJQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDO2dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3hCO1lBQ0QsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFBO1FBRUQ7Ozs7OztXQU1HO1FBQ0gsV0FBTSxHQUFHLENBQUMsR0FBYyxFQUFLLEVBQUU7WUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxHQUFvQixFQUFFLENBQUM7WUFDL0IsSUFBSSxHQUFHLEdBQWdCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxLQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDL0IsSUFBSSxPQUFPLEdBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEQsS0FBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7b0JBQ25DLElBQUksT0FBTyxHQUFjLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7b0JBQzdELElBQUksR0FBRyxHQUFhLElBQUksaUJBQVMsRUFBRSxDQUFDO29CQUNwQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDbEI7YUFDSjtZQUNELE9BQU8sSUFBSSxPQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQTtJQU9ELENBQUM7Q0FDSjtBQWxFRCxrQ0FrRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgQVZNQVBJXG4gKi9cbmltcG9ydCB7QnVmZmVyfSBmcm9tIFwiYnVmZmVyL1wiO1xuaW1wb3J0ICogYXMgZWxsaXB0aWMgZnJvbSBcImVsbGlwdGljXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnLi4vLi4vdXRpbHMvYmludG9vbHMnO1xuaW1wb3J0IHsgVHhVbnNpZ25lZCwgVHggfSBmcm9tICcuL3R4JztcbmltcG9ydCB7IFNpZ25hdHVyZSwgU2lnSWR4IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCBjcmVhdGVIYXNoIGZyb20gXCJjcmVhdGUtaGFzaFwiO1xuaW1wb3J0IHsgS2V5UGFpciwgS2V5Q2hhaW4gfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBFQyA9IGVsbGlwdGljLmVjO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZWMgPSBuZXcgRUMoJ3NlY3AyNTZrMScpO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZWNwYXJhbXMgPSBlYy5jdXJ2ZTtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IEJOID0gZWNwYXJhbXMubi5jb25zdHJ1Y3RvcjtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBwcml2YXRlIGFuZCBwdWJsaWMga2V5cGFpciBpbiBBVkFKUy4gXG4gKi9cbmV4cG9ydCBjbGFzcyBBVk1LZXlQYWlyIGV4dGVuZHMgS2V5UGFpciB7XG4gICAgcHJvdGVjdGVkIGtleXBhaXI6ZWxsaXB0aWMuZWMuS2V5UGFpclxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2lnRnJvbVNpZ0J1ZmZlciA9IChzaWc6QnVmZmVyKTplbGxpcHRpYy5lYy5TaWduYXR1cmVPcHRpb25zID0+IHtcbiAgICAgICAgbGV0IHIgPSBuZXcgQk4oYmludG9vbHMuY29weUZyb20oc2lnLCAwLCAzMikpO1xuICAgICAgICBsZXQgcyA9IG5ldyBCTihiaW50b29scy5jb3B5RnJvbShzaWcsIDMyLCA2NCkpO1xuICAgICAgICBsZXQgcmVjb3ZlcnlQYXJhbTpudW1iZXIgPSBiaW50b29scy5jb3B5RnJvbShzaWcsIDY0LCA2NSkucmVhZFVJbnRCRSgwLCAxKTtcbiAgICAgICAgbGV0IHNpZ09wdCA9IHtcbiAgICAgICAgICAgIHI6cixcbiAgICAgICAgICAgIHM6cyxcbiAgICAgICAgICAgIHJlY292ZXJ5UGFyYW06cmVjb3ZlcnlQYXJhbVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc2lnT3B0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBrZXlwYWlyLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqL1xuICAgIGdlbmVyYXRlS2V5ID0gKGVudHJvcHk/OkJ1ZmZlcikgPT4ge1xuICAgICAgICB0aGlzLmtleXBhaXIgPSBlYy5nZW5LZXlQYWlyKCk7XG5cbiAgICAgICAgLy8gZG9pbmcgaGV4IHRyYW5zbGF0aW9uIHRvIGdldCBCdWZmZXIgY2xhc3NcbiAgICAgICAgdGhpcy5wcml2ayA9IEJ1ZmZlci5mcm9tKHRoaXMua2V5cGFpci5nZXRQcml2YXRlKFwiaGV4XCIpLCBcImhleFwiKTtcbiAgICAgICAgdGhpcy5wdWJrID0gQnVmZmVyLmZyb20odGhpcy5rZXlwYWlyLmdldFB1YmxpYyh0cnVlLCBcImhleFwiKSwgXCJoZXhcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBhIHByaXZhdGUga2V5IGFuZCBnZW5lcmF0ZXMgdGhlIGFwcHJvcHJpYXRlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICBpbXBvcnRLZXkgPSAocHJpdms6QnVmZmVyKTpib29sZWFuID0+IHtcbiAgICAgICAgdGhpcy5rZXlwYWlyID0gZWMua2V5RnJvbVByaXZhdGUocHJpdmspO1xuICAgICAgICAvLyBkb2luZyBoZXggdHJhbnNsYXRpb24gdG8gZ2V0IEJ1ZmZlciBjbGFzc1xuICAgICAgICB0aGlzLnByaXZrID0gQnVmZmVyLmZyb20odGhpcy5rZXlwYWlyLmdldFByaXZhdGUoXCJoZXhcIiksIFwiaGV4XCIpO1xuICAgICAgICB0aGlzLnB1YmsgPSBCdWZmZXIuZnJvbSh0aGlzLmtleXBhaXIuZ2V0UHVibGljKHRydWUsIFwiaGV4XCIpLCBcImhleFwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vc2lsbHkgSSBrbm93LCBidXQgdGhlIGludGVyZmFjZSByZXF1aXJlcyBzbyBpdCByZXR1cm5zIHRydWUgb24gc3VjY2Vzcywgc28gaWYgQnVmZmVyIGZhaWxzIHZhbGlkYXRpb24uLi5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzcyA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZHJlc3NGcm9tUHVibGljS2V5KHRoaXMucHViayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhZGRyZXNzIGdpdmVuIGEgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHViayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHVibGljIGtleVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIGZvciB0aGUgYWRkcmVzcyBvZiB0aGUgcHVibGljIGtleS5cbiAgICAgKi9cbiAgICBhZGRyZXNzRnJvbVB1YmxpY0tleSA9IChwdWJrOkJ1ZmZlcik6IHN0cmluZyA9PiB7XG4gICAgICAgIGxldCBhZGRyZXNzOnN0cmluZyA9IFwiXCI7XG4gICAgICAgIGlmKHB1YmsubGVuZ3RoID09IDY1KSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgcHViayA9IEJ1ZmZlci5mcm9tKGVjLmtleUZyb21QdWJsaWMocHViaykuZ2V0UHVibGljKHRydWUsIFwiaGV4XCIpLCBcImhleFwiKTsgLy9tYWtlIGNvbXBhY3QsIHN0aWNrIGJhY2sgaW50byBidWZmZXJcbiAgICAgICAgfSBcbiAgICAgICAgaWYocHViay5sZW5ndGggPT0gMzMpe1xuICAgICAgICAgICAgbGV0IHNoYTI1NjpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocHViaykuZGlnZXN0KCkpO1xuICAgICAgICAgICAgbGV0IHJpcGVzaGE6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaCgncm1kMTYwJykudXBkYXRlKHNoYTI1NikuZGlnZXN0KCkpO1xuICAgICAgICAgICAgYWRkcmVzcyA9IGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShyaXBlc2hhKTtcbiAgICAgICAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBtYWtlIGFkZHJlc3MuXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHJpdmF0ZUtleVN0cmluZyA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnByaXZrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIGJpbnRvb2xzLmJ1ZmZlclRvQjU4KHRoaXMucHViayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBtZXNzYWdlLCBzaWducyBpdCwgYW5kIHJldHVybnMgdGhlIHNpZ25hdHVyZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIHRvIHNpZ25cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHNpZ25hdHVyZVxuICAgICAqL1xuICAgIHNpZ24gPSAobXNnOkJ1ZmZlcik6QnVmZmVyID0+IHtcbiAgICAgICAgbGV0IHNpZ09iaiA9IHRoaXMua2V5cGFpci5zaWduKG1zZywgdW5kZWZpbmVkLCB7IGNhbm9uaWNhbDogdHJ1ZSB9KTtcbiAgICAgICAgbGV0IHJlY292ZXJ5OkJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygxKTtcbiAgICAgICAgcmVjb3Zlcnkud3JpdGVVSW50OChzaWdPYmoucmVjb3ZlcnlQYXJhbSwgMCk7XG4gICAgICAgIGxldCByOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ09iai5yLnRvQXJyYXkoXCJiZVwiLCAzMikpOyAvL3dlIGhhdmUgdG8gc2tpcCBuYXRpdmUgQnVmZmVyIGNsYXNzLCBzbyB0aGlzIGlzIHRoZSB3YXlcbiAgICAgICAgbGV0IHM6QnVmZmVyID0gQnVmZmVyLmZyb20oc2lnT2JqLnMudG9BcnJheShcImJlXCIsIDMyKSk7IC8vd2UgaGF2ZSB0byBza2lwIG5hdGl2ZSBCdWZmZXIgY2xhc3MsIHNvIHRoaXMgaXMgdGhlIHdheVxuICAgICAgICBsZXQgcmVzdWx0OkJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3IscywgcmVjb3ZlcnldLCA2NSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIFxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIHByaXZhdGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcHVibGljIGtleSBwcm9kdWNlcyB0aGUgc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZWQgbWVzc2FnZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZVxuICAgICAqL1xuICAgIHZlcmlmeSA9IChtc2c6QnVmZmVyLCBzaWc6QnVmZmVyKTpib29sZWFuID0+IHsgXG4gICAgICAgIGxldCBzaWdPYmo6ZWxsaXB0aWMuZWMuU2lnbmF0dXJlT3B0aW9ucyA9IHRoaXMuX3NpZ0Zyb21TaWdCdWZmZXIoc2lnKTtcbiAgICAgICAgcmV0dXJuIGVjLnZlcmlmeShtc2csIHNpZ09iaiwgdGhpcy5rZXlwYWlyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyB0aGUgcHVibGljIGtleSBvZiBhIG1lc3NhZ2Ugc2lnbmVyIGZyb20gYSBtZXNzYWdlIGFuZCBpdHMgYXNzb2NpYXRlZCBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0aGF0J3Mgc2lnbmVkXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIHRoYXQncyBzaWduZWQgb24gdGhlIG1lc3NhZ2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lclxuICAgICAqL1xuICAgIHJlY292ZXIgPSAobXNnOkJ1ZmZlciwgc2lnOkJ1ZmZlcik6QnVmZmVyID0+IHtcbiAgICAgICAgbGV0IHNpZ09iajplbGxpcHRpYy5lYy5TaWduYXR1cmVPcHRpb25zID0gdGhpcy5fc2lnRnJvbVNpZ0J1ZmZlcihzaWcpO1xuICAgICAgICBsZXQgcHViayA9IGVjLnJlY292ZXJQdWJLZXkobXNnLCBzaWdPYmosIHNpZ09iai5yZWNvdmVyeVBhcmFtKTtcbiAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHB1YmsuZW5jb2RlQ29tcHJlc3NlZCgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbGFzcyBmb3IgcmVwcmVzZW50aW5nIGEgcHJpdmF0ZSBhbmQgcHVibGljIGtleXBhaXIgaW4gQVZBSlMuIFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGVudHJvcHk6QnVmZmVyIHwgYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVLZXkoKTtcbiAgICB9XG4gICAgXG59XG5cbi8qKlxuICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIGtleSBjaGFpbiBpbiBBVkFKUy4gXG4gKiBcbiAqIEB0eXBlcGFyYW0gQVZNS2V5UGFpciBDbGFzcyBleHRlbmRpbmcgW1tLZXlQYWlyXV0gd2hpY2ggaXMgdXNlZCBhcyB0aGUga2V5IGluIFtbQVZNS2V5Q2hhaW5dXVxuICovXG5leHBvcnQgY2xhc3MgQVZNS2V5Q2hhaW4gZXh0ZW5kcyBLZXlDaGFpbjxBVk1LZXlQYWlyPiB7XG5cbiAgICAvKipcbiAgICAgKiBNYWtlcyBhIG5ldyBrZXkgcGFpciwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gZW50cm9weSBPcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHByb2R1Y2Ugc2VjdXJlIGtleXNcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBZGRyZXNzIG9mIHRoZSBuZXcga2V5IHBhaXJcbiAgICAgKi9cbiAgICBtYWtlS2V5ID0gKGVudHJvcHk6QnVmZmVyIHwgYm9vbGVhbiA9IGZhbHNlKTpzdHJpbmcgPT4ge1xuICAgICAgICBsZXQga2V5cGFpcjpBVk1LZXlQYWlyID0gbmV3IEFWTUtleVBhaXIoZW50cm9weSk7XG4gICAgICAgIHRoaXMuYWRkS2V5KGtleXBhaXIpO1xuICAgICAgICByZXR1cm4ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBwcml2YXRlIGtleSwgbWFrZXMgYSBuZXcga2V5IHBhaXIsIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gb3IgQVZBIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcHJpdmF0ZSBrZXkgXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IGtleSBwYWlyXG4gICAgICovXG4gICAgaW1wb3J0S2V5ID0gKHByaXZrOkJ1ZmZlciB8IHN0cmluZyk6c3RyaW5nID0+IHtcbiAgICAgICAgbGV0IGtleXBhaXI6QVZNS2V5UGFpciA9IG5ldyBBVk1LZXlQYWlyKCk7XG4gICAgICAgIGxldCBwazpCdWZmZXI7XG4gICAgICAgIGlmKHR5cGVvZiBwcml2ayA9PT0gJ3N0cmluZycpe1xuICAgICAgICAgICAgcGsgPSBiaW50b29scy5hdmFEZXNlcmlhbGl6ZShwcml2ayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwayA9IGJpbnRvb2xzLmNvcHlGcm9tKHByaXZrKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlwYWlyLmltcG9ydEtleShwayk7XG4gICAgICAgIGlmKCEoa2V5cGFpci5nZXRBZGRyZXNzKCkgaW4gdGhpcy5rZXlzKSl7XG4gICAgICAgICAgICB0aGlzLmFkZEtleShrZXlwYWlyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5cGFpci5nZXRBZGRyZXNzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2lnbnMgYSBbW1R4VW5zaWduZWRdXSBhbmQgcmV0dXJucyBzaWduZWQgW1tUeF1dXG4gICAgICogXG4gICAgICogQHBhcmFtIHV0eCBBIFtbVHhVbnNpZ25lZF1dIHRoYXQgbmVlZHMgdG8gYmUgc2lnbmVkXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzaWduZWQgW1tUeF1dXG4gICAgICovXG4gICAgc2lnblR4ID0gKHV0eDpUeFVuc2lnbmVkKTpUeCA9PiB7XG4gICAgICAgIGxldCB0eGJ1ZmYgPSB1dHgudG9CdWZmZXIoKTsgXG4gICAgICAgIGxldCBzaWdzOkFycmF5PFNpZ25hdHVyZT4gPSBbXTtcbiAgICAgICAgbGV0IGluczpBcnJheTxJbnB1dD4gPSB1dHguZ2V0SW5zKCk7XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBpbnMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgbGV0IHNpZ2lkeHM6QXJyYXk8U2lnSWR4PiA9IGluc1tpXS5nZXRTaWdJZHhzKCk7XG4gICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgc2lnaWR4cy5sZW5ndGg7IGorKyl7XG4gICAgICAgICAgICAgICAgbGV0IGtleXBhaXI6QVZNS2V5UGFpciA9IHRoaXMuZ2V0S2V5KHNpZ2lkeHNbal0uZ2V0U291cmNlKCkpO1xuICAgICAgICAgICAgICAgIGxldCBzaWc6U2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgICAgIHNpZy5mcm9tQnVmZmVyKGtleXBhaXIuc2lnbih0eGJ1ZmYpKTtcbiAgICAgICAgICAgICAgICBzaWdzLnB1c2goc2lnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFR4KHV0eCwgc2lncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiBBVk1LZXlDaGFpbi5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpcy9hdm0va2V5Y2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvQ0FBK0I7QUFDL0IsbURBQXFDO0FBQ3JDLG9FQUE0QztBQUM1Qyw2QkFBc0M7QUFDdEMsbUNBQTRDO0FBRTVDLDhEQUFxQztBQUNyQyw2Q0FBc0Q7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBRXZCOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBRTFCOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7QUFFbEM7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBR3hDOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsZUFBTztJQTRJbkM7O09BRUc7SUFDSCxZQUFZLFVBQTJCLEtBQUs7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUE3SVo7O1dBRUc7UUFDTyxzQkFBaUIsR0FBRyxDQUFDLEdBQVUsRUFBK0IsRUFBRTtZQUN0RSxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLGFBQWEsR0FBVSxRQUFRLENBQUMsUUFBUSxDQUFDLEdB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TUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDbEI7YUFDSjtZQUNELE9BQU8sSUFBSSxPQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQTtJQU9ELENBQUM7Q0FDSjtBQWxFRCxrQ0FrRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgQVZNQVBJXG4gKi9cbmltcG9ydCB7QnVmZmVyfSBmcm9tIFwiYnVmZmVyL1wiO1xuaW1wb3J0ICogYXMgZWxsaXB0aWMgZnJvbSBcImVsbGlwdGljXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnLi4vLi4vdXRpbHMvYmludG9vbHMnO1xuaW1wb3J0IHsgVHhVbnNpZ25lZCwgVHggfSBmcm9tICcuL3R4JztcbmltcG9ydCB7IFNpZ25hdHVyZSwgU2lnSWR4IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCBjcmVhdGVIYXNoIGZyb20gXCJjcmVhdGUtaGFzaFwiO1xuaW1wb3J0IHsgS2V5UGFpciwgS2V5Q2hhaW4gfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBFQyA9IGVsbGlwdGljLmVjO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZWMgPSBuZXcgRUMoJ3NlY3AyNTZrMScpO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgZWNwYXJhbXMgPSBlYy5jdXJ2ZTtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IEJOID0gZWNwYXJhbXMubi5jb25zdHJ1Y3RvcjtcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBwcml2YXRlIGFuZCBwdWJsaWMga2V5cGFpciBpbiBBVkFKUy4gXG4gKi9cbmV4cG9ydCBjbGFzcyBBVk1LZXlQYWlyIGV4dGVuZHMgS2V5UGFpciB7XG4gICAgcHJvdGVjdGVkIGtleXBhaXI6ZWxsaXB0aWMuZWMuS2V5UGFpclxuXG4gICAgLyoqXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc2lnRnJvbVNpZ0J1ZmZlciA9IChzaWc6QnVmZmVyKTplbGxpcHRpYy5lYy5TaWduYXR1cmVPcHRpb25zID0+IHtcbiAgICAgICAgbGV0IHIgPSBuZXcgQk4oYmludG9vbHMuY29weUZyb20oc2lnLCAwLCAzMikpO1xuICAgICAgICBsZXQgcyA9IG5ldyBCTihiaW50b29scy5jb3B5RnJvbShzaWcsIDMyLCA2NCkpO1xuICAgICAgICBsZXQgcmVjb3ZlcnlQYXJhbTpudW1iZXIgPSBiaW50b29scy5jb3B5RnJvbShzaWcsIDY0LCA2NSkucmVhZFVJbnRCRSgwLCAxKTtcbiAgICAgICAgbGV0IHNpZ09wdCA9IHtcbiAgICAgICAgICAgIHI6cixcbiAgICAgICAgICAgIHM6cyxcbiAgICAgICAgICAgIHJlY292ZXJ5UGFyYW06cmVjb3ZlcnlQYXJhbVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc2lnT3B0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBrZXlwYWlyLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqL1xuICAgIGdlbmVyYXRlS2V5ID0gKGVudHJvcHk/OkJ1ZmZlcikgPT4ge1xuICAgICAgICB0aGlzLmtleXBhaXIgPSBlYy5nZW5LZXlQYWlyKCk7XG5cbiAgICAgICAgLy8gZG9pbmcgaGV4IHRyYW5zbGF0aW9uIHRvIGdldCBCdWZmZXIgY2xhc3NcbiAgICAgICAgdGhpcy5wcml2ayA9IEJ1ZmZlci5mcm9tKHRoaXMua2V5cGFpci5nZXRQcml2YXRlKFwiaGV4XCIpLCBcImhleFwiKTtcbiAgICAgICAgdGhpcy5wdWJrID0gQnVmZmVyLmZyb20odGhpcy5rZXlwYWlyLmdldFB1YmxpYyh0cnVlLCBcImhleFwiKSwgXCJoZXhcIik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBhIHByaXZhdGUga2V5IGFuZCBnZW5lcmF0ZXMgdGhlIGFwcHJvcHJpYXRlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICBpbXBvcnRLZXkgPSAocHJpdms6QnVmZmVyKTpib29sZWFuID0+IHtcbiAgICAgICAgdGhpcy5rZXlwYWlyID0gZWMua2V5RnJvbVByaXZhdGUocHJpdmspO1xuICAgICAgICAvLyBkb2luZyBoZXggdHJhbnNsYXRpb24gdG8gZ2V0IEJ1ZmZlciBjbGFzc1xuICAgICAgICB0aGlzLnByaXZrID0gQnVmZmVyLmZyb20odGhpcy5rZXlwYWlyLmdldFByaXZhdGUoXCJoZXhcIiksIFwiaGV4XCIpO1xuICAgICAgICB0aGlzLnB1YmsgPSBCdWZmZXIuZnJvbSh0aGlzLmtleXBhaXIuZ2V0UHVibGljKHRydWUsIFwiaGV4XCIpLCBcImhleFwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vc2lsbHkgSSBrbm93LCBidXQgdGhlIGludGVyZmFjZSByZXF1aXJlcyBzbyBpdCByZXR1cm5zIHRydWUgb24gc3VjY2Vzcywgc28gaWYgQnVmZmVyIGZhaWxzIHZhbGlkYXRpb24uLi5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzXG4gICAgICovXG4gICAgZ2V0QWRkcmVzcyA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZHJlc3NGcm9tUHVibGljS2V5KHRoaXMucHViayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBhZGRyZXNzIGdpdmVuIGEgcHVibGljIGtleS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHViayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IHJlcHJlc2VudGluZyB0aGUgcHVibGljIGtleVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIGZvciB0aGUgYWRkcmVzcyBvZiB0aGUgcHVibGljIGtleS5cbiAgICAgKi9cbiAgICBhZGRyZXNzRnJvbVB1YmxpY0tleSA9IChwdWJrOkJ1ZmZlcik6IHN0cmluZyA9PiB7XG4gICAgICAgIGxldCBhZGRyZXNzOnN0cmluZyA9IFwiXCI7XG4gICAgICAgIGlmKHB1YmsubGVuZ3RoID09IDY1KSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgcHViayA9IEJ1ZmZlci5mcm9tKGVjLmtleUZyb21QdWJsaWMocHViaykuZ2V0UHVibGljKHRydWUsIFwiaGV4XCIpLCBcImhleFwiKTsgLy9tYWtlIGNvbXBhY3QsIHN0aWNrIGJhY2sgaW50byBidWZmZXJcbiAgICAgICAgfSBcbiAgICAgICAgaWYocHViay5sZW5ndGggPT0gMzMpe1xuICAgICAgICAgICAgbGV0IHNoYTI1NjpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUocHViaykuZGlnZXN0KCkpO1xuICAgICAgICAgICAgbGV0IHJpcGVzaGE6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaCgncm1kMTYwJykudXBkYXRlKHNoYTI1NikuZGlnZXN0KCkpO1xuICAgICAgICAgICAgYWRkcmVzcyA9IGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShyaXBlc2hhKTtcbiAgICAgICAgICAgIHJldHVybiBhZGRyZXNzO1xuICAgICAgICB9XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBtYWtlIGFkZHJlc3MuXCIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHByaXZhdGUga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFuIEFWQSBzZXJpYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFByaXZhdGVLZXlTdHJpbmcgPSAoKTpzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gYmludG9vbHMuYXZhU2VyaWFsaXplKHRoaXMucHJpdmspO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQW4gQVZBIHNlcmlhbGl6ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwdWJsaWMga2V5XG4gICAgICovXG4gICAgZ2V0UHVibGljS2V5U3RyaW5nID0gKCk6c3RyaW5nID0+IHtcbiAgICAgICAgcmV0dXJuIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZSh0aGlzLnB1YmspO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWVzc2FnZSwgc2lnbnMgaXQsIGFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byBzaWduXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcbiAgICAgKi9cbiAgICBzaWduID0gKG1zZzpCdWZmZXIpOkJ1ZmZlciA9PiB7XG4gICAgICAgIGxldCBzaWdPYmogPSB0aGlzLmtleXBhaXIuc2lnbihtc2csIHVuZGVmaW5lZCwgeyBjYW5vbmljYWw6IHRydWUgfSk7XG4gICAgICAgIGxldCByZWNvdmVyeTpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoMSk7XG4gICAgICAgIHJlY292ZXJ5LndyaXRlVUludDgoc2lnT2JqLnJlY292ZXJ5UGFyYW0sIDApO1xuICAgICAgICBsZXQgcjpCdWZmZXIgPSBCdWZmZXIuZnJvbShzaWdPYmouci50b0FycmF5KFwiYmVcIiwgMzIpKTsgLy93ZSBoYXZlIHRvIHNraXAgbmF0aXZlIEJ1ZmZlciBjbGFzcywgc28gdGhpcyBpcyB0aGUgd2F5XG4gICAgICAgIGxldCBzOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHNpZ09iai5zLnRvQXJyYXkoXCJiZVwiLCAzMikpOyAvL3dlIGhhdmUgdG8gc2tpcCBuYXRpdmUgQnVmZmVyIGNsYXNzLCBzbyB0aGlzIGlzIHRoZSB3YXlcbiAgICAgICAgbGV0IHJlc3VsdDpCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtyLHMsIHJlY292ZXJ5XSwgNjUpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBwcml2YXRlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIHB1YmxpYyBrZXkgcHJvZHVjZXMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZVxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSBvZiB0aGUgc2lnbmVkIG1lc3NhZ2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICB2ZXJpZnkgPSAobXNnOkJ1ZmZlciwgc2lnOkJ1ZmZlcik6Ym9vbGVhbiA9PiB7IFxuICAgICAgICBsZXQgc2lnT2JqOmVsbGlwdGljLmVjLlNpZ25hdHVyZU9wdGlvbnMgPSB0aGlzLl9zaWdGcm9tU2lnQnVmZmVyKHNpZyk7XG4gICAgICAgIHJldHVybiBlYy52ZXJpZnkobXNnLCBzaWdPYmosIHRoaXMua2V5cGFpcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjb3ZlcnMgdGhlIHB1YmxpYyBrZXkgb2YgYSBtZXNzYWdlIHNpZ25lciBmcm9tIGEgbWVzc2FnZSBhbmQgaXRzIGFzc29jaWF0ZWQgc2lnbmF0dXJlLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBtc2cgVGhlIG1lc3NhZ2UgdGhhdCdzIHNpZ25lZFxuICAgICAqIEBwYXJhbSBzaWcgVGhlIHNpZ25hdHVyZSB0aGF0J3Mgc2lnbmVkIG9uIHRoZSBtZXNzYWdlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICAgKi9cbiAgICByZWNvdmVyID0gKG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIpOkJ1ZmZlciA9PiB7XG4gICAgICAgIGxldCBzaWdPYmo6ZWxsaXB0aWMuZWMuU2lnbmF0dXJlT3B0aW9ucyA9IHRoaXMuX3NpZ0Zyb21TaWdCdWZmZXIoc2lnKTtcbiAgICAgICAgbGV0IHB1YmsgPSBlYy5yZWNvdmVyUHViS2V5KG1zZywgc2lnT2JqLCBzaWdPYmoucmVjb3ZlcnlQYXJhbSk7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShwdWJrLmVuY29kZUNvbXByZXNzZWQoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIHByaXZhdGUgYW5kIHB1YmxpYyBrZXlwYWlyIGluIEFWQUpTLiBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihlbnRyb3B5OkJ1ZmZlciB8IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlS2V5KCk7XG4gICAgfVxuICAgIFxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBrZXkgY2hhaW4gaW4gQVZBSlMuIFxuICogXG4gKiBAdHlwZXBhcmFtIEFWTUtleVBhaXIgQ2xhc3MgZXh0ZW5kaW5nIFtbS2V5UGFpcl1dIHdoaWNoIGlzIHVzZWQgYXMgdGhlIGtleSBpbiBbW0FWTUtleUNoYWluXV1cbiAqL1xuZXhwb3J0IGNsYXNzIEFWTUtleUNoYWluIGV4dGVuZHMgS2V5Q2hhaW48QVZNS2V5UGFpcj4ge1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcga2V5IHBhaXIsIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IGtleSBwYWlyXG4gICAgICovXG4gICAgbWFrZUtleSA9IChlbnRyb3B5OkJ1ZmZlciB8IGJvb2xlYW4gPSBmYWxzZSk6c3RyaW5nID0+IHtcbiAgICAgICAgbGV0IGtleXBhaXI6QVZNS2V5UGFpciA9IG5ldyBBVk1LZXlQYWlyKGVudHJvcHkpO1xuICAgICAgICB0aGlzLmFkZEtleShrZXlwYWlyKTtcbiAgICAgICAgcmV0dXJuIGtleXBhaXIuZ2V0QWRkcmVzcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcHJpdmF0ZSBrZXksIG1ha2VzIGEgbmV3IGtleSBwYWlyLCByZXR1cm5zIHRoZSBhZGRyZXNzLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwcml2ayBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9yIEFWQSBzZXJpYWxpemVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBrZXkgcGFpclxuICAgICAqL1xuICAgIGltcG9ydEtleSA9IChwcml2azpCdWZmZXIgfCBzdHJpbmcpOnN0cmluZyA9PiB7XG4gICAgICAgIGxldCBrZXlwYWlyOkFWTUtleVBhaXIgPSBuZXcgQVZNS2V5UGFpcigpO1xuICAgICAgICBsZXQgcGs6QnVmZmVyO1xuICAgICAgICBpZih0eXBlb2YgcHJpdmsgPT09ICdzdHJpbmcnKXtcbiAgICAgICAgICAgIHBrID0gYmludG9vbHMuYXZhRGVzZXJpYWxpemUocHJpdmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGsgPSBiaW50b29scy5jb3B5RnJvbShwcml2ayk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cGFpci5pbXBvcnRLZXkocGspO1xuICAgICAgICBpZighKGtleXBhaXIuZ2V0QWRkcmVzcygpIGluIHRoaXMua2V5cykpe1xuICAgICAgICAgICAgdGhpcy5hZGRLZXkoa2V5cGFpcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXBhaXIuZ2V0QWRkcmVzcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNpZ25zIGEgW1tUeFVuc2lnbmVkXV0gYW5kIHJldHVybnMgc2lnbmVkIFtbVHhdXVxuICAgICAqIFxuICAgICAqIEBwYXJhbSB1dHggQSBbW1R4VW5zaWduZWRdXSB0aGF0IG5lZWRzIHRvIGJlIHNpZ25lZFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgc2lnbmVkIFtbVHhdXVxuICAgICAqL1xuICAgIHNpZ25UeCA9ICh1dHg6VHhVbnNpZ25lZCk6VHggPT4ge1xuICAgICAgICBsZXQgdHhidWZmID0gdXR4LnRvQnVmZmVyKCk7IFxuICAgICAgICBsZXQgc2lnczpBcnJheTxTaWduYXR1cmU+ID0gW107XG4gICAgICAgIGxldCBpbnM6QXJyYXk8SW5wdXQ+ID0gdXR4LmdldElucygpO1xuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgaW5zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGxldCBzaWdpZHhzOkFycmF5PFNpZ0lkeD4gPSBpbnNbaV0uZ2V0U2lnSWR4cygpO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHNpZ2lkeHMubGVuZ3RoOyBqKyspe1xuICAgICAgICAgICAgICAgIGxldCBrZXlwYWlyOkFWTUtleVBhaXIgPSB0aGlzLmdldEtleShzaWdpZHhzW2pdLmdldFNvdXJjZSgpKTtcbiAgICAgICAgICAgICAgICBsZXQgc2lnOlNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoKTtcbiAgICAgICAgICAgICAgICBzaWcuZnJvbUJ1ZmZlcihrZXlwYWlyLnNpZ24odHhidWZmKSk7XG4gICAgICAgICAgICAgICAgc2lncy5wdXNoKHNpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBUeCh1dHgsIHNpZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgQVZNS2V5Q2hhaW4uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKXtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG59Il19

@@ -174,3 +174,3 @@ /// <reference types="node" />

*/
getAddreses: () => string[];
getAddresses: () => string[];
/**

@@ -177,0 +177,0 @@ * Adds the key pair to the list of the keys manages in the keychain.

@@ -167,3 +167,3 @@ "use strict";

*/
this.getAddreses = () => {
this.getAddresses = () => {
return Object.keys(this.keys);

@@ -277,2 +277,2 @@ };

exports.NBytes = NBytes;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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RDs7OztXQUlHO1FBQ0gsYUFBUSxHQUFHLEdBQVUsRUFBRTtZQUNuQixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFBO0lBSWMsQ0FBQztDQUNuQjtBQXhFRCx3QkF3RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgVXRpbHNcbiAqL1xuaW1wb3J0IFNsb3Blc0NvcmUgZnJvbSAnLi4vc2xvcGVzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgREIgZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IFN0b3JlQVBJIH0gZnJvbSAnc3RvcmUyJztcbmltcG9ydCBCaW5Ub29scyAgZnJvbSAnLi9iaW50b29scyc7XG5pbXBvcnQgeyBDbGllbnRSZXF1ZXN0IH0gZnJvbSBcImh0dHBcIjtcbmltcG9ydCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuLyoqXG4gKiBSZXNwb25zZSBkYXRhIGZvciBIVFRQIHJlcXVlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgUmVxdWVzdFJlc3BvbnNlRGF0YSB7XG4gICAgZGF0YTogc3RyaW5nIHwgb2JqZWN0IHwgQXJyYXk8b2JqZWN0PjtcbiAgICBoZWFkZXJzOm9iamVjdDtcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgcmVxdWVzdDpDbGllbnRSZXF1ZXN0IHwgWE1MSHR0cFJlcXVlc3Q7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZGVmaW5pbmcgYSBnZW5lcmljIGVuZHBvaW50IHRoYXQgYWxsIGVuZHBvaW50cyBtdXN0IGltcGxlbWVudCAoZXh0ZW5kKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBjb3JlOlNsb3Blc0NvcmU7XG4gICAgcHJvdGVjdGVkIGJhc2V1cmw6c3RyaW5nO1xuICAgIHByb3RlY3RlZCBkYjpTdG9yZUFQSTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhdGggb2YgdGhlIEFQSXMgYmFzZXVybC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2F2YVwiXG4gICAgICovXG4gICAgc2V0QmFzZVVSTCA9IChiYXNldXJsOnN0cmluZykgPT4ge1xuICAgICAgICBpZih0aGlzLmRiICYmIHRoaXMuYmFzZXVybCAhPT0gYmFzZXVybCl7XG4gICAgICAgICAgICBsZXQgYmFja3VwID0gdGhpcy5kYi5nZXRBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuZGIuY2xlYXJBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICAgICAgdGhpcy5kYi5zZXRBbGwoYmFja3VwLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICB9XG4gICAgfSBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBwYXRoLiBcbiAgICAgKi9cbiAgICBnZXRCYXNlVVJMID0gKCkgOiBzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNldXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBnZXREQiA9ICgpOlN0b3JlQVBJID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvcmUgUmVmZXJlbmNlIHRvIHRoZSBTbG9wZXMgaW5zdGFuY2UgdXNpbmcgdGhpcyBiYXNldXJsXG4gICAgICogQHBhcmFtIGJhc2V1cmwgUGF0aCB0byB0aGUgYmFzZXVybCAtIGV4OiBcIi9leHQvc3VibmV0L2F2bVwiXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLnNldEJhc2VVUkwoYmFzZXVybCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSlJQQ0FQSSBleHRlbmRzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBqcnBjVmVyc2lvbjpzdHJpbmcgPSBcIjIuMFwiO1xuICAgIHByb3RlY3RlZCBycGNpZCA9IDE7XG4gICAgY2FsbE1ldGhvZCA9IGFzeW5jIChtZXRob2Q6c3RyaW5nLCBwYXJhbXM/OkFycmF5PG9iamVjdD4gfCBvYmplY3QsIGJhc2V1cmw/OnN0cmluZyk6UHJvbWlzZTxSZXF1ZXN0UmVzcG9uc2VEYXRhPiA9PiB7XG4gICAgICAgIGxldCBlcCA9IGJhc2V1cmwgPyBiYXNldXJsIDogdGhpcy5iYXNldXJsO1xuICAgICAgICBsZXQgcnBjOm9iamVjdCA9IHt9O1xuICAgICAgICBycGNbXCJpZFwiXSA9IHRoaXMucnBjaWQ7XG4gICAgICAgIHJwY1tcIm1ldGhvZFwiXSA9IG1ldGhvZDtcblxuICAgICAgICAvLyBTZXQgcGFyYW1ldGVycyBpZiBleGlzdHNcbiAgICAgICAgaWYocGFyYW1zKXtcbiAgICAgICAgICAgIHJwY1sncGFyYW1zJ10gPSBwYXJhbXM7XG4gICAgICAgIH0gZWxzZSBpZih0aGlzLmpycGNWZXJzaW9uID09IFwiMS4wXCIpe1xuICAgICAgICAgICAgcnBjW1wicGFyYW1zXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLmpycGNWZXJzaW9uICE9IFwiMS4wXCIpIHtcbiAgICAgICAgICAgIHJwY1tcImpzb25ycGNcIl0gPSB0aGlzLmpycGNWZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnM6b2JqZWN0ID0ge1wiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCJ9O1xuXG4gICAgICAgIGxldCBheENvbmY6QXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgYmFzZVVSTDp0aGlzLmNvcmUuZ2V0UHJvdG9jb2woKStcIjovL1wiK3RoaXMuY29yZS5nZXRJUCgpK1wiOlwiK3RoaXMuY29yZS5nZXRQb3J0KCksXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvcmUucG9zdChlcCwge30sIEpTT04uc3RyaW5naWZ5KHJwYyksIGhlYWRlcnMsIGF4Q29uZikudGhlbiggKHJlc3A6UmVxdWVzdFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYocmVzcC5zdGF0dXMgPj0gMjAwICYmIHJlc3Auc3RhdHVzIDwgMzAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLnJwY2lkICs9IDE7XG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHJlc3AuZGF0YSA9PT0gXCJzdHJpbmdcIil7XG4gICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YSA9IEpTT04ucGFyc2UocmVzcC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L3N1Ym5ldC9hdm1cIlxuICAgICAqIEBwYXJhbSBqcnBjVmVyc2lvbiBUaGUganJwYyB2ZXJzaW9uIHRvIHVzZSwgZGVmYXVsdCBcIjIuMFwiLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcsIGpycGNWZXJzaW9uOnN0cmluZyA9IFwiMi4wXCIpIHtcbiAgICAgICAgc3VwZXIoY29yZSwgYmFzZXVybCk7XG4gICAgICAgIHRoaXMuanJwY1ZlcnNpb24gPSBqcnBjVmVyc2lvbjtcbiAgICAgICAgdGhpcy5ycGNpZCA9IDE7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBwcml2YXRlIGFuZCBwdWJsaWMga2V5cGFpciBpbiBTbG9wZXMuIFxuICogQWxsIEFQSXMgdGhhdCBuZWVkIGtleSBwYWlycyBzaG91bGQgZXh0ZW5kIG9uIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIHtcbiAgICBwcm90ZWN0ZWQgcHViazpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIHByaXZrOkJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBrZXlwYWlyLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqL1xuICAgIGdlbmVyYXRlS2V5OihlbnRyb3B5PzpCdWZmZXIpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBhIHByaXZhdGUga2V5IGFuZCBnZW5lcmF0ZXMgdGhlIGFwcHJvcHJpYXRlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICBpbXBvcnRLZXk6KHByaXZrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWVzc2FnZSwgc2lnbnMgaXQsIGFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byBzaWduXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcbiAgICAgKi9cbiAgICBzaWduOihtc2c6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyB0aGUgcHVibGljIGtleSBvZiBhIG1lc3NhZ2Ugc2lnbmVyIGZyb20gYSBtZXNzYWdlIGFuZCBpdHMgYXNzb2NpYXRlZCBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0aGF0J3Mgc2lnbmVkXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIHRoYXQncyBzaWduZWQgb24gdGhlIG1lc3NhZ2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lclxuICAgICAqL1xuICAgIHJlY292ZXI6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIHByaXZhdGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcHVibGljIGtleSBwcm9kdWNlcyB0aGUgc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZWQgbWVzc2FnZVxuICAgICAqIEBwYXJhbSBwdWJrIFRoZSBwdWJsaWMga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBzaWduYXR1cmVcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICB2ZXJpZnk6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIsIHB1Yms6QnVmZmVyKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwcml2YXRlIGtleVxuICAgICAqL1xuICAgIGdldFByaXZhdGVLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcml2aztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFB1YmxpY0tleSA9ICgpOkJ1ZmZlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1Yms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXlTdHJpbmc6KCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3M6KCkgPT4gc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBrZXkgY2hhaW4gaW4gU2xvcGVzLiBcbiAqIEFsbCBlbmRwb2ludHMgdGhhdCBuZWVkIGtleSBjaGFpbnMgc2hvdWxkIGV4dGVuZCBvbiB0aGlzIGNsYXNzLlxuICogXG4gKiBAdHlwZXBhcmFtIEtQQ2xhc3MgQ2xhc3MgZXh0ZW5kaW5nIFtbS2V5UGFpcl1dIHdoaWNoIGlzIHVzZWQgYXMgdGhlIGtleSBpbiBbW0tleUNoYWluXV1cbiAqL1xuZXhwb3J0IGNsYXNzIEtleUNoYWluPEtQQ2xhc3MgZXh0ZW5kcyBLZXlQYWlyPiB7XG4gICAgcHJvdGVjdGVkIGtleXM6e1thZGRyZXNzOiBzdHJpbmddOiBLUENsYXNzfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcga2V5IHBhaXIsIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IGtleSBwYWlyXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weTpCdWZmZXIgfCBib29sZWFuKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBrZXkgcGFpciwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBrZXkgcGFpclxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIGtleSBjaGFpbi5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNlcyA9ICgpOkFycmF5PHN0cmluZz4gPT4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBrZXkgcGFpciB0byB0aGUgbGlzdCBvZiB0aGUga2V5cyBtYW5hZ2VzIGluIHRoZSBrZXljaGFpbi5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbmV3S2V5IEEga2V5IHBhaXIgb2YgdGhlIGFwcHJvcHJpYXRlIGNsYXNzIHRvIGJlIGFkZGVkIHRvIHRoZSBrZXljaGFpblxuICAgICAqL1xuICAgIGFkZEtleSA9IChuZXdLZXk6S1BDbGFzcykgPT4ge1xuICAgICAgICB0aGlzLmtleXNbbmV3S2V5LmdldEFkZHJlc3MoKV0gPSBuZXdLZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIHRoZXJlIGlzIGEga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byBjaGVjayBmb3IgZXhpc3RlbmNlIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBpZiBub3QgZm91bmRcbiAgICAgKi9cbiAgICBoYXNLZXkgPSAoYWRkcmVzczpzdHJpbmcpOmJvb2xlYW4gPT4ge1xuICAgICAgICByZXR1cm4gKGFkZHJlc3MgaW4gdGhpcy5rZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBrZXkgcGFpciBsaXN0ZWQgdW5kZXIgdGhlIHByb3ZpZGVkIGFkZHJlc3NcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYWRkcmVzcyBUaGUgYWRkcmVzcyB0byByZXRyaWV2ZSBmcm9tIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGtleSBwYWlyIGluIHRoZSBrZXlzIGRhdGFiYXNlXG4gICAgICovXG4gICAgZ2V0S2V5ID0gKGFkZHJlc3M6c3RyaW5nKTogS1BDbGFzcyA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleXNbYWRkcmVzc107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaW5zdGFuY2Ugb2YgS2V5Q2hhaW4uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBhIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IG9mIGFuIGV4YWN0IGxlbmd0aC5cbiAqIFxuICogQ3JlYXRlIGEgY2xhc3MgdGhhdCBleHRlbmRzIHRoaXMgb25lIGFuZCBvdmVycmlkZSBic2l6ZSB0byBtYWtlIGl0IHZhbGlkYXRlIGZvciBleGFjdGx5IHRoZSBjb3JyZWN0IGxlbmd0aC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5CeXRlcyB7XG4gICAgcHJvdGVjdGVkIGJ5dGVzOkJ1ZmZlcjtcbiAgICBwcm90ZWN0ZWQgYnNpemU6bnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgZXhhY3QgbGVuZ3RoIHJlcXVpcmVtZW50IG9mIHRoaXMgY2xhc3NcbiAgICAgKi9cbiAgICBnZXRTaXplID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIGJhc2UtNTggZW5jb2RlZCBzdHJpbmcsIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIHNpemUgb2YgdGhlIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgZnJvbVN0cmluZyA9IChiNThzdHI6c3RyaW5nKTpudW1iZXIgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGI1OHN0cikpO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbVN0cmluZzogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIFtbQnVmZmVyXV0sIHZlcmlmaWVzIGl0cyBsZW5ndGgsIGFuZCBzdG9yZXMgaXQuIFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21CdWZmZXIgPSAoYnVmZjpCdWZmZXIpOm51bWJlciA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZihidWZmLmxlbmd0aCAhPSB0aGlzLmJzaXplKXtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJ1ZmZlciBsZW5ndGggbXVzdCBiZSBleGFjdGx5IFwiICsgdGhpcy5ic2l6ZSArIFwiIGJ5dGVzLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYnl0ZXMgPSBCdWZmZXIuZnJvbShidWZmKTtcbiAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgbGV0IGVtc2c6c3RyaW5nID0gXCJFcnJvciAtIE5CeXRlcy5mcm9tQnVmZmVyOiBcIiArIGU7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVtc2cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmJzaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9CdWZmZXIgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ieXRlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYmFzZS01OCBzdHJpbmcgb2YgdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfS5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICB0b1N0cmluZyA9ICgpOnN0cmluZyA9PiB7XG4gICAgICAgIHJldHVybiBiaW50b29scy5idWZmZXJUb0I1OCh0aGlzLnRvQnVmZmVyKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIFtbTkJ5dGVzXV0uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFJQSxvQ0FBaUM7QUFDakMsOENBQXNCO0FBRXRCLDBEQUFtQztBQUluQzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFhLG1CQUFtQjtDQU0vQjtBQU5ELGtEQU1DO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixPQUFPO0lBcUN6Qjs7OztPQUlHO0lBQ0gsWUFBWSxJQUFlLEVBQUUsT0FBYztRQXJDM0M7Ozs7V0FJRztRQUNILGVBQVUsR0FBRyxDQUFDLE9BQWMsRUFBRSxFQUFFO1lBQzVCLElBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBQztnQkFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxFQUFFLEdBQUcsWUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsRUFBRSxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDTCxDQUFDLENBQUE7UUFFRDs7V0FFRztRQUNILGVBQVUsR0FBRyxHQUFZLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxD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RDs7OztXQUlHO1FBQ0gsYUFBUSxHQUFHLEdBQVUsRUFBRTtZQUNuQixPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFBO0lBSWMsQ0FBQztDQUNuQjtBQXhFRCx3QkF3RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgVXRpbHNcbiAqL1xuaW1wb3J0IFNsb3Blc0NvcmUgZnJvbSAnLi4vc2xvcGVzJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgREIgZnJvbSBcIi4vZGJcIjtcbmltcG9ydCB7IFN0b3JlQVBJIH0gZnJvbSAnc3RvcmUyJztcbmltcG9ydCBCaW5Ub29scyAgZnJvbSAnLi9iaW50b29scyc7XG5pbXBvcnQgeyBDbGllbnRSZXF1ZXN0IH0gZnJvbSBcImh0dHBcIjtcbmltcG9ydCB7IEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuLyoqXG4gKiBSZXNwb25zZSBkYXRhIGZvciBIVFRQIHJlcXVlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgUmVxdWVzdFJlc3BvbnNlRGF0YSB7XG4gICAgZGF0YTogc3RyaW5nIHwgb2JqZWN0IHwgQXJyYXk8b2JqZWN0PjtcbiAgICBoZWFkZXJzOm9iamVjdDtcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgcmVxdWVzdDpDbGllbnRSZXF1ZXN0IHwgWE1MSHR0cFJlcXVlc3Q7XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZGVmaW5pbmcgYSBnZW5lcmljIGVuZHBvaW50IHRoYXQgYWxsIGVuZHBvaW50cyBtdXN0IGltcGxlbWVudCAoZXh0ZW5kKS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBjb3JlOlNsb3Blc0NvcmU7XG4gICAgcHJvdGVjdGVkIGJhc2V1cmw6c3RyaW5nO1xuICAgIHByb3RlY3RlZCBkYjpTdG9yZUFQSTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBhdGggb2YgdGhlIEFQSXMgYmFzZXVybC5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L2F2YVwiXG4gICAgICovXG4gICAgc2V0QmFzZVVSTCA9IChiYXNldXJsOnN0cmluZykgPT4ge1xuICAgICAgICBpZih0aGlzLmRiICYmIHRoaXMuYmFzZXVybCAhPT0gYmFzZXVybCl7XG4gICAgICAgICAgICBsZXQgYmFja3VwID0gdGhpcy5kYi5nZXRBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuZGIuY2xlYXJBbGwoKTtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICAgICAgdGhpcy5kYi5zZXRBbGwoYmFja3VwLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYmFzZXVybCA9IGJhc2V1cmw7XG4gICAgICAgICAgICB0aGlzLmRiID0gREIuZ2V0TmFtZXNwYWNlKGJhc2V1cmwpO1xuICAgICAgICB9XG4gICAgfSBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBwYXRoLiBcbiAgICAgKi9cbiAgICBnZXRCYXNlVVJMID0gKCkgOiBzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNldXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGJhc2V1cmwncyBkYXRhYmFzZS5cbiAgICAgKi9cbiAgICBnZXREQiA9ICgpOlN0b3JlQVBJID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIGNvcmUgUmVmZXJlbmNlIHRvIHRoZSBTbG9wZXMgaW5zdGFuY2UgdXNpbmcgdGhpcyBiYXNldXJsXG4gICAgICogQHBhcmFtIGJhc2V1cmwgUGF0aCB0byB0aGUgYmFzZXVybCAtIGV4OiBcIi9leHQvc3VibmV0L2F2bVwiXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY29yZTpTbG9wZXNDb3JlLCBiYXNldXJsOnN0cmluZykge1xuICAgICAgICB0aGlzLmNvcmUgPSBjb3JlO1xuICAgICAgICB0aGlzLnNldEJhc2VVUkwoYmFzZXVybCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgSlJQQ0FQSSBleHRlbmRzIEFQSUJhc2Uge1xuICAgIHByb3RlY3RlZCBqcnBjVmVyc2lvbjpzdHJpbmcgPSBcIjIuMFwiO1xuICAgIHByb3RlY3RlZCBycGNpZCA9IDE7XG4gICAgY2FsbE1ldGhvZCA9IGFzeW5jIChtZXRob2Q6c3RyaW5nLCBwYXJhbXM/OkFycmF5PG9iamVjdD4gfCBvYmplY3QsIGJhc2V1cmw/OnN0cmluZyk6UHJvbWlzZTxSZXF1ZXN0UmVzcG9uc2VEYXRhPiA9PiB7XG4gICAgICAgIGxldCBlcCA9IGJhc2V1cmwgPyBiYXNldXJsIDogdGhpcy5iYXNldXJsO1xuICAgICAgICBsZXQgcnBjOm9iamVjdCA9IHt9O1xuICAgICAgICBycGNbXCJpZFwiXSA9IHRoaXMucnBjaWQ7XG4gICAgICAgIHJwY1tcIm1ldGhvZFwiXSA9IG1ldGhvZDtcblxuICAgICAgICAvLyBTZXQgcGFyYW1ldGVycyBpZiBleGlzdHNcbiAgICAgICAgaWYocGFyYW1zKXtcbiAgICAgICAgICAgIHJwY1sncGFyYW1zJ10gPSBwYXJhbXM7XG4gICAgICAgIH0gZWxzZSBpZih0aGlzLmpycGNWZXJzaW9uID09IFwiMS4wXCIpe1xuICAgICAgICAgICAgcnBjW1wicGFyYW1zXCJdID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZih0aGlzLmpycGNWZXJzaW9uICE9IFwiMS4wXCIpIHtcbiAgICAgICAgICAgIHJwY1tcImpzb25ycGNcIl0gPSB0aGlzLmpycGNWZXJzaW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGhlYWRlcnM6b2JqZWN0ID0ge1wiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCJ9O1xuXG4gICAgICAgIGxldCBheENvbmY6QXhpb3NSZXF1ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgYmFzZVVSTDp0aGlzLmNvcmUuZ2V0UHJvdG9jb2woKStcIjovL1wiK3RoaXMuY29yZS5nZXRJUCgpK1wiOlwiK3RoaXMuY29yZS5nZXRQb3J0KCksXG4gICAgICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvcmUucG9zdChlcCwge30sIEpTT04uc3RyaW5naWZ5KHJwYyksIGhlYWRlcnMsIGF4Q29uZikudGhlbiggKHJlc3A6UmVxdWVzdFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYocmVzcC5zdGF0dXMgPj0gMjAwICYmIHJlc3Auc3RhdHVzIDwgMzAwKXtcbiAgICAgICAgICAgICAgICB0aGlzLnJwY2lkICs9IDE7XG4gICAgICAgICAgICAgICAgaWYodHlwZW9mIHJlc3AuZGF0YSA9PT0gXCJzdHJpbmdcIil7XG4gICAgICAgICAgICAgICAgICAgIHJlc3AuZGF0YSA9IEpTT04ucGFyc2UocmVzcC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gICBcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJwY2lkLCBhIHN0cmljdGx5LWluY3JlYXNpbmcgbnVtYmVyLCBzdGFydGluZyBmcm9tIDEsIGluZGljYXRpbmcgdGhlIG5leHQgcmVxdWVzdCBJRCB0aGF0IHdpbGwgYmUgc2VudC5cbiAgICAgKi9cbiAgICBnZXRSUENJRCA9ICgpOm51bWJlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJwY2lkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBjb3JlIFJlZmVyZW5jZSB0byB0aGUgU2xvcGVzIGluc3RhbmNlIHVzaW5nIHRoaXMgZW5kcG9pbnRcbiAgICAgKiBAcGFyYW0gYmFzZXVybCBQYXRoIG9mIHRoZSBBUElzIGJhc2V1cmwgLSBleDogXCIvZXh0L3N1Ym5ldC9hdm1cIlxuICAgICAqIEBwYXJhbSBqcnBjVmVyc2lvbiBUaGUganJwYyB2ZXJzaW9uIHRvIHVzZSwgZGVmYXVsdCBcIjIuMFwiLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGNvcmU6U2xvcGVzQ29yZSwgYmFzZXVybDpzdHJpbmcsIGpycGNWZXJzaW9uOnN0cmluZyA9IFwiMi4wXCIpIHtcbiAgICAgICAgc3VwZXIoY29yZSwgYmFzZXVybCk7XG4gICAgICAgIHRoaXMuanJwY1ZlcnNpb24gPSBqcnBjVmVyc2lvbjtcbiAgICAgICAgdGhpcy5ycGNpZCA9IDE7XG4gICAgfVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBwcml2YXRlIGFuZCBwdWJsaWMga2V5cGFpciBpbiBTbG9wZXMuIFxuICogQWxsIEFQSXMgdGhhdCBuZWVkIGtleSBwYWlycyBzaG91bGQgZXh0ZW5kIG9uIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIHtcbiAgICBwcm90ZWN0ZWQgcHViazpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIHByaXZrOkJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIG5ldyBrZXlwYWlyLlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbnRyb3B5IE9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZSBuZWNlc3NhcnkgdG8gcHJvZHVjZSBzZWN1cmUga2V5c1xuICAgICAqL1xuICAgIGdlbmVyYXRlS2V5OihlbnRyb3B5PzpCdWZmZXIpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogSW1wb3J0cyBhIHByaXZhdGUga2V5IGFuZCBnZW5lcmF0ZXMgdGhlIGFwcHJvcHJpYXRlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHByaXZrIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gcmVwcmVzZW50aW5nIHRoZSBwcml2YXRlIGtleSBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICBpbXBvcnRLZXk6KHByaXZrOkJ1ZmZlcikgPT4gYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgbWVzc2FnZSwgc2lnbnMgaXQsIGFuZCByZXR1cm5zIHRoZSBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0byBzaWduXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBzaWduYXR1cmVcbiAgICAgKi9cbiAgICBzaWduOihtc2c6QnVmZmVyKSA9PiBCdWZmZXI7XG5cbiAgICAvKipcbiAgICAgKiBSZWNvdmVycyB0aGUgcHVibGljIGtleSBvZiBhIG1lc3NhZ2Ugc2lnbmVyIGZyb20gYSBtZXNzYWdlIGFuZCBpdHMgYXNzb2NpYXRlZCBzaWduYXR1cmUuXG4gICAgICogXG4gICAgICogQHBhcmFtIG1zZyBUaGUgbWVzc2FnZSB0aGF0J3Mgc2lnbmVkXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIHRoYXQncyBzaWduZWQgb24gdGhlIG1lc3NhZ2VcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9IGNvbnRhaW5pbmcgdGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lclxuICAgICAqL1xuICAgIHJlY292ZXI6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIpID0+IEJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIFZlcmlmaWVzIHRoYXQgdGhlIHByaXZhdGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvdmlkZWQgcHVibGljIGtleSBwcm9kdWNlcyB0aGUgc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gbXNnIFRoZSBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlXG4gICAgICogQHBhcmFtIHNpZyBUaGUgc2lnbmF0dXJlIG9mIHRoZSBzaWduZWQgbWVzc2FnZVxuICAgICAqIEBwYXJhbSBwdWJrIFRoZSBwdWJsaWMga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBzaWduYXR1cmVcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmVcbiAgICAgKi9cbiAgICB2ZXJpZnk6KG1zZzpCdWZmZXIsIHNpZzpCdWZmZXIsIHB1Yms6QnVmZmVyKSA9PiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBjb250YWluaW5nIHRoZSBwcml2YXRlIGtleVxuICAgICAqL1xuICAgIGdldFByaXZhdGVLZXkgPSAoKTpCdWZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcml2aztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMga2V5LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0gY29udGFpbmluZyB0aGUgcHVibGljIGtleVxuICAgICAqL1xuICAgIGdldFB1YmxpY0tleSA9ICgpOkJ1ZmZlciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1Yms7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJpdmF0ZSBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQcml2YXRlS2V5U3RyaW5nOigpID0+IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHB1YmxpYyBrZXkuXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHB1YmxpYyBrZXlcbiAgICAgKi9cbiAgICBnZXRQdWJsaWNLZXlTdHJpbmc6KCkgPT4gc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYWRkcmVzc1xuICAgICAqL1xuICAgIGdldEFkZHJlc3M6KCkgPT4gc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxufVxuXG4vKipcbiAqIENsYXNzIGZvciByZXByZXNlbnRpbmcgYSBrZXkgY2hhaW4gaW4gU2xvcGVzLiBcbiAqIEFsbCBlbmRwb2ludHMgdGhhdCBuZWVkIGtleSBjaGFpbnMgc2hvdWxkIGV4dGVuZCBvbiB0aGlzIGNsYXNzLlxuICogXG4gKiBAdHlwZXBhcmFtIEtQQ2xhc3MgQ2xhc3MgZXh0ZW5kaW5nIFtbS2V5UGFpcl1dIHdoaWNoIGlzIHVzZWQgYXMgdGhlIGtleSBpbiBbW0tleUNoYWluXV1cbiAqL1xuZXhwb3J0IGNsYXNzIEtleUNoYWluPEtQQ2xhc3MgZXh0ZW5kcyBLZXlQYWlyPiB7XG4gICAgcHJvdGVjdGVkIGtleXM6e1thZGRyZXNzOiBzdHJpbmddOiBLUENsYXNzfSA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogTWFrZXMgYSBuZXcga2V5IHBhaXIsIHJldHVybnMgdGhlIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGVudHJvcHkgT3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwcm9kdWNlIHNlY3VyZSBrZXlzXG4gICAgICogXG4gICAgICogQHJldHVybnMgQWRkcmVzcyBvZiB0aGUgbmV3IGtleSBwYWlyXG4gICAgICovXG4gICAgbWFrZUtleTooZW50cm9weTpCdWZmZXIgfCBib29sZWFuKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIHByaXZhdGUga2V5LCBtYWtlcyBhIG5ldyBrZXkgcGFpciwgcmV0dXJucyB0aGUgYWRkcmVzcy5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcHJpdmsgQSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSByZXByZXNlbnRpbmcgdGhlIHByaXZhdGUga2V5IFxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEFkZHJlc3Mgb2YgdGhlIG5ldyBrZXkgcGFpclxuICAgICAqL1xuICAgIGltcG9ydEtleToocHJpdms6QnVmZmVyKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIGtleSBjaGFpbi5cbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mIHRoZSBhZGRyZXNzZXNcbiAgICAgKi9cbiAgICBnZXRBZGRyZXNzZXMgPSAoKTpBcnJheTxzdHJpbmc+ID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMua2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUga2V5IHBhaXIgdG8gdGhlIGxpc3Qgb2YgdGhlIGtleXMgbWFuYWdlcyBpbiB0aGUga2V5Y2hhaW4uXG4gICAgICogXG4gICAgICogQHBhcmFtIG5ld0tleSBBIGtleSBwYWlyIG9mIHRoZSBhcHByb3ByaWF0ZSBjbGFzcyB0byBiZSBhZGRlZCB0byB0aGUga2V5Y2hhaW5cbiAgICAgKi9cbiAgICBhZGRLZXkgPSAobmV3S2V5OktQQ2xhc3MpID0+IHtcbiAgICAgICAgdGhpcy5rZXlzW25ld0tleS5nZXRBZGRyZXNzKCldID0gbmV3S2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGVyZSBpcyBhIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHByb3ZpZGVkIGFkZHJlc3MuXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gY2hlY2sgZm9yIGV4aXN0ZW5jZSBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRydWUgb24gc3VjY2VzcywgZmFsc2UgaWYgbm90IGZvdW5kXG4gICAgICovXG4gICAgaGFzS2V5ID0gKGFkZHJlc3M6c3RyaW5nKTpib29sZWFuID0+IHtcbiAgICAgICAgcmV0dXJuIChhZGRyZXNzIGluIHRoaXMua2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUga2V5IHBhaXIgbGlzdGVkIHVuZGVyIHRoZSBwcm92aWRlZCBhZGRyZXNzXG4gICAgICogXG4gICAgICogQHBhcmFtIGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gcmV0cmlldmUgZnJvbSB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBrZXkgcGFpciBpbiB0aGUga2V5cyBkYXRhYmFzZVxuICAgICAqL1xuICAgIGdldEtleSA9IChhZGRyZXNzOnN0cmluZyk6IEtQQ2xhc3MgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlzW2FkZHJlc3NdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluc3RhbmNlIG9mIEtleUNoYWluLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyB0aGF0IGltcGxlbWVudHMgYmFzaWMgZnVuY3Rpb25hbGl0eSBmb3IgbWFuYWdpbmcgYSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfSBvZiBhbiBleGFjdCBsZW5ndGguXG4gKiBcbiAqIENyZWF0ZSBhIGNsYXNzIHRoYXQgZXh0ZW5kcyB0aGlzIG9uZSBhbmQgb3ZlcnJpZGUgYnNpemUgdG8gbWFrZSBpdCB2YWxpZGF0ZSBmb3IgZXhhY3RseSB0aGUgY29ycmVjdCBsZW5ndGguXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOQnl0ZXMge1xuICAgIHByb3RlY3RlZCBieXRlczpCdWZmZXI7XG4gICAgcHJvdGVjdGVkIGJzaXplOm51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgVGhlIGV4YWN0IGxlbmd0aCByZXF1aXJlbWVudCBvZiB0aGlzIGNsYXNzXG4gICAgICovXG4gICAgZ2V0U2l6ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBiYXNlLTU4IGVuY29kZWQgc3RyaW5nLCB2ZXJpZmllcyBpdHMgbGVuZ3RoLCBhbmQgc3RvcmVzIGl0LlxuICAgICAqIFxuICAgICAqIEByZXR1cm5zIFRoZSBzaXplIG9mIHRoZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIGZyb21TdHJpbmcgPSAoYjU4c3RyOnN0cmluZyk6bnVtYmVyID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuZnJvbUJ1ZmZlcihiaW50b29scy5iNThUb0J1ZmZlcihiNThzdHIpKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICBsZXQgZW1zZzpzdHJpbmcgPSBcIkVycm9yIC0gTkJ5dGVzLmZyb21TdHJpbmc6IFwiICsgZTtcbiAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZW1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBbW0J1ZmZlcl1dLCB2ZXJpZmllcyBpdHMgbGVuZ3RoLCBhbmQgc3RvcmVzIGl0LiBcbiAgICAgKiBcbiAgICAgKiBAcmV0dXJucyBUaGUgc2l6ZSBvZiB0aGUge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn1cbiAgICAgKi9cbiAgICBmcm9tQnVmZmVyID0gKGJ1ZmY6QnVmZmVyKTpudW1iZXIgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYoYnVmZi5sZW5ndGggIT0gdGhpcy5ic2l6ZSl7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSBcIiArIHRoaXMuYnNpemUgKyBcIiBieXRlcy5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmJ5dGVzID0gQnVmZmVyLmZyb20oYnVmZik7XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIGxldCBlbXNnOnN0cmluZyA9IFwiRXJyb3IgLSBOQnl0ZXMuZnJvbUJ1ZmZlcjogXCIgKyBlO1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlbXNnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ic2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIHN0b3JlZCB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXJ8QnVmZmVyfVxuICAgICAqL1xuICAgIHRvQnVmZmVyID0gKCk6QnVmZmVyID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGJhc2UtNTggc3RyaW5nIG9mIHRoZSBzdG9yZWQge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyfEJ1ZmZlcn0uXG4gICAgICogXG4gICAgICogQHJldHVybnMgQSBiYXNlLTU4IHN0cmluZyBvZiB0aGUgc3RvcmVkIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlcnxCdWZmZXJ9XG4gICAgICovXG4gICAgdG9TdHJpbmcgPSAoKTpzdHJpbmcgPT4ge1xuICAgICAgICByZXR1cm4gYmludG9vbHMuYnVmZmVyVG9CNTgodGhpcy50b0J1ZmZlcigpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbnN0YW5jZSBvZiBbW05CeXRlc11dLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==

@@ -150,4 +150,4 @@ "use strict";

let amount = new bn_js_1.default(amnt);
let addresses = api.keyChain().getAddreses();
let fallAddresses = keymgr2.getAddreses();
let addresses = api.keyChain().getAddresses();
let fallAddresses = keymgr2.getAddresses();
let locktime = new bn_js_1.default(54321);

@@ -253,2 +253,2 @@ let fallLocktime = locktime.add(new bn_js_1.default(50));

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0cy9hcGlzL2F2bS9hcGkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0M7QUFDeEMsNkJBQTZCO0FBQzdCLHdEQUE4RDtBQUM5RCxvREFBZ0U7QUFDaEUsb0NBQStCO0FBQy9CLGtEQUF1QjtBQUN2QixrRUFBMEM7QUFDMUMsOENBQW1EO0FBQ25ELGtEQUEwRjtBQUMxRixnREFBNEM7QUFDNUMsOERBQXFDO0FBRXJDLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7SUFDcEIsTUFBTSxTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sWUFBWSxHQUFVLG1EQUFtRCxDQUFDO0lBQ2hGLE1BQU0sRUFBRSxHQUFVLFdBQVcsQ0FBQztJQUM5QixNQUFNLElBQUksR0FBVSxJQUFJLENBQUM7SUFDekIsTUFBTSxRQUFRLEdBQVUsT0FBTyxDQUFDO0lBRWhDLElBQUksUUFBUSxHQUFVLFNBQVMsQ0FBQztJQUNoQyxJQUFJLFFBQVEsR0FBVSxVQUFVLENBQUM7SUFFakMsSUFBSSxNQUFNLEdBQVUsSUFBSSxZQUFNLENBQUMsRUFBRSxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxJQUFJLEdBQVUsQ0FBQztJQUVmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxHQUFHLEdBQUcsSUFBSSxhQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNYLHlCQUFTLENBQUMsS0FBSyxFQUFF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QUFFLEdBQVEsRUFBRTtZQUMvQixJQUFJLEdBQUcsR0FBYyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLGVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkgsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV6QixJQUFJLElBQUksR0FBVSxrRUFBa0UsQ0FBQztZQUVyRixJQUFJLE1BQU0sR0FBbUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sR0FBVTtnQkFDakIsUUFBUSxFQUFFO29CQUNOLE1BQU0sRUFBRSxJQUFJO2lCQUNmO2FBQ0osQ0FBQztZQUNGLElBQUksV0FBVyxHQUFHO2dCQUNkLElBQUksRUFBRSxPQUFPO2FBQ2hCLENBQUM7WUFFRix5QkFBUyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwQyxJQUFJLFFBQVEsR0FBVSxNQUFNLE1BQU0sQ0FBQztZQUVuQyxNQUFNLENBQUMseUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFUCxDQUFDLENBQUMsQ0FBQztBQUdQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vY2tBeGlvcyBmcm9tICdqZXN0LW1vY2stYXhpb3MnO1xuaW1wb3J0IHsgU2xvcGVzIH0gZnJvbSBcInNyY1wiO1xuaW1wb3J0IEFWTUFQSSwgeyBQZXJzaXN0YW5jZU9wdGlvbnMgfSBmcm9tIFwic3JjL2FwaXMvYXZtL2FwaVwiO1xuaW1wb3J0IHsgQVZNS2V5UGFpciwgQVZNS2V5Q2hhaW4gfSBmcm9tICdzcmMvYXBpcy9hdm0va2V5Y2hhaW4nO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgQk4gZnJvbSBcImJuLmpzXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCB7IFVUWE9TZXQsIFVUWE8gfSBmcm9tICdzcmMvYXBpcy9hdm0vdXR4b3MnO1xuaW1wb3J0IHsgT3V0cHV0LCBPdXRQYXltZW50LCBPdXRUYWtlT3JMZWF2ZSwgT3V0Q3JlYXRlQXNzZXQgfSBmcm9tICdzcmMvYXBpcy9hdm0vb3V0cHV0cyc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9pbnB1dHMnO1xuaW1wb3J0IGNyZWF0ZUhhc2ggZnJvbSBcImNyZWF0ZS1oYXNoXCI7XG5pbXBvcnQgeyBUeFVuc2lnbmVkLCBUeCB9IGZyb20gJ3NyYy9hcGlzL2F2bS90eCc7XG5pbXBvcnQgeyBVbml4Tm93IH0gZnJvbSAnc3JjL2FwaXMvYXZtL3R5cGVzJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuZGVzY3JpYmUoXCJBVk1BUElcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5ldHdvcmtpZDpudW1iZXIgPSA0OTtcbiAgICBjb25zdCBibG9ja2NoYWluaWQ6c3RyaW5nID0gXCI2aDJzNWRlMVZDNjVtZWFqRTFMMlBqdloxTVh2SGMzRjZlcVBDR0t1RHQ0TXhpd2VGXCI7XG4gICAgY29uc3QgaXA6c3RyaW5nID0gJzEyNy4wLjAuMSc7XG4gICAgY29uc3QgcG9ydDpudW1iZXIgPSA5NjUwO1xuICAgIGNvbnN0IHByb3RvY29sOnN0cmluZyA9IFwiaHR0cHNcIjtcblxuICAgIGxldCB1c2VybmFtZTpzdHJpbmcgPSAnQXZhTGFicyc7XG4gICAgbGV0IHBhc3N3b3JkOnN0cmluZyA9ICdwYXNzd29yZCc7XG5cbiAgICBsZXQgc2xvcGVzOlNsb3BlcyA9IG5ldyBTbG9wZXMoaXAscG9ydCxwcm90b2NvbCwgbmV0d29ya2lkLCB1bmRlZmluZWQsIHRydWUpO1xuICAgIGxldCBhcGk6QVZNQVBJO1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgICAgYXBpID0gbmV3IEFWTUFQSShzbG9wZXMsIFwiL2V4dC9zdWJuZXQvYXZtXCIsIGJsb2NrY2hhaW5pZCk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgICBtb2NrQXhpb3MucmVzZXQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NyZWF0ZUFzc2V0JywgYXN5bmMgKCk9PntcbiAgICAgICAgbGV0IGtwOkFWTUtleVBhaXIgPSBuZXcgQVZNS2V5UGFpcigpO1xuICAgICAgICBrcC5pbXBvcnRLZXkoQnVmZmVyLmZyb20oXCJlZjliZjJkNDQzNjQ5MWMxNTM5NjdjOTcwOWRkOGU4Mjc5NWJkYjliNWFkNDRlZTIyYzI5MDMwMDVkMWNmNjc2XCIsIFwiaGV4XCIpKTtcbiAgICAgICAgXG4gICAgICAgIGxldCBhbW91bnQ6bnVtYmVyID0gMTAwMDA7XG4gICAgICAgIGxldCBhZGRyZXNzOnN0cmluZyA9IGtwLmdldEFkZHJlc3MoKTtcbiAgICAgICAgbGV0IGFzc2V0aWQ6c3RyaW5nID0gXCI4YTVkMmQzMmU2OGJjNTAwMzZlNGQwODYwNDQ2MTdmZTRhMGEwMjk2YjI3NDk5OWJhNTY4ZWE5MmRhNDZkNTMzXCI7XG5cbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPHN0cmluZz4gPSBhcGkuY3JlYXRlQXNzZXQoYW1vdW50LGFkZHJlc3MpO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgJ2Fzc2V0SUQnOiBhc3NldGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXNwb25zZU9iaiA9IHtcbiAgICAgICAgICAgIGRhdGE6IHBheWxvYWRcbiAgICAgICAgfTtcblxuICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlOnN0cmluZyA9IGF3YWl0IHJlc3VsdDtcblxuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKGFzc2V0aWQpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0VHhTdGF0dXMnLCBhc3luYyAoKT0+e1xuICAgICAgICBsZXQgdHhpZDpzdHJpbmcgPSBcImY5NjY3NTBmNDM4ODY3YzNjOTgyOGRkY2RiZTY2MGUyMWNjZGJiMzZhOTI3Njk1OGYwMTFiYTQ3MmY3NWQ0ZTdcIjtcblxuICAgICAgICBsZXQgcmVzdWx0OlByb21pc2U8c3RyaW5nPiA9IGFwaS5nZXRUeFN0YXR1cyh0eGlkKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgICdzdGF0dXMnOiBcImFjY2VwdGVkXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTogcGF5bG9hZFxuICAgICAgICB9O1xuXG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6c3RyaW5nID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QocmVzcG9uc2UpLnRvQmUoXCJhY2NlcHRlZFwiKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldFVUWE9zJywgYXN5bmMgKCk9PntcbiAgICAgICAgLy9QYXltZW50XG4gICAgICAgIGxldCBPUFVUWE9zdHI6c3RyaW5nID0gXCI0OU44a2d4a1h0dVRHNXRzVHk3VWNjdktnSnE5WnZ5dlhVTGJ5Q2oyR1J1YzlWcm41bnY1Szh0NE5jQTRvbVZqZzhpWUozSGhaYTNIU3lpemFXR3I5WDNYWmhCVEV3ZVV2dXhjYUh6ZDN1R2lnMnE2Y0VTZFc1cldxV3M1bWVqU0tNaXFOQlZFUE1qZlNVdjNrdnpLbm5RUGk0djdlakthdXJOdVwiO1xuICAgICAgICAvL1Rha2Utb3ItTGVhdmVcbiAgICAgICAgbGV0IFRPTFVUWE9zdHI6c3RyaW5nID0gXCIyQUNWS2VMQVREZVo5aDNNa01iU1M3dVRmaWM1MWFuWDZHZG1hVXdCSDNRNnBvTUJHeG00eHY1cXZhU2ZwUllBVERvZmZYUlZwZFV3aDJHV3h1VG9UYm42N0hFNDJrUEg5MUxoczJjUXF6WTc2Wlh2MjN6NzNFVUNrb0JmbUxGakI3MlNIY1QyeHNXWHg1NXV2OWlTck1qcmI1Z1hoUk1DUnIyUTU5cUxFREdvZ29hMWo0WHpORDgyRHdtU05jV3FYcVFDdzhNdDZUQUpSZWUyVjhwR3BDXCI7XG4gICAgICAgIC8vQ3JlYXRlQXNzZXRcbiAgICAgICAgbGV0IENBVVRYT3N0cjpzdHJpbmcgPSBcIlBvNTNVaUFvN3lHODE2WW5Dalg2eW1meHZDSFZGeVFhVUdrVlB2b3ZGc2c4UTZ5VWJxckRrd2RUZmZnekg2SDlMdHFUcUJBQlRnSkZYcmdSRU55SFlya3pkQW11Q0xqZjJVdUJ6RHhhc1NuM3REM1VxSFJWQnpXV1ZHU0hvbTZlMnVmZmQyUTJ4SlJMdVhBdGJ1UlZBR2lTMUpvZkNXUWtNaDdweFhNQVpVRWVVZkJcIjtcbiAgICAgICAgXG4gICAgICAgIGxldCBzZXQ6VVRYT1NldCA9IG5ldyBVVFhPU2V0KCk7XG4gICAgICAgIHNldC5hZGQoT1BVVFhPc3RyKTtcbiAgICAgICAgc2V0LmFkZEFycmF5KFtUT0xVVFhPc3RyLCBDQVVUWE9zdHJdKTtcblxuICAgICAgICBsZXQgcGVyc2lzdE9wdHM6UGVyc2lzdGFuY2VPcHRpb25zID0gbmV3IFBlcnNpc3RhbmNlT3B0aW9ucyhcInRlc3RcIiwgdHJ1ZSwgXCJ1bmlvblwiKTtcbiAgICAgICAgZXhwZWN0KHBlcnNpc3RPcHRzLmdldE1lcmdlUnVsZSgpKS50b0JlKFwidW5pb25cIik7XG5cbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPFVUWE9TZXQ+ID0gYXBpLmdldFVUWE9zKHNldC5nZXRBZGRyZXNzZXMoKSwgcGVyc2lzdE9wdHMpO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgJ3V0eG9zJzogW09QVVRYT3N0ciwgVE9MVVRYT3N0ciwgQ0FVVFhPc3RyXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICBkYXRhOiBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIGxldCByZXNwb25zZTpVVFhPU2V0ID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZ2V0QWxsVVRYT1N0cmluZ3MoKS5zb3J0KCkpKS50b0JlKEpTT04uc3RyaW5naWZ5KHNldC5nZXRBbGxVVFhPU3RyaW5ncygpLnNvcnQoKSkpO1xuXG4gICAgICAgIHJlc3VsdCA9IGFwaS5nZXRVVFhPcyhzZXQuZ2V0QWRkcmVzc2VzKCksIHBlcnNpc3RPcHRzKTtcbiAgICAgICAgXG5cbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZ2V0QWxsVVRYT1N0cmluZ3MoKS5zb3J0KCkpKS50b0JlKEpTT04uc3RyaW5naWZ5KHNldC5nZXRBbGxVVFhPU3RyaW5ncygpLnNvcnQoKSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICAgICAgbGV0IHNldDpVVFhPU2V0O1xuICAgICAgICBsZXQga2V5bWdyMjpBVk1LZXlDaGFpbjtcbiAgICAgICAgbGV0IGtleW1ncjM6QVZNS2V5Q2hhaW47XG4gICAgICAgIGxldCBhZGRyczE6QXJyYXk8c3RyaW5nPjtcbiAgICAgICAgbGV0IGFkZHJzMjpBcnJheTxzdHJpbmc+O1xuICAgICAgICBsZXQgYWRkcnMzOkFycmF5PHN0cmluZz47XG4gICAgICAgIGxldCB1dHhvczpBcnJheTxVVFhPPjtcbiAgICAgICAgbGV0IGlucHV0czpBcnJheTxJbnB1dD47XG4gICAgICAgIGxldCBvdXRwdXRzOkFycmF5PE91dHB1dD47XG4gICAgICAgIGNvbnN0IGFtbnQ6bnVtYmVyID0gMTAwMDA7XG4gICAgICAgIGxldCBhc3NldElEOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKFwibWFyeSBoYWQgYSBsaXR0bGUgbGFtYlwiKS5kaWdlc3QoKSk7XG4gICAgICAgIFxuICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIHNldCA9IG5ldyBVVFhPU2V0KCk7XG4gICAgICAgICAgICBhcGkubmV3S2V5Q2hhaW4oKVxuICAgICAgICAgICAga2V5bWdyMiA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICAgICAga2V5bWdyMyA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgICAgICBhZGRyczIgPSBbXTtcbiAgICAgICAgICAgIGFkZHJzMyA9IFtdO1xuICAgICAgICAgICAgdXR4b3MgPSBbXTtcbiAgICAgICAgICAgIGlucHV0cyA9IFtdO1xuICAgICAgICAgICAgb3V0cHV0cyA9IFtdO1xuXG5cblxuICAgICAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCAzOyBpKyspe1xuICAgICAgICAgICAgICAgIGFkZHJzMS5wdXNoKGFwaS5rZXlDaGFpbigpLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICAgICAgYWRkcnMyLnB1c2goa2V5bWdyMi5tYWtlS2V5KCkpO1xuICAgICAgICAgICAgICAgIGFkZHJzMy5wdXNoKGtleW1ncjMubWFrZUtleSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhbW91bnQ6Qk4gPSBuZXcgQk4oYW1udCk7XG4gICAgICAgICAgICBsZXQgYWRkcmVzc2VzOkFycmF5PHN0cmluZz4gPSBhcGkua2V5Q2hhaW4oKS5nZXRBZGRyZXNlcygpO1xuICAgICAgICAgICAgbGV0IGZhbGxBZGRyZXNzZXM6QXJyYXk8c3RyaW5nPiA9IGtleW1ncjIuZ2V0QWRkcmVzZXMoKVxuICAgICAgICAgICAgbGV0IGxvY2t0aW1lOkJOID0gbmV3IEJOKDU0MzIxKTtcbiAgICAgICAgICAgIGxldCBmYWxsTG9ja3RpbWU6Qk4gPSBsb2NrdGltZS5hZGQobmV3IEJOKDUwKSk7XG4gICAgICAgICAgICBsZXQgdGhyZXNob2xkOm51bWJlciA9IDM7XG4gICAgICAgICAgICBsZXQgZmFsbFRocmVzaG9sZDpudW1iZXIgPSAxO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IDU7IGkrKyl7XG4gICAgICAgICAgICAgICAgbGV0IHR4aWQ6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCAzMikpLmRpZ2VzdCgpKTtcbiAgICAgICAgICAgICAgICBsZXQgdHhpZHg6QnVmZmVyID0gQnVmZmVyLmZyb20oYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCA0KSk7XG4gICAgICAgICAgICAgICAgbGV0IG91dDpPdXRwdXQ7XG4gICAgICAgICAgICAgICAgc3dpdGNoKGkgJSAzKXtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gbmV3IE91dFBheW1lbnQoYXNzZXRJRCwgYW1vdW50LCBhZGRyZXNzZXMsIGxvY2t0aW1lLCB0aHJlc2hvbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0VGFrZU9yTGVhdmUoYXNzZXRJRCwgYW1vdW50LCBhZGRyZXNzZXMsIGZhbGxBZGRyZXNzZXMsIGxvY2t0aW1lLCBmYWxsTG9ja3RpbWUsIHRocmVzaG9sZCwgZmFsbFRocmVzaG9sZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gbmV3IE91dENyZWF0ZUFzc2V0KGFtb3VudCwgYWRkcmVzc2VzLCBsb2NrdGltZSwgdGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdXRwdXRzLnB1c2gob3V0KTtcbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgdTpVVFhPID0gbmV3IFVUWE8oKTtcbiAgICAgICAgICAgICAgICB1LmZyb21CdWZmZXIoQnVmZmVyLmNvbmNhdChbdHhpZCwgdHhpZHgsIG91dC50b0J1ZmZlcigpXSkpO1xuICAgICAgICAgICAgICAgIHV0eG9zLnB1c2godSk7XG4gICAgXG4gICAgICAgICAgICAgICAgdHhpZCA9IHUuZ2V0VHhJRCgpO1xuICAgICAgICAgICAgICAgIHR4aWR4ID0gdS5nZXRUeElkeCgpO1xuICAgIFxuICAgICAgICAgICAgICAgIGxldCBpbnB1dDpJbnB1dCA9IG5ldyBJbnB1dCh0eGlkLCB0eGlkeCwgYW1vdW50KTtcbiAgICAgICAgICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXQuYWRkQXJyYXkodXR4b3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0KCdtYWtlVW5zaWduZWRUeCcsICgpID0+IHtcbiAgICBcbiAgICAgICAgICAgIGxldCB0eHUxOlR4VW5zaWduZWQgPSBhcGkubWFrZVVuc2lnbmVkVHgoc2V0LCBuZXcgQk4oYW1udCksIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShhc3NldElEKSk7XG4gICAgICAgICAgICBsZXQgdHh1MjpUeFVuc2lnbmVkID0gc2V0Lm1ha2VVbnNpZ25lZFR4KFxuICAgICAgICAgICAgICAgIG5ldHdvcmtpZCwgYmludG9vbHMuYXZhRGVzZXJpYWxpemUoYmxvY2tjaGFpbmlkKSwgbmV3IEJOKGFtbnQpLCBcbiAgICAgICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBhc3NldElELCBcbiAgICAgICAgICAgICAgICBVbml4Tm93KCksIG5ldyBCTigwKSwgMSwgdW5kZWZpbmVkLCBVbml4Tm93KCksIDFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGV4cGVjdCh0eHUyLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHh1MS50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgICAgIGV4cGVjdCh0eHUyLnRvU3RyaW5nKCkpLnRvQmUodHh1MS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0KCdzaWduVHgnLCAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdHh1MTpUeFVuc2lnbmVkID0gYXBpLm1ha2VVbnNpZ25lZFR4KHNldCwgbmV3IEJOKGFtbnQpLCBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBiaW50b29scy5hdmFTZXJpYWxpemUoYXNzZXRJRCkpO1xuICAgICAgICAgICAgbGV0IHR4dTI6VHhVbnNpZ25lZCA9IHNldC5tYWtlVW5zaWduZWRUeChcbiAgICAgICAgICAgICAgICBuZXR3b3JraWQsIGJpbnRvb2xzLmF2YURlc2VyaWFsaXplKGJsb2NrY2hhaW5pZCksIG5ldyBCTihhbW50KSwgXG4gICAgICAgICAgICAgICAgYWRkcnMzLCBhZGRyczEsIGFkZHJzMSwgYXNzZXRJRCwgVW5peE5vdygpLCBcbiAgICAgICAgICAgICAgICBuZXcgQk4oMCksIDEsIHVuZGVmaW5lZCwgVW5peE5vdygpLCAxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgdHgxOlR4ID0gYXBpLnNpZ25UeCh0eHUxKTtcbiAgICAgICAgICAgIGxldCB0eDI6VHggPSBhcGkuc2lnblR4KHR4dTIpO1xuXG4gICAgICAgICAgICBleHBlY3QodHgyLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHgxLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpO1xuICAgICAgICAgICAgZXhwZWN0KHR4Mi50b1N0cmluZygpKS50b0JlKHR4MS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIFxuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0KCdpc3N1ZVR4IFNlcmlhbGl6ZWQnLCBhc3luYyAoKT0+e1xuICAgICAgICAgICAgbGV0IHR4dTpUeFVuc2lnbmVkID0gYXBpLm1ha2VVbnNpZ25lZFR4KHNldCwgbmV3IEJOKGFtbnQpLCBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBiaW50b29scy5hdmFTZXJpYWxpemUoYXNzZXRJRCkpO1xuICAgICAgICAgICAgbGV0IHR4ID0gYXBpLnNpZ25UeCh0eHUpO1xuXG4gICAgICAgICAgICBsZXQgdHhpZDpzdHJpbmcgPSBcImY5NjY3NTBmNDM4ODY3YzNjOTgyOGRkY2RiZTY2MGUyMWNjZGJiMzZhOTI3Njk1OGYwMTFiYTQ3MmY3NWQ0ZTdcIjtcbiAgICBcbiAgICAgICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxzdHJpbmc+ID0gYXBpLmlzc3VlVHgodHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAndHhJRCc6IHR4aWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHBheWxvYWRcbiAgICAgICAgICAgIH07XG4gICAgXG4gICAgICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgICAgIGxldCByZXNwb25zZTpzdHJpbmcgPSBhd2FpdCByZXN1bHQ7XG4gICAgXG4gICAgICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXNwb25zZSkudG9CZSh0eGlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdCgnaXNzdWVUeCBCdWZmZXInLCBhc3luYyAoKT0+e1xuICAgICAgICAgICAgbGV0IHR4dTpUeFVuc2lnbmVkID0gYXBpLm1ha2VVbnNpZ25lZFR4KHNldCwgbmV3IEJOKGFtbnQpLCBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBiaW50b29scy5hdmFTZXJpYWxpemUoYXNzZXRJRCkpO1xuICAgICAgICAgICAgbGV0IHR4ID0gYXBpLnNpZ25UeCh0eHUpO1xuXG4gICAgICAgICAgICBsZXQgdHhpZDpzdHJpbmcgPSBcImY5NjY3NTBmNDM4ODY3YzNjOTgyOGRkY2RiZTY2MGUyMWNjZGJiMzZhOTI3Njk1OGYwMTFiYTQ3MmY3NWQ0ZTdcIjtcbiAgICBcbiAgICAgICAgICAgIGxldCByZXN1bHQ6UHJvbWlzZTxzdHJpbmc+ID0gYXBpLmlzc3VlVHgodHgudG9CdWZmZXIoKSk7XG4gICAgICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAndHhJRCc6IHR4aWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHBheWxvYWRcbiAgICAgICAgICAgIH07XG4gICAgXG4gICAgICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgICAgIGxldCByZXNwb25zZTpzdHJpbmcgPSBhd2FpdCByZXN1bHQ7XG4gICAgXG4gICAgICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXNwb25zZSkudG9CZSh0eGlkKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGVzdCgnaXNzdWVUeCBDbGFzcyBUeCcsIGFzeW5jICgpPT57XG4gICAgICAgICAgICBsZXQgdHh1OlR4VW5zaWduZWQgPSBhcGkubWFrZVVuc2lnbmVkVHgoc2V0LCBuZXcgQk4oYW1udCksIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShhc3NldElEKSk7XG4gICAgICAgICAgICBsZXQgdHggPSBhcGkuc2lnblR4KHR4dSk7XG5cbiAgICAgICAgICAgIGxldCB0eGlkOnN0cmluZyA9IFwiZjk2Njc1MGY0Mzg4NjdjM2M5ODI4ZGRjZGJlNjYwZTIxY2NkYmIzNmE5Mjc2OTU4ZjAxMWJhNDcyZjc1ZDRlN1wiO1xuICAgIFxuICAgICAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPHN0cmluZz4gPSBhcGkuaXNzdWVUeCh0eCk7XG4gICAgICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgICAgICAndHhJRCc6IHR4aWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHBheWxvYWRcbiAgICAgICAgICAgIH07XG4gICAgXG4gICAgICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgICAgIGxldCByZXNwb25zZTpzdHJpbmcgPSBhd2FpdCByZXN1bHQ7XG4gICAgXG4gICAgICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgICAgIGV4cGVjdChyZXNwb25zZSkudG9CZSh0eGlkKTtcbiAgICAgICAgfSk7XG5cbiAgICB9KTtcbiAgICBcblxufSk7Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0cy9hcGlzL2F2bS9hcGkudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzRUFBd0M7QUFDeEMsNkJBQTZCO0FBQzdCLHdEQUE4RDtBQUM5RCxvREFBZ0U7QUFDaEUsb0NBQStCO0FBQy9CLGtEQUF1QjtBQUN2QixrRUFBMEM7QUFDMUMsOENBQW1EO0FBQ25ELGtEQUEwRjtBQUMxRixnREFBNEM7QUFDNUMsOERBQXFDO0FBRXJDLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFHLGtCQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFeEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7SUFDcEIsTUFBTSxTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sWUFBWSxHQUFVLG1EQUFtRCxDQUFDO0lBQ2hGLE1BQU0sRUFBRSxHQUFVLFdBQVcsQ0FBQztJQUM5QixNQUFNLElBQUksR0FBVSxJQUFJLENBQUM7SUFDekIsTUFBTSxRQUFRLEdBQVUsT0FBTyxDQUFDO0lBRWhDLElBQUksUUFBUSxHQUFVLFNBQVMsQ0FBQztJQUNoQyxJQUFJLFFBQVEsR0FBVSxVQUFVLENBQUM7SUFFakMsSUFBSSxNQUFNLEdBQVUsSUFBSSxZQUFNLENBQUMsRUFBRSxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxJQUFJLEdBQVUsQ0FBQztJQUVmLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDWCxHQUFHLEdBQUcsSUFBSSxhQUFNLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNYLHlCQUFTLENBQUMsS0FBSyxFQUFF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QUFFLEdBQVEsRUFBRTtZQUMvQixJQUFJLEdBQUcsR0FBYyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxJQUFJLGVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkgsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV6QixJQUFJLElBQUksR0FBVSxrRUFBa0UsQ0FBQztZQUVyRixJQUFJLE1BQU0sR0FBbUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLE9BQU8sR0FBVTtnQkFDakIsUUFBUSxFQUFFO29CQUNOLE1BQU0sRUFBRSxJQUFJO2lCQUNmO2FBQ0osQ0FBQztZQUNGLElBQUksV0FBVyxHQUFHO2dCQUNkLElBQUksRUFBRSxPQUFPO2FBQ2hCLENBQUM7WUFFRix5QkFBUyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwQyxJQUFJLFFBQVEsR0FBVSxNQUFNLE1BQU0sQ0FBQztZQUVuQyxNQUFNLENBQUMseUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFUCxDQUFDLENBQUMsQ0FBQztBQUdQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vY2tBeGlvcyBmcm9tICdqZXN0LW1vY2stYXhpb3MnO1xuaW1wb3J0IHsgU2xvcGVzIH0gZnJvbSBcInNyY1wiO1xuaW1wb3J0IEFWTUFQSSwgeyBQZXJzaXN0YW5jZU9wdGlvbnMgfSBmcm9tIFwic3JjL2FwaXMvYXZtL2FwaVwiO1xuaW1wb3J0IHsgQVZNS2V5UGFpciwgQVZNS2V5Q2hhaW4gfSBmcm9tICdzcmMvYXBpcy9hdm0va2V5Y2hhaW4nO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgQk4gZnJvbSBcImJuLmpzXCI7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCB7IFVUWE9TZXQsIFVUWE8gfSBmcm9tICdzcmMvYXBpcy9hdm0vdXR4b3MnO1xuaW1wb3J0IHsgT3V0cHV0LCBPdXRQYXltZW50LCBPdXRUYWtlT3JMZWF2ZSwgT3V0Q3JlYXRlQXNzZXQgfSBmcm9tICdzcmMvYXBpcy9hdm0vb3V0cHV0cyc7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9pbnB1dHMnO1xuaW1wb3J0IGNyZWF0ZUhhc2ggZnJvbSBcImNyZWF0ZS1oYXNoXCI7XG5pbXBvcnQgeyBUeFVuc2lnbmVkLCBUeCB9IGZyb20gJ3NyYy9hcGlzL2F2bS90eCc7XG5pbXBvcnQgeyBVbml4Tm93IH0gZnJvbSAnc3JjL2FwaXMvYXZtL3R5cGVzJztcblxuLyoqXG4gKiBAaWdub3JlXG4gKi9cbmNvbnN0IGJpbnRvb2xzID0gQmluVG9vbHMuZ2V0SW5zdGFuY2UoKTtcblxuZGVzY3JpYmUoXCJBVk1BUElcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG5ldHdvcmtpZDpudW1iZXIgPSA0OTtcbiAgICBjb25zdCBibG9ja2NoYWluaWQ6c3RyaW5nID0gXCI2aDJzNWRlMVZDNjVtZWFqRTFMMlBqdloxTVh2SGMzRjZlcVBDR0t1RHQ0TXhpd2VGXCI7XG4gICAgY29uc3QgaXA6c3RyaW5nID0gJzEyNy4wLjAuMSc7XG4gICAgY29uc3QgcG9ydDpudW1iZXIgPSA5NjUwO1xuICAgIGNvbnN0IHByb3RvY29sOnN0cmluZyA9IFwiaHR0cHNcIjtcblxuICAgIGxldCB1c2VybmFtZTpzdHJpbmcgPSAnQXZhTGFicyc7XG4gICAgbGV0IHBhc3N3b3JkOnN0cmluZyA9ICdwYXNzd29yZCc7XG5cbiAgICBsZXQgc2xvcGVzOlNsb3BlcyA9IG5ldyBTbG9wZXMoaXAscG9ydCxwcm90b2NvbCwgbmV0d29ya2lkLCB1bmRlZmluZWQsIHRydWUpO1xuICAgIGxldCBhcGk6QVZNQVBJO1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgICAgYXBpID0gbmV3IEFWTUFQSShzbG9wZXMsIFwiL2V4dC9zdWJuZXQvYXZtXCIsIGJsb2NrY2hhaW5pZCk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goKCkgPT4ge1xuICAgICAgICBtb2NrQXhpb3MucmVzZXQoKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NyZWF0ZUFzc2V0JywgYXN5bmMgKCk9PntcbiAgICAgICAgbGV0IGtwOkFWTUtleVBhaXIgPSBuZXcgQVZNS2V5UGFpcigpO1xuICAgICAgICBrcC5pbXBvcnRLZXkoQnVmZmVyLmZyb20oXCJlZjliZjJkNDQzNjQ5MWMxNTM5NjdjOTcwOWRkOGU4Mjc5NWJkYjliNWFkNDRlZTIyYzI5MDMwMDVkMWNmNjc2XCIsIFwiaGV4XCIpKTtcbiAgICAgICAgXG4gICAgICAgIGxldCBhbW91bnQ6bnVtYmVyID0gMTAwMDA7XG4gICAgICAgIGxldCBhZGRyZXNzOnN0cmluZyA9IGtwLmdldEFkZHJlc3MoKTtcbiAgICAgICAgbGV0IGFzc2V0aWQ6c3RyaW5nID0gXCI4YTVkMmQzMmU2OGJjNTAwMzZlNGQwODYwNDQ2MTdmZTRhMGEwMjk2YjI3NDk5OWJhNTY4ZWE5MmRhNDZkNTMzXCI7XG5cbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPHN0cmluZz4gPSBhcGkuY3JlYXRlQXNzZXQoYW1vdW50LGFkZHJlc3MpO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgJ2Fzc2V0SUQnOiBhc3NldGlkXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxldCByZXNwb25zZU9iaiA9IHtcbiAgICAgICAgICAgIGRhdGE6IHBheWxvYWRcbiAgICAgICAgfTtcblxuICAgICAgICBtb2NrQXhpb3MubW9ja1Jlc3BvbnNlKHJlc3BvbnNlT2JqKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlOnN0cmluZyA9IGF3YWl0IHJlc3VsdDtcblxuICAgICAgICBleHBlY3QobW9ja0F4aW9zLnJlcXVlc3QpLnRvSGF2ZUJlZW5DYWxsZWRUaW1lcygxKTtcbiAgICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKGFzc2V0aWQpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnZ2V0VHhTdGF0dXMnLCBhc3luYyAoKT0+e1xuICAgICAgICBsZXQgdHhpZDpzdHJpbmcgPSBcImY5NjY3NTBmNDM4ODY3YzNjOTgyOGRkY2RiZTY2MGUyMWNjZGJiMzZhOTI3Njk1OGYwMTFiYTQ3MmY3NWQ0ZTdcIjtcblxuICAgICAgICBsZXQgcmVzdWx0OlByb21pc2U8c3RyaW5nPiA9IGFwaS5nZXRUeFN0YXR1cyh0eGlkKTtcbiAgICAgICAgbGV0IHBheWxvYWQ6b2JqZWN0ID0ge1xuICAgICAgICAgICAgXCJyZXN1bHRcIjoge1xuICAgICAgICAgICAgICAgICdzdGF0dXMnOiBcImFjY2VwdGVkXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV0IHJlc3BvbnNlT2JqID0ge1xuICAgICAgICAgICAgZGF0YTogcGF5bG9hZFxuICAgICAgICB9O1xuXG4gICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICBsZXQgcmVzcG9uc2U6c3RyaW5nID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QocmVzcG9uc2UpLnRvQmUoXCJhY2NlcHRlZFwiKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2dldFVUWE9zJywgYXN5bmMgKCk9PntcbiAgICAgICAgLy9QYXltZW50XG4gICAgICAgIGxldCBPUFVUWE9zdHI6c3RyaW5nID0gXCI0OU44a2d4a1h0dVRHNXRzVHk3VWNjdktnSnE5WnZ5dlhVTGJ5Q2oyR1J1YzlWcm41bnY1Szh0NE5jQTRvbVZqZzhpWUozSGhaYTNIU3lpemFXR3I5WDNYWmhCVEV3ZVV2dXhjYUh6ZDN1R2lnMnE2Y0VTZFc1cldxV3M1bWVqU0tNaXFOQlZFUE1qZlNVdjNrdnpLbm5RUGk0djdlakthdXJOdVwiO1xuICAgICAgICAvL1Rha2Utb3ItTGVhdmVcbiAgICAgICAgbGV0IFRPTFVUWE9zdHI6c3RyaW5nID0gXCIyQUNWS2VMQVREZVo5aDNNa01iU1M3dVRmaWM1MWFuWDZHZG1hVXdCSDNRNnBvTUJHeG00eHY1cXZhU2ZwUllBVERvZmZYUlZwZFV3aDJHV3h1VG9UYm42N0hFNDJrUEg5MUxoczJjUXF6WTc2Wlh2MjN6NzNFVUNrb0JmbUxGakI3MlNIY1QyeHNXWHg1NXV2OWlTck1qcmI1Z1hoUk1DUnIyUTU5cUxFREdvZ29hMWo0WHpORDgyRHdtU05jV3FYcVFDdzhNdDZUQUpSZWUyVjhwR3BDXCI7XG4gICAgICAgIC8vQ3JlYXRlQXNzZXRcbiAgICAgICAgbGV0IENBVVRYT3N0cjpzdHJpbmcgPSBcIlBvNTNVaUFvN3lHODE2WW5Dalg2eW1meHZDSFZGeVFhVUdrVlB2b3ZGc2c4UTZ5VWJxckRrd2RUZmZnekg2SDlMdHFUcUJBQlRnSkZYcmdSRU55SFlya3pkQW11Q0xqZjJVdUJ6RHhhc1NuM3REM1VxSFJWQnpXV1ZHU0hvbTZlMnVmZmQyUTJ4SlJMdVhBdGJ1UlZBR2lTMUpvZkNXUWtNaDdweFhNQVpVRWVVZkJcIjtcbiAgICAgICAgXG4gICAgICAgIGxldCBzZXQ6VVRYT1NldCA9IG5ldyBVVFhPU2V0KCk7XG4gICAgICAgIHNldC5hZGQoT1BVVFhPc3RyKTtcbiAgICAgICAgc2V0LmFkZEFycmF5KFtUT0xVVFhPc3RyLCBDQVVUWE9zdHJdKTtcblxuICAgICAgICBsZXQgcGVyc2lzdE9wdHM6UGVyc2lzdGFuY2VPcHRpb25zID0gbmV3IFBlcnNpc3RhbmNlT3B0aW9ucyhcInRlc3RcIiwgdHJ1ZSwgXCJ1bmlvblwiKTtcbiAgICAgICAgZXhwZWN0KHBlcnNpc3RPcHRzLmdldE1lcmdlUnVsZSgpKS50b0JlKFwidW5pb25cIik7XG5cbiAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPFVUWE9TZXQ+ID0gYXBpLmdldFVUWE9zKHNldC5nZXRBZGRyZXNzZXMoKSwgcGVyc2lzdE9wdHMpO1xuICAgICAgICBsZXQgcGF5bG9hZDpvYmplY3QgPSB7XG4gICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgJ3V0eG9zJzogW09QVVRYT3N0ciwgVE9MVVRYT3N0ciwgQ0FVVFhPc3RyXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICBkYXRhOiBwYXlsb2FkXG4gICAgICAgIH07XG5cbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIGxldCByZXNwb25zZTpVVFhPU2V0ID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZ2V0QWxsVVRYT1N0cmluZ3MoKS5zb3J0KCkpKS50b0JlKEpTT04uc3RyaW5naWZ5KHNldC5nZXRBbGxVVFhPU3RyaW5ncygpLnNvcnQoKSkpO1xuXG4gICAgICAgIHJlc3VsdCA9IGFwaS5nZXRVVFhPcyhzZXQuZ2V0QWRkcmVzc2VzKCksIHBlcnNpc3RPcHRzKTtcbiAgICAgICAgXG5cbiAgICAgICAgbW9ja0F4aW9zLm1vY2tSZXNwb25zZShyZXNwb25zZU9iaik7XG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgcmVzdWx0O1xuXG4gICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDIpO1xuICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UuZ2V0QWxsVVRYT1N0cmluZ3MoKS5zb3J0KCkpKS50b0JlKEpTT04uc3RyaW5naWZ5KHNldC5nZXRBbGxVVFhPU3RyaW5ncygpLnNvcnQoKSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ1RyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICAgICAgbGV0IHNldDpVVFhPU2V0O1xuICAgICAgICBsZXQga2V5bWdyMjpBVk1LZXlDaGFpbjtcbiAgICAgICAgbGV0IGtleW1ncjM6QVZNS2V5Q2hhaW47XG4gICAgICAgIGxldCBhZGRyczE6QXJyYXk8c3RyaW5nPjtcbiAgICAgICAgbGV0IGFkZHJzMjpBcnJheTxzdHJpbmc+O1xuICAgICAgICBsZXQgYWRkcnMzOkFycmF5PHN0cmluZz47XG4gICAgICAgIGxldCB1dHhvczpBcnJheTxVVFhPPjtcbiAgICAgICAgbGV0IGlucHV0czpBcnJheTxJbnB1dD47XG4gICAgICAgIGxldCBvdXRwdXRzOkFycmF5PE91dHB1dD47XG4gICAgICAgIGNvbnN0IGFtbnQ6bnVtYmVyID0gMTAwMDA7XG4gICAgICAgIGxldCBhc3NldElEOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKFwibWFyeSBoYWQgYSBsaXR0bGUgbGFtYlwiKS5kaWdlc3QoKSk7XG4gICAgICAgIFxuICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgICAgIHNldCA9IG5ldyBVVFhPU2V0KCk7XG4gICAgICAgICAgICBhcGkubmV3S2V5Q2hhaW4oKVxuICAgICAgICAgICAga2V5bWdyMiA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICAgICAga2V5bWdyMyA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgICAgICBhZGRyczIgPSBbXTtcbiAgICAgICAgICAgIGFkZHJzMyA9IFtdO1xuICAgICAgICAgICAgdXR4b3MgPSBbXTtcbiAgICAgICAgICAgIGlucHV0cyA9IFtdO1xuICAgICAgICAgICAgb3V0cHV0cyA9IFtdO1xuXG5cblxuICAgICAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCAzOyBpKyspe1xuICAgICAgICAgICAgICAgIGFkZHJzMS5wdXNoKGFwaS5rZXlDaGFpbigpLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICAgICAgYWRkcnMyLnB1c2goa2V5bWdyMi5tYWtlS2V5KCkpO1xuICAgICAgICAgICAgICAgIGFkZHJzMy5wdXNoKGtleW1ncjMubWFrZUtleSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhbW91bnQ6Qk4gPSBuZXcgQk4oYW1udCk7XG4gICAgICAgICAgICBsZXQgYWRkcmVzc2VzOkFycmF5PHN0cmluZz4gPSBhcGkua2V5Q2hhaW4oKS5nZXRBZGRyZXNzZXMoKTtcbiAgICAgICAgICAgIGxldCBmYWxsQWRkcmVzc2VzOkFycmF5PHN0cmluZz4gPSBrZXltZ3IyLmdldEFkZHJlc3NlcygpXG4gICAgICAgICAgICBsZXQgbG9ja3RpbWU6Qk4gPSBuZXcgQk4oNTQzMjEpO1xuICAgICAgICAgICAgbGV0IGZhbGxMb2NrdGltZTpCTiA9IGxvY2t0aW1lLmFkZChuZXcgQk4oNTApKTtcbiAgICAgICAgICAgIGxldCB0aHJlc2hvbGQ6bnVtYmVyID0gMztcbiAgICAgICAgICAgIGxldCBmYWxsVGhyZXNob2xkOm51bWJlciA9IDE7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGZvcihsZXQgaTpudW1iZXIgPSAwOyBpIDwgNTsgaSsrKXtcbiAgICAgICAgICAgICAgICBsZXQgdHhpZDpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDMyKSkuZGlnZXN0KCkpO1xuICAgICAgICAgICAgICAgIGxldCB0eGlkeDpCdWZmZXIgPSBCdWZmZXIuZnJvbShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDQpKTtcbiAgICAgICAgICAgICAgICBsZXQgb3V0Ok91dHB1dDtcbiAgICAgICAgICAgICAgICBzd2l0Y2goaSAlIDMpe1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0UGF5bWVudChhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgbG9ja3RpbWUsIHRocmVzaG9sZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRUYWtlT3JMZWF2ZShhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgZmFsbEFkZHJlc3NlcywgbG9ja3RpbWUsIGZhbGxMb2NrdGltZSwgdGhyZXNob2xkLCBmYWxsVGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0Q3JlYXRlQXNzZXQoYW1vdW50LCBhZGRyZXNzZXMsIGxvY2t0aW1lLCB0aHJlc2hvbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dHB1dHMucHVzaChvdXQpO1xuICAgIFxuICAgICAgICAgICAgICAgIGxldCB1OlVUWE8gPSBuZXcgVVRYTygpO1xuICAgICAgICAgICAgICAgIHUuZnJvbUJ1ZmZlcihCdWZmZXIuY29uY2F0KFt0eGlkLCB0eGlkeCwgb3V0LnRvQnVmZmVyKCldKSk7XG4gICAgICAgICAgICAgICAgdXR4b3MucHVzaCh1KTtcbiAgICBcbiAgICAgICAgICAgICAgICB0eGlkID0gdS5nZXRUeElEKCk7XG4gICAgICAgICAgICAgICAgdHhpZHggPSB1LmdldFR4SWR4KCk7XG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IGlucHV0OklucHV0ID0gbmV3IElucHV0KHR4aWQsIHR4aWR4LCBhbW91bnQpO1xuICAgICAgICAgICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldC5hZGRBcnJheSh1dHhvcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3QoJ21ha2VVbnNpZ25lZFR4JywgKCkgPT4ge1xuICAgIFxuICAgICAgICAgICAgbGV0IHR4dTE6VHhVbnNpZ25lZCA9IGFwaS5tYWtlVW5zaWduZWRUeChzZXQsIG5ldyBCTihhbW50KSwgYWRkcnMzLCBhZGRyczEsIGFkZHJzMSwgYmludG9vbHMuYXZhU2VyaWFsaXplKGFzc2V0SUQpKTtcbiAgICAgICAgICAgIGxldCB0eHUyOlR4VW5zaWduZWQgPSBzZXQubWFrZVVuc2lnbmVkVHgoXG4gICAgICAgICAgICAgICAgbmV0d29ya2lkLCBiaW50b29scy5hdmFEZXNlcmlhbGl6ZShibG9ja2NoYWluaWQpLCBuZXcgQk4oYW1udCksIFxuICAgICAgICAgICAgICAgIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGFzc2V0SUQsIFxuICAgICAgICAgICAgICAgIFVuaXhOb3coKSwgbmV3IEJOKDApLCAxLCB1bmRlZmluZWQsIFVuaXhOb3coKSwgMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgZXhwZWN0KHR4dTIudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eHUxLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpO1xuICAgICAgICAgICAgZXhwZWN0KHR4dTIudG9TdHJpbmcoKSkudG9CZSh0eHUxLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3QoJ3NpZ25UeCcsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB0eHUxOlR4VW5zaWduZWQgPSBhcGkubWFrZVVuc2lnbmVkVHgoc2V0LCBuZXcgQk4oYW1udCksIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShhc3NldElEKSk7XG4gICAgICAgICAgICBsZXQgdHh1MjpUeFVuc2lnbmVkID0gc2V0Lm1ha2VVbnNpZ25lZFR4KFxuICAgICAgICAgICAgICAgIG5ldHdvcmtpZCwgYmludG9vbHMuYXZhRGVzZXJpYWxpemUoYmxvY2tjaGFpbmlkKSwgbmV3IEJOKGFtbnQpLCBcbiAgICAgICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBhc3NldElELCBVbml4Tm93KCksIFxuICAgICAgICAgICAgICAgIG5ldyBCTigwKSwgMSwgdW5kZWZpbmVkLCBVbml4Tm93KCksIDFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCB0eDE6VHggPSBhcGkuc2lnblR4KHR4dTEpO1xuICAgICAgICAgICAgbGV0IHR4MjpUeCA9IGFwaS5zaWduVHgodHh1Mik7XG5cbiAgICAgICAgICAgIGV4cGVjdCh0eDIudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eDEudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgICAgICBleHBlY3QodHgyLnRvU3RyaW5nKCkpLnRvQmUodHgxLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRlc3QoJ2lzc3VlVHggU2VyaWFsaXplZCcsIGFzeW5jICgpPT57XG4gICAgICAgICAgICBsZXQgdHh1OlR4VW5zaWduZWQgPSBhcGkubWFrZVVuc2lnbmVkVHgoc2V0LCBuZXcgQk4oYW1udCksIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShhc3NldElEKSk7XG4gICAgICAgICAgICBsZXQgdHggPSBhcGkuc2lnblR4KHR4dSk7XG5cbiAgICAgICAgICAgIGxldCB0eGlkOnN0cmluZyA9IFwiZjk2Njc1MGY0Mzg4NjdjM2M5ODI4ZGRjZGJlNjYwZTIxY2NkYmIzNmE5Mjc2OTU4ZjAxMWJhNDcyZjc1ZDRlN1wiO1xuICAgIFxuICAgICAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPHN0cmluZz4gPSBhcGkuaXNzdWVUeCh0eC50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eElEJzogdHhpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogcGF5bG9hZFxuICAgICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlOnN0cmluZyA9IGF3YWl0IHJlc3VsdDtcbiAgICBcbiAgICAgICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKHR4aWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0KCdpc3N1ZVR4IEJ1ZmZlcicsIGFzeW5jICgpPT57XG4gICAgICAgICAgICBsZXQgdHh1OlR4VW5zaWduZWQgPSBhcGkubWFrZVVuc2lnbmVkVHgoc2V0LCBuZXcgQk4oYW1udCksIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGJpbnRvb2xzLmF2YVNlcmlhbGl6ZShhc3NldElEKSk7XG4gICAgICAgICAgICBsZXQgdHggPSBhcGkuc2lnblR4KHR4dSk7XG5cbiAgICAgICAgICAgIGxldCB0eGlkOnN0cmluZyA9IFwiZjk2Njc1MGY0Mzg4NjdjM2M5ODI4ZGRjZGJlNjYwZTIxY2NkYmIzNmE5Mjc2OTU4ZjAxMWJhNDcyZjc1ZDRlN1wiO1xuICAgIFxuICAgICAgICAgICAgbGV0IHJlc3VsdDpQcm9taXNlPHN0cmluZz4gPSBhcGkuaXNzdWVUeCh0eC50b0J1ZmZlcigpKTtcbiAgICAgICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eElEJzogdHhpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogcGF5bG9hZFxuICAgICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlOnN0cmluZyA9IGF3YWl0IHJlc3VsdDtcbiAgICBcbiAgICAgICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKHR4aWQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0ZXN0KCdpc3N1ZVR4IENsYXNzIFR4JywgYXN5bmMgKCk9PntcbiAgICAgICAgICAgIGxldCB0eHU6VHhVbnNpZ25lZCA9IGFwaS5tYWtlVW5zaWduZWRUeChzZXQsIG5ldyBCTihhbW50KSwgYWRkcnMzLCBhZGRyczEsIGFkZHJzMSwgYmludG9vbHMuYXZhU2VyaWFsaXplKGFzc2V0SUQpKTtcbiAgICAgICAgICAgIGxldCB0eCA9IGFwaS5zaWduVHgodHh1KTtcblxuICAgICAgICAgICAgbGV0IHR4aWQ6c3RyaW5nID0gXCJmOTY2NzUwZjQzODg2N2MzYzk4MjhkZGNkYmU2NjBlMjFjY2RiYjM2YTkyNzY5NThmMDExYmE0NzJmNzVkNGU3XCI7XG4gICAgXG4gICAgICAgICAgICBsZXQgcmVzdWx0OlByb21pc2U8c3RyaW5nPiA9IGFwaS5pc3N1ZVR4KHR4KTtcbiAgICAgICAgICAgIGxldCBwYXlsb2FkOm9iamVjdCA9IHtcbiAgICAgICAgICAgICAgICBcInJlc3VsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICd0eElEJzogdHhpZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2VPYmogPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogcGF5bG9hZFxuICAgICAgICAgICAgfTtcbiAgICBcbiAgICAgICAgICAgIG1vY2tBeGlvcy5tb2NrUmVzcG9uc2UocmVzcG9uc2VPYmopO1xuICAgICAgICAgICAgbGV0IHJlc3BvbnNlOnN0cmluZyA9IGF3YWl0IHJlc3VsdDtcbiAgICBcbiAgICAgICAgICAgIGV4cGVjdChtb2NrQXhpb3MucmVxdWVzdCkudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3BvbnNlKS50b0JlKHR4aWQpO1xuICAgICAgICB9KTtcblxuICAgIH0pO1xuICAgIFxuXG59KTsiXX0=

@@ -38,4 +38,4 @@ "use strict";

let amount = new bn_js_1.default(amnt);
let addresses = keymgr1.getAddreses();
let fallAddresses = keymgr2.getAddreses();
let addresses = keymgr1.getAddresses();
let fallAddresses = keymgr2.getAddresses();
let locktime = new bn_js_1.default(54321);

@@ -136,2 +136,2 @@ let fallLocktime = locktime.add(new bn_js_1.default(50));

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0cy9hcGlzL2F2bS9pbnB1dHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUFtRDtBQUNuRCxvREFBb0Q7QUFDcEQsZ0RBQTRDO0FBQzVDLDhEQUFxQztBQUNyQyxrRUFBMEM7QUFDMUMsa0RBQXVCO0FBQ3ZCLG9DQUErQjtBQUMvQixrREFBMEY7QUFHMUY7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3hDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLElBQUksR0FBVyxDQUFDO0lBQ2hCLElBQUksT0FBbUIsQ0FBQztJQUN4QixJQUFJLE9BQW1CLENBQUM7SUFDeEIsSUFBSSxNQUFvQixDQUFDO0lBQ3pCLElBQUksTUFBb0IsQ0FBQztJQUN6QixJQUFJLEtBQWlCLENBQUM7SUFDdEIsTUFBTSxJQUFJLEdBQVUsS0FBSyxDQUFDO0lBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixHQUFHLEdBQUcsSUFBSSxlQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsSUFBSSxzQkFBVyxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLElBQUksc0JBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLEtBQUksSUFBSSxDQUFDLEdBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0Qs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QUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRVAsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVVFhPU2V0LCBVVFhPIH0gZnJvbSAnc3JjL2FwaXMvYXZtL3V0eG9zJztcbmltcG9ydCB7IEFWTUtleUNoYWluIH0gZnJvbSAnc3JjL2FwaXMvYXZtL2tleWNoYWluJztcbmltcG9ydCB7IElucHV0IH0gZnJvbSAnc3JjL2FwaXMvYXZtL2lucHV0cyc7XG5pbXBvcnQgY3JlYXRlSGFzaCBmcm9tICdjcmVhdGUtaGFzaCc7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCBCTiBmcm9tICdibi5qcyc7XG5pbXBvcnQge0J1ZmZlcn0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCB7IE91dHB1dCwgT3V0UGF5bWVudCwgT3V0VGFrZU9yTGVhdmUsIE91dENyZWF0ZUFzc2V0IH0gZnJvbSAnc3JjL2FwaXMvYXZtL291dHB1dHMnO1xuXG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBiaW50b29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG5kZXNjcmliZSgnSW5wdXRzJywgKCkgPT4ge1xuICAgIGxldCBzZXQ6VVRYT1NldDtcbiAgICBsZXQga2V5bWdyMTpBVk1LZXlDaGFpbjtcbiAgICBsZXQga2V5bWdyMjpBVk1LZXlDaGFpbjtcbiAgICBsZXQgYWRkcnMxOkFycmF5PHN0cmluZz47XG4gICAgbGV0IGFkZHJzMjpBcnJheTxzdHJpbmc+O1xuICAgIGxldCB1dHhvczpBcnJheTxVVFhPPjtcbiAgICBjb25zdCBhbW50Om51bWJlciA9IDEwMDAwO1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBzZXQgPSBuZXcgVVRYT1NldCgpO1xuICAgICAgICBrZXltZ3IxID0gbmV3IEFWTUtleUNoYWluKCk7XG4gICAgICAgIGtleW1ncjIgPSBuZXcgQVZNS2V5Q2hhaW4oKTtcbiAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgIGFkZHJzMiA9IFtdO1xuICAgICAgICB1dHhvcyA9IFtdO1xuICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IDM7IGkrKyl7XG4gICAgICAgICAgICBhZGRyczEucHVzaChrZXltZ3IxLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczIucHVzaChrZXltZ3IyLm1ha2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMS5nZXRBZGRyZXNlcygpO1xuICAgICAgICBsZXQgZmFsbEFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMi5nZXRBZGRyZXNlcygpXG4gICAgICAgIGxldCBsb2NrdGltZTpCTiA9IG5ldyBCTig1NDMyMSk7XG4gICAgICAgIGxldCBmYWxsTG9ja3RpbWU6Qk4gPSBsb2NrdGltZS5hZGQobmV3IEJOKDUwKSk7XG4gICAgICAgIGxldCB0aHJlc2hvbGQ6bnVtYmVyID0gMztcbiAgICAgICAgbGV0IGZhbGxUaHJlc2hvbGQ6bnVtYmVyID0gMTtcbiAgICAgICAgXG4gICAgICAgIGZvcihsZXQgaTpudW1iZXIgPSAwOyBpIDwgNTsgaSsrKXtcbiAgICAgICAgICAgIGxldCB0eGlkOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGJpbnRvb2xzLmZyb21CTlRvQnVmZmVyKG5ldyBCTihpKSwgMzIpKS5kaWdlc3QoKSk7XG4gICAgICAgICAgICBsZXQgdHhpZHg6QnVmZmVyID0gQnVmZmVyLmZyb20oYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCA0KSk7XG4gICAgICAgICAgICBsZXQgYXNzZXRJRDpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZSh0eGlkKS5kaWdlc3QoKSk7XG4gICAgICAgICAgICBsZXQgb3V0Ok91dHB1dDtcbiAgICAgICAgICAgIHN3aXRjaChpICUgMyl7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0UGF5bWVudChhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgbG9ja3RpbWUsIHRocmVzaG9sZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRUYWtlT3JMZWF2ZShhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgZmFsbEFkZHJlc3NlcywgbG9ja3RpbWUsIGZhbGxMb2NrdGltZSwgdGhyZXNob2xkLCBmYWxsVGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0Q3JlYXRlQXNzZXQoYW1vdW50KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdTpVVFhPID0gbmV3IFVUWE8oKTtcbiAgICAgICAgICAgIHUuZnJvbUJ1ZmZlcihCdWZmZXIuY29uY2F0KFt0eGlkLCB0eGlkeCwgb3V0LnRvQnVmZmVyKCldKSk7XG4gICAgICAgICAgICB1dHhvcy5wdXNoKHUpO1xuICAgICAgICB9XG4gICAgICAgIHNldC5hZGRBcnJheSh1dHhvcyk7XG4gICAgfSk7XG4gICAgdGVzdCgnT3V0UGF5bWVudCcsICgpID0+IHtcbiAgICAgICAgbGV0IHU6VVRYTztcbiAgICAgICAgbGV0IHR4aWQ6QnVmZmVyO1xuICAgICAgICBsZXQgdHhpZHg6QnVmZmVyO1xuICAgICAgICBsZXQgYW1vdW50OkJOID0gbmV3IEJOKGFtbnQpO1xuICAgICAgICBsZXQgaW5wdXQ6SW5wdXQ7XG5cbiAgICAgICAgdSA9IHV0eG9zWzBdO1xuICAgICAgICB0eGlkID0gdS5nZXRUeElEKCk7XG4gICAgICAgIHR4aWR4ID0gdS5nZXRUeElkeCgpO1xuXG4gICAgICAgIGlucHV0ID0gbmV3IElucHV0KHR4aWQsIHR4aWR4LCBhbW91bnQpO1xuICAgICAgICBleHBlY3QoaW5wdXQuZ2V0VVRYT0lEKCkpLnRvQmUodS5nZXRVVFhPSUQoKSk7XG4gICAgICAgIGV4cGVjdChpbnB1dC5nZXRJbnB1dFR5cGUoKSkudG9CZSgwKTtcblxuICAgICAgICBpbnB1dC5hZGRTaWduYXR1cmVJZHgoMCwgYWRkcnMyWzBdKTtcbiAgICAgICAgaW5wdXQuYWRkU2lnbmF0dXJlSWR4KDEsIGFkZHJzMlsxXSk7XG5cbiAgICAgICAgbGV0IG5ld2luOklucHV0ID0gbmV3IElucHV0KCk7XG4gICAgICAgIG5ld2luLmZyb21CdWZmZXIoYmludG9vbHMuYjU4VG9CdWZmZXIoaW5wdXQudG9TdHJpbmcoKSkpO1xuICAgICAgICBleHBlY3QobmV3aW4udG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZShpbnB1dC50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgZXhwZWN0KG5ld2luLmdldFNpZ0lkeHMoKS50b1N0cmluZygpKS50b0JlKGlucHV0LmdldFNpZ0lkeHMoKS50b1N0cmluZygpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ091dFRha2VPckxlYXZlJywgKCkgPT4ge1xuICAgICAgICBsZXQgdTpVVFhPO1xuICAgICAgICBsZXQgdHhpZDpCdWZmZXI7XG4gICAgICAgIGxldCB0eGlkeDpCdWZmZXI7XG4gICAgICAgIGxldCBhbW91bnQ6Qk4gPSBuZXcgQk4oYW1udCk7XG4gICAgICAgIGxldCBpbnB1dDpJbnB1dDtcblxuICAgICAgICB1ID0gdXR4b3NbMV07XG4gICAgICAgIHR4aWQgPSB1LmdldFR4SUQoKTtcbiAgICAgICAgdHhpZHggPSB1LmdldFR4SWR4KCk7XG5cbiAgICAgICAgaW5wdXQgPSBuZXcgSW5wdXQodHhpZCwgdHhpZHgsIGFtb3VudCk7XG4gICAgICAgIGV4cGVjdChpbnB1dC5nZXRVVFhPSUQoKSkudG9CZSh1LmdldFVUWE9JRCgpKTtcbiAgICAgICAgZXhwZWN0KGlucHV0LmdldElucHV0VHlwZSgpKS50b0JlKDApO1xuXG4gICAgICAgIGlucHV0LmFkZFNpZ25hdHVyZUlkeCgwLCBhZGRyczJbMF0pO1xuICAgICAgICBpbnB1dC5hZGRTaWduYXR1cmVJZHgoMSwgYWRkcnMyWzFdKTtcblxuICAgICAgICBsZXQgbmV3aW46SW5wdXQgPSBuZXcgSW5wdXQoKTtcbiAgICAgICAgbmV3aW4uZnJvbUJ1ZmZlcihiaW50b29scy5iNThUb0J1ZmZlcihpbnB1dC50b1N0cmluZygpKSk7XG4gICAgICAgIGV4cGVjdChuZXdpbi50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKS50b0JlKGlucHV0LnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpO1xuICAgICAgICBleHBlY3QobmV3aW4uZ2V0U2lnSWR4cygpLnRvU3RyaW5nKCkpLnRvQmUoaW5wdXQuZ2V0U2lnSWR4cygpLnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnT3V0Q3JlYXRlQXNzZXQnLCAoKSA9PiB7XG4gICAgICAgIGxldCB1OlVUWE87XG4gICAgICAgIGxldCB0eGlkOkJ1ZmZlcjtcbiAgICAgICAgbGV0IHR4aWR4OkJ1ZmZlcjtcbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGlucHV0OklucHV0O1xuXG4gICAgICAgIHUgPSB1dHhvc1syXTtcbiAgICAgICAgdHhpZCA9IHUuZ2V0VHhJRCgpO1xuICAgICAgICB0eGlkeCA9IHUuZ2V0VHhJZHgoKTtcblxuICAgICAgICBpbnB1dCA9IG5ldyBJbnB1dCh0eGlkLCB0eGlkeCwgYW1vdW50KTtcbiAgICAgICAgZXhwZWN0KGlucHV0LmdldFVUWE9JRCgpKS50b0JlKHUuZ2V0VVRYT0lEKCkpO1xuICAgICAgICBleHBlY3QoaW5wdXQuZ2V0SW5wdXRUeXBlKCkpLnRvQmUoMCk7XG5cbiAgICAgICAgaW5wdXQuYWRkU2lnbmF0dXJlSWR4KDAsIGFkZHJzMlswXSk7XG4gICAgICAgIGlucHV0LmFkZFNpZ25hdHVyZUlkeCgxLCBhZGRyczJbMV0pO1xuXG4gICAgICAgIGxldCBuZXdpbjpJbnB1dCA9IG5ldyBJbnB1dCgpO1xuICAgICAgICBuZXdpbi5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGlucHV0LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgZXhwZWN0KG5ld2luLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUoaW5wdXQudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdChuZXdpbi5nZXRTaWdJZHhzKCkudG9TdHJpbmcoKSkudG9CZShpbnB1dC5nZXRTaWdJZHhzKCkudG9TdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdjb21wYXJpdG9yJywgKCkgPT4ge1xuICAgICAgICBsZXQgaW4xOklucHV0ID0gbmV3IElucHV0KHV0eG9zWzBdLmdldFR4SUQoKSwgdXR4b3NbMF0uZ2V0VHhJZHgoKSwgdXR4b3NbMF0uZ2V0QW1vdW50KCkpO1xuICAgICAgICBsZXQgaW4yOklucHV0ID0gbmV3IElucHV0KHV0eG9zWzFdLmdldFR4SUQoKSwgdXR4b3NbMV0uZ2V0VHhJZHgoKSwgdXR4b3NbMV0uZ2V0QW1vdW50KCkpO1xuICAgICAgICBsZXQgaW4zOklucHV0ID0gbmV3IElucHV0KHV0eG9zWzJdLmdldFR4SUQoKSwgdXR4b3NbMl0uZ2V0VHhJZHgoKSwgdXR4b3NbMl0uZ2V0QW1vdW50KCkpO1xuXG4gICAgICAgIGxldCBjbXAgPSBJbnB1dC5jb21wYXJpdG9yKCk7XG4gICAgICAgIGV4cGVjdChjbXAoaW4xLCBpbjIpKS50b0JlKC0xKTtcbiAgICAgICAgZXhwZWN0KGNtcChpbjEsIGluMykpLnRvQmUoLTEpO1xuICAgICAgICBleHBlY3QoY21wKGluMSwgaW4xKSkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGNtcChpbjIsIGluMikpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChjbXAoaW4zLCBpbjMpKS50b0JlKDApO1xuICAgIH0pO1xuXG59KTsiXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXRzLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0cy9hcGlzL2F2bS9pbnB1dHMudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUFtRDtBQUNuRCxvREFBb0Q7QUFDcEQsZ0RBQTRDO0FBQzVDLDhEQUFxQztBQUNyQyxrRUFBMEM7QUFDMUMsa0RBQXVCO0FBQ3ZCLG9DQUErQjtBQUMvQixrREFBMEY7QUFHMUY7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3hDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLElBQUksR0FBVyxDQUFDO0lBQ2hCLElBQUksT0FBbUIsQ0FBQztJQUN4QixJQUFJLE9BQW1CLENBQUM7SUFDeEIsSUFBSSxNQUFvQixDQUFDO0lBQ3pCLElBQUksTUFBb0IsQ0FBQztJQUN6QixJQUFJLEtBQWlCLENBQUM7SUFDdEIsTUFBTSxJQUFJLEdBQVUsS0FBSyxDQUFDO0lBQzFCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDWixHQUFHLEdBQUcsSUFBSSxlQUFPLEVBQUUsQ0FBQztRQUNwQixPQUFPLEdBQUcsSUFBSSxzQkFBVyxFQUFFLENBQUM7UUFDNUIsT0FBTyxHQUFHLElBQUksc0JBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLEtBQUksSUFBSSxDQUFDLEdBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0Qs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QUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0FBRVAsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVVFhPU2V0LCBVVFhPIH0gZnJvbSAnc3JjL2FwaXMvYXZtL3V0eG9zJztcbmltcG9ydCB7IEFWTUtleUNoYWluIH0gZnJvbSAnc3JjL2FwaXMvYXZtL2tleWNoYWluJztcbmltcG9ydCB7IElucHV0IH0gZnJvbSAnc3JjL2FwaXMvYXZtL2lucHV0cyc7XG5pbXBvcnQgY3JlYXRlSGFzaCBmcm9tICdjcmVhdGUtaGFzaCc7XG5pbXBvcnQgQmluVG9vbHMgZnJvbSAnc3JjL3V0aWxzL2JpbnRvb2xzJztcbmltcG9ydCBCTiBmcm9tICdibi5qcyc7XG5pbXBvcnQge0J1ZmZlcn0gZnJvbSBcImJ1ZmZlci9cIjtcbmltcG9ydCB7IE91dHB1dCwgT3V0UGF5bWVudCwgT3V0VGFrZU9yTGVhdmUsIE91dENyZWF0ZUFzc2V0IH0gZnJvbSAnc3JjL2FwaXMvYXZtL291dHB1dHMnO1xuXG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5jb25zdCBiaW50b29scyA9IEJpblRvb2xzLmdldEluc3RhbmNlKCk7XG5kZXNjcmliZSgnSW5wdXRzJywgKCkgPT4ge1xuICAgIGxldCBzZXQ6VVRYT1NldDtcbiAgICBsZXQga2V5bWdyMTpBVk1LZXlDaGFpbjtcbiAgICBsZXQga2V5bWdyMjpBVk1LZXlDaGFpbjtcbiAgICBsZXQgYWRkcnMxOkFycmF5PHN0cmluZz47XG4gICAgbGV0IGFkZHJzMjpBcnJheTxzdHJpbmc+O1xuICAgIGxldCB1dHhvczpBcnJheTxVVFhPPjtcbiAgICBjb25zdCBhbW50Om51bWJlciA9IDEwMDAwO1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBzZXQgPSBuZXcgVVRYT1NldCgpO1xuICAgICAgICBrZXltZ3IxID0gbmV3IEFWTUtleUNoYWluKCk7XG4gICAgICAgIGtleW1ncjIgPSBuZXcgQVZNS2V5Q2hhaW4oKTtcbiAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgIGFkZHJzMiA9IFtdO1xuICAgICAgICB1dHhvcyA9IFtdO1xuICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IDM7IGkrKyl7XG4gICAgICAgICAgICBhZGRyczEucHVzaChrZXltZ3IxLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczIucHVzaChrZXltZ3IyLm1ha2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMS5nZXRBZGRyZXNzZXMoKTtcbiAgICAgICAgbGV0IGZhbGxBZGRyZXNzZXM6QXJyYXk8c3RyaW5nPiA9IGtleW1ncjIuZ2V0QWRkcmVzc2VzKClcbiAgICAgICAgbGV0IGxvY2t0aW1lOkJOID0gbmV3IEJOKDU0MzIxKTtcbiAgICAgICAgbGV0IGZhbGxMb2NrdGltZTpCTiA9IGxvY2t0aW1lLmFkZChuZXcgQk4oNTApKTtcbiAgICAgICAgbGV0IHRocmVzaG9sZDpudW1iZXIgPSAzO1xuICAgICAgICBsZXQgZmFsbFRocmVzaG9sZDpudW1iZXIgPSAxO1xuICAgICAgICBcbiAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCA1OyBpKyspe1xuICAgICAgICAgICAgbGV0IHR4aWQ6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCAzMikpLmRpZ2VzdCgpKTtcbiAgICAgICAgICAgIGxldCB0eGlkeDpCdWZmZXIgPSBCdWZmZXIuZnJvbShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDQpKTtcbiAgICAgICAgICAgIGxldCBhc3NldElEOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHR4aWQpLmRpZ2VzdCgpKTtcbiAgICAgICAgICAgIGxldCBvdXQ6T3V0cHV0O1xuICAgICAgICAgICAgc3dpdGNoKGkgJSAzKXtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRQYXltZW50KGFzc2V0SUQsIGFtb3VudCwgYWRkcmVzc2VzLCBsb2NrdGltZSwgdGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgb3V0ID0gbmV3IE91dFRha2VPckxlYXZlKGFzc2V0SUQsIGFtb3VudCwgYWRkcmVzc2VzLCBmYWxsQWRkcmVzc2VzLCBsb2NrdGltZSwgZmFsbExvY2t0aW1lLCB0aHJlc2hvbGQsIGZhbGxUaHJlc2hvbGQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRDcmVhdGVBc3NldChhbW91bnQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB1OlVUWE8gPSBuZXcgVVRYTygpO1xuICAgICAgICAgICAgdS5mcm9tQnVmZmVyKEJ1ZmZlci5jb25jYXQoW3R4aWQsIHR4aWR4LCBvdXQudG9CdWZmZXIoKV0pKTtcbiAgICAgICAgICAgIHV0eG9zLnB1c2godSk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0LmFkZEFycmF5KHV0eG9zKTtcbiAgICB9KTtcbiAgICB0ZXN0KCdPdXRQYXltZW50JywgKCkgPT4ge1xuICAgICAgICBsZXQgdTpVVFhPO1xuICAgICAgICBsZXQgdHhpZDpCdWZmZXI7XG4gICAgICAgIGxldCB0eGlkeDpCdWZmZXI7XG4gICAgICAgIGxldCBhbW91bnQ6Qk4gPSBuZXcgQk4oYW1udCk7XG4gICAgICAgIGxldCBpbnB1dDpJbnB1dDtcblxuICAgICAgICB1ID0gdXR4b3NbMF07XG4gICAgICAgIHR4aWQgPSB1LmdldFR4SUQoKTtcbiAgICAgICAgdHhpZHggPSB1LmdldFR4SWR4KCk7XG5cbiAgICAgICAgaW5wdXQgPSBuZXcgSW5wdXQodHhpZCwgdHhpZHgsIGFtb3VudCk7XG4gICAgICAgIGV4cGVjdChpbnB1dC5nZXRVVFhPSUQoKSkudG9CZSh1LmdldFVUWE9JRCgpKTtcbiAgICAgICAgZXhwZWN0KGlucHV0LmdldElucHV0VHlwZSgpKS50b0JlKDApO1xuXG4gICAgICAgIGlucHV0LmFkZFNpZ25hdHVyZUlkeCgwLCBhZGRyczJbMF0pO1xuICAgICAgICBpbnB1dC5hZGRTaWduYXR1cmVJZHgoMSwgYWRkcnMyWzFdKTtcblxuICAgICAgICBsZXQgbmV3aW46SW5wdXQgPSBuZXcgSW5wdXQoKTtcbiAgICAgICAgbmV3aW4uZnJvbUJ1ZmZlcihiaW50b29scy5iNThUb0J1ZmZlcihpbnB1dC50b1N0cmluZygpKSk7XG4gICAgICAgIGV4cGVjdChuZXdpbi50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKS50b0JlKGlucHV0LnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpO1xuICAgICAgICBleHBlY3QobmV3aW4uZ2V0U2lnSWR4cygpLnRvU3RyaW5nKCkpLnRvQmUoaW5wdXQuZ2V0U2lnSWR4cygpLnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnT3V0VGFrZU9yTGVhdmUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB1OlVUWE87XG4gICAgICAgIGxldCB0eGlkOkJ1ZmZlcjtcbiAgICAgICAgbGV0IHR4aWR4OkJ1ZmZlcjtcbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGlucHV0OklucHV0O1xuXG4gICAgICAgIHUgPSB1dHhvc1sxXTtcbiAgICAgICAgdHhpZCA9IHUuZ2V0VHhJRCgpO1xuICAgICAgICB0eGlkeCA9IHUuZ2V0VHhJZHgoKTtcblxuICAgICAgICBpbnB1dCA9IG5ldyBJbnB1dCh0eGlkLCB0eGlkeCwgYW1vdW50KTtcbiAgICAgICAgZXhwZWN0KGlucHV0LmdldFVUWE9JRCgpKS50b0JlKHUuZ2V0VVRYT0lEKCkpO1xuICAgICAgICBleHBlY3QoaW5wdXQuZ2V0SW5wdXRUeXBlKCkpLnRvQmUoMCk7XG5cbiAgICAgICAgaW5wdXQuYWRkU2lnbmF0dXJlSWR4KDAsIGFkZHJzMlswXSk7XG4gICAgICAgIGlucHV0LmFkZFNpZ25hdHVyZUlkeCgxLCBhZGRyczJbMV0pO1xuXG4gICAgICAgIGxldCBuZXdpbjpJbnB1dCA9IG5ldyBJbnB1dCgpO1xuICAgICAgICBuZXdpbi5mcm9tQnVmZmVyKGJpbnRvb2xzLmI1OFRvQnVmZmVyKGlucHV0LnRvU3RyaW5nKCkpKTtcbiAgICAgICAgZXhwZWN0KG5ld2luLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUoaW5wdXQudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdChuZXdpbi5nZXRTaWdJZHhzKCkudG9TdHJpbmcoKSkudG9CZShpbnB1dC5nZXRTaWdJZHhzKCkudG9TdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdPdXRDcmVhdGVBc3NldCcsICgpID0+IHtcbiAgICAgICAgbGV0IHU6VVRYTztcbiAgICAgICAgbGV0IHR4aWQ6QnVmZmVyO1xuICAgICAgICBsZXQgdHhpZHg6QnVmZmVyO1xuICAgICAgICBsZXQgYW1vdW50OkJOID0gbmV3IEJOKGFtbnQpO1xuICAgICAgICBsZXQgaW5wdXQ6SW5wdXQ7XG5cbiAgICAgICAgdSA9IHV0eG9zWzJdO1xuICAgICAgICB0eGlkID0gdS5nZXRUeElEKCk7XG4gICAgICAgIHR4aWR4ID0gdS5nZXRUeElkeCgpO1xuXG4gICAgICAgIGlucHV0ID0gbmV3IElucHV0KHR4aWQsIHR4aWR4LCBhbW91bnQpO1xuICAgICAgICBleHBlY3QoaW5wdXQuZ2V0VVRYT0lEKCkpLnRvQmUodS5nZXRVVFhPSUQoKSk7XG4gICAgICAgIGV4cGVjdChpbnB1dC5nZXRJbnB1dFR5cGUoKSkudG9CZSgwKTtcblxuICAgICAgICBpbnB1dC5hZGRTaWduYXR1cmVJZHgoMCwgYWRkcnMyWzBdKTtcbiAgICAgICAgaW5wdXQuYWRkU2lnbmF0dXJlSWR4KDEsIGFkZHJzMlsxXSk7XG5cbiAgICAgICAgbGV0IG5ld2luOklucHV0ID0gbmV3IElucHV0KCk7XG4gICAgICAgIG5ld2luLmZyb21CdWZmZXIoYmludG9vbHMuYjU4VG9CdWZmZXIoaW5wdXQudG9TdHJpbmcoKSkpO1xuICAgICAgICBleHBlY3QobmV3aW4udG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZShpbnB1dC50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgZXhwZWN0KG5ld2luLmdldFNpZ0lkeHMoKS50b1N0cmluZygpKS50b0JlKGlucHV0LmdldFNpZ0lkeHMoKS50b1N0cmluZygpKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ2NvbXBhcml0b3InLCAoKSA9PiB7XG4gICAgICAgIGxldCBpbjE6SW5wdXQgPSBuZXcgSW5wdXQodXR4b3NbMF0uZ2V0VHhJRCgpLCB1dHhvc1swXS5nZXRUeElkeCgpLCB1dHhvc1swXS5nZXRBbW91bnQoKSk7XG4gICAgICAgIGxldCBpbjI6SW5wdXQgPSBuZXcgSW5wdXQodXR4b3NbMV0uZ2V0VHhJRCgpLCB1dHhvc1sxXS5nZXRUeElkeCgpLCB1dHhvc1sxXS5nZXRBbW91bnQoKSk7XG4gICAgICAgIGxldCBpbjM6SW5wdXQgPSBuZXcgSW5wdXQodXR4b3NbMl0uZ2V0VHhJRCgpLCB1dHhvc1syXS5nZXRUeElkeCgpLCB1dHhvc1syXS5nZXRBbW91bnQoKSk7XG5cbiAgICAgICAgbGV0IGNtcCA9IElucHV0LmNvbXBhcml0b3IoKTtcbiAgICAgICAgZXhwZWN0KGNtcChpbjEsIGluMikpLnRvQmUoLTEpO1xuICAgICAgICBleHBlY3QoY21wKGluMSwgaW4zKSkudG9CZSgtMSk7XG4gICAgICAgIGV4cGVjdChjbXAoaW4xLCBpbjEpKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoY21wKGluMiwgaW4yKSkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGNtcChpbjMsIGluMykpLnRvQmUoMCk7XG4gICAgfSk7XG5cbn0pOyJdfQ==

@@ -52,4 +52,4 @@ "use strict";

let amount = new bn_js_1.default(amnt);
let addresses = keymgr1.getAddreses();
let fallAddresses = keymgr2.getAddreses();
let addresses = keymgr1.getAddresses();
let fallAddresses = keymgr2.getAddresses();
let locktime = new bn_js_1.default(54321);

@@ -143,2 +143,2 @@ let fallLocktime = locktime.add(new bn_js_1.default(50));

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3RzL2FwaXMvYXZtL3R4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBbUQ7QUFDbkQsd0NBQWlEO0FBQ2pELG9EQUFvRDtBQUNwRCxnREFBNEM7QUFDNUMsOERBQXFDO0FBQ3JDLGtFQUEwQztBQUMxQyxrREFBdUI7QUFDdkIsb0NBQStCO0FBQy9CLGtEQUEwRjtBQUMxRiw4Q0FBNkM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3hDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzFCLElBQUksR0FBVyxDQUFDO0lBQ2hCLElBQUksT0FBbUIsQ0FBQztJQUN4QixJQUFJLE9BQW1CLENBQUM7SUFDeEIsSUFBSSxPQUFtQixDQUFDO0lBQ3hCLElBQUksTUFBb0IsQ0FBQztJQUN6QixJQUFJLE1BQW9CLENBQUM7SUFDekIsSUFBSSxNQUFvQixDQUFDO0lBQ3pCLElBQUksS0FBaUIsQ0FBQztJQUN0QixJQUFJLE1BQW1CLENBQUM7SUFDeEIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sSUFBSSxHQUFVLEtBQUssQ0FBQztJQUMxQixJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7SUFDdEIsSUFBSSxZQUFZLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDakcsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLEdBQUcsR0FB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LENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQyxHQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQWlCLEVBQUUsQ0FBQztRQUN6QixLQUFJLElBQUksQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDaEM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNQLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFUCxLQUFJLElBQUksQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDakM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENB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QUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxHQUFHLEdBQWMsR0FBRyxDQUFDLGNBQWMsQ0FDbkMsS0FBSyxFQUFFLFlBQVksRUFDbkIsSUFBSSxlQUFFLENBQUMsSUFBSSxDQUFDLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQ3pCLENBQUM7UUFDRixJQUFJLEVBQUUsR0FBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFNLElBQUksT0FBRSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVRYT1NldCwgVVRYTyB9IGZyb20gJ3NyYy9hcGlzL2F2bS91dHhvcyc7XG5pbXBvcnQgeyBUeFVuc2lnbmVkLCBUeCB9IGZyb20gJ3NyYy9hcGlzL2F2bS90eCc7XG5pbXBvcnQgeyBBVk1LZXlDaGFpbiB9IGZyb20gJ3NyYy9hcGlzL2F2bS9rZXljaGFpbic7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9pbnB1dHMnO1xuaW1wb3J0IGNyZWF0ZUhhc2ggZnJvbSAnY3JlYXRlLWhhc2gnO1xuaW1wb3J0IEJpblRvb2xzIGZyb20gJ3NyYy91dGlscy9iaW50b29scyc7XG5pbXBvcnQgQk4gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgeyBPdXRwdXQsIE91dFBheW1lbnQsIE91dFRha2VPckxlYXZlLCBPdXRDcmVhdGVBc3NldCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9vdXRwdXRzJztcbmltcG9ydCB7IFVuaXhOb3cgfSBmcm9tICdzcmMvYXBpcy9hdm0vdHlwZXMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuZGVzY3JpYmUoJ1RyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICBsZXQgc2V0OlVUWE9TZXQ7XG4gICAgbGV0IGtleW1ncjE6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGtleW1ncjI6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGtleW1ncjM6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGFkZHJzMTpBcnJheTxzdHJpbmc+O1xuICAgIGxldCBhZGRyczI6QXJyYXk8c3RyaW5nPjtcbiAgICBsZXQgYWRkcnMzOkFycmF5PHN0cmluZz47XG4gICAgbGV0IHV0eG9zOkFycmF5PFVUWE8+O1xuICAgIGxldCBpbnB1dHM6QXJyYXk8SW5wdXQ+O1xuICAgIGxldCBvdXRwdXRzOkFycmF5PE91dHB1dD47XG4gICAgY29uc3QgYW1udDpudW1iZXIgPSAxMDAwMDtcbiAgICBsZXQgbmV0aWQ6bnVtYmVyID0gNDk7XG4gICAgbGV0IGJsb2NrY2hhaW5JRDpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShcIkkgYW0gdGhlIHZlcnkgbW9kZWwgb2YgYSBtb2Rlcm4gbWFqb3IgZ2VuZXJhbFwiKS5kaWdlc3QoKSk7XG4gICAgbGV0IGFzc2V0SUQ6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoXCJtYXJ5IGhhZCBhIGxpdHRsZSBsYW1iXCIpLmRpZ2VzdCgpKTtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgc2V0ID0gbmV3IFVUWE9TZXQoKTtcbiAgICAgICAga2V5bWdyMSA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICBrZXltZ3IyID0gbmV3IEFWTUtleUNoYWluKCk7XG4gICAgICAgIGtleW1ncjMgPSBuZXcgQVZNS2V5Q2hhaW4oKTtcbiAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgIGFkZHJzMiA9IFtdO1xuICAgICAgICBhZGRyczMgPSBbXTtcbiAgICAgICAgdXR4b3MgPSBbXTtcbiAgICAgICAgaW5wdXRzID0gW107XG4gICAgICAgIG91dHB1dHMgPSBbXTtcblxuICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IDM7IGkrKyl7XG4gICAgICAgICAgICBhZGRyczEucHVzaChrZXltZ3IxLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczIucHVzaChrZXltZ3IyLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczMucHVzaChrZXltZ3IzLm1ha2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMS5nZXRBZGRyZXNlcygpO1xuICAgICAgICBsZXQgZmFsbEFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMi5nZXRBZGRyZXNlcygpXG4gICAgICAgIGxldCBsb2NrdGltZTpCTiA9IG5ldyBCTig1NDMyMSk7XG4gICAgICAgIGxldCBmYWxsTG9ja3RpbWU6Qk4gPSBsb2NrdGltZS5hZGQobmV3IEJOKDUwKSk7XG4gICAgICAgIGxldCB0aHJlc2hvbGQ6bnVtYmVyID0gMztcbiAgICAgICAgbGV0IGZhbGxUaHJlc2hvbGQ6bnVtYmVyID0gMTtcbiAgICAgICAgXG4gICAgICAgIGZvcihsZXQgaTpudW1iZXIgPSAwOyBpIDwgNTsgaSsrKXtcbiAgICAgICAgICAgIGxldCB0eGlkOkJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGJpbnRvb2xzLmZyb21CTlRvQnVmZmVyKG5ldyBCTihpKSwgMzIpKS5kaWdlc3QoKSk7XG4gICAgICAgICAgICBsZXQgdHhpZHg6QnVmZmVyID0gQnVmZmVyLmZyb20oYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCA0KSk7XG4gICAgICAgICAgICBsZXQgb3V0Ok91dHB1dDtcbiAgICAgICAgICAgIHN3aXRjaChpICUgMyl7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0UGF5bWVudChhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgbG9ja3RpbWUsIHRocmVzaG9sZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrOyBcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRUYWtlT3JMZWF2ZShhc3NldElELCBhbW91bnQsIGFkZHJlc3NlcywgZmFsbEFkZHJlc3NlcywgbG9ja3RpbWUsIGZhbGxMb2NrdGltZSwgdGhyZXNob2xkLCBmYWxsVGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICBvdXQgPSBuZXcgT3V0Q3JlYXRlQXNzZXQoYW1vdW50LCBhZGRyZXNzZXMsIGxvY2t0aW1lLCB0aHJlc2hvbGQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG91dHB1dHMucHVzaChvdXQpO1xuXG4gICAgICAgICAgICBsZXQgdTpVVFhPID0gbmV3IFVUWE8oKTtcbiAgICAgICAgICAgIHUuZnJvbUJ1ZmZlcihCdWZmZXIuY29uY2F0KFt0eGlkLCB0eGlkeCwgb3V0LnRvQnVmZmVyKCldKSk7XG4gICAgICAgICAgICB1dHhvcy5wdXNoKHUpO1xuXG4gICAgICAgICAgICB0eGlkID0gdS5nZXRUeElEKCk7XG4gICAgICAgICAgICB0eGlkeCA9IHUuZ2V0VHhJZHgoKTtcblxuICAgICAgICAgICAgbGV0IGlucHV0OklucHV0ID0gbmV3IElucHV0KHR4aWQsIHR4aWR4LCBhbW91bnQpO1xuICAgICAgICAgICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIHNldC5hZGRBcnJheSh1dHhvcyk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdDcmVhdGlvbiBUeFVuc2lnbmVkJywgKCkgPT4ge1xuICAgICAgICBsZXQgdHh1OlR4VW5zaWduZWQgPSBuZXcgVHhVbnNpZ25lZChpbnB1dHMsIG91dHB1dHMsIG5ldGlkLCBibG9ja2NoYWluSUQsIDk5KTtcbiAgICAgICAgbGV0IHR4aW5zOkFycmF5PElucHV0PiAgPSB0eHUuZ2V0SW5zKCk7XG4gICAgICAgIGxldCB0eG91dHM6QXJyYXk8T3V0cHV0PiA9IHR4dS5nZXRPdXRzKCk7XG4gICAgICAgIGV4cGVjdCh0eGlucy5sZW5ndGgpLnRvQmUoaW5wdXRzLmxlbmd0aCk7XG4gICAgICAgIGV4cGVjdCh0eG91dHMubGVuZ3RoKS50b0JlKG91dHB1dHMubGVuZ3RoKTtcbiAgICAgICAgXG4gICAgICAgIGV4cGVjdCh0eHUuZ2V0Q29kZWMoKSkudG9CZSg5OSk7XG4gICAgICAgIGV4cGVjdCh0eHUuZ2V0TmV0d29ya0lEKCkpLnRvQmUoNDkpO1xuICAgICAgICBleHBlY3QodHh1LmdldEJsb2NrY2hhaW5JRCgpLnRvU3RyaW5nKFwiaGV4XCIpKS50b0JlKGJsb2NrY2hhaW5JRC50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIFxuICAgICAgICBsZXQgYTpBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIGxldCBiOkFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCB0eGlucy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICBhLnB1c2godHhpbnNbaV0udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBiLnB1c2goaW5wdXRzW2ldLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShhLnNvcnQoKSkpLnRvQmUoSlNPTi5zdHJpbmdpZnkoYi5zb3J0KCkpKTtcbiAgICAgICAgXG4gICAgICAgIGEgPSBbXTtcbiAgICAgICAgYiA9IFtdO1xuXG4gICAgICAgIGZvcihsZXQgaTpudW1iZXIgPSAwOyBpIDwgdHhvdXRzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGEucHVzaCh0eG91dHNbaV0udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBiLnB1c2gob3V0cHV0c1tpXS50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgICAgICBleHBlY3QoSlNPTi5zdHJpbmdpZnkoYS5zb3J0KCkpKS50b0JlKEpTT04uc3RyaW5naWZ5KGIuc29ydCgpKSk7XG5cbiAgICAgICAgbGV0IHR4dW5ldzpUeFVuc2lnbmVkID0gbmV3IFR4VW5zaWduZWQoKTtcbiAgICAgICAgdHh1bmV3LmZyb21CdWZmZXIodHh1LnRvQnVmZmVyKCkpO1xuICAgICAgICBleHBlY3QodHh1bmV3LnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHh1LnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpO1xuICAgICAgICBleHBlY3QodHh1bmV3LnRvU3RyaW5nKCkpLnRvQmUodHh1LnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuXG4gICAgdGVzdCgnQ3JlYXRpb24gVHhVbnNpZ25lZCBDaGVjayBBbW91bnQnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgICAgICBzZXQubWFrZVVuc2lnbmVkVHgoXG4gICAgICAgICAgICAgICAgbmV0aWQsIGJsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgICAgICBuZXcgQk4oYW1udCAqIDEwMDApLCBcbiAgICAgICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBhc3NldElEXG4gICAgICAgICAgICApO1xuICAgICAgICB9KS50b1Rocm93KCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdDcmVhdGlvbiBUeDEnLCAoKSA9PiB7XG4gICAgICAgIGxldCB0eHU6VHhVbnNpZ25lZCA9IHNldC5tYWtlVW5zaWduZWRUeChcbiAgICAgICAgICAgIG5ldGlkLCBibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBuZXcgQk4oOTAwMCksIFxuICAgICAgICAgICAgYWRkcnMzLCBhZGRyczEsIGFkZHJzMSwgYXNzZXRJRCwgXG4gICAgICAgICAgICBVbml4Tm93KCksIFVuaXhOb3coKS5hZGQobmV3IEJOKDUwKSksIDMsIFxuICAgICAgICAgICAgYWRkcnMyLCBVbml4Tm93KCkuYWRkKG5ldyBCTigxMDApKSwgMlxuICAgICAgICApO1xuICAgICAgICBsZXQgdHg6VHggPSBrZXltZ3IxLnNpZ25UeCh0eHUpO1xuICAgICAgICBsZXQgdHgyOlR4ID0gbmV3IFR4KCk7XG4gICAgICAgIHR4Mi5mcm9tU3RyaW5nKHR4LnRvU3RyaW5nKCkpO1xuICAgICAgICBleHBlY3QodHgyLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHgudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9TdHJpbmcoKSkudG9CZSh0eC50b1N0cmluZygpKTtcbiAgICB9KTtcbiAgICB0ZXN0KCdDcmVhdGlvbiBUeDInLCAoKSA9PiB7XG4gICAgICAgIGxldCB0eHU6VHhVbnNpZ25lZCA9IHNldC5tYWtlVW5zaWduZWRUeChcbiAgICAgICAgICAgIG5ldGlkLCBibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBuZXcgQk4oOTAwMCksIFxuICAgICAgICAgICAgYWRkcnMzLCBhZGRyczEsIGFkZHJzMSwgYXNzZXRJRFxuICAgICAgICApO1xuICAgICAgICBsZXQgdHg6VHggPSBrZXltZ3IxLnNpZ25UeCh0eHUpO1xuICAgICAgICBsZXQgdHgyOlR4ID0gbmV3IFR4KCk7XG4gICAgICAgIHR4Mi5mcm9tU3RyaW5nKHR4LnRvU3RyaW5nKCkpO1xuICAgICAgICBleHBlY3QodHgyLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHgudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9TdHJpbmcoKSkudG9CZSh0eC50b1N0cmluZygpKTtcbiAgICB9KTtcbiAgICB0ZXN0KCdDcmVhdGlvbiBUeDMnLCAoKSA9PiB7XG4gICAgICAgIGxldCB0eHU6VHhVbnNpZ25lZCA9IHNldC5tYWtlVW5zaWduZWRUeChcbiAgICAgICAgICAgIG5ldGlkLCBibG9ja2NoYWluSUQsXG4gICAgICAgICAgICBuZXcgQk4oOTAwMCksIFxuICAgICAgICAgICAgYWRkcnMzLCBhZGRyczEsIGFkZHJzMVxuICAgICAgICApO1xuICAgICAgICBsZXQgdHg6VHggPSBrZXltZ3IxLnNpZ25UeCh0eHUpO1xuICAgICAgICBsZXQgdHgyOlR4ID0gbmV3IFR4KCk7XG4gICAgICAgIHR4Mi5mcm9tU3RyaW5nKHR4LnRvU3RyaW5nKCkpO1xuICAgICAgICBleHBlY3QodHgyLnRvQnVmZmVyKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUodHgudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9TdHJpbmcoKSkudG9CZSh0eC50b1N0cmluZygpKTtcbiAgICB9KTtcbn0pO1xuICAgICJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3RzL2FwaXMvYXZtL3R4LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBbUQ7QUFDbkQsd0NBQWlEO0FBQ2pELG9EQUFvRDtBQUNwRCxnREFBNEM7QUFDNUMsOERBQXFDO0FBQ3JDLGtFQUEwQztBQUMxQyxrREFBdUI7QUFDdkIsb0NBQStCO0FBQy9CLGtEQUEwRjtBQUMxRiw4Q0FBNkM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3hDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO0lBQzFCLElBQUksR0FBVyxDQUFDO0lBQ2hCLElBQUksT0FBbUIsQ0FBQztJQUN4QixJQUFJLE9BQW1CLENBQUM7SUFDeEIsSUFBSSxPQUFtQixDQUFDO0lBQ3hCLElBQUksTUFBb0IsQ0FBQztJQUN6QixJQUFJLE1BQW9CLENBQUM7SUFDekIsSUFBSSxNQUFvQixDQUFDO0lBQ3pCLElBQUksS0FBaUIsQ0FBQztJQUN0QixJQUFJLE1BQW1CLENBQUM7SUFDeEIsSUFBSSxPQUFxQixDQUFDO0lBQzFCLE1BQU0sSUFBSSxHQUFVLEtBQUssQ0FBQztJQUMxQixJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7SUFDdEIsSUFBSSxZQUFZLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDN0gsSUFBSSxPQUFPLEdBQVUsZUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDakcsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNaLEdBQUcsR0FB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LENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpGLElBQUksQ0FBQyxHQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLEdBQWlCLEVBQUUsQ0FBQztRQUN6QixLQUFJLElBQUksQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDaEM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNQLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFUCxLQUFJLElBQUksQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDakM7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEUsSUFBSSxNQUFNLEdBQWMsSUFBSSxlQUFVLEVBQUUsQ0FBQztRQUN6QyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUMxQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsR0FBRyxDQUFDLGNBQWMsQ0FDZCxLQUFLLEVBQUUsWUFBWSxFQUNuQixJQUFJLGVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQ25CLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FDbEMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxHQUFHLEdBQWMsR0FBRyxDQUFDLGNBQWMsQ0FDbkMsS0FBSyxFQUFFLFlBQVksRUFDbkIsSUFBSSxlQUFFLENBQUMsSUFBSSxDQUFDLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUMvQixlQUFPLEVBQUUsRUFBRSxlQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQ3ZDLE1BQU0sRUFBRSxlQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ3hDLENBQUM7UUFDRixJQUFJLEVBQUUsR0FBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFNLElBQUksT0FBRSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1FBQ3RCLElBQUksR0FBRyxHQUFjLEdBQUcsQ0FBQyxjQUFjLENBQ25DLEtBQUssRUFBRSxZQUFZLEVBQ25CLElBQUksZUFBRSxDQUFDLElBQUksQ0FBQyxFQUNaLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FDbEMsQ0FBQztRQUNGLElBQUksRUFBRSxHQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLEdBQU0sSUFBSSxPQUFFLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxHQUFHLEdBQWMsR0FBRyxDQUFDLGNBQWMsQ0FDbkMsS0FBSyxFQUFFLFlBQVksRUFDbkIsSUFBSSxlQUFFLENBQUMsSUFBSSxDQUFDLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQ3pCLENBQUM7UUFDRixJQUFJLEVBQUUsR0FBTSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksR0FBRyxHQUFNLElBQUksT0FBRSxFQUFFLENBQUM7UUFDdEIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVVRYT1NldCwgVVRYTyB9IGZyb20gJ3NyYy9hcGlzL2F2bS91dHhvcyc7XG5pbXBvcnQgeyBUeFVuc2lnbmVkLCBUeCB9IGZyb20gJ3NyYy9hcGlzL2F2bS90eCc7XG5pbXBvcnQgeyBBVk1LZXlDaGFpbiB9IGZyb20gJ3NyYy9hcGlzL2F2bS9rZXljaGFpbic7XG5pbXBvcnQgeyBJbnB1dCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9pbnB1dHMnO1xuaW1wb3J0IGNyZWF0ZUhhc2ggZnJvbSAnY3JlYXRlLWhhc2gnO1xuaW1wb3J0IEJpblRvb2xzIGZyb20gJ3NyYy91dGlscy9iaW50b29scyc7XG5pbXBvcnQgQk4gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHtCdWZmZXJ9IGZyb20gXCJidWZmZXIvXCI7XG5pbXBvcnQgeyBPdXRwdXQsIE91dFBheW1lbnQsIE91dFRha2VPckxlYXZlLCBPdXRDcmVhdGVBc3NldCB9IGZyb20gJ3NyYy9hcGlzL2F2bS9vdXRwdXRzJztcbmltcG9ydCB7IFVuaXhOb3cgfSBmcm9tICdzcmMvYXBpcy9hdm0vdHlwZXMnO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuY29uc3QgYmludG9vbHMgPSBCaW5Ub29scy5nZXRJbnN0YW5jZSgpO1xuZGVzY3JpYmUoJ1RyYW5zYWN0aW9ucycsICgpID0+IHtcbiAgICBsZXQgc2V0OlVUWE9TZXQ7XG4gICAgbGV0IGtleW1ncjE6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGtleW1ncjI6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGtleW1ncjM6QVZNS2V5Q2hhaW47XG4gICAgbGV0IGFkZHJzMTpBcnJheTxzdHJpbmc+O1xuICAgIGxldCBhZGRyczI6QXJyYXk8c3RyaW5nPjtcbiAgICBsZXQgYWRkcnMzOkFycmF5PHN0cmluZz47XG4gICAgbGV0IHV0eG9zOkFycmF5PFVUWE8+O1xuICAgIGxldCBpbnB1dHM6QXJyYXk8SW5wdXQ+O1xuICAgIGxldCBvdXRwdXRzOkFycmF5PE91dHB1dD47XG4gICAgY29uc3QgYW1udDpudW1iZXIgPSAxMDAwMDtcbiAgICBsZXQgbmV0aWQ6bnVtYmVyID0gNDk7XG4gICAgbGV0IGJsb2NrY2hhaW5JRDpCdWZmZXIgPSBCdWZmZXIuZnJvbShjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShcIkkgYW0gdGhlIHZlcnkgbW9kZWwgb2YgYSBtb2Rlcm4gbWFqb3IgZ2VuZXJhbFwiKS5kaWdlc3QoKSk7XG4gICAgbGV0IGFzc2V0SUQ6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoXCJtYXJ5IGhhZCBhIGxpdHRsZSBsYW1iXCIpLmRpZ2VzdCgpKTtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgc2V0ID0gbmV3IFVUWE9TZXQoKTtcbiAgICAgICAga2V5bWdyMSA9IG5ldyBBVk1LZXlDaGFpbigpO1xuICAgICAgICBrZXltZ3IyID0gbmV3IEFWTUtleUNoYWluKCk7XG4gICAgICAgIGtleW1ncjMgPSBuZXcgQVZNS2V5Q2hhaW4oKTtcbiAgICAgICAgYWRkcnMxID0gW107XG4gICAgICAgIGFkZHJzMiA9IFtdO1xuICAgICAgICBhZGRyczMgPSBbXTtcbiAgICAgICAgdXR4b3MgPSBbXTtcbiAgICAgICAgaW5wdXRzID0gW107XG4gICAgICAgIG91dHB1dHMgPSBbXTtcblxuICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IDM7IGkrKyl7XG4gICAgICAgICAgICBhZGRyczEucHVzaChrZXltZ3IxLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczIucHVzaChrZXltZ3IyLm1ha2VLZXkoKSk7XG4gICAgICAgICAgICBhZGRyczMucHVzaChrZXltZ3IzLm1ha2VLZXkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGFtb3VudDpCTiA9IG5ldyBCTihhbW50KTtcbiAgICAgICAgbGV0IGFkZHJlc3NlczpBcnJheTxzdHJpbmc+ID0ga2V5bWdyMS5nZXRBZGRyZXNzZXMoKTtcbiAgICAgICAgbGV0IGZhbGxBZGRyZXNzZXM6QXJyYXk8c3RyaW5nPiA9IGtleW1ncjIuZ2V0QWRkcmVzc2VzKClcbiAgICAgICAgbGV0IGxvY2t0aW1lOkJOID0gbmV3IEJOKDU0MzIxKTtcbiAgICAgICAgbGV0IGZhbGxMb2NrdGltZTpCTiA9IGxvY2t0aW1lLmFkZChuZXcgQk4oNTApKTtcbiAgICAgICAgbGV0IHRocmVzaG9sZDpudW1iZXIgPSAzO1xuICAgICAgICBsZXQgZmFsbFRocmVzaG9sZDpudW1iZXIgPSAxO1xuICAgICAgICBcbiAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCA1OyBpKyspe1xuICAgICAgICAgICAgbGV0IHR4aWQ6QnVmZmVyID0gQnVmZmVyLmZyb20oY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoYmludG9vbHMuZnJvbUJOVG9CdWZmZXIobmV3IEJOKGkpLCAzMikpLmRpZ2VzdCgpKTtcbiAgICAgICAgICAgIGxldCB0eGlkeDpCdWZmZXIgPSBCdWZmZXIuZnJvbShiaW50b29scy5mcm9tQk5Ub0J1ZmZlcihuZXcgQk4oaSksIDQpKTtcbiAgICAgICAgICAgIGxldCBvdXQ6T3V0cHV0O1xuICAgICAgICAgICAgc3dpdGNoKGkgJSAzKXtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRQYXltZW50KGFzc2V0SUQsIGFtb3VudCwgYWRkcmVzc2VzLCBsb2NrdGltZSwgdGhyZXNob2xkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgb3V0ID0gbmV3IE91dFRha2VPckxlYXZlKGFzc2V0SUQsIGFtb3VudCwgYWRkcmVzc2VzLCBmYWxsQWRkcmVzc2VzLCBsb2NrdGltZSwgZmFsbExvY2t0aW1lLCB0aHJlc2hvbGQsIGZhbGxUaHJlc2hvbGQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBPdXRDcmVhdGVBc3NldChhbW91bnQsIGFkZHJlc3NlcywgbG9ja3RpbWUsIHRocmVzaG9sZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3V0cHV0cy5wdXNoKG91dCk7XG5cbiAgICAgICAgICAgIGxldCB1OlVUWE8gPSBuZXcgVVRYTygpO1xuICAgICAgICAgICAgdS5mcm9tQnVmZmVyKEJ1ZmZlci5jb25jYXQoW3R4aWQsIHR4aWR4LCBvdXQudG9CdWZmZXIoKV0pKTtcbiAgICAgICAgICAgIHV0eG9zLnB1c2godSk7XG5cbiAgICAgICAgICAgIHR4aWQgPSB1LmdldFR4SUQoKTtcbiAgICAgICAgICAgIHR4aWR4ID0gdS5nZXRUeElkeCgpO1xuXG4gICAgICAgICAgICBsZXQgaW5wdXQ6SW5wdXQgPSBuZXcgSW5wdXQodHhpZCwgdHhpZHgsIGFtb3VudCk7XG4gICAgICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0LmFkZEFycmF5KHV0eG9zKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ0NyZWF0aW9uIFR4VW5zaWduZWQnLCAoKSA9PiB7XG4gICAgICAgIGxldCB0eHU6VHhVbnNpZ25lZCA9IG5ldyBUeFVuc2lnbmVkKGlucHV0cywgb3V0cHV0cywgbmV0aWQsIGJsb2NrY2hhaW5JRCwgOTkpO1xuICAgICAgICBsZXQgdHhpbnM6QXJyYXk8SW5wdXQ+ICA9IHR4dS5nZXRJbnMoKTtcbiAgICAgICAgbGV0IHR4b3V0czpBcnJheTxPdXRwdXQ+ID0gdHh1LmdldE91dHMoKTtcbiAgICAgICAgZXhwZWN0KHR4aW5zLmxlbmd0aCkudG9CZShpbnB1dHMubGVuZ3RoKTtcbiAgICAgICAgZXhwZWN0KHR4b3V0cy5sZW5ndGgpLnRvQmUob3V0cHV0cy5sZW5ndGgpO1xuICAgICAgICBcbiAgICAgICAgZXhwZWN0KHR4dS5nZXRDb2RlYygpKS50b0JlKDk5KTtcbiAgICAgICAgZXhwZWN0KHR4dS5nZXROZXR3b3JrSUQoKSkudG9CZSg0OSk7XG4gICAgICAgIGV4cGVjdCh0eHUuZ2V0QmxvY2tjaGFpbklEKCkudG9TdHJpbmcoXCJoZXhcIikpLnRvQmUoYmxvY2tjaGFpbklELnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgXG4gICAgICAgIGxldCBhOkFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgICAgbGV0IGI6QXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgICAgICBmb3IobGV0IGk6bnVtYmVyID0gMDsgaSA8IHR4aW5zLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGEucHVzaCh0eGluc1tpXS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGIucHVzaChpbnB1dHNbaV0udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwZWN0KEpTT04uc3RyaW5naWZ5KGEuc29ydCgpKSkudG9CZShKU09OLnN0cmluZ2lmeShiLnNvcnQoKSkpO1xuICAgICAgICBcbiAgICAgICAgYSA9IFtdO1xuICAgICAgICBiID0gW107XG5cbiAgICAgICAgZm9yKGxldCBpOm51bWJlciA9IDA7IGkgPCB0eG91dHMubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgYS5wdXNoKHR4b3V0c1tpXS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGIucHVzaChvdXRwdXRzW2ldLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdChKU09OLnN0cmluZ2lmeShhLnNvcnQoKSkpLnRvQmUoSlNPTi5zdHJpbmdpZnkoYi5zb3J0KCkpKTtcblxuICAgICAgICBsZXQgdHh1bmV3OlR4VW5zaWduZWQgPSBuZXcgVHhVbnNpZ25lZCgpO1xuICAgICAgICB0eHVuZXcuZnJvbUJ1ZmZlcih0eHUudG9CdWZmZXIoKSk7XG4gICAgICAgIGV4cGVjdCh0eHVuZXcudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eHUudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgIGV4cGVjdCh0eHVuZXcudG9TdHJpbmcoKSkudG9CZSh0eHUudG9TdHJpbmcoKSk7XG4gICAgfSk7XG5cbiAgICB0ZXN0KCdDcmVhdGlvbiBUeFVuc2lnbmVkIENoZWNrIEFtb3VudCcsICgpID0+IHtcbiAgICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHNldC5tYWtlVW5zaWduZWRUeChcbiAgICAgICAgICAgICAgICBuZXRpZCwgYmxvY2tjaGFpbklELFxuICAgICAgICAgICAgICAgIG5ldyBCTihhbW50ICogMTAwMCksIFxuICAgICAgICAgICAgICAgIGFkZHJzMywgYWRkcnMxLCBhZGRyczEsIGFzc2V0SURcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pLnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIHRlc3QoJ0NyZWF0aW9uIFR4MScsICgpID0+IHtcbiAgICAgICAgbGV0IHR4dTpUeFVuc2lnbmVkID0gc2V0Lm1ha2VVbnNpZ25lZFR4KFxuICAgICAgICAgICAgbmV0aWQsIGJsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG5ldyBCTig5MDAwKSwgXG4gICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBhc3NldElELCBcbiAgICAgICAgICAgIFVuaXhOb3coKSwgVW5peE5vdygpLmFkZChuZXcgQk4oNTApKSwgMywgXG4gICAgICAgICAgICBhZGRyczIsIFVuaXhOb3coKS5hZGQobmV3IEJOKDEwMCkpLCAyXG4gICAgICAgICk7XG4gICAgICAgIGxldCB0eDpUeCA9IGtleW1ncjEuc2lnblR4KHR4dSk7XG4gICAgICAgIGxldCB0eDI6VHggPSBuZXcgVHgoKTtcbiAgICAgICAgdHgyLmZyb21TdHJpbmcodHgudG9TdHJpbmcoKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eC50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgZXhwZWN0KHR4Mi50b1N0cmluZygpKS50b0JlKHR4LnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgIHRlc3QoJ0NyZWF0aW9uIFR4MicsICgpID0+IHtcbiAgICAgICAgbGV0IHR4dTpUeFVuc2lnbmVkID0gc2V0Lm1ha2VVbnNpZ25lZFR4KFxuICAgICAgICAgICAgbmV0aWQsIGJsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG5ldyBCTig5MDAwKSwgXG4gICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxLCBhc3NldElEXG4gICAgICAgICk7XG4gICAgICAgIGxldCB0eDpUeCA9IGtleW1ncjEuc2lnblR4KHR4dSk7XG4gICAgICAgIGxldCB0eDI6VHggPSBuZXcgVHgoKTtcbiAgICAgICAgdHgyLmZyb21TdHJpbmcodHgudG9TdHJpbmcoKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eC50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgZXhwZWN0KHR4Mi50b1N0cmluZygpKS50b0JlKHR4LnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgIHRlc3QoJ0NyZWF0aW9uIFR4MycsICgpID0+IHtcbiAgICAgICAgbGV0IHR4dTpUeFVuc2lnbmVkID0gc2V0Lm1ha2VVbnNpZ25lZFR4KFxuICAgICAgICAgICAgbmV0aWQsIGJsb2NrY2hhaW5JRCxcbiAgICAgICAgICAgIG5ldyBCTig5MDAwKSwgXG4gICAgICAgICAgICBhZGRyczMsIGFkZHJzMSwgYWRkcnMxXG4gICAgICAgICk7XG4gICAgICAgIGxldCB0eDpUeCA9IGtleW1ncjEuc2lnblR4KHR4dSk7XG4gICAgICAgIGxldCB0eDI6VHggPSBuZXcgVHgoKTtcbiAgICAgICAgdHgyLmZyb21TdHJpbmcodHgudG9TdHJpbmcoKSk7XG4gICAgICAgIGV4cGVjdCh0eDIudG9CdWZmZXIoKS50b1N0cmluZyhcImhleFwiKSkudG9CZSh0eC50b0J1ZmZlcigpLnRvU3RyaW5nKFwiaGV4XCIpKTtcbiAgICAgICAgZXhwZWN0KHR4Mi50b1N0cmluZygpKS50b0JlKHR4LnRvU3RyaW5nKCkpO1xuICAgIH0pO1xufSk7XG4gICAgIl19

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc