@bitgo-beta/sdk-coin-dot 1.3.3-alpha.11 → 1.3.3-alpha.13
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/CHANGELOG.md +19 -0
- package/dist/src/lib/transaction.js +2 -2
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dot@2.0.0...@bitgo/sdk-coin-dot@2.0.1) (2022-12-01)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **sdk-coin-dot:** update DOT transferAll value to zero ([5bb9852](https://github.com/BitGo/BitGoJS/commit/5bb98529179121d075090d7d22f1ebf1c4ee7dec))
|
|
11
|
+
|
|
12
|
+
# [2.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dot@1.3.0...@bitgo/sdk-coin-dot@2.0.0) (2022-11-29)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- **sdk-coin-dot:** add support for staking transactions ([b67eaa0](https://github.com/BitGo/BitGoJS/commit/b67eaa06723b1a235cb2c6f948ece34cc42a9256))
|
|
17
|
+
|
|
18
|
+
### BREAKING CHANGES
|
|
19
|
+
|
|
20
|
+
- **sdk-coin-dot:** Uddate the 'westendMetadataRpc' constant to
|
|
21
|
+
spec version 9320. Update PolkadotTestnet.specVersion to
|
|
22
|
+
9320 and PolkadotTestnet.txVersion to 14.
|
|
23
|
+
Ticket: BOS-469
|
|
24
|
+
|
|
6
25
|
## [1.3.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-dot@1.3.0...@bitgo/sdk-coin-dot@1.3.4) (2022-11-04)
|
|
7
26
|
|
|
8
27
|
**Note:** Version bump only for package @bitgo/sdk-coin-dot
|
|
@@ -371,7 +371,7 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
371
371
|
pub: Buffer.from(keyring_1.decodeAddress(txMethod.dest.id)).toString('hex'),
|
|
372
372
|
});
|
|
373
373
|
to = keypairDest.getAddress(utils_1.default.getAddressFormat(this._coinConfig.name));
|
|
374
|
-
value = '
|
|
374
|
+
value = '0'; // DOT transferAll's do not deserialize amounts
|
|
375
375
|
from = decodedTx.address;
|
|
376
376
|
}
|
|
377
377
|
else if (utils_1.default.isTransfer(txMethod)) {
|
|
@@ -586,4 +586,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
586
586
|
}
|
|
587
587
|
exports.Transaction = Transaction;
|
|
588
588
|
Transaction.FAKE_SIGNATURE = `0x${Buffer.from(new Uint8Array(256).fill(1)).toString('hex')}`;
|
|
589
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFVOEI7QUFFOUIsNkRBQTBFO0FBQzFFLHlDQUE2QztBQUM3QyxzRUFBa0U7QUFHbEUsdUNBQW9DO0FBQ3BDLG1DQWlCaUI7QUFDakIsK0NBQStEO0FBQy9ELG9EQUE0QjtBQUM1QixnRUFBcUM7QUFJckM7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyx1QkFBYSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7QUFFdkgsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFTOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixPQUFPLENBQUMsRUFBRSxHQUFHLEVBQVc7UUFDdEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFxQixDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE9BQWdCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNS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LEVBQUU7WUFDVixNQUFNLElBQUksdUJBQVksQ0FBQyxpREFBaUQsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjLENBQUMsRUFBdUI7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLGVBQWU7UUFDakIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzNGLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsZUFBZ0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQzs7QUFqbUJILGtDQWttQkM7QUEzbEJnQiwwQkFBYyxHQUFHLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRG90QXNzZXRUeXBlcyxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICB0b1VpbnQ4QXJyYXksXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBLZXlyaW5nLCB7IGRlY29kZUFkZHJlc3MsIGVuY29kZUFkZHJlc3MgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyB1OGFUb0J1ZmZlciB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsJztcbmltcG9ydCB7IGNvbnN0cnVjdCwgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBBZGRBbm9ueW1vdXNQcm94eUFyZ3MsXG4gIEFkZFByb3h5QXJncyxcbiAgQWRkUHJveHlCYXRjaENhbGxBcmdzLFxuICBCYXRjaEFyZ3MsXG4gIEJhdGNoQ2FsbE9iamVjdCxcbiAgQ2xhaW1BcmdzLFxuICBEZWNvZGVkVHgsXG4gIEhleFN0cmluZyxcbiAgTWV0aG9kTmFtZXMsXG4gIFNlY3Rpb25OYW1lcyxcbiAgU3Rha2VBcmdzUGF5ZWVSYXcsXG4gIFN0YWtlQmF0Y2hDYWxsQXJncyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBVbnN0YWtlQXJncyxcbiAgV2l0aGRyYXdVbnN0YWtlZEFyZ3MsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZ2V0QWRkcmVzcywgZ2V0RGVsZWdhdGVBZGRyZXNzIH0gZnJvbSAnLi9pZmFjZV91dGlscyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBWZWMgfSBmcm9tICdAcG9sa2Fkb3QvdHlwZXMnO1xuaW1wb3J0IHsgUGFsbGV0Q29uc3RhbnRNZXRhZGF0YVYxNCB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcy9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBVc2UgYSBkdW1teSBhZGRyZXNzIGFzIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGJvbmQgb3IgYm9uZEV4dHJhIGJlY2F1c2Ugb3VyIGlucHV0cyBhbmQgb3V0cHV0cyBtb2RlbFxuICogZG9lc24ndCBzZWVtIHRvIGhhbmRsZSB0aGUgY29uY2VwdCBvZiBsb2NraW5nIGZ1bmRzIHdpdGhpbiBhIHdhbGxldCBhcyBhIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgY29pbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBTVEFLSU5HX0RFU1RJTkFUSU9OID0gZW5jb2RlQWRkcmVzcygnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfZG90VHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBwcml2YXRlIF9yZWdpc3RyeTogVHlwZVJlZ2lzdHJ5O1xuICBwcml2YXRlIF9jaGFpbk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgRkFLRV9TSUdOQVRVUkUgPSBgMHgke0J1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KDI1NikuZmlsbCgxKSkudG9TdHJpbmcoJ2hleCcpfWA7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgY29uc3QgYWRkciA9IGtwLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgIHJldHVybiBhZGRyID09PSB0aGlzLl9zZW5kZXI7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhIHBvbGthZG90IHRyYW5zYWN0aW9uIGFuZCB1cGRhdGUgdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgLSBlZCBzaWduYXR1cmVcbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBzaWduJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gY29uc3RydWN0LnNpZ25pbmdQYXlsb2FkKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG4gICAgLy8gU2lnbiBhIHBheWxvYWQuIFRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYW4gb2ZmbGluZSBkZXZpY2UuXG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IHNlY3JldEtleSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmluZ0tleVBhaXIgPSBrZXlyaW5nLmFkZEZyb21QYWlyKHsgc2VjcmV0S2V5LCBwdWJsaWNLZXkgfSk7XG4gICAgY29uc3QgdHhIZXggPSB1dGlscy5jcmVhdGVTaWduZWRUeChzaWduaW5nS2V5UGFpciwgc2lnbmluZ1BheWxvYWQsIHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG5cbiAgICAvLyBnZXQgc2lnbmF0dXJlIGZyb20gc2lnbmVkIHR4SGV4IGdlbmVyYXRlZCBhYm92ZVxuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdXRpbHMucmVjb3ZlclNpZ25hdHVyZUZyb21SYXdUeCh0eEhleCwgeyByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnkgfSldO1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhIZXg7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSBET1QgVHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZVxuICAgKi9cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5zZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbihcbiAgICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uLFxuICAgICAgc2lnbmF0dXJlLFxuICAgICAgdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICB0aGlzLl9yZWdpc3RyeVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0cmFuc2FjdGlvbiB3aXRoIGEgZmFrZSBzaWduYXR1cmUgYXR0YWNoZWQgd2hpY2hcbiAgICogY2FuIGJlIHVzZWQgdG8gZXN0aW1hdGUgdHJhbnNhY3Rpb24gZmVlcy5cbiAgICovXG4gIGZha2VTaWduKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV0aWxzLnNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5fZG90VHJhbnNhY3Rpb24sXG4gICAgICBUcmFuc2FjdGlvbi5GQUtFX1NJR05BVFVSRSxcbiAgICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgdGhpcy5fcmVnaXN0cnlcbiAgICApO1xuICB9XG5cbiAgcmVnaXN0cnkocmVnaXN0cnk6IFR5cGVSZWdpc3RyeSk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBjaGFpbk5hbWUoY2hhaW5OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFpbk5hbWUgPSBjaGFpbk5hbWU7XG4gIH1cblxuICBzZW5kZXIoc2VuZGVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2RvdFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Quc2lnbmluZ1BheWxvYWQodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNhY3Rpb25TaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Ccm9hZGNhc3RGb3JtYXQoKS5sZW5ndGggLyAyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICBpc0ltbW9ydGFsRXJhOiB1dGlscy5pc1plcm9IZXgodGhpcy5fZG90VHJhbnNhY3Rpb24uZXJhKSxcbiAgICB9KSBhcyB1bmtub3duIGFzIERlY29kZWRUeDtcblxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IGNvbnN0cnVjdC50eEhhc2godGhpcy50b0Jyb2FkY2FzdEZvcm1hdCgpKSxcbiAgICAgIHNlbmRlcjogZGVjb2RlZFR4LmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogZGVjb2RlZFR4LmJsb2NrSGFzaCxcbiAgICAgIGJsb2NrTnVtYmVyOiBkZWNvZGVkVHguYmxvY2tOdW1iZXIsXG4gICAgICBnZW5lc2lzSGFzaDogZGVjb2RlZFR4LmdlbmVzaXNIYXNoLFxuICAgICAgbm9uY2U6IGRlY29kZWRUeC5ub25jZSxcbiAgICAgIHNwZWNWZXJzaW9uOiBkZWNvZGVkVHguc3BlY1ZlcnNpb24sXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IGRlY29kZWRUeC50cmFuc2FjdGlvblZlcnNpb24sXG4gICAgICBlcmFQZXJpb2Q6IGRlY29kZWRUeC5lcmFQZXJpb2QsXG4gICAgICBjaGFpbk5hbWU6IHRoaXMuX2NoYWluTmFtZSxcbiAgICAgIHRpcDogZGVjb2RlZFR4LnRpcCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzUHJveHlUcmFuc2Zlcih0eE1ldGhvZCkpIHtcbiAgICAgICAgY29uc3Qga2V5cGFpclJlYWwgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGdldEFkZHJlc3ModHhNZXRob2QpKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Lm93bmVyID0ga2V5cGFpclJlYWwuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICAgIHJlc3VsdC5mb3JjZVByb3h5VHlwZSA9IHR4TWV0aG9kLmZvcmNlUHJveHlUeXBlO1xuICAgICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQudG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGRlY29kZWRDYWxsLnZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh1dGlscy5pc1RyYW5zZmVyKHR4TWV0aG9kKSkge1xuICAgICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuZGVzdC5pZCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC50byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzVHJhbnNmZXJBbGwodHhNZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKGBTZXJpYWxpemluZyB1bmtub3duIFRyYW5zZmVyIHR5cGUgcGFyYW1ldGVyc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzQm9uZCh0eE1ldGhvZCkpIHtcbiAgICAgICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuY29udHJvbGxlci5pZCwgZmFsc2UsIHRoaXMuX3JlZ2lzdHJ5LmNoYWluU1M1OCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzdWx0LmNvbnRyb2xsZXIgPSBrZXlwYWlyLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG5cbiAgICAgICAgY29uc3QgcGF5ZWUgPSB0eE1ldGhvZC5wYXllZSBhcyBTdGFrZUFyZ3NQYXllZVJhdztcbiAgICAgICAgaWYgKHBheWVlLmFjY291bnQpIHtcbiAgICAgICAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHBheWVlLmFjY291bnQsIGZhbHNlLCB0aGlzLl9yZWdpc3RyeS5jaGFpblNTNTgpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzdWx0LnBheWVlID0ga2V5cGFpci5nZXRBZGRyZXNzKHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwYXllZVR5cGUgPSB1dGlscy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIoT2JqZWN0LmtleXMocGF5ZWUpWzBdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgcmVzdWx0LnBheWVlID0gcGF5ZWVUeXBlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQm9uZEV4dHJhKGRlY29kZWRUeC5tZXRob2QuYXJncykpIHtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGRlY29kZWRUeC5tZXRob2QuYXJncy5tYXhBZGRpdGlvbmFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGxldCB0eE1ldGhvZDogQWRkQW5vbnltb3VzUHJveHlBcmdzIHwgQWRkUHJveHlBcmdzO1xuICAgICAgaWYgKChkZWNvZGVkVHgubWV0aG9kPy5hcmdzIGFzIEFkZFByb3h5QXJncykuZGVsZWdhdGUpIHtcbiAgICAgICAgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQWRkUHJveHlBcmdzO1xuICAgICAgICBjb25zdCBkZWxlZ2F0ZUFkZHJlc3MgPSBnZXREZWxlZ2F0ZUFkZHJlc3ModHhNZXRob2QpO1xuICAgICAgICBjb25zdCBkZWNvZGVkQWRkcmVzcyA9IGRlY29kZUFkZHJlc3MoZGVsZWdhdGVBZGRyZXNzLCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KTtcbiAgICAgICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVkQWRkcmVzcykudG9TdHJpbmcoJ2hleCcpIH0pO1xuICAgICAgICByZXN1bHQub3duZXIgPSBrZXlwYWlyLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQWRkQW5vbnltb3VzUHJveHlBcmdzO1xuICAgICAgICByZXN1bHQuaW5kZXggPSB0eE1ldGhvZC5pbmRleDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5tZXRob2QgPSB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRob2Q7XG4gICAgICByZXN1bHQucHJveHlUeXBlID0gdHhNZXRob2QucHJveHlUeXBlO1xuICAgICAgcmVzdWx0LmRlbGF5ID0gdHhNZXRob2QuZGVsYXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFVuc3Rha2VBcmdzO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHR4TWV0aG9kLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFdpdGhkcmF3VW5zdGFrZWRBcmdzO1xuICAgICAgcmVzdWx0Lm51bVNsYXNoaW5nU3BhbnMgPSB0eE1ldGhvZC5udW1TbGFzaGluZ1NwYW5zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW0pIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIENsYWltQXJncztcbiAgICAgIHJlc3VsdC52YWxpZGF0b3JTdGFzaCA9IHR4TWV0aG9kLnZhbGlkYXRvclN0YXNoO1xuICAgICAgcmVzdWx0LmNsYWltRXJhID0gdHhNZXRob2QuZXJhO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5CYXRjaCkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQmF0Y2hBcmdzO1xuICAgICAgcmVzdWx0LmJhdGNoQ2FsbHMgPSB0eE1ldGhvZC5jYWxscztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24udG8/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgYW1vdW50OiBqc29uLmFtb3VudD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIGZvcmNlUHJveHlUeXBlOiBqc29uLmZvcmNlUHJveHlUeXBlLFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdwYXllZScsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24uY29udHJvbGxlcj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBheWVlOiBqc29uLnBheWVlLFxuICAgICAgZm9yY2VQcm94eVR5cGU6IGpzb24uZm9yY2VQcm94eVR5cGUsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgZXhwbGFuYXRpb25SZXN1bHQuZGlzcGxheU9yZGVyLnB1c2goJ293bmVyJywgJ3Byb3h5VHlwZScsICdkZWxheScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG93bmVyOiBqc29uLm93bmVyLFxuICAgICAgcHJveHlUeXBlOiBqc29uLnByb3h5VHlwZSxcbiAgICAgIGRlbGF5OiBqc29uLmRlbGF5LFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ1VubG9ja1RyYW5zYWN0aW9uKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBqc29uLnNlbmRlci50b1N0cmluZygpLFxuICAgICAgICAgIGFtb3VudDoganNvbi5hbW91bnQgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIC8vIHR4aGFzaCB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0cmFuc2FjdGlvbnNcbiAgICAgIGlkOiByZXN1bHQuaWQsXG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBvdXRwdXRBbW91bnQ6IHJlc3VsdC5hbW91bnQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIG91dHB1dHMsXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiByZXN1bHQudGlwPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICB0eXBlOiAndGlwJyxcbiAgICAgIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5TdGFraW5nQWN0aXZhdGVUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpbkFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblN0YWtpbmdVbmxvY2tUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kb3RUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgIGlzSW1tb3J0YWxFcmE6IHV0aWxzLmlzWmVyb0hleCh0aGlzLl9kb3RUcmFuc2FjdGlvbi5lcmEpLFxuICAgIH0pIGFzIHVua25vd24gYXMgRGVjb2RlZFR4O1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuZGVjb2RlSW5wdXRzQW5kT3V0cHV0c0ZvclNlbmQoZGVjb2RlZFR4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkJhdGNoKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JCYXRjaChkZWNvZGVkVHgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JCb25kKGRlY29kZWRUeCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JVbmJvbmQoZGVjb2RlZFR4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdykge1xuICAgICAgdGhpcy5kZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yV2l0aGRyYXdVbmJvbmQoZGVjb2RlZFR4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JTZW5kKGRlY29kZWRUeDogRGVjb2RlZFR4KSB7XG4gICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3M7XG4gICAgbGV0IHRvOiBzdHJpbmc7XG4gICAgbGV0IHZhbHVlOiBzdHJpbmc7XG4gICAgbGV0IGZyb206IHN0cmluZztcbiAgICBpZiAodXRpbHMuaXNQcm94eVRyYW5zZmVyKHR4TWV0aG9kKSkge1xuICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGtleXBhaXJGcm9tID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoZ2V0QWRkcmVzcyh0eE1ldGhvZCkpKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KTtcbiAgICAgIHRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICB2YWx1ZSA9IGAke2RlY29kZWRDYWxsLnZhbHVlfWA7XG4gICAgICBmcm9tID0ga2V5cGFpckZyb20uZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1RyYW5zZmVyQWxsKHR4TWV0aG9kKSkge1xuICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG4gICAgICB0byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgdmFsdWUgPSAnc3dlZXAnO1xuICAgICAgZnJvbSA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAodXRpbHMuaXNUcmFuc2Zlcih0eE1ldGhvZCkpIHtcbiAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuZGVzdC5pZCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pO1xuICAgICAgdG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpKTtcbiAgICAgIHZhbHVlID0gdHhNZXRob2QudmFsdWU7XG4gICAgICBmcm9tID0gZGVjb2RlZFR4LmFkZHJlc3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoYExvYWRpbmcgaW5wdXRzIG9mIHVua25vd24gVHJhbnNmZXIgdHlwZSBwYXJhbWV0ZXJzYCk7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHRvLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiBmcm9tLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yQmF0Y2goZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICBjb25zdCBzZW5kZXIgPSBkZWNvZGVkVHguYWRkcmVzcztcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG5cbiAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncztcbiAgICBpZiAodXRpbHMuaXNTdGFraW5nQmF0Y2godHhNZXRob2QpKSB7XG4gICAgICBpZiAoIXR4TWV0aG9kLmNhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZmFpbGVkIHRvIGRlY29kZSBjYWxscyBmcm9tIGJhdGNoIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvbmRNZXRob2QgPSAodHhNZXRob2QuY2FsbHNbMF0gYXMgQmF0Y2hDYWxsT2JqZWN0KS5jYWxsSW5kZXg7XG4gICAgICBjb25zdCBkZWNvZGVkQm9uZENhbGwgPSB0aGlzLl9yZWdpc3RyeS5maW5kTWV0YUNhbGwodG9VaW50OEFycmF5KHV0aWxzLnN0cmlwSGV4UHJlZml4KGJvbmRNZXRob2QpKSk7XG4gICAgICBpZiAoZGVjb2RlZEJvbmRDYWxsLnNlY3Rpb24gIT09IFNlY3Rpb25OYW1lcy5TdGFraW5nIHx8IGRlY29kZWRCb25kQ2FsbC5tZXRob2QgIT09IE1ldGhvZE5hbWVzLkJvbmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIGJhdGNoIHRyYW5zYWN0aW9uLCBvbmx5IHN0YWtpbmcgYmF0Y2ggY2FsbHMgYXJlIHN1cHBvcnRlZCwgZXhwZWN0ZWQgZmlyc3QgY2FsbCB0byBiZSBib25kLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFkZFByb3h5TWV0aG9kID0gKHR4TWV0aG9kLmNhbGxzWzFdIGFzIEJhdGNoQ2FsbE9iamVjdCkuY2FsbEluZGV4O1xuICAgICAgY29uc3QgZGVjb2RlZEFkZFByb3h5Q2FsbCA9IHRoaXMuX3JlZ2lzdHJ5LmZpbmRNZXRhQ2FsbCh0b1VpbnQ4QXJyYXkodXRpbHMuc3RyaXBIZXhQcmVmaXgoYWRkUHJveHlNZXRob2QpKSk7XG4gICAgICBpZiAoZGVjb2RlZEFkZFByb3h5Q2FsbC5zZWN0aW9uICE9PSBTZWN0aW9uTmFtZXMuUHJveHkgfHwgZGVjb2RlZEFkZFByb3h5Q2FsbC5tZXRob2QgIT09IE1ldGhvZE5hbWVzLkFkZFByb3h5KSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBiYXRjaCB0cmFuc2FjdGlvbiwgb25seSBzdGFraW5nIGJhdGNoIGNhbGxzIGFyZSBzdXBwb3J0ZWQsIGV4cGVjdGVkIHNlY29uZCBjYWxsIHRvIGJlIGFkZFByb3h5LidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3Rha2VBcmdzID0gdHhNZXRob2QuY2FsbHNbMF0uYXJncyBhcyBTdGFrZUJhdGNoQ2FsbEFyZ3M7XG4gICAgICBjb25zdCBhZGRQcm94eUFyZ3MgPSB0eE1ldGhvZC5jYWxsc1sxXS5hcmdzIGFzIEFkZFByb3h5QmF0Y2hDYWxsQXJncztcbiAgICAgIGNvbnN0IGJvbmRWYWx1ZSA9IGAke3N0YWtlQXJncy52YWx1ZX1gO1xuICAgICAgY29uc3QgcHJveHlBZGRyZXNzID0gZ2V0RGVsZWdhdGVBZGRyZXNzKGFkZFByb3h5QXJncyk7XG5cbiAgICAgIHRoaXMuX2lucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogc2VuZGVyLFxuICAgICAgICB2YWx1ZTogYm9uZFZhbHVlLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IFNUQUtJTkdfREVTVElOQVRJT04sXG4gICAgICAgIHZhbHVlOiBib25kVmFsdWUsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBhZGRQcm94eUNvc3QgPSB0aGlzLmdldEFkZFByb3h5Q29zdCgpLnRvU3RyaW5nKDEwKTtcbiAgICAgIHRoaXMuX2lucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogc2VuZGVyLFxuICAgICAgICB2YWx1ZTogYWRkUHJveHlDb3N0LFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHByb3h5QWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IGFkZFByb3h5Q29zdCxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1Vuc3Rha2luZ0JhdGNoKHR4TWV0aG9kKSkge1xuICAgICAgaWYgKCF0eE1ldGhvZC5jYWxscykge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2ZhaWxlZCB0byBkZWNvZGUgY2FsbHMgZnJvbSBiYXRjaCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZW1vdmVQcm94eU1ldGhvZCA9ICh0eE1ldGhvZC5jYWxsc1swXSBhcyBCYXRjaENhbGxPYmplY3QpLmNhbGxJbmRleDtcbiAgICAgIGNvbnN0IGRlY29kZWRSZW1vdmVQcm94eUNhbGwgPSB0aGlzLl9yZWdpc3RyeS5maW5kTWV0YUNhbGwodG9VaW50OEFycmF5KHV0aWxzLnN0cmlwSGV4UHJlZml4KHJlbW92ZVByb3h5TWV0aG9kKSkpO1xuICAgICAgaWYgKFxuICAgICAgICBkZWNvZGVkUmVtb3ZlUHJveHlDYWxsLnNlY3Rpb24gIT09IFNlY3Rpb25OYW1lcy5Qcm94eSB8fFxuICAgICAgICBkZWNvZGVkUmVtb3ZlUHJveHlDYWxsLm1ldGhvZCAhPT0gTWV0aG9kTmFtZXMuUmVtb3ZlUHJveHlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgYmF0Y2ggdHJhbnNhY3Rpb24sIG9ubHkgc3Rha2luZyBiYXRjaCBjYWxscyBhcmUgc3VwcG9ydGVkLCBleHBlY3RlZCBmaXJzdCBjYWxsIHRvIGJlIHJlbW92ZVByb3h5LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNoaWxsTWV0aG9kID0gKHR4TWV0aG9kLmNhbGxzWzFdIGFzIEJhdGNoQ2FsbE9iamVjdCkuY2FsbEluZGV4O1xuICAgICAgY29uc3QgZGVjb2RlZENoaWxsQ2FsbCA9IHRoaXMuX3JlZ2lzdHJ5LmZpbmRNZXRhQ2FsbCh0b1VpbnQ4QXJyYXkodXRpbHMuc3RyaXBIZXhQcmVmaXgoY2hpbGxNZXRob2QpKSk7XG4gICAgICBpZiAoZGVjb2RlZENoaWxsQ2FsbC5zZWN0aW9uICE9PSBTZWN0aW9uTmFtZXMuU3Rha2luZyB8fCBkZWNvZGVkQ2hpbGxDYWxsLm1ldGhvZCAhPT0gTWV0aG9kTmFtZXMuQ2hpbGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIGJhdGNoIHRyYW5zYWN0aW9uLCBvbmx5IHN0YWtpbmcgYmF0Y2ggY2FsbHMgYXJlIHN1cHBvcnRlZCwgZXhwZWN0ZWQgc2Vjb25kIGNhbGwgdG8gYmUgY2hpbGwuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgdW5zdGFrZU1ldGhvZCA9ICh0eE1ldGhvZC5jYWxsc1syXSBhcyBCYXRjaENhbGxPYmplY3QpLmNhbGxJbmRleDtcbiAgICAgIGNvbnN0IGRlY29kZWRVbnN0YWtlQ2FsbCA9IHRoaXMuX3JlZ2lzdHJ5LmZpbmRNZXRhQ2FsbCh0b1VpbnQ4QXJyYXkodXRpbHMuc3RyaXBIZXhQcmVmaXgodW5zdGFrZU1ldGhvZCkpKTtcbiAgICAgIGlmIChkZWNvZGVkVW5zdGFrZUNhbGwuc2VjdGlvbiAhPT0gU2VjdGlvbk5hbWVzLlN0YWtpbmcgfHwgZGVjb2RlZFVuc3Rha2VDYWxsLm1ldGhvZCAhPT0gTWV0aG9kTmFtZXMuVW5ib25kKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBiYXRjaCB0cmFuc2FjdGlvbiwgb25seSBzdGFraW5nIGJhdGNoIGNhbGxzIGFyZSBzdXBwb3J0ZWQsIGV4cGVjdGVkIHRoaXJkIGNhbGwgdG8gYmUgdW5ib25kLidcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVtb3ZlUHJveHlBcmdzID0gdHhNZXRob2QuY2FsbHNbMF0uYXJncyBhcyBBZGRQcm94eUJhdGNoQ2FsbEFyZ3M7XG4gICAgICBjb25zdCBwcm94eUFkZHJlc3MgPSBnZXREZWxlZ2F0ZUFkZHJlc3MocmVtb3ZlUHJveHlBcmdzKTtcblxuICAgICAgY29uc3QgcmVtb3ZlUHJveHlDb3N0ID0gdGhpcy5nZXRSZW1vdmVQcm94eUNvc3QoKS50b1N0cmluZygxMCk7XG4gICAgICB0aGlzLl9pbnB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHByb3h5QWRkcmVzcyxcbiAgICAgICAgdmFsdWU6IHJlbW92ZVByb3h5Q29zdCxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9vdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBzZW5kZXIsXG4gICAgICAgIHZhbHVlOiByZW1vdmVQcm94eUNvc3QsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVtb3ZlUHJveHlDb3N0KCk6IEJpZ051bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWRkUHJveHlDb3N0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkZFByb3h5Q29zdCgpOiBCaWdOdW1iZXIge1xuICAgIGNvbnN0IHByb3h5UGFsbGV0ID0gdGhpcy5fcmVnaXN0cnkubWV0YWRhdGEucGFsbGV0cy5maW5kKFxuICAgICAgKHApID0+IHAubmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IFNlY3Rpb25OYW1lcy5Qcm94eVxuICAgICk7XG4gICAgaWYgKHByb3h5UGFsbGV0KSB7XG4gICAgICBjb25zdCBwcm94eURlcG9zaXRCYXNlID0gdGhpcy5nZXRDb25zdGFudCgnUHJveHlEZXBvc2l0QmFzZScsIHByb3h5UGFsbGV0LmNvbnN0YW50cyk7XG4gICAgICBjb25zdCBwcm94eURlcG9zaXRGYWN0b3IgPSB0aGlzLmdldENvbnN0YW50KCdQcm94eURlcG9zaXRGYWN0b3InLCBwcm94eVBhbGxldC5jb25zdGFudHMpO1xuICAgICAgcmV0dXJuIHByb3h5RGVwb3NpdEJhc2UucGx1cyhwcm94eURlcG9zaXRGYWN0b3IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYWxsZXROYW1lcyA9IHRoaXMuX3JlZ2lzdHJ5Lm1ldGFkYXRhLnBhbGxldHMubWFwKChwKSA9PiBwLm5hbWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgJHtTZWN0aW9uTmFtZXMuUHJveHl9IHBhbGxldCBpbiBbJHtwYWxsZXROYW1lc31dYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25zdGFudChuYW1lOiBzdHJpbmcsIGNvbnN0YW50czogVmVjPFBhbGxldENvbnN0YW50TWV0YWRhdGFWMTQ+KTogQmlnTnVtYmVyIHtcbiAgICBjb25zdCBjb25zdGFudCA9IGNvbnN0YW50cy5maW5kKChjKSA9PiBjLm5hbWUudG9TdHJpbmcoKSA9PT0gbmFtZSk7XG4gICAgaWYgKGNvbnN0YW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGNvbnN0YW50TmFtZXMgPSBjb25zdGFudHMubWFwKChwKSA9PiBwLm5hbWUudG9TdHJpbmcoKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGNvbnN0YW50ICR7bmFtZX0gaW4gWyR7Y29uc3RhbnROYW1lc31dYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnZlcnQgZnJvbSBMaXR0bGUtRW5kaWFuIHRvIEJpZy1FbmRpYW5cbiAgICAgIGNvbnN0IHZhbHVlQmUgPSBCdWZmZXIuZnJvbShjb25zdGFudC52YWx1ZS50b1U4YSh0cnVlKS5yZXZlcnNlKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIHJldHVybiBCaWdOdW1iZXIodmFsdWVCZSwgMTYpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVjb2RlSW5wdXRzQW5kT3V0cHV0c0ZvckJvbmQoZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICBjb25zdCBzZW5kZXIgPSBkZWNvZGVkVHguYWRkcmVzcztcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG5cbiAgICBjb25zdCB0eE1ldGhvZCA9IGRlY29kZWRUeC5tZXRob2QuYXJncztcbiAgICBpZiAoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQgPT09IFNlY3Rpb25OYW1lcy5TdGFraW5nKSB7XG4gICAgICBsZXQgYm9uZFZhbHVlID0gJzAnO1xuICAgICAgaWYgKGRlY29kZWRUeC5tZXRob2QubmFtZSA9PT0gTWV0aG9kTmFtZXMuQm9uZCAmJiB1dGlscy5pc0JvbmQodHhNZXRob2QpKSB7XG4gICAgICAgIGJvbmRWYWx1ZSA9IHR4TWV0aG9kLnZhbHVlO1xuICAgICAgfSBlbHNlIGlmIChkZWNvZGVkVHgubWV0aG9kLm5hbWUgPT09IE1ldGhvZE5hbWVzLkJvbmRFeHRyYSAmJiB1dGlscy5pc0JvbmRFeHRyYSh0eE1ldGhvZCkpIHtcbiAgICAgICAgYm9uZFZhbHVlID0gdHhNZXRob2QubWF4QWRkaXRpb25hbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoYExvYWRpbmcgaW5wdXRzIG9mIHVua25vd24gU3Rha2luZ0FjdGl2YXRlIHR5cGUgcGFyYW1ldGVyc2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5faW5wdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBzZW5kZXIsXG4gICAgICAgIHZhbHVlOiBib25kVmFsdWUsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogU1RBS0lOR19ERVNUSU5BVElPTixcbiAgICAgICAgdmFsdWU6IGJvbmRWYWx1ZSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yVW5ib25kKGRlY29kZWRUeDogRGVjb2RlZFR4KSB7XG4gICAgdGhpcy5faW5wdXRzID0gW107XG4gICAgdGhpcy5fb3V0cHV0cyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yV2l0aGRyYXdVbmJvbmQoZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHNpZ25lZCBwYXlsb2FkIHVzaW5nIGNvbnN0cnVjdC5zaWduVHhcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBidWlsZCBzdGVwIGlmIGEgVFNTIHNpZ25hdHVyZVxuICAgKiBpcyBhZGRlZCBhbmQgd2lsbCBzZXQgdGhlIHNpZ25UcmFuc2FjdGlvbiB3aGljaCBpcyB0aGUgdHhIZXggdGhhdCB3aWxsIGJlIGJyb2FkY2FzdGVkXG4gICAqIEFzIHdlbGwgYXMgYWRkIHRoZSBzaWduYXR1cmUgdXNlZCB0byBzaWduIHRvIHRoZSBzaWduYXR1cmUgYXJyYXkgaW4gaGV4IGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmF0dXJlIFRoZSBzaWduYXR1cmUgdG8gYmUgYWRkZWQgdG8gYSBkb3QgdHJhbnNhY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdFNpZ25lZFBheWxvYWQoc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICAvLyAweDAwIG1lYW5zIGl0cyBhbiBFRDI1NTE5IHNpZ25hdHVyZVxuICAgIGNvbnN0IGVkU2lnbmF0dXJlID0gYDB4MDAke3NpZ25hdHVyZS50b1N0cmluZygnaGV4Jyl9YCBhcyBIZXhTdHJpbmc7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBjb25zdHJ1Y3Quc2lnbmVkVHgodGhpcy5fZG90VHJhbnNhY3Rpb24sIGVkU2lnbmF0dXJlLCB7XG4gICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgICAgbWV0YWRhdGFScGM6IHRoaXMuX2RvdFRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcihgVW5hYmxlIHRvIHNpZ24gZG90IHRyYW5zYWN0aW9uIHdpdGggc2lnbmF0dXJlICR7ZWRTaWduYXR1cmV9IGAgKyBlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW3NpZ25hdHVyZS50b1N0cmluZygnaGV4JyldO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHg6IFVuc2lnbmVkVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9kb3RUcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICoqL1xuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgY29uc3QgZXh0cmluc2ljUGF5bG9hZCA9IHRoaXMuX3JlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpY1BheWxvYWQnLCB0aGlzLl9kb3RUcmFuc2FjdGlvbiwge1xuICAgICAgdmVyc2lvbjogdGhpcy5fZG90VHJhbnNhY3Rpb24udmVyc2lvbixcbiAgICB9KTtcbiAgICByZXR1cm4gdThhVG9CdWZmZXIoZXh0cmluc2ljUGF5bG9hZC50b1U4YSh7IG1ldGhvZDogdHJ1ZSB9KSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cbn1cbiJdfQ==
|
|
589
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFVOEI7QUFFOUIsNkRBQTBFO0FBQzFFLHlDQUE2QztBQUM3QyxzRUFBa0U7QUFHbEUsdUNBQW9DO0FBQ3BDLG1DQWlCaUI7QUFDakIsK0NBQStEO0FBQy9ELG9EQUE0QjtBQUM1QixnRUFBcUM7QUFJckM7OztHQUdHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyx1QkFBYSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7QUFFdkgsTUFBYSxXQUFZLFNBQVEsMEJBQWU7SUFTOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixPQUFPLENBQUMsRUFBRSxHQUFHLEVBQVc7UUFDdEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxpQkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFxQixDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxDQUFDLE9BQWdCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNS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QUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksdUJBQVksQ0FBQyxpREFBaUQsV0FBVyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0Y7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxjQUFjLENBQUMsRUFBdUI7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLGVBQWU7UUFDakIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzNGLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87U0FDdEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxrQkFBVyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsZUFBZ0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQzs7QUFqbUJILGtDQWttQkM7QUEzbEJnQiwwQkFBYyxHQUFHLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRG90QXNzZXRUeXBlcyxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxuICB0b1VpbnQ4QXJyYXksXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBLZXlyaW5nLCB7IGRlY29kZUFkZHJlc3MsIGVuY29kZUFkZHJlc3MgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyB1OGFUb0J1ZmZlciB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsJztcbmltcG9ydCB7IGNvbnN0cnVjdCwgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5IH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZS9saWIvdHlwZXMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBBZGRBbm9ueW1vdXNQcm94eUFyZ3MsXG4gIEFkZFByb3h5QXJncyxcbiAgQWRkUHJveHlCYXRjaENhbGxBcmdzLFxuICBCYXRjaEFyZ3MsXG4gIEJhdGNoQ2FsbE9iamVjdCxcbiAgQ2xhaW1BcmdzLFxuICBEZWNvZGVkVHgsXG4gIEhleFN0cmluZyxcbiAgTWV0aG9kTmFtZXMsXG4gIFNlY3Rpb25OYW1lcyxcbiAgU3Rha2VBcmdzUGF5ZWVSYXcsXG4gIFN0YWtlQmF0Y2hDYWxsQXJncyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBVbnN0YWtlQXJncyxcbiAgV2l0aGRyYXdVbnN0YWtlZEFyZ3MsXG59IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZ2V0QWRkcmVzcywgZ2V0RGVsZWdhdGVBZGRyZXNzIH0gZnJvbSAnLi9pZmFjZV91dGlscyc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBWZWMgfSBmcm9tICdAcG9sa2Fkb3QvdHlwZXMnO1xuaW1wb3J0IHsgUGFsbGV0Q29uc3RhbnRNZXRhZGF0YVYxNCB9IGZyb20gJ0Bwb2xrYWRvdC90eXBlcy9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiBVc2UgYSBkdW1teSBhZGRyZXNzIGFzIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGJvbmQgb3IgYm9uZEV4dHJhIGJlY2F1c2Ugb3VyIGlucHV0cyBhbmQgb3V0cHV0cyBtb2RlbFxuICogZG9lc24ndCBzZWVtIHRvIGhhbmRsZSB0aGUgY29uY2VwdCBvZiBsb2NraW5nIGZ1bmRzIHdpdGhpbiBhIHdhbGxldCBhcyBhIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgY29pbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBTVEFLSU5HX0RFU1RJTkFUSU9OID0gZW5jb2RlQWRkcmVzcygnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfZG90VHJhbnNhY3Rpb246IFVuc2lnbmVkVHJhbnNhY3Rpb247XG4gIHByaXZhdGUgX3NpZ25lZFRyYW5zYWN0aW9uPzogc3RyaW5nO1xuICBwcml2YXRlIF9yZWdpc3RyeTogVHlwZVJlZ2lzdHJ5O1xuICBwcml2YXRlIF9jaGFpbk5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgRkFLRV9TSUdOQVRVUkUgPSBgMHgke0J1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KDI1NikuZmlsbCgxKSkudG9TdHJpbmcoJ2hleCcpfWA7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKHsga2V5IH06IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkgfSk7XG4gICAgY29uc3QgYWRkciA9IGtwLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgIHJldHVybiBhZGRyID09PSB0aGlzLl9zZW5kZXI7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiBhIHBvbGthZG90IHRyYW5zYWN0aW9uIGFuZCB1cGRhdGUgdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgLSBlZCBzaWduYXR1cmVcbiAgICovXG4gIHNpZ24oa2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignTm8gdHJhbnNhY3Rpb24gZGF0YSB0byBzaWduJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcHJ2LCBwdWIgfSA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkID0gY29uc3RydWN0LnNpZ25pbmdQYXlsb2FkKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG4gICAgLy8gU2lnbiBhIHBheWxvYWQuIFRoaXMgb3BlcmF0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYW4gb2ZmbGluZSBkZXZpY2UuXG4gICAgY29uc3Qga2V5cmluZyA9IG5ldyBLZXlyaW5nKHsgdHlwZTogJ2VkMjU1MTknIH0pO1xuICAgIGNvbnN0IHNlY3JldEtleSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmluZ0tleVBhaXIgPSBrZXlyaW5nLmFkZEZyb21QYWlyKHsgc2VjcmV0S2V5LCBwdWJsaWNLZXkgfSk7XG4gICAgY29uc3QgdHhIZXggPSB1dGlscy5jcmVhdGVTaWduZWRUeChzaWduaW5nS2V5UGFpciwgc2lnbmluZ1BheWxvYWQsIHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgfSk7XG5cbiAgICAvLyBnZXQgc2lnbmF0dXJlIGZyb20gc2lnbmVkIHR4SGV4IGdlbmVyYXRlZCBhYm92ZVxuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbdXRpbHMucmVjb3ZlclNpZ25hdHVyZUZyb21SYXdUeCh0eEhleCwgeyByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnkgfSldO1xuICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gdHhIZXg7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgc2lnbmF0dXJlIHRvIHRoZSBET1QgVHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZVxuICAgKi9cbiAgYWRkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSB1dGlscy5zZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbihcbiAgICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uLFxuICAgICAgc2lnbmF0dXJlLFxuICAgICAgdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICB0aGlzLl9yZWdpc3RyeVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0cmFuc2FjdGlvbiB3aXRoIGEgZmFrZSBzaWduYXR1cmUgYXR0YWNoZWQgd2hpY2hcbiAgICogY2FuIGJlIHVzZWQgdG8gZXN0aW1hdGUgdHJhbnNhY3Rpb24gZmVlcy5cbiAgICovXG4gIGZha2VTaWduKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV0aWxzLnNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5fZG90VHJhbnNhY3Rpb24sXG4gICAgICBUcmFuc2FjdGlvbi5GQUtFX1NJR05BVFVSRSxcbiAgICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uLm1ldGFkYXRhUnBjLFxuICAgICAgdGhpcy5fcmVnaXN0cnlcbiAgICApO1xuICB9XG5cbiAgcmVnaXN0cnkocmVnaXN0cnk6IFR5cGVSZWdpc3RyeSk6IHZvaWQge1xuICAgIHRoaXMuX3JlZ2lzdHJ5ID0gcmVnaXN0cnk7XG4gIH1cblxuICBjaGFpbk5hbWUoY2hhaW5OYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFpbk5hbWUgPSBjaGFpbk5hbWU7XG4gIH1cblxuICBzZW5kZXIoc2VuZGVyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZW5kZXIgPSBzZW5kZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2RvdFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiAmJiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Quc2lnbmluZ1BheWxvYWQodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdHJhbnNhY3Rpb25TaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9Ccm9hZGNhc3RGb3JtYXQoKS5sZW5ndGggLyAyO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fZG90VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICByZWdpc3RyeTogdGhpcy5fcmVnaXN0cnksXG4gICAgICBpc0ltbW9ydGFsRXJhOiB1dGlscy5pc1plcm9IZXgodGhpcy5fZG90VHJhbnNhY3Rpb24uZXJhKSxcbiAgICB9KSBhcyB1bmtub3duIGFzIERlY29kZWRUeDtcblxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IGNvbnN0cnVjdC50eEhhc2godGhpcy50b0Jyb2FkY2FzdEZvcm1hdCgpKSxcbiAgICAgIHNlbmRlcjogZGVjb2RlZFR4LmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogZGVjb2RlZFR4LmJsb2NrSGFzaCxcbiAgICAgIGJsb2NrTnVtYmVyOiBkZWNvZGVkVHguYmxvY2tOdW1iZXIsXG4gICAgICBnZW5lc2lzSGFzaDogZGVjb2RlZFR4LmdlbmVzaXNIYXNoLFxuICAgICAgbm9uY2U6IGRlY29kZWRUeC5ub25jZSxcbiAgICAgIHNwZWNWZXJzaW9uOiBkZWNvZGVkVHguc3BlY1ZlcnNpb24sXG4gICAgICB0cmFuc2FjdGlvblZlcnNpb246IGRlY29kZWRUeC50cmFuc2FjdGlvblZlcnNpb24sXG4gICAgICBlcmFQZXJpb2Q6IGRlY29kZWRUeC5lcmFQZXJpb2QsXG4gICAgICBjaGFpbk5hbWU6IHRoaXMuX2NoYWluTmFtZSxcbiAgICAgIHRpcDogZGVjb2RlZFR4LnRpcCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzUHJveHlUcmFuc2Zlcih0eE1ldGhvZCkpIHtcbiAgICAgICAgY29uc3Qga2V5cGFpclJlYWwgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGdldEFkZHJlc3ModHhNZXRob2QpKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Lm93bmVyID0ga2V5cGFpclJlYWwuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICAgIHJlc3VsdC5mb3JjZVByb3h5VHlwZSA9IHR4TWV0aG9kLmZvcmNlUHJveHlUeXBlO1xuICAgICAgICBjb25zdCBkZWNvZGVkQ2FsbCA9IHV0aWxzLmRlY29kZUNhbGxNZXRob2QodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHQudG8gPSBrZXlwYWlyRGVzdC5nZXRBZGRyZXNzKHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGRlY29kZWRDYWxsLnZhbHVlO1xuICAgICAgfSBlbHNlIGlmICh1dGlscy5pc1RyYW5zZmVyKHR4TWV0aG9kKSkge1xuICAgICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuZGVzdC5pZCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3VsdC50byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzVHJhbnNmZXJBbGwodHhNZXRob2QpKSB7XG4gICAgICAgIGNvbnN0IGtleXBhaXJEZXN0ID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0LnRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKGBTZXJpYWxpemluZyB1bmtub3duIFRyYW5zZmVyIHR5cGUgcGFyYW1ldGVyc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgICAgaWYgKHV0aWxzLmlzQm9uZCh0eE1ldGhvZCkpIHtcbiAgICAgICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3ModHhNZXRob2QuY29udHJvbGxlci5pZCwgZmFsc2UsIHRoaXMuX3JlZ2lzdHJ5LmNoYWluU1M1OCkpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzdWx0LmNvbnRyb2xsZXIgPSBrZXlwYWlyLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgICByZXN1bHQuYW1vdW50ID0gdHhNZXRob2QudmFsdWU7XG5cbiAgICAgICAgY29uc3QgcGF5ZWUgPSB0eE1ldGhvZC5wYXllZSBhcyBTdGFrZUFyZ3NQYXllZVJhdztcbiAgICAgICAgaWYgKHBheWVlLmFjY291bnQpIHtcbiAgICAgICAgICBjb25zdCBrZXlwYWlyID0gbmV3IEtleVBhaXIoe1xuICAgICAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKHBheWVlLmFjY291bnQsIGZhbHNlLCB0aGlzLl9yZWdpc3RyeS5jaGFpblNTNTgpKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmVzdWx0LnBheWVlID0ga2V5cGFpci5nZXRBZGRyZXNzKHV0aWxzLmdldEFkZHJlc3NGb3JtYXQodGhpcy5fY29pbkNvbmZpZy5uYW1lIGFzIERvdEFzc2V0VHlwZXMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBwYXllZVR5cGUgPSB1dGlscy5jYXBpdGFsaXplRmlyc3RMZXR0ZXIoT2JqZWN0LmtleXMocGF5ZWUpWzBdKSBhcyBzdHJpbmc7XG4gICAgICAgICAgcmVzdWx0LnBheWVlID0gcGF5ZWVUeXBlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQm9uZEV4dHJhKGRlY29kZWRUeC5tZXRob2QuYXJncykpIHtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGRlY29kZWRUeC5tZXRob2QuYXJncy5tYXhBZGRpdGlvbmFsO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BZGRyZXNzSW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGxldCB0eE1ldGhvZDogQWRkQW5vbnltb3VzUHJveHlBcmdzIHwgQWRkUHJveHlBcmdzO1xuICAgICAgaWYgKChkZWNvZGVkVHgubWV0aG9kPy5hcmdzIGFzIEFkZFByb3h5QXJncykuZGVsZWdhdGUpIHtcbiAgICAgICAgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQWRkUHJveHlBcmdzO1xuICAgICAgICBjb25zdCBkZWxlZ2F0ZUFkZHJlc3MgPSBnZXREZWxlZ2F0ZUFkZHJlc3ModHhNZXRob2QpO1xuICAgICAgICBjb25zdCBkZWNvZGVkQWRkcmVzcyA9IGRlY29kZUFkZHJlc3MoZGVsZWdhdGVBZGRyZXNzLCBmYWxzZSwgdGhpcy5fcmVnaXN0cnkuY2hhaW5TUzU4KTtcbiAgICAgICAgY29uc3Qga2V5cGFpciA9IG5ldyBLZXlQYWlyKHsgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVkQWRkcmVzcykudG9TdHJpbmcoJ2hleCcpIH0pO1xuICAgICAgICByZXN1bHQub3duZXIgPSBrZXlwYWlyLmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQWRkQW5vbnltb3VzUHJveHlBcmdzO1xuICAgICAgICByZXN1bHQuaW5kZXggPSB0eE1ldGhvZC5pbmRleDtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5tZXRob2QgPSB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRob2Q7XG4gICAgICByZXN1bHQucHJveHlUeXBlID0gdHhNZXRob2QucHJveHlUeXBlO1xuICAgICAgcmVzdWx0LmRlbGF5ID0gdHhNZXRob2QuZGVsYXk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2spIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFVuc3Rha2VBcmdzO1xuICAgICAgcmVzdWx0LmFtb3VudCA9IHR4TWV0aG9kLnZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIFdpdGhkcmF3VW5zdGFrZWRBcmdzO1xuICAgICAgcmVzdWx0Lm51bVNsYXNoaW5nU3BhbnMgPSB0eE1ldGhvZC5udW1TbGFzaGluZ1NwYW5zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW0pIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzIGFzIENsYWltQXJncztcbiAgICAgIHJlc3VsdC52YWxpZGF0b3JTdGFzaCA9IHR4TWV0aG9kLnZhbGlkYXRvclN0YXNoO1xuICAgICAgcmVzdWx0LmNsYWltRXJhID0gdHhNZXRob2QuZXJhO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5CYXRjaCkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgQmF0Y2hBcmdzO1xuICAgICAgcmVzdWx0LmJhdGNoQ2FsbHMgPSB0eE1ldGhvZC5jYWxscztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdvd25lcicsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24udG8/LnRvU3RyaW5nKCkgfHwgJycsXG4gICAgICAgICAgYW1vdW50OiBqc29uLmFtb3VudD8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBvd25lcjoganNvbi5vd25lcixcbiAgICAgIGZvcmNlUHJveHlUeXBlOiBqc29uLmZvcmNlUHJveHlUeXBlLFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ0FjdGl2YXRlVHJhbnNhY3Rpb24oanNvbjogVHhEYXRhLCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGV4cGxhbmF0aW9uUmVzdWx0LmRpc3BsYXlPcmRlci5wdXNoKCdwYXllZScsICdmb3JjZVByb3h5VHlwZScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGFkZHJlc3M6IGpzb24uY29udHJvbGxlcj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICAgICAgICBhbW91bnQ6IGpzb24uYW1vdW50IHx8ICcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBheWVlOiBqc29uLnBheWVlLFxuICAgICAgZm9yY2VQcm94eVR5cGU6IGpzb24uZm9yY2VQcm94eVR5cGUsXG4gICAgfTtcbiAgfVxuXG4gIGV4cGxhaW5BZGRyZXNzSW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbihcbiAgICBqc29uOiBUeERhdGEsXG4gICAgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25cbiAgKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgZXhwbGFuYXRpb25SZXN1bHQuZGlzcGxheU9yZGVyLnB1c2goJ293bmVyJywgJ3Byb3h5VHlwZScsICdkZWxheScpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG93bmVyOiBqc29uLm93bmVyLFxuICAgICAgcHJveHlUeXBlOiBqc29uLnByb3h5VHlwZSxcbiAgICAgIGRlbGF5OiBqc29uLmRlbGF5LFxuICAgIH07XG4gIH1cblxuICBleHBsYWluU3Rha2luZ1VubG9ja1RyYW5zYWN0aW9uKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZXhwbGFuYXRpb25SZXN1bHQsXG4gICAgICBvdXRwdXRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBqc29uLnNlbmRlci50b1N0cmluZygpLFxuICAgICAgICAgIGFtb3VudDoganNvbi5hbW91bnQgfHwgJycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cycsICdmZWUnLCAndHlwZSddO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcbiAgICBjb25zdCBleHBsYW5hdGlvblJlc3VsdDogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgIC8vIHR4aGFzaCB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0cmFuc2FjdGlvbnNcbiAgICAgIGlkOiByZXN1bHQuaWQsXG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBvdXRwdXRBbW91bnQ6IHJlc3VsdC5hbW91bnQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIG91dHB1dHMsXG4gICAgICBmZWU6IHtcbiAgICAgICAgZmVlOiByZXN1bHQudGlwPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgICB0eXBlOiAndGlwJyxcbiAgICAgIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblRyYW5zZmVyVHJhbnNhY3Rpb24ocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5TdGFraW5nQWN0aXZhdGVUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFkZHJlc3NJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpbkFkZHJlc3NJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhwbGFpblN0YWtpbmdVbmxvY2tUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kb3RUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodGhpcy5fZG90VHJhbnNhY3Rpb24sIHtcbiAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9yZWdpc3RyeSxcbiAgICAgIGlzSW1tb3J0YWxFcmE6IHV0aWxzLmlzWmVyb0hleCh0aGlzLl9kb3RUcmFuc2FjdGlvbi5lcmEpLFxuICAgIH0pIGFzIHVua25vd24gYXMgRGVjb2RlZFR4O1xuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuZGVjb2RlSW5wdXRzQW5kT3V0cHV0c0ZvclNlbmQoZGVjb2RlZFR4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkJhdGNoKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JCYXRjaChkZWNvZGVkVHgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JCb25kKGRlY29kZWRUeCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrKSB7XG4gICAgICB0aGlzLmRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JVbmJvbmQoZGVjb2RlZFR4KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdykge1xuICAgICAgdGhpcy5kZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yV2l0aGRyYXdVbmJvbmQoZGVjb2RlZFR4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JTZW5kKGRlY29kZWRUeDogRGVjb2RlZFR4KSB7XG4gICAgY29uc3QgdHhNZXRob2QgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3M7XG4gICAgbGV0IHRvOiBzdHJpbmc7XG4gICAgbGV0IHZhbHVlOiBzdHJpbmc7XG4gICAgbGV0IGZyb206IHN0cmluZztcbiAgICBpZiAodXRpbHMuaXNQcm94eVRyYW5zZmVyKHR4TWV0aG9kKSkge1xuICAgICAgY29uc3QgZGVjb2RlZENhbGwgPSB1dGlscy5kZWNvZGVDYWxsTWV0aG9kKHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICAgIG1ldGFkYXRhUnBjOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi5tZXRhZGF0YVJwYyxcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBrZXlwYWlyRGVzdCA9IG5ldyBLZXlQYWlyKHtcbiAgICAgICAgcHViOiBCdWZmZXIuZnJvbShkZWNvZGVBZGRyZXNzKGRlY29kZWRDYWxsLmRlc3QuaWQpKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGtleXBhaXJGcm9tID0gbmV3IEtleVBhaXIoe1xuICAgICAgICBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoZ2V0QWRkcmVzcyh0eE1ldGhvZCkpKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9KTtcbiAgICAgIHRvID0ga2V5cGFpckRlc3QuZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgICB2YWx1ZSA9IGAke2RlY29kZWRDYWxsLnZhbHVlfWA7XG4gICAgICBmcm9tID0ga2V5cGFpckZyb20uZ2V0QWRkcmVzcyh1dGlscy5nZXRBZGRyZXNzRm9ybWF0KHRoaXMuX2NvaW5Db25maWcubmFtZSBhcyBEb3RBc3NldFR5cGVzKSk7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1RyYW5zZmVyQWxsKHR4TWV0aG9kKSkge1xuICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG4gICAgICB0byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgdmFsdWUgPSAnMCc7IC8vIERPVCB0cmFuc2ZlckFsbCdzIGRvIG5vdCBkZXNlcmlhbGl6ZSBhbW91bnRzXG4gICAgICBmcm9tID0gZGVjb2RlZFR4LmFkZHJlc3M7XG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1RyYW5zZmVyKHR4TWV0aG9kKSkge1xuICAgICAgY29uc3Qga2V5cGFpckRlc3QgPSBuZXcgS2V5UGFpcih7XG4gICAgICAgIHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfSk7XG4gICAgICB0byA9IGtleXBhaXJEZXN0LmdldEFkZHJlc3ModXRpbHMuZ2V0QWRkcmVzc0Zvcm1hdCh0aGlzLl9jb2luQ29uZmlnLm5hbWUgYXMgRG90QXNzZXRUeXBlcykpO1xuICAgICAgdmFsdWUgPSB0eE1ldGhvZC52YWx1ZTtcbiAgICAgIGZyb20gPSBkZWNvZGVkVHguYWRkcmVzcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcihgTG9hZGluZyBpbnB1dHMgb2YgdW5rbm93biBUcmFuc2ZlciB0eXBlIHBhcmFtZXRlcnNgKTtcbiAgICB9XG4gICAgdGhpcy5fb3V0cHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdG8sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IGZyb20sXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JCYXRjaChkZWNvZGVkVHg6IERlY29kZWRUeCkge1xuICAgIGNvbnN0IHNlbmRlciA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcblxuICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgIGlmICh1dGlscy5pc1N0YWtpbmdCYXRjaCh0eE1ldGhvZCkpIHtcbiAgICAgIGlmICghdHhNZXRob2QuY2FsbHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdmYWlsZWQgdG8gZGVjb2RlIGNhbGxzIGZyb20gYmF0Y2ggdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9uZE1ldGhvZCA9ICh0eE1ldGhvZC5jYWxsc1swXSBhcyBCYXRjaENhbGxPYmplY3QpLmNhbGxJbmRleDtcbiAgICAgIGNvbnN0IGRlY29kZWRCb25kQ2FsbCA9IHRoaXMuX3JlZ2lzdHJ5LmZpbmRNZXRhQ2FsbCh0b1VpbnQ4QXJyYXkodXRpbHMuc3RyaXBIZXhQcmVmaXgoYm9uZE1ldGhvZCkpKTtcbiAgICAgIGlmIChkZWNvZGVkQm9uZENhbGwuc2VjdGlvbiAhPT0gU2VjdGlvbk5hbWVzLlN0YWtpbmcgfHwgZGVjb2RlZEJvbmRDYWxsLm1ldGhvZCAhPT0gTWV0aG9kTmFtZXMuQm9uZCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgYmF0Y2ggdHJhbnNhY3Rpb24sIG9ubHkgc3Rha2luZyBiYXRjaCBjYWxscyBhcmUgc3VwcG9ydGVkLCBleHBlY3RlZCBmaXJzdCBjYWxsIHRvIGJlIGJvbmQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkUHJveHlNZXRob2QgPSAodHhNZXRob2QuY2FsbHNbMV0gYXMgQmF0Y2hDYWxsT2JqZWN0KS5jYWxsSW5kZXg7XG4gICAgICBjb25zdCBkZWNvZGVkQWRkUHJveHlDYWxsID0gdGhpcy5fcmVnaXN0cnkuZmluZE1ldGFDYWxsKHRvVWludDhBcnJheSh1dGlscy5zdHJpcEhleFByZWZpeChhZGRQcm94eU1ldGhvZCkpKTtcbiAgICAgIGlmIChkZWNvZGVkQWRkUHJveHlDYWxsLnNlY3Rpb24gIT09IFNlY3Rpb25OYW1lcy5Qcm94eSB8fCBkZWNvZGVkQWRkUHJveHlDYWxsLm1ldGhvZCAhPT0gTWV0aG9kTmFtZXMuQWRkUHJveHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIGJhdGNoIHRyYW5zYWN0aW9uLCBvbmx5IHN0YWtpbmcgYmF0Y2ggY2FsbHMgYXJlIHN1cHBvcnRlZCwgZXhwZWN0ZWQgc2Vjb25kIGNhbGwgdG8gYmUgYWRkUHJveHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdGFrZUFyZ3MgPSB0eE1ldGhvZC5jYWxsc1swXS5hcmdzIGFzIFN0YWtlQmF0Y2hDYWxsQXJncztcbiAgICAgIGNvbnN0IGFkZFByb3h5QXJncyA9IHR4TWV0aG9kLmNhbGxzWzFdLmFyZ3MgYXMgQWRkUHJveHlCYXRjaENhbGxBcmdzO1xuICAgICAgY29uc3QgYm9uZFZhbHVlID0gYCR7c3Rha2VBcmdzLnZhbHVlfWA7XG4gICAgICBjb25zdCBwcm94eUFkZHJlc3MgPSBnZXREZWxlZ2F0ZUFkZHJlc3MoYWRkUHJveHlBcmdzKTtcblxuICAgICAgdGhpcy5faW5wdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBzZW5kZXIsXG4gICAgICAgIHZhbHVlOiBib25kVmFsdWUsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogU1RBS0lOR19ERVNUSU5BVElPTixcbiAgICAgICAgdmFsdWU6IGJvbmRWYWx1ZSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGFkZFByb3h5Q29zdCA9IHRoaXMuZ2V0QWRkUHJveHlDb3N0KCkudG9TdHJpbmcoMTApO1xuICAgICAgdGhpcy5faW5wdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBzZW5kZXIsXG4gICAgICAgIHZhbHVlOiBhZGRQcm94eUNvc3QsXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fb3V0cHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogcHJveHlBZGRyZXNzLFxuICAgICAgICB2YWx1ZTogYWRkUHJveHlDb3N0LFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzVW5zdGFraW5nQmF0Y2godHhNZXRob2QpKSB7XG4gICAgICBpZiAoIXR4TWV0aG9kLmNhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignZmFpbGVkIHRvIGRlY29kZSBjYWxscyBmcm9tIGJhdGNoIHRyYW5zYWN0aW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbW92ZVByb3h5TWV0aG9kID0gKHR4TWV0aG9kLmNhbGxzWzBdIGFzIEJhdGNoQ2FsbE9iamVjdCkuY2FsbEluZGV4O1xuICAgICAgY29uc3QgZGVjb2RlZFJlbW92ZVByb3h5Q2FsbCA9IHRoaXMuX3JlZ2lzdHJ5LmZpbmRNZXRhQ2FsbCh0b1VpbnQ4QXJyYXkodXRpbHMuc3RyaXBIZXhQcmVmaXgocmVtb3ZlUHJveHlNZXRob2QpKSk7XG4gICAgICBpZiAoXG4gICAgICAgIGRlY29kZWRSZW1vdmVQcm94eUNhbGwuc2VjdGlvbiAhPT0gU2VjdGlvbk5hbWVzLlByb3h5IHx8XG4gICAgICAgIGRlY29kZWRSZW1vdmVQcm94eUNhbGwubWV0aG9kICE9PSBNZXRob2ROYW1lcy5SZW1vdmVQcm94eVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAnSW52YWxpZCBiYXRjaCB0cmFuc2FjdGlvbiwgb25seSBzdGFraW5nIGJhdGNoIGNhbGxzIGFyZSBzdXBwb3J0ZWQsIGV4cGVjdGVkIGZpcnN0IGNhbGwgdG8gYmUgcmVtb3ZlUHJveHkuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgY2hpbGxNZXRob2QgPSAodHhNZXRob2QuY2FsbHNbMV0gYXMgQmF0Y2hDYWxsT2JqZWN0KS5jYWxsSW5kZXg7XG4gICAgICBjb25zdCBkZWNvZGVkQ2hpbGxDYWxsID0gdGhpcy5fcmVnaXN0cnkuZmluZE1ldGFDYWxsKHRvVWludDhBcnJheSh1dGlscy5zdHJpcEhleFByZWZpeChjaGlsbE1ldGhvZCkpKTtcbiAgICAgIGlmIChkZWNvZGVkQ2hpbGxDYWxsLnNlY3Rpb24gIT09IFNlY3Rpb25OYW1lcy5TdGFraW5nIHx8IGRlY29kZWRDaGlsbENhbGwubWV0aG9kICE9PSBNZXRob2ROYW1lcy5DaGlsbCkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgJ0ludmFsaWQgYmF0Y2ggdHJhbnNhY3Rpb24sIG9ubHkgc3Rha2luZyBiYXRjaCBjYWxscyBhcmUgc3VwcG9ydGVkLCBleHBlY3RlZCBzZWNvbmQgY2FsbCB0byBiZSBjaGlsbC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCB1bnN0YWtlTWV0aG9kID0gKHR4TWV0aG9kLmNhbGxzWzJdIGFzIEJhdGNoQ2FsbE9iamVjdCkuY2FsbEluZGV4O1xuICAgICAgY29uc3QgZGVjb2RlZFVuc3Rha2VDYWxsID0gdGhpcy5fcmVnaXN0cnkuZmluZE1ldGFDYWxsKHRvVWludDhBcnJheSh1dGlscy5zdHJpcEhleFByZWZpeCh1bnN0YWtlTWV0aG9kKSkpO1xuICAgICAgaWYgKGRlY29kZWRVbnN0YWtlQ2FsbC5zZWN0aW9uICE9PSBTZWN0aW9uTmFtZXMuU3Rha2luZyB8fCBkZWNvZGVkVW5zdGFrZUNhbGwubWV0aG9kICE9PSBNZXRob2ROYW1lcy5VbmJvbmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdJbnZhbGlkIGJhdGNoIHRyYW5zYWN0aW9uLCBvbmx5IHN0YWtpbmcgYmF0Y2ggY2FsbHMgYXJlIHN1cHBvcnRlZCwgZXhwZWN0ZWQgdGhpcmQgY2FsbCB0byBiZSB1bmJvbmQuJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZW1vdmVQcm94eUFyZ3MgPSB0eE1ldGhvZC5jYWxsc1swXS5hcmdzIGFzIEFkZFByb3h5QmF0Y2hDYWxsQXJncztcbiAgICAgIGNvbnN0IHByb3h5QWRkcmVzcyA9IGdldERlbGVnYXRlQWRkcmVzcyhyZW1vdmVQcm94eUFyZ3MpO1xuXG4gICAgICBjb25zdCByZW1vdmVQcm94eUNvc3QgPSB0aGlzLmdldFJlbW92ZVByb3h5Q29zdCgpLnRvU3RyaW5nKDEwKTtcbiAgICAgIHRoaXMuX2lucHV0cy5wdXNoKHtcbiAgICAgICAgYWRkcmVzczogcHJveHlBZGRyZXNzLFxuICAgICAgICB2YWx1ZTogcmVtb3ZlUHJveHlDb3N0LFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX291dHB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHNlbmRlcixcbiAgICAgICAgdmFsdWU6IHJlbW92ZVByb3h5Q29zdCxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZW1vdmVQcm94eUNvc3QoKTogQmlnTnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBZGRQcm94eUNvc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWRkUHJveHlDb3N0KCk6IEJpZ051bWJlciB7XG4gICAgY29uc3QgcHJveHlQYWxsZXQgPSB0aGlzLl9yZWdpc3RyeS5tZXRhZGF0YS5wYWxsZXRzLmZpbmQoXG4gICAgICAocCkgPT4gcC5uYW1lLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gU2VjdGlvbk5hbWVzLlByb3h5XG4gICAgKTtcbiAgICBpZiAocHJveHlQYWxsZXQpIHtcbiAgICAgIGNvbnN0IHByb3h5RGVwb3NpdEJhc2UgPSB0aGlzLmdldENvbnN0YW50KCdQcm94eURlcG9zaXRCYXNlJywgcHJveHlQYWxsZXQuY29uc3RhbnRzKTtcbiAgICAgIGNvbnN0IHByb3h5RGVwb3NpdEZhY3RvciA9IHRoaXMuZ2V0Q29uc3RhbnQoJ1Byb3h5RGVwb3NpdEZhY3RvcicsIHByb3h5UGFsbGV0LmNvbnN0YW50cyk7XG4gICAgICByZXR1cm4gcHJveHlEZXBvc2l0QmFzZS5wbHVzKHByb3h5RGVwb3NpdEZhY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhbGxldE5hbWVzID0gdGhpcy5fcmVnaXN0cnkubWV0YWRhdGEucGFsbGV0cy5tYXAoKHApID0+IHAubmFtZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCAke1NlY3Rpb25OYW1lcy5Qcm94eX0gcGFsbGV0IGluIFske3BhbGxldE5hbWVzfV1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvbnN0YW50KG5hbWU6IHN0cmluZywgY29uc3RhbnRzOiBWZWM8UGFsbGV0Q29uc3RhbnRNZXRhZGF0YVYxND4pOiBCaWdOdW1iZXIge1xuICAgIGNvbnN0IGNvbnN0YW50ID0gY29uc3RhbnRzLmZpbmQoKGMpID0+IGMubmFtZS50b1N0cmluZygpID09PSBuYW1lKTtcbiAgICBpZiAoY29uc3RhbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29uc3RhbnROYW1lcyA9IGNvbnN0YW50cy5tYXAoKHApID0+IHAubmFtZS50b1N0cmluZygpKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgY29uc3RhbnQgJHtuYW1lfSBpbiBbJHtjb25zdGFudE5hbWVzfV1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29udmVydCBmcm9tIExpdHRsZS1FbmRpYW4gdG8gQmlnLUVuZGlhblxuICAgICAgY29uc3QgdmFsdWVCZSA9IEJ1ZmZlci5mcm9tKGNvbnN0YW50LnZhbHVlLnRvVThhKHRydWUpLnJldmVyc2UoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgcmV0dXJuIEJpZ051bWJlcih2YWx1ZUJlLCAxNik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWNvZGVJbnB1dHNBbmRPdXRwdXRzRm9yQm9uZChkZWNvZGVkVHg6IERlY29kZWRUeCkge1xuICAgIGNvbnN0IHNlbmRlciA9IGRlY29kZWRUeC5hZGRyZXNzO1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcblxuICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4Lm1ldGhvZC5hcmdzO1xuICAgIGlmIChkZWNvZGVkVHgubWV0aG9kLnBhbGxldCA9PT0gU2VjdGlvbk5hbWVzLlN0YWtpbmcpIHtcbiAgICAgIGxldCBib25kVmFsdWUgPSAnMCc7XG4gICAgICBpZiAoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lID09PSBNZXRob2ROYW1lcy5Cb25kICYmIHV0aWxzLmlzQm9uZCh0eE1ldGhvZCkpIHtcbiAgICAgICAgYm9uZFZhbHVlID0gdHhNZXRob2QudmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKGRlY29kZWRUeC5tZXRob2QubmFtZSA9PT0gTWV0aG9kTmFtZXMuQm9uZEV4dHJhICYmIHV0aWxzLmlzQm9uZEV4dHJhKHR4TWV0aG9kKSkge1xuICAgICAgICBib25kVmFsdWUgPSB0eE1ldGhvZC5tYXhBZGRpdGlvbmFsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcihgTG9hZGluZyBpbnB1dHMgb2YgdW5rbm93biBTdGFraW5nQWN0aXZhdGUgdHlwZSBwYXJhbWV0ZXJzYCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9pbnB1dHMucHVzaCh7XG4gICAgICAgIGFkZHJlc3M6IHNlbmRlcixcbiAgICAgICAgdmFsdWU6IGJvbmRWYWx1ZSxcbiAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9vdXRwdXRzLnB1c2goe1xuICAgICAgICBhZGRyZXNzOiBTVEFLSU5HX0RFU1RJTkFUSU9OLFxuICAgICAgICB2YWx1ZTogYm9uZFZhbHVlLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JVbmJvbmQoZGVjb2RlZFR4OiBEZWNvZGVkVHgpIHtcbiAgICB0aGlzLl9pbnB1dHMgPSBbXTtcbiAgICB0aGlzLl9vdXRwdXRzID0gW107XG4gIH1cblxuICBwcml2YXRlIGRlY29kZUlucHV0c0FuZE91dHB1dHNGb3JXaXRoZHJhd1VuYm9uZChkZWNvZGVkVHg6IERlY29kZWRUeCkge1xuICAgIHRoaXMuX2lucHV0cyA9IFtdO1xuICAgIHRoaXMuX291dHB1dHMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgc2lnbmVkIHBheWxvYWQgdXNpbmcgY29uc3RydWN0LnNpZ25UeFxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGJ1aWxkIHN0ZXAgaWYgYSBUU1Mgc2lnbmF0dXJlXG4gICAqIGlzIGFkZGVkIGFuZCB3aWxsIHNldCB0aGUgc2lnblRyYW5zYWN0aW9uIHdoaWNoIGlzIHRoZSB0eEhleCB0aGF0IHdpbGwgYmUgYnJvYWRjYXN0ZWRcbiAgICogQXMgd2VsbCBhcyBhZGQgdGhlIHNpZ25hdHVyZSB1c2VkIHRvIHNpZ24gdG8gdGhlIHNpZ25hdHVyZSBhcnJheSBpbiBoZXggZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byBiZSBhZGRlZCB0byBhIGRvdCB0cmFuc2FjdGlvblxuICAgKi9cbiAgY29uc3RydWN0U2lnbmVkUGF5bG9hZChzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIC8vIDB4MDAgbWVhbnMgaXRzIGFuIEVEMjU1MTkgc2lnbmF0dXJlXG4gICAgY29uc3QgZWRTaWduYXR1cmUgPSBgMHgwMCR7c2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKX1gIGFzIEhleFN0cmluZztcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IGNvbnN0cnVjdC5zaWduZWRUeCh0aGlzLl9kb3RUcmFuc2FjdGlvbiwgZWRTaWduYXR1cmUsIHtcbiAgICAgICAgcmVnaXN0cnk6IHRoaXMuX3JlZ2lzdHJ5LFxuICAgICAgICBtZXRhZGF0YVJwYzogdGhpcy5fZG90VHJhbnNhY3Rpb24ubWV0YWRhdGFScGMsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKGBVbmFibGUgdG8gc2lnbiBkb3QgdHJhbnNhY3Rpb24gd2l0aCBzaWduYXR1cmUgJHtlZFNpZ25hdHVyZX0gYCArIGUpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbc2lnbmF0dXJlLnRvU3RyaW5nKCdoZXgnKV07XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0eDogVW5zaWduZWRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2RvdFRyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKiovXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBjb25zdCBleHRyaW5zaWNQYXlsb2FkID0gdGhpcy5fcmVnaXN0cnkuY3JlYXRlVHlwZSgnRXh0cmluc2ljUGF5bG9hZCcsIHRoaXMuX2RvdFRyYW5zYWN0aW9uLCB7XG4gICAgICB2ZXJzaW9uOiB0aGlzLl9kb3RUcmFuc2FjdGlvbi52ZXJzaW9uLFxuICAgIH0pO1xuICAgIHJldHVybiB1OGFUb0J1ZmZlcihleHRyaW5zaWNQYXlsb2FkLnRvVThhKHsgbWV0aG9kOiB0cnVlIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0LlxuICAgKi9cbiAgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-coin-dot",
|
|
3
|
-
"version": "1.3.3-alpha.
|
|
3
|
+
"version": "1.3.3-alpha.13",
|
|
4
4
|
"description": "BitGo SDK coin library for Polkadot",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo-beta/sdk-core": "2.4.1-alpha.
|
|
44
|
-
"@bitgo-beta/statics": "10.0.1-alpha.
|
|
43
|
+
"@bitgo-beta/sdk-core": "2.4.1-alpha.13",
|
|
44
|
+
"@bitgo-beta/statics": "10.0.1-alpha.13",
|
|
45
45
|
"@polkadot/api": "9.3.3",
|
|
46
46
|
"@polkadot/keyring": "^10.1.8",
|
|
47
47
|
"@polkadot/types": "9.3.3",
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
"tweetnacl": "^1.0.3"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@bitgo-beta/sdk-api": "1.6.1-alpha.
|
|
61
|
-
"@bitgo-beta/sdk-test": "^1.2.
|
|
60
|
+
"@bitgo-beta/sdk-api": "1.6.1-alpha.13",
|
|
61
|
+
"@bitgo-beta/sdk-test": "^1.2.6",
|
|
62
62
|
"@types/lodash": "^4.14.151"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "d863320d891a1d21bc4002bcaa2e2572619bc707"
|
|
65
65
|
}
|