@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.46 → 1.0.0-alpha.47
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/lib/permissionlessValidatorTxBuilder.d.ts +0 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/permissionlessValidatorTxBuilder.js +1 -2
- package/dist/src/lib/transaction.d.ts +15 -0
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +83 -1
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -14
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +5 -27
- package/dist/test/unit/lib/exportInPTxBuilder.js +1 -20
- package/dist/test/unit/lib/importInCTxBuilder.js +1 -18
- package/dist/test/unit/lib/importInPTxBuilder.js +1 -19
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/lib/transactionBuilderFactory.js +60 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/test/unit/lib/recoverModeTestSuit.d.ts +0 -18
- package/dist/test/unit/lib/recoverModeTestSuit.d.ts.map +0 -1
- package/dist/test/unit/lib/recoverModeTestSuit.js +0 -106
|
@@ -12,7 +12,6 @@ export declare class PermissionlessValidatorTxBuilder extends TransactionBuilder
|
|
|
12
12
|
protected _endTime: bigint;
|
|
13
13
|
protected _stakeAmount: bigint;
|
|
14
14
|
protected _delegationFeeRate: number;
|
|
15
|
-
protected recoverSigner: boolean;
|
|
16
15
|
constructor(coinConfig: Readonly<CoinConfig>);
|
|
17
16
|
protected get transactionType(): TransactionType;
|
|
18
17
|
validateLocktime(locktime: bigint): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionlessValidatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/permissionlessValidatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAmE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"permissionlessValidatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/permissionlessValidatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAmE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAEzB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAGD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ1D,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQzC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;cAOzB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAW3D;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI/C,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;CACF"}
|
|
@@ -11,7 +11,6 @@ const utils_1 = __importDefault(require("./utils"));
|
|
|
11
11
|
class PermissionlessValidatorTxBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
12
12
|
constructor(coinConfig) {
|
|
13
13
|
super(coinConfig);
|
|
14
|
-
this.recoverSigner = false;
|
|
15
14
|
this.transaction._fee.fee = this.transaction._network.txFee;
|
|
16
15
|
}
|
|
17
16
|
get transactionType() {
|
|
@@ -130,4 +129,4 @@ class PermissionlessValidatorTxBuilder extends transactionBuilder_1.TransactionB
|
|
|
130
129
|
}
|
|
131
130
|
}
|
|
132
131
|
exports.PermissionlessValidatorTxBuilder = PermissionlessValidatorTxBuilder;
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF5RTtBQUN6RSxtREFBd0g7QUFJeEgsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUU1QixNQUFhLGdDQUFpQyxTQUFRLHVDQUFrQjtJQVV0RSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUhWLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSTlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsMEJBQTBCLENBQUM7SUFDcEQsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksZ0NBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELHlCQUF5QixDQUFDLGlCQUF5QjtRQUNqRCxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDM0UsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixzQ0FBc0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FDbkYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLENBQUMsVUFBVSxFQUFFLFFBQVEs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QUFxQjtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBaUI7UUFDbkMsT0FBTyxJQUFJLEtBQUsscUJBQVcsQ0FBQyw0QkFBNEIsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQXRKRCw0RUFzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyBhcyBGbGFyZVV0aWxzLCBUeXBlU3ltYm9scyB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIGlzVmFsaWRCTFNQdWJsaWNLZXksIGlzVmFsaWRCTFNTaWduYXR1cmUsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX25vZGVJRDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Jsc1B1YmxpY0tleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Jsc1NpZ25hdHVyZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3N0YXJ0VGltZTogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2VuZFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9zdGFrZUFtb3VudDogYmlnaW50O1xuICBwcm90ZWN0ZWQgX2RlbGVnYXRpb25GZWVSYXRlOiBudW1iZXI7XG4gIHByb3RlY3RlZCByZWNvdmVyU2lnbmVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvcjtcbiAgfVxuXG4gIC8vIFZhbGlkYXRpb24gbWV0aG9kc1xuICB2YWxpZGF0ZUxvY2t0aW1lKGxvY2t0aW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAobG9ja3RpbWUgPCBCaWdJbnQoMCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGxvY2t0aW1lIG11c3QgYmUgMCBvciBoaWdoZXInKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKGRlbGVnYXRpb25GZWVSYXRlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoZGVsZWdhdGlvbkZlZVJhdGUgPCBOdW1iZXIodGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5EZWxlZ2F0aW9uRmVlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYERlbGVnYXRpb24gZmVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gJHt0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pbkRlbGVnYXRpb25GZWV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVV0eG8odmFsdWU6IERlY29kZWRVdHhvT2JqKTogdm9pZCB7XG4gICAgWydvdXRwdXRJRCcsICdhbW91bnQnLCAndHhpZCcsICdvdXRwdXRpZHgnXS5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKCF2YWx1ZS5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFV0eG9zIHJlcXVpcmVkICR7ZmllbGR9YCk7XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZU5vZGVJRChub2RlSUQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghbm9kZUlEKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIG5vZGVJRCcpO1xuICAgIH1cbiAgICBpZiAobm9kZUlELnNsaWNlKDAsIDYpICE9PSAnTm9kZUlEJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogaW52YWxpZCBOb2RlSUQgdGFnJyk7XG4gICAgfVxuICAgIGlmICghKEZsYXJlVXRpbHMuYmFzZTU4LmRlY29kZShub2RlSUQuc2xpY2UoNykpLmxlbmd0aCA9PT0gMjQpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBOb2RlSUQgaXMgbm90IGluIGNiNTggZm9ybWF0Jyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVTdGFrZUR1cmF0aW9uKHN0YXJ0VGltZTogYmlnaW50LCBlbmRUaW1lOiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoZW5kVGltZSA8IHN0YXJ0VGltZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRW5kIGRhdGUgY2Fubm90IGJlIGxlc3MgdGhhbiBzdGFydCBkYXRlJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVTdGFrZUFtb3VudChhbW91bnQ6IGJpZ2ludCk6IHZvaWQge1xuICAgIGNvbnN0IG1pblN0YWtlID0gQmlnSW50KHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluU3Rha2UpO1xuICAgIGlmIChhbW91bnQgPCBtaW5TdGFrZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignTWluaW11bSBzdGFraW5nIGFtb3VudCBpcyAnICsgTnVtYmVyKG1pblN0YWtlKSAvIDEwMDAwMDAwMDAgKyAnIEZMUi4nKTtcbiAgICB9XG4gIH1cblxuICAvLyBCdWlsZGVyIG1ldGhvZHNcbiAgcmV3YXJkQWRkcmVzc2VzKGFkZHJlc3M6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgY29uc3QgcmV3YXJkQWRkcmVzc2VzID0gYWRkcmVzcyBpbnN0YW5jZW9mIEFycmF5ID8gYWRkcmVzcyA6IFthZGRyZXNzXTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9yZXdhcmRBZGRyZXNzZXMgPSByZXdhcmRBZGRyZXNzZXMubWFwKHV0aWxzLnBhcnNlQWRkcmVzcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBub2RlSUQobm9kZUlEOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlTm9kZUlEKG5vZGVJRCk7XG4gICAgdGhpcy5fbm9kZUlEID0gbm9kZUlEO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYmxzUHVibGljS2V5KGJsc1B1YmxpY0tleTogc3RyaW5nKTogdGhpcyB7XG4gICAgaXNWYWxpZEJMU1B1YmxpY0tleShibHNQdWJsaWNLZXkpO1xuICAgIHRoaXMuX2Jsc1B1YmxpY0tleSA9IGJsc1B1YmxpY0tleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJsc1NpZ25hdHVyZShibHNTaWduYXR1cmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlzVmFsaWRCTFNTaWduYXR1cmUoYmxzU2lnbmF0dXJlKTtcbiAgICB0aGlzLl9ibHNTaWduYXR1cmUgPSBibHNTaWduYXR1cmU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsb2NrdGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUxvY2t0aW1lKEJpZ0ludCh2YWx1ZSkpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLl9sb2NrdGltZSA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZURlbGVnYXRpb25GZWVSYXRlKHZhbHVlKTtcbiAgICB0aGlzLl9kZWxlZ2F0aW9uRmVlUmF0ZSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3RhcnRUaW1lKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl9zdGFydFRpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZW5kVGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fZW5kVGltZSA9IEJpZ0ludCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGFrZUFtb3VudCh2YWx1ZTogYmlnaW50IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdmFsdWVCaWdJbnQgPSB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnID8gdmFsdWUgOiBCaWdJbnQodmFsdWUpO1xuICAgIHRoaXMudmFsaWRhdGVTdGFrZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy5fc3Rha2VBbW91bnQgPSB2YWx1ZUJpZ0ludDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLmJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBpZiAodGhpcy5oYXNTaWduZXIoKSkge1xuICAgICAgZm9yIChjb25zdCBrZXlQYWlyIG9mIHRoaXMuX3NpZ25lcikge1xuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oa2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBwZXJtaXNzaW9ubGVzcyB2YWxpZGF0b3IgdHJhbnNhY3Rpb25cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBzdGF0aWMgdmVyaWZ5VHhUeXBlKHR5cGU6IFR5cGVTeW1ib2xzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGUgPT09IFR5cGVTeW1ib2xzLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Blcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUF5RTtBQUN6RSxtREFBd0g7QUFJeEgsNkRBQTBEO0FBQzFELG9EQUE0QjtBQUU1QixNQUFhLGdDQUFpQyxTQUFRLHVDQUFrQjtJQVN0RSxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLDBCQUEwQixDQUFDO0lBQ3BELENBQUM7SUFFRCxxQkFBcUI7SUFDckIsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDL0IsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxpQkFBeUI7UUFDakQsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxnQ0FBcUIsQ0FDN0Isc0NBQXNDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQ25GLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFxQjtRQUNoQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFBRSxNQUFNLElBQUksZ0NBQXFCLENBQUMsa0JBQWtCLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0UsQ0FBQztRQUNELElBQUksQ0FBQyxDQUFDLGVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMvRCxNQUFNLElBQUksZ0NBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLFNBQWlCLEVBQUUsT0FBZTtRQUN0RCxJQUFJLE9BQU8sR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksZ0NBQXFCLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RSxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE1BQWM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELElBQUksTUFBTSxHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw0QkFBNEIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQzFHLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxPQUEwQjtRQUN4QyxNQUFNLGVBQWUsR0FBRyxPQUFPLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUFvQjtRQUMvQixJQUFBLDhCQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUFvQjtRQUMvQixJQUFBLDhCQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXNCO1FBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFzQjtRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBc0I7UUFDaEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxxQkFBcUI7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQ25DLE9BQU8sSUFBSSxLQUFLLHFCQUFXLENBQUMsNEJBQTRCLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixJQUFjLFdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFjLFdBQVcsQ0FBQyxXQUF3QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFySkQsNEVBcUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbHMgYXMgRmxhcmVVdGlscywgVHlwZVN5bWJvbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBpc1ZhbGlkQkxTUHVibGljS2V5LCBpc1ZhbGlkQkxTU2lnbmF0dXJlLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHhCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9ub2RlSUQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ibHNQdWJsaWNLZXk6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9ibHNTaWduYXR1cmU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9zdGFydFRpbWU6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9lbmRUaW1lOiBiaWdpbnQ7XG4gIHByb3RlY3RlZCBfc3Rha2VBbW91bnQ6IGJpZ2ludDtcbiAgcHJvdGVjdGVkIF9kZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsudHhGZWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I7XG4gIH1cblxuICAvLyBWYWxpZGF0aW9uIG1ldGhvZHNcbiAgdmFsaWRhdGVMb2NrdGltZShsb2NrdGltZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGxvY2t0aW1lIDwgQmlnSW50KDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBsb2NrdGltZSBtdXN0IGJlIDAgb3IgaGlnaGVyJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZShkZWxlZ2F0aW9uRmVlUmF0ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGRlbGVnYXRpb25GZWVSYXRlIDwgTnVtYmVyKHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsubWluRGVsZWdhdGlvbkZlZSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBEZWxlZ2F0aW9uIGZlZSBjYW5ub3QgYmUgbGVzcyB0aGFuICR7dGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay5taW5EZWxlZ2F0aW9uRmVlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVVdHhvKHZhbHVlOiBEZWNvZGVkVXR4b09iaik6IHZvaWQge1xuICAgIFsnb3V0cHV0SUQnLCAnYW1vdW50JywgJ3R4aWQnLCAnb3V0cHV0aWR4J10uZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmICghdmFsdWUuaGFzT3duUHJvcGVydHkoZmllbGQpKSB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVdHhvcyByZXF1aXJlZCAke2ZpZWxkfWApO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVOb2RlSUQobm9kZUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIW5vZGVJRCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub2RlSUQnKTtcbiAgICB9XG4gICAgaWYgKG5vZGVJRC5zbGljZSgwLCA2KSAhPT0gJ05vZGVJRCcpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IGludmFsaWQgTm9kZUlEIHRhZycpO1xuICAgIH1cbiAgICBpZiAoIShGbGFyZVV0aWxzLmJhc2U1OC5kZWNvZGUobm9kZUlELnNsaWNlKDcpKS5sZW5ndGggPT09IDI0KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogTm9kZUlEIGlzIG5vdCBpbiBjYjU4IGZvcm1hdCcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VEdXJhdGlvbihzdGFydFRpbWU6IGJpZ2ludCwgZW5kVGltZTogYmlnaW50KTogdm9pZCB7XG4gICAgaWYgKGVuZFRpbWUgPCBzdGFydFRpbWUpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZCBkYXRlIGNhbm5vdCBiZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZScpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlU3Rha2VBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBjb25zdCBtaW5TdGFrZSA9IEJpZ0ludCh0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLm1pblN0YWtlKTtcbiAgICBpZiAoYW1vdW50IDwgbWluU3Rha2UpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ01pbmltdW0gc3Rha2luZyBhbW91bnQgaXMgJyArIE51bWJlcihtaW5TdGFrZSkgLyAxMDAwMDAwMDAwICsgJyBGTFIuJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQnVpbGRlciBtZXRob2RzXG4gIHJld2FyZEFkZHJlc3NlcyhhZGRyZXNzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHRoaXMge1xuICAgIGNvbnN0IHJld2FyZEFkZHJlc3NlcyA9IGFkZHJlc3MgaW5zdGFuY2VvZiBBcnJheSA/IGFkZHJlc3MgOiBbYWRkcmVzc107XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fcmV3YXJkQWRkcmVzc2VzID0gcmV3YXJkQWRkcmVzc2VzLm1hcCh1dGlscy5wYXJzZUFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbm9kZUlEKG5vZGVJRDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZU5vZGVJRChub2RlSUQpO1xuICAgIHRoaXMuX25vZGVJRCA9IG5vZGVJRDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJsc1B1YmxpY0tleShibHNQdWJsaWNLZXk6IHN0cmluZyk6IHRoaXMge1xuICAgIGlzVmFsaWRCTFNQdWJsaWNLZXkoYmxzUHVibGljS2V5KTtcbiAgICB0aGlzLl9ibHNQdWJsaWNLZXkgPSBibHNQdWJsaWNLZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBibHNTaWduYXR1cmUoYmxzU2lnbmF0dXJlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpc1ZhbGlkQkxTU2lnbmF0dXJlKGJsc1NpZ25hdHVyZSk7XG4gICAgdGhpcy5fYmxzU2lnbmF0dXJlID0gYmxzU2lnbmF0dXJlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbG9ja3RpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVMb2NrdGltZShCaWdJbnQodmFsdWUpKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5fbG9ja3RpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGVsZWdhdGlvbkZlZVJhdGUodmFsdWU6IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVEZWxlZ2F0aW9uRmVlUmF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5fZGVsZWdhdGlvbkZlZVJhdGUgPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXJ0VGltZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdGhpcyB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gQmlnSW50KHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVuZFRpbWUodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHRoaXMge1xuICAgIHRoaXMuX2VuZFRpbWUgPSBCaWdJbnQodmFsdWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3Rha2VBbW91bnQodmFsdWU6IGJpZ2ludCB8IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHZhbHVlQmlnSW50ID0gdHlwZW9mIHZhbHVlID09PSAnYmlnaW50JyA/IHZhbHVlIDogQmlnSW50KHZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRlU3Rha2VBbW91bnQodmFsdWVCaWdJbnQpO1xuICAgIHRoaXMuX3N0YWtlQW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5idWlsZEZsYXJlVHJhbnNhY3Rpb24oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG4gICAgaWYgKHRoaXMuaGFzU2lnbmVyKCkpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5UGFpciBvZiB0aGlzLl9zaWduZXIpIHtcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvbi5zaWduKGtleVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgcGVybWlzc2lvbmxlc3MgdmFsaWRhdG9yIHRyYW5zYWN0aW9uXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgc3RhdGljIHZlcmlmeVR4VHlwZSh0eXBlOiBUeXBlU3ltYm9scyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlID09PSBUeXBlU3ltYm9scy5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxufVxuIl19
|
|
@@ -32,6 +32,21 @@ export declare class Transaction extends BaseTransaction {
|
|
|
32
32
|
sign(keyPair: KeyPair): Promise<void>;
|
|
33
33
|
toBroadcastFormat(): string;
|
|
34
34
|
toJson(): TxData;
|
|
35
|
+
/**
|
|
36
|
+
* Get the source chain id or undefined if it's not a cross chain transfer.
|
|
37
|
+
*/
|
|
38
|
+
get sourceChain(): string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get the destination chain id or undefined if it's not a cross chain transfer.
|
|
41
|
+
*/
|
|
42
|
+
get destinationChain(): string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Convert a blockchainId buffer to string and return P or C alias if it matches any of those chains.
|
|
45
|
+
* @param {Buffer} blockchainIDBuffer
|
|
46
|
+
* @return {string} blockchainID or alias if exists.
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
private blockchainIDtoAlias;
|
|
35
50
|
setTransaction(tx: Tx): void;
|
|
36
51
|
/**
|
|
37
52
|
* Get the underlying Flare transaction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EACf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,UAAU,EAOX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAA2C,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IAEnC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuF3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EACf,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,UAAU,EAOX,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,EAA2C,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgEpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IAEnC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuF3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;IAmBhB;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CA6BpC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CA6BzC;IAED;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAW3B,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAI5B;;;OAGG;IACH,mBAAmB,IAAI,EAAE;IAIzB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAO1D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAGf;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,GAAG,IAAI,cAAc,CAExB;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAIpC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAwCrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAmB3B;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAsDpB;IAED,kBAAkB,IAAI,sBAAsB;CA0B7C"}
|
|
@@ -201,8 +201,90 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
201
201
|
signatures: this.signature,
|
|
202
202
|
outputs: this.outputs,
|
|
203
203
|
changeOutputs: this.changeOutputs,
|
|
204
|
+
sourceChain: this.sourceChain,
|
|
205
|
+
destinationChain: this.destinationChain,
|
|
204
206
|
};
|
|
205
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Get the source chain id or undefined if it's not a cross chain transfer.
|
|
210
|
+
*/
|
|
211
|
+
get sourceChain() {
|
|
212
|
+
const tx = this._flareTransaction.getTx();
|
|
213
|
+
switch (this.type) {
|
|
214
|
+
case sdk_core_1.TransactionType.Import:
|
|
215
|
+
if (this.isTransactionForCChain) {
|
|
216
|
+
// C-chain Import: source is the chain we're importing FROM (P-chain)
|
|
217
|
+
const importTx = tx;
|
|
218
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(importTx.sourceChain.toBytes()));
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// P-chain Import: source is the chain we're importing FROM (C-chain)
|
|
222
|
+
const pvmImportTx = tx;
|
|
223
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(pvmImportTx.sourceChain.toBytes()));
|
|
224
|
+
}
|
|
225
|
+
case sdk_core_1.TransactionType.Export:
|
|
226
|
+
if (this.isTransactionForCChain) {
|
|
227
|
+
// C-chain Export: source is C-chain (the blockchain ID)
|
|
228
|
+
const exportTx = tx;
|
|
229
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(exportTx.blockchainId.toBytes()));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
// P-chain Export: source is P-chain (the blockchain ID from baseTx)
|
|
233
|
+
const pvmExportTx = tx;
|
|
234
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(pvmExportTx.baseTx.BlockchainId.toBytes()));
|
|
235
|
+
}
|
|
236
|
+
default:
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get the destination chain id or undefined if it's not a cross chain transfer.
|
|
242
|
+
*/
|
|
243
|
+
get destinationChain() {
|
|
244
|
+
const tx = this._flareTransaction.getTx();
|
|
245
|
+
switch (this.type) {
|
|
246
|
+
case sdk_core_1.TransactionType.Import:
|
|
247
|
+
if (this.isTransactionForCChain) {
|
|
248
|
+
// C-chain Import: destination is C-chain (the blockchain ID)
|
|
249
|
+
const importTx = tx;
|
|
250
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(importTx.blockchainId.toBytes()));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
// P-chain Import: destination is P-chain (the blockchain ID from baseTx)
|
|
254
|
+
const pvmImportTx = tx;
|
|
255
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(pvmImportTx.baseTx.BlockchainId.toBytes()));
|
|
256
|
+
}
|
|
257
|
+
case sdk_core_1.TransactionType.Export:
|
|
258
|
+
if (this.isTransactionForCChain) {
|
|
259
|
+
// C-chain Export: destination is P-chain (the destination chain)
|
|
260
|
+
const exportTx = tx;
|
|
261
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(exportTx.destinationChain.toBytes()));
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
// P-chain Export: destination is C-chain (the destination chain)
|
|
265
|
+
const pvmExportTx = tx;
|
|
266
|
+
return this.blockchainIDtoAlias(buffer_1.Buffer.from(pvmExportTx.destination.toBytes()));
|
|
267
|
+
}
|
|
268
|
+
default:
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Convert a blockchainId buffer to string and return P or C alias if it matches any of those chains.
|
|
274
|
+
* @param {Buffer} blockchainIDBuffer
|
|
275
|
+
* @return {string} blockchainID or alias if exists.
|
|
276
|
+
* @private
|
|
277
|
+
*/
|
|
278
|
+
blockchainIDtoAlias(blockchainIDBuffer) {
|
|
279
|
+
const blockchainId = utils_1.default.cb58Encode(blockchainIDBuffer);
|
|
280
|
+
if (blockchainId === this._network.cChainBlockchainID) {
|
|
281
|
+
return 'C';
|
|
282
|
+
}
|
|
283
|
+
if (blockchainId === this._network.blockchainID) {
|
|
284
|
+
return 'P';
|
|
285
|
+
}
|
|
286
|
+
return blockchainId;
|
|
287
|
+
}
|
|
206
288
|
setTransaction(tx) {
|
|
207
289
|
this._flareTransaction = tx;
|
|
208
290
|
}
|
|
@@ -377,4 +459,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
377
459
|
}
|
|
378
460
|
}
|
|
379
461
|
exports.Transaction = Transaction;
|
|
380
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1EQVE4QjtBQUM5QixtREFTK0I7QUFDL0IsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxtQ0FBc0g7QUFFdEgsb0RBQTRCO0FBRTVCOzs7O0dBSUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQWlCO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxlQUFLLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFTRDs7O0dBR0c7QUFDSCxTQUFTLGtCQUFrQixDQUFDLFNBQWlCO0lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsOEJBQThCO0lBQzlCLE9BQU8sWUFBWSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FBQyxVQUFvQjtJQUNyRCx1REFBdUQ7SUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FB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WUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELE9BQU87WUFDTCxZQUFZO1lBQ1osRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM3RSxZQUFZO1lBQ1osYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3pGLFlBQVk7WUFDWixlQUFlO1lBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE5V0Qsa0NBOFdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhcmVOZXR3b3JrLCBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFRyYW5zYWN0aW9uRmVlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICB1dGlscyBhcyBGbGFyZVV0aWxzLFxuICBDcmVkZW50aWFsLFxuICBwdm1TZXJpYWwsXG4gIGV2bVNlcmlhbCxcbiAgVW5zaWduZWRUeCxcbiAgc2VjcDI1NmsxLFxuICBFVk1VbnNpZ25lZFR4LFxuICBBZGRyZXNzLFxufSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmosIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFR4LCBUeERhdGEsIEFERFJFU1NfU0VQQVJBVE9SLCBGbGFyZVRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgc2lnbmF0dXJlIGlzIGVtcHR5IChmaXJzdCA5MCBoZXggY2hhcnMgYXJlIHplcm9zKVxuICogQHBhcmFtIHNpZ25hdHVyZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRW1wdHlTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICEhc2lnbmF0dXJlICYmIHV0aWxzLnJlbW92ZUhleFByZWZpeChzaWduYXR1cmUpLnN0YXJ0c1dpdGgoJycucGFkU3RhcnQoOTAsICcwJykpO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3Igc2lnbmF0dXJlIHNsb3QgY2hlY2tpbmdcbiAqL1xuaW50ZXJmYWNlIENoZWNrU2lnbmF0dXJlIHtcbiAgKHNpZ25hdHVyZTogc3RyaW5nLCBhZGRyZXNzSGV4OiBzdHJpbmcpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBlbXB0eSBzaWduYXR1cmUgaGFzIGFuIGVtYmVkZGVkIGFkZHJlc3MgKG5vbi16ZXJvIGJ5dGVzIGFmdGVyIHBvc2l0aW9uIDkwKVxuICogQHBhcmFtIHNpZ25hdHVyZSBIZXggc3RyaW5nIG9mIHRoZSBzaWduYXR1cmVcbiAqL1xuZnVuY3Rpb24gaGFzRW1iZWRkZWRBZGRyZXNzKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghaXNFbXB0eVNpZ25hdHVyZShzaWduYXR1cmUpKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGNsZWFuU2lnID0gdXRpbHMucmVtb3ZlSGV4UHJlZml4KHNpZ25hdHVyZSk7XG4gIGlmIChjbGVhblNpZy5sZW5ndGggPCAxMzApIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZW1iZWRkZWRQYXJ0ID0gY2xlYW5TaWcuc3Vic3RyaW5nKDkwLCAxMzApO1xuICAvLyBDaGVjayBpZiBpdCdzIG5vdCBhbGwgemVyb3NcbiAgcmV0dXJuIGVtYmVkZGVkUGFydCAhPT0gJzAnLnJlcGVhdCg0MCk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBzaWduYXR1cmUgc2xvdCBtYXRjaGVzIGEgZ2l2ZW4gYWRkcmVzcy5cbiAqIElmIHNpZ25hdHVyZXMgaGF2ZSBlbWJlZGRlZCBhZGRyZXNzZXMsIGl0IG1hdGNoZXMgYnkgYWRkcmVzcy5cbiAqIE90aGVyd2lzZSwgaXQganVzdCBmaW5kcyBlbXB0eSBzbG90cy5cbiAqIEBwYXJhbSBzaWduYXR1cmVzIEFycmF5IG9mIHNpZ25hdHVyZSBoZXggc3RyaW5nc1xuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVNlbGVjdG9yU2lnbmF0dXJlKHNpZ25hdHVyZXM6IHN0cmluZ1tdKTogQ2hlY2tTaWduYXR1cmUge1xuICAvLyBDaGVjayBpZiBhbnkgZW1wdHkgc2lnbmF0dXJlIGhhcyBhbiBlbWJlZGRlZCBhZGRyZXNzXG4gIGNvbnN0IGhhc0VtYmVkZGVkQWRkcmVzc2VzID0gc2lnbmF0dXJlcy5zb21lKChzaWcpID0+IGlzRW1wdHlTaWduYXR1cmUoc2lnKSAmJiBoYXNFbWJlZGRlZEFkZHJlc3Moc2lnKSk7XG5cbiAgaWYgKGhhc0VtYmVkZGVkQWRkcmVzc2VzKSB7XG4gICAgLy8gTG9vayBmb3IgYWRkcmVzcyBlbWJlZGRlZCBpbiB0aGUgZW1wdHkgc2lnbmF0dXJlIChhZnRlciBwb3NpdGlvbiA5MClcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNpZzogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghaXNFbXB0eVNpZ25hdHVyZShzaWcpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsZWFuU2lnID0gdXRpbHMucmVtb3ZlSGV4UHJlZml4KHNpZyk7XG4gICAgICAgIGNvbnN0IGVtYmVkZGVkQWRkciA9IGNsZWFuU2lnLnN1YnN0cmluZyg5MCwgMTMwKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gZW1iZWRkZWRBZGRyID09PSBhZGRyZXNzLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIExvb2sgZm9yIGFueSBlbXB0eSBzbG90IChubyBlbWJlZGRlZCBhZGRyZXNzZXMpXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzaWc6IHN0cmluZywgYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gaXNFbXB0eVNpZ25hdHVyZShzaWcpO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9mbGFyZVRyYW5zYWN0aW9uOiBUeDtcbiAgcHVibGljIF90eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHB1YmxpYyBfbmV0d29yazogRmxhcmVOZXR3b3JrO1xuICBwdWJsaWMgX25ldHdvcmtJRDogbnVtYmVyO1xuICBwdWJsaWMgX2Fzc2V0SWQ6IHN0cmluZztcbiAgcHVibGljIF9ibG9ja2NoYWluSUQ6IHN0cmluZztcbiAgcHVibGljIF9ub2RlSUQ6IHN0cmluZztcbiAgcHVibGljIF9zdGFydFRpbWU6IGJpZ2ludDtcbiAgcHVibGljIF9lbmRUaW1lOiBiaWdpbnQ7XG4gIHB1YmxpYyBfc3Rha2VBbW91bnQ6IGJpZ2ludDtcbiAgcHVibGljIF90aHJlc2hvbGQgPSAyO1xuICBwdWJsaWMgX2xvY2t0aW1lID0gQmlnSW50KDApO1xuICBwdWJsaWMgX2Zyb21BZGRyZXNzZXM6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBwdWJsaWMgX3RvOiBVaW50OEFycmF5W10gPSBbXTtcbiAgcHVibGljIF9yZXdhcmRBZGRyZXNzZXM6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBwdWJsaWMgX3V0eG9zOiBEZWNvZGVkVXR4b09ialtdID0gW107IC8vIERlZmluZSBwcm9wZXIgdHlwZSBiYXNlZCBvbiBGbGFyZSdzIFVUWE8gc3RydWN0dXJlXG4gIHB1YmxpYyBfZmVlOiBQYXJ0aWFsPFRyYW5zYWN0aW9uRmVlPiA9IHt9O1xuICAvLyBTdG9yZSBvcmlnaW5hbCByYXcgc2lnbmVkIGJ5dGVzIHRvIHByZXNlcnZlIGV4YWN0IGZvcm1hdCB3aGVuIHJlLXNlcmlhbGl6aW5nXG4gIHB1YmxpYyBfcmF3U2lnbmVkQnl0ZXM6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX25ldHdvcmsgPSBjb2luQ29uZmlnLm5ldHdvcmsgYXMgRmxhcmVOZXR3b3JrO1xuICAgIC8vIERlY29kZSBjYjU4LWVuY29kZWQgYXNzZXQgSUQgdG8gaGV4IGZvciB1c2UgaW4gdHJhbnNhY3Rpb24gc2VyaWFsaXphdGlvblxuICAgIHRoaXMuX2Fzc2V0SWQgPSB1dGlscy5jYjU4RGVjb2RlKHRoaXMuX25ldHdvcmsuYXNzZXRJZCkudG9TdHJpbmcoJ2hleCcpO1xuICAgIHRoaXMuX2Jsb2NrY2hhaW5JRCA9IHRoaXMuX25ldHdvcmsuYmxvY2tjaGFpbklEO1xuICAgIHRoaXMuX25ldHdvcmtJRCA9IHRoaXMuX25ldHdvcmsubmV0d29ya0lEO1xuICB9XG5cbiAgZ2V0IHNpZ25hdHVyZSgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCF0aGlzLmhhc0NyZWRlbnRpYWxzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWRlbnRpYWxzWzBdLmdldFNpZ25hdHVyZXMoKS5maWx0ZXIoKHMpID0+ICFpc0VtcHR5U2lnbmF0dXJlKHMpKTtcbiAgfVxuXG4gIGdldCBjcmVkZW50aWFscygpOiBDcmVkZW50aWFsW10ge1xuICAgIHJldHVybiAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KT8uY3JlZGVudGlhbHM7XG4gIH1cblxuICBnZXQgaGFzQ3JlZGVudGlhbHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbih7IGtleSB9OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcnYgPSBrZXlQYWlyLmdldFByaXZhdGVLZXkoKSBhcyBVaW50OEFycmF5O1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZmxhcmVUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdlbXB0eSB0cmFuc2FjdGlvbiB0byBzaWduJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5oYXNDcmVkZW50aWFscykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdlbXB0eSBjcmVkZW50aWFscyB0byBzaWduJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdW5zaWduZWRUeCA9IHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgRVZNVW5zaWduZWRUeDtcbiAgICBjb25zdCB1bnNpZ25lZEJ5dGVzID0gdW5zaWduZWRUeC50b0J5dGVzKCk7XG4gICAgY29uc3QgcHVibGljS2V5ID0gc2VjcDI1NmsxLmdldFB1YmxpY0tleShwcnYpO1xuXG4gICAgLy8gRGVyaXZlIGJvdGggRVZNIGFuZCBQLWNoYWluIGFkZHJlc3NlcyBmcm9tIHRoZSBwdWJsaWMga2V5XG4gICAgY29uc3QgZXZtQWRkcmVzc0hleCA9IG5ldyBBZGRyZXNzKHNlY3AyNTZrMS5wdWJsaWNLZXlUb0V0aEFkZHJlc3MocHVibGljS2V5KSkudG9IZXgoKTtcblxuICAgIC8vIFAtY2hhaW4gYWRkcmVzcyBkZXJpdmF0aW9uOiByaXBlbWQxNjAoc2hhMjU2KHB1YmxpY0tleSkpXG4gICAgY29uc3Qgc2hhMjU2SGFzaCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShCdWZmZXIuZnJvbShwdWJsaWNLZXkpKS5kaWdlc3QoKTtcbiAgICBjb25zdCBwQ2hhaW5BZGRyZXNzQnVmZmVyID0gY3JlYXRlSGFzaCgncmlwZW1kMTYwJykudXBkYXRlKHNoYTI1Nkhhc2gpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHBDaGFpbkFkZHJlc3NIZXggPSBwQ2hhaW5BZGRyZXNzQnVmZmVyLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIGNvbnN0IGFkZHJlc3NNYXAgPSB1bnNpZ25lZFR4LmdldEFkZHJlc3NlcygpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGJvdGggRVZNIGFuZCBQLWNoYWluIGFkZHJlc3MgZm9ybWF0c1xuICAgIGNvbnN0IGhhc01hdGNoaW5nQWRkcmVzcyA9IGFkZHJlc3NNYXAuc29tZSgoYWRkcikgPT4ge1xuICAgICAgY29uc3QgYWRkckhleCA9IEJ1ZmZlci5mcm9tKGFkZHIpLnRvU3RyaW5nKCdoZXgnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYWRkckhleCA9PT0gdXRpbHMucmVtb3ZlSGV4UHJlZml4KGV2bUFkZHJlc3NIZXgpLnRvTG93ZXJDYXNlKCkgfHwgYWRkckhleCA9PT0gcENoYWluQWRkcmVzc0hleC50b0xvd2VyQ2FzZSgpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2VjcDI1NmsxLnNpZ24odW5zaWduZWRCeXRlcywgcHJ2KTtcbiAgICBsZXQgc2lnbmF0dXJlU2V0ID0gZmFsc2U7XG5cbiAgICBpZiAoaGFzTWF0Y2hpbmdBZGRyZXNzKSB7XG4gICAgICAvLyBVc2UgYWRkcmVzcy1iYXNlZCBzbG90IG1hdGNoaW5nIChsaWtlIEFWQVgtUClcbiAgICAgIGxldCBjaGVja1NpZ246IENoZWNrU2lnbmF0dXJlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICBmb3IgKGNvbnN0IGNyZWRlbnRpYWwgb2YgdW5zaWduZWRUeC5jcmVkZW50aWFscykge1xuICAgICAgICBjb25zdCBzaWduYXR1cmVzID0gY3JlZGVudGlhbC5nZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIGlmIChjaGVja1NpZ24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNoZWNrU2lnbiA9IGdlbmVyYXRlU2VsZWN0b3JTaWduYXR1cmUoc2lnbmF0dXJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaW5kIHRoZSBzbG90IHRoYXQgbWF0Y2hlcyB0aGlzIGFkZHJlc3NcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWduYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qgc2lnID0gc2lnbmF0dXJlc1tpXTtcbiAgICAgICAgICAvLyBUcnkgbWF0Y2hpbmcgd2l0aCBQLWNoYWluIGFkZHJlc3MgZmlyc3QsIHRoZW4gRVZNIGFkZHJlc3NcbiAgICAgICAgICBpZiAoY2hlY2tTaWduKHNpZywgcENoYWluQWRkcmVzc0hleCkgfHwgY2hlY2tTaWduKHNpZywgdXRpbHMucmVtb3ZlSGV4UHJlZml4KGV2bUFkZHJlc3NIZXgpLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICBjcmVkZW50aWFsLnNldFNpZ25hdHVyZShpLCBzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIENsZWFyIHJhdyBzaWduZWQgYnl0ZXMgc2luY2Ugd2UndmUgbW9kaWZpZWQgdGhlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICB0aGlzLl9yYXdTaWduZWRCeXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaWduYXR1cmVTZXQpIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrOiBJZiBhZGRyZXNzLWJhc2VkIG1hdGNoaW5nIGRpZG4ndCB3b3JrIChlLmcuLCBJbXBvcnRJbkMgbG9hZGVkIGZyb20gdW5zaWduZWQgdHhcbiAgICAvLyB3aGVyZSBQLWNoYWluIGFkZHJlc3NlcyBhcmVuJ3QgaW4gYWRkcmVzc01hcHMpLCB0cnkgdG8gc2lnbiB0aGUgZmlyc3QgZW1wdHkgc2xvdC5cbiAgICAvLyBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBlbXB0eSBjcmVkZW50aWFscyBidXQgc2lnbmVyIGFkZHJlc3MgaXNuJ3QgaW4gdGhlIG1hcC5cbiAgICBpZiAoIXNpZ25hdHVyZVNldCkge1xuICAgICAgZm9yIChjb25zdCBjcmVkZW50aWFsIG9mIHVuc2lnbmVkVHguY3JlZGVudGlhbHMpIHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IGNyZWRlbnRpYWwuZ2V0U2lnbmF0dXJlcygpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaXNFbXB0eVNpZ25hdHVyZShzaWduYXR1cmVzW2ldKSkge1xuICAgICAgICAgICAgY3JlZGVudGlhbC5zZXRTaWduYXR1cmUoaSwgc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIHNpZ25hdHVyZVNldCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9yYXdTaWduZWRCeXRlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2lnbmF0dXJlU2V0KSBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXNpZ25hdHVyZVNldCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTm8gbWF0Y2hpbmcgc2lnbmF0dXJlIHNsb3QgZm91bmQgZm9yIHRoaXMgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fZmxhcmVUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIC8vIElmIHdlIGhhdmUgdGhlIG9yaWdpbmFsIHJhdyBzaWduZWQgYnl0ZXMsIHVzZSB0aGVtIGRpcmVjdGx5IHRvIHByZXNlcnZlIGV4YWN0IGZvcm1hdFxuICAgIGlmICh0aGlzLl9yYXdTaWduZWRCeXRlcykge1xuICAgICAgcmV0dXJuIEZsYXJlVXRpbHMuYnVmZmVyVG9IZXgodGhpcy5fcmF3U2lnbmVkQnl0ZXMpO1xuICAgIH1cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gdGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4O1xuICAgIC8vIEZvciBzaWduZWQgdHJhbnNhY3Rpb25zLCByZXR1cm4gdGhlIGZ1bGwgc2lnbmVkIHR4IHdpdGggY3JlZGVudGlhbHNcbiAgICAvLyBDaGVjayBzaWduYXR1cmUubGVuZ3RoIGZvciByb2J1c3RuZXNzXG4gICAgaWYgKHRoaXMuc2lnbmF0dXJlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBGbGFyZVV0aWxzLmJ1ZmZlclRvSGV4KHVuc2lnbmVkVHguZ2V0U2lnbmVkVHgoKS50b0J5dGVzKCkpO1xuICAgIH1cbiAgICAvLyBGb3IgdW5zaWduZWQgdHJhbnNhY3Rpb25zLCByZXR1cm4ganVzdCB0aGUgdHJhbnNhY3Rpb24gYnl0ZXNcbiAgICByZXR1cm4gRmxhcmVVdGlscy5idWZmZXJUb0hleCh1bnNpZ25lZFR4LnRvQnl0ZXMoKSk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBpbnB1dHM6IHRoaXMuaW5wdXRzLFxuICAgICAgZnJvbUFkZHJlc3NlczogdGhpcy5mcm9tQWRkcmVzc2VzLFxuICAgICAgdGhyZXNob2xkOiB0aGlzLl90aHJlc2hvbGQsXG4gICAgICBsb2NrdGltZTogdGhpcy5fbG9ja3RpbWUudG9TdHJpbmcoKSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIHNpZ25hdHVyZXM6IHRoaXMuc2lnbmF0dXJlLFxuICAgICAgb3V0cHV0czogdGhpcy5vdXRwdXRzLFxuICAgICAgY2hhbmdlT3V0cHV0czogdGhpcy5jaGFuZ2VPdXRwdXRzLFxuICAgIH07XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0eDogVHgpOiB2b2lkIHtcbiAgICB0aGlzLl9mbGFyZVRyYW5zYWN0aW9uID0gdHggYXMgVW5zaWduZWRUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgRmxhcmUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgVGhlIEZsYXJlIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgZ2V0RmxhcmVUcmFuc2FjdGlvbigpOiBUeCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICBpZiAoIVtUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JdLmluY2x1ZGVzKHRyYW5zYWN0aW9uVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVHJhbnNhY3Rpb24gdHlwZSAke3RyYW5zYWN0aW9uVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgIH1cbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiB1dGlscy5zaGEyNTYoKHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeCkudG9CeXRlcygpKTtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ1ZmZlckFycmF5ID0gdXRpbHMuc2hhMjU2KCh0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHgpLnRvQnl0ZXMoKSk7XG4gICAgcmV0dXJuIHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oYnVmZmVyQXJyYXkpKTtcbiAgfVxuXG4gIGdldCBmcm9tQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbUFkZHJlc3Nlcy5tYXAoKGEpID0+IEZsYXJlVXRpbHMuZm9ybWF0KHRoaXMuX25ldHdvcmsuYWxpYXMsIHRoaXMuX25ldHdvcmsuaHJwLCBhKSk7XG4gIH1cblxuICBnZXQgcmV3YXJkQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcmV3YXJkQWRkcmVzc2VzLm1hcCgoYSkgPT4gRmxhcmVVdGlscy5mb3JtYXQodGhpcy5fbmV0d29yay5hbGlhcywgdGhpcy5fbmV0d29yay5ocnAsIGEpKTtcbiAgfVxuXG4gIGdldCBmZWUoKTogVHJhbnNhY3Rpb25GZWUge1xuICAgIHJldHVybiB7IGZlZTogJzAnLCAuLi50aGlzLl9mZWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGZvciBDLWNoYWluIChFVk0gdHJhbnNhY3Rpb25zKVxuICAgKi9cbiAgZ2V0IGlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHggPSAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KS5nZXRUeCgpO1xuICAgIGNvbnN0IHR4VHlwZSA9ICh0eCBhcyB7IF90eXBlPzogc3RyaW5nIH0pLl90eXBlO1xuICAgIHJldHVybiB0eFR5cGUgPT09IEZsYXJlVHJhbnNhY3Rpb25UeXBlLkV2bUV4cG9ydFR4IHx8IHR4VHlwZSA9PT0gRmxhcmVUcmFuc2FjdGlvblR5cGUuRXZtSW1wb3J0VHg7XG4gIH1cblxuICBnZXQgb3V0cHV0cygpOiBFbnRyeVtdIHtcbiAgICBjb25zdCB0eCA9ICh0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHgpLmdldFR4KCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuSW1wb3J0OlxuICAgICAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICAgICAgLy8gQy1jaGFpbiBJbXBvcnQ6IG91dHB1dCBpcyB0byBhIEMtY2hhaW4gYWRkcmVzc1xuICAgICAgICAgIGNvbnN0IGltcG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBpbXBvcnRUeC5PdXRzLm1hcCgob3V0KSA9PiAoe1xuICAgICAgICAgICAgYWRkcmVzczogJzB4JyArIEJ1ZmZlci5mcm9tKG91dC5hZGRyZXNzLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgdmFsdWU6IG91dC5hbW91bnQudmFsdWUoKS50b1N0cmluZygpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQLWNoYWluIEltcG9ydDogb3V0cHV0cyBhcmUgdGhlIGJhc2VUeC5vdXRwdXRzIChkZXN0aW5hdGlvbiBvbiBQLWNoYWluKVxuICAgICAgICAgIGNvbnN0IHB2bUltcG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1JbXBvcnRUeC5iYXNlVHgub3V0cHV0cy5tYXAodXRpbHMubWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICAgICAgLy8gQy1jaGFpbiBFeHBvcnQ6IGV4cG9ydGVkIG91dHB1dHMgZ28gdG8gUC1jaGFpblxuICAgICAgICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiBleHBvcnRUeC5leHBvcnRlZE91dHB1dHMubWFwKHV0aWxzLm1hcE91dHB1dFRvRW50cnkodGhpcy5fbmV0d29yaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBleHBvcnRlZCBvdXRwdXRzIGdvIHRvIEMtY2hhaW5cbiAgICAgICAgICBjb25zdCBwdm1FeHBvcnRUeCA9IHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeDtcbiAgICAgICAgICByZXR1cm4gcHZtRXhwb3J0VHgub3V0cy5tYXAodXRpbHMubWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogKHR4IGFzIHB2bVNlcmlhbC5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4KS5zdWJuZXRWYWxpZGF0b3IudmFsaWRhdG9yLm5vZGVJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgdmFsdWU6ICh0eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCkuc3VibmV0VmFsaWRhdG9yLnZhbGlkYXRvci53ZWlnaHQudG9KU09OKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjaGFuZ2VPdXRwdXRzKCk6IEVudHJ5W10ge1xuICAgIGNvbnN0IHR4ID0gKHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeCkuZ2V0VHgoKTtcblxuICAgIC8vIEMtY2hhaW4gdHJhbnNhY3Rpb25zIGFuZCBJbXBvcnQgdHJhbnNhY3Rpb25zIGRvbid0IGhhdmUgY2hhbmdlIG91dHB1dHNcbiAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluIHx8IHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkltcG9ydCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBjaGFuZ2Ugb3V0cHV0cyBhcmUgaW4gYmFzZVR4Lm91dHB1dHNcbiAgICAgICAgcmV0dXJuICh0eCBhcyBwdm1TZXJpYWwuRXhwb3J0VHgpLmJhc2VUeC5vdXRwdXRzLm1hcCh1dGlscy5tYXBPdXRwdXRUb0VudHJ5KHRoaXMuX25ldHdvcmspKTtcblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICAgIHJldHVybiAodHggYXMgcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHgpLmJhc2VUeC5vdXRwdXRzLm1hcCh1dGlscy5tYXBPdXRwdXRUb0VudHJ5KHRoaXMuX25ldHdvcmspKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnB1dHMoKTogRW50cnlbXSB7XG4gICAgY29uc3QgdHggPSAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KS5nZXRUeCgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkltcG9ydDpcbiAgICAgICAgaWYgKHRoaXMuaXNUcmFuc2FjdGlvbkZvckNDaGFpbikge1xuICAgICAgICAgIC8vIEMtY2hhaW4gSW1wb3J0OiBpbnB1dHMgY29tZSBmcm9tIFAtY2hhaW4gKGltcG9ydGVkSW5wdXRzKVxuICAgICAgICAgIGNvbnN0IGltcG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBpbXBvcnRUeC5pbXBvcnRlZElucHV0cy5tYXAoKGlucHV0KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oaW5wdXQudXR4b0lELnR4SUQudG9CeXRlcygpKSkgKyAnOicgKyBpbnB1dC51dHhvSUQub3V0cHV0SWR4LnZhbHVlKCksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmZyb21BZGRyZXNzZXMuc29ydCgpLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpLFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gSW1wb3J0OiBpbnB1dHMgYXJlIGlucyAoaW1wb3J0ZWQgZnJvbSBDLWNoYWluKVxuICAgICAgICAgIGNvbnN0IHB2bUltcG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1JbXBvcnRUeC5pbnMubWFwKChpbnB1dCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKGlucHV0LnV0eG9JRC50eElELnRvQnl0ZXMoKSkpICsgJzonICsgaW5wdXQudXR4b0lELm91dHB1dElkeC52YWx1ZSgpLFxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5mcm9tQWRkcmVzc2VzLnNvcnQoKS5qb2luKEFERFJFU1NfU0VQQVJBVE9SKSxcbiAgICAgICAgICAgIHZhbHVlOiBpbnB1dC5hbW91bnQoKS50b1N0cmluZygpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICh0aGlzLmlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4pIHtcbiAgICAgICAgICAvLyBDLWNoYWluIEV4cG9ydDogaW5wdXRzIGFyZSBmcm9tIEMtY2hhaW4gKEVWTSBpbnB1dHMpXG4gICAgICAgICAgY29uc3QgZXhwb3J0VHggPSB0eCBhcyBldm1TZXJpYWwuRXhwb3J0VHg7XG4gICAgICAgICAgcmV0dXJuIGV4cG9ydFR4Lmlucy5tYXAoKGV2bUlucHV0KSA9PiAoe1xuICAgICAgICAgICAgYWRkcmVzczogJzB4JyArIEJ1ZmZlci5mcm9tKGV2bUlucHV0LmFkZHJlc3MudG9CeXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICB2YWx1ZTogZXZtSW5wdXQuYW1vdW50LnZhbHVlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG5vbmNlOiBOdW1iZXIoZXZtSW5wdXQubm9uY2UudmFsdWUoKSksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBpbnB1dHMgYXJlIGZyb20gYmFzZVR4LmlucHV0c1xuICAgICAgICAgIGNvbnN0IHB2bUV4cG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1FeHBvcnRUeC5iYXNlVHguaW5wdXRzLm1hcCgoaW5wdXQpID0+ICh7XG4gICAgICAgICAgICBpZDogdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbShpbnB1dC51dHhvSUQudHhJRC50b0J5dGVzKCkpKSArICc6JyArIGlucHV0LnV0eG9JRC5vdXRwdXRJZHgudmFsdWUoKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZnJvbUFkZHJlc3Nlcy5zb3J0KCkuam9pbihBRERSRVNTX1NFUEFSQVRPUiksXG4gICAgICAgICAgICB2YWx1ZTogaW5wdXQuYW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zdCBiYXNlVHggPSB0eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeDtcbiAgICAgICAgaWYgKGJhc2VUeC5iYXNlVHg/LmlucHV0cykge1xuICAgICAgICAgIHJldHVybiBiYXNlVHguYmFzZVR4LmlucHV0cy5tYXAoKGlucHV0KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oaW5wdXQudXR4b0lELnR4SUQudG9CeXRlcygpKSkgKyAnOicgKyBpbnB1dC51dHhvSUQub3V0cHV0SWR4LnZhbHVlKCksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmZyb21BZGRyZXNzZXMuc29ydCgpLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpLFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ2lucHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddO1xuXG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdHhKc29uLm91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwICsgQmlnSW50KG4udmFsdWUpLCBCaWdJbnQoMCkpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgY2hhbmdlQW1vdW50ID0gdHhKc29uLmNoYW5nZU91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwICsgQmlnSW50KG4udmFsdWUpLCBCaWdJbnQoMCkpLnRvU3RyaW5nKCk7XG5cbiAgICBsZXQgcmV3YXJkQWRkcmVzc2VzO1xuICAgIGlmIChbVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yXS5pbmNsdWRlcyh0eEpzb24udHlwZSkpIHtcbiAgICAgIHJld2FyZEFkZHJlc3NlcyA9IHRoaXMucmV3YXJkQWRkcmVzc2VzO1xuICAgICAgZGlzcGxheU9yZGVyLnNwbGljZSg2LCAwLCAncmV3YXJkQWRkcmVzc2VzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICBpbnB1dHM6IHR4SnNvbi5pbnB1dHMsXG4gICAgICBvdXRwdXRzOiB0eEpzb24ub3V0cHV0cy5tYXAoKG8pID0+ICh7IGFkZHJlc3M6IG8uYWRkcmVzcywgYW1vdW50OiBvLnZhbHVlIH0pKSxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IHR4SnNvbi5jaGFuZ2VPdXRwdXRzLm1hcCgobykgPT4gKHsgYWRkcmVzczogby5hZGRyZXNzLCBhbW91bnQ6IG8udmFsdWUgfSkpLFxuICAgICAgY2hhbmdlQW1vdW50LFxuICAgICAgcmV3YXJkQWRkcmVzc2VzLFxuICAgICAgZmVlOiB0aGlzLmZlZSxcbiAgICAgIHR5cGU6IHR4SnNvbi50eXBlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLG1EQVE4QjtBQUM5QixtREFTK0I7QUFDL0IsbUNBQWdDO0FBQ2hDLG1DQUFvQztBQUNwQyxtQ0FBc0g7QUFFdEgsb0RBQTRCO0FBRTVCOzs7O0dBSUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQWlCO0lBQ3pDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxlQUFLLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFTRDs7O0dBR0c7QUFDSCxTQUFTLGtCQUFrQixDQUFDLFNBQWlCO0lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxHQUFHO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsOEJBQThCO0lBQzlCLE9BQU8sWUFBWSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx5QkFBeUIsQ0FBQyxVQUFvQjtJQUNyRCx1REFBdUQ7SUFDdkQsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXhHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN6Qix1RUFBdUU7UUFDdkUsT0FBTyxVQUFVLEdBQVcsRUFBRSxPQUFlO1lBQzNDLElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDL0QsT0FBTyxZQUFZLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hELENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sa0RBQWtEO1FBQ2xELE9BQU8sVUFBVSxHQUFXLEVBQUUsT0FBZTtZQUMzQyxPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFxQjlDLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBWGIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsbUJBQWMsR0FBaUIsRUFBRSxDQUFDO1FBQ2xDLFFBQUcsR0FBaUIsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFpQixFQUFFLENBQUM7UUFDcEMsV0FBTSxHQUFxQixFQUFFLENBQUMsQ0FBQyxxREFBcUQ7UUFDcEYsU0FBSSxHQUE0QixFQUFFLENBQUM7UUFNeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBdUIsQ0FBQztRQUNuRCwyRUFBMkU7UUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQVEsSUFBSSxDQUFDLGlCQUFnQyxFQUFFLFdBQVcsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBZ0I7UUFDekIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBZ0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBa0MsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsbUJBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUMsNERBQTREO1FBQzVELE1BQU0sYUFBYSxHQUFHLElBQUksaUJBQU8sQ0FBQyxtQkFBUyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFdEYsMkRBQTJEO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hGLE1BQU0sbUJBQW1CLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRixNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3RCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0MsaURBQWlEO1FBQ2pELE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sT0FBTyxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sQ0FDTCxPQUFPLEtBQUssZUFBSyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQzdHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sU0FBUyxHQUFHLE1BQU0sbUJBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztRQUV6QixJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkIsZ0RBQWdEO1lBQ2hELElBQUksU0FBUyxHQUErQixTQUFTLENBQUM7WUFFdEQsS0FBSyxNQUFNLFVBQVUsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzVCLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEQsQ0FBQztnQkFFRCwwQ0FBMEM7Z0JBQzFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzNDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDMUIsNERBQTREO29CQUM1RCxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLGVBQUssQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUMzRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQzt3QkFDcEIsOERBQThEO3dCQUM5RCxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQzt3QkFDakMsTUFBTTtvQkFDUixDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxZQUFZO29CQUFFLE1BQU07WUFDMUIsQ0FBQztRQUNILENBQUM7UUFFRCwyRkFBMkY7UUFDM0Ysb0ZBQW9GO1FBQ3BGLDZGQUE2RjtRQUM3RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNwQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDdEMsWUFBWSxHQUFHLElBQUksQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7d0JBQ2pDLE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksWUFBWTtvQkFBRSxNQUFNO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSx1QkFBWSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELHVGQUF1RjtRQUN2RixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixPQUFPLGVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQStCLENBQUM7UUFDeEQsc0VBQXNFO1FBQ3RFLHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sZUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsK0RBQStEO1FBQy9ELE9BQU8sZUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksa0NBQXVCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUNuQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtTQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxXQUFXO1FBQ2IsTUFBTSxFQUFFLEdBQUksSUFBSSxDQUFDLGlCQUFnQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxNQUFNO2dCQUN6QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyxxRUFBcUU7b0JBQ3JFLE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLENBQUM7cUJBQU0sQ0FBQztvQkFDTixxRUFBcUU7b0JBQ3JFLE1BQU0sV0FBVyxHQUFHLEVBQXdCLENBQUM7b0JBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7WUFFSCxLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDaEMsd0RBQXdEO29CQUN4RCxNQUFNLFFBQVEsR0FBRyxFQUF3QixDQUFDO29CQUMxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixDQUFDO3FCQUFNLENBQUM7b0JBQ04sb0VBQW9FO29CQUNwRSxNQUFNLFdBQVcsR0FBRyxFQUF3QixDQUFDO29CQUM3QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUYsQ0FBQztZQUVIO2dCQUNFLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLEVBQUUsR0FBSSxJQUFJLENBQUMsaUJBQWdDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFMUQsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSywwQkFBZSxDQUFDLE1BQU07Z0JBQ3pCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ2hDLDZEQUE2RDtvQkFDN0QsTUFBTSxRQUFRLEdBQUcsRUFBd0IsQ0FBQztvQkFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEYsQ0FBQztxQkFBTSxDQUFDO29CQUNOLHlFQUF5RTtvQkFDekUsTUFBTSxXQUFXLEdBQUcsRUFBd0IsQ0FBQztvQkFDN0MsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFGLENBQUM7WUFFSCxLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDaEMsaUVBQWlFO29CQUNqRSxNQUFNLFFBQVEsR0FBRyxFQUF3QixDQUFDO29CQUMxQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BGLENBQUM7cUJBQU0sQ0FBQztvQkFDTixpRUFBaUU7b0JBQ2pFLE1BQU0sV0FBVyxHQUFHLEVBQXdCLENBQUM7b0JBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLENBQUM7WUFFSDtnQkFDRSxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssbUJBQW1CLENBQUMsa0JBQTBCO1FBQ3BELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxZQUFZLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQU07UUFDbkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQWdCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsZUFBZ0M7UUFDakQsSUFBSSxDQUFDLENBQUMsMEJBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzVFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLGVBQWUsbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLGVBQUssQ0FBQyxNQUFNLENBQUUsSUFBSSxDQUFDLGlCQUFnQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxNQUFNLENBQUUsSUFBSSxDQUFDLGlCQUFnQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDbkYsT0FBTyxlQUFLLENBQUMsVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksc0JBQXNCO1FBQ3hCLE1BQU0sRUFBRSxHQUFJLElBQUksQ0FBQyxpQkFBZ0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBSSxFQUF5QixDQUFDLEtBQUssQ0FBQztRQUNoRCxPQUFPLE1BQU0sS0FBSyw0QkFBb0IsQ0FBQyxXQUFXLElBQUksTUFBTSxLQUFLLDRCQUFvQixDQUFDLFdBQVcsQ0FBQztJQUNwRyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsTUFBTSxFQUFFLEdBQUksSUFBSSxDQUFDLGlCQUFnQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxNQUFNO2dCQUN6QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyxpREFBaUQ7b0JBQ2pELE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7b0JBQzFDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ2pDLE9BQU8sRUFBRSxJQUFJLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQzt3QkFDbEUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFO3FCQUNyQyxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDO3FCQUFNLENBQUM7b0JBQ04sMEVBQTBFO29CQUMxRSxNQUFNLFdBQVcsR0FBRyxFQUF3QixDQUFDO29CQUM3QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLENBQUM7WUFFSCxLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDaEMsaURBQWlEO29CQUNqRCxNQUFNLFFBQVEsR0FBRyxFQUF3QixDQUFDO29CQUMxQyxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDN0UsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGlEQUFpRDtvQkFDakQsTUFBTSxXQUFXLEdBQUcsRUFBd0IsQ0FBQztvQkFDN0MsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7WUFFSCxLQUFLLDBCQUFlLENBQUMsMEJBQTBCO2dCQUM3QyxPQUFPO29CQUNMO3dCQUNFLE9BQU8sRUFBRyxFQUE2QyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTt3QkFDbkcsS0FBSyxFQUFHLEVBQTZDLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO3FCQUNoRztpQkFDRixDQUFDO1lBRUo7Z0JBQ0UsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE1BQU0sRUFBRSxHQUFJLElBQUksQ0FBQyxpQkFBZ0MsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxRCx5RUFBeUU7UUFDekUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxNQUFNO2dCQUN6Qix1REFBdUQ7Z0JBQ3ZELE9BQVEsRUFBeUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFOUYsS0FBSywwQkFBZSxDQUFDLDBCQUEwQjtnQkFDN0MsT0FBUSxFQUE2QyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUVsSDtnQkFDRSxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsTUFBTSxFQUFFLEdBQUksSUFBSSxDQUFDLGlCQUFnQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFELFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxNQUFNO2dCQUN6QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO29CQUNoQyw0REFBNEQ7b0JBQzVELE1BQU0sUUFBUSxHQUFHLEVBQXdCLENBQUM7b0JBQzFDLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzdDLEVBQUUsRUFBRSxlQUFLLENBQUMsVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7d0JBQ3JHLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBaUIsQ0FBQzt3QkFDMUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7cUJBQ2pDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLENBQUM7cUJBQU0sQ0FBQztvQkFDTix5REFBeUQ7b0JBQ3pELE1BQU0sV0FBVyxHQUFHLEVBQXdCLENBQUM7b0JBQzdDLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JDLEVBQUUsRUFBRSxlQUFLLENBQUMsVUFBVSxDQUFDLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7d0JBQ3JHLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBaUIsQ0FBQzt3QkFDMUQsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7cUJBQ2pDLENBQUMsQ0FBQyxDQUFDO2dCQUNOLENBQUM7WUFFSCxLQUFLLDBCQUFlLENBQUMsTUFBTTtnQkFDekIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDaEMsdURBQXVEO29CQUN2RCxNQUFNLFFBQVEsR0FBRyxFQUF3QixDQUFDO29CQUMxQyxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNyQyxPQUFPLEVBQUUsSUFBSSxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7d0JBQ3ZFLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTt3QkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUN0QyxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDO3FCQUFNLENBQUM7b0JBQ04sZ0RBQWdEO29CQUNoRCxNQUFNLFdBQVcsR0FBRyxFQUF3QixDQUFDO29CQUM3QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsRUFBRSxFQUFFLGVBQUssQ0FBQyxVQUFVLENBQUMsZUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTt3QkFDckcsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLHlCQUFpQixDQUFDO3dCQUMxRCxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtxQkFDakMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sQ0FBQztZQUVILEtBQUssMEJBQWUsQ0FBQywwQkFBMEIsQ0FBQztZQUNoRDtnQkFDRSxNQUFNLE1BQU0sR0FBRyxFQUE0QyxDQUFDO2dCQUM1RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzFCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMxQyxFQUFFLEVBQUUsZUFBSyxDQUFDLFVBQVUsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO3dCQUNyRyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQWlCLENBQUM7d0JBQzFELEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO3FCQUNqQyxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdCLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWpILE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEcsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV0RyxJQUFJLGVBQWUsQ0FBQztRQUNwQixJQUFJLENBQUMsMEJBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN2QyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTztZQUNMLFlBQVk7WUFDWixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLFlBQVk7WUFDWixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekYsWUFBWTtZQUNaLGVBQWU7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDbEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJjRCxrQ0FxY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbGFyZU5ldHdvcmssIEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVHJhbnNhY3Rpb25GZWUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIHV0aWxzIGFzIEZsYXJlVXRpbHMsXG4gIENyZWRlbnRpYWwsXG4gIHB2bVNlcmlhbCxcbiAgZXZtU2VyaWFsLFxuICBVbnNpZ25lZFR4LFxuICBzZWNwMjU2azEsXG4gIEVWTVVuc2lnbmVkVHgsXG4gIEFkZHJlc3MsXG59IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHgsIFR4RGF0YSwgQUREUkVTU19TRVBBUkFUT1IsIEZsYXJlVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzaWduYXR1cmUgaXMgZW1wdHkgKGZpcnN0IDkwIGhleCBjaGFycyBhcmUgemVyb3MpXG4gKiBAcGFyYW0gc2lnbmF0dXJlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNFbXB0eVNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gISFzaWduYXR1cmUgJiYgdXRpbHMucmVtb3ZlSGV4UHJlZml4KHNpZ25hdHVyZSkuc3RhcnRzV2l0aCgnJy5wYWRTdGFydCg5MCwgJzAnKSk7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBzaWduYXR1cmUgc2xvdCBjaGVja2luZ1xuICovXG5pbnRlcmZhY2UgQ2hlY2tTaWduYXR1cmUge1xuICAoc2lnbmF0dXJlOiBzdHJpbmcsIGFkZHJlc3NIZXg6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGFuIGVtcHR5IHNpZ25hdHVyZSBoYXMgYW4gZW1iZWRkZWQgYWRkcmVzcyAobm9uLXplcm8gYnl0ZXMgYWZ0ZXIgcG9zaXRpb24gOTApXG4gKiBAcGFyYW0gc2lnbmF0dXJlIEhleCBzdHJpbmcgb2YgdGhlIHNpZ25hdHVyZVxuICovXG5mdW5jdGlvbiBoYXNFbWJlZGRlZEFkZHJlc3Moc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFpc0VtcHR5U2lnbmF0dXJlKHNpZ25hdHVyZSkpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY2xlYW5TaWcgPSB1dGlscy5yZW1vdmVIZXhQcmVmaXgoc2lnbmF0dXJlKTtcbiAgaWYgKGNsZWFuU2lnLmxlbmd0aCA8IDEzMCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBlbWJlZGRlZFBhcnQgPSBjbGVhblNpZy5zdWJzdHJpbmcoOTAsIDEzMCk7XG4gIC8vIENoZWNrIGlmIGl0J3Mgbm90IGFsbCB6ZXJvc1xuICByZXR1cm4gZW1iZWRkZWRQYXJ0ICE9PSAnMCcucmVwZWF0KDQwKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmdW5jdGlvbiB0byBjaGVjayBpZiBhIHNpZ25hdHVyZSBzbG90IG1hdGNoZXMgYSBnaXZlbiBhZGRyZXNzLlxuICogSWYgc2lnbmF0dXJlcyBoYXZlIGVtYmVkZGVkIGFkZHJlc3NlcywgaXQgbWF0Y2hlcyBieSBhZGRyZXNzLlxuICogT3RoZXJ3aXNlLCBpdCBqdXN0IGZpbmRzIGVtcHR5IHNsb3RzLlxuICogQHBhcmFtIHNpZ25hdHVyZXMgQXJyYXkgb2Ygc2lnbmF0dXJlIGhleCBzdHJpbmdzXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlU2VsZWN0b3JTaWduYXR1cmUoc2lnbmF0dXJlczogc3RyaW5nW10pOiBDaGVja1NpZ25hdHVyZSB7XG4gIC8vIENoZWNrIGlmIGFueSBlbXB0eSBzaWduYXR1cmUgaGFzIGFuIGVtYmVkZGVkIGFkZHJlc3NcbiAgY29uc3QgaGFzRW1iZWRkZWRBZGRyZXNzZXMgPSBzaWduYXR1cmVzLnNvbWUoKHNpZykgPT4gaXNFbXB0eVNpZ25hdHVyZShzaWcpICYmIGhhc0VtYmVkZGVkQWRkcmVzcyhzaWcpKTtcblxuICBpZiAoaGFzRW1iZWRkZWRBZGRyZXNzZXMpIHtcbiAgICAvLyBMb29rIGZvciBhZGRyZXNzIGVtYmVkZGVkIGluIHRoZSBlbXB0eSBzaWduYXR1cmUgKGFmdGVyIHBvc2l0aW9uIDkwKVxuICAgIHJldHVybiBmdW5jdGlvbiAoc2lnOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFpc0VtcHR5U2lnbmF0dXJlKHNpZykpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2xlYW5TaWcgPSB1dGlscy5yZW1vdmVIZXhQcmVmaXgoc2lnKTtcbiAgICAgICAgY29uc3QgZW1iZWRkZWRBZGRyID0gY2xlYW5TaWcuc3Vic3RyaW5nKDkwLCAxMzApLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBlbWJlZGRlZEFkZHIgPT09IGFkZHJlc3MudG9Mb3dlckNhc2UoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gTG9vayBmb3IgYW55IGVtcHR5IHNsb3QgKG5vIGVtYmVkZGVkIGFkZHJlc3NlcylcbiAgICByZXR1cm4gZnVuY3Rpb24gKHNpZzogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgIHJldHVybiBpc0VtcHR5U2lnbmF0dXJlKHNpZyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX2ZsYXJlVHJhbnNhY3Rpb246IFR4O1xuICBwdWJsaWMgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHVibGljIF9uZXR3b3JrOiBGbGFyZU5ldHdvcms7XG4gIHB1YmxpYyBfbmV0d29ya0lEOiBudW1iZXI7XG4gIHB1YmxpYyBfYXNzZXRJZDogc3RyaW5nO1xuICBwdWJsaWMgX2Jsb2NrY2hhaW5JRDogc3RyaW5nO1xuICBwdWJsaWMgX25vZGVJRDogc3RyaW5nO1xuICBwdWJsaWMgX3N0YXJ0VGltZTogYmlnaW50O1xuICBwdWJsaWMgX2VuZFRpbWU6IGJpZ2ludDtcbiAgcHVibGljIF9zdGFrZUFtb3VudDogYmlnaW50O1xuICBwdWJsaWMgX3RocmVzaG9sZCA9IDI7XG4gIHB1YmxpYyBfbG9ja3RpbWUgPSBCaWdJbnQoMCk7XG4gIHB1YmxpYyBfZnJvbUFkZHJlc3NlczogVWludDhBcnJheVtdID0gW107XG4gIHB1YmxpYyBfdG86IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBwdWJsaWMgX3Jld2FyZEFkZHJlc3NlczogVWludDhBcnJheVtdID0gW107XG4gIHB1YmxpYyBfdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXTsgLy8gRGVmaW5lIHByb3BlciB0eXBlIGJhc2VkIG9uIEZsYXJlJ3MgVVRYTyBzdHJ1Y3R1cmVcbiAgcHVibGljIF9mZWU6IFBhcnRpYWw8VHJhbnNhY3Rpb25GZWU+ID0ge307XG4gIC8vIFN0b3JlIG9yaWdpbmFsIHJhdyBzaWduZWQgYnl0ZXMgdG8gcHJlc2VydmUgZXhhY3QgZm9ybWF0IHdoZW4gcmUtc2VyaWFsaXppbmdcbiAgcHVibGljIF9yYXdTaWduZWRCeXRlczogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fbmV0d29yayA9IGNvaW5Db25maWcubmV0d29yayBhcyBGbGFyZU5ldHdvcms7XG4gICAgLy8gRGVjb2RlIGNiNTgtZW5jb2RlZCBhc3NldCBJRCB0byBoZXggZm9yIHVzZSBpbiB0cmFuc2FjdGlvbiBzZXJpYWxpemF0aW9uXG4gICAgdGhpcy5fYXNzZXRJZCA9IHV0aWxzLmNiNThEZWNvZGUodGhpcy5fbmV0d29yay5hc3NldElkKS50b1N0cmluZygnaGV4Jyk7XG4gICAgdGhpcy5fYmxvY2tjaGFpbklEID0gdGhpcy5fbmV0d29yay5ibG9ja2NoYWluSUQ7XG4gICAgdGhpcy5fbmV0d29ya0lEID0gdGhpcy5fbmV0d29yay5uZXR3b3JrSUQ7XG4gIH1cblxuICBnZXQgc2lnbmF0dXJlKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXRoaXMuaGFzQ3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3JlZGVudGlhbHNbMF0uZ2V0U2lnbmF0dXJlcygpLmZpbHRlcigocykgPT4gIWlzRW1wdHlTaWduYXR1cmUocykpO1xuICB9XG5cbiAgZ2V0IGNyZWRlbnRpYWxzKCk6IENyZWRlbnRpYWxbXSB7XG4gICAgcmV0dXJuICh0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHgpPy5jcmVkZW50aWFscztcbiAgfVxuXG4gIGdldCBoYXNDcmVkZW50aWFscygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFscyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY3JlZGVudGlhbHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIuZ2V0UHJpdmF0ZUtleSgpIGFzIFVpbnQ4QXJyYXk7XG4gICAgaWYgKCFwcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9mbGFyZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2VtcHR5IHRyYW5zYWN0aW9uIHRvIHNpZ24nKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmhhc0NyZWRlbnRpYWxzKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2VtcHR5IGNyZWRlbnRpYWxzIHRvIHNpZ24nKTtcbiAgICB9XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gdGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBFVk1VbnNpZ25lZFR4O1xuICAgIGNvbnN0IHVuc2lnbmVkQnl0ZXMgPSB1bnNpZ25lZFR4LnRvQnl0ZXMoKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBzZWNwMjU2azEuZ2V0UHVibGljS2V5KHBydik7XG5cbiAgICAvLyBEZXJpdmUgYm90aCBFVk0gYW5kIFAtY2hhaW4gYWRkcmVzc2VzIGZyb20gdGhlIHB1YmxpYyBrZXlcbiAgICBjb25zdCBldm1BZGRyZXNzSGV4ID0gbmV3IEFkZHJlc3Moc2VjcDI1NmsxLnB1YmxpY0tleVRvRXRoQWRkcmVzcyhwdWJsaWNLZXkpKS50b0hleCgpO1xuXG4gICAgLy8gUC1jaGFpbiBhZGRyZXNzIGRlcml2YXRpb246IHJpcGVtZDE2MChzaGEyNTYocHVibGljS2V5KSlcbiAgICBjb25zdCBzaGEyNTZIYXNoID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEJ1ZmZlci5mcm9tKHB1YmxpY0tleSkpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHBDaGFpbkFkZHJlc3NCdWZmZXIgPSBjcmVhdGVIYXNoKCdyaXBlbWQxNjAnKS51cGRhdGUoc2hhMjU2SGFzaCkuZGlnZXN0KCk7XG4gICAgY29uc3QgcENoYWluQWRkcmVzc0hleCA9IHBDaGFpbkFkZHJlc3NCdWZmZXIudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgY29uc3QgYWRkcmVzc01hcCA9IHVuc2lnbmVkVHguZ2V0QWRkcmVzc2VzKCk7XG5cbiAgICAvLyBDaGVjayBmb3IgYm90aCBFVk0gYW5kIFAtY2hhaW4gYWRkcmVzcyBmb3JtYXRzXG4gICAgY29uc3QgaGFzTWF0Y2hpbmdBZGRyZXNzID0gYWRkcmVzc01hcC5zb21lKChhZGRyKSA9PiB7XG4gICAgICBjb25zdCBhZGRySGV4ID0gQnVmZmVyLmZyb20oYWRkcikudG9TdHJpbmcoJ2hleCcpLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBhZGRySGV4ID09PSB1dGlscy5yZW1vdmVIZXhQcmVmaXgoZXZtQWRkcmVzc0hleCkudG9Mb3dlckNhc2UoKSB8fCBhZGRySGV4ID09PSBwQ2hhaW5BZGRyZXNzSGV4LnRvTG93ZXJDYXNlKClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBzZWNwMjU2azEuc2lnbih1bnNpZ25lZEJ5dGVzLCBwcnYpO1xuICAgIGxldCBzaWduYXR1cmVTZXQgPSBmYWxzZTtcblxuICAgIGlmIChoYXNNYXRjaGluZ0FkZHJlc3MpIHtcbiAgICAgIC8vIFVzZSBhZGRyZXNzLWJhc2VkIHNsb3QgbWF0Y2hpbmcgKGxpa2UgQVZBWC1QKVxuICAgICAgbGV0IGNoZWNrU2lnbjogQ2hlY2tTaWduYXR1cmUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGZvciAoY29uc3QgY3JlZGVudGlhbCBvZiB1bnNpZ25lZFR4LmNyZWRlbnRpYWxzKSB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSBjcmVkZW50aWFsLmdldFNpZ25hdHVyZXMoKTtcbiAgICAgICAgaWYgKGNoZWNrU2lnbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY2hlY2tTaWduID0gZ2VuZXJhdGVTZWxlY3RvclNpZ25hdHVyZShzaWduYXR1cmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbmQgdGhlIHNsb3QgdGhhdCBtYXRjaGVzIHRoaXMgYWRkcmVzc1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBzaWcgPSBzaWduYXR1cmVzW2ldO1xuICAgICAgICAgIC8vIFRyeSBtYXRjaGluZyB3aXRoIFAtY2hhaW4gYWRkcmVzcyBmaXJzdCwgdGhlbiBFVk0gYWRkcmVzc1xuICAgICAgICAgIGlmIChjaGVja1NpZ24oc2lnLCBwQ2hhaW5BZGRyZXNzSGV4KSB8fCBjaGVja1NpZ24oc2lnLCB1dGlscy5yZW1vdmVIZXhQcmVmaXgoZXZtQWRkcmVzc0hleCkudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGNyZWRlbnRpYWwuc2V0U2lnbmF0dXJlKGksIHNpZ25hdHVyZSk7XG4gICAgICAgICAgICBzaWduYXR1cmVTZXQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gQ2xlYXIgcmF3IHNpZ25lZCBieXRlcyBzaW5jZSB3ZSd2ZSBtb2RpZmllZCB0aGUgdHJhbnNhY3Rpb25cbiAgICAgICAgICAgIHRoaXMuX3Jhd1NpZ25lZEJ5dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpZ25hdHVyZVNldCkgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IElmIGFkZHJlc3MtYmFzZWQgbWF0Y2hpbmcgZGlkbid0IHdvcmsgKGUuZy4sIEltcG9ydEluQyBsb2FkZWQgZnJvbSB1bnNpZ25lZCB0eFxuICAgIC8vIHdoZXJlIFAtY2hhaW4gYWRkcmVzc2VzIGFyZW4ndCBpbiBhZGRyZXNzTWFwcyksIHRyeSB0byBzaWduIHRoZSBmaXJzdCBlbXB0eSBzbG90LlxuICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIGVtcHR5IGNyZWRlbnRpYWxzIGJ1dCBzaWduZXIgYWRkcmVzcyBpc24ndCBpbiB0aGUgbWFwLlxuICAgIGlmICghc2lnbmF0dXJlU2V0KSB7XG4gICAgICBmb3IgKGNvbnN0IGNyZWRlbnRpYWwgb2YgdW5zaWduZWRUeC5jcmVkZW50aWFscykge1xuICAgICAgICBjb25zdCBzaWduYXR1cmVzID0gY3JlZGVudGlhbC5nZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpc0VtcHR5U2lnbmF0dXJlKHNpZ25hdHVyZXNbaV0pKSB7XG4gICAgICAgICAgICBjcmVkZW50aWFsLnNldFNpZ25hdHVyZShpLCBzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3Jhd1NpZ25lZEJ5dGVzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzaWduYXR1cmVTZXQpIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc2lnbmF0dXJlU2V0KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdObyBtYXRjaGluZyBzaWduYXR1cmUgc2xvdCBmb3VuZCBmb3IgdGhpcyBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9mbGFyZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgLy8gSWYgd2UgaGF2ZSB0aGUgb3JpZ2luYWwgcmF3IHNpZ25lZCBieXRlcywgdXNlIHRoZW0gZGlyZWN0bHkgdG8gcHJlc2VydmUgZXhhY3QgZm9ybWF0XG4gICAgaWYgKHRoaXMuX3Jhd1NpZ25lZEJ5dGVzKSB7XG4gICAgICByZXR1cm4gRmxhcmVVdGlscy5idWZmZXJUb0hleCh0aGlzLl9yYXdTaWduZWRCeXRlcyk7XG4gICAgfVxuICAgIGNvbnN0IHVuc2lnbmVkVHggPSB0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHg7XG4gICAgLy8gRm9yIHNpZ25lZCB0cmFuc2FjdGlvbnMsIHJldHVybiB0aGUgZnVsbCBzaWduZWQgdHggd2l0aCBjcmVkZW50aWFsc1xuICAgIC8vIENoZWNrIHNpZ25hdHVyZS5sZW5ndGggZm9yIHJvYnVzdG5lc3NcbiAgICBpZiAodGhpcy5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIEZsYXJlVXRpbHMuYnVmZmVyVG9IZXgodW5zaWduZWRUeC5nZXRTaWduZWRUeCgpLnRvQnl0ZXMoKSk7XG4gICAgfVxuICAgIC8vIEZvciB1bnNpZ25lZCB0cmFuc2FjdGlvbnMsIHJldHVybiBqdXN0IHRoZSB0cmFuc2FjdGlvbiBieXRlc1xuICAgIHJldHVybiBGbGFyZVV0aWxzLmJ1ZmZlclRvSGV4KHVuc2lnbmVkVHgudG9CeXRlcygpKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fZmxhcmVUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGlucHV0czogdGhpcy5pbnB1dHMsXG4gICAgICBmcm9tQWRkcmVzc2VzOiB0aGlzLmZyb21BZGRyZXNzZXMsXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMuX3RocmVzaG9sZCxcbiAgICAgIGxvY2t0aW1lOiB0aGlzLl9sb2NrdGltZS50b1N0cmluZygpLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgc2lnbmF0dXJlczogdGhpcy5zaWduYXR1cmUsXG4gICAgICBvdXRwdXRzOiB0aGlzLm91dHB1dHMsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiB0aGlzLmNoYW5nZU91dHB1dHMsXG4gICAgICBzb3VyY2VDaGFpbjogdGhpcy5zb3VyY2VDaGFpbixcbiAgICAgIGRlc3RpbmF0aW9uQ2hhaW46IHRoaXMuZGVzdGluYXRpb25DaGFpbixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc291cmNlIGNoYWluIGlkIG9yIHVuZGVmaW5lZCBpZiBpdCdzIG5vdCBhIGNyb3NzIGNoYWluIHRyYW5zZmVyLlxuICAgKi9cbiAgZ2V0IHNvdXJjZUNoYWluKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgdHggPSAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KS5nZXRUeCgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkltcG9ydDpcbiAgICAgICAgaWYgKHRoaXMuaXNUcmFuc2FjdGlvbkZvckNDaGFpbikge1xuICAgICAgICAgIC8vIEMtY2hhaW4gSW1wb3J0OiBzb3VyY2UgaXMgdGhlIGNoYWluIHdlJ3JlIGltcG9ydGluZyBGUk9NIChQLWNoYWluKVxuICAgICAgICAgIGNvbnN0IGltcG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrY2hhaW5JRHRvQWxpYXMoQnVmZmVyLmZyb20oaW1wb3J0VHguc291cmNlQ2hhaW4udG9CeXRlcygpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUC1jaGFpbiBJbXBvcnQ6IHNvdXJjZSBpcyB0aGUgY2hhaW4gd2UncmUgaW1wb3J0aW5nIEZST00gKEMtY2hhaW4pXG4gICAgICAgICAgY29uc3QgcHZtSW1wb3J0VHggPSB0eCBhcyBwdm1TZXJpYWwuSW1wb3J0VHg7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tjaGFpbklEdG9BbGlhcyhCdWZmZXIuZnJvbShwdm1JbXBvcnRUeC5zb3VyY2VDaGFpbi50b0J5dGVzKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICh0aGlzLmlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4pIHtcbiAgICAgICAgICAvLyBDLWNoYWluIEV4cG9ydDogc291cmNlIGlzIEMtY2hhaW4gKHRoZSBibG9ja2NoYWluIElEKVxuICAgICAgICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrY2hhaW5JRHRvQWxpYXMoQnVmZmVyLmZyb20oZXhwb3J0VHguYmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBzb3VyY2UgaXMgUC1jaGFpbiAodGhlIGJsb2NrY2hhaW4gSUQgZnJvbSBiYXNlVHgpXG4gICAgICAgICAgY29uc3QgcHZtRXhwb3J0VHggPSB0eCBhcyBwdm1TZXJpYWwuRXhwb3J0VHg7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tjaGFpbklEdG9BbGlhcyhCdWZmZXIuZnJvbShwdm1FeHBvcnRUeC5iYXNlVHguQmxvY2tjaGFpbklkLnRvQnl0ZXMoKSkpO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVzdGluYXRpb24gY2hhaW4gaWQgb3IgdW5kZWZpbmVkIGlmIGl0J3Mgbm90IGEgY3Jvc3MgY2hhaW4gdHJhbnNmZXIuXG4gICAqL1xuICBnZXQgZGVzdGluYXRpb25DaGFpbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHR4ID0gKHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeCkuZ2V0VHgoKTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5JbXBvcnQ6XG4gICAgICAgIGlmICh0aGlzLmlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4pIHtcbiAgICAgICAgICAvLyBDLWNoYWluIEltcG9ydDogZGVzdGluYXRpb24gaXMgQy1jaGFpbiAodGhlIGJsb2NrY2hhaW4gSUQpXG4gICAgICAgICAgY29uc3QgaW1wb3J0VHggPSB0eCBhcyBldm1TZXJpYWwuSW1wb3J0VHg7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2tjaGFpbklEdG9BbGlhcyhCdWZmZXIuZnJvbShpbXBvcnRUeC5ibG9ja2NoYWluSWQudG9CeXRlcygpKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUC1jaGFpbiBJbXBvcnQ6IGRlc3RpbmF0aW9uIGlzIFAtY2hhaW4gKHRoZSBibG9ja2NoYWluIElEIGZyb20gYmFzZVR4KVxuICAgICAgICAgIGNvbnN0IHB2bUltcG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrY2hhaW5JRHRvQWxpYXMoQnVmZmVyLmZyb20ocHZtSW1wb3J0VHguYmFzZVR4LkJsb2NrY2hhaW5JZC50b0J5dGVzKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICh0aGlzLmlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4pIHtcbiAgICAgICAgICAvLyBDLWNoYWluIEV4cG9ydDogZGVzdGluYXRpb24gaXMgUC1jaGFpbiAodGhlIGRlc3RpbmF0aW9uIGNoYWluKVxuICAgICAgICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrY2hhaW5JRHRvQWxpYXMoQnVmZmVyLmZyb20oZXhwb3J0VHguZGVzdGluYXRpb25DaGFpbi50b0J5dGVzKCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQLWNoYWluIEV4cG9ydDogZGVzdGluYXRpb24gaXMgQy1jaGFpbiAodGhlIGRlc3RpbmF0aW9uIGNoYWluKVxuICAgICAgICAgIGNvbnN0IHB2bUV4cG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrY2hhaW5JRHRvQWxpYXMoQnVmZmVyLmZyb20ocHZtRXhwb3J0VHguZGVzdGluYXRpb24udG9CeXRlcygpKSk7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIGJsb2NrY2hhaW5JZCBidWZmZXIgdG8gc3RyaW5nIGFuZCByZXR1cm4gUCBvciBDIGFsaWFzIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRob3NlIGNoYWlucy5cbiAgICogQHBhcmFtIHtCdWZmZXJ9IGJsb2NrY2hhaW5JREJ1ZmZlclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IGJsb2NrY2hhaW5JRCBvciBhbGlhcyBpZiBleGlzdHMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJsb2NrY2hhaW5JRHRvQWxpYXMoYmxvY2tjaGFpbklEQnVmZmVyOiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJsb2NrY2hhaW5JZCA9IHV0aWxzLmNiNThFbmNvZGUoYmxvY2tjaGFpbklEQnVmZmVyKTtcbiAgICBpZiAoYmxvY2tjaGFpbklkID09PSB0aGlzLl9uZXR3b3JrLmNDaGFpbkJsb2NrY2hhaW5JRCkge1xuICAgICAgcmV0dXJuICdDJztcbiAgICB9XG4gICAgaWYgKGJsb2NrY2hhaW5JZCA9PT0gdGhpcy5fbmV0d29yay5ibG9ja2NoYWluSUQpIHtcbiAgICAgIHJldHVybiAnUCc7XG4gICAgfVxuICAgIHJldHVybiBibG9ja2NoYWluSWQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0eDogVHgpOiB2b2lkIHtcbiAgICB0aGlzLl9mbGFyZVRyYW5zYWN0aW9uID0gdHggYXMgVW5zaWduZWRUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgRmxhcmUgdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgVGhlIEZsYXJlIHRyYW5zYWN0aW9uIG9iamVjdFxuICAgKi9cbiAgZ2V0RmxhcmVUcmFuc2FjdGlvbigpOiBUeCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICBpZiAoIVtUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JdLmluY2x1ZGVzKHRyYW5zYWN0aW9uVHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVHJhbnNhY3Rpb24gdHlwZSAke3RyYW5zYWN0aW9uVHlwZX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgIH1cbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiB1dGlscy5zaGEyNTYoKHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeCkudG9CeXRlcygpKTtcbiAgfVxuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJ1ZmZlckFycmF5ID0gdXRpbHMuc2hhMjU2KCh0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHgpLnRvQnl0ZXMoKSk7XG4gICAgcmV0dXJuIHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oYnVmZmVyQXJyYXkpKTtcbiAgfVxuXG4gIGdldCBmcm9tQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZnJvbUFkZHJlc3Nlcy5tYXAoKGEpID0+IEZsYXJlVXRpbHMuZm9ybWF0KHRoaXMuX25ldHdvcmsuYWxpYXMsIHRoaXMuX25ldHdvcmsuaHJwLCBhKSk7XG4gIH1cblxuICBnZXQgcmV3YXJkQWRkcmVzc2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcmV3YXJkQWRkcmVzc2VzLm1hcCgoYSkgPT4gRmxhcmVVdGlscy5mb3JtYXQodGhpcy5fbmV0d29yay5hbGlhcywgdGhpcy5fbmV0d29yay5ocnAsIGEpKTtcbiAgfVxuXG4gIGdldCBmZWUoKTogVHJhbnNhY3Rpb25GZWUge1xuICAgIHJldHVybiB7IGZlZTogJzAnLCAuLi50aGlzLl9mZWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0aGlzIHRyYW5zYWN0aW9uIGlzIGZvciBDLWNoYWluIChFVk0gdHJhbnNhY3Rpb25zKVxuICAgKi9cbiAgZ2V0IGlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHggPSAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KS5nZXRUeCgpO1xuICAgIGNvbnN0IHR4VHlwZSA9ICh0eCBhcyB7IF90eXBlPzogc3RyaW5nIH0pLl90eXBlO1xuICAgIHJldHVybiB0eFR5cGUgPT09IEZsYXJlVHJhbnNhY3Rpb25UeXBlLkV2bUV4cG9ydFR4IHx8IHR4VHlwZSA9PT0gRmxhcmVUcmFuc2FjdGlvblR5cGUuRXZtSW1wb3J0VHg7XG4gIH1cblxuICBnZXQgb3V0cHV0cygpOiBFbnRyeVtdIHtcbiAgICBjb25zdCB0eCA9ICh0aGlzLl9mbGFyZVRyYW5zYWN0aW9uIGFzIFVuc2lnbmVkVHgpLmdldFR4KCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuSW1wb3J0OlxuICAgICAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICAgICAgLy8gQy1jaGFpbiBJbXBvcnQ6IG91dHB1dCBpcyB0byBhIEMtY2hhaW4gYWRkcmVzc1xuICAgICAgICAgIGNvbnN0IGltcG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBpbXBvcnRUeC5PdXRzLm1hcCgob3V0KSA9PiAoe1xuICAgICAgICAgICAgYWRkcmVzczogJzB4JyArIEJ1ZmZlci5mcm9tKG91dC5hZGRyZXNzLnRvQnl0ZXMoKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgdmFsdWU6IG91dC5hbW91bnQudmFsdWUoKS50b1N0cmluZygpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBQLWNoYWluIEltcG9ydDogb3V0cHV0cyBhcmUgdGhlIGJhc2VUeC5vdXRwdXRzIChkZXN0aW5hdGlvbiBvbiBQLWNoYWluKVxuICAgICAgICAgIGNvbnN0IHB2bUltcG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1JbXBvcnRUeC5iYXNlVHgub3V0cHV0cy5tYXAodXRpbHMubWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRXhwb3J0OlxuICAgICAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluKSB7XG4gICAgICAgICAgLy8gQy1jaGFpbiBFeHBvcnQ6IGV4cG9ydGVkIG91dHB1dHMgZ28gdG8gUC1jaGFpblxuICAgICAgICAgIGNvbnN0IGV4cG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiBleHBvcnRUeC5leHBvcnRlZE91dHB1dHMubWFwKHV0aWxzLm1hcE91dHB1dFRvRW50cnkodGhpcy5fbmV0d29yaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBleHBvcnRlZCBvdXRwdXRzIGdvIHRvIEMtY2hhaW5cbiAgICAgICAgICBjb25zdCBwdm1FeHBvcnRUeCA9IHR4IGFzIHB2bVNlcmlhbC5FeHBvcnRUeDtcbiAgICAgICAgICByZXR1cm4gcHZtRXhwb3J0VHgub3V0cy5tYXAodXRpbHMubWFwT3V0cHV0VG9FbnRyeSh0aGlzLl9uZXR3b3JrKSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogKHR4IGFzIHB2bVNlcmlhbC5BZGRQZXJtaXNzaW9ubGVzc1ZhbGlkYXRvclR4KS5zdWJuZXRWYWxpZGF0b3IudmFsaWRhdG9yLm5vZGVJZC50b1N0cmluZygpLFxuICAgICAgICAgICAgdmFsdWU6ICh0eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeCkuc3VibmV0VmFsaWRhdG9yLnZhbGlkYXRvci53ZWlnaHQudG9KU09OKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjaGFuZ2VPdXRwdXRzKCk6IEVudHJ5W10ge1xuICAgIGNvbnN0IHR4ID0gKHRoaXMuX2ZsYXJlVHJhbnNhY3Rpb24gYXMgVW5zaWduZWRUeCkuZ2V0VHgoKTtcblxuICAgIC8vIEMtY2hhaW4gdHJhbnNhY3Rpb25zIGFuZCBJbXBvcnQgdHJhbnNhY3Rpb25zIGRvbid0IGhhdmUgY2hhbmdlIG91dHB1dHNcbiAgICBpZiAodGhpcy5pc1RyYW5zYWN0aW9uRm9yQ0NoYWluIHx8IHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkltcG9ydCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBjaGFuZ2Ugb3V0cHV0cyBhcmUgaW4gYmFzZVR4Lm91dHB1dHNcbiAgICAgICAgcmV0dXJuICh0eCBhcyBwdm1TZXJpYWwuRXhwb3J0VHgpLmJhc2VUeC5vdXRwdXRzLm1hcCh1dGlscy5tYXBPdXRwdXRUb0VudHJ5KHRoaXMuX25ldHdvcmspKTtcblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICAgIHJldHVybiAodHggYXMgcHZtU2VyaWFsLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yVHgpLmJhc2VUeC5vdXRwdXRzLm1hcCh1dGlscy5tYXBPdXRwdXRUb0VudHJ5KHRoaXMuX25ldHdvcmspKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpbnB1dHMoKTogRW50cnlbXSB7XG4gICAgY29uc3QgdHggPSAodGhpcy5fZmxhcmVUcmFuc2FjdGlvbiBhcyBVbnNpZ25lZFR4KS5nZXRUeCgpO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkltcG9ydDpcbiAgICAgICAgaWYgKHRoaXMuaXNUcmFuc2FjdGlvbkZvckNDaGFpbikge1xuICAgICAgICAgIC8vIEMtY2hhaW4gSW1wb3J0OiBpbnB1dHMgY29tZSBmcm9tIFAtY2hhaW4gKGltcG9ydGVkSW5wdXRzKVxuICAgICAgICAgIGNvbnN0IGltcG9ydFR4ID0gdHggYXMgZXZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBpbXBvcnRUeC5pbXBvcnRlZElucHV0cy5tYXAoKGlucHV0KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oaW5wdXQudXR4b0lELnR4SUQudG9CeXRlcygpKSkgKyAnOicgKyBpbnB1dC51dHhvSUQub3V0cHV0SWR4LnZhbHVlKCksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmZyb21BZGRyZXNzZXMuc29ydCgpLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpLFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gSW1wb3J0OiBpbnB1dHMgYXJlIGlucyAoaW1wb3J0ZWQgZnJvbSBDLWNoYWluKVxuICAgICAgICAgIGNvbnN0IHB2bUltcG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkltcG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1JbXBvcnRUeC5pbnMubWFwKChpbnB1dCkgPT4gKHtcbiAgICAgICAgICAgIGlkOiB1dGlscy5jYjU4RW5jb2RlKEJ1ZmZlci5mcm9tKGlucHV0LnV0eG9JRC50eElELnRvQnl0ZXMoKSkpICsgJzonICsgaW5wdXQudXR4b0lELm91dHB1dElkeC52YWx1ZSgpLFxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5mcm9tQWRkcmVzc2VzLnNvcnQoKS5qb2luKEFERFJFU1NfU0VQQVJBVE9SKSxcbiAgICAgICAgICAgIHZhbHVlOiBpbnB1dC5hbW91bnQoKS50b1N0cmluZygpLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FeHBvcnQ6XG4gICAgICAgIGlmICh0aGlzLmlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW4pIHtcbiAgICAgICAgICAvLyBDLWNoYWluIEV4cG9ydDogaW5wdXRzIGFyZSBmcm9tIEMtY2hhaW4gKEVWTSBpbnB1dHMpXG4gICAgICAgICAgY29uc3QgZXhwb3J0VHggPSB0eCBhcyBldm1TZXJpYWwuRXhwb3J0VHg7XG4gICAgICAgICAgcmV0dXJuIGV4cG9ydFR4Lmlucy5tYXAoKGV2bUlucHV0KSA9PiAoe1xuICAgICAgICAgICAgYWRkcmVzczogJzB4JyArIEJ1ZmZlci5mcm9tKGV2bUlucHV0LmFkZHJlc3MudG9CeXRlcygpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICB2YWx1ZTogZXZtSW5wdXQuYW1vdW50LnZhbHVlKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG5vbmNlOiBOdW1iZXIoZXZtSW5wdXQubm9uY2UudmFsdWUoKSksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFAtY2hhaW4gRXhwb3J0OiBpbnB1dHMgYXJlIGZyb20gYmFzZVR4LmlucHV0c1xuICAgICAgICAgIGNvbnN0IHB2bUV4cG9ydFR4ID0gdHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4O1xuICAgICAgICAgIHJldHVybiBwdm1FeHBvcnRUeC5iYXNlVHguaW5wdXRzLm1hcCgoaW5wdXQpID0+ICh7XG4gICAgICAgICAgICBpZDogdXRpbHMuY2I1OEVuY29kZShCdWZmZXIuZnJvbShpbnB1dC51dHhvSUQudHhJRC50b0J5dGVzKCkpKSArICc6JyArIGlucHV0LnV0eG9JRC5vdXRwdXRJZHgudmFsdWUoKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHRoaXMuZnJvbUFkZHJlc3Nlcy5zb3J0KCkuam9pbihBRERSRVNTX1NFUEFSQVRPUiksXG4gICAgICAgICAgICB2YWx1ZTogaW5wdXQuYW1vdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3I6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zdCBiYXNlVHggPSB0eCBhcyBwdm1TZXJpYWwuQWRkUGVybWlzc2lvbmxlc3NWYWxpZGF0b3JUeDtcbiAgICAgICAgaWYgKGJhc2VUeC5iYXNlVHg/LmlucHV0cykge1xuICAgICAgICAgIHJldHVybiBiYXNlVHguYmFzZVR4LmlucHV0cy5tYXAoKGlucHV0KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHV0aWxzLmNiNThFbmNvZGUoQnVmZmVyLmZyb20oaW5wdXQudXR4b0lELnR4SUQudG9CeXRlcygpKSkgKyAnOicgKyBpbnB1dC51dHhvSUQub3V0cHV0SWR4LnZhbHVlKCksXG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLmZyb21BZGRyZXNzZXMuc29ydCgpLmpvaW4oQUREUkVTU19TRVBBUkFUT1IpLFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmFtb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ2lucHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddO1xuXG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gdHhKc29uLm91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwICsgQmlnSW50KG4udmFsdWUpLCBCaWdJbnQoMCkpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgY2hhbmdlQW1vdW50ID0gdHhKc29uLmNoYW5nZU91dHB1dHMucmVkdWNlKChwLCBuKSA9PiBwICsgQmlnSW50KG4udmFsdWUpLCBCaWdJbnQoMCkpLnRvU3RyaW5nKCk7XG5cbiAgICBsZXQgcmV3YXJkQWRkcmVzc2VzO1xuICAgIGlmIChbVHJhbnNhY3Rpb25UeXBlLkFkZFBlcm1pc3Npb25sZXNzVmFsaWRhdG9yXS5pbmNsdWRlcyh0eEpzb24udHlwZSkpIHtcbiAgICAgIHJld2FyZEFkZHJlc3NlcyA9IHRoaXMucmV3YXJkQWRkcmVzc2VzO1xuICAgICAgZGlzcGxheU9yZGVyLnNwbGljZSg2LCAwLCAncmV3YXJkQWRkcmVzc2VzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIGlkOiB0eEpzb24uaWQsXG4gICAgICBpbnB1dHM6IHR4SnNvbi5pbnB1dHMsXG4gICAgICBvdXRwdXRzOiB0eEpzb24ub3V0cHV0cy5tYXAoKG8pID0+ICh7IGFkZHJlc3M6IG8uYWRkcmVzcywgYW1vdW50OiBvLnZhbHVlIH0pKSxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IHR4SnNvbi5jaGFuZ2VPdXRwdXRzLm1hcCgobykgPT4gKHsgYWRkcmVzczogby5hZGRyZXNzLCBhbW91bnQ6IG8udmFsdWUgfSkpLFxuICAgICAgY2hhbmdlQW1vdW50LFxuICAgICAgcmV3YXJkQWRkcmVzc2VzLFxuICAgICAgZmVlOiB0aGlzLmZlZSxcbiAgICAgIHR5cGU6IHR4SnNvbi50eXBlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -6,15 +6,7 @@ import { ImportInPTxBuilder } from './ImportInPTxBuilder';
|
|
|
6
6
|
import { ExportInCTxBuilder } from './ExportInCTxBuilder';
|
|
7
7
|
import { ImportInCTxBuilder } from './ImportInCTxBuilder';
|
|
8
8
|
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
9
|
-
protected recoverSigner: boolean;
|
|
10
9
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
11
|
-
/**
|
|
12
|
-
* Enables recovery mode for transaction building.
|
|
13
|
-
* When enabled, uses backup key (index 2) instead of user key (index 0) for signing.
|
|
14
|
-
* @param recoverSigner - Whether to use recovery signing (default: true)
|
|
15
|
-
* @returns this factory for chaining
|
|
16
|
-
*/
|
|
17
|
-
recoverMode(recoverSigner?: boolean): this;
|
|
18
10
|
/**
|
|
19
11
|
* Extract credentials from remaining bytes after transaction using FlareJS codec.
|
|
20
12
|
* This is the proper way to parse credentials - using the codec's UnpackPrefix method.
|
|
@@ -30,12 +22,6 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
|
|
|
30
22
|
* @returns Parsed transaction and credentials, or null if parsing fails
|
|
31
23
|
*/
|
|
32
24
|
private parseWithVM;
|
|
33
|
-
/**
|
|
34
|
-
* Apply recovery mode setting to a builder if enabled on the factory.
|
|
35
|
-
* @param builder The transaction builder to configure
|
|
36
|
-
* @returns The configured builder
|
|
37
|
-
*/
|
|
38
|
-
private applyRecoverMode;
|
|
39
25
|
/**
|
|
40
26
|
* Create the appropriate transaction builder based on transaction type.
|
|
41
27
|
* @param tx The parsed transaction
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAgB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,qBAAa,yBAA0B,SAAQ,6BAA6B;
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAgB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ1D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAwBnC;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAgCrB,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAkBrC,kBAAkB;IAClB,kBAAkB,IAAI,kBAAkB;IAIxC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC;;OAEG;IACH,mBAAmB,IAAI,kBAAkB;IAIzC,kBAAkB;IAClB,8BAA8B,IAAI,kBAAkB;CAGrD"}
|
|
@@ -14,17 +14,6 @@ const utils_1 = __importDefault(require("./utils"));
|
|
|
14
14
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
15
15
|
constructor(_coinConfig) {
|
|
16
16
|
super(_coinConfig);
|
|
17
|
-
this.recoverSigner = false;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Enables recovery mode for transaction building.
|
|
21
|
-
* When enabled, uses backup key (index 2) instead of user key (index 0) for signing.
|
|
22
|
-
* @param recoverSigner - Whether to use recovery signing (default: true)
|
|
23
|
-
* @returns this factory for chaining
|
|
24
|
-
*/
|
|
25
|
-
recoverMode(recoverSigner = true) {
|
|
26
|
-
this.recoverSigner = recoverSigner;
|
|
27
|
-
return this;
|
|
28
17
|
}
|
|
29
18
|
/**
|
|
30
19
|
* Extract credentials from remaining bytes after transaction using FlareJS codec.
|
|
@@ -72,17 +61,6 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
72
61
|
return null;
|
|
73
62
|
}
|
|
74
63
|
}
|
|
75
|
-
/**
|
|
76
|
-
* Apply recovery mode setting to a builder if enabled on the factory.
|
|
77
|
-
* @param builder The transaction builder to configure
|
|
78
|
-
* @returns The configured builder
|
|
79
|
-
*/
|
|
80
|
-
applyRecoverMode(builder) {
|
|
81
|
-
if (this.recoverSigner) {
|
|
82
|
-
builder.recoverMode(true);
|
|
83
|
-
}
|
|
84
|
-
return builder;
|
|
85
|
-
}
|
|
86
64
|
/**
|
|
87
65
|
* Create the appropriate transaction builder based on transaction type.
|
|
88
66
|
* @param tx The parsed transaction
|
|
@@ -96,24 +74,24 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
96
74
|
if (ExportInCTxBuilder_1.ExportInCTxBuilder.verifyTxType(tx._type)) {
|
|
97
75
|
const builder = this.getExportInCBuilder();
|
|
98
76
|
builder.initBuilder(tx, rawBuffer, credentials);
|
|
99
|
-
return
|
|
77
|
+
return builder;
|
|
100
78
|
}
|
|
101
79
|
if (ImportInCTxBuilder_1.ImportInCTxBuilder.verifyTxType(tx._type)) {
|
|
102
80
|
const builder = this.getImportInCBuilder();
|
|
103
81
|
builder.initBuilder(tx, rawBuffer, credentials);
|
|
104
|
-
return
|
|
82
|
+
return builder;
|
|
105
83
|
}
|
|
106
84
|
}
|
|
107
85
|
else {
|
|
108
86
|
if (ImportInPTxBuilder_1.ImportInPTxBuilder.verifyTxType(tx._type)) {
|
|
109
87
|
const builder = this.getImportInPBuilder();
|
|
110
88
|
builder.initBuilder(tx, rawBuffer, credentials);
|
|
111
|
-
return
|
|
89
|
+
return builder;
|
|
112
90
|
}
|
|
113
91
|
if (ExportInPTxBuilder_1.ExportInPTxBuilder.verifyTxType(tx._type)) {
|
|
114
92
|
const builder = this.getExportInPBuilder();
|
|
115
93
|
builder.initBuilder(tx, rawBuffer, credentials);
|
|
116
|
-
return
|
|
94
|
+
return builder;
|
|
117
95
|
}
|
|
118
96
|
}
|
|
119
97
|
throw new sdk_core_1.NotSupported('Transaction type not supported');
|
|
@@ -167,4 +145,4 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
|
|
|
167
145
|
}
|
|
168
146
|
}
|
|
169
147
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsbURBQW1GO0FBR25GLDZEQUEwRDtBQUMxRCw2REFBMEQ7QUFDMUQsNkRBQTBEO0FBQzFELDZEQUEwRDtBQUUxRCxvREFBNEI7QUFNNUIsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFHMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztJQUloQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUk7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssMkJBQTJCLENBQUMsZUFBMkIsRUFBRSxLQUFZO1FBQzNFLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7UUFDckMsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsZ0VBQWdFO1FBQ2hFLElBQUksY0FBYyxHQUFlLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTNCLEdBQUcsQ0FBQztZQUNGLElBQUksQ0FBQztnQkFDSCxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQWEsY0FBYyxDQUFDLENBQUM7Z0JBQzFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzdCLGNB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a0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSx1Q0FBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLHVCQUFZLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0Y7QUFyTEQsOERBcUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbHMgYXMgRmxhcmVVdGlscywgZXZtU2VyaWFsLCBwdm1TZXJpYWwsIENyZWRlbnRpYWwgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIE5vdFN1cHBvcnRlZCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEV4cG9ydEluUFR4QnVpbGRlciB9IGZyb20gJy4vRXhwb3J0SW5QVHhCdWlsZGVyJztcbmltcG9ydCB7IEltcG9ydEluUFR4QnVpbGRlciB9IGZyb20gJy4vSW1wb3J0SW5QVHhCdWlsZGVyJztcbmltcG9ydCB7IEV4cG9ydEluQ1R4QnVpbGRlciB9IGZyb20gJy4vRXhwb3J0SW5DVHhCdWlsZGVyJztcbmltcG9ydCB7IEltcG9ydEluQ1R4QnVpbGRlciB9IGZyb20gJy4vSW1wb3J0SW5DVHhCdWlsZGVyJztcbmltcG9ydCB7IFNlcmlhbGl6ZWRUeCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5pbnRlcmZhY2UgQ29kZWMge1xuICBVbnBhY2tQcmVmaXg8VD4oYnl0ZXM6IFVpbnQ4QXJyYXkpOiBbVCwgVWludDhBcnJheV07XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHJlY292ZXJ5IG1vZGUgZm9yIHRyYW5zYWN0aW9uIGJ1aWxkaW5nLlxuICAgKiBXaGVuIGVuYWJsZWQsIHVzZXMgYmFja3VwIGtleSAoaW5kZXggMikgaW5zdGVhZCBvZiB1c2VyIGtleSAoaW5kZXggMCkgZm9yIHNpZ25pbmcuXG4gICAqIEBwYXJhbSByZWNvdmVyU2lnbmVyIC0gV2hldGhlciB0byB1c2UgcmVjb3Zlcnkgc2lnbmluZyAoZGVmYXVsdDogdHJ1ZSlcbiAgICogQHJldHVybnMgdGhpcyBmYWN0b3J5IGZvciBjaGFpbmluZ1xuICAgKi9cbiAgcmVjb3Zlck1vZGUocmVjb3ZlclNpZ25lciA9IHRydWUpOiB0aGlzIHtcbiAgICB0aGlzLnJlY292ZXJTaWduZXIgPSByZWNvdmVyU2lnbmVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgY3JlZGVudGlhbHMgZnJvbSByZW1haW5pbmcgYnl0ZXMgYWZ0ZXIgdHJhbnNhY3Rpb24gdXNpbmcgRmxhcmVKUyBjb2RlYy5cbiAgICogVGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBwYXJzZSBjcmVkZW50aWFscyAtIHVzaW5nIHRoZSBjb2RlYydzIFVucGFja1ByZWZpeCBtZXRob2QuXG4gICAqIEBwYXJhbSBjcmVkZW50aWFsQnl0ZXMgUmVtYWluaW5nIGJ5dGVzIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiAoc3RhcnRzIHdpdGggbnVtQ3JlZGVudGlhbHMpXG4gICAqIEBwYXJhbSBjb2RlYyBUaGUgRmxhcmVKUyBjb2RlYyB0byB1c2UgZm9yIHVucGFja2luZ1xuICAgKiBAcmV0dXJucyBBcnJheSBvZiBwYXJzZWQgY3JlZGVudGlhbHNcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdENyZWRlbnRpYWxzV2l0aENvZGVjKGNyZWRlbnRpYWxCeXRlczogVWludDhBcnJheSwgY29kZWM6IENvZGVjKTogQ3JlZGVudGlhbFtdIHtcbiAgICBjb25zdCBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdID0gW107XG4gICAgaWYgKGNyZWRlbnRpYWxCeXRlcy5sZW5ndGggPCA0KSB7XG4gICAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gICAgfVxuXG4gICAgLy8gU2tpcCB0aGUgZmlyc3QgNCBieXRlcyAobnVtQ3JlZGVudGlhbHMgYXMgSW50IHR5cGUpXG4gICAgLy8gVGhlIGNvZGVjIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIEludCwgc28gd2Ugc2tpcCBpdCBtYW51YWxseVxuICAgIGxldCByZW1haW5pbmdCeXRlczogVWludDhBcnJheSA9IGNyZWRlbnRpYWxCeXRlcy5zbGljZSg0KTtcbiAgICBsZXQgbW9yZUNyZWRlbnRpYWxzID0gdHJ1ZTtcblxuICAgIGRvIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IFtjcmVkZW50aWFsLCByZXN0XSA9IGNvZGVjLlVucGFja1ByZWZpeDxDcmVkZW50aWFsPihyZW1haW5pbmdCeXRlcyk7XG4gICAgICAgIGNyZWRlbnRpYWxzLnB1c2goY3JlZGVudGlhbCk7XG4gICAgICAgIHJlbWFpbmluZ0J5dGVzID0gcmVzdDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBtb3JlQ3JlZGVudGlhbHMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChyZW1haW5pbmdCeXRlcy5sZW5ndGggPiAwICYmIG1vcmVDcmVkZW50aWFscyk7XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSByYXcgdHJhbnNhY3Rpb24gYnVmZmVyIHVzaW5nIHRoZSBzcGVjaWZpZWQgVk0gbWFuYWdlci5cbiAgICogQHBhcmFtIHJhd0J1ZmZlciBUaGUgcmF3IHRyYW5zYWN0aW9uIGJ1ZmZlclxuICAgKiBAcGFyYW0gdm1UeXBlIFRoZSBWTSB0eXBlIHRvIHVzZSBmb3IgcGFyc2luZyAoJ0VWTScgb3IgJ1BWTScpXG4gICAqIEByZXR1cm5zIFBhcnNlZCB0cmFuc2FjdGlvbiBhbmQgY3JlZGVudGlhbHMsIG9yIG51bGwgaWYgcGFyc2luZyBmYWlsc1xuICAgKi9cbiAgcHJpdmF0ZSBwYXJzZVdpdGhWTShcbiAgICByYXdCdWZmZXI6IEJ1ZmZlcixcbiAgICB2bVR5cGU6ICdFVk0nIHwgJ1BWTSdcbiAgKTogeyB0eDogU2VyaWFsaXplZFR4OyBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdIH0gfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWFuYWdlciA9IEZsYXJlVXRpbHMuZ2V0TWFuYWdlckZvclZNKHZtVHlwZSk7XG4gICAgICBjb25zdCBbY29kZWMsIHR4Qnl0ZXNdID0gbWFuYWdlci5nZXRDb2RlY0Zyb21CdWZmZXIocmF3QnVmZmVyKTtcbiAgICAgIGNvbnN0IFt0eCwgY3JlZGVudGlhbEJ5dGVzXSA9IChjb2RlYyBhcyBDb2RlYykuVW5wYWNrUHJlZml4PFNlcmlhbGl6ZWRUeD4odHhCeXRlcyk7XG5cbiAgICAgIGNvbnN0IGNyZWRlbnRpYWxzID1cbiAgICAgICAgY3JlZGVudGlhbEJ5dGVzLmxlbmd0aCA+IDQgPyB0aGlzLmV4dHJhY3RDcmVkZW50aWFsc1dpdGhDb2RlYyhjcmVkZW50aWFsQnl0ZXMsIGNvZGVjIGFzIENvZGVjKSA6IFtdO1xuXG4gICAgICByZXR1cm4geyB0eCwgY3JlZGVudGlhbHMgfTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSByZWNvdmVyeSBtb2RlIHNldHRpbmcgdG8gYSBidWlsZGVyIGlmIGVuYWJsZWQgb24gdGhlIGZhY3RvcnkuXG4gICAqIEBwYXJhbSBidWlsZGVyIFRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIHRvIGNvbmZpZ3VyZVxuICAgKiBAcmV0dXJucyBUaGUgY29uZmlndXJlZCBidWlsZGVyXG4gICAqL1xuICBwcml2YXRlIGFwcGx5UmVjb3Zlck1vZGU8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4oYnVpbGRlcjogVCk6IFQge1xuICAgIGlmICh0aGlzLnJlY292ZXJTaWduZXIpIHtcbiAgICAgIGJ1aWxkZXIucmVjb3Zlck1vZGUodHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBidWlsZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHJhbnNhY3Rpb24gYnVpbGRlciBiYXNlZCBvbiB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKiBAcGFyYW0gdHggVGhlIHBhcnNlZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gcmF3QnVmZmVyIFRoZSByYXcgdHJhbnNhY3Rpb24gYnVmZmVyXG4gICAqIEBwYXJhbSBjcmVkZW50aWFscyBUaGUgZXh0cmFjdGVkIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSBpc0VWTSBXaGV0aGVyIHRoaXMgaXMgYW4gRVZNIHRyYW5zYWN0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBhcHByb3ByaWF0ZSB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUJ1aWxkZXIoXG4gICAgdHg6IFNlcmlhbGl6ZWRUeCxcbiAgICByYXdCdWZmZXI6IEJ1ZmZlcixcbiAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdLFxuICAgIGlzRVZNOiBib29sZWFuXG4gICk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgaWYgKGlzRVZNKSB7XG4gICAgICBpZiAoRXhwb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuZ2V0RXhwb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5FeHBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UmVjb3Zlck1vZGUoYnVpbGRlcik7XG4gICAgICB9XG4gICAgICBpZiAoSW1wb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuZ2V0SW1wb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5JbXBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5UmVjb3Zlck1vZGUoYnVpbGRlcik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChJbXBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gdGhpcy5nZXRJbXBvcnRJblBCdWlsZGVyKCk7XG4gICAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgcHZtU2VyaWFsLkltcG9ydFR4LCByYXdCdWZmZXIsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSZWNvdmVyTW9kZShidWlsZGVyKTtcbiAgICAgIH1cbiAgICAgIGlmIChFeHBvcnRJblBUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gdGhpcy5nZXRFeHBvcnRJblBCdWlsZGVyKCk7XG4gICAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgcHZtU2VyaWFsLkV4cG9ydFR4LCByYXdCdWZmZXIsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSZWNvdmVyTW9kZShidWlsZGVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdXRpbHMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHJhd0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHV0aWxzLnJlbW92ZUhleFByZWZpeChyYXcpLCAnaGV4Jyk7XG5cbiAgICAvLyBUcnkgRVZNIGZpcnN0LCB0aGVuIGZhbGwgYmFjayB0byBQVk1cbiAgICBjb25zdCBldm1SZXN1bHQgPSB0aGlzLnBhcnNlV2l0aFZNKHJhd0J1ZmZlciwgJ0VWTScpO1xuICAgIGlmIChldm1SZXN1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJ1aWxkZXIoZXZtUmVzdWx0LnR4LCByYXdCdWZmZXIsIGV2bVJlc3VsdC5jcmVkZW50aWFscywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcHZtUmVzdWx0ID0gdGhpcy5wYXJzZVdpdGhWTShyYXdCdWZmZXIsICdQVk0nKTtcbiAgICBpZiAocHZtUmVzdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCdWlsZGVyKHB2bVJlc3VsdC50eCwgcmF3QnVmZmVyLCBwdm1SZXN1bHQuY3JlZGVudGlhbHMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2ZlciBpcyBub3Qgc3VwcG9ydGVkIGluIFAgQ2hhaW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEV4cG9ydEluUEJ1aWxkZXIoKTogRXhwb3J0SW5QVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEV4cG9ydEluUFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEltcG9ydEluUEJ1aWxkZXIoKTogSW1wb3J0SW5QVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydEluUFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgaW4gQyBjaGFpbiBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0SW1wb3J0SW5DQnVpbGRlcigpOiBJbXBvcnRJbkNUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW1wb3J0SW5DVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBpbiBDIGNoYWluIENyb3NzIGNoYWluIHRyYW5zZmVyXG4gICAqL1xuICBnZXRFeHBvcnRJbkNCdWlsZGVyKCk6IEV4cG9ydEluQ1R4QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBFeHBvcnRJbkNUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnV2FsbGV0IGluaXRpYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQnKTtcbiAgfVxufVxuIl19
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBOEY7QUFDOUYsbURBQW1GO0FBR25GLDZEQUEwRDtBQUMxRCw2REFBMEQ7QUFDMUQsNkRBQTBEO0FBQzFELDZEQUEwRDtBQUUxRCxvREFBNEI7QUFNNUIsTUFBYSx5QkFBMEIsU0FBUSx3Q0FBNkI7SUFDMUUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLDJCQUEyQixDQUFDLGVBQTJCLEVBQUUsS0FBWTtRQUMzRSxNQUFNLFdBQVcsR0FBaUIsRUFBRSxDQUFDO1FBQ3JDLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELGdFQUFnRTtRQUNoRSxJQUFJLGNBQWMsR0FBZSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztRQUUzQixHQUFHLENBQUM7WUFDRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFhLGNBQWMsQ0FBQyxDQUFDO2dCQUMxRSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QixjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxRQUFRLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLGVBQWUsRUFBRTtR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SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlscyBhcyBGbGFyZVV0aWxzLCBldm1TZXJpYWwsIHB2bVNlcmlhbCwgQ3JlZGVudGlhbCB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgTm90U3VwcG9ydGVkIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRXhwb3J0SW5QVHhCdWlsZGVyIH0gZnJvbSAnLi9FeHBvcnRJblBUeEJ1aWxkZXInO1xuaW1wb3J0IHsgSW1wb3J0SW5QVHhCdWlsZGVyIH0gZnJvbSAnLi9JbXBvcnRJblBUeEJ1aWxkZXInO1xuaW1wb3J0IHsgRXhwb3J0SW5DVHhCdWlsZGVyIH0gZnJvbSAnLi9FeHBvcnRJbkNUeEJ1aWxkZXInO1xuaW1wb3J0IHsgSW1wb3J0SW5DVHhCdWlsZGVyIH0gZnJvbSAnLi9JbXBvcnRJbkNUeEJ1aWxkZXInO1xuaW1wb3J0IHsgU2VyaWFsaXplZFR4IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmludGVyZmFjZSBDb2RlYyB7XG4gIFVucGFja1ByZWZpeDxUPihieXRlczogVWludDhBcnJheSk6IFtULCBVaW50OEFycmF5XTtcbn1cblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGNyZWRlbnRpYWxzIGZyb20gcmVtYWluaW5nIGJ5dGVzIGFmdGVyIHRyYW5zYWN0aW9uIHVzaW5nIEZsYXJlSlMgY29kZWMuXG4gICAqIFRoaXMgaXMgdGhlIHByb3BlciB3YXkgdG8gcGFyc2UgY3JlZGVudGlhbHMgLSB1c2luZyB0aGUgY29kZWMncyBVbnBhY2tQcmVmaXggbWV0aG9kLlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbEJ5dGVzIFJlbWFpbmluZyBieXRlcyBhZnRlciB0aGUgdHJhbnNhY3Rpb24gKHN0YXJ0cyB3aXRoIG51bUNyZWRlbnRpYWxzKVxuICAgKiBAcGFyYW0gY29kZWMgVGhlIEZsYXJlSlMgY29kZWMgdG8gdXNlIGZvciB1bnBhY2tpbmdcbiAgICogQHJldHVybnMgQXJyYXkgb2YgcGFyc2VkIGNyZWRlbnRpYWxzXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RDcmVkZW50aWFsc1dpdGhDb2RlYyhjcmVkZW50aWFsQnl0ZXM6IFVpbnQ4QXJyYXksIGNvZGVjOiBDb2RlYyk6IENyZWRlbnRpYWxbXSB7XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSA9IFtdO1xuICAgIGlmIChjcmVkZW50aWFsQnl0ZXMubGVuZ3RoIDwgNCkge1xuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzO1xuICAgIH1cblxuICAgIC8vIFNraXAgdGhlIGZpcnN0IDQgYnl0ZXMgKG51bUNyZWRlbnRpYWxzIGFzIEludCB0eXBlKVxuICAgIC8vIFRoZSBjb2RlYyBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyBJbnQsIHNvIHdlIHNraXAgaXQgbWFudWFsbHlcbiAgICBsZXQgcmVtYWluaW5nQnl0ZXM6IFVpbnQ4QXJyYXkgPSBjcmVkZW50aWFsQnl0ZXMuc2xpY2UoNCk7XG4gICAgbGV0IG1vcmVDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgICBkbyB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBbY3JlZGVudGlhbCwgcmVzdF0gPSBjb2RlYy5VbnBhY2tQcmVmaXg8Q3JlZGVudGlhbD4ocmVtYWluaW5nQnl0ZXMpO1xuICAgICAgICBjcmVkZW50aWFscy5wdXNoKGNyZWRlbnRpYWwpO1xuICAgICAgICByZW1haW5pbmdCeXRlcyA9IHJlc3Q7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgbW9yZUNyZWRlbnRpYWxzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSB3aGlsZSAocmVtYWluaW5nQnl0ZXMubGVuZ3RoID4gMCAmJiBtb3JlQ3JlZGVudGlhbHMpO1xuXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgcmF3IHRyYW5zYWN0aW9uIGJ1ZmZlciB1c2luZyB0aGUgc3BlY2lmaWVkIFZNIG1hbmFnZXIuXG4gICAqIEBwYXJhbSByYXdCdWZmZXIgVGhlIHJhdyB0cmFuc2FjdGlvbiBidWZmZXJcbiAgICogQHBhcmFtIHZtVHlwZSBUaGUgVk0gdHlwZSB0byB1c2UgZm9yIHBhcnNpbmcgKCdFVk0nIG9yICdQVk0nKVxuICAgKiBAcmV0dXJucyBQYXJzZWQgdHJhbnNhY3Rpb24gYW5kIGNyZWRlbnRpYWxzLCBvciBudWxsIGlmIHBhcnNpbmcgZmFpbHNcbiAgICovXG4gIHByaXZhdGUgcGFyc2VXaXRoVk0oXG4gICAgcmF3QnVmZmVyOiBCdWZmZXIsXG4gICAgdm1UeXBlOiAnRVZNJyB8ICdQVk0nXG4gICk6IHsgdHg6IFNlcmlhbGl6ZWRUeDsgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSB9IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBGbGFyZVV0aWxzLmdldE1hbmFnZXJGb3JWTSh2bVR5cGUpO1xuICAgICAgY29uc3QgW2NvZGVjLCB0eEJ5dGVzXSA9IG1hbmFnZXIuZ2V0Q29kZWNGcm9tQnVmZmVyKHJhd0J1ZmZlcik7XG4gICAgICBjb25zdCBbdHgsIGNyZWRlbnRpYWxCeXRlc10gPSAoY29kZWMgYXMgQ29kZWMpLlVucGFja1ByZWZpeDxTZXJpYWxpemVkVHg+KHR4Qnl0ZXMpO1xuXG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9XG4gICAgICAgIGNyZWRlbnRpYWxCeXRlcy5sZW5ndGggPiA0ID8gdGhpcy5leHRyYWN0Q3JlZGVudGlhbHNXaXRoQ29kZWMoY3JlZGVudGlhbEJ5dGVzLCBjb2RlYyBhcyBDb2RlYykgOiBbXTtcblxuICAgICAgcmV0dXJuIHsgdHgsIGNyZWRlbnRpYWxzIH07XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0cmFuc2FjdGlvbiBidWlsZGVyIGJhc2VkIG9uIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqIEBwYXJhbSB0eCBUaGUgcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSByYXdCdWZmZXIgVGhlIHJhdyB0cmFuc2FjdGlvbiBidWZmZXJcbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIFRoZSBleHRyYWN0ZWQgY3JlZGVudGlhbHNcbiAgICogQHBhcmFtIGlzRVZNIFdoZXRoZXIgdGhpcyBpcyBhbiBFVk0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVybnMgVGhlIGFwcHJvcHJpYXRlIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQnVpbGRlcihcbiAgICB0eDogU2VyaWFsaXplZFR4LFxuICAgIHJhd0J1ZmZlcjogQnVmZmVyLFxuICAgIGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10sXG4gICAgaXNFVk06IGJvb2xlYW5cbiAgKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBpZiAoaXNFVk0pIHtcbiAgICAgIGlmIChFeHBvcnRJbkNUeEJ1aWxkZXIudmVyaWZ5VHhUeXBlKHR4Ll90eXBlKSkge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gdGhpcy5nZXRFeHBvcnRJbkNCdWlsZGVyKCk7XG4gICAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHggYXMgZXZtU2VyaWFsLkV4cG9ydFR4LCByYXdCdWZmZXIsIGNyZWRlbnRpYWxzKTtcbiAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgICB9XG4gICAgICBpZiAoSW1wb3J0SW5DVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuZ2V0SW1wb3J0SW5DQnVpbGRlcigpO1xuICAgICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIGV2bVNlcmlhbC5JbXBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiBidWlsZGVyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoSW1wb3J0SW5QVHhCdWlsZGVyLnZlcmlmeVR4VHlwZSh0eC5fdHlwZSkpIHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IHRoaXMuZ2V0SW1wb3J0SW5QQnVpbGRlcigpO1xuICAgICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4IGFzIHB2bVNlcmlhbC5JbXBvcnRUeCwgcmF3QnVmZmVyLCBjcmVkZW50aWFscyk7XG4gICAgICAgIHJldHVybiBidWlsZGVyO1xuICAgICAgfVxuICAgICAgaWYgKEV4cG9ydEluUFR4QnVpbGRlci52ZXJpZnlUeFR5cGUodHguX3R5cGUpKSB7XG4gICAgICAgIGNvbnN0IGJ1aWxkZXIgPSB0aGlzLmdldEV4cG9ydEluUEJ1aWxkZXIoKTtcbiAgICAgICAgYnVpbGRlci5pbml0QnVpbGRlcih0eCBhcyBwdm1TZXJpYWwuRXhwb3J0VHgsIHJhd0J1ZmZlciwgY3JlZGVudGlhbHMpO1xuICAgICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdXRpbHMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHJhd0J1ZmZlciA9IEJ1ZmZlci5mcm9tKHV0aWxzLnJlbW92ZUhleFByZWZpeChyYXcpLCAnaGV4Jyk7XG5cbiAgICAvLyBUcnkgRVZNIGZpcnN0LCB0aGVuIGZhbGwgYmFjayB0byBQVk1cbiAgICBjb25zdCBldm1SZXN1bHQgPSB0aGlzLnBhcnNlV2l0aFZNKHJhd0J1ZmZlciwgJ0VWTScpO1xuICAgIGlmIChldm1SZXN1bHQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJ1aWxkZXIoZXZtUmVzdWx0LnR4LCByYXdCdWZmZXIsIGV2bVJlc3VsdC5jcmVkZW50aWFscywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcHZtUmVzdWx0ID0gdGhpcy5wYXJzZVdpdGhWTShyYXdCdWZmZXIsICdQVk0nKTtcbiAgICBpZiAocHZtUmVzdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCdWlsZGVyKHB2bVJlc3VsdC50eCwgcmF3QnVmZmVyLCBwdm1SZXN1bHQuY3JlZGVudGlhbHMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdUcmFuc2ZlciBpcyBub3Qgc3VwcG9ydGVkIGluIFAgQ2hhaW4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHBvcnQgQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEV4cG9ydEluUEJ1aWxkZXIoKTogRXhwb3J0SW5QVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEV4cG9ydEluUFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgQ3Jvc3MgY2hhaW4gdHJhbnNmZXJcbiAgICovXG4gIGdldEltcG9ydEluUEJ1aWxkZXIoKTogSW1wb3J0SW5QVHhCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydEluUFR4QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgaW4gQyBjaGFpbiBDcm9zcyBjaGFpbiB0cmFuc2ZlclxuICAgKi9cbiAgZ2V0SW1wb3J0SW5DQnVpbGRlcigpOiBJbXBvcnRJbkNUeEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW1wb3J0SW5DVHhCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4cG9ydCBpbiBDIGNoYWluIENyb3NzIGNoYWluIHRyYW5zZmVyXG4gICAqL1xuICBnZXRFeHBvcnRJbkNCdWlsZGVyKCk6IEV4cG9ydEluQ1R4QnVpbGRlciB7XG4gICAgcmV0dXJuIG5ldyBFeHBvcnRJbkNUeEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgnV2FsbGV0IGluaXRpYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQnKTtcbiAgfVxufVxuIl19
|