@bitgo/abstract-lightning 7.8.3 → 7.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/abstractLightningCoin.d.ts +3 -1
- package/dist/src/abstractLightningCoin.d.ts.map +1 -1
- package/dist/src/abstractLightningCoin.js +7 -3
- package/dist/src/lightning/parseWithdrawPsbt.d.ts.map +1 -1
- package/dist/src/lightning/parseWithdrawPsbt.js +6 -2
- package/dist/test/unit/lightning/parseWithdrawPsbt.js +40 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, VerifyAddressOptions, VerifyTransactionOptions } from '@bitgo/sdk-core';
|
|
2
|
+
import { BaseCoin as StaticsBaseCoin } from '@bitgo/statics';
|
|
2
3
|
import * as utxolib from '@bitgo/utxo-lib';
|
|
3
4
|
export declare abstract class AbstractLightningCoin extends BaseCoin {
|
|
5
|
+
protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
|
|
4
6
|
private readonly _network;
|
|
5
|
-
protected constructor(bitgo: BitGoBase, network: utxolib.Network);
|
|
7
|
+
protected constructor(bitgo: BitGoBase, network: utxolib.Network, staticsCoin?: Readonly<StaticsBaseCoin>);
|
|
6
8
|
getBaseFactor(): number;
|
|
7
9
|
verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
|
|
8
10
|
isWalletAddress(params: VerifyAddressOptions): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractLightningCoin.d.ts","sourceRoot":"","sources":["../../src/abstractLightningCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAI3C,8BAAsB,qBAAsB,SAAQ,QAAQ;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"abstractLightningCoin.d.ts","sourceRoot":"","sources":["../../src/abstractLightningCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAI3C,8BAAsB,qBAAsB,SAAQ,QAAQ;IAC1D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IASzG,aAAa,IAAI,MAAM;IAIvB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAcvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E,kBAAkB;IAClB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB;CAIlD"}
|
|
@@ -5,12 +5,16 @@ const sdk_core_1 = require("@bitgo/sdk-core");
|
|
|
5
5
|
const crypto_1 = require("crypto");
|
|
6
6
|
const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
7
7
|
class AbstractLightningCoin extends sdk_core_1.BaseCoin {
|
|
8
|
-
constructor(bitgo, network) {
|
|
8
|
+
constructor(bitgo, network, staticsCoin) {
|
|
9
9
|
super(bitgo);
|
|
10
|
+
if (!staticsCoin) {
|
|
11
|
+
throw new Error('missing required constructor parameter staticsCoin');
|
|
12
|
+
}
|
|
13
|
+
this._staticsCoin = staticsCoin;
|
|
10
14
|
this._network = network;
|
|
11
15
|
}
|
|
12
16
|
getBaseFactor() {
|
|
13
|
-
return
|
|
17
|
+
return Math.pow(10, this._staticsCoin.decimalPlaces);
|
|
14
18
|
}
|
|
15
19
|
verifyTransaction(params) {
|
|
16
20
|
throw new Error('Method not implemented.');
|
|
@@ -50,4 +54,4 @@ class AbstractLightningCoin extends sdk_core_1.BaseCoin {
|
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
exports.AbstractLightningCoin = AbstractLightningCoin;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RMaWdodG5pbmdDb2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Fic3RyYWN0TGlnaHRuaW5nQ29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FXeUI7QUFHekIsbUNBQXFDO0FBQ3JDLDhDQUF3QztBQUV4QyxNQUFzQixxQkFBc0IsU0FBUSxtQkFBUTtJQUcxRCxZQUFzQixLQUFnQixFQUFFLE9BQXdCLEVBQUUsV0FBdUM7UUFDdkcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWdDO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQTRCO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBK0I7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBYTtRQUMzQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDViwwRUFBMEU7WUFDMUUsMEVBQTBFO1lBQzFFLGtFQUFrRTtZQUNsRSxJQUFJLEdBQUcsSUFBQSxvQkFBVyxFQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsZ0JBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsT0FBTztZQUNMLEdBQUcsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQ3RDLEdBQUcsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZTtRQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUE4QjtRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxNQUErQjtRQUMvQyxxREFBcUQ7UUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQTNERCxzREEyREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgS2V5UGFpcixcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TGlnaHRuaW5nQ29pbiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmV0d29yazogdXR4b2xpYi5OZXR3b3JrO1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICAgIHRoaXMuX25ldHdvcmsgPSBuZXR3b3JrO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgaWYgKCFzZWVkKSB7XG4gICAgICAvLyBBbiBleHRlbmRlZCBwcml2YXRlIGtleSBoYXMgYm90aCBhIG5vcm1hbCAyNTYgYml0IHByaXZhdGUga2V5IGFuZCBhIDI1NlxuICAgICAgLy8gYml0IGNoYWluIGNvZGUsIGJvdGggb2Ygd2hpY2ggbXVzdCBiZSByYW5kb20uIDUxMiBiaXRzIGlzIHRoZXJlZm9yZSB0aGVcbiAgICAgIC8vIG1heGltdW0gZW50cm9weSBhbmQgZ2l2ZXMgdXMgbWF4aW11bSBzZWN1cml0eSBhZ2FpbnN0IGNyYWNraW5nLlxuICAgICAgc2VlZCA9IHJhbmRvbUJ5dGVzKDUxMiAvIDgpO1xuICAgIH1cbiAgICBjb25zdCBleHRlbmRlZEtleSA9IGJpcDMyLmZyb21TZWVkKHNlZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGV4dGVuZGVkS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICAgIHBydjogZXh0ZW5kZWRLZXkudG9CYXNlNTgoKSxcbiAgICB9O1xuICB9XG5cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHBhcmFtczogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpIHtcbiAgICAvKiogaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9CVEMtMjE0OSAqL1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseWithdrawPsbt.d.ts","sourceRoot":"","sources":["../../../src/lightning/parseWithdrawPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"parseWithdrawPsbt.d.ts","sourceRoot":"","sources":["../../../src/lightning/parseWithdrawPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA6BhE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,CA8BvG;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,IAAI,CAiEN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,UAAU,EAAE,yBAAyB,EAAE,EACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAsBN"}
|
|
@@ -41,7 +41,11 @@ const utxo_lib_1 = require("@bitgo/utxo-lib");
|
|
|
41
41
|
const lightningUtils_1 = require("./lightningUtils");
|
|
42
42
|
function parseDerivationPath(derivationPath) {
|
|
43
43
|
const pathSegments = derivationPath.split('/');
|
|
44
|
-
|
|
44
|
+
// Paths may or may not include the 'm/' prefix depending on how they were created:
|
|
45
|
+
// bip174 binary deserialization omits it (e.g. "84'/0'/0'/1/6"),
|
|
46
|
+
// while manually constructed paths typically include it (e.g. "m/84'/0'/0'/1/6").
|
|
47
|
+
const offset = pathSegments[0] === 'm' ? 1 : 0;
|
|
48
|
+
const purpose = Number(pathSegments[offset].replace(/'/g, ''));
|
|
45
49
|
const change = Number(pathSegments[pathSegments.length - 2]);
|
|
46
50
|
const addressIndex = Number(pathSegments[pathSegments.length - 1]);
|
|
47
51
|
if (purpose !== lightningUtils_1.PURPOSE_WRAPPED_P2WKH && purpose !== lightningUtils_1.PURPOSE_P2WKH && purpose !== lightningUtils_1.PURPOSE_P2TR) {
|
|
@@ -156,4 +160,4 @@ function validatePsbtForWithdraw(psbtHex, network, recipients, accounts) {
|
|
|
156
160
|
}
|
|
157
161
|
});
|
|
158
162
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDRDQThCQztBQUVELGtEQXFFQztBQUtELDBEQTJCQztBQWpLRCx5REFBMkM7QUFDM0MsOENBQWtEO0FBSWxELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE9BQXdCO0lBQ25FLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsSUFBSSxlQUE0QyxDQUFDO0lBRWpELEtB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QkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsTUFBTSxDQUFDLE9BQU8sZUFBZSxNQUFNLENBQUMsS0FBSywrQkFBK0IsQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgaXNNYWlubmV0LCBQc2J0IH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFdhdGNoT25seUFjY291bnQsIFdpdGhkcmF3QmFzZU91dHB1dFVUWE8gfSBmcm9tICcuLi9jb2RlY3MnO1xuaW1wb3J0IHsgTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgQmlwMzJEZXJpdmF0aW9uIH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZEtleUFkZHJlc3NQdXJwb3NlLFxuICBQVVJQT1NFX1AyVFIsXG4gIFBVUlBPU0VfUDJXS0gsXG4gIFBVUlBPU0VfV1JBUFBFRF9QMldLSCxcbiAgcmV2ZXJ0WHB1YlByZWZpeCxcbn0gZnJvbSAnLi9saWdodG5pbmdVdGlscyc7XG5cbmZ1bmN0aW9uIHBhcnNlRGVyaXZhdGlvblBhdGgoZGVyaXZhdGlvblBhdGg6IHN0cmluZyk6IHtcbiAgcHVycG9zZTogRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZTtcbiAgY2hhbmdlOiBudW1iZXI7XG4gIGFkZHJlc3NJbmRleDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IGRlcml2YXRpb25QYXRoLnNwbGl0KCcvJyk7XG4gIGNvbnN0IHB1cnBvc2UgPSBOdW1iZXIocGF0aFNlZ21lbnRzWzFdLnJlcGxhY2UoLycvZywgJycpKTtcbiAgY29uc3QgY2hhbmdlID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMl0pO1xuICBjb25zdCBhZGRyZXNzSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSk7XG4gIGlmIChwdXJwb3NlICE9PSBQVVJQT1NFX1dSQVBQRURfUDJXS0ggJiYgcHVycG9zZSAhPT0gUFVSUE9TRV9QMldLSCAmJiBwdXJwb3NlICE9PSBQVVJQT1NFX1AyVFIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2UgaW4gZGVyaXZhdGlvbiBwYXRoOiAke3B1cnBvc2V9YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHVycG9zZSwgY2hhbmdlLCBhZGRyZXNzSW5kZXggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHNidE91dHB1dHMocHNidDogUHNidCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+W10ge1xuICBjb25zdCBwYXJzZWRPdXRwdXRzOiBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPPGJpZ2ludD5bXSA9IFtdO1xuICBsZXQgYmlwMzJEZXJpdmF0aW9uOiBCaXAzMkRlcml2YXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG91dHB1dCA9IHBzYnQuZGF0YS5vdXRwdXRzW2ldO1xuICAgIGNvbnN0IHR4T3V0cHV0ID0gcHNidC50eE91dHB1dHNbaV07XG5cbiAgICBsZXQgYWRkcmVzcyA9ICcnO1xuICAgIGNvbnN0IHZhbHVlID0gdHhPdXRwdXQudmFsdWU7XG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIGlzQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIGJpcDMyRGVyaXZhdGlvbiA9IG91dHB1dC5iaXAzMkRlcml2YXRpb25bMF07XG4gICAgfVxuICAgIGlmICh0eE91dHB1dC5zY3JpcHQpIHtcbiAgICAgIGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdCh0eE91dHB1dC5zY3JpcHQsIG5ldHdvcmspO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IEJpZ0ludCh2YWx1ZSk7XG5cbiAgICBwYXJzZWRPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB2YWx1ZUJpZ0ludCxcbiAgICAgIGNoYW5nZTogaXNDaGFuZ2UsXG4gICAgICBiaXAzMkRlcml2YXRpb24sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkT3V0cHV0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUNoYW5nZUFkZHJlc3MoXG4gIG91dHB1dDogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+LFxuICBhY2NvdW50czogV2F0Y2hPbmx5QWNjb3VudFtdLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IHZvaWQge1xuICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24gfHwgIW91dHB1dC5iaXAzMkRlcml2YXRpb24ucGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgYmlwMzJEZXJpdmF0aW9uIHBhdGggbm90IGZvdW5kIGZvciBjaGFuZ2UgYWRkcmVzc2ApO1xuICB9XG4gIC8vIGRlcml2YXRpb24gcGF0aCBleGFtcGxlOiBtLzg0Jy8wJy8wJy8xLzBcbiAgY29uc3QgeyBwdXJwb3NlLCBjaGFuZ2UsIGFkZHJlc3NJbmRleCB9ID0gcGFyc2VEZXJpdmF0aW9uUGF0aChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnBhdGgpO1xuXG4gIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgYWNjb3VudCB1c2luZyB0aGUgcHVycG9zZVxuICBjb25zdCBhY2NvdW50ID0gYWNjb3VudHMuZmluZCgoYWNjKSA9PiBhY2MucHVycG9zZSA9PT0gcHVycG9zZSk7XG4gIGlmICghYWNjb3VudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWNjb3VudCBub3QgZm91bmQgZm9yIHB1cnBvc2U6ICR7cHVycG9zZX1gKTtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgdXB1YiwgdnB1YiwgZXRjIHByZWZpeGVzIHRvIHhwdWIgYXMgdXR4b2xpYiBkb2Vzbid0IHN1cHBvcnQgdGhlc2VcbiAgY29uc3QgY29udmVydGVkWHB1YiA9IHJldmVydFhwdWJQcmVmaXgoYWNjb3VudC54cHViLCBwdXJwb3NlLCBpc01haW5uZXQobmV0d29yaykpO1xuICAvLyBDcmVhdGUgYSBCSVAzMiBub2RlIGZyb20gdGhlIHhwdWJcbiAgY29uc3QgeHB1Yk5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoY29udmVydGVkWHB1YiwgbmV0d29yayk7XG5cbiAgLy8gRGVyaXZlIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIHhwdWIgdXNpbmcgdGhlIGNoYW5nZSBhbmQgYWRkcmVzcyBpbmRleFxuICBjb25zdCBkZXJpdmVkUHVia2V5ID0geHB1Yk5vZGUuZGVyaXZlKGNoYW5nZSkuZGVyaXZlKGFkZHJlc3NJbmRleCkucHVibGljS2V5O1xuXG4gIGlmIChkZXJpdmVkUHVia2V5LnRvU3RyaW5nKCdoZXgnKSAhPT0gb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wdWJrZXkudG9TdHJpbmcoJ2hleCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzOiAke291dHB1dC5hZGRyZXNzfSwgZGVyaXZlZDogJHtkZXJpdmVkUHVia2V5LnRvU3RyaW5nKFxuICAgICAgICAnaGV4J1xuICAgICAgKX0sIGV4cGVjdGVkOiAke291dHB1dC5iaXAzMkRlcml2YXRpb24ucHVia2V5LnRvU3RyaW5nKCdoZXgnKX1gXG4gICAgKTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB0aGUgY29ycmVjdCBwYXltZW50IHR5cGUgYmFzZWQgb24gdGhlIHB1cnBvc2VcbiAgbGV0IGRlcml2ZWRBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN3aXRjaCAocHVycG9zZSkge1xuICAgIGNhc2UgNDk6IC8vIFAyU0gtUDJXUEtIIChOZXN0ZWQgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyc2goe1xuICAgICAgICByZWRlZW06IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4NDogLy8gUDJXUEtIIChOYXRpdmUgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgIHB1YmtleTogZGVyaXZlZFB1YmtleSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg2OiAvLyBQMlRSIChUYXByb290KVxuICAgICAgLy8gUDJUUiByZXF1aXJlcyB4LW9ubHkgcHVia2V5ICgzMiBieXRlcylcbiAgICAgIGNvbnN0IHhPbmx5UHVia2V5ID0gZGVyaXZlZFB1YmtleS5sZW5ndGggPT09IDMzID8gZGVyaXZlZFB1YmtleS5zdWJhcnJheSgxLCAzMykgOiBkZXJpdmVkUHVia2V5O1xuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6IHhPbmx5UHVia2V5LFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0sXG4gICAgICAgIHsgZWNjTGliOiB1dHhvbGliLmVjYyB9XG4gICAgICApLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwdXJwb3NlOiAke3B1cnBvc2V9YCk7XG4gIH1cblxuICBpZiAoZGVyaXZlZEFkZHJlc3MgIT09IG91dHB1dC5hZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNoYW5nZSBhZGRyZXNzOiBleHBlY3RlZCAke2Rlcml2ZWRBZGRyZXNzfSwgZ290ICR7b3V0cHV0LmFkZHJlc3N9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGZ1bmRlZCBwc2J0IGJlZm9yZSBjcmVhdGluZyB0aGUgc2lnbmF0dXJlcyBmb3Igd2l0aGRyYXcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhcbiAgcHNidEhleDogc3RyaW5nLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHJlY2lwaWVudHM6IExpZ2h0bmluZ09uY2hhaW5SZWNpcGllbnRbXSxcbiAgYWNjb3VudHM6IFdhdGNoT25seUFjY291bnRbXVxuKTogdm9pZCB7XG4gIGNvbnN0IHBhcnNlZFBzYnQgPSBQc2J0LmZyb21IZXgocHNidEhleCwgeyBuZXR3b3JrOiBuZXR3b3JrIH0pO1xuICBjb25zdCBvdXRwdXRzID0gcGFyc2VQc2J0T3V0cHV0cyhwYXJzZWRQc2J0LCBuZXR3b3JrKTtcbiAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQpID0+IHtcbiAgICBpZiAob3V0cHV0LmNoYW5nZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmVyaWZ5Q2hhbmdlQWRkcmVzcyhvdXRwdXQsIGFjY291bnRzLCBuZXR3b3JrKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB2ZXJpZnkgY2hhbmdlIGFkZHJlc3M6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1hdGNoID0gZmFsc2U7XG4gICAgICByZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICBpZiAocmVjaXBpZW50LmFkZHJlc3MgPT09IG91dHB1dC5hZGRyZXNzICYmIEJpZ0ludChyZWNpcGllbnQuYW1vdW50U2F0KSA9PT0gb3V0cHV0LnZhbHVlKSB7XG4gICAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQU0JUIG91dHB1dCAke291dHB1dC5hZGRyZXNzfSB3aXRoIHZhbHVlICR7b3V0cHV0LnZhbHVlfSBkb2VzIG5vdCBtYXRjaCBhbnkgcmVjaXBpZW50YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLDRDQThCQztBQUVELGtEQXFFQztBQUtELDBEQTJCQztBQXJLRCx5REFBMkM7QUFDM0MsOENBQWtEO0FBSWxELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsbUZBQW1GO0lBQ25GLGlFQUFpRTtJQUNqRSxrRkFBa0Y7SUFDbEYsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1B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LENBQUMsU0FBUyxDQUFDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN6RixLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsTUFBTSxDQUFDLE9BQU8sZUFBZSxNQUFNLENBQUMsS0FBSywrQkFBK0IsQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgaXNNYWlubmV0LCBQc2J0IH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFdhdGNoT25seUFjY291bnQsIFdpdGhkcmF3QmFzZU91dHB1dFVUWE8gfSBmcm9tICcuLi9jb2RlY3MnO1xuaW1wb3J0IHsgTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgQmlwMzJEZXJpdmF0aW9uIH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZEtleUFkZHJlc3NQdXJwb3NlLFxuICBQVVJQT1NFX1AyVFIsXG4gIFBVUlBPU0VfUDJXS0gsXG4gIFBVUlBPU0VfV1JBUFBFRF9QMldLSCxcbiAgcmV2ZXJ0WHB1YlByZWZpeCxcbn0gZnJvbSAnLi9saWdodG5pbmdVdGlscyc7XG5cbmZ1bmN0aW9uIHBhcnNlRGVyaXZhdGlvblBhdGgoZGVyaXZhdGlvblBhdGg6IHN0cmluZyk6IHtcbiAgcHVycG9zZTogRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZTtcbiAgY2hhbmdlOiBudW1iZXI7XG4gIGFkZHJlc3NJbmRleDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IGRlcml2YXRpb25QYXRoLnNwbGl0KCcvJyk7XG4gIC8vIFBhdGhzIG1heSBvciBtYXkgbm90IGluY2x1ZGUgdGhlICdtLycgcHJlZml4IGRlcGVuZGluZyBvbiBob3cgdGhleSB3ZXJlIGNyZWF0ZWQ6XG4gIC8vIGJpcDE3NCBiaW5hcnkgZGVzZXJpYWxpemF0aW9uIG9taXRzIGl0IChlLmcuIFwiODQnLzAnLzAnLzEvNlwiKSxcbiAgLy8gd2hpbGUgbWFudWFsbHkgY29uc3RydWN0ZWQgcGF0aHMgdHlwaWNhbGx5IGluY2x1ZGUgaXQgKGUuZy4gXCJtLzg0Jy8wJy8wJy8xLzZcIikuXG4gIGNvbnN0IG9mZnNldCA9IHBhdGhTZWdtZW50c1swXSA9PT0gJ20nID8gMSA6IDA7XG4gIGNvbnN0IHB1cnBvc2UgPSBOdW1iZXIocGF0aFNlZ21lbnRzW29mZnNldF0ucmVwbGFjZSgvJy9nLCAnJykpO1xuICBjb25zdCBjaGFuZ2UgPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAyXSk7XG4gIGNvbnN0IGFkZHJlc3NJbmRleCA9IE51bWJlcihwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDFdKTtcbiAgaWYgKHB1cnBvc2UgIT09IFBVUlBPU0VfV1JBUFBFRF9QMldLSCAmJiBwdXJwb3NlICE9PSBQVVJQT1NFX1AyV0tIICYmIHB1cnBvc2UgIT09IFBVUlBPU0VfUDJUUikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHVycG9zZSBpbiBkZXJpdmF0aW9uIHBhdGg6ICR7cHVycG9zZX1gKTtcbiAgfVxuICByZXR1cm4geyBwdXJwb3NlLCBjaGFuZ2UsIGFkZHJlc3NJbmRleCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQc2J0T3V0cHV0cyhwc2J0OiBQc2J0LCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPPGJpZ2ludD5bXSB7XG4gIGNvbnN0IHBhcnNlZE91dHB1dHM6IFdpdGhkcmF3QmFzZU91dHB1dFVUWE88YmlnaW50PltdID0gW107XG4gIGxldCBiaXAzMkRlcml2YXRpb246IEJpcDMyRGVyaXZhdGlvbiB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgb3V0cHV0ID0gcHNidC5kYXRhLm91dHB1dHNbaV07XG4gICAgY29uc3QgdHhPdXRwdXQgPSBwc2J0LnR4T3V0cHV0c1tpXTtcblxuICAgIGxldCBhZGRyZXNzID0gJyc7XG4gICAgY29uc3QgdmFsdWUgPSB0eE91dHB1dC52YWx1ZTtcbiAgICBsZXQgaXNDaGFuZ2UgPSBmYWxzZTtcblxuICAgIGlmIChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uICYmIG91dHB1dC5iaXAzMkRlcml2YXRpb24ubGVuZ3RoID4gMCkge1xuICAgICAgaXNDaGFuZ2UgPSB0cnVlO1xuICAgICAgYmlwMzJEZXJpdmF0aW9uID0gb3V0cHV0LmJpcDMyRGVyaXZhdGlvblswXTtcbiAgICB9XG4gICAgaWYgKHR4T3V0cHV0LnNjcmlwdCkge1xuICAgICAgYWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHR4T3V0cHV0LnNjcmlwdCwgbmV0d29yayk7XG4gICAgfVxuICAgIGNvbnN0IHZhbHVlQmlnSW50ID0gQmlnSW50KHZhbHVlKTtcblxuICAgIHBhcnNlZE91dHB1dHMucHVzaCh7XG4gICAgICBhZGRyZXNzLFxuICAgICAgdmFsdWU6IHZhbHVlQmlnSW50LFxuICAgICAgY2hhbmdlOiBpc0NoYW5nZSxcbiAgICAgIGJpcDMyRGVyaXZhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5Q2hhbmdlQWRkcmVzcyhcbiAgb3V0cHV0OiBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPPGJpZ2ludD4sXG4gIGFjY291bnRzOiBXYXRjaE9ubHlBY2NvdW50W10sXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29ya1xuKTogdm9pZCB7XG4gIGlmICghb3V0cHV0LmJpcDMyRGVyaXZhdGlvbiB8fCAhb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBiaXAzMkRlcml2YXRpb24gcGF0aCBub3QgZm91bmQgZm9yIGNoYW5nZSBhZGRyZXNzYCk7XG4gIH1cbiAgLy8gZGVyaXZhdGlvbiBwYXRoIGV4YW1wbGU6IG0vODQnLzAnLzAnLzEvMFxuICBjb25zdCB7IHB1cnBvc2UsIGNoYW5nZSwgYWRkcmVzc0luZGV4IH0gPSBwYXJzZURlcml2YXRpb25QYXRoKG91dHB1dC5iaXAzMkRlcml2YXRpb24ucGF0aCk7XG5cbiAgLy8gRmluZCB0aGUgY29ycmVzcG9uZGluZyBhY2NvdW50IHVzaW5nIHRoZSBwdXJwb3NlXG4gIGNvbnN0IGFjY291bnQgPSBhY2NvdW50cy5maW5kKChhY2MpID0+IGFjYy5wdXJwb3NlID09PSBwdXJwb3NlKTtcbiAgaWYgKCFhY2NvdW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBY2NvdW50IG5vdCBmb3VuZCBmb3IgcHVycG9zZTogJHtwdXJwb3NlfWApO1xuICB9XG5cbiAgLy8gY29udmVydCB1cHViLCB2cHViLCBldGMgcHJlZml4ZXMgdG8geHB1YiBhcyB1dHhvbGliIGRvZXNuJ3Qgc3VwcG9ydCB0aGVzZVxuICBjb25zdCBjb252ZXJ0ZWRYcHViID0gcmV2ZXJ0WHB1YlByZWZpeChhY2NvdW50LnhwdWIsIHB1cnBvc2UsIGlzTWFpbm5ldChuZXR3b3JrKSk7XG4gIC8vIENyZWF0ZSBhIEJJUDMyIG5vZGUgZnJvbSB0aGUgeHB1YlxuICBjb25zdCB4cHViTm9kZSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChjb252ZXJ0ZWRYcHViLCBuZXR3b3JrKTtcblxuICAvLyBEZXJpdmUgdGhlIHB1YmxpYyBrZXkgZnJvbSB0aGUgeHB1YiB1c2luZyB0aGUgY2hhbmdlIGFuZCBhZGRyZXNzIGluZGV4XG4gIGNvbnN0IGRlcml2ZWRQdWJrZXkgPSB4cHViTm9kZS5kZXJpdmUoY2hhbmdlKS5kZXJpdmUoYWRkcmVzc0luZGV4KS5wdWJsaWNLZXk7XG5cbiAgaWYgKGRlcml2ZWRQdWJrZXkudG9TdHJpbmcoJ2hleCcpICE9PSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnB1YmtleS50b1N0cmluZygnaGV4JykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRGVyaXZlZCBwdWJrZXkgZG9lcyBub3QgbWF0Y2ggZm9yIGFkZHJlc3M6ICR7b3V0cHV0LmFkZHJlc3N9LCBkZXJpdmVkOiAke2Rlcml2ZWRQdWJrZXkudG9TdHJpbmcoXG4gICAgICAgICdoZXgnXG4gICAgICApfSwgZXhwZWN0ZWQ6ICR7b3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wdWJrZXkudG9TdHJpbmcoJ2hleCcpfWBcbiAgICApO1xuICB9XG5cbiAgLy8gRGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHBheW1lbnQgdHlwZSBiYXNlZCBvbiB0aGUgcHVycG9zZVxuICBsZXQgZGVyaXZlZEFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChwdXJwb3NlKSB7XG4gICAgY2FzZSA0OTogLy8gUDJTSC1QMldQS0ggKE5lc3RlZCBTZWdXaXQpXG4gICAgICBkZXJpdmVkQWRkcmVzcyA9IHV0eG9saWIucGF5bWVudHMucDJzaCh7XG4gICAgICAgIHJlZGVlbTogdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICAgIHB1YmtleTogZGVyaXZlZFB1YmtleSxcbiAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg0OiAvLyBQMldQS0ggKE5hdGl2ZSBTZWdXaXQpXG4gICAgICBkZXJpdmVkQWRkcmVzcyA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgcHVia2V5OiBkZXJpdmVkUHVia2V5LFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSkuYWRkcmVzcztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODY6IC8vIFAyVFIgKFRhcHJvb3QpXG4gICAgICAvLyBQMlRSIHJlcXVpcmVzIHgtb25seSBwdWJrZXkgKDMyIGJ5dGVzKVxuICAgICAgY29uc3QgeE9ubHlQdWJrZXkgPSBkZXJpdmVkUHVia2V5Lmxlbmd0aCA9PT0gMzMgPyBkZXJpdmVkUHVia2V5LnN1YmFycmF5KDEsIDMzKSA6IGRlcml2ZWRQdWJrZXk7XG4gICAgICBkZXJpdmVkQWRkcmVzcyA9IHV0eG9saWIucGF5bWVudHMucDJ0cihcbiAgICAgICAge1xuICAgICAgICAgIHB1YmtleTogeE9ubHlQdWJrZXksXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgfSxcbiAgICAgICAgeyBlY2NMaWI6IHV0eG9saWIuZWNjIH1cbiAgICAgICkuYWRkcmVzcztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2U6ICR7cHVycG9zZX1gKTtcbiAgfVxuXG4gIGlmIChkZXJpdmVkQWRkcmVzcyAhPT0gb3V0cHV0LmFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgY2hhbmdlIGFkZHJlc3M6IGV4cGVjdGVkICR7ZGVyaXZlZEFkZHJlc3N9LCBnb3QgJHtvdXRwdXQuYWRkcmVzc31gKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgZnVuZGVkIHBzYnQgYmVmb3JlIGNyZWF0aW5nIHRoZSBzaWduYXR1cmVzIGZvciB3aXRoZHJhdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KFxuICBwc2J0SGV4OiBzdHJpbmcsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgcmVjaXBpZW50czogTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudFtdLFxuICBhY2NvdW50czogV2F0Y2hPbmx5QWNjb3VudFtdXG4pOiB2b2lkIHtcbiAgY29uc3QgcGFyc2VkUHNidCA9IFBzYnQuZnJvbUhleChwc2J0SGV4LCB7IG5ldHdvcms6IG5ldHdvcmsgfSk7XG4gIGNvbnN0IG91dHB1dHMgPSBwYXJzZVBzYnRPdXRwdXRzKHBhcnNlZFBzYnQsIG5ldHdvcmspO1xuICBvdXRwdXRzLmZvckVhY2goKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuY2hhbmdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2ZXJpZnlDaGFuZ2VBZGRyZXNzKG91dHB1dCwgYWNjb3VudHMsIG5ldHdvcmspO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHZlcmlmeSBjaGFuZ2UgYWRkcmVzczogJHtlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGlmIChyZWNpcGllbnQuYWRkcmVzcyA9PT0gb3V0cHV0LmFkZHJlc3MgJiYgQmlnSW50KHJlY2lwaWVudC5hbW91bnRTYXQpID09PSBvdXRwdXQudmFsdWUpIHtcbiAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBTQlQgb3V0cHV0ICR7b3V0cHV0LmFkZHJlc3N9IHdpdGggdmFsdWUgJHtvdXRwdXQudmFsdWV9IGRvZXMgbm90IG1hdGNoIGFueSByZWNpcGllbnRgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIl19
|
|
@@ -36,9 +36,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const src_1 = require("../../../src");
|
|
40
|
-
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
41
39
|
const assert_1 = __importDefault(require("assert"));
|
|
40
|
+
const utxolib = __importStar(require("@bitgo/utxo-lib"));
|
|
41
|
+
const src_1 = require("../../../src");
|
|
42
42
|
const createPsbt_1 = require("./createPsbt");
|
|
43
43
|
describe('parseWithdrawPsbt', () => {
|
|
44
44
|
const network = utxolib.networks.testnet;
|
|
@@ -74,6 +74,43 @@ describe('parseWithdrawPsbt', () => {
|
|
|
74
74
|
}, /ERR_BUFFER_OUT_OF_BOUNDS/);
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
|
+
describe('regression tests with created PSBT from LND (no `m/` prefix)', () => {
|
|
78
|
+
const unsignedPsbtHex = '70736274ff01007d0200000001814f07febb372cf9e303c40938d7f1372cf7f5bd3d43de763be10c1b2ac539200000000000ffffffff028813000000000000220020ac06117832f08e952b16c220dde35dd505b5c54fa45a4eb9f2b040efd27ecb12f86a040000000000160014f1f4753cf0f9171dd3724f17ea511baa49e3c22600000000000100fde70401000000000104e55600b7d0003c6b2be7dc105f6c3499b8d426e92fd56c3dca06728e060c80720000000000fdffffff366f5356038e883dd7dd621d0b340c526018329664ccbeb1a723b0a6f8f312a40000000023220020b4b69dea98d8d5fb32a22a0c9ad208fc28efb44943f8e576d5978d215d784d49fdffffff15978f903d63dac56026cec90fc568fbe6e8a5a8b53bf8b5a34eee3723e63eff0000000000fdffffff58a9e6be1da0f25e39af4c95ed102336a64baf9bc8eb7c1ffca97ff0d0d651ff0000000000fdffffff0145860400000000001600146b618e8d1d709711104f92a857032a8d66f1bf7d0400483045022100d85bc99bf6d610978630518f79eeee025c8ce40eb65f12360f0f47d5b30ca547022036d79384a55bbba00520d626c3ae05a5f341fd7d65f211fa64bfedad5e827c7301483045022100dacce37fbffeb2e9ee198ab3a78cfdf01e34655313482ff75376bb5e2152a05d02205a7d1b7072480368d274de0229bbb9e6f4e4cda202f6750b9a90f8517604413e0169522102dd6b15d5c483080aaeaf3be51c8ee6cd794dbfa65e5c8036fe2c67f0080929702103370c44e05dddfc29fdb418ae583652b4fb7ee62d07562fc1e5b1696caaf3908f2103c6d980811cb03048a7b48f639bbb0575444af1f670af8462bb1c93112af2080a53ae040048304502210094646e8c1c25368ed9cdf5ba10b54a88ce20bb9b452877d0d2f27823897ab9d40220183c80560c1860d22d7ae8aaeee712d930e427252345bddece1a333d345c6d9801483045022100d123c1f5a79d32905f9d725b590160afc8e14bb01cb1a5d258304c6b6673113c0220722003050f57366b3f3486c1fdd5559579f1c67c3d644d31ac6f20bb8022f7d201695221034a2c8e0891e30698aa7015f1210451f1e5336be96bf846cd43528c15b0645b032103e6305f797838299f4188595b1b01bd9fe60db0e4bb9331d957750248d055f299210383c028341d5d273afca5f5265e2c2ee9619c0f1b328956ef3000ab09eccaed3b53ae0400473044022044a43ae38b86c375aa57b3d96386fca52f74a5bc4fb37c77738efa4c0566662202200d1af93d2022c48f3f3cc134d3d75bbcfce30615e53d9246c200c5349a7d978c0147304402207ce3043211d9344dad8f4e2bf848bf1ca151310a188e707663b28475e12099d0022060d2b3533e7c362d39b041102edf17e0486b1aee55a01c7895485b8630daa39c0169522103c71a350e2b06ec9d0710a13f608bb76f35a35fed491fbb5b97280caed4c9590f2103692ea685162a1da7e86e0beeb1ed0331e8d0fbbf2e05f002071b15044c402b782102960087d0d5b8e1a449ed562553ef3149885a930f60c40324165221a7fc7627ea53ae0400483045022100a8382cfa2582abdc77417f9aa53e5ce0e2d31eb5e14b7836961da8c045de3a500220398555b93816ef7ec417bb7555bc51e0477b3c65f83d0951cff2a5040457314e0147304402204f66fd4507bd54cc25028b5660c00fdcfe15ce6121eabff7911e7307d24c7f1102200591e969897109a2372a6b22e41d158d4e0ae53ca0963166ffd8a23e06522ac9016952210282aaf28d528e6b6326880b1539a14a96dcee5d9a0920a31f3581e5ac21a9de462103f84e26e78f2c587821b581761b134f7721e33b1ad97bd1599125ee23369ea1202103da6eddca9c0eaaa08b179c035ed0adb516a592ba1321ffc5cb11dcae8c3a704f53ae0000000001011f45860400000000001600146b618e8d1d709711104f92a857032a8d66f1bf7d010304010000002206038361bfad9b6896c938690df1e67c669ecd7a021b117382bbfa81ff6de8ec153718000000005400008000000080000000800000000000000000000022020376cb4ac899d130e2d655fca6d362fe7c745cc15486849e401f7c21b3d3df37c81800000000540000800000008000000080010000000800000000';
|
|
79
|
+
const recipients = [
|
|
80
|
+
{
|
|
81
|
+
amountSat: 5000n,
|
|
82
|
+
address: 'tb1q4srpz7pj7z8f22ckcgsdmc6a65zmt32053dyaw0jkpqwl5n7evfqhc07u4',
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
const accounts = [
|
|
86
|
+
{
|
|
87
|
+
purpose: 49,
|
|
88
|
+
coin_type: 0,
|
|
89
|
+
account: 0,
|
|
90
|
+
xpub: 'upub5EW2cim2FSeBDqote8jcKnBSohtZjPRbw9HsXNototipVVj31AzWjgXUSonbvi7RNALY73rkgXTQY4YUpovrG1WV4ATKXyQpMa1sMnJdCbm',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
purpose: 84,
|
|
94
|
+
coin_type: 0,
|
|
95
|
+
account: 0,
|
|
96
|
+
xpub: 'vpub5Z8kVs9L6fSK4qc1G36VqKdTiSdfCGSzrcz4EYGkywkWX43EJiLcSBEd1XE4fxgXir7Wkwaia4eTwbakngVDHHnToc9qQMBcxerr2U5MHnN',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
purpose: 86,
|
|
100
|
+
coin_type: 0,
|
|
101
|
+
account: 0,
|
|
102
|
+
xpub: 'tpubDCyXDnLqhmTxjcGV2KexrojfJPBept2gWs2mg9V46y6HAp9nLzg3idmESEJ1RDtfaLyVL6x2MoJsv66hQPWrCxoR2jYQbGbHd5FmEa6BfW3',
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
it('should parse a valid withdraw PSBT', () => {
|
|
106
|
+
(0, src_1.validatePsbtForWithdraw)(unsignedPsbtHex, network, recipients, accounts);
|
|
107
|
+
});
|
|
108
|
+
it('should throw for invalid PSBT hex', () => {
|
|
109
|
+
assert_1.default.throws(() => {
|
|
110
|
+
(0, src_1.validatePsbtForWithdraw)('asdasd', network, recipients, accounts);
|
|
111
|
+
}, /ERR_BUFFER_OUT_OF_BOUNDS/);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
77
114
|
describe('test cases with creating psbt on the go', () => {
|
|
78
115
|
it('should validate PSBT with P2WPKH (purpose 84) change address', () => {
|
|
79
116
|
const { psbt, masterKey } = (0, createPsbt_1.createTestPsbt)({
|
|
@@ -438,4 +475,4 @@ describe('parseWithdrawPsbt', () => {
|
|
|
438
475
|
});
|
|
439
476
|
});
|
|
440
477
|
});
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQXVEO0FBQ3ZELHlEQUEyQztBQUMzQyxvREFBNEI7QUFDNUIsNkNBQThDO0FBRTlDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFFekMsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxtRkFBbUY7UUFDbkYsTUFBTSxlQUFlLEdBQ25CLDQrQkFBNCtCLENBQUM7UUFDLytCLE1BQU0sVUFBVSxHQUFHO1lBQ2pCO2dCQUNFLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixPQUFPLEVBQUUsZ0VBQWdFO2FBQzFFO1NBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHO1lBQ2Y7Z0JBQ0UsSUFBSSxFQUFFLGlIQUFpSDtnQkFDdkgsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNEO2dCQUNFLElBQUksRUFBRSxpSEFBaUg7Z0JBQ3ZILE9BQU8sRUFBRSxFQUFFO2dCQUNYLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxDQUFDO2FBQ1g7U0FDRixDQUFDO1FBRUYsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtZQUMzQyxnQkFB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O2dCQUNmO29CQUNFLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO29CQUNyQyxPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQztvQkFDWixPQUFPLEVBQUUsQ0FBQztpQkFDWDthQUNGLENBQUM7WUFFRixJQUFBLDZCQUF1QixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZhbGlkYXRlUHNidEZvcldpdGhkcmF3IH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGNyZWF0ZVRlc3RQc2J0IH0gZnJvbSAnLi9jcmVhdGVQc2J0JztcblxuZGVzY3JpYmUoJ3BhcnNlV2l0aGRyYXdQc2J0JywgKCkgPT4ge1xuICBjb25zdCBuZXR3b3JrID0gdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0O1xuXG4gIGRlc2NyaWJlKCdyZWdyZXNzaW9uIHRlc3RzIHdpdGggaGFyZGNvZGVkIFBTQlQnLCAoKSA9PiB7XG4gICAgLy8gS2VlcGluZyBvbmUgcmVncmVzc2lvbiB0ZXN0IHdpdGggcmVhbCBQU0JUIGRhdGEgdG8gZW5zdXJlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICBjb25zdCB1bnNpZ25lZFBzYnRIZXggPVxuICAgICAgJzcwNzM2Mjc0ZmYwMTAwN2QwMjAwMDAwMDAxNWU1MGI4ZDk2Y2ViZGMzMjczZDlhMTAwZWI2ODM5MmQ5ODBkNWI5MzRiODE3MGM4MGEyMzQ4OGI1OTUyNjhjYTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDIyNTEyMDM3OWJjODhjYzE1ZDM2MDVlZDlkZTFiNjFmZjhkNjUwMjFiNjUwZGIxMTUxZTc1MWEzMDg4NWNjZmNjN2QxNWFmZmE4MGEwMDAwMDAwMDAwMTYwMDE0ODBhMDZmMmU2Yjc3ZTgxN2ZkNWRlNmU0MWVhNTEyYzU2M2MyNmNiODAwMDAwMDAwMDAwMTAwZWEwMjAwMDAwMDAwMDEwMWExNThkODA2NzM1YmI3YzU0ZTRjNzAxZDRmNTgyMWNkNTM0MmQ0OGQ1ZTFmY2JlZDExNjllNmU0NWFhNDQ0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmEwODYwMTAwMDAwMDAwMDAyMjUxMjAzNzliYzg4Y2MxNWQzNjA1ZWQ5ZGUxYjYxZmY4ZDY1MDIxYjY1MGRiMTE1MWU3NTFhMzA4ODVjY2ZjYzdkMTVhNmEzMTBjMDAwMDAwMDAwMDE2MDAxNDc4YTVkOThjNzE2MDQ4NGI5YjAwZjE3ODI4MDNjNThlZGZjNDliOWEwMjQ3MzA0NDAyMjA0MDdkOTE2MmY1MjM3MWRmMjQ2ZGNmYTI5NDNkNDBmYmRjYjBkNGI2NzY4Zjc2ODJjNjUxOTMzNzhiMjg0NWE2MDIyMDEwMWM3YmM0NjBjOTNkMjk3Njk2MWFjMjM0MDBmMGYxMGMxNDVlZmI5ODlhM2FkZGI3ZjAzZWJhYWEyMjAwOTUwMTIxMDM3ZTE3NDQ0Yzg1YzhiN2RhMDdmMTJmZDUzY2IyY2ExNDJjMmI0OTMyZDBmODk4NjQ5YzRiNWJlMDAyMWRhMDk4MDAwMDAwMDAwMTAzMDQwMTAwMDAwMDIyMDYwMmU1NzE0NmU1YjQ3NjJhN2ZmMzc0YWRmNDA3MjA0N2I2N2VmMTE1YWQ0NmEzNDE4OWJkZWI2YTRmODhkYjliMDgxODAwMDAwMDAwNTQwMDAwODAwMDAwMDA4MDAwMDAwMDgwMDEwMDAwMDAwNjAwMDAwMDAwMDAyMjAyMDM3OWFiYmU0NDAwNGZmN2U1MjdiZGVlM2RkOGQ5NWU1Y2QyNTAwNTNmMzVlZTkyMjU4Yjk3YWE4M2RmYTkzYzYyMTgwMDAwMDAwMDU0MDAwMDgwMDAwMDAwODAwMDAwMDA4MDAxMDAwMDAwNTAwMDAwMDAwMCc7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYW1vdW50U2F0OiAxMDAwMDBuLFxuICAgICAgICBhZGRyZXNzOiAndGIxcHg3ZHUzcnhwdDVtcXRtdmF1eG1wbDd4azJxc212NXhtejlnN3c1ZHJwenp1ZWx4ODY5ZHF3YXBlN2snLFxuICAgICAgfSxcbiAgICBdO1xuICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAge1xuICAgICAgICB4cHViOiAndHB1YkRDbWlXTWtUSnJaMjR0MVo2RUNSM0h5eW5DeVo5ekdzV3FoY0xoNkg0eUZLMkNEb3pTc3pEMXBQMkxpNE54MVlZdFJjdm1OYmRiM25EMVN6RmVqWXRQRmZUb2NUdjJFYUFnSkNnNHpwSnBBJyxcbiAgICAgICAgcHVycG9zZTogNDksXG4gICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgYWNjb3VudDogMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHhwdWI6ICd0cHViRENGTjdic3hSOVVUS2dnZEgycG12NUhlSEdRTmlEckp3YTFFWkZ0UDlzSDVQRjI4aTM3Rkhwb1lTWUFSUWtLWjZNaTk4cGtwN295cERjeEZtRTRkUUdxOGpWOEd2M0w2Z21XQmVSd1B4a1AnLFxuICAgICAgICBwdXJwb3NlOiA4NCxcbiAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHZhbGlkIHdpdGhkcmF3IFBTQlQnLCAoKSA9PiB7XG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyh1bnNpZ25lZFBzYnRIZXgsIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIGludmFsaWQgUFNCVCBoZXgnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcoJ2FzZGFzZCcsIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICAgIH0sIC9FUlJfQlVGRkVSX09VVF9PRl9CT1VORFMvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Rlc3QgY2FzZXMgd2l0aCBjcmVhdGluZyBwc2J0IG9uIHRoZSBnbycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCBQMldQS0ggKHB1cnBvc2UgODQpIGNoYW5nZSBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwc2J0LCBtYXN0ZXJLZXkgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA4NCxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS84NCcvMCcvMCcvMS82XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzWzBdLnNjcmlwdCwgbmV0d29yayk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHhwdWI6IG1hc3RlcktleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgICAgICAgcHVycG9zZTogODQsXG4gICAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgUFNCVCB3aXRoIFAyU0gtUDJXUEtIIChwdXJwb3NlIDQ5KSBjaGFuZ2UgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHNidCwgbWFzdGVyS2V5IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogNDksXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vNDknLzAnLzAnLzEvNlwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBtYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDQ5LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCBQMlRSIChwdXJwb3NlIDg2KSBjaGFuZ2UgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHNidCwgbWFzdGVyS2V5IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogODYsXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vODYnLzAnLzAnLzEvNlwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBtYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDg2LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBtaXNzaW5nIGJpcDMyRGVyaXZhdGlvbiBwYXRoIG9uIGNoYW5nZSBvdXRwdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQsIG1hc3RlcktleSB9ID0gY3JlYXRlVGVzdFBzYnQoe1xuICAgICAgICBuZXR3b3JrLFxuICAgICAgICBpbnB1dFZhbHVlOiA1MDAwMDAsXG4gICAgICAgIG91dHB1dFZhbHVlOiAxMDAwMDAsXG4gICAgICAgIGNoYW5nZVZhbHVlOiAzOTAwMDAsXG4gICAgICAgIGNoYW5nZVB1cnBvc2U6IDg0LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgYmlwMzJEZXJpdmF0aW9uIGZyb20gdGhlIGNoYW5nZSBvdXRwdXRcbiAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgb3V0cHV0IHRvIGJlIHRyZWF0ZWQgYXMgYSByZWd1bGFyIHJlY2lwaWVudCBvdXRwdXQsIG5vdCBhIGNoYW5nZSBvdXRwdXRcbiAgICAgIGRlbGV0ZSBwc2J0LmRhdGEub3V0cHV0c1sxXS5iaXAzMkRlcml2YXRpb247XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBtYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVGhlIG91dHB1dCB3aXRob3V0IGJpcDMyRGVyaXZhdGlvbiBpcyB0cmVhdGVkIGFzIGEgcmVjaXBpZW50IG91dHB1dCxcbiAgICAgIC8vIGFuZCBzaW5jZSBpdCdzIG5vdCBpbiB0aGUgcmVjaXBpZW50cyBsaXN0LCBpdCBzaG91bGQgZmFpbCB3aXRoIFwiZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudFwiXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgICB9LCAvZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCBjaGFuZ2UgYWRkcmVzcyAoZGVyaXZlZCBhZGRyZXNzIG1pc21hdGNoKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHNidCB9ID0gY3JlYXRlVGVzdFBzYnQoe1xuICAgICAgICBuZXR3b3JrLFxuICAgICAgICBpbnB1dFZhbHVlOiA1MDAwMDAsXG4gICAgICAgIG91dHB1dFZhbHVlOiAxMDAwMDAsXG4gICAgICAgIGNoYW5nZVZhbHVlOiAzOTAwMDAsXG4gICAgICAgIGNoYW5nZVB1cnBvc2U6IDg0LFxuICAgICAgICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogXCJtLzg0Jy8wJy8wJy8xLzZcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFVzZSBhIGRpZmZlcmVudCB4cHViIHRoYXQgd29uJ3QgbWF0Y2ggdGhlIGNoYW5nZSBhZGRyZXNzXG4gICAgICBjb25zdCBkaWZmZXJlbnRNYXN0ZXJLZXkgPSB1dHhvbGliLmJpcDMyLmZyb21TZWVkKEJ1ZmZlci5hbGxvYygzMiwgMiksIG5ldHdvcmspO1xuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBkaWZmZXJlbnRNYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgICAgfSwgL0Rlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCB1cHViIHByZWZpeCAoUDJTSC1QMldQS0ggdGVzdG5ldCknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA0OSxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS80OScvMCcvMCcvMS82XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzWzBdLnNjcmlwdCwgbmV0d29yayk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBVc2UgdXB1YiBwcmVmaXggKHRlc3RuZXQgUDJTSC1QMldQS0gpIGluc3RlYWQgb2Ygc3RhbmRhcmQgdHB1YlxuICAgICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHJldmVydFhwdWJQcmVmaXggY29ycmVjdGx5IGNvbnZlcnRzIHVwdWIgLT4gdHB1YlxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiAndXB1YjVFZXA3SDVxMzlQelFaTFZFWUxCeXREeUJOZVY3NEU4bVFzeWVMNlVvekZxOVkzTXNaNTJHN1lHdXFySlBnb3lBcUY3VEJlSmRua3JIclZyQjVwa1drUEo5Y0pHQWVQTVU2RjFHeXc2YUZIJyxcbiAgICAgICAgICBwdXJwb3NlOiA0OSxcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIHdvcmsgYmVjYXVzZSByZXZlcnRYcHViUHJlZml4IHdpbGwgY29udmVydCB1cHViIGJhY2sgdG8gdHB1YlxuICAgICAgLy8gSG93ZXZlciwgdGhlIG1hc3RlciBrZXkgd2UgdXNlZCBpcyBkaWZmZXJlbnQsIHNvIGl0IHNob3VsZCBmYWlsIHdpdGggcHVia2V5IG1pc21hdGNoXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgICB9LCAvRGVyaXZlZCBwdWJrZXkgZG9lcyBub3QgbWF0Y2ggZm9yIGFkZHJlc3MvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgUFNCVCB3aXRoIHZwdWIgcHJlZml4IChQMldQS0ggdGVzdG5ldCknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA4NCxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS84NCcvMCcvMCcvMS82XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzWzBdLnNjcmlwdCwgbmV0d29yayk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBVc2UgdnB1YiBwcmVmaXggKHRlc3RuZXQgUDJXUEtIKSBpbnN0ZWFkIG9mIHN0YW5kYXJkIHRwdWJcbiAgICAgIC8vIFRoaXMgdGVzdHMgdGhhdCByZXZlcnRYcHViUHJlZml4IGNvcnJlY3RseSBjb252ZXJ0cyB2cHViIC0+IHRwdWJcbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogJ3ZwdWI1WlUxUEhHcFFvRFNIY2tZaWNvNG5zdndzRDNtVGg2VWpxTDV6eUdXWFpYekJqVFlNTktvdDd0OWVSUFFZNzFoSmNuTk45cjFzczI1ZzN4QTlybW9KNW5XUGc4akVXYXZydHRuc1ZhMXF3MScsXG4gICAgICAgICAgcHVycG9zZTogODQsXG4gICAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCB3b3JrIGJlY2F1c2UgcmV2ZXJ0WHB1YlByZWZpeCB3aWxsIGNvbnZlcnQgdnB1YiBiYWNrIHRvIHRwdWJcbiAgICAgIC8vIEhvd2V2ZXIsIHRoZSBtYXN0ZXIga2V5IHdlIHVzZWQgaXMgZGlmZmVyZW50LCBzbyBpdCBzaG91bGQgZmFpbCB3aXRoIHB1YmtleSBtaXNtYXRjaFxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgICAgfSwgL0Rlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCBtYXRjaGluZyB1cHViIHByZWZpeCBhbmQgY29ycmVjdCBrZXknLCAoKSA9PiB7XG4gICAgICAvLyBJbXBvcnQgdGhlIHNpZ25lciByb290IGtleSBmcm9tIHRoZSBmaXh0dXJlIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSB1cHViL3ZwdWIgYWNjb3VudHNcbiAgICAgIGNvbnN0IHNpZ25lclJvb3RLZXkgPVxuICAgICAgICAndHBydjhaZ3hNQmljUUtzUGU2alM0dkRtMm43czQyUTZNcHZnaFVRcU1tU0tHN2JUWnZHS3RqcmNVM1BHek1ORzM3eXp4eXdyY2R2Z2t3cnI4ZVlYSm1id2R2VU5WVDRVY3Y3cmlzNGp2QTdCVW1nJztcbiAgICAgIGNvbnN0IG1hc3RlckhETm9kZSA9IHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCBuZXR3b3JrKTtcblxuICAgICAgLy8gRGVyaXZlIHRoZSBhY2NvdW50IGtleSBmb3IgcHVycG9zZSA0OVxuICAgICAgY29uc3QgYWNjb3VudEtleSA9IG1hc3RlckhETm9kZS5kZXJpdmVQYXRoKFwibS80OScvMCcvMCdcIik7XG5cbiAgICAgIGNvbnN0IHsgcHNidCB9ID0gY3JlYXRlVGVzdFBzYnQoe1xuICAgICAgICBuZXR3b3JrLFxuICAgICAgICBpbnB1dFZhbHVlOiA1MDAwMDAsXG4gICAgICAgIG91dHB1dFZhbHVlOiAxMDAwMDAsXG4gICAgICAgIGNoYW5nZVZhbHVlOiAzOTAwMDAsXG4gICAgICAgIGNoYW5nZVB1cnBvc2U6IDQ5LFxuICAgICAgICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogXCJtLzQ5Jy8wJy8wJy8xLzZcIixcbiAgICAgICAgbWFzdGVyS2V5OiBhY2NvdW50S2V5LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVXNlIHRoZSB1cHViIGZyb20gdGhlIGZpeHR1cmUgLSB0aGlzIHNob3VsZCB3b3JrIGJlY2F1c2UgdGhlIGtleXMgbWF0Y2hcbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogJ3VwdWI1RWVwN0g1cTM5UHpRWkxWRVlMQnl0RHlCTmVWNzRFOG1Rc3llTDZVb3pGcTlZM01zWjUyRzdZR3VxckpQZ295QXFGN1RCZUpkbmtySHJWckI1cGtXa1BKOWNKR0FlUE1VNkYxR3l3NmFGSCcsXG4gICAgICAgICAgcHVycG9zZTogNDksXG4gICAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCBwYXNzIC0gcmV2ZXJ0WHB1YlByZWZpeCBjb252ZXJ0cyB1cHViIC0+IHRwdWIsIGFuZCB0aGUga2V5IG1hdGNoZXNcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBQU0JUIHdpdGggbWF0Y2hpbmcgdnB1YiBwcmVmaXggYW5kIGNvcnJlY3Qga2V5JywgKCkgPT4ge1xuICAgICAgLy8gSW1wb3J0IHRoZSBzaWduZXIgcm9vdCBrZXkgZnJvbSB0aGUgZml4dHVyZSB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgdXB1Yi92cHViIGFjY291bnRzXG4gICAgICBjb25zdCBzaWduZXJSb290S2V5ID1cbiAgICAgICAgJ3RwcnY4Wmd4TUJpY1FLc1BlNmpTNHZEbTJuN3M0MlE2TXB2Z2hVUXFNbVNLRzdiVFp2R0t0anJjVTNQR3pNTkczN3l6eHl3cmNkdmdrd3JyOGVZWEptYndkdlVOVlQ0VWN2N3JpczRqdkE3QlVtZyc7XG4gICAgICBjb25zdCBtYXN0ZXJIRE5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoc2lnbmVyUm9vdEtleSwgbmV0d29yayk7XG5cbiAgICAgIC8vIERlcml2ZSB0aGUgYWNjb3VudCBrZXkgZm9yIHB1cnBvc2UgODRcbiAgICAgIGNvbnN0IGFjY291bnRLZXkgPSBtYXN0ZXJIRE5vZGUuZGVyaXZlUGF0aChcIm0vODQnLzAnLzAnXCIpO1xuXG4gICAgICBjb25zdCB7IHBzYnQgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA4NCxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS84NCcvMCcvMCcvMS82XCIsXG4gICAgICAgIG1hc3RlcktleTogYWNjb3VudEtleSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFVzZSB0aGUgdnB1YiBmcm9tIHRoZSBmaXh0dXJlIC0gdGhpcyBzaG91bGQgd29yayBiZWNhdXNlIHRoZSBrZXlzIG1hdGNoXG4gICAgICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHhwdWI6ICd2cHViNVpVMVBIR3BRb0RTSGNrWWljbzRuc3Z3c0QzbVRoNlVqcUw1enlHV1haWHpCalRZTU5Lb3Q3dDllUlBRWTcxaEpjbk5OOXIxc3MyNWczeEE5cm1vSjVuV1BnOGpFV2F2cnR0bnNWYTFxdzEnLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVGhpcyBzaG91bGQgcGFzcyAtIHJldmVydFhwdWJQcmVmaXggY29udmVydHMgdnB1YiAtPiB0cHViLCBhbmQgdGhlIGtleSBtYXRjaGVzXG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgUFNCVCB3aXRoIG11bHRpcGxlIHJlY2lwaWVudHMnLCAoKSA9PiB7XG4gICAgICAvLyBDcmVhdGUgYSBQU0JUIG1hbnVhbGx5IHdpdGggMiByZWNpcGllbnQgb3V0cHV0cyBhbmQgMSBjaGFuZ2Ugb3V0cHV0XG4gICAgICBjb25zdCBtYXN0ZXJLZXkgPSB1dHhvbGliLmJpcDMyLmZyb21TZWVkKEJ1ZmZlci5hbGxvYygzMiwgMSksIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCBpbnB1dEtleVBhaXIgPSB1dHhvbGliLkVDUGFpci5tYWtlUmFuZG9tKHsgbmV0d29yayB9KTtcbiAgICAgIGNvbnN0IHAyd3BraElucHV0ID0gdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKGlucHV0S2V5UGFpci5wdWJsaWNLZXkpLFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHBzYnQgPSBuZXcgdXR4b2xpYi5Qc2J0KHsgbmV0d29yayB9KTtcblxuICAgICAgLy8gQWRkIGlucHV0XG4gICAgICBwc2J0LmFkZElucHV0KHtcbiAgICAgICAgaGFzaDogJ2NhNjg1MjU5OGI0ODIzMGFjODcwODE0YjkzNWIwZDk4MmQzOTY4ZWIwMGExZDk3MzMyZGNlYjZjZDliODUwNWUnLFxuICAgICAgICBpbmRleDogMSxcbiAgICAgICAgd2l0bmVzc1V0eG86IHtcbiAgICAgICAgICBzY3JpcHQ6IHAyd3BraElucHV0Lm91dHB1dCEsXG4gICAgICAgICAgdmFsdWU6IEJpZ0ludCg1MDAwMDApLFxuICAgICAgICB9LFxuICAgICAgICBiaXAzMkRlcml2YXRpb246IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXN0ZXJGaW5nZXJwcmludDogQnVmZmVyLmFsbG9jKDQsIDApLFxuICAgICAgICAgICAgcGF0aDogXCJtLzg0Jy8wJy8wJy8wLzBcIixcbiAgICAgICAgICAgIHB1YmtleTogQnVmZmVyLmZyb20oaW5wdXRLZXlQYWlyLnB1YmxpY0tleSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBDcmVhdGUgZmlyc3QgcmVjaXBpZW50XG4gICAgICBjb25zdCByZWNpcGllbnQxS2V5UGFpciA9IHV0eG9saWIuRUNQYWlyLm1ha2VSYW5kb20oeyBuZXR3b3JrIH0pO1xuICAgICAgY29uc3QgcmVjaXBpZW50MVBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgIHB1YmtleTogQnVmZmVyLmZyb20ocmVjaXBpZW50MUtleVBhaXIucHVibGljS2V5KSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVjaXBpZW50MUFkZHJlc3MgPSByZWNpcGllbnQxUGF5bWVudC5hZGRyZXNzITtcblxuICAgICAgLy8gQ3JlYXRlIHNlY29uZCByZWNpcGllbnRcbiAgICAgIGNvbnN0IHJlY2lwaWVudDJLZXlQYWlyID0gdXR4b2xpYi5FQ1BhaXIubWFrZVJhbmRvbSh7IG5ldHdvcmsgfSk7XG4gICAgICBjb25zdCByZWNpcGllbnQyUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgcHVia2V5OiBCdWZmZXIuZnJvbShyZWNpcGllbnQyS2V5UGFpci5wdWJsaWNLZXkpLFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZWNpcGllbnQyQWRkcmVzcyA9IHJlY2lwaWVudDJQYXltZW50LmFkZHJlc3MhO1xuXG4gICAgICAvLyBEZXJpdmUgY2hhbmdlIGFkZHJlc3MgZnJvbSBtYXN0ZXIga2V5XG4gICAgICBjb25zdCBjaGFuZ2VOb2RlID0gbWFzdGVyS2V5LmRlcml2ZSgxKS5kZXJpdmUoNik7IC8vIG0vMS82XG4gICAgICBjb25zdCBjaGFuZ2VQYXltZW50ID0gdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICBwdWJrZXk6IGNoYW5nZU5vZGUucHVibGljS2V5LFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBjaGFuZ2VBZGRyZXNzID0gY2hhbmdlUGF5bWVudC5hZGRyZXNzITtcblxuICAgICAgLy8gQWRkIG91dHB1dHM6IHJlY2lwaWVudDEsIHJlY2lwaWVudDIsIGNoYW5nZVxuICAgICAgcHNidC5hZGRPdXRwdXQoe1xuICAgICAgICBhZGRyZXNzOiByZWNpcGllbnQxQWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgfSk7XG5cbiAgICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgICAgYWRkcmVzczogcmVjaXBpZW50MkFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiBCaWdJbnQoNTAwMDApLFxuICAgICAgfSk7XG5cbiAgICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgICAgYWRkcmVzczogY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IEJpZ0ludCgzNDAwMDApLCAvLyA1MDAwMDAgLSAxMDAwMDAgLSA1MDAwMCAtIDEwMDAwIChmZWUpXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIGJpcDMyRGVyaXZhdGlvbiB0byB0aGUgY2hhbmdlIG91dHB1dCAoaW5kZXggMilcbiAgICAgIHBzYnQudXBkYXRlT3V0cHV0KDIsIHtcbiAgICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IEJ1ZmZlci5hbGxvYyg0LCAwKSxcbiAgICAgICAgICAgIHBhdGg6IFwibS84NCcvMCcvMCcvMS82XCIsXG4gICAgICAgICAgICBwdWJrZXk6IGNoYW5nZU5vZGUucHVibGljS2V5LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50MUFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCg1MDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50MkFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHhwdWI6IG1hc3RlcktleS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgICAgICAgcHVycG9zZTogODQsXG4gICAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBRTVCLHlEQUEyQztBQUUzQyxzQ0FBdUQ7QUFDdkQsNkNBQThDO0FBRTlDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7SUFDakMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFFekMsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUNwRCxtRkFBbUY7UUFDbkYsTUFBTSxlQUFlLEdBQ25CLDQrQkFBNCtCLENBQUM7UUFDLytCLE1BQU0sVUFBVSxHQUFHO1lBQ2pCO2dCQUNFLFNBQVMsRUFBRSxPQUFPO2dCQUNsQixPQUFPLEVBQUUsZ0VBQWdFO2FBQzFFO1NBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHO1lBQ2Y7Z0JBQ0UsSUFBSSxFQUFFLGlIQUFpSDtnQkFDdkgsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUM7YUFDWDtZQUNEO2dCQUNFLElBQUksRUFBRSxpSEFBaUg7Z0JBQ3ZILE9BQU8sRUFBRSxFQUFFO2dCQUNYLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxDQUFDO2FBQ1g7U0FDRixDQUFDO1FBRUYsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtZQUM1QyxJQUFBLDZCQUF1QixFQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtZQUMzQyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUEsNkJBQXVCLEVBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw4REFBOEQsRUFBRSxHQUFHLEVBQUU7UUFDNUUsTUFBTSxlQUFlLEdBQ25CLDhpR0FBOGlHLENBQUM7UUFDampHLE1BQU0sVUFBVSxHQUFHO1lBQ2pCO2dCQUNFLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixPQUFPLEVBQUUsZ0VBQWdFO2FBQzFFO1NBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHO1lBQ2Y7Z0JBQ0UsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsU0FBUyxFQUFFLENBQUM7Z0JBQ1osT0FBTyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLGlIQUFpSDthQUN4SDtZQUNEO2dCQUNFLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFNBQVMsRUFBRSxDQUFDO2dCQUNaLE9BQU8sRUFBRSxDQUFDO2dCQUNWLElBQUksRUFBRSxpSEFBaUg7YUFDeEg7WUFDRDtnQkFDRSxPQUFPLEVBQUUsRUFBRTtnQkFDWCxTQUFTLEVBQUUsQ0FBQztnQkFDWixPQUFPLEVBQUUsQ0FBQztnQkFDVixJQUFJLEVBQUUsaUhBQWlIO2FBQ3hIO1NBQ0YsQ0FBQztRQUVGLEVBQUUsQ0FBQyxvQ0FBb0MsRUFBRSxHQUFHLEVBQUU7WUFDNUMsSUFBQSw2QkFBdUIsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7WUFDM0MsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixJQUFBLDZCQUF1QixFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ25FLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxHQUFHLEVBQUU7WUFDdEUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQ3pDLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjthQUN4QyxDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsSUFBQSw2QkFBdUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7WUFDM0UsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQ3pDLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjthQUN4QyxDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsSUFBQSw2QkFBdUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0REFBNEQsRUFBRSxHQUFHLEVBQUU7WUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQ3pDLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjthQUN4QyxDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsSUFBQSw2QkFBdUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7WUFDeEUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQ3pDLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7YUFDbEIsQ0FBQyxDQUFDO1lBRUgsb0RBQW9EO1lBQ3BELDhGQUE4RjtZQUM5RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUU1QyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsdUVBQXVFO1lBQ3ZFLGdHQUFnRztZQUNoRyxnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUEsNkJBQXVCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdkUsQ0FBQyxFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1lBQzVFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQzlCLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjthQUN4QyxDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRiwyREFBMkQ7WUFDM0QsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFO29CQUM5QyxPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQztvQkFDWixPQUFPLEVBQUUsQ0FBQztpQkFDWDthQUNGLENBQUM7WUFFRixnQkFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLElBQUEsNkJBQXVCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDdkUsQ0FBQyxFQUFFLDJDQUEyQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsR0FBRyxFQUFFO1lBQ3JFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQzlCLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjthQUN4QyxDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRixpRUFBaUU7WUFDakUsbUVBQW1FO1lBQ25FLE1BQU0sUUFBUSxHQUFHO2dCQUNmO29CQUNFLElBQUksRUFBRSxpSEFBaUg7b0JBQ3ZILE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRSxDQUFDO29CQUNaLE9BQU8sRUFBRSxDQUFDO2lCQUNYO2FBQ0YsQ0FBQztZQUVGLDJFQUEyRTtZQUMzRSx1RkFBdUY7WUFDdkYsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNqQixJQUFBLDZCQUF1QixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZFLENBQUMsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtZQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBQSwyQkFBYyxFQUFDO2dCQUM5QixPQUFPO2dCQUNQLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLGFBQWEsRUFBRSxFQUFFO2dCQUNqQixvQkFBb0IsRUFBRSxpQkFBaUI7YUFDeEMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTdGLE1BQU0sVUFBVSxHQUFHO2dCQUNqQjtvQkFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDekIsT0FBTyxFQUFFLGdCQUFnQjtpQkFDMUI7YUFDRixDQUFDO1lBRUYsNERBQTREO1lBQzVELG1FQUFtRTtZQUNuRSxNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsaUhBQWlIO29CQUN2SCxPQUFPLEVBQUUsRUFBRTtvQkFDWCxTQUFTLEVBQUUsQ0FBQztvQkFDWixPQUFPLEVBQUUsQ0FBQztpQkFDWDthQUNGLENBQUM7WUFFRiwyRUFBMkU7WUFDM0UsdUZBQXVGO1lBQ3ZGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsSUFBQSw2QkFBdUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RSxDQUFDLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRSxHQUFHLEVBQUU7WUFDeEUsMEZBQTBGO1lBQzFGLE1BQU0sYUFBYSxHQUNqQixpSEFBaUgsQ0FBQztZQUNwSCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEUsd0NBQXdDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFMUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsMkJBQWMsRUFBQztnQkFDOUIsT0FBTztnQkFDUCxVQUFVLEVBQUUsTUFBTTtnQkFDbEIsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixhQUFhLEVBQUUsRUFBRTtnQkFDakIsb0JBQW9CLEVBQUUsaUJBQWlCO2dCQUN2QyxTQUFTLEVBQUUsVUFBVTthQUN0QixDQUFDLENBQUM7WUFFSCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFN0YsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO29CQUN6QixPQUFPLEVBQUUsZ0JBQWdCO2lCQUMxQjthQUNGLENBQUM7WUFFRiwwRUFBMEU7WUFDMUUsTUFBTSxRQUFRLEdBQUc7Z0JBQ2Y7b0JBQ0UsSUFBSSxFQUFFLGlIQUFpSDtvQkFDdkgsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsaUZBQWlGO1lBQ2pGLElBQUEsNkJBQXVCLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxFQUFFO1lBQ3hFLDBGQUEwRjtZQUMxRixNQUFNLGFBQWEsR0FDakIsaUhBQWlILENBQUM7WUFDcEgsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXRFLHdDQUF3QztZQUN4QyxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTFELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFBLDJCQUFjLEVBQUM7Z0JBQzlCLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixXQUFXLEVBQUUsTUFBTTtnQkFDbkIsYUFBYSxFQUFFLEVBQUU7Z0JBQ2pCLG9CQUFvQixFQUFFLGlCQUFpQjtnQkFDdkMsU0FBUyxFQUFFLFVBQVU7YUFDdEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTdGLE1BQU0sVUFBVSxHQUFHO2dCQUNqQjtvQkFDRSxTQUFTLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDekIsT0FBTyxFQUFFLGdCQUFnQjtpQkFDMUI7YUFDRixDQUFDO1lBRUYsMEVBQTBFO1lBQzFFLE1BQU0sUUFBUSxHQUFHO2dCQUNmO29CQUNFLElBQUksRUFBRSxpSEFBaUg7b0JBQ3ZILE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRSxDQUFDO29CQUNaLE9BQU8sRUFBRSxDQUFDO2lCQUNYO2FBQ0YsQ0FBQztZQUVGLGlGQUFpRjtZQUNqRixJQUFBLDZCQUF1QixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtZQUN2RCxzRUFBc0U7WUFDdEUsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdkUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO2dCQUMzQyxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUUzQyxZQUFZO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDWixJQUFJLEVBQUUsa0VBQWtFO2dCQUN4RSxLQUFLLEVBQUUsQ0FBQztnQkFDUixXQUFXLEVBQUU7b0JBQ1gsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFPO29CQUMzQixLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztpQkFDdEI7Z0JBQ0QsZUFBZSxFQUFFO29CQUNmO3dCQUNFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDckMsSUFBSSxFQUFFLGlCQUFpQjt3QkFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztxQkFDNUM7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCx5QkFBeUI7WUFDekIsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDO2dCQUNoRCxPQUFPO2FBQ1IsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxPQUFRLENBQUM7WUFFckQsMEJBQTBCO1lBQzFCLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hELE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztnQkFDaEQsT0FBTzthQUNSLENBQUMsQ0FBQztZQUNILE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsT0FBUSxDQUFDO1lBRXJELHdDQUF3QztZQUN4QyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDMUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzVDLE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUztnQkFDNUIsT0FBTzthQUNSLENBQUMsQ0FBQztZQUNILE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFRLENBQUM7WUFFN0MsOENBQThDO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDdEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDYixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNyQixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNiLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLHdDQUF3QzthQUNoRSxDQUFDLENBQUM7WUFFSCxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3JDLElBQUksRUFBRSxpQkFBaUI7d0JBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsU0FBUztxQkFDN0I7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFVBQVUsR0FBRztnQkFDakI7b0JBQ0UsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLE9BQU8sRUFBRSxpQkFBaUI7aUJBQzNCO2dCQUNEO29CQUNFLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUN4QixPQUFPLEVBQUUsaUJBQWlCO2lCQUMzQjthQUNGLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRztnQkFDZjtvQkFDRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDckMsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsU0FBUyxFQUFFLENBQUM7b0JBQ1osT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRixDQUFDO1lBRUYsSUFBQSw2QkFBdUIsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgY3JlYXRlVGVzdFBzYnQgfSBmcm9tICcuL2NyZWF0ZVBzYnQnO1xuXG5kZXNjcmliZSgncGFyc2VXaXRoZHJhd1BzYnQnLCAoKSA9PiB7XG4gIGNvbnN0IG5ldHdvcmsgPSB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQ7XG5cbiAgZGVzY3JpYmUoJ3JlZ3Jlc3Npb24gdGVzdHMgd2l0aCBoYXJkY29kZWQgUFNCVCcsICgpID0+IHtcbiAgICAvLyBLZWVwaW5nIG9uZSByZWdyZXNzaW9uIHRlc3Qgd2l0aCByZWFsIFBTQlQgZGF0YSB0byBlbnN1cmUgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgIGNvbnN0IHVuc2lnbmVkUHNidEhleCA9XG4gICAgICAnNzA3MzYyNzRmZjAxMDA3ZDAyMDAwMDAwMDE1ZTUwYjhkOTZjZWJkYzMyNzNkOWExMDBlYjY4MzkyZDk4MGQ1YjkzNGI4MTcwYzgwYTIzNDg4YjU5NTI2OGNhMDEwMDAwMDAwMGZmZmZmZmZmMDJhMDg2MDEwMDAwMDAwMDAwMjI1MTIwMzc5YmM4OGNjMTVkMzYwNWVkOWRlMWI2MWZmOGQ2NTAyMWI2NTBkYjExNTFlNzUxYTMwODg1Y2NmY2M3ZDE1YWZmYTgwYTAwMDAwMDAwMDAxNjAwMTQ4MGEwNmYyZTZiNzdlODE3ZmQ1ZGU2ZTQxZWE1MTJjNTYzYzI2Y2I4MDAwMDAwMDAwMDAxMDBlYTAyMDAwMDAwMDAwMTAxYTE1OGQ4MDY3MzViYjdjNTRlNGM3MDFkNGY1ODIxY2Q1MzQyZDQ4ZDVlMWZjYmVkMTE2OWU2ZTQ1YWE0NDRiZTAxMDAwMDAwMDBmZmZmZmZmZjAyYTA4NjAxMDAwMDAwMDAwMDIyNTEyMDM3OWJjODhjYzE1ZDM2MDVlZDlkZTFiNjFmZjhkNjUwMjFiNjUwZGIxMTUxZTc1MWEzMDg4NWNjZmNjN2QxNWE2YTMxMGMwMDAwMDAwMDAwMTYwMDE0NzhhNWQ5OGM3MTYwNDg0YjliMDBmMTc4MjgwM2M1OGVkZmM0OWI5YTAyNDczMDQ0MDIyMDQwN2Q5MTYyZjUyMzcxZGYyNDZkY2ZhMjk0M2Q0MGZiZGNiMGQ0YjY3NjhmNzY4MmM2NTE5MzM3OGIyODQ1YTYwMjIwMTAxYzdiYzQ2MGM5M2QyOTc2OTYxYWMyMzQwMGYwZjEwYzE0NWVmYjk4OWEzYWRkYjdmMDNlYmFhYTIyMDA5NTAxMjEwMzdlMTc0NDRjODVjOGI3ZGEwN2YxMmZkNTNjYjJjYTE0MmMyYjQ5MzJkMGY4OTg2NDljNGI1YmUwMDIxZGEwOTgwMDAwMDAwMDAxMDMwNDAxMDAwMDAwMjIwNjAyZTU3MTQ2ZTViNDc2MmE3ZmYzNzRhZGY0MDcyMDQ3YjY3ZWYxMTVhZDQ2YTM0MTg5YmRlYjZhNGY4OGRiOWIwODE4MDAwMDAwMDA1NDAwMDA4MDAwMDAwMDgwMDAwMDAwODAwMTAwMDAwMDA2MDAwMDAwMDAwMDIyMDIwMzc5YWJiZTQ0MDA0ZmY3ZTUyN2JkZWUzZGQ4ZDk1ZTVjZDI1MDA1M2YzNWVlOTIyNThiOTdhYTgzZGZhOTNjNjIxODAwMDAwMDAwNTQwMDAwODAwMDAwMDA4MDAwMDAwMDgwMDEwMDAwMDA1MDAwMDAwMDAwJztcbiAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAge1xuICAgICAgICBhbW91bnRTYXQ6IDEwMDAwMG4sXG4gICAgICAgIGFkZHJlc3M6ICd0YjFweDdkdTNyeHB0NW1xdG12YXV4bXBsN3hrMnFzbXY1eG16OWc3dzVkcnB6enVlbHg4NjlkcXdhcGU3aycsXG4gICAgICB9LFxuICAgIF07XG4gICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICB7XG4gICAgICAgIHhwdWI6ICd0cHViRENtaVdNa1RKcloyNHQxWjZFQ1IzSHl5bkN5Wjl6R3NXcWhjTGg2SDR5RksyQ0RvelNzekQxcFAyTGk0TngxWVl0UmN2bU5iZGIzbkQxU3pGZWpZdFBGZlRvY1R2MkVhQWdKQ2c0enBKcEEnLFxuICAgICAgICBwdXJwb3NlOiA0OSxcbiAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgeHB1YjogJ3RwdWJEQ0ZON2JzeFI5VVRLZ2dkSDJwbXY1SGVIR1FOaURySndhMUVaRnRQOXNINVBGMjhpMzdGSHBvWVNZQVJRa0taNk1pOThwa3A3b3lwRGN4Rm1FNGRRR3E4alY4R3YzTDZnbVdCZVJ3UHhrUCcsXG4gICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgIGFjY291bnQ6IDAsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgdmFsaWQgd2l0aGRyYXcgUFNCVCcsICgpID0+IHtcbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHVuc2lnbmVkUHNidEhleCwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgaW52YWxpZCBQU0JUIGhleCcsICgpID0+IHtcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdygnYXNkYXNkJywgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgICAgfSwgL0VSUl9CVUZGRVJfT1VUX09GX0JPVU5EUy8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVncmVzc2lvbiB0ZXN0cyB3aXRoIGNyZWF0ZWQgUFNCVCBmcm9tIExORCAobm8gYG0vYCBwcmVmaXgpJywgKCkgPT4ge1xuICAgIGNvbnN0IHVuc2lnbmVkUHNidEhleCA9XG4gICAgICAnNzA3MzYyNzRmZjAxMDA3ZDAyMDAwMDAwMDE4MTRmMDdmZWJiMzcyY2Y5ZTMwM2M0MDkzOGQ3ZjEzNzJjZjdmNWJkM2Q0M2RlNzYzYmUxMGMxYjJhYzUzOTIwMDAwMDAwMDAwMGZmZmZmZmZmMDI4ODEzMDAwMDAwMDAwMDAwMjIwMDIwYWMwNjExNzgzMmYwOGU5NTJiMTZjMjIwZGRlMzVkZDUwNWI1YzU0ZmE0NWE0ZWI5ZjJiMDQwZWZkMjdlY2IxMmY4NmEwNDAwMDAwMDAwMDAxNjAwMTRmMWY0NzUzY2YwZjkxNzFkZDM3MjRmMTdlYTUxMWJhYTQ5ZTNjMjI2MDAwMDAwMDAwMDAxMDBmZGU3MDQwMTAwMDAwMDAwMDEwNGU1NTYwMGI3ZDAwMDNjNmIyYmU3ZGMxMDVmNmMzNDk5YjhkNDI2ZTkyZmQ1NmMzZGNhMDY3MjhlMDYwYzgwNzIwMDAwMDAwMDAwZmRmZmZmZmYzNjZmNTM1NjAzOGU4ODNkZDdkZDYyMWQwYjM0MGM1MjYwMTgzMjk2NjRjY2JlYjFhNzIzYjBhNmY4ZjMxMmE0MDAwMDAwMDAyMzIyMDAyMGI0YjY5ZGVhOThkOGQ1ZmIzMmEyMmEwYzlhZDIwOGZjMjhlZmI0NDk0M2Y4ZTU3NmQ1OTc4ZDIxNWQ3ODRkNDlmZGZmZmZmZjE1OTc4ZjkwM2Q2M2RhYzU2MDI2Y2VjOTBmYzU2OGZiZTZlOGE1YThiNTNiZjhiNWEzNGVlZTM3MjNlNjNlZmYwMDAwMDAwMDAwZmRmZmZmZmY1OGE5ZTZiZTFkYTBmMjVlMzlhZjRjOTVlZDEwMjMzNmE2NGJhZjliYzhlYjdjMWZmY2E5N2ZmMGQwZDY1MWZmMDAwMDAwMDAwMGZkZmZmZmZmMDE0NTg2MDQwMDAwMDAwMDAwMTYwMDE0NmI2MThlOGQxZDcwOTcxMTEwNGY5MmE4NTcwMzJhOGQ2NmYxYmY3ZDA0MDA0ODMwNDUwMjIxMDBkODViYzk5YmY2ZDYxMDk3ODYzMDUxOGY3OWVlZWUwMjVjOGNlNDBlYjY1ZjEyMzYwZjBmNDdkNWIzMGNhNTQ3MDIyMDM2ZDc5Mzg0YTU1YmJiYTAwNTIwZDYyNmMzYWUwNWE1ZjM0MWZkN2Q2NWYyMTFmYTY0YmZlZGFkNWU4MjdjNzMwMTQ4MzA0NTAyMjEwMGRhY2NlMzdmYmZmZWIyZTllZTE5OGFiM2E3OGNmZGYwMWUzNDY1NTMxMzQ4MmZmNzUzNzZiYjVlMjE1MmEwNWQwMjIwNWE3ZDFiNzA3MjQ4MDM2OGQyNzRkZTAyMjliYmI5ZTZmNGU0Y2RhMjAyZjY3NTBiOWE5MGY4NTE3NjA0NDEzZTAxNjk1MjIxMDJkZDZiMTVkNWM0ODMwODBhYWVhZjNiZTUxYzhlZTZjZDc5NGRiZmE2NWU1YzgwMzZmZTJjNjdmMDA4MDkyOTcwMjEwMzM3MGM0NGUwNWRkZGZjMjlmZGI0MThhZTU4MzY1MmI0ZmI3ZWU2MmQwNzU2MmZjMWU1YjE2OTZjYWFmMzkwOGYyMTAzYzZkOTgwODExY2IwMzA0OGE3YjQ4ZjYzOWJiYjA1NzU0NDRhZjFmNjcwYWY4NDYyYmIxYzkzMTEyYWYyMDgwYTUzYWUwNDAwNDgzMDQ1MDIyMTAwOTQ2NDZlOGMxYzI1MzY4ZWQ5Y2RmNWJhMTBiNTRhODhjZTIwYmI5YjQ1Mjg3N2QwZDJmMjc4MjM4OTdhYjlkNDAyMjAxODNjODA1NjBjMTg2MGQyMmQ3YWU4YWFlZWU3MTJkOTMwZTQyNzI1MjM0NWJkZGVjZTFhMzMzZDM0NWM2ZDk4MDE0ODMwNDUwMjIxMDBkMTIzYzFmNWE3OWQzMjkwNWY5ZDcyNWI1OTAxNjBhZmM4ZTE0YmIwMWNiMWE1ZDI1ODMwNGM2YjY2NzMxMTNjMDIyMDcyMjAwMzA1MGY1NzM2NmIzZjM0ODZjMWZkZDU1NTk1NzlmMWM2N2MzZDY0NGQzMWFjNmYyMGJiODAyMmY3ZDIwMTY5NTIyMTAzNGEyYzhlMDg5MWUzMDY5OGFhNzAxNWYxMjEwNDUxZjFlNTMzNmJlOTZiZjg0NmNkNDM1MjhjMTViMDY0NWIwMzIxMDNlNjMwNWY3OTc4MzgyOTlmNDE4ODU5NWIxYjAxYmQ5ZmU2MGRiMGU0YmI5MzMxZDk1Nzc1MDI0OGQwNTVmMjk5MjEwMzgzYzAyODM0MWQ1ZDI3M2FmY2E1ZjUyNjVlMmMyZWU5NjE5YzBmMWIzMjg5NTZlZjMwMDBhYjA5ZWNjYWVkM2I1M2FlMDQwMDQ3MzA0NDAyMjA0NGE0M2FlMzhiODZjMzc1YWE1N2IzZDk2Mzg2ZmNhNTJmNzRhNWJjNGZiMzdjNzc3MzhlZmE0YzA1NjY2NjIyMDIyMDBkMWFmOTNkMjAyMmM0OGYzZjNjYzEzNGQzZDc1YmJjZmNlMzA2MTVlNTNkOTI0NmMyMDBjNTM0OWE3ZDk3OGMwMTQ3MzA0NDAyMjA3Y2UzMDQzMjExZDkzNDRkYWQ4ZjRlMmJmODQ4YmYxY2ExNTEzMTBhMTg4ZTcwNzY2M2IyODQ3NWUxMjA5OWQwMDIyMDYwZDJiMzUzM2U3YzM2MmQzOWIwNDExMDJlZGYxN2UwNDg2YjFhZWU1NWEwMWM3ODk1NDg1Yjg2MzBkYWEzOWMwMTY5NTIyMTAzYzcxYTM1MGUyYjA2ZWM5ZDA3MTBhMTNmNjA4YmI3NmYzNWEzNWZlZDQ5MWZiYjViOTcyODBjYWVkNGM5NTkwZjIxMDM2OTJlYTY4NTE2MmExZGE3ZTg2ZTBiZWViMWVkMDMzMWU4ZDBmYmJmMmUwNWYwMDIwNzFiMTUwNDRjNDAyYjc4MjEwMjk2MDA4N2QwZDViOGUxYTQ0OWVkNTYyNTUzZWYzMTQ5ODg1YTkzMGY2MGM0MDMyNDE2NTIyMWE3ZmM3NjI3ZWE1M2FlMDQwMDQ4MzA0NTAyMjEwMGE4MzgyY2ZhMjU4MmFiZGM3NzQxN2Y5YWE1M2U1Y2UwZTJkMzFlYjVlMTRiNzgzNjk2MWRhOGMwNDVkZTNhNTAwMjIwMzk4NTU1YjkzODE2ZWY3ZWM0MTdiYjc1NTViYzUxZTA0NzdiM2M2NWY4M2QwOTUxY2ZmMmE1MDQwNDU3MzE0ZTAxNDczMDQ0MDIyMDRmNjZmZDQ1MDdiZDU0Y2MyNTAyOGI1NjYwYzAwZmRjZmUxNWNlNjEyMWVhYmZmNzkxMWU3MzA3ZDI0YzdmMTEwMjIwMDU5MWU5Njk4OTcxMDlhMjM3MmE2YjIyZTQxZDE1OGQ0ZTBhZTUzY2EwOTYzMTY2ZmZkOGEyM2UwNjUyMmFjOTAxNjk1MjIxMDI4MmFhZjI4ZDUyOGU2YjYzMjY4ODBiMTUzOWExNGE5NmRjZWU1ZDlhMDkyMGEzMWYzNTgxZTVhYzIxYTlkZTQ2MjEwM2Y4NGUyNmU3OGYyYzU4NzgyMWI1ODE3NjFiMTM0Zjc3MjFlMzNiMWFkOTdiZDE1OTkxMjVlZTIzMzY5ZWExMjAyMTAzZGE2ZWRkY2E5YzBlYWFhMDhiMTc5YzAzNWVkMGFkYjUxNmE1OTJiYTEzMjFmZmM1Y2IxMWRjYWU4YzNhNzA0ZjUzYWUwMDAwMDAwMDAxMDExZjQ1ODYwNDAwMDAwMDAwMDAxNjAwMTQ2YjYxOGU4ZDFkNzA5NzExMTA0ZjkyYTg1NzAzMmE4ZDY2ZjFiZjdkMDEwMzA0MDEwMDAwMDAyMjA2MDM4MzYxYmZhZDliNjg5NmM5Mzg2OTBkZjFlNjdjNjY5ZWNkN2EwMjFiMTE3MzgyYmJmYTgxZmY2ZGU4ZWMxNTM3MTgwMDAwMDAwMDU0MDAwMDgwMDAwMDAwODAwMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMjIwMjAzNzZjYjRhYzg5OWQxMzBlMmQ2NTVmY2E2ZDM2MmZlN2M3NDVjYzE1NDg2ODQ5ZTQwMWY3YzIxYjNkM2RmMzdjODE4MDAwMDAwMDA1NDAwMDA4MDAwMDAwMDgwMDAwMDAwODAwMTAwMDAwMDA4MDAwMDAwMDAnO1xuICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFtb3VudFNhdDogNTAwMG4sXG4gICAgICAgIGFkZHJlc3M6ICd0YjFxNHNycHo3cGo3ejhmMjJja2Nnc2RtYzZhNjV6bXQzMjA1M2R5YXcwamtwcXdsNW43ZXZmcWhjMDd1NCcsXG4gICAgICB9LFxuICAgIF07XG4gICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICB7XG4gICAgICAgIHB1cnBvc2U6IDQ5LFxuICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIHhwdWI6ICd1cHViNUVXMmNpbTJGU2VCRHFvdGU4amNLbkJTb2h0WmpQUmJ3OUhzWE5vdG90aXBWVmozMUF6V2pnWFVTb25idmk3Uk5BTFk3M3JrZ1hUUVk0WVVwb3ZyRzFXVjRBVEtYeVFwTWExc01uSmRDYm0nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcHVycG9zZTogODQsXG4gICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgeHB1YjogJ3ZwdWI1WjhrVnM5TDZmU0s0cWMxRzM2VnFLZFRpU2RmQ0dTenJjejRFWUdreXdrV1g0M0VKaUxjU0JFZDFYRTRmeGdYaXI3V2t3YWlhNGVUd2Jha25nVkRISG5Ub2M5cVFNQmN4ZXJyMlU1TUhuTicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwdXJwb3NlOiA4NixcbiAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB4cHViOiAndHB1YkRDeVhEbkxxaG1UeGpjR1YyS2V4cm9qZkpQQmVwdDJnV3MybWc5VjQ2eTZIQXA5bkx6ZzNpZG1FU0VKMVJEdGZhTHlWTDZ4Mk1vSnN2NjZoUVBXckN4b1IyallRYkdiSGQ1Rm1FYTZCZlczJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSB2YWxpZCB3aXRoZHJhdyBQU0JUJywgKCkgPT4ge1xuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcodW5zaWduZWRQc2J0SGV4LCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGZvciBpbnZhbGlkIFBTQlQgaGV4JywgKCkgPT4ge1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KCdhc2Rhc2QnLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgICB9LCAvRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0ZXN0IGNhc2VzIHdpdGggY3JlYXRpbmcgcHNidCBvbiB0aGUgZ28nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBQU0JUIHdpdGggUDJXUEtIIChwdXJwb3NlIDg0KSBjaGFuZ2UgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHNidCwgbWFzdGVyS2V5IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogODQsXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBtYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCBQMlNILVAyV1BLSCAocHVycG9zZSA0OSkgY2hhbmdlIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQsIG1hc3RlcktleSB9ID0gY3JlYXRlVGVzdFBzYnQoe1xuICAgICAgICBuZXR3b3JrLFxuICAgICAgICBpbnB1dFZhbHVlOiA1MDAwMDAsXG4gICAgICAgIG91dHB1dFZhbHVlOiAxMDAwMDAsXG4gICAgICAgIGNoYW5nZVZhbHVlOiAzOTAwMDAsXG4gICAgICAgIGNoYW5nZVB1cnBvc2U6IDQ5LFxuICAgICAgICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogXCJtLzQ5Jy8wJy8wJy8xLzZcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogbWFzdGVyS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICAgICAgICBwdXJwb3NlOiA0OSxcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBQU0JUIHdpdGggUDJUUiAocHVycG9zZSA4NikgY2hhbmdlIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQsIG1hc3RlcktleSB9ID0gY3JlYXRlVGVzdFBzYnQoe1xuICAgICAgICBuZXR3b3JrLFxuICAgICAgICBpbnB1dFZhbHVlOiA1MDAwMDAsXG4gICAgICAgIG91dHB1dFZhbHVlOiAxMDAwMDAsXG4gICAgICAgIGNoYW5nZVZhbHVlOiAzOTAwMDAsXG4gICAgICAgIGNoYW5nZVB1cnBvc2U6IDg2LFxuICAgICAgICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogXCJtLzg2Jy8wJy8wJy8xLzZcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogbWFzdGVyS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICAgICAgICBwdXJwb3NlOiA4NixcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBmb3IgbWlzc2luZyBiaXAzMkRlcml2YXRpb24gcGF0aCBvbiBjaGFuZ2Ugb3V0cHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwc2J0LCBtYXN0ZXJLZXkgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA4NCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZW1vdmUgdGhlIGJpcDMyRGVyaXZhdGlvbiBmcm9tIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIG91dHB1dCB0byBiZSB0cmVhdGVkIGFzIGEgcmVndWxhciByZWNpcGllbnQgb3V0cHV0LCBub3QgYSBjaGFuZ2Ugb3V0cHV0XG4gICAgICBkZWxldGUgcHNidC5kYXRhLm91dHB1dHNbMV0uYmlwMzJEZXJpdmF0aW9uO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogbWFzdGVyS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICAgICAgICBwdXJwb3NlOiA4NCxcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFRoZSBvdXRwdXQgd2l0aG91dCBiaXAzMkRlcml2YXRpb24gaXMgdHJlYXRlZCBhcyBhIHJlY2lwaWVudCBvdXRwdXQsXG4gICAgICAvLyBhbmQgc2luY2UgaXQncyBub3QgaW4gdGhlIHJlY2lwaWVudHMgbGlzdCwgaXQgc2hvdWxkIGZhaWwgd2l0aCBcImRvZXMgbm90IG1hdGNoIGFueSByZWNpcGllbnRcIlxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgICAgfSwgL2RvZXMgbm90IG1hdGNoIGFueSByZWNpcGllbnQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZm9yIGludmFsaWQgY2hhbmdlIGFkZHJlc3MgKGRlcml2ZWQgYWRkcmVzcyBtaXNtYXRjaCknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHBzYnQgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA4NCxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS84NCcvMCcvMCcvMS82XCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzWzBdLnNjcmlwdCwgbmV0d29yayk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBVc2UgYSBkaWZmZXJlbnQgeHB1YiB0aGF0IHdvbid0IG1hdGNoIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICAgICAgY29uc3QgZGlmZmVyZW50TWFzdGVyS2V5ID0gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChCdWZmZXIuYWxsb2MoMzIsIDIpLCBuZXR3b3JrKTtcbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogZGlmZmVyZW50TWFzdGVyS2V5Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICAgICAgICBwdXJwb3NlOiA4NCxcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICAgIH0sIC9EZXJpdmVkIHB1YmtleSBkb2VzIG5vdCBtYXRjaCBmb3IgYWRkcmVzcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBQU0JUIHdpdGggdXB1YiBwcmVmaXggKFAyU0gtUDJXUEtIIHRlc3RuZXQpJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwc2J0IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogNDksXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vNDknLzAnLzAnLzEvNlwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVXNlIHVwdWIgcHJlZml4ICh0ZXN0bmV0IFAyU0gtUDJXUEtIKSBpbnN0ZWFkIG9mIHN0YW5kYXJkIHRwdWJcbiAgICAgIC8vIFRoaXMgdGVzdHMgdGhhdCByZXZlcnRYcHViUHJlZml4IGNvcnJlY3RseSBjb252ZXJ0cyB1cHViIC0+IHRwdWJcbiAgICAgIGNvbnN0IGFjY291bnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgeHB1YjogJ3VwdWI1RWVwN0g1cTM5UHpRWkxWRVlMQnl0RHlCTmVWNzRFOG1Rc3llTDZVb3pGcTlZM01zWjUyRzdZR3VxckpQZ295QXFGN1RCZUpkbmtySHJWckI1cGtXa1BKOWNKR0FlUE1VNkYxR3l3NmFGSCcsXG4gICAgICAgICAgcHVycG9zZTogNDksXG4gICAgICAgICAgY29pbl90eXBlOiAwLFxuICAgICAgICAgIGFjY291bnQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBUaGlzIHNob3VsZCB3b3JrIGJlY2F1c2UgcmV2ZXJ0WHB1YlByZWZpeCB3aWxsIGNvbnZlcnQgdXB1YiBiYWNrIHRvIHRwdWJcbiAgICAgIC8vIEhvd2V2ZXIsIHRoZSBtYXN0ZXIga2V5IHdlIHVzZWQgaXMgZGlmZmVyZW50LCBzbyBpdCBzaG91bGQgZmFpbCB3aXRoIHB1YmtleSBtaXNtYXRjaFxuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICAgIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KHBzYnQudG9IZXgoKSwgbmV0d29yaywgcmVjaXBpZW50cywgYWNjb3VudHMpO1xuICAgICAgfSwgL0Rlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCB2cHViIHByZWZpeCAoUDJXUEtIIHRlc3RuZXQpJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwc2J0IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogODQsXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudEFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQsIG5ldHdvcmspO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgICAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVXNlIHZwdWIgcHJlZml4ICh0ZXN0bmV0IFAyV1BLSCkgaW5zdGVhZCBvZiBzdGFuZGFyZCB0cHViXG4gICAgICAvLyBUaGlzIHRlc3RzIHRoYXQgcmV2ZXJ0WHB1YlByZWZpeCBjb3JyZWN0bHkgY29udmVydHMgdnB1YiAtPiB0cHViXG4gICAgICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHhwdWI6ICd2cHViNVpVMVBIR3BRb0RTSGNrWWljbzRuc3Z3c0QzbVRoNlVqcUw1enlHV1haWHpCalRZTU5Lb3Q3dDllUlBRWTcxaEpjbk5OOXIxc3MyNWczeEE5cm1vSjVuV1BnOGpFV2F2cnR0bnNWYTFxdzEnLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVGhpcyBzaG91bGQgd29yayBiZWNhdXNlIHJldmVydFhwdWJQcmVmaXggd2lsbCBjb252ZXJ0IHZwdWIgYmFjayB0byB0cHViXG4gICAgICAvLyBIb3dldmVyLCB0aGUgbWFzdGVyIGtleSB3ZSB1c2VkIGlzIGRpZmZlcmVudCwgc28gaXQgc2hvdWxkIGZhaWwgd2l0aCBwdWJrZXkgbWlzbWF0Y2hcbiAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4ge1xuICAgICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICAgIH0sIC9EZXJpdmVkIHB1YmtleSBkb2VzIG5vdCBtYXRjaCBmb3IgYWRkcmVzcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBQU0JUIHdpdGggbWF0Y2hpbmcgdXB1YiBwcmVmaXggYW5kIGNvcnJlY3Qga2V5JywgKCkgPT4ge1xuICAgICAgLy8gSW1wb3J0IHRoZSBzaWduZXIgcm9vdCBrZXkgZnJvbSB0aGUgZml4dHVyZSB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgdXB1Yi92cHViIGFjY291bnRzXG4gICAgICBjb25zdCBzaWduZXJSb290S2V5ID1cbiAgICAgICAgJ3RwcnY4Wmd4TUJpY1FLc1BlNmpTNHZEbTJuN3M0MlE2TXB2Z2hVUXFNbVNLRzdiVFp2R0t0anJjVTNQR3pNTkczN3l6eHl3cmNkdmdrd3JyOGVZWEptYndkdlVOVlQ0VWN2N3JpczRqdkE3QlVtZyc7XG4gICAgICBjb25zdCBtYXN0ZXJIRE5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoc2lnbmVyUm9vdEtleSwgbmV0d29yayk7XG5cbiAgICAgIC8vIERlcml2ZSB0aGUgYWNjb3VudCBrZXkgZm9yIHB1cnBvc2UgNDlcbiAgICAgIGNvbnN0IGFjY291bnRLZXkgPSBtYXN0ZXJIRE5vZGUuZGVyaXZlUGF0aChcIm0vNDknLzAnLzAnXCIpO1xuXG4gICAgICBjb25zdCB7IHBzYnQgfSA9IGNyZWF0ZVRlc3RQc2J0KHtcbiAgICAgICAgbmV0d29yayxcbiAgICAgICAgaW5wdXRWYWx1ZTogNTAwMDAwLFxuICAgICAgICBvdXRwdXRWYWx1ZTogMTAwMDAwLFxuICAgICAgICBjaGFuZ2VWYWx1ZTogMzkwMDAwLFxuICAgICAgICBjaGFuZ2VQdXJwb3NlOiA0OSxcbiAgICAgICAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IFwibS80OScvMCcvMCcvMS82XCIsXG4gICAgICAgIG1hc3RlcktleTogYWNjb3VudEtleSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZWNpcGllbnRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQocHNidC50eE91dHB1dHNbMF0uc2NyaXB0LCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGFtb3VudFNhdDogQmlnSW50KDEwMDAwMCksXG4gICAgICAgICAgYWRkcmVzczogcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFVzZSB0aGUgdXB1YiBmcm9tIHRoZSBmaXh0dXJlIC0gdGhpcyBzaG91bGQgd29yayBiZWNhdXNlIHRoZSBrZXlzIG1hdGNoXG4gICAgICBjb25zdCBhY2NvdW50cyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHhwdWI6ICd1cHViNUVlcDdINXEzOVB6UVpMVkVZTEJ5dER5Qk5lVjc0RThtUXN5ZUw2VW96RnE5WTNNc1o1Mkc3WUd1cXJKUGdveUFxRjdUQmVKZG5rckhyVnJCNXBrV2tQSjljSkdBZVBNVTZGMUd5dzZhRkgnLFxuICAgICAgICAgIHB1cnBvc2U6IDQ5LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gVGhpcyBzaG91bGQgcGFzcyAtIHJldmVydFhwdWJQcmVmaXggY29udmVydHMgdXB1YiAtPiB0cHViLCBhbmQgdGhlIGtleSBtYXRjaGVzXG4gICAgICB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhwc2J0LnRvSGV4KCksIG5ldHdvcmssIHJlY2lwaWVudHMsIGFjY291bnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgUFNCVCB3aXRoIG1hdGNoaW5nIHZwdWIgcHJlZml4IGFuZCBjb3JyZWN0IGtleScsICgpID0+IHtcbiAgICAgIC8vIEltcG9ydCB0aGUgc2lnbmVyIHJvb3Qga2V5IGZyb20gdGhlIGZpeHR1cmUgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIHVwdWIvdnB1YiBhY2NvdW50c1xuICAgICAgY29uc3Qgc2lnbmVyUm9vdEtleSA9XG4gICAgICAgICd0cHJ2OFpneE1CaWNRS3NQZTZqUzR2RG0ybjdzNDJRNk1wdmdoVVFxTW1TS0c3YlRadkdLdGpyY1UzUEd6TU5HMzd5enh5d3JjZHZna3dycjhlWVhKbWJ3ZHZVTlZUNFVjdjdyaXM0anZBN0JVbWcnO1xuICAgICAgY29uc3QgbWFzdGVySEROb2RlID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KHNpZ25lclJvb3RLZXksIG5ldHdvcmspO1xuXG4gICAgICAvLyBEZXJpdmUgdGhlIGFjY291bnQga2V5IGZvciBwdXJwb3NlIDg0XG4gICAgICBjb25zdCBhY2NvdW50S2V5ID0gbWFzdGVySEROb2RlLmRlcml2ZVBhdGgoXCJtLzg0Jy8wJy8wJ1wiKTtcblxuICAgICAgY29uc3QgeyBwc2J0IH0gPSBjcmVhdGVUZXN0UHNidCh7XG4gICAgICAgIG5ldHdvcmssXG4gICAgICAgIGlucHV0VmFsdWU6IDUwMDAwMCxcbiAgICAgICAgb3V0cHV0VmFsdWU6IDEwMDAwMCxcbiAgICAgICAgY2hhbmdlVmFsdWU6IDM5MDAwMCxcbiAgICAgICAgY2hhbmdlUHVycG9zZTogODQsXG4gICAgICAgIGNoYW5nZURlcml2YXRpb25QYXRoOiBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgICAgICBtYXN0ZXJLZXk6IGFjY291bnRLZXksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVjaXBpZW50QWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KHBzYnQudHhPdXRwdXRzWzBdLnNjcmlwdCwgbmV0d29yayk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBVc2UgdGhlIHZwdWIgZnJvbSB0aGUgZml4dHVyZSAtIHRoaXMgc2hvdWxkIHdvcmsgYmVjYXVzZSB0aGUga2V5cyBtYXRjaFxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiAndnB1YjVaVTFQSEdwUW9EU0hja1lpY280bnN2d3NEM21UaDZVanFMNXp5R1dYWlh6QmpUWU1OS290N3Q5ZVJQUVk3MWhKY25OTjlyMXNzMjVnM3hBOXJtb0o1bldQZzhqRVdhdnJ0dG5zVmExcXcxJyxcbiAgICAgICAgICBwdXJwb3NlOiA4NCxcbiAgICAgICAgICBjb2luX3R5cGU6IDAsXG4gICAgICAgICAgYWNjb3VudDogMCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIHBhc3MgLSByZXZlcnRYcHViUHJlZml4IGNvbnZlcnRzIHZwdWIgLT4gdHB1YiwgYW5kIHRoZSBrZXkgbWF0Y2hlc1xuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIFBTQlQgd2l0aCBtdWx0aXBsZSByZWNpcGllbnRzJywgKCkgPT4ge1xuICAgICAgLy8gQ3JlYXRlIGEgUFNCVCBtYW51YWxseSB3aXRoIDIgcmVjaXBpZW50IG91dHB1dHMgYW5kIDEgY2hhbmdlIG91dHB1dFxuICAgICAgY29uc3QgbWFzdGVyS2V5ID0gdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChCdWZmZXIuYWxsb2MoMzIsIDEpLCBuZXR3b3JrKTtcblxuICAgICAgY29uc3QgaW5wdXRLZXlQYWlyID0gdXR4b2xpYi5FQ1BhaXIubWFrZVJhbmRvbSh7IG5ldHdvcmsgfSk7XG4gICAgICBjb25zdCBwMndwa2hJbnB1dCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgcHVia2V5OiBCdWZmZXIuZnJvbShpbnB1dEtleVBhaXIucHVibGljS2V5KSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwc2J0ID0gbmV3IHV0eG9saWIuUHNidCh7IG5ldHdvcmsgfSk7XG5cbiAgICAgIC8vIEFkZCBpbnB1dFxuICAgICAgcHNidC5hZGRJbnB1dCh7XG4gICAgICAgIGhhc2g6ICdjYTY4NTI1OThiNDgyMzBhYzg3MDgxNGI5MzViMGQ5ODJkMzk2OGViMDBhMWQ5NzMzMmRjZWI2Y2Q5Yjg1MDVlJyxcbiAgICAgICAgaW5kZXg6IDEsXG4gICAgICAgIHdpdG5lc3NVdHhvOiB7XG4gICAgICAgICAgc2NyaXB0OiBwMndwa2hJbnB1dC5vdXRwdXQhLFxuICAgICAgICAgIHZhbHVlOiBCaWdJbnQoNTAwMDAwKSxcbiAgICAgICAgfSxcbiAgICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IEJ1ZmZlci5hbGxvYyg0LCAwKSxcbiAgICAgICAgICAgIHBhdGg6IFwibS84NCcvMCcvMCcvMC8wXCIsXG4gICAgICAgICAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKGlucHV0S2V5UGFpci5wdWJsaWNLZXkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQ3JlYXRlIGZpcnN0IHJlY2lwaWVudFxuICAgICAgY29uc3QgcmVjaXBpZW50MUtleVBhaXIgPSB1dHhvbGliLkVDUGFpci5tYWtlUmFuZG9tKHsgbmV0d29yayB9KTtcbiAgICAgIGNvbnN0IHJlY2lwaWVudDFQYXltZW50ID0gdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKHJlY2lwaWVudDFLZXlQYWlyLnB1YmxpY0tleSksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlY2lwaWVudDFBZGRyZXNzID0gcmVjaXBpZW50MVBheW1lbnQuYWRkcmVzcyE7XG5cbiAgICAgIC8vIENyZWF0ZSBzZWNvbmQgcmVjaXBpZW50XG4gICAgICBjb25zdCByZWNpcGllbnQyS2V5UGFpciA9IHV0eG9saWIuRUNQYWlyLm1ha2VSYW5kb20oeyBuZXR3b3JrIH0pO1xuICAgICAgY29uc3QgcmVjaXBpZW50MlBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgIHB1YmtleTogQnVmZmVyLmZyb20ocmVjaXBpZW50MktleVBhaXIucHVibGljS2V5KSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVjaXBpZW50MkFkZHJlc3MgPSByZWNpcGllbnQyUGF5bWVudC5hZGRyZXNzITtcblxuICAgICAgLy8gRGVyaXZlIGNoYW5nZSBhZGRyZXNzIGZyb20gbWFzdGVyIGtleVxuICAgICAgY29uc3QgY2hhbmdlTm9kZSA9IG1hc3RlcktleS5kZXJpdmUoMSkuZGVyaXZlKDYpOyAvLyBtLzEvNlxuICAgICAgY29uc3QgY2hhbmdlUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgcHVia2V5OiBjaGFuZ2VOb2RlLnB1YmxpY0tleSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgY2hhbmdlQWRkcmVzcyA9IGNoYW5nZVBheW1lbnQuYWRkcmVzcyE7XG5cbiAgICAgIC8vIEFkZCBvdXRwdXRzOiByZWNpcGllbnQxLCByZWNpcGllbnQyLCBjaGFuZ2VcbiAgICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgICAgYWRkcmVzczogcmVjaXBpZW50MUFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiBCaWdJbnQoMTAwMDAwKSxcbiAgICAgIH0pO1xuXG4gICAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudDJBZGRyZXNzLFxuICAgICAgICB2YWx1ZTogQmlnSW50KDUwMDAwKSxcbiAgICAgIH0pO1xuXG4gICAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICAgIGFkZHJlc3M6IGNoYW5nZUFkZHJlc3MsXG4gICAgICAgIHZhbHVlOiBCaWdJbnQoMzQwMDAwKSwgLy8gNTAwMDAwIC0gMTAwMDAwIC0gNTAwMDAgLSAxMDAwMCAoZmVlKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCBiaXAzMkRlcml2YXRpb24gdG8gdGhlIGNoYW5nZSBvdXRwdXQgKGluZGV4IDIpXG4gICAgICBwc2J0LnVwZGF0ZU91dHB1dCgyLCB7XG4gICAgICAgIGJpcDMyRGVyaXZhdGlvbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hc3RlckZpbmdlcnByaW50OiBCdWZmZXIuYWxsb2MoNCwgMCksXG4gICAgICAgICAgICBwYXRoOiBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgICAgICAgICAgcHVia2V5OiBjaGFuZ2VOb2RlLnB1YmxpY0tleSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlY2lwaWVudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhbW91bnRTYXQ6IEJpZ0ludCgxMDAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudDFBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYW1vdW50U2F0OiBCaWdJbnQoNTAwMDApLFxuICAgICAgICAgIGFkZHJlc3M6IHJlY2lwaWVudDJBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgYWNjb3VudHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB4cHViOiBtYXN0ZXJLZXkubmV1dGVyZWQoKS50b0Jhc2U1OCgpLFxuICAgICAgICAgIHB1cnBvc2U6IDg0LFxuICAgICAgICAgIGNvaW5fdHlwZTogMCxcbiAgICAgICAgICBhY2NvdW50OiAwLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcocHNidC50b0hleCgpLCBuZXR3b3JrLCByZWNpcGllbnRzLCBhY2NvdW50cyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|