@bitgo/sdk-core 2.0.0-rc.0 → 2.0.0-rc.11

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.
Files changed (112) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +2 -0
  3. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/blsKeyPair.js +49 -19
  5. package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
  6. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  7. package/dist/src/account-lib/baseCoin/errors.js +8 -2
  8. package/dist/src/account-lib/baseCoin/iface.d.ts +2 -0
  9. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  10. package/dist/src/account-lib/baseCoin/iface.js +1 -1
  11. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +5 -5
  12. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  13. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +9 -10
  14. package/dist/src/account-lib/mpc/index.d.ts +2 -1
  15. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  16. package/dist/src/account-lib/mpc/index.js +7 -2
  17. package/dist/src/account-lib/mpc/shamir.d.ts +3 -2
  18. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -1
  19. package/dist/src/account-lib/mpc/shamir.js +41 -27
  20. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +5 -2
  21. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  22. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +7 -5
  23. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  24. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +4 -3
  25. package/dist/src/account-lib/util/crypto.d.ts +1 -1
  26. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  27. package/dist/src/account-lib/util/crypto.js +17 -14
  28. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +10 -1
  29. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  30. package/dist/src/bitgo/baseCoin/baseCoin.js +17 -4
  31. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +8 -2
  32. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  33. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  34. package/dist/src/bitgo/bip32util.d.ts +3 -3
  35. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  36. package/dist/src/bitgo/bip32util.js +1 -1
  37. package/dist/src/bitgo/bitcoin.d.ts +4 -3
  38. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  39. package/dist/src/bitgo/bitcoin.js +1 -1
  40. package/dist/src/bitgo/config.d.ts +12 -0
  41. package/dist/src/bitgo/config.d.ts.map +1 -1
  42. package/dist/src/bitgo/ecdh.d.ts +3 -3
  43. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  44. package/dist/src/bitgo/ecdh.js +1 -1
  45. package/dist/src/bitgo/environments.d.ts +1 -0
  46. package/dist/src/bitgo/environments.d.ts.map +1 -1
  47. package/dist/src/bitgo/environments.js +3 -1
  48. package/dist/src/bitgo/index.d.ts +2 -0
  49. package/dist/src/bitgo/index.d.ts.map +1 -1
  50. package/dist/src/bitgo/index.js +4 -2
  51. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  52. package/dist/src/bitgo/keychain/keychains.js +2 -2
  53. package/dist/src/bitgo/legacyBitcoin.d.ts +38 -0
  54. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -0
  55. package/dist/src/bitgo/legacyBitcoin.js +97 -0
  56. package/dist/src/bitgo/lightning/iLightning.d.ts +180 -0
  57. package/dist/src/bitgo/lightning/iLightning.d.ts.map +1 -0
  58. package/dist/src/bitgo/lightning/iLightning.js +92 -0
  59. package/dist/src/bitgo/lightning/index.d.ts +5 -0
  60. package/dist/src/bitgo/lightning/index.d.ts.map +1 -0
  61. package/dist/src/bitgo/lightning/index.js +17 -0
  62. package/dist/src/bitgo/lightning/lightning.d.ts +19 -0
  63. package/dist/src/bitgo/lightning/lightning.d.ts.map +1 -0
  64. package/dist/src/bitgo/lightning/lightning.js +92 -0
  65. package/dist/src/bitgo/lightning/lightningUtils.d.ts +26 -0
  66. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -0
  67. package/dist/src/bitgo/lightning/lightningUtils.js +123 -0
  68. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +3 -0
  69. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +1 -0
  70. package/dist/src/bitgo/lightning/lnurlCodec.js +28 -0
  71. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  72. package/dist/src/bitgo/pendingApproval/pendingApproval.js +3 -2
  73. package/dist/src/bitgo/recovery/initiate.d.ts +3 -3
  74. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  75. package/dist/src/bitgo/recovery/initiate.js +5 -24
  76. package/dist/src/bitgo/staking/iStakingWallet.d.ts +32 -0
  77. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  78. package/dist/src/bitgo/staking/iStakingWallet.js +10 -1
  79. package/dist/src/bitgo/staking/stakingWallet.d.ts +9 -1
  80. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  81. package/dist/src/bitgo/staking/stakingWallet.js +19 -4
  82. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +10 -1
  83. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  84. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +44 -12
  85. package/dist/src/bitgo/tss/ecdsa/types.d.ts +5 -0
  86. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  87. package/dist/src/bitgo/tss/ecdsa/types.js +8 -2
  88. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -1
  89. package/dist/src/bitgo/utils/blsUtils.js +93 -32
  90. package/dist/src/bitgo/utils/decode.d.ts +15 -0
  91. package/dist/src/bitgo/utils/decode.d.ts.map +1 -0
  92. package/dist/src/bitgo/utils/decode.js +56 -0
  93. package/dist/src/bitgo/utils/opengpgUtils.d.ts +33 -0
  94. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  95. package/dist/src/bitgo/utils/opengpgUtils.js +106 -2
  96. package/dist/src/bitgo/utils/tss/index.d.ts +1 -1
  97. package/dist/src/bitgo/utils/tss/index.js +2 -2
  98. package/dist/src/bitgo/utils/util.js +4 -4
  99. package/dist/src/bitgo/wallet/iWallet.d.ts +3 -0
  100. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  101. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  102. package/dist/src/bitgo/wallet/iWallets.d.ts +1 -0
  103. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  104. package/dist/src/bitgo/wallet/iWallets.js +1 -1
  105. package/dist/src/bitgo/wallet/wallet.d.ts +11 -0
  106. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  107. package/dist/src/bitgo/wallet/wallet.js +78 -11
  108. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  109. package/dist/src/bitgo/wallet/wallets.js +5 -3
  110. package/dist/src/coins/ofc.js +4 -23
  111. package/dist/tsconfig.tsbuildinfo +1847 -807
  112. package/package.json +10 -7
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lightning = void 0;
4
+ const iLightning_1 = require("./iLightning");
5
+ const lightningUtils_1 = require("./lightningUtils");
6
+ const decode_1 = require("../utils/decode");
7
+ const crypto_1 = require("crypto");
8
+ class Lightning {
9
+ constructor(bitgo, wallet) {
10
+ this.bitgo = bitgo;
11
+ this.wallet = wallet;
12
+ this.url = this.bitgo.url(`/wallet/${this.wallet.id()}/lightning`, 2);
13
+ }
14
+ async createInvoice(params) {
15
+ const body = await this.bitgo
16
+ .post(this.url + '/invoice')
17
+ .send(params)
18
+ .result();
19
+ return decode_1.decodeOrElse(iLightning_1.CreateInvoiceResponse.name, iLightning_1.CreateInvoiceResponse, body, (errors) => {
20
+ throw new Error(`error(s) parsing response body: ${errors}`);
21
+ });
22
+ }
23
+ async createDepositAddress() {
24
+ const body = await this.bitgo.post(this.url + '/address').result();
25
+ return decode_1.decodeOrElse(iLightning_1.CreateDepositAddressResponse.name, iLightning_1.CreateDepositAddressResponse, body, (errors) => {
26
+ throw new Error(`error(s) parsing response body: ${errors}`);
27
+ });
28
+ }
29
+ async payInvoice(params) {
30
+ const body = await this.bitgo
31
+ .post(this.url + '/payment')
32
+ .send(params)
33
+ .result();
34
+ return decode_1.decodeOrElse(iLightning_1.PayInvoiceResponse.name, iLightning_1.PayInvoiceResponse, body, (errors) => {
35
+ throw new Error(`error(s) parsing response body: ${errors}`);
36
+ });
37
+ }
38
+ async getBalance() {
39
+ const body = await this.bitgo.get(this.url + '/balance').result();
40
+ return decode_1.decodeOrElse(iLightning_1.GetBalanceResponse.name, iLightning_1.GetBalanceResponse, body, (errors) => {
41
+ throw new Error(`error(s) parsing response body: ${errors}`);
42
+ });
43
+ }
44
+ async withdraw(params) {
45
+ const { value } = params;
46
+ let { destination, sequenceId } = params;
47
+ if (destination === undefined) {
48
+ destination = (await this.wallet.createAddress()).address;
49
+ }
50
+ if (sequenceId === undefined) {
51
+ sequenceId = crypto_1.randomBytes(16).toString('hex');
52
+ }
53
+ const body = await this.bitgo
54
+ .post(this.url + '/withdrawal')
55
+ .send({ value, destination, sequenceId })
56
+ .result();
57
+ return decode_1.decodeOrElse(iLightning_1.WithdrawResponse.name, iLightning_1.WithdrawResponse, body, (errors) => {
58
+ throw new Error(`error(s) parsing response body: ${errors}`);
59
+ });
60
+ }
61
+ async deposit(params) {
62
+ const { amount } = params;
63
+ let { address } = params;
64
+ if (address === undefined) {
65
+ address = (await this.createDepositAddress()).address;
66
+ }
67
+ const res = await this.wallet.send({ amount, address });
68
+ return decode_1.decodeOrElse(iLightning_1.DepositResponse.name, iLightning_1.DepositResponse, res, (errors) => {
69
+ throw new Error(`error(s) parsing response body: ${errors}`);
70
+ });
71
+ }
72
+ async getInvoices(query) {
73
+ const queryParams = {};
74
+ queryParams.status = query === null || query === void 0 ? void 0 : query.status;
75
+ queryParams.limit = query === null || query === void 0 ? void 0 : query.limit;
76
+ const body = await this.bitgo
77
+ .get(this.url + '/invoices')
78
+ .query(queryParams)
79
+ .result();
80
+ return decode_1.decodeOrElse(iLightning_1.GetInvoicesResponse.name, iLightning_1.GetInvoicesResponse, body, (errors) => {
81
+ throw new Error(`error(s) parsing response body: ${errors}`);
82
+ });
83
+ }
84
+ async decodeLnurlPay(lnurl) {
85
+ return await lightningUtils_1.decodeLnurlPay(lnurl);
86
+ }
87
+ async fetchLnurlPayInvoice(params) {
88
+ return await lightningUtils_1.fetchLnurlPayInvoice(params, this.wallet.coin());
89
+ }
90
+ }
91
+ exports.Lightning = Lightning;
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBZ0JzQjtBQUN0QixxREFBd0U7QUFHeEUsNENBQStDO0FBQy9DLG1DQUFxQztBQUVyQyxNQUFhLFNBQVM7SUFLcEIsWUFBWSxLQUFnQixFQUFFLE1BQWU7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUEyQjtRQUNwRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ1osTUFBTSxFQUFFLENBQUM7UUFFWixPQUFPLHFCQUFZLENBQUMsa0NBQXFCLENBQUMsSUFBSSxFQUFFLGtDQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RGLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQjtRQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkUsT0FB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bmcsXG4gIENyZWF0ZUludm9pY2VQYXJhbXMsXG4gIFBheUludm9pY2VQYXJhbXMsXG4gIExpZ2h0bmluZ1dpdGhkcmF3YWxQYXJhbXMsXG4gIExpZ2h0bmluZ0RlcG9zaXRQYXJhbXMsXG4gIExudXJsUGF5UGFyYW1zLFxuICBDcmVhdGVJbnZvaWNlUmVzcG9uc2UsXG4gIENyZWF0ZURlcG9zaXRBZGRyZXNzUmVzcG9uc2UsXG4gIFBheUludm9pY2VSZXNwb25zZSxcbiAgR2V0QmFsYW5jZVJlc3BvbnNlLFxuICBXaXRoZHJhd1Jlc3BvbnNlLFxuICBEZXBvc2l0UmVzcG9uc2UsXG4gIEdldEludm9pY2VzUXVlcnksXG4gIEdldEludm9pY2VzUmVzcG9uc2UsXG4gIERlY29kZWRMbnVybFBheVJlcXVlc3QsXG59IGZyb20gJy4vaUxpZ2h0bmluZyc7XG5pbXBvcnQgeyBkZWNvZGVMbnVybFBheSwgZmV0Y2hMbnVybFBheUludm9pY2UgfSBmcm9tICcuL2xpZ2h0bmluZ1V0aWxzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzL2RlY29kZSc7XG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5cbmV4cG9ydCBjbGFzcyBMaWdodG5pbmcgaW1wbGVtZW50cyBJTGlnaHRuaW5nIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHdhbGxldDogSVdhbGxldDtcbiAgcHJpdmF0ZSByZWFkb25seSB1cmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB3YWxsZXQ6IElXYWxsZXQpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy51cmwgPSB0aGlzLmJpdGdvLnVybChgL3dhbGxldC8ke3RoaXMud2FsbGV0LmlkKCl9L2xpZ2h0bmluZ2AsIDIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUludm9pY2UocGFyYW1zOiBDcmVhdGVJbnZvaWNlUGFyYW1zKTogUHJvbWlzZTxDcmVhdGVJbnZvaWNlUmVzcG9uc2U+IHtcbiAgICBjb25zdCBib2R5ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy51cmwgKyAnL2ludm9pY2UnKVxuICAgICAgLnNlbmQocGFyYW1zKVxuICAgICAgLnJlc3VsdCgpO1xuXG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShDcmVhdGVJbnZvaWNlUmVzcG9uc2UubmFtZSwgQ3JlYXRlSW52b2ljZVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlRGVwb3NpdEFkZHJlc3MoKTogUHJvbWlzZTxDcmVhdGVEZXBvc2l0QWRkcmVzc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuYml0Z28ucG9zdCh0aGlzLnVybCArICcvYWRkcmVzcycpLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoQ3JlYXRlRGVwb3NpdEFkZHJlc3NSZXNwb25zZS5uYW1lLCBDcmVhdGVEZXBvc2l0QWRkcmVzc1Jlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGF5SW52b2ljZShwYXJhbXM6IFBheUludm9pY2VQYXJhbXMpOiBQcm9taXNlPFBheUludm9pY2VSZXNwb25zZT4ge1xuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLnVybCArICcvcGF5bWVudCcpXG4gICAgICAuc2VuZChwYXJhbXMpXG4gICAgICAucmVzdWx0KCk7XG5cbiAgICByZXR1cm4gZGVjb2RlT3JFbHNlKFBheUludm9pY2VSZXNwb25zZS5uYW1lLCBQYXlJbnZvaWNlUmVzcG9uc2UsIGJvZHksIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZSBib2R5OiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRCYWxhbmNlKCk6IFByb21pc2U8R2V0QmFsYW5jZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgYm9keSA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsICsgJy9iYWxhbmNlJykucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShHZXRCYWxhbmNlUmVzcG9uc2UubmFtZSwgR2V0QmFsYW5jZVJlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgd2l0aGRyYXcocGFyYW1zOiBMaWdodG5pbmdXaXRoZHJhd2FsUGFyYW1zKTogUHJvbWlzZTxXaXRoZHJhd1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gcGFyYW1zO1xuICAgIGxldCB7IGRlc3RpbmF0aW9uLCBzZXF1ZW5jZUlkIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoZGVzdGluYXRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVzdGluYXRpb24gPSAoYXdhaXQgdGhpcy53YWxsZXQuY3JlYXRlQWRkcmVzcygpKS5hZGRyZXNzO1xuICAgIH1cblxuICAgIGlmIChzZXF1ZW5jZUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlcXVlbmNlSWQgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoJ2hleCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLnVybCArICcvd2l0aGRyYXdhbCcpXG4gICAgICAuc2VuZCh7IHZhbHVlLCBkZXN0aW5hdGlvbiwgc2VxdWVuY2VJZCB9KVxuICAgICAgLnJlc3VsdCgpO1xuICAgIHJldHVybiBkZWNvZGVPckVsc2UoV2l0aGRyYXdSZXNwb25zZS5uYW1lLCBXaXRoZHJhd1Jlc3BvbnNlLCBib2R5LCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwb3NpdChwYXJhbXM6IExpZ2h0bmluZ0RlcG9zaXRQYXJhbXMpOiBQcm9taXNlPERlcG9zaXRSZXNwb25zZT4ge1xuICAgIGNvbnN0IHsgYW1vdW50IH0gPSBwYXJhbXM7XG4gICAgbGV0IHsgYWRkcmVzcyB9ID0gcGFyYW1zO1xuXG4gICAgaWYgKGFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWRkcmVzcyA9IChhd2FpdCB0aGlzLmNyZWF0ZURlcG9zaXRBZGRyZXNzKCkpLmFkZHJlc3M7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy53YWxsZXQuc2VuZCh7IGFtb3VudCwgYWRkcmVzcyB9KTtcblxuICAgIHJldHVybiBkZWNvZGVPckVsc2UoRGVwb3NpdFJlc3BvbnNlLm5hbWUsIERlcG9zaXRSZXNwb25zZSwgcmVzLCAoZXJyb3JzKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVycm9yKHMpIHBhcnNpbmcgcmVzcG9uc2UgYm9keTogJHtlcnJvcnN9YCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SW52b2ljZXMocXVlcnk/OiBHZXRJbnZvaWNlc1F1ZXJ5KTogUHJvbWlzZTxHZXRJbnZvaWNlc1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IHsgc3RhdHVzPzogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9ID0ge307XG4gICAgcXVlcnlQYXJhbXMuc3RhdHVzID0gcXVlcnk/LnN0YXR1cztcbiAgICBxdWVyeVBhcmFtcy5saW1pdCA9IHF1ZXJ5Py5saW1pdDtcblxuICAgIGNvbnN0IGJvZHkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMudXJsICsgJy9pbnZvaWNlcycpXG4gICAgICAucXVlcnkocXVlcnlQYXJhbXMpXG4gICAgICAucmVzdWx0KCk7XG4gICAgcmV0dXJuIGRlY29kZU9yRWxzZShHZXRJbnZvaWNlc1Jlc3BvbnNlLm5hbWUsIEdldEludm9pY2VzUmVzcG9uc2UsIGJvZHksIChlcnJvcnMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyByZXNwb25zZSBib2R5OiAke2Vycm9yc31gKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWNvZGVMbnVybFBheShsbnVybDogc3RyaW5nKTogUHJvbWlzZTxEZWNvZGVkTG51cmxQYXlSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IGRlY29kZUxudXJsUGF5KGxudXJsKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaExudXJsUGF5SW52b2ljZShwYXJhbXM6IExudXJsUGF5UGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZmV0Y2hMbnVybFBheUludm9pY2UocGFyYW1zLCB0aGlzLndhbGxldC5jb2luKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { DecodedLnurlPayRequest, LnurlPayParams } from './iLightning';
2
+ export declare type ParsedLightningInvoice = {
3
+ milliSatoshis: string;
4
+ /** hex-encoded */
5
+ paymentHash: string;
6
+ /** hex-encoded */
7
+ pubkey: string;
8
+ /** hex-encoded */
9
+ descriptionHash?: string;
10
+ };
11
+ export declare function decodeLnurlPay(lnurl: string): Promise<DecodedLnurlPayRequest>;
12
+ export declare function fetchLnurlPayInvoice(params: LnurlPayParams, coin: string): Promise<string>;
13
+ /**
14
+ * @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
15
+ * @param {number} amount - amount intended to pay for the invoice
16
+ * @param {string} metadata - metadata that is used to verify the fetched invoice
17
+ * @throws error for invoice that does not match with amount and metadata
18
+ */
19
+ export declare function validateLnurlInvoice(invoice: ParsedLightningInvoice, milliSatAmount: string, metadata: string): void;
20
+ /**
21
+ * @param {unknown} invoiceStr - a lightning invoice
22
+ * @return {ParsedLightningInvoice}
23
+ * @throws error for invalid lightning invoice
24
+ */
25
+ export declare function parseLightningInvoice(invoiceStr: unknown): ParsedLightningInvoice;
26
+ //# sourceMappingURL=lightningUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightningUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lightningUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAoB,MAAM,cAAc,CAAC;AAIxF,oBAAY,sBAAsB,GAAG;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYnF;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAShG;AAoBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAUpH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,OAAO,GAAG,sBAAsB,CAoCjF"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.parseLightningInvoice = exports.validateLnurlInvoice = exports.fetchLnurlPayInvoice = exports.decodeLnurlPay = void 0;
23
+ const bolt11 = __importStar(require("bolt11"));
24
+ const crypto = __importStar(require("crypto"));
25
+ const request = __importStar(require("superagent"));
26
+ const iLightning_1 = require("./iLightning");
27
+ const lnurlCodec_1 = require("./lnurlCodec");
28
+ const decode_1 = require("../utils/decode");
29
+ async function decodeLnurlPay(lnurl) {
30
+ const url = lnurlCodec_1.decodeLnurl(lnurl);
31
+ const { body } = await request.get(url);
32
+ const decodedRes = decode_1.decodeOrElse(iLightning_1.LnurlPayResponse.name, iLightning_1.LnurlPayResponse, body, (errors) => {
33
+ throw new Error(`error(s) parsing lnurl response: ${errors}`);
34
+ });
35
+ const domain = new URL(url).hostname;
36
+ return {
37
+ ...decodedRes,
38
+ domain,
39
+ };
40
+ }
41
+ exports.decodeLnurlPay = decodeLnurlPay;
42
+ async function fetchLnurlPayInvoice(params, coin) {
43
+ const { callback, milliSatAmount, metadata } = params;
44
+ const { pr: invoice } = callback.includes('?')
45
+ ? (await request.get(callback + `&amount=${milliSatAmount}`)).body
46
+ : (await request.get(callback).query({ amount: milliSatAmount })).body;
47
+ const parsedInvoice = parseLightningInvoice(invoice);
48
+ validateLnurlInvoice(parsedInvoice, milliSatAmount, metadata);
49
+ return invoice;
50
+ }
51
+ exports.fetchLnurlPayInvoice = fetchLnurlPayInvoice;
52
+ function getNetworkForInvoice(invoice) {
53
+ if (invoice.startsWith('lntbs')) {
54
+ // signet invoices are not supported by our bolt11 dependency
55
+ // because the `tbs` prefix used for the invoice does not match the `tb`
56
+ // prefix used by on-chain signet addresses
57
+ // see: https://github.com/bitcoinjs/bolt11/pull/58#issuecomment-1106495709
58
+ // we can still decode the invoice however using a custom network
59
+ return {
60
+ bech32: 'tbs',
61
+ pubKeyHash: 0x6f,
62
+ scriptHash: 0xc4,
63
+ validWitnessVersions: [0, 1],
64
+ };
65
+ }
66
+ return undefined;
67
+ }
68
+ /**
69
+ * @param {ParsedLightningInvoice} invoice - a parsed lightning invoice
70
+ * @param {number} amount - amount intended to pay for the invoice
71
+ * @param {string} metadata - metadata that is used to verify the fetched invoice
72
+ * @throws error for invoice that does not match with amount and metadata
73
+ */
74
+ function validateLnurlInvoice(invoice, milliSatAmount, metadata) {
75
+ const { milliSatoshis, descriptionHash } = invoice;
76
+ if (milliSatoshis !== milliSatAmount) {
77
+ throw new Error('amount of invoice does not match with given amount');
78
+ }
79
+ const hash = crypto.createHash('sha256').update(metadata).digest('hex');
80
+ if (descriptionHash !== hash) {
81
+ throw new Error('invoice h tag does not match with hash of metadata');
82
+ }
83
+ }
84
+ exports.validateLnurlInvoice = validateLnurlInvoice;
85
+ /**
86
+ * @param {unknown} invoiceStr - a lightning invoice
87
+ * @return {ParsedLightningInvoice}
88
+ * @throws error for invalid lightning invoice
89
+ */
90
+ function parseLightningInvoice(invoiceStr) {
91
+ var _a;
92
+ if (typeof invoiceStr !== 'string') {
93
+ throw new Error('invoice is malformed');
94
+ }
95
+ let decodedInvoice;
96
+ try {
97
+ decodedInvoice = bolt11.decode(invoiceStr, getNetworkForInvoice(invoiceStr));
98
+ }
99
+ catch (e) {
100
+ throw new Error(`invoice is invalid`);
101
+ }
102
+ if (decodedInvoice.network === undefined) {
103
+ throw new Error('invoice network is invalid');
104
+ }
105
+ // The hex encoded payment hash for the invoice we are paying
106
+ const paymentHash = (_a = decodedInvoice.tags.find((tag) => tag.tagName === 'payment_hash')) === null || _a === void 0 ? void 0 : _a.data;
107
+ if (paymentHash === undefined || typeof paymentHash !== 'string') {
108
+ throw new Error('invoice payment hash is invalid');
109
+ }
110
+ // The hex encoded pub key of the lightning node that created the invoice
111
+ const pubkey = decodedInvoice.payeeNodeKey;
112
+ if (pubkey === undefined) {
113
+ throw new Error('invoice payee pub key is invalid');
114
+ }
115
+ const { millisatoshis, tags } = decodedInvoice;
116
+ if (millisatoshis === null || millisatoshis === undefined) {
117
+ throw new Error('invoice does not have an amount');
118
+ }
119
+ const descriptionHash = tags.find((tag) => tag.tagName === 'purpose_commit_hash').data;
120
+ return { milliSatoshis: millisatoshis, paymentHash, pubkey, descriptionHash };
121
+ }
122
+ exports.parseLightningInvoice = parseLightningInvoice;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsK0NBQWlDO0FBQ2pDLG9EQUFzQztBQUN0Qyw2Q0FBd0Y7QUFDeEYsNkNBQTJDO0FBQzNDLDRDQUErQztBQVl4QyxLQUFLLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDaEQsTUFBTSxHQUFHLEdBQUcsd0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLHFCQUFZLENBQUMsNkJBQWdCLENBQUMsSUFBSSxFQUFFLDZCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFFckMsT0FBTztRQUNMLEdBQUcsVUFBVTtRQUNiLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQVpELHdDQVlDO0FBRU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BQXNCLEVBQUUsSUFBWTtJQUM3RSxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdEQsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxH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RCxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQztJQUMvQyxJQUFJLGFBQWEsS0FBSyxJQUFJLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDO0lBRXZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLENBQUM7QUFDaEYsQ0FBQztBQXBDRCxzREFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBib2x0MTEgZnJvbSAnYm9sdDExJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCB7IERlY29kZWRMbnVybFBheVJlcXVlc3QsIExudXJsUGF5UGFyYW1zLCBMbnVybFBheVJlc3BvbnNlIH0gZnJvbSAnLi9pTGlnaHRuaW5nJztcbmltcG9ydCB7IGRlY29kZUxudXJsIH0gZnJvbSAnLi9sbnVybENvZGVjJztcbmltcG9ydCB7IGRlY29kZU9yRWxzZSB9IGZyb20gJy4uL3V0aWxzL2RlY29kZSc7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZExpZ2h0bmluZ0ludm9pY2UgPSB7XG4gIG1pbGxpU2F0b3NoaXM6IHN0cmluZztcbiAgLyoqIGhleC1lbmNvZGVkICovXG4gIHBheW1lbnRIYXNoOiBzdHJpbmc7XG4gIC8qKiBoZXgtZW5jb2RlZCAqL1xuICBwdWJrZXk6IHN0cmluZztcbiAgLyoqIGhleC1lbmNvZGVkICovXG4gIGRlc2NyaXB0aW9uSGFzaD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNvZGVMbnVybFBheShsbnVybDogc3RyaW5nKTogUHJvbWlzZTxEZWNvZGVkTG51cmxQYXlSZXF1ZXN0PiB7XG4gIGNvbnN0IHVybCA9IGRlY29kZUxudXJsKGxudXJsKTtcbiAgY29uc3QgeyBib2R5IH0gPSBhd2FpdCByZXF1ZXN0LmdldCh1cmwpO1xuICBjb25zdCBkZWNvZGVkUmVzID0gZGVjb2RlT3JFbHNlKExudXJsUGF5UmVzcG9uc2UubmFtZSwgTG51cmxQYXlSZXNwb25zZSwgYm9keSwgKGVycm9ycykgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IocykgcGFyc2luZyBsbnVybCByZXNwb25zZTogJHtlcnJvcnN9YCk7XG4gIH0pO1xuICBjb25zdCBkb21haW4gPSBuZXcgVVJMKHVybCkuaG9zdG5hbWU7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kZWNvZGVkUmVzLFxuICAgIGRvbWFpbixcbiAgfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoTG51cmxQYXlJbnZvaWNlKHBhcmFtczogTG51cmxQYXlQYXJhbXMsIGNvaW46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgY2FsbGJhY2ssIG1pbGxpU2F0QW1vdW50LCBtZXRhZGF0YSB9ID0gcGFyYW1zO1xuICBjb25zdCB7IHByOiBpbnZvaWNlIH0gPSBjYWxsYmFjay5pbmNsdWRlcygnPycpXG4gICAgPyAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2sgKyBgJmFtb3VudD0ke21pbGxpU2F0QW1vdW50fWApKS5ib2R5XG4gICAgOiAoYXdhaXQgcmVxdWVzdC5nZXQoY2FsbGJhY2spLnF1ZXJ5KHsgYW1vdW50OiBtaWxsaVNhdEFtb3VudCB9KSkuYm9keTtcbiAgY29uc3QgcGFyc2VkSW52b2ljZSA9IHBhcnNlTGlnaHRuaW5nSW52b2ljZShpbnZvaWNlKTtcbiAgdmFsaWRhdGVMbnVybEludm9pY2UocGFyc2VkSW52b2ljZSwgbWlsbGlTYXRBbW91bnQsIG1ldGFkYXRhKTtcblxuICByZXR1cm4gaW52b2ljZTtcbn1cblxuZnVuY3Rpb24gZ2V0TmV0d29ya0Zvckludm9pY2UoaW52b2ljZTogc3RyaW5nKSB7XG4gIGlmIChpbnZvaWNlLnN0YXJ0c1dpdGgoJ2xudGJzJykpIHtcbiAgICAvLyBzaWduZXQgaW52b2ljZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgb3VyIGJvbHQxMSBkZXBlbmRlbmN5XG4gICAgLy8gYmVjYXVzZSB0aGUgYHRic2AgcHJlZml4IHVzZWQgZm9yIHRoZSBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHRoZSBgdGJgXG4gICAgLy8gcHJlZml4IHVzZWQgYnkgb24tY2hhaW4gc2lnbmV0IGFkZHJlc3Nlc1xuICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5qcy9ib2x0MTEvcHVsbC81OCNpc3N1ZWNvbW1lbnQtMTEwNjQ5NTcwOVxuICAgIC8vIHdlIGNhbiBzdGlsbCBkZWNvZGUgdGhlIGludm9pY2UgaG93ZXZlciB1c2luZyBhIGN1c3RvbSBuZXR3b3JrXG4gICAgcmV0dXJuIHtcbiAgICAgIGJlY2gzMjogJ3RicycsXG4gICAgICBwdWJLZXlIYXNoOiAweDZmLFxuICAgICAgc2NyaXB0SGFzaDogMHhjNCxcbiAgICAgIHZhbGlkV2l0bmVzc1ZlcnNpb25zOiBbMCwgMV0sXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZWRMaWdodG5pbmdJbnZvaWNlfSBpbnZvaWNlIC0gYSBwYXJzZWQgbGlnaHRuaW5nIGludm9pY2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBhbW91bnQgLSBhbW91bnQgaW50ZW5kZWQgdG8gcGF5IGZvciB0aGUgaW52b2ljZVxuICogQHBhcmFtIHtzdHJpbmd9IG1ldGFkYXRhIC0gbWV0YWRhdGEgdGhhdCBpcyB1c2VkIHRvIHZlcmlmeSB0aGUgZmV0Y2hlZCBpbnZvaWNlXG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZvaWNlIHRoYXQgZG9lcyBub3QgbWF0Y2ggd2l0aCBhbW91bnQgYW5kIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxudXJsSW52b2ljZShpbnZvaWNlOiBQYXJzZWRMaWdodG5pbmdJbnZvaWNlLCBtaWxsaVNhdEFtb3VudDogc3RyaW5nLCBtZXRhZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHsgbWlsbGlTYXRvc2hpcywgZGVzY3JpcHRpb25IYXNoIH0gPSBpbnZvaWNlO1xuICBpZiAobWlsbGlTYXRvc2hpcyAhPT0gbWlsbGlTYXRBbW91bnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBvZiBpbnZvaWNlIGRvZXMgbm90IG1hdGNoIHdpdGggZ2l2ZW4gYW1vdW50Jyk7XG4gIH1cblxuICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShtZXRhZGF0YSkuZGlnZXN0KCdoZXgnKTtcbiAgaWYgKGRlc2NyaXB0aW9uSGFzaCAhPT0gaGFzaCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBoIHRhZyBkb2VzIG5vdCBtYXRjaCB3aXRoIGhhc2ggb2YgbWV0YWRhdGEnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7dW5rbm93bn0gaW52b2ljZVN0ciAtIGEgbGlnaHRuaW5nIGludm9pY2VcbiAqIEByZXR1cm4ge1BhcnNlZExpZ2h0bmluZ0ludm9pY2V9XG4gKiBAdGhyb3dzIGVycm9yIGZvciBpbnZhbGlkIGxpZ2h0bmluZyBpbnZvaWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpZ2h0bmluZ0ludm9pY2UoaW52b2ljZVN0cjogdW5rbm93bik6IFBhcnNlZExpZ2h0bmluZ0ludm9pY2Uge1xuICBpZiAodHlwZW9mIGludm9pY2VTdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZvaWNlIGlzIG1hbGZvcm1lZCcpO1xuICB9XG5cbiAgbGV0IGRlY29kZWRJbnZvaWNlO1xuICB0cnkge1xuICAgIGRlY29kZWRJbnZvaWNlID0gYm9sdDExLmRlY29kZShpbnZvaWNlU3RyLCBnZXROZXR3b3JrRm9ySW52b2ljZShpbnZvaWNlU3RyKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludm9pY2UgaXMgaW52YWxpZGApO1xuICB9XG5cbiAgaWYgKGRlY29kZWRJbnZvaWNlLm5ldHdvcmsgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBuZXR3b3JrIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIC8vIFRoZSBoZXggZW5jb2RlZCBwYXltZW50IGhhc2ggZm9yIHRoZSBpbnZvaWNlIHdlIGFyZSBwYXlpbmdcbiAgY29uc3QgcGF5bWVudEhhc2ggPSBkZWNvZGVkSW52b2ljZS50YWdzLmZpbmQoKHRhZykgPT4gdGFnLnRhZ05hbWUgPT09ICdwYXltZW50X2hhc2gnKT8uZGF0YTtcbiAgaWYgKHBheW1lbnRIYXNoID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHBheW1lbnRIYXNoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBwYXltZW50IGhhc2ggaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgLy8gVGhlIGhleCBlbmNvZGVkIHB1YiBrZXkgb2YgdGhlIGxpZ2h0bmluZyBub2RlIHRoYXQgY3JlYXRlZCB0aGUgaW52b2ljZVxuICBjb25zdCBwdWJrZXkgPSBkZWNvZGVkSW52b2ljZS5wYXllZU5vZGVLZXk7XG4gIGlmIChwdWJrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBwYXllZSBwdWIga2V5IGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHsgbWlsbGlzYXRvc2hpcywgdGFncyB9ID0gZGVjb2RlZEludm9pY2U7XG4gIGlmIChtaWxsaXNhdG9zaGlzID09PSBudWxsIHx8IG1pbGxpc2F0b3NoaXMgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52b2ljZSBkb2VzIG5vdCBoYXZlIGFuIGFtb3VudCcpO1xuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRpb25IYXNoID0gdGFncy5maW5kKCh0YWcpID0+IHRhZy50YWdOYW1lID09PSAncHVycG9zZV9jb21taXRfaGFzaCcpLmRhdGE7XG5cbiAgcmV0dXJuIHsgbWlsbGlTYXRvc2hpczogbWlsbGlzYXRvc2hpcywgcGF5bWVudEhhc2gsIHB1YmtleSwgZGVzY3JpcHRpb25IYXNoIH07XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export declare function encodeLnurl(url: string): string;
2
+ export declare function decodeLnurl(lnurl: string): string;
3
+ //# sourceMappingURL=lnurlCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lnurlCodec.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/lightning/lnurlCodec.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,UAEtC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAmBxC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeLnurl = exports.encodeLnurl = void 0;
4
+ const bech32_1 = require("bech32");
5
+ function encodeLnurl(url) {
6
+ return bech32_1.bech32.encode('lnurl', bech32_1.bech32.toWords(Buffer.from(url)));
7
+ }
8
+ exports.encodeLnurl = encodeLnurl;
9
+ function decodeLnurl(lnurl) {
10
+ const splittedLnurl = lnurl.split(':');
11
+ let parsedLnurl;
12
+ if (splittedLnurl.length === 2) {
13
+ if (splittedLnurl[0] !== 'lightning') {
14
+ throw new Error('invalid lnurl');
15
+ }
16
+ parsedLnurl = splittedLnurl[1];
17
+ }
18
+ else {
19
+ parsedLnurl = splittedLnurl[0];
20
+ }
21
+ const { prefix, words } = bech32_1.bech32.decode(parsedLnurl, 2000);
22
+ if (prefix !== 'lnurl') {
23
+ throw new Error('invalid lnurl');
24
+ }
25
+ return Buffer.from(bech32_1.bech32.fromWords(words)).toString();
26
+ }
27
+ exports.decodeLnurl = decodeLnurl;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG51cmxDb2RlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvbG51cmxDb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFFaEMsU0FBZ0IsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxlQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxLQUFhO0lBQ3ZDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkMsSUFBSSxXQUFtQixDQUFDO0lBQ3hCLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDbEM7UUFDRCxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hDO1NBQU07UUFDTCxXQUFXLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ2hDO0lBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUzRCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUNsQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDekQsQ0FBQztBQW5CRCxrQ0FtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInO1xuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlTG51cmwodXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGJlY2gzMi5lbmNvZGUoJ2xudXJsJywgYmVjaDMyLnRvV29yZHMoQnVmZmVyLmZyb20odXJsKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTG51cmwobG51cmw6IHN0cmluZykge1xuICBjb25zdCBzcGxpdHRlZExudXJsID0gbG51cmwuc3BsaXQoJzonKTtcblxuICBsZXQgcGFyc2VkTG51cmw6IHN0cmluZztcbiAgaWYgKHNwbGl0dGVkTG51cmwubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHNwbGl0dGVkTG51cmxbMF0gIT09ICdsaWdodG5pbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbG51cmwnKTtcbiAgICB9XG4gICAgcGFyc2VkTG51cmwgPSBzcGxpdHRlZExudXJsWzFdO1xuICB9IGVsc2Uge1xuICAgIHBhcnNlZExudXJsID0gc3BsaXR0ZWRMbnVybFswXTtcbiAgfVxuICBjb25zdCB7IHByZWZpeCwgd29yZHMgfSA9IGJlY2gzMi5kZWNvZGUocGFyc2VkTG51cmwsIDIwMDApO1xuXG4gIGlmIChwcmVmaXggIT09ICdsbnVybCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbG51cmwnKTtcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHdvcmRzKSkudG9TdHJpbmcoKTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA0DjE"}
1
+ {"version":3,"file":"pendingApproval.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/pendingApproval/pendingApproval.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,EACL,IAAI,EACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAU;IACzB,OAAO,CAAC,gBAAgB,CAAsB;gBAElC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC,EAAE,OAAO;IAQ7G;;OAEG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;OAKG;IACH,SAAS,IAAI,SAAS;IAUtB;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,SAAS;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC;;OAEG;IACH,KAAK,IAAI,KAAK;IAId;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,IAAI,IAAI,mBAAmB;IAI3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,GAAG,CAAC,KAAK,SAAK,GAAG,MAAM;IAIvB;;;;;OAKG;IACG,GAAG,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKvE;;OAEG;YACW,cAAc;IAwB5B;;OAEG;IACG,OAAO,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FxD;;;OAGG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;;OAKG;IACG,MAAM,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;;;OAIG;IACG,6BAA6B,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuB7G;;;OAGG;IACG,0BAA0B,CAAC,MAAM,GAAE,GAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;CA6DjE"}
@@ -305,7 +305,8 @@ class PendingApproval {
305
305
  if (_.isUndefined(recreatedParsedTransaction.implicitExternalSpendAmount)) {
306
306
  return signedTransaction;
307
307
  }
308
- if (!_.isFinite(recreatedParsedTransaction.implicitExternalSpendAmount)) {
308
+ if (typeof recreatedParsedTransaction.implicitExternalSpendAmount !== 'bigint' &&
309
+ !_.isFinite(recreatedParsedTransaction.implicitExternalSpendAmount)) {
309
310
  throw new Error('implicit external spend amount could not be determined');
310
311
  }
311
312
  if (!_.isUndefined(originalParsedTransaction.implicitExternalSpendAmount) &&
@@ -316,4 +317,4 @@ class PendingApproval {
316
317
  }
317
318
  }
318
319
  exports.PendingApproval = PendingApproval;
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2Qyx3REFRNEI7QUFDNUIsb0NBQW1EO0FBR25ELE1BQWEsZUFBZTtJQU8xQixZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxtQkFBd0MsRUFBRSxNQUFnQjtRQUMzRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxPQUFPLDJCQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzNDLE9BQU8sMkJBQVMsQ0FBQyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRDtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQWdDLEVBQUU7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxLQUFLLENBQUMsY0FBYztRQUMxQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7U0FDeEU7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sYUFBYSxHQUFZLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUUxRyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQzthQUN6RTtZQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDO1NBQzdCO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLGtCQUFrQixDQUFDLFlBQVksRUFBRTtZQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7U0FDbEU7UUFFRCw4QkFBOEI7UUFDOUIsT0FBTztJQUNULENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBeUIsRUFBRTtRQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRS9ELElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ2xDOzs7Ozs7Ozs7V0FTRztRQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLGtEQUFrRDtRQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0Usc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxxQkFBYSxFQUFFLENBQUM7UUFFbEM7O1dBRUc7UUFDSCxNQUFNLHNCQUFzQixHQUFHLEtBQUssSUFBNEMsRUFBRTtZQUNoRixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxvQkFBb0IsRUFBRTtnQkFDeEM7Ozs7O21CQUtHO2dCQUNILElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRTtvQkFDYiwrRUFBK0U7b0JBQy9FLE9BQU87d0JBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO3FCQUNqQixDQUFDO2lCQUNIO2dCQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLG1DQUFtQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUU3RixDQUFDO2dCQUVGLHlGQUF5RjtnQkFDekYsSUFBSSxDQUFDLHNCQUFzQixFQUFFO29CQUMzQixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO3FCQUNuRztvQkFDRCxPQUFPLFdBQVcsQ0FBQztpQkFDcEI7Z0JBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRTVCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRTtvQkFDckMsT0FBTyxNQUFNLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ2hFO2dCQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEQ7UUFDSCxDQUFDLENBQUM7UUFFRjs7V0FFRztRQUNILE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBbUQsRUFBZ0IsRUFBRTtZQUN6RixNQUFNLGNBQWMsR0FBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuRSxJQUFJLFdBQVcsRUFBRTtnQkFDZiwrRUFBK0U7Z0JBQy9FLGNBQWMsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUM7YUFDbkU7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xFLENBQUMsQ0FBQztRQUVGLElBQUk7WUFDRixNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBTSxzQkFBc0IsRUFBRSxDQUFRLENBQUM7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuQyxPQUFPLE1BQU0sWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDaEQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQ0UsQ0FBQyxzQkFBc0I7Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xFLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLHNFQUFzRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDbkc7Z0JBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO2FBQ2pHO1lBQ0QsTUFBTSxDQUFDLENBQUM7U0FDVDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQWdDLEVBQUU7UUFDN0MsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBZ0MsRUFBRTtRQUM3QyxPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxNQUFzQixFQUFFLEtBQW9CO1FBQzlFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBRXRELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxQztRQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUYsT0FBTztZQUNMLEtBQUssRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWU7U0FDaEQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsMEJBQTBCLENBQUMsU0FBYyxFQUFFO1FBQy9DLGtFQUFrRTtRQUNsRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDNUU7UUFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0UsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDO1FBQ2pELE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNuRCxjQUFjLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUVELElBQUksa0JBQWtCLENBQUMsV0FBVyxJQUFJLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO1lBQzNGLG1GQUFtRjtZQUNuRixxRUFBcUU7WUFDckUsY0FBYyxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLO2lCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztpQkFDN0MsSUFBSSxDQUFDLGNBQWMsQ0FBQztpQkFDcEIsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLGNBQWMsQ0FBQyxVQUFVLENBQUM7U0FDbEM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RixxQkFBcUI7UUFDckIsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN0RSxRQUFRLEVBQUUsY0FBYztZQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLGdCQUFnQjtTQUM3QixDQUFDLENBQVEsQ0FBQztRQUNYLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDdkUsUUFBUSxFQUFFLGNBQWM7WUFDeEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFVBQVUsRUFBRSxpQkFBaUI7U0FDOUIsQ0FBQyxDQUFRLENBQUM7UUFFWCxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsMEJBQTBCLENBQUMsMkJBQTJCLENBQUMsRUFBRTtZQUN6RSxPQUFPLGlCQUFpQixDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsMkJBQTJCLENBQUMsRUFBRTtZQUN2RSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUNFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQywyQkFBMkIsQ0FBQztZQUNyRSwwQkFBMEIsQ0FBQywyQkFBMkIsR0FBRyx5QkFBeUIsQ0FBQywyQkFBMkIsRUFDOUc7WUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXBWRCwwQ0FvVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBjb21tb24gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBBcHByb3ZlT3B0aW9ucyxcbiAgSVBlbmRpbmdBcHByb3ZhbCxcbiAgT3duZXJUeXBlLFxuICBQZW5kaW5nQXBwcm92YWxEYXRhLFxuICBQZW5kaW5nQXBwcm92YWxJbmZvLFxuICBTdGF0ZSxcbiAgVHlwZSxcbn0gZnJvbSAnLi4vcGVuZGluZ0FwcHJvdmFsJztcbmltcG9ydCB7IFJlcXVlc3RUcmFjZXIsIFRzc1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgSVdhbGxldCB9IGZyb20gJy4uL3dhbGxldCc7XG5cbmV4cG9ydCBjbGFzcyBQZW5kaW5nQXBwcm92YWwgaW1wbGVtZW50cyBJUGVuZGluZ0FwcHJvdmFsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGJhc2VDb2luOiBJQmFzZUNvaW47XG4gIHByaXZhdGUgdHNzVXRpbHM6IFRzc1V0aWxzO1xuICBwcml2YXRlIHdhbGxldD86IElXYWxsZXQ7XG4gIHByaXZhdGUgX3BlbmRpbmdBcHByb3ZhbDogUGVuZGluZ0FwcHJvdmFsRGF0YTtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBiYXNlQ29pbjogSUJhc2VDb2luLCBwZW5kaW5nQXBwcm92YWxEYXRhOiBQZW5kaW5nQXBwcm92YWxEYXRhLCB3YWxsZXQ/OiBJV2FsbGV0KSB7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAgIHRoaXMuYmFzZUNvaW4gPSBiYXNlQ29pbjtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLnRzc1V0aWxzID0gbmV3IFRzc1V0aWxzKHRoaXMuYml0Z28sIHRoaXMuYmFzZUNvaW4sIHdhbGxldCk7XG4gICAgdGhpcy5fcGVuZGluZ0FwcHJvdmFsID0gcGVuZGluZ0FwcHJvdmFsRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlkIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3duZXIgdHlwZSAod2FsbGV0IG9yIGVudGVycHJpc2UpXG4gICAqIFBlbmRpbmcgYXBwcm92YWxzIGNhbiBiZSBhcHByb3ZlZCBvciBtb2RpZmllZCBieSBkaWZmZXJlbnQgc2NvcGVzIChkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkKVxuICAgKiBJZiBhIHBlbmRpbmcgYXBwcm92YWwgaXMgb3duZWQgYnkgYSB3YWxsZXQsIHRoZW4gaXQgY2FuIGJlIGFwcHJvdmVkIGJ5IGFkbWluaXN0cmF0b3JzIG9mIHRoZSB3YWxsZXRcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGFuIGVudGVycHJpc2UsIHRoZW4gaXQgY2FuIGJlIGFwcHJvdmVkIGJ5IGFkbWluaXN0cmF0b3JzIG9mIHRoZSBlbnRlcnByaXNlXG4gICAqL1xuICBvd25lclR5cGUoKTogT3duZXJUeXBlIHtcbiAgICBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLndhbGxldCkge1xuICAgICAgcmV0dXJuIE93bmVyVHlwZS5XQUxMRVQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nQXBwcm92YWwuZW50ZXJwcmlzZSkge1xuICAgICAgcmV0dXJuIE93bmVyVHlwZS5FTlRFUlBSSVNFO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgcGVuZGluZyBhcHByb3ZhbCBvd25lcjogbmVpdGhlciB3YWxsZXQgbm9yIGVudGVycHJpc2Ugd2FzIHByZXNlbnQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgd2FsbGV0IHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgd2FsbGV0SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLndhbGxldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVudGVycHJpc2UgSUQgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGVudGVycHJpc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuZW50ZXJwcmlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0YXRlIG9mIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBzdGF0ZSgpOiBTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5zdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGlkIG9mIHRoZSB1c2VyIHRoYXQgcGVyZm9ybWVkIHRoZSBhY3Rpb24gcmVzdWx0aW5nIGluIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBjcmVhdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5jcmVhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdHlwZSBvZiB0aGUgcGVuZGluZyBhcHByb3ZhbCAod2hhdCBpdCBhcHByb3ZlcylcbiAgICovXG4gIHR5cGUoKTogVHlwZSB7XG4gICAgaWYgKCF0aGlzLl9wZW5kaW5nQXBwcm92YWwuaW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwZW5kaW5nIGFwcHJvdmFsIGluZm8gaXMgbm90IGF2YWlsYWJsZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuaW5mby50eXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgaW5mbygpOiBQZW5kaW5nQXBwcm92YWxJbmZvIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm87XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgYXBwcm92YWxzIHRoYXQgYXJlIHJlcXVpcmVkIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBiZSBhcHByb3ZlZC5cbiAgICogRGVmYXVsdHMgdG8gMSBpZiBhcHByb3ZhbHNSZXF1aXJlZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBvYmplY3RcbiAgICovXG4gIGFwcHJvdmFsc1JlcXVpcmVkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5hcHByb3ZhbHNSZXF1aXJlZCB8fCAxO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgdXJsIGZvciB0aGlzIFBlbmRpbmdBcHByb3ZhbCBmb3IgbWFraW5nIHJlcXVlc3RzIHRvIHRoZSBzZXJ2ZXIuXG4gICAqIEBwYXJhbSBleHRyYVxuICAgKi9cbiAgdXJsKGV4dHJhID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJhc2VDb2luLnVybCgnL3BlbmRpbmdhcHByb3ZhbHMvJyArIHRoaXMuaWQoKSArIGV4dHJhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZldGNoZXMgdGhpcyBQZW5kaW5nQXBwcm92YWwgZnJvbSB0aGUgc2VydmVyIGFuZCByZXR1cm5zIGl0LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhpcyBtdXRhdGVzIHRoZSBQZW5kaW5nQXBwcm92YWwgb2JqZWN0IGluIHBsYWNlLlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyBnZXQocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8UGVuZGluZ0FwcHJvdmFsPiB7XG4gICAgdGhpcy5fcGVuZGluZ0FwcHJvdmFsID0gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy51cmwoKSkucmVzdWx0KCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0IHNlbGYud2FsbGV0IGlzIHNldFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVdhbGxldCgpOiBQcm9taXNlPHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgb2JqZWN0IHByb3BlcnR5IHRyYW5zYWN0aW9uUmVxdWVzdCcpO1xuICAgIH1cblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMud2FsbGV0KSkge1xuICAgICAgY29uc3QgdXBkYXRlZFdhbGxldDogSVdhbGxldCA9IGF3YWl0IHRoaXMuYmFzZUNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0IH0pO1xuXG4gICAgICBpZiAoXy5pc1VuZGVmaW5lZCh1cGRhdGVkV2FsbGV0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgLSB1bmFibGUgdG8gZ2V0IHdhbGxldCB1c2luZyBzb3VyY2V3YWxsZXQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy53YWxsZXQgPSB1cGRhdGVkV2FsbGV0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhbGxldC5pZCgpICE9PSB0cmFuc2FjdGlvblJlcXVlc3Quc291cmNlV2FsbGV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgc291cmNlIHdhbGxldCBmb3IgcGVuZGluZyBhcHByb3ZhbCcpO1xuICAgIH1cblxuICAgIC8vIG90aGVyd2lzZSByZXR1cm5zIHVuZGVmaW5lZFxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIHRvIGFuIGFwcHJvdmVkIHN0YXRlXG4gICAqL1xuICBhc3luYyBhcHByb3ZlKHBhcmFtczogQXBwcm92ZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFsnd2FsbGV0UGFzc3BocmFzZScsICdvdHAnXSk7XG5cbiAgICBsZXQgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiA9IHRydWU7XG4gICAgLypcbiAgICAgKiBDb2xkIHdhbGxldHMgY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9ucyBpZiB0aGUgb25seSB0aGluZyBwcm92aWRlZCBpcyB0aGUgd2FsbGV0IHBhc3NwaHJhc2VcbiAgICAgKlxuICAgICAqIFRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgcmVjcmVhdGVkIGlmIGVpdGhlclxuICAgICAqIOKAkyB0aGVyZSBpcyBhbiB4cHJ2XG4gICAgICog4oCTIHRoZXJlIGlzIGEgd2FsbGV0UGFzc3BocmFzZSBhbmQgdGhlIHdhbGxldCBpcyBub3QgY29sZCAoYmVjYXVzZSBpZiBpdCdzIGNvbGQsIHRoZSBwYXNzcGhyYXNlIGlzIG9mIGxpdHRsZSB1c2UpXG4gICAgICpcbiAgICAgKiBUaGVyZWZvcmUsIGlmIG5laXRoZXIgb2YgdGhlc2UgaXMgdHJ1ZSwgdGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSByZWNyZWF0ZWQsIHdoaWNoIGlzIHJlZmxlY3RlZCBpbiB0aGUgaWZcbiAgICAgKiBzdGF0ZW1lbnQgYmVsb3cuXG4gICAgICovXG4gICAgY29uc3QgaXNDb2xkV2FsbGV0ID0gISFfLmdldCh0aGlzLndhbGxldCwgJ193YWxsZXQuaXNDb2xkJyk7XG4gICAgY29uc3QgaXNPRkNXYWxsZXQgPSB0aGlzLmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnb2ZjJzsgLy8gT2ZmLWNoYWluIHRyYW5zYWN0aW9ucyBkb24ndCBuZWVkIHRvIGJlIHJlYnVpbHRcbiAgICBpZiAoIXBhcmFtcy54cHJ2ICYmICEocGFyYW1zLndhbGxldFBhc3NwaHJhc2UgJiYgIWlzQ29sZFdhbGxldCAmJiAhaXNPRkNXYWxsZXQpKSB7XG4gICAgICBjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuXG4gICAgLypcbiAgICAgKiBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uIHdoaWNoIGlzIGJlaW5nIGFwcHJvdmVkXG4gICAgICovXG4gICAgY29uc3QgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbiA9IGFzeW5jICgpOiBQcm9taXNlPHsgdHhIZXg6IHN0cmluZyB9IHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0cmFuc2FjdGlvblJlcXVlc3QnKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAqIElmIHRoaXMgaXMgYSByZXF1ZXN0IGZvciBhcHByb3ZpbmcgYSB0cmFuc2FjdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyB1c2VyIGhhcyBhIHByaXZhdGUga2V5IHRvIHRoZSB3YWxsZXRcbiAgICAgICAgICogKHNvbWUgYWRtaW5zIG1heSBub3QgaGF2ZSB0aGUgc3BlbmQgcGVybWlzc2lvbiksIHRoZSB0cmFuc2FjdGlvbiBjb3VsZCBlaXRoZXIgYmUgcmVicm9hZGNhc3QgYXMgaXMsIG9yIGl0IGNvdWxkXG4gICAgICAgICAqIGJlIHJlY29uc3RydWN0ZWQuIEl0IGlzIHByZWZlcmFibGUgdG8gcmVjb25zdHJ1Y3QgYSB0eCBpbiBvcmRlciB0byBhZGhlcmUgdG8gdGhlIGxhdGVzdCBuZXR3b3JrIGNvbmRpdGlvbnNcbiAgICAgICAgICogc3VjaCBhcyBuZXdlciB1bnNwZW50cywgZGlmZmVyZW50IGZlZXMsIG9yIGEgaGlnaGVyIHNlcXVlbmNlIGlkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAocGFyYW1zLnR4KSB7XG4gICAgICAgICAgLy8gdGhlIGFwcHJvdmFsIHR4IHdhcyByZWNvbnN0cnVjdGVkIGFuZCBleHBsaWNpdGx5IHNwZWNpZmllZCAtIHBhc3MgaXQgdGhyb3VnaFxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eEhleDogcGFyYW1zLnR4LFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IF8uZ2V0KHRoaXMuaW5mbygpLCBgdHJhbnNhY3Rpb25SZXF1ZXN0LmNvaW5TcGVjaWZpYy4ke3RoaXMuYmFzZUNvaW4udHlwZX1gKSBhcyB7XG4gICAgICAgICAgdHhIZXg6IHN0cmluZztcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0aGlzIHVzZXIgbWF5IG5vdCBoYXZlIHNwZW5kaW5nIHByaXZpbGVnZXMgb3IgYSBwYXNzcGhyYXNlIG1heSBub3QgaGF2ZSBiZWVuIHBhc3NlZCBpblxuICAgICAgICBpZiAoIWNhblJlY3JlYXRlVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICBpZiAoIV8uaXNPYmplY3QodHJhbnNhY3Rpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZXJlIGlzIG5laXRoZXIgYW4gb3JpZ2luYWwgdHJhbnNhY3Rpb24gb2JqZWN0IG5vciBjYW4gYSBuZXcgb25lIGJlIHJlY3JlYXRlZCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBvcHVsYXRlV2FsbGV0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtcywgcmVxSWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGFwcHJvdmFsIHBheWxvYWQgYW5kIHNlbmQgaXQgdG8gYml0Z29cbiAgICAgKi9cbiAgICBjb25zdCBzZW5kQXBwcm92YWwgPSAodHJhbnNhY3Rpb246IHsgdHhIZXg6IHN0cmluZzsgaGFsZlNpZ25lZD86IHN0cmluZyB9KTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsUGFyYW1zOiBhbnkgPSB7IHN0YXRlOiAnYXBwcm92ZWQnLCBvdHA6IHBhcmFtcy5vdHAgfTtcbiAgICAgIGlmICh0cmFuc2FjdGlvbikge1xuICAgICAgICAvLyBpZiB0aGUgdHJhbnNhY3Rpb24gYWxyZWFkeSBoYXMgYSBoYWxmIHNpZ25lZCBwcm9wZXJ0eSwgd2UgdGFrZSB0aGF0IGRpcmVjdGx5XG4gICAgICAgIGFwcHJvdmFsUGFyYW1zLmhhbGZTaWduZWQgPSB0cmFuc2FjdGlvbi5oYWxmU2lnbmVkIHx8IHRyYW5zYWN0aW9uO1xuICAgICAgfVxuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiB0aGlzLmJpdGdvLnB1dCh0aGlzLnVybCgpKS5zZW5kKGFwcHJvdmFsUGFyYW1zKS5yZXN1bHQoKTtcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcHJvdmFsVHJhbnNhY3Rpb24gPSAoYXdhaXQgZ2V0QXBwcm92YWxUcmFuc2FjdGlvbigpKSBhcyBhbnk7XG4gICAgICB0aGlzLmJpdGdvLnNldFJlcXVlc3RUcmFjZXIocmVxSWQpO1xuICAgICAgcmV0dXJuIGF3YWl0IHNlbmRBcHByb3ZhbChhcHByb3ZhbFRyYW5zYWN0aW9uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uICYmXG4gICAgICAgIChlLm1lc3NhZ2UuaW5kZXhPZignY291bGQgbm90IGZpbmQgdW5zcGVudCBvdXRwdXQgZm9yIGlucHV0JykgIT09IC0xIHx8XG4gICAgICAgICAgZS5tZXNzYWdlLmluZGV4T2YoJ3RyYW5zYWN0aW9uIGNvbmZsaWN0cyB3aXRoIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uIGluIHRoZSBzZW5kIHF1ZXVlJykgIT09IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5zcGVudHMgZXhwaXJlZCwgd2FsbGV0IHBhc3NwaHJhc2Ugb3IgeHBydiByZXF1aXJlZCB0byByZWNyZWF0ZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhIHJlamVjdGVkIHN0YXRlXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlamVjdChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZCh7IHN0YXRlOiAncmVqZWN0ZWQnIH0pLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciBQZW5kaW5nQXBwcm92YWwucmVqZWN0KClcbiAgICpcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgY2FuY2VsKHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnJlamVjdChwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGFuZCBzaWduIFRTUyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0FwcHJvdmVPcHRpb25zfSBwYXJhbXMgbmVlZGVkIHRvIGdldCB0eHMgYW5kIHVzZSB0aGUgd2FsbGV0UGFzc3BocmFzZSB0byB0c3Mgc2lnblxuICAgKiBAcGFyYW0ge1JlcXVlc3RUcmFjZXJ9IHJlcUlkIGlkIHRyYWNlci5cbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRTU1RyYW5zYWN0aW9uKHBhcmFtczogQXBwcm92ZU9wdGlvbnMsIHJlcUlkOiBSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfT4ge1xuICAgIGNvbnN0IHsgd2FsbGV0UGFzc3BocmFzZSB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHR4UmVxdWVzdElkID0gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLnR4UmVxdWVzdElkO1xuXG4gICAgaWYgKCF0aGlzLndhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXYWxsZXQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF3YWxsZXRQYXNzcGhyYXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dhbGxldFBhc3NwaHJhc2Ugbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0eFJlcXVlc3RJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eFJlcXVlc3RJZCBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNyeXB0ZWRQcnYgPSBhd2FpdCB0aGlzLndhbGxldC5nZXRQcnYoeyB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuICAgIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IHRoaXMudHNzVXRpbHMucmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQsIGRlY3J5cHRlZFBydiwgcmVxSWQpO1xuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogdHhSZXF1ZXN0LnVuc2lnbmVkVHhzWzBdLnNlcmlhbGl6ZWRUeEhleCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3JlYXRlIGEgdHJhbnNhY3Rpb24gZm9yIGEgcGVuZGluZyBhcHByb3ZhbCB0byByZXNwb25kIHRvIHVwZGF0ZWQgbmV0d29yayBjb25kaXRpb25zXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIHJlY3JlYXRlQW5kU2lnblRyYW5zYWN0aW9uKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIHRoaXMgbWV0aG9kIG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCBleGlzdGluZyB0cmFuc2FjdGlvbiByZXF1ZXN0c1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uUmVxdWVzdCA9IHRoaXMuaW5mbygpLnRyYW5zYWN0aW9uUmVxdWVzdDtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0cmFuc2FjdGlvblJlcXVlc3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHRyYW5zYWN0aW9uIHJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IHJlY3JlYXRlIHRyYW5zYWN0aW9uIHdpdGhvdXQgd2FsbGV0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxQcmVidWlsZCA9IHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWNbdGhpcy5iYXNlQ29pbi50eXBlXTtcblxuICAgIGNvbnN0IHJlY2lwaWVudHMgPSB0cmFuc2FjdGlvblJlcXVlc3QucmVjaXBpZW50cztcbiAgICBjb25zdCBwcmVidWlsZFBhcmFtcyA9IF8uZXh0ZW5kKHt9LCBwYXJhbXMsIHsgcmVjaXBpZW50czogcmVjaXBpZW50cyB9LCB0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMpO1xuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9yaWdpbmFsUHJlYnVpbGQuaG9wVHJhbnNhY3Rpb24pKSB7XG4gICAgICBwcmVidWlsZFBhcmFtcy5ob3AgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0cmFuc2FjdGlvblJlcXVlc3QuYnVpbGRQYXJhbXMgJiYgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zLnR5cGUgPT09ICdjb25zb2xpZGF0ZScpIHtcbiAgICAgIC8vIGNvbnNvbGlkYXRlIHRhZyBpcyBpbiB0aGUgYnVpbGQgcGFyYW1zIC0gdGhpcyBpcyBhIGNvbnNvbGlkYXRpb24gdHJhbnNhY3Rpb24sIHNvXG4gICAgICAvLyBpdCBuZWVkcyB0byBiZSByZWJ1aWx0IHVzaW5nIHRoZSBzcGVjaWFsIGNvbnNvbGlkYXRpb24gYnVpbGQgcm91dGVcbiAgICAgIHByZWJ1aWxkUGFyYW1zLnByZWJ1aWxkVHggPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAgIC5wb3N0KHRoaXMud2FsbGV0LnVybChgL2NvbnNvbGlkYXRlVW5zcGVudHNgKSlcbiAgICAgICAgLnNlbmQocHJlYnVpbGRQYXJhbXMpXG4gICAgICAgIC5yZXN1bHQoKTtcbiAgICAgIGRlbGV0ZSBwcmVidWlsZFBhcmFtcy5yZWNpcGllbnRzO1xuICAgIH1cblxuICAgIGNvbnN0IHNpZ25lZFRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy53YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24ocHJlYnVpbGRQYXJhbXMpO1xuICAgIC8vIGNvbXBhcmUgUEFZR28gZmVlc1xuICAgIGNvbnN0IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBvcmlnaW5hbFByZWJ1aWxkLFxuICAgIH0pKSBhcyBhbnk7XG4gICAgY29uc3QgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy5iYXNlQ29pbi5wYXJzZVRyYW5zYWN0aW9uKHtcbiAgICAgIHR4UGFyYW1zOiBwcmVidWlsZFBhcmFtcyxcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICB0eFByZWJ1aWxkOiBzaWduZWRUcmFuc2FjdGlvbixcbiAgICB9KSkgYXMgYW55O1xuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KSkge1xuICAgICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICAgIH1cblxuICAgIGlmICghXy5pc0Zpbml0ZShyZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhXy5pc1VuZGVmaW5lZChvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkgJiZcbiAgICAgIHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA+IG9yaWdpbmFsUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50XG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY3JlYXRlZCB0cmFuc2FjdGlvbiBpcyB1c2luZyBhIGhpZ2hlciBwYXktYXMteW91LWdvLWZlZScpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FwcHJvdmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3BlbmRpbmdBcHByb3ZhbC9wZW5kaW5nQXBwcm92YWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQTRCO0FBQzVCLHFEQUF1QztBQUd2Qyx3REFRNEI7QUFDNUIsb0NBQW1EO0FBR25ELE1BQWEsZUFBZTtJQU8xQixZQUFZLEtBQWdCLEVBQUUsUUFBbUIsRUFBRSxtQkFBd0MsRUFBRSxNQUFnQjtRQUMzRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLG1CQUFtQixDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILEVBQUU7UUFDQSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNoQyxPQUFPLDJCQUFTLENBQUMsTUFBTSxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFO1lBQzNDLE9BQU8sMkJBQVMsQ0FBQyxVQUFVLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNqRztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7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Qyx3REFBd0QsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFDRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsMkJBQTJCLENBQUM7WUFDckUsMEJBQTBCLENBQUMsMkJBQTJCLEdBQUcseUJBQXlCLENBQUMsMkJBQTJCLEVBQzlHO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUF2VkQsMENBdVZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgY29tbW9uIGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHtcbiAgQXBwcm92ZU9wdGlvbnMsXG4gIElQZW5kaW5nQXBwcm92YWwsXG4gIE93bmVyVHlwZSxcbiAgUGVuZGluZ0FwcHJvdmFsRGF0YSxcbiAgUGVuZGluZ0FwcHJvdmFsSW5mbyxcbiAgU3RhdGUsXG4gIFR5cGUsXG59IGZyb20gJy4uL3BlbmRpbmdBcHByb3ZhbCc7XG5pbXBvcnQgeyBSZXF1ZXN0VHJhY2VyLCBUc3NVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsIGltcGxlbWVudHMgSVBlbmRpbmdBcHByb3ZhbCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQ29pbjogSUJhc2VDb2luO1xuICBwcml2YXRlIHRzc1V0aWxzOiBUc3NVdGlscztcbiAgcHJpdmF0ZSB3YWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIF9wZW5kaW5nQXBwcm92YWw6IFBlbmRpbmdBcHByb3ZhbERhdGE7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbiwgcGVuZGluZ0FwcHJvdmFsRGF0YTogUGVuZGluZ0FwcHJvdmFsRGF0YSwgd2FsbGV0PzogSVdhbGxldCkge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy50c3NVdGlscyA9IG5ldyBUc3NVdGlscyh0aGlzLmJpdGdvLCB0aGlzLmJhc2VDb2luLCB3YWxsZXQpO1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IHBlbmRpbmdBcHByb3ZhbERhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG93bmVyIHR5cGUgKHdhbGxldCBvciBlbnRlcnByaXNlKVxuICAgKiBQZW5kaW5nIGFwcHJvdmFscyBjYW4gYmUgYXBwcm92ZWQgb3IgbW9kaWZpZWQgYnkgZGlmZmVyZW50IHNjb3BlcyAoZGVwZW5kaW5nIG9uIGhvdyB0aGV5IHdlcmUgY3JlYXRlZClcbiAgICogSWYgYSBwZW5kaW5nIGFwcHJvdmFsIGlzIG93bmVkIGJ5IGEgd2FsbGV0LCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgd2FsbGV0XG4gICAqIElmIGEgcGVuZGluZyBhcHByb3ZhbCBpcyBvd25lZCBieSBhbiBlbnRlcnByaXNlLCB0aGVuIGl0IGNhbiBiZSBhcHByb3ZlZCBieSBhZG1pbmlzdHJhdG9ycyBvZiB0aGUgZW50ZXJwcmlzZVxuICAgKi9cbiAgb3duZXJUeXBlKCk6IE93bmVyVHlwZSB7XG4gICAgaWYgKHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuV0FMTEVUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2UpIHtcbiAgICAgIHJldHVybiBPd25lclR5cGUuRU5URVJQUklTRTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHBlbmRpbmcgYXBwcm92YWwgb3duZXI6IG5laXRoZXIgd2FsbGV0IG5vciBlbnRlcnByaXNlIHdhcyBwcmVzZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaWQgb2YgdGhlIHdhbGxldCB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIHdhbGxldElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC53YWxsZXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRlcnByaXNlIElEIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUGVuZGluZ0FwcHJvdmFsXG4gICAqL1xuICBlbnRlcnByaXNlSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmVudGVycHJpc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgc3RhdGUoKTogU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpZCBvZiB0aGUgdXNlciB0aGF0IHBlcmZvcm1lZCB0aGUgYWN0aW9uIHJlc3VsdGluZyBpbiB0aGlzIFBlbmRpbmdBcHByb3ZhbFxuICAgKi9cbiAgY3JlYXRvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuY3JlYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHR5cGUgb2YgdGhlIHBlbmRpbmcgYXBwcm92YWwgKHdoYXQgaXQgYXBwcm92ZXMpXG4gICAqL1xuICB0eXBlKCk6IFR5cGUge1xuICAgIGlmICghdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncGVuZGluZyBhcHByb3ZhbCBpbmZvIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0FwcHJvdmFsLmluZm8udHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBQZW5kaW5nQXBwcm92YWxcbiAgICovXG4gIGluZm8oKTogUGVuZGluZ0FwcHJvdmFsSW5mbyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbC5pbmZvO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGFyZSByZXF1aXJlZCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYmUgYXBwcm92ZWQuXG4gICAqIERlZmF1bHRzIHRvIDEgaWYgYXBwcm92YWxzUmVxdWlyZWQgZG9lc24ndCBleGlzdCBvbiB0aGUgb2JqZWN0XG4gICAqL1xuICBhcHByb3ZhbHNSZXF1aXJlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nQXBwcm92YWwuYXBwcm92YWxzUmVxdWlyZWQgfHwgMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVybCBmb3IgdGhpcyBQZW5kaW5nQXBwcm92YWwgZm9yIG1ha2luZyByZXF1ZXN0cyB0byB0aGUgc2VydmVyLlxuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHVybChleHRyYSA9ICcnKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlQ29pbi51cmwoJy9wZW5kaW5nYXBwcm92YWxzLycgKyB0aGlzLmlkKCkgKyBleHRyYSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXRjaGVzIHRoaXMgUGVuZGluZ0FwcHJvdmFsIGZyb20gdGhlIHNlcnZlciBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgbXV0YXRlcyB0aGUgUGVuZGluZ0FwcHJvdmFsIG9iamVjdCBpbiBwbGFjZS5cbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogUmVjb3JkPHN0cmluZywgbmV2ZXI+ID0ge30pOiBQcm9taXNlPFBlbmRpbmdBcHByb3ZhbD4ge1xuICAgIHRoaXMuX3BlbmRpbmdBcHByb3ZhbCA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnJlc3VsdCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdCBzZWxmLndhbGxldCBpcyBzZXRcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9wdWxhdGVXYWxsZXQoKTogUHJvbWlzZTx1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIG9iamVjdCBwcm9wZXJ0eSB0cmFuc2FjdGlvblJlcXVlc3QnKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLndhbGxldCkpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRXYWxsZXQ6IElXYWxsZXQgPSBhd2FpdCB0aGlzLmJhc2VDb2luLndhbGxldHMoKS5nZXQoeyBpZDogdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCB9KTtcblxuICAgICAgaWYgKF8uaXNVbmRlZmluZWQodXBkYXRlZFdhbGxldCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIC0gdW5hYmxlIHRvIGdldCB3YWxsZXQgdXNpbmcgc291cmNld2FsbGV0Jyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMud2FsbGV0ID0gdXBkYXRlZFdhbGxldDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXQuaWQoKSAhPT0gdHJhbnNhY3Rpb25SZXF1ZXN0LnNvdXJjZVdhbGxldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIHNvdXJjZSB3YWxsZXQgZm9yIHBlbmRpbmcgYXBwcm92YWwnKTtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2UgcmV0dXJucyB1bmRlZmluZWRcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIFBlbmRpbmdBcHByb3ZhbCB0byBhbiBhcHByb3ZlZCBzdGF0ZVxuICAgKi9cbiAgYXN5bmMgYXBwcm92ZShwYXJhbXM6IEFwcHJvdmVPcHRpb25zID0ge30pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbJ3dhbGxldFBhc3NwaHJhc2UnLCAnb3RwJ10pO1xuXG4gICAgbGV0IGNhblJlY3JlYXRlVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAgIC8qXG4gICAgICogQ29sZCB3YWxsZXRzIGNhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbnMgaWYgdGhlIG9ubHkgdGhpbmcgcHJvdmlkZWQgaXMgdGhlIHdhbGxldCBwYXNzcGhyYXNlXG4gICAgICpcbiAgICAgKiBUaGUgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpZiBlaXRoZXJcbiAgICAgKiDigJMgdGhlcmUgaXMgYW4geHBydlxuICAgICAqIOKAkyB0aGVyZSBpcyBhIHdhbGxldFBhc3NwaHJhc2UgYW5kIHRoZSB3YWxsZXQgaXMgbm90IGNvbGQgKGJlY2F1c2UgaWYgaXQncyBjb2xkLCB0aGUgcGFzc3BocmFzZSBpcyBvZiBsaXR0bGUgdXNlKVxuICAgICAqXG4gICAgICogVGhlcmVmb3JlLCBpZiBuZWl0aGVyIG9mIHRoZXNlIGlzIHRydWUsIHRoZSB0cmFuc2FjdGlvbiBjYW5ub3QgYmUgcmVjcmVhdGVkLCB3aGljaCBpcyByZWZsZWN0ZWQgaW4gdGhlIGlmXG4gICAgICogc3RhdGVtZW50IGJlbG93LlxuICAgICAqL1xuICAgIGNvbnN0IGlzQ29sZFdhbGxldCA9ICEhXy5nZXQodGhpcy53YWxsZXQsICdfd2FsbGV0LmlzQ29sZCcpO1xuICAgIGNvbnN0IGlzT0ZDV2FsbGV0ID0gdGhpcy5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ29mYyc7IC8vIE9mZi1jaGFpbiB0cmFuc2FjdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSByZWJ1aWx0XG4gICAgaWYgKCFwYXJhbXMueHBydiAmJiAhKHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlICYmICFpc0NvbGRXYWxsZXQgJiYgIWlzT0ZDV2FsbGV0KSkge1xuICAgICAgY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcUlkID0gbmV3IFJlcXVlc3RUcmFjZXIoKTtcblxuICAgIC8qXG4gICAgICogSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2VyaWFsaXplZCB0cmFuc2FjdGlvbiB3aGljaCBpcyBiZWluZyBhcHByb3ZlZFxuICAgICAqL1xuICAgIGNvbnN0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IHR4SGV4OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4gPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndHJhbnNhY3Rpb25SZXF1ZXN0Jykge1xuICAgICAgICAvKlxuICAgICAgICAgKiBJZiB0aGlzIGlzIGEgcmVxdWVzdCBmb3IgYXBwcm92aW5nIGEgdHJhbnNhY3Rpb24sIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgdXNlciBoYXMgYSBwcml2YXRlIGtleSB0byB0aGUgd2FsbGV0XG4gICAgICAgICAqIChzb21lIGFkbWlucyBtYXkgbm90IGhhdmUgdGhlIHNwZW5kIHBlcm1pc3Npb24pLCB0aGUgdHJhbnNhY3Rpb24gY291bGQgZWl0aGVyIGJlIHJlYnJvYWRjYXN0IGFzIGlzLCBvciBpdCBjb3VsZFxuICAgICAgICAgKiBiZSByZWNvbnN0cnVjdGVkLiBJdCBpcyBwcmVmZXJhYmxlIHRvIHJlY29uc3RydWN0IGEgdHggaW4gb3JkZXIgdG8gYWRoZXJlIHRvIHRoZSBsYXRlc3QgbmV0d29yayBjb25kaXRpb25zXG4gICAgICAgICAqIHN1Y2ggYXMgbmV3ZXIgdW5zcGVudHMsIGRpZmZlcmVudCBmZWVzLCBvciBhIGhpZ2hlciBzZXF1ZW5jZSBpZFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKHBhcmFtcy50eCkge1xuICAgICAgICAgIC8vIHRoZSBhcHByb3ZhbCB0eCB3YXMgcmVjb25zdHJ1Y3RlZCBhbmQgZXhwbGljaXRseSBzcGVjaWZpZWQgLSBwYXNzIGl0IHRocm91Z2hcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHhIZXg6IHBhcmFtcy50eCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBfLmdldCh0aGlzLmluZm8oKSwgYHRyYW5zYWN0aW9uUmVxdWVzdC5jb2luU3BlY2lmaWMuJHt0aGlzLmJhc2VDb2luLnR5cGV9YCkgYXMge1xuICAgICAgICAgIHR4SGV4OiBzdHJpbmc7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdGhpcyB1c2VyIG1heSBub3QgaGF2ZSBzcGVuZGluZyBwcml2aWxlZ2VzIG9yIGEgcGFzc3BocmFzZSBtYXkgbm90IGhhdmUgYmVlbiBwYXNzZWQgaW5cbiAgICAgICAgaWYgKCFjYW5SZWNyZWF0ZVRyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgaWYgKCFfLmlzT2JqZWN0KHRyYW5zYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGVyZSBpcyBuZWl0aGVyIGFuIG9yaWdpbmFsIHRyYW5zYWN0aW9uIG9iamVjdCBub3IgY2FuIGEgbmV3IG9uZSBiZSByZWNyZWF0ZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wb3B1bGF0ZVdhbGxldCgpO1xuXG4gICAgICAgIGlmICh0aGlzLl9wZW5kaW5nQXBwcm92YWwudHhSZXF1ZXN0SWQpIHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXMsIHJlcUlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXMpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKlxuICAgICAqIEludGVybmFsIGhlbHBlciBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBhcHByb3ZhbCBwYXlsb2FkIGFuZCBzZW5kIGl0IHRvIGJpdGdvXG4gICAgICovXG4gICAgY29uc3Qgc2VuZEFwcHJvdmFsID0gKHRyYW5zYWN0aW9uOiB7IHR4SGV4OiBzdHJpbmc7IGhhbGZTaWduZWQ/OiBzdHJpbmcgfSk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgICBjb25zdCBhcHByb3ZhbFBhcmFtczogYW55ID0geyBzdGF0ZTogJ2FwcHJvdmVkJywgb3RwOiBwYXJhbXMub3RwIH07XG4gICAgICBpZiAodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgLy8gaWYgdGhlIHRyYW5zYWN0aW9uIGFscmVhZHkgaGFzIGEgaGFsZiBzaWduZWQgcHJvcGVydHksIHdlIHRha2UgdGhhdCBkaXJlY3RseVxuICAgICAgICBhcHByb3ZhbFBhcmFtcy5oYWxmU2lnbmVkID0gdHJhbnNhY3Rpb24uaGFsZlNpZ25lZCB8fCB0cmFuc2FjdGlvbjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYml0Z28uc2V0UmVxdWVzdFRyYWNlcihyZXFJZCk7XG4gICAgICByZXR1cm4gdGhpcy5iaXRnby5wdXQodGhpcy51cmwoKSkuc2VuZChhcHByb3ZhbFBhcmFtcykucmVzdWx0KCk7XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHByb3ZhbFRyYW5zYWN0aW9uID0gKGF3YWl0IGdldEFwcHJvdmFsVHJhbnNhY3Rpb24oKSkgYXMgYW55O1xuICAgICAgdGhpcy5iaXRnby5zZXRSZXF1ZXN0VHJhY2VyKHJlcUlkKTtcbiAgICAgIHJldHVybiBhd2FpdCBzZW5kQXBwcm92YWwoYXBwcm92YWxUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKFxuICAgICAgICAhY2FuUmVjcmVhdGVUcmFuc2FjdGlvbiAmJlxuICAgICAgICAoZS5tZXNzYWdlLmluZGV4T2YoJ2NvdWxkIG5vdCBmaW5kIHVuc3BlbnQgb3V0cHV0IGZvciBpbnB1dCcpICE9PSAtMSB8fFxuICAgICAgICAgIGUubWVzc2FnZS5pbmRleE9mKCd0cmFuc2FjdGlvbiBjb25mbGljdHMgd2l0aCBhbiBleGlzdGluZyB0cmFuc2FjdGlvbiBpbiB0aGUgc2VuZCBxdWV1ZScpICE9PSAtMSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3BlbnRzIGV4cGlyZWQsIHdhbGxldCBwYXNzcGhyYXNlIG9yIHhwcnYgcmVxdWlyZWQgdG8gcmVjcmVhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhpcyBQZW5kaW5nQXBwcm92YWwgdG8gYSByZWplY3RlZCBzdGF0ZVxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWplY3QocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gPSB7fSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28ucHV0KHRoaXMudXJsKCkpLnNlbmQoeyBzdGF0ZTogJ3JlamVjdGVkJyB9KS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3IgUGVuZGluZ0FwcHJvdmFsLnJlamVjdCgpXG4gICAqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIGFzeW5jIGNhbmNlbChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWplY3QocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhbmQgc2lnbiBUU1MgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtBcHByb3ZlT3B0aW9uc30gcGFyYW1zIG5lZWRlZCB0byBnZXQgdHhzIGFuZCB1c2UgdGhlIHdhbGxldFBhc3NwaHJhc2UgdG8gdHNzIHNpZ25cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UU1NUcmFuc2FjdGlvbihwYXJhbXM6IEFwcHJvdmVPcHRpb25zLCByZXFJZDogUmVxdWVzdFRyYWNlcik6IFByb21pc2U8eyB0eEhleDogc3RyaW5nIH0+IHtcbiAgICBjb25zdCB7IHdhbGxldFBhc3NwaHJhc2UgfSA9IHBhcmFtcztcbiAgICBjb25zdCB0eFJlcXVlc3RJZCA9IHRoaXMuX3BlbmRpbmdBcHByb3ZhbC50eFJlcXVlc3RJZDtcblxuICAgIGlmICghdGhpcy53YWxsZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignV2FsbGV0IG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghd2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd3YWxsZXRQYXNzcGhyYXNlIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGlmICghdHhSZXF1ZXN0SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgbm90IGZvdW5kJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjcnlwdGVkUHJ2ID0gYXdhaXQgdGhpcy53YWxsZXQuZ2V0UHJ2KHsgd2FsbGV0UGFzc3BocmFzZSB9KTtcbiAgICBjb25zdCB0eFJlcXVlc3QgPSBhd2FpdCB0aGlzLnRzc1V0aWxzLnJlY3JlYXRlVHhSZXF1ZXN0KHR4UmVxdWVzdElkLCBkZWNyeXB0ZWRQcnYsIHJlcUlkKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHhIZXg6IHR4UmVxdWVzdC51bnNpZ25lZFR4c1swXS5zZXJpYWxpemVkVHhIZXgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNyZWF0ZSBhIHRyYW5zYWN0aW9uIGZvciBhIHBlbmRpbmcgYXBwcm92YWwgdG8gcmVzcG9uZCB0byB1cGRhdGVkIG5ldHdvcmsgY29uZGl0aW9uc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNyZWF0ZUFuZFNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IGFueSA9IHt9KTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyB0aGlzIG1ldGhvZCBvbmx5IG1ha2VzIHNlbnNlIHdpdGggZXhpc3RpbmcgdHJhbnNhY3Rpb24gcmVxdWVzdHNcbiAgICBjb25zdCB0cmFuc2FjdGlvblJlcXVlc3QgPSB0aGlzLmluZm8oKS50cmFuc2FjdGlvblJlcXVlc3Q7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodHJhbnNhY3Rpb25SZXF1ZXN0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgcmVjcmVhdGUgdHJhbnNhY3Rpb24gd2l0aG91dCB0cmFuc2FjdGlvbiByZXF1ZXN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy53YWxsZXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCByZWNyZWF0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHdhbGxldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsUHJlYnVpbGQgPSB0cmFuc2FjdGlvblJlcXVlc3QuY29pblNwZWNpZmljW3RoaXMuYmFzZUNvaW4udHlwZV07XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdHJhbnNhY3Rpb25SZXF1ZXN0LnJlY2lwaWVudHM7XG4gICAgY29uc3QgcHJlYnVpbGRQYXJhbXMgPSBfLmV4dGVuZCh7fSwgcGFyYW1zLCB7IHJlY2lwaWVudHM6IHJlY2lwaWVudHMgfSwgdHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zKTtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvcmlnaW5hbFByZWJ1aWxkLmhvcFRyYW5zYWN0aW9uKSkge1xuICAgICAgcHJlYnVpbGRQYXJhbXMuaG9wID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNhY3Rpb25SZXF1ZXN0LmJ1aWxkUGFyYW1zICYmIHRyYW5zYWN0aW9uUmVxdWVzdC5idWlsZFBhcmFtcy50eXBlID09PSAnY29uc29saWRhdGUnKSB7XG4gICAgICAvLyBjb25zb2xpZGF0ZSB0YWcgaXMgaW4gdGhlIGJ1aWxkIHBhcmFtcyAtIHRoaXMgaXMgYSBjb25zb2xpZGF0aW9uIHRyYW5zYWN0aW9uLCBzb1xuICAgICAgLy8gaXQgbmVlZHMgdG8gYmUgcmVidWlsdCB1c2luZyB0aGUgc3BlY2lhbCBjb25zb2xpZGF0aW9uIGJ1aWxkIHJvdXRlXG4gICAgICBwcmVidWlsZFBhcmFtcy5wcmVidWlsZFR4ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAucG9zdCh0aGlzLndhbGxldC51cmwoYC9jb25zb2xpZGF0ZVVuc3BlbnRzYCkpXG4gICAgICAgIC5zZW5kKHByZWJ1aWxkUGFyYW1zKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgICBkZWxldGUgcHJlYnVpbGRQYXJhbXMucmVjaXBpZW50cztcbiAgICB9XG5cbiAgICBjb25zdCBzaWduZWRUcmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMud2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHByZWJ1aWxkUGFyYW1zKTtcbiAgICAvLyBjb21wYXJlIFBBWUdvIGZlZXNcbiAgICBjb25zdCBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogb3JpZ2luYWxQcmVidWlsZCxcbiAgICB9KSkgYXMgYW55O1xuICAgIGNvbnN0IHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uID0gKGF3YWl0IHRoaXMuYmFzZUNvaW4ucGFyc2VUcmFuc2FjdGlvbih7XG4gICAgICB0eFBhcmFtczogcHJlYnVpbGRQYXJhbXMsXG4gICAgICB3YWxsZXQ6IHRoaXMud2FsbGV0LFxuICAgICAgdHhQcmVidWlsZDogc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgfSkpIGFzIGFueTtcblxuICAgIGlmIChfLmlzVW5kZWZpbmVkKHJlY3JlYXRlZFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCkpIHtcbiAgICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgcmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ICE9PSAnYmlnaW50JyAmJlxuICAgICAgIV8uaXNGaW5pdGUocmVjcmVhdGVkUGFyc2VkVHJhbnNhY3Rpb24uaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgY291bGQgbm90IGJlIGRldGVybWluZWQnKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIV8uaXNVbmRlZmluZWQob3JpZ2luYWxQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQpICYmXG4gICAgICByZWNyZWF0ZWRQYXJzZWRUcmFuc2FjdGlvbi5pbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPiBvcmlnaW5hbFBhcnNlZFRyYW5zYWN0aW9uLmltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWNyZWF0ZWQgdHJhbnNhY3Rpb24gaXMgdXNpbmcgYSBoaWdoZXIgcGF5LWFzLXlvdS1nby1mZWUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25lZFRyYW5zYWN0aW9uO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @prettier
3
3
  */
4
- import * as bip32 from 'bip32';
4
+ import { BIP32Interface } from 'bip32';
5
5
  import { BaseCoin } from '../baseCoin';
6
6
  import { BitGoBase } from '../bitgoBase';
7
7
  import { KrsProvider } from '../config';
@@ -41,9 +41,9 @@ export declare function getIsUnsignedSweep({ backupKey, userKey }: {
41
41
  backupKey: string;
42
42
  userKey: string;
43
43
  }): boolean;
44
- export declare function validateKey(bitgo: BitGoBase, { key, source, passphrase, isUnsignedSweep, isKrsRecovery }: ValidateKeyOptions): bip32.BIP32Interface;
44
+ export declare function validateKey(bitgo: BitGoBase, { key, source, passphrase, isUnsignedSweep, isKrsRecovery }: ValidateKeyOptions): BIP32Interface;
45
45
  export declare function getBip32Keys(bitgo: BitGoBase, params: InitiateRecoveryOptions, { requireBitGoXpub }: {
46
46
  requireBitGoXpub: boolean;
47
- }): bip32.BIP32Interface[];
47
+ }): BIP32Interface[];
48
48
  export {};
49
49
  //# sourceMappingURL=initiate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initiate.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/recovery/initiate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAgB,MAAM,WAAW,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,aAAK,qBAAqB,GAAG;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,EAAE,sBAA6B,EAAE,GAAE,qBAA0B,GAC5D,WAAW,CAgBb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAEN;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAExG;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE1G;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,kBAAkB,GAC9E,KAAK,CAAC,cAAc,CAgBtB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,uBAAuB,EAC/B,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,GAClD,KAAK,CAAC,cAAc,EAAE,CAmCxB"}
1
+ {"version":3,"file":"initiate.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/recovery/initiate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAgB,MAAM,WAAW,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,aAAK,qBAAqB,GAAG;IAAE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,EAAE,sBAA6B,EAAE,GAAE,qBAA0B,GAC5D,WAAW,CAgBb;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,EACd,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAEN;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAExG;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE1G;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,EAChB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,kBAAkB,GAC9E,cAAc,CAgBhB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,uBAAuB,EAC/B,EAAE,gBAAgB,EAAE,EAAE;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,GAClD,cAAc,EAAE,CAmClB"}
@@ -2,28 +2,9 @@
2
2
  /**
3
3
  * @prettier
4
4
  */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
8
- }) : (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- o[k2] = m[k];
11
- }));
12
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
- Object.defineProperty(o, "default", { enumerable: true, value: v });
14
- }) : function(o, v) {
15
- o["default"] = v;
16
- });
17
- var __importStar = (this && this.__importStar) || function (mod) {
18
- if (mod && mod.__esModule) return mod;
19
- var result = {};
20
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
21
- __setModuleDefault(result, mod);
22
- return result;
23
- };
24
5
  Object.defineProperty(exports, "__esModule", { value: true });
25
6
  exports.getBip32Keys = exports.validateKey = exports.getIsUnsignedSweep = exports.getIsKrsRecovery = exports.checkKrsProvider = exports.getKrsProvider = void 0;
26
- const bip32 = __importStar(require("bip32"));
7
+ const utxo_lib_1 = require("@bitgo/utxo-lib");
27
8
  const config_1 = require("../config");
28
9
  /**
29
10
  * @param coin
@@ -65,7 +46,7 @@ function validateKey(bitgo, { key, source, passphrase, isUnsignedSweep, isKrsRec
65
46
  // Try to decrypt the key
66
47
  try {
67
48
  if (source === 'user' || (source === 'backup' && !isKrsRecovery)) {
68
- return bip32.fromBase58(bitgo.decrypt({ password: passphrase, input: key }));
49
+ return utxo_lib_1.bip32.fromBase58(bitgo.decrypt({ password: passphrase, input: key }));
69
50
  }
70
51
  }
71
52
  catch (e) {
@@ -73,7 +54,7 @@ function validateKey(bitgo, { key, source, passphrase, isUnsignedSweep, isKrsRec
73
54
  }
74
55
  }
75
56
  try {
76
- return bip32.fromBase58(key);
57
+ return utxo_lib_1.bip32.fromBase58(key);
77
58
  }
78
59
  catch (e) {
79
60
  throw new Error(`Failed to validate ${source} key - try again!`);
@@ -107,7 +88,7 @@ function getBip32Keys(bitgo, params, { requireBitGoXpub }) {
107
88
  }
108
89
  try {
109
90
  // Box C
110
- keys.push(bip32.fromBase58(params.bitgoKey));
91
+ keys.push(utxo_lib_1.bip32.fromBase58(params.bitgoKey));
111
92
  }
112
93
  catch (e) {
113
94
  throw new Error('Failed to parse bitgo xpub!');
@@ -116,4 +97,4 @@ function getBip32Keys(bitgo, params, { requireBitGoXpub }) {
116
97
  return keys;
117
98
  }
118
99
  exports.getBip32Keys = getBip32Keys;
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vcmVjb3ZlcnkvaW5pdGlhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsNkNBQStCO0FBRy9CLHNDQUFzRDtBQW9CdEQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQzVCLElBQWMsRUFDZCxlQUFtQyxFQUNuQyxFQUFFLHNCQUFzQixHQUFHLElBQUksS0FBNEIsRUFBRTtJQUU3RCxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztLQUN4QztJQUVELE1BQU0sV0FBVyxHQUFHLHFCQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFbEQsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztLQUMxRDtJQUVELElBQUksc0JBQXNCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRTtRQUNwRixNQUFNLElBQUksS0FBSyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7S0FDN0Y7SUFFRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBcEJELHdDQW9CQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLElBQWMsRUFDZCxlQUFtQyxFQUNuQyxVQUFpQyxFQUFFO0lBRW5DLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFORCw0Q0FNQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBMEM7SUFDN0YsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRkQsNENBRUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQTBDO0lBQy9GLE9BQU8sU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFGRCxnREFFQztBQUVELFNBQWdCLFdBQVcsQ0FDekIsS0FBZ0IsRUFDaEIsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFzQjtJQUUvRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUMvQyx5QkFBeUI7UUFDekIsSUFBSTtZQUNGLElBQUksTUFBTSxLQUFLLE1BQU0sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDaEUsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUU7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxpQ0FBaUMsQ0FBQyxDQUFDO1NBQy9FO0tBQ0Y7SUFDRCxJQUFJO1FBQ0YsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzlCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixNQUFNLG1CQUFtQixDQUFDLENBQUM7S0FDbEU7QUFDSCxDQUFDO0FBbkJELGtDQW1CQztBQUVELFNBQWdCLFlBQVksQ0FDMUIsS0FBZ0IsRUFDaEIsTUFBK0IsRUFDL0IsRUFBRSxnQkFBZ0IsRUFBaUM7SUFFbkQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsTUFBTSxJQUFJLEdBQUc7UUFDWCxRQUFRO1FBQ1IsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDbkIsTUFBTSxFQUFFLE1BQU07WUFDZCxVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUNuQyxhQUFhO1lBQ2IsZUFBZTtTQUNoQixDQUFDO1FBQ0YsUUFBUTtRQUNSLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDakIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFVBQVUsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO1lBQ25DLGFBQWE7WUFDYixlQUFlO1NBQ2hCLENBQUM7S0FDSCxDQUFDO0lBRUYsSUFBSSxnQkFBZ0IsRUFBRTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJO1lBQ0YsUUFBUTtZQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUF2Q0Qsb0NBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuXG5pbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBLcnNQcm92aWRlciwga3JzUHJvdmlkZXJzIH0gZnJvbSAnLi4vY29uZmlnJztcblxuaW50ZXJmYWNlIFZhbGlkYXRlS2V5T3B0aW9ucyB7XG4gIGtleTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgaXNVbnNpZ25lZFN3ZWVwOiBib29sZWFuO1xuICBpc0tyc1JlY292ZXJ5OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zIHtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk/OiBzdHJpbmc7IC8vIG9wdGlvbmFsIGZvciB4cnAgcmVjb3Zlcmllc1xuICByZWNvdmVyeURlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIHdhbGxldFBhc3NwaHJhc2U/OiBzdHJpbmc7XG59XG5cbnR5cGUgR2V0S3JzUHJvdmlkZXJPcHRpb25zID0geyBjaGVja0NvaW5GYW1pbHlTdXBwb3J0PzogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEBwYXJhbSBjb2luXG4gKiBAcGFyYW0ga3JzUHJvdmlkZXJOYW1lXG4gKiBAcGFyYW0gY2hlY2tDb2luRmFtaWx5U3VwcG9ydCAtIGFzc2VydCB0aGF0IGtyc1Byb3ZpZGVyIGV4cGxpY2l0bHkgc3VwcG9ydHMgY29pblxuICogQHJldHVybiBLcnNQcm92aWRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0S3JzUHJvdmlkZXIoXG4gIGNvaW46IEJhc2VDb2luLFxuICBrcnNQcm92aWRlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgeyBjaGVja0NvaW5GYW1pbHlTdXBwb3J0ID0gdHJ1ZSB9OiBHZXRLcnNQcm92aWRlck9wdGlvbnMgPSB7fVxuKTogS3JzUHJvdmlkZXIge1xuICBpZiAoIWtyc1Byb3ZpZGVyTmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8ga3JzUHJvdmlkZXIgbmFtZWApO1xuICB9XG5cbiAgY29uc3Qga3JzUHJvdmlkZXIgPSBrcnNQcm92aWRlcnNba3JzUHJvdmlkZXJOYW1lXTtcblxuICBpZiAoa3JzUHJvdmlkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgcmVjb3Zlcnkgc2VydmljZSBwcm92aWRlcicpO1xuICB9XG5cbiAgaWYgKGNoZWNrQ29pbkZhbWlseVN1cHBvcnQgJiYgIWtyc1Byb3ZpZGVyLnN1cHBvcnRlZENvaW5zLmluY2x1ZGVzKGNvaW4uZ2V0RmFtaWx5KCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzcGVjaWZpZWQga2V5IHJlY292ZXJ5IHNlcnZpY2UgZG9lcyBub3Qgc3VwcG9ydCByZWNvdmVyaWVzIGZvciB0aGlzIGNvaW4nKTtcbiAgfVxuXG4gIHJldHVybiBrcnNQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciB7QHNlZSBnZXRLcnNQcm92aWRlcn0gcmV0dXJuaW5nIHZvaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrS3JzUHJvdmlkZXIoXG4gIGNvaW46IEJhc2VDb2luLFxuICBrcnNQcm92aWRlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogR2V0S3JzUHJvdmlkZXJPcHRpb25zID0ge31cbik6IHZvaWQge1xuICBnZXRLcnNQcm92aWRlcihjb2luLCBrcnNQcm92aWRlck5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXNLcnNSZWNvdmVyeSh7IGJhY2t1cEtleSwgdXNlcktleSB9OiB7IGJhY2t1cEtleTogc3RyaW5nOyB1c2VyS2V5OiBzdHJpbmcgfSk6IGJvb2xlYW4ge1xuICByZXR1cm4gYmFja3VwS2V5LnN0YXJ0c1dpdGgoJ3hwdWInKSAmJiAhdXNlcktleS5zdGFydHNXaXRoKCd4cHViJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJc1Vuc2lnbmVkU3dlZXAoeyBiYWNrdXBLZXksIHVzZXJLZXkgfTogeyBiYWNrdXBLZXk6IHN0cmluZzsgdXNlcktleTogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGJhY2t1cEtleS5zdGFydHNXaXRoKCd4cHViJykgJiYgdXNlcktleS5zdGFydHNXaXRoKCd4cHViJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUtleShcbiAgYml0Z286IEJpdEdvQmFzZSxcbiAgeyBrZXksIHNvdXJjZSwgcGFzc3BocmFzZSwgaXNVbnNpZ25lZFN3ZWVwLCBpc0tyc1JlY292ZXJ5IH06IFZhbGlkYXRlS2V5T3B0aW9uc1xuKTogYmlwMzIuQklQMzJJbnRlcmZhY2Uge1xuICBpZiAoIWtleS5zdGFydHNXaXRoKCd4cHJ2JykgJiYgIWlzVW5zaWduZWRTd2VlcCkge1xuICAgIC8vIFRyeSB0byBkZWNyeXB0IHRoZSBrZXlcbiAgICB0cnkge1xuICAgICAgaWYgKHNvdXJjZSA9PT0gJ3VzZXInIHx8IChzb3VyY2UgPT09ICdiYWNrdXAnICYmICFpc0tyc1JlY292ZXJ5KSkge1xuICAgICAgICByZXR1cm4gYmlwMzIuZnJvbUJhc2U1OChiaXRnby5kZWNyeXB0KHsgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsIGlucHV0OiBrZXkgfSkpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIGRlY3J5cHQgJHtzb3VyY2V9IGtleSB3aXRoIHBhc3Njb2RlIC0gdHJ5IGFnYWluIWApO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBiaXAzMi5mcm9tQmFzZTU4KGtleSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byB2YWxpZGF0ZSAke3NvdXJjZX0ga2V5IC0gdHJ5IGFnYWluIWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaXAzMktleXMoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHBhcmFtczogSW5pdGlhdGVSZWNvdmVyeU9wdGlvbnMsXG4gIHsgcmVxdWlyZUJpdEdvWHB1YiB9OiB7IHJlcXVpcmVCaXRHb1hwdWI6IGJvb2xlYW4gfVxuKTogYmlwMzIuQklQMzJJbnRlcmZhY2VbXSB7XG4gIGNvbnN0IGlzS3JzUmVjb3ZlcnkgPSBnZXRJc0tyc1JlY292ZXJ5KHBhcmFtcyk7XG4gIGNvbnN0IGlzVW5zaWduZWRTd2VlcCA9IGdldElzVW5zaWduZWRTd2VlcChwYXJhbXMpO1xuICBjb25zdCBrZXlzID0gW1xuICAgIC8vIEJveCBBXG4gICAgdmFsaWRhdGVLZXkoYml0Z28sIHtcbiAgICAgIGtleTogcGFyYW1zLnVzZXJLZXksXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHBhc3NwaHJhc2U6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgaXNLcnNSZWNvdmVyeSxcbiAgICAgIGlzVW5zaWduZWRTd2VlcCxcbiAgICB9KSxcbiAgICAvLyBCb3ggQlxuICAgIHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6IHBhcmFtcy5iYWNrdXBLZXksXG4gICAgICBzb3VyY2U6ICdiYWNrdXAnLFxuICAgICAgcGFzc3BocmFzZTogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgICBpc0tyc1JlY292ZXJ5LFxuICAgICAgaXNVbnNpZ25lZFN3ZWVwLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChyZXF1aXJlQml0R29YcHViKSB7XG4gICAgaWYgKCFwYXJhbXMuYml0Z29LZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQml0R28geHB1YiByZXF1aXJlZCBidXQgbm90IHByb3ZpZGVkYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyBCb3ggQ1xuICAgICAga2V5cy5wdXNoKGJpcDMyLmZyb21CYXNlNTgocGFyYW1zLmJpdGdvS2V5KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gcGFyc2UgYml0Z28geHB1YiEnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ga2V5cztcbn1cbiJdfQ==
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vcmVjb3ZlcnkvaW5pdGlhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCw4Q0FBd0M7QUFJeEMsc0NBQXNEO0FBb0J0RDs7Ozs7R0FLRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsSUFBYyxFQUNkLGVBQW1DLEVBQ25DLEVBQUUsc0JBQXNCLEdBQUcsSUFBSSxLQUE0QixFQUFFO0lBRTdELElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxXQUFXLEdBQUcscUJBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVsRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzFEO0lBRUQsSUFBSSxzQkFBc0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO1FBQ3BGLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztLQUM3RjtJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFwQkQsd0NBb0JDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsSUFBYyxFQUNkLGVBQW1DLEVBQ25DLFVBQWlDLEVBQUU7SUFFbkMsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQU5ELDRDQU1DO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUEwQztJQUM3RixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFGRCw0Q0FFQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBMEM7SUFDL0YsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUZELGdEQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUN6QixLQUFnQixFQUNoQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQXNCO0lBRS9FLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1FBQy9DLHlCQUF5QjtRQUN6QixJQUFJO1lBQ0YsSUFBSSxNQUFNLEtBQUssTUFBTSxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNoRSxPQUFPLGdCQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUU7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsTUFBTSxpQ0FBaUMsQ0FBQyxDQUFDO1NBQy9FO0tBQ0Y7SUFDRCxJQUFJO1FBQ0YsT0FBTyxnQkFBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM5QjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsTUFBTSxtQkFBbUIsQ0FBQyxDQUFDO0tBQ2xFO0FBQ0gsQ0FBQztBQW5CRCxrQ0FtQkM7QUFFRCxTQUFnQixZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLE1BQStCLEVBQy9CLEVBQUUsZ0JBQWdCLEVBQWlDO0lBRW5ELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sSUFBSSxHQUFHO1FBQ1gsUUFBUTtRQUNSLFdBQVcsQ0FBQyxLQUFLLEVBQUU7WUFDakIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ25CLE1BQU0sRUFBRSxNQUFNO1lBQ2QsVUFBVSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDbkMsYUFBYTtZQUNiLGVBQWU7U0FDaEIsQ0FBQztRQUNGLFFBQVE7UUFDUixXQUFXLENBQUMsS0FBSyxFQUFFO1lBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsU0FBUztZQUNyQixNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsTUFBTSxDQUFDLGdCQUFnQjtZQUNuQyxhQUFhO1lBQ2IsZUFBZTtTQUNoQixDQUFDO0tBQ0gsQ0FBQztJQUVGLElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSTtZQUNGLFFBQVE7WUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7U0FDaEQ7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQXZDRCxvQ0F1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5cbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnYmlwMzInO1xuaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgS3JzUHJvdmlkZXIsIGtyc1Byb3ZpZGVycyB9IGZyb20gJy4uL2NvbmZpZyc7XG5cbmludGVyZmFjZSBWYWxpZGF0ZUtleU9wdGlvbnMge1xuICBrZXk6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U/OiBzdHJpbmc7XG4gIGlzVW5zaWduZWRTd2VlcDogYm9vbGVhbjtcbiAgaXNLcnNSZWNvdmVyeTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWF0ZVJlY292ZXJ5T3B0aW9ucyB7XG4gIHVzZXJLZXk6IHN0cmluZztcbiAgYmFja3VwS2V5OiBzdHJpbmc7XG4gIGJpdGdvS2V5Pzogc3RyaW5nOyAvLyBvcHRpb25hbCBmb3IgeHJwIHJlY292ZXJpZXNcbiAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufVxuXG50eXBlIEdldEtyc1Byb3ZpZGVyT3B0aW9ucyA9IHsgY2hlY2tDb2luRmFtaWx5U3VwcG9ydD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAcGFyYW0gY29pblxuICogQHBhcmFtIGtyc1Byb3ZpZGVyTmFtZVxuICogQHBhcmFtIGNoZWNrQ29pbkZhbWlseVN1cHBvcnQgLSBhc3NlcnQgdGhhdCBrcnNQcm92aWRlciBleHBsaWNpdGx5IHN1cHBvcnRzIGNvaW5cbiAqIEByZXR1cm4gS3JzUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEtyc1Byb3ZpZGVyKFxuICBjb2luOiBCYXNlQ29pbixcbiAga3JzUHJvdmlkZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHsgY2hlY2tDb2luRmFtaWx5U3VwcG9ydCA9IHRydWUgfTogR2V0S3JzUHJvdmlkZXJPcHRpb25zID0ge31cbik6IEtyc1Byb3ZpZGVyIHtcbiAgaWYgKCFrcnNQcm92aWRlck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGtyc1Byb3ZpZGVyIG5hbWVgKTtcbiAgfVxuXG4gIGNvbnN0IGtyc1Byb3ZpZGVyID0ga3JzUHJvdmlkZXJzW2tyc1Byb3ZpZGVyTmFtZV07XG5cbiAgaWYgKGtyc1Byb3ZpZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHJlY292ZXJ5IHNlcnZpY2UgcHJvdmlkZXInKTtcbiAgfVxuXG4gIGlmIChjaGVja0NvaW5GYW1pbHlTdXBwb3J0ICYmICFrcnNQcm92aWRlci5zdXBwb3J0ZWRDb2lucy5pbmNsdWRlcyhjb2luLmdldEZhbWlseSgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignc3BlY2lmaWVkIGtleSByZWNvdmVyeSBzZXJ2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVjb3ZlcmllcyBmb3IgdGhpcyBjb2luJyk7XG4gIH1cblxuICByZXR1cm4ga3JzUHJvdmlkZXI7XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3Ige0BzZWUgZ2V0S3JzUHJvdmlkZXJ9IHJldHVybmluZyB2b2lkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0tyc1Byb3ZpZGVyKFxuICBjb2luOiBCYXNlQ29pbixcbiAga3JzUHJvdmlkZXJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IEdldEtyc1Byb3ZpZGVyT3B0aW9ucyA9IHt9XG4pOiB2b2lkIHtcbiAgZ2V0S3JzUHJvdmlkZXIoY29pbiwga3JzUHJvdmlkZXJOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElzS3JzUmVjb3ZlcnkoeyBiYWNrdXBLZXksIHVzZXJLZXkgfTogeyBiYWNrdXBLZXk6IHN0cmluZzsgdXNlcktleTogc3RyaW5nIH0pOiBib29sZWFuIHtcbiAgcmV0dXJuIGJhY2t1cEtleS5zdGFydHNXaXRoKCd4cHViJykgJiYgIXVzZXJLZXkuc3RhcnRzV2l0aCgneHB1YicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXNVbnNpZ25lZFN3ZWVwKHsgYmFja3VwS2V5LCB1c2VyS2V5IH06IHsgYmFja3VwS2V5OiBzdHJpbmc7IHVzZXJLZXk6IHN0cmluZyB9KTogYm9vbGVhbiB7XG4gIHJldHVybiBiYWNrdXBLZXkuc3RhcnRzV2l0aCgneHB1YicpICYmIHVzZXJLZXkuc3RhcnRzV2l0aCgneHB1YicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVLZXkoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIHsga2V5LCBzb3VyY2UsIHBhc3NwaHJhc2UsIGlzVW5zaWduZWRTd2VlcCwgaXNLcnNSZWNvdmVyeSB9OiBWYWxpZGF0ZUtleU9wdGlvbnNcbik6IEJJUDMySW50ZXJmYWNlIHtcbiAgaWYgKCFrZXkuc3RhcnRzV2l0aCgneHBydicpICYmICFpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAvLyBUcnkgdG8gZGVjcnlwdCB0aGUga2V5XG4gICAgdHJ5IHtcbiAgICAgIGlmIChzb3VyY2UgPT09ICd1c2VyJyB8fCAoc291cmNlID09PSAnYmFja3VwJyAmJiAhaXNLcnNSZWNvdmVyeSkpIHtcbiAgICAgICAgcmV0dXJuIGJpcDMyLmZyb21CYXNlNTgoYml0Z28uZGVjcnlwdCh7IHBhc3N3b3JkOiBwYXNzcGhyYXNlLCBpbnB1dDoga2V5IH0pKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBkZWNyeXB0ICR7c291cmNlfSBrZXkgd2l0aCBwYXNzY29kZSAtIHRyeSBhZ2FpbiFgKTtcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gYmlwMzIuZnJvbUJhc2U1OChrZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gdmFsaWRhdGUgJHtzb3VyY2V9IGtleSAtIHRyeSBhZ2FpbiFgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmlwMzJLZXlzKFxuICBiaXRnbzogQml0R29CYXNlLFxuICBwYXJhbXM6IEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zLFxuICB7IHJlcXVpcmVCaXRHb1hwdWIgfTogeyByZXF1aXJlQml0R29YcHViOiBib29sZWFuIH1cbik6IEJJUDMySW50ZXJmYWNlW10ge1xuICBjb25zdCBpc0tyc1JlY292ZXJ5ID0gZ2V0SXNLcnNSZWNvdmVyeShwYXJhbXMpO1xuICBjb25zdCBpc1Vuc2lnbmVkU3dlZXAgPSBnZXRJc1Vuc2lnbmVkU3dlZXAocGFyYW1zKTtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICAvLyBCb3ggQVxuICAgIHZhbGlkYXRlS2V5KGJpdGdvLCB7XG4gICAgICBrZXk6IHBhcmFtcy51c2VyS2V5LFxuICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICBwYXNzcGhyYXNlOiBwYXJhbXMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIGlzS3JzUmVjb3ZlcnksXG4gICAgICBpc1Vuc2lnbmVkU3dlZXAsXG4gICAgfSksXG4gICAgLy8gQm94IEJcbiAgICB2YWxpZGF0ZUtleShiaXRnbywge1xuICAgICAga2V5OiBwYXJhbXMuYmFja3VwS2V5LFxuICAgICAgc291cmNlOiAnYmFja3VwJyxcbiAgICAgIHBhc3NwaHJhc2U6IHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgaXNLcnNSZWNvdmVyeSxcbiAgICAgIGlzVW5zaWduZWRTd2VlcCxcbiAgICB9KSxcbiAgXTtcblxuICBpZiAocmVxdWlyZUJpdEdvWHB1Yikge1xuICAgIGlmICghcGFyYW1zLmJpdGdvS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJpdEdvIHhwdWIgcmVxdWlyZWQgYnV0IG5vdCBwcm92aWRlZGApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gQm94IENcbiAgICAgIGtleXMucHVzaChiaXAzMi5mcm9tQmFzZTU4KHBhcmFtcy5iaXRnb0tleSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHBhcnNlIGJpdGdvIHhwdWIhJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG4iXX0=