@bitgo/sdk-core 38.13.0 → 38.16.0

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 (108) hide show
  1. package/dist/src/api/types.d.ts +6 -0
  2. package/dist/src/api/types.d.ts.map +1 -1
  3. package/dist/src/api/types.js +8 -1
  4. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +17 -7
  5. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  6. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  7. package/dist/src/bitgo/defi/defiVault.d.ts +42 -8
  8. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  9. package/dist/src/bitgo/defi/defiVault.js +76 -10
  10. package/dist/src/bitgo/defi/iDefiVault.d.ts +22 -2
  11. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
  12. package/dist/src/bitgo/defi/iDefiVault.js +1 -1
  13. package/dist/src/bitgo/environments.js +3 -3
  14. package/dist/src/bitgo/internal/keycard.d.ts +2 -1
  15. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  16. package/dist/src/bitgo/internal/keycard.js +6 -3
  17. package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -2
  18. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  19. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  20. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  21. package/dist/src/bitgo/keychain/keychains.js +24 -10
  22. package/dist/src/bitgo/safe/iSafe.d.ts +5 -2
  23. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
  24. package/dist/src/bitgo/safe/iSafe.js +1 -1
  25. package/dist/src/bitgo/safe/safe.d.ts +14 -7
  26. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  27. package/dist/src/bitgo/safe/safe.js +105 -29
  28. package/dist/src/bitgo/staking/iStakingWallet.d.ts +13 -5
  29. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  30. package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
  31. package/dist/src/bitgo/staking/stakingWallet.d.ts +2 -2
  32. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  33. package/dist/src/bitgo/staking/stakingWallet.js +14 -1
  34. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  35. package/dist/src/bitgo/tss/common.js +4 -1
  36. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +50 -0
  37. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  38. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +112 -0
  39. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  40. package/dist/src/bitgo/utils/mpcUtils.js +15 -1
  41. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -1
  42. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  44. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +4 -1
  45. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +18 -6
  47. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +9 -1
  48. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -1
  49. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +24 -3
  50. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +88 -0
  51. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  52. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +494 -0
  53. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +1 -0
  54. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  55. package/dist/src/bitgo/utils/tss/ecdsa/index.js +2 -1
  56. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +20 -2
  57. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -1
  58. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +1 -1
  59. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +8 -5
  60. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  61. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +1 -1
  62. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +33 -0
  63. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  64. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +260 -0
  65. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +1 -0
  66. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  67. package/dist/src/bitgo/utils/tss/eddsa/index.js +2 -1
  68. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +15 -2
  69. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -1
  70. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +13 -2
  71. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  72. package/dist/src/bitgo/utils/tss/recipientUtils.js +13 -1
  73. package/dist/src/bitgo/wallet/BuildParams.d.ts +8 -0
  74. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  75. package/dist/src/bitgo/wallet/BuildParams.js +6 -1
  76. package/dist/src/bitgo/wallet/iWallet.d.ts +7 -1
  77. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  78. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  79. package/dist/src/bitgo/wallet/safeKeychain.d.ts +25 -2
  80. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
  81. package/dist/src/bitgo/wallet/safeKeychain.js +72 -18
  82. package/dist/src/bitgo/wallet/wallet.d.ts +12 -4
  83. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  84. package/dist/src/bitgo/wallet/wallet.js +82 -17
  85. package/dist/src/bitgo/wallet/wallets.d.ts +6 -0
  86. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  87. package/dist/src/bitgo/wallet/wallets.js +35 -36
  88. package/dist/test/unit/bitgo/defi/defiVault.js +264 -1
  89. package/dist/test/unit/bitgo/keychain/keychains.js +43 -1
  90. package/dist/test/unit/bitgo/safe/safe.js +53 -22
  91. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  92. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  93. package/dist/test/unit/bitgo/tss/common.js +77 -0
  94. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  95. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  96. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +181 -0
  97. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +70 -1
  98. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  99. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  100. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +173 -0
  101. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +33 -1
  102. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +10 -10
  103. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  104. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  105. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +303 -0
  106. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +51 -40
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +6 -5
@@ -69,6 +69,23 @@ describe('Keychains.createBackup', function () {
69
69
  };
70
70
  keychains = buildKeychains();
71
71
  });
72
+ describe('safe child key registration', function () {
73
+ it('serializes the hardened derivation path', async function () {
74
+ await keychains.add({
75
+ pub: XPUB,
76
+ source: 'user',
77
+ keyType: 'independent',
78
+ parent: 'user-root-id',
79
+ safeId: SAFE_ID,
80
+ derivedFromParentWithPath: "m/7'",
81
+ });
82
+ const derivedPath = sentBody().derivedFromParentWithPath;
83
+ if (typeof derivedPath !== 'string') {
84
+ throw new Error('expected derivedFromParentWithPath to be serialized');
85
+ }
86
+ derivedPath.should.equal("m/7'");
87
+ });
88
+ });
72
89
  describe('safe ed25519Multisig root (slot ④)', function () {
73
90
  it('posts a 108-char composite pub built from the generated key', async function () {
74
91
  await keychains.createBackup({ passphrase: 'pw', safeId: SAFE_ID });
@@ -134,5 +151,30 @@ describe('Keychains.createBackup', function () {
134
151
  body.provider.should.equal('krs-provider');
135
152
  });
136
153
  });
154
+ describe('password rotation encryption session', function () {
155
+ it('uses the supplied session for the new encrypted private key', async function () {
156
+ mockBitGo.decrypt = sinon.stub().resolves('decrypted-prv');
157
+ const sessionEncrypt = sinon.stub().resolves('session-encrypted');
158
+ const session = {
159
+ encrypt: sessionEncrypt,
160
+ decrypt: sinon.stub().resolves('decrypted-prv'),
161
+ destroy: sinon.stub(),
162
+ };
163
+ const updatedKeychain = await keychains.updateSingleKeychainPassword({
164
+ keychain: {
165
+ id: 'key-id',
166
+ encryptedPrv: 'legacy-encrypted-prv',
167
+ type: 'independent',
168
+ },
169
+ oldPassword: 'old-password',
170
+ newPassword: 'new-password',
171
+ encryptionVersion: 2,
172
+ encryptionSession: session,
173
+ });
174
+ sessionEncrypt.calledOnceWithExactly('decrypted-prv').should.equal(true);
175
+ mockBitGo.encrypt.called.should.equal(false);
176
+ updatedKeychain.encryptedPrv.should.equal('session-encrypted');
177
+ });
178
+ });
137
179
  });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL2tleWNoYWluL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQXVFO0FBRXZFOzs7R0FHRztBQUNILE1BQU0sVUFBVSxHQUFHLDBEQUEwRCxDQUFDO0FBRTlFLDBGQUEwRjtBQUMxRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFekIsZ0dBQWdHO0FBQ2hHLE1BQU0sSUFBSSxHQUNSLGlIQUFpSCxDQUFDO0FBRXBILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtJQUNqQyxJQUFJLFNBQW9CLENBQUM7SUFDekIsSUFBSSxJQUFxQixDQUFDO0lBQzFCLElBQUksU0FBYyxDQUFDO0lBRW5CLDBFQUEwRTtJQUMxRSxTQUFTLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFHLEdBQUcsVUFBVTtRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ25ELGVBQWUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUNqRSxDQUFDO1FBQ0YsT0FBTyxJQUFJLGVBQVMsQ0FBQyxTQUFTLEVBQUUsWUFBbUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVLENBQUM7UUFDVCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9B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QzlDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IEtleWNoYWlucywgZGVjb2RlRGVyaXZhYmxlRWQyNTUxOVB1YiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbi8qKlxuICogU2xvdC3ikaMgcm9vdCBrZXlzIGFyZSBnZW5lcmF0ZWQgYXMgWExNIGtleWNoYWlucywgc28gYGNyZWF0ZSgpYCB5aWVsZHMgYSA1Ni1jaGFyIFN0cktleSBwdWIuXG4gKiBUYWtlbiBmcm9tIHRoZSBjcm9zcy1yZXBvIGZpeHR1cmUgcGlubmVkIGluIFdDTi0yNDg1LlxuICovXG5jb25zdCBTVFJLRVlfUFVCID0gJ0dBNVdVSjU0WjIzS0lMTENVT1VOQUtUUEJWWldLTVFWTzRPNkVRNUdITEFFUklNTExITkNTS1lIJztcblxuLyoqIE1hcmtzIHRoZSBrZXkgYXMgYSBzYWZlIHJvb3Q7IGNvbWJpbmVkIHdpdGggdGhlIHB1YidzIHNoYXBlIHRoaXMgaWRlbnRpZmllcyBzbG90IOKRoy4gKi9cbmNvbnN0IFNBRkVfSUQgPSAnc2FmZS0xJztcblxuLyoqIEFuIHhwdWIsIGFzIHRoZSBzZWNwMjU2azFNdWx0aXNpZyAoc2xvdCDikaApIHJvb3QgY29pbiBnZW5lcmF0ZXMuIEFscmVhZHkgaGFzIGEgY2hhaW4gY29kZS4gKi9cbmNvbnN0IFhQVUIgPVxuICAneHB1YjY2MU15TXdBcVJiY0Z0WGdTNXNZSkFCcXFHOVlMbUM0UTFSZGFwOWdTRThOcXR3eWJHaGVQWTJnWjI5RVNGanFKb0N1MVJ1cGplOFl0R3FzZWZEMjY1VE1nN3VzVURGZHA2VzFFR01jZXQ4JztcblxuZGVzY3JpYmUoJ0tleWNoYWlucy5jcmVhdGVCYWNrdXAnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBrZXljaGFpbnM6IEtleWNoYWlucztcbiAgbGV0IHNlbmQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuXG4gIC8qKiBUaGUgYm9keSBhY3R1YWxseSBoYW5kZWQgdG8gYC5zZW5kKClgIOKAlCBpLmUuIHdoYXQgZ29lcyBvbiB0aGUgd2lyZS4gKi9cbiAgZnVuY3Rpb24gc2VudEJvZHkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiBzZW5kLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRLZXljaGFpbnMocHViID0gU1RSS0VZX1BVQik6IEtleWNoYWlucyB7XG4gICAgY29uc3QgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgZ2VuZXJhdGVLZXlQYWlyOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YiwgcHJ2OiAnU09NRV9TRUVEJyB9KSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgS2V5Y2hhaW5zKG1vY2tCaXRHbywgbW9ja0Jhc2VDb2luIGFzIGFueSk7XG4gIH1cblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAnYmFja3VwLWtleS1pZCcgfSkgfSk7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgcG9zdDogc2lub24uc3R1YigpLnJldHVybnMoeyBzZW5kIH0pLFxuICAgICAgZW5jcnlwdDogc2lub24uc3R1YigpLnJlc29sdmVzKCdlbmNyeXB0ZWQtcHJ2JyksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBrZXljaGFpbnMgPSBidWlsZEtleWNoYWlucygpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2FmZSBlZDI1NTE5TXVsdGlzaWcgcm9vdCAoc2xvdCDikaMpJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdwb3N0cyBhIDEwOC1jaGFyIGNvbXBvc2l0ZSBwdWIgYnVpbHQgZnJvbSB0aGUgZ2VuZXJhdGVkIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIGNvbnN0IHB1YiA9IHNlbnRCb2R5KCkucHViIGFzIHN0cmluZztcbiAgICAgIHB1Yi5sZW5ndGguc2hvdWxkLmVxdWFsKDEwOCk7XG4gICAgICBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHB1YikucHViLnNob3VsZC5lcXVhbChTVFJLRVlfUFVCKTtcbiAgICB9KTtcblxuICAgIGl0KCdtaW50cyBhIGNoYWluIGNvZGUgdGhhdCByb3VuZC10cmlwcyBvdXQgb2YgdGhlIHB1YicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIC8vIFRoZSBjaGFpbiBjb2RlIGhhcyBubyBmaWVsZCBvZiBpdHMgb3duOyB0aGlzIGRlY29kZSBpcyBob3cgY2FsbGVycyAoZS5nLiB0aGUga2V5Y2FyZCdzXG4gICAgICAvLyBib3ggQikgcmVjb3ZlciBpdC5cbiAgICAgIGNvbnN0IHsgY2hhaW5Db2RlIH0gPSBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHNlbnRCb2R5KCkucHViIGFzIHN0cmluZyk7XG4gICAgICBjaGFpbkNvZGUuc2hvdWxkLm1hdGNoKC9eW0EtWjItN117NTJ9JC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ21pbnRzIGEgZGlmZmVyZW50IGNoYWluIGNvZGUgZm9yIGVhY2ggYmFja3VwIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBjb25zdCBmaXJzdCA9IGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoc2VuZC5maXJzdENhbGwuYXJnc1swXS5wdWIpLmNoYWluQ29kZTtcbiAgICAgIGNvbnN0IHNlY29uZCA9IGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoc2VuZC5zZWNvbmRDYWxsLmFyZ3NbMF0ucHViKS5jaGFpbkNvZGU7XG4gICAgICBmaXJzdC5zaG91bGQubm90LmVxdWFsKHNlY29uZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VuZHMgbm8gY2hhaW5Db2RlIGZpZWxkIG9mIGl0cyBvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBzZW50Qm9keSgpLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnY2hhaW5Db2RlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RpbGwgZW5jcnlwdHMgYW5kIHJldHVybnMgdGhlIHVuLWNvbXBvc2VkIHBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIHNlbnRCb2R5KCkuZW5jcnlwdGVkUHJ2IS5zaG91bGQuZXF1YWwoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICAgIHJlc3VsdC5wcnYhLnNob3VsZC5lcXVhbCgnU09NRV9TRUVEJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsZWF2ZXMgZXZlcnkgb3RoZXIga2V5IHVudG91Y2hlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZG9lcyBub3QgY29tcG9zZSB3aXRob3V0IGEgc2FmZUlkLCBldmVuIGZvciBhbiBlZDI1NTE5IGNvaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgY29uc3QgYm9keSA9IHNlbnRCb2R5KCk7XG4gICAgICBib2R5LnB1YiEuc2hvdWxkLmVxdWFsKFNUUktFWV9QVUIpO1xuICAgICAgKGJvZHkucHViIGFzIHN0cmluZykubGVuZ3RoLnNob3VsZC5lcXVhbCg1Nik7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY29tcG9zZSBhIHNhZmUgc2VjcDI1NmsxTXVsdGlzaWcgcm9vdCAoc2xvdCDikaApJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQW4geHB1YiBhbHJlYWR5IGNhcnJpZXMgaXRzIG93biBjaGFpbiBjb2RlOyBjb21wb3Npbmcgb250byBpdCB3b3VsZCBjb3JydXB0IHRoZSBwdWIuXG4gICAgICBjb25zdCBidGNLZXljaGFpbnMgPSBidWlsZEtleWNoYWlucyhYUFVCKTtcblxuICAgICAgYXdhaXQgYnRjS2V5Y2hhaW5zLmNyZWF0ZUJhY2t1cCh7IHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogU0FGRV9JRCB9KTtcblxuICAgICAgc2VudEJvZHkoKS5wdWIhLnNob3VsZC5lcXVhbChYUFVCKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZW5kcyBhIGJvZHkgd2l0aCBubyBjaGFpbkNvZGUgYW5kIHNvdXJjZSBiYWNrdXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgY29uc3QgYm9keSA9IHNlbnRCb2R5KCk7XG4gICAgICBib2R5LnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnY2hhaW5Db2RlJyk7XG4gICAgICBib2R5LnNvdXJjZSEuc2hvdWxkLmVxdWFsKCdiYWNrdXAnKTtcbiAgICAgIGJvZHkuZW5jcnlwdGVkUHJ2IS5zaG91bGQuZXF1YWwoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICB9KTtcblxuICAgIGl0KCdsZWF2ZXMgYSBUU1MgYmFja3VwIGtleSB1bnRvdWNoZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBObyBsb2NhbCBrZXlwYWlyIGlzIGdlbmVyYXRlZCBvbiB0aGUgVFNTIHBhdGgsIHNvIHRoZXJlIGlzIG5vIHB1YiB0byBpbnNwZWN0IG9yIGNvbXBvc2UuXG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcHJ2OiAndHNzLXBydicsIGNvbW1vbktleWNoYWluOiAnY29tbW9uLWtleWNoYWluJywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBjb25zdCBib2R5ID0gc2VudEJvZHkoKTtcbiAgICAgIGJvZHkuY29tbW9uS2V5Y2hhaW4hLnNob3VsZC5lcXVhbCgnY29tbW9uLWtleWNoYWluJyk7XG4gICAgICAoYm9keS5wdWIgPT09IHVuZGVmaW5lZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdsZWF2ZXMgYSBLUlMtcHJvdmlkZXIgYmFja3VwIGtleSB1bnRvdWNoZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcHJvdmlkZXI6ICdrcnMtcHJvdmlkZXInLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIGNvbnN0IGJvZHkgPSBzZW50Qm9keSgpO1xuICAgICAgKGJvZHkucHViID09PSB1bmRlZmluZWQpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBib2R5LnByb3ZpZGVyIS5zaG91bGQuZXF1YWwoJ2tycy1wcm92aWRlcicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL2tleWNoYWluL2tleWNoYWlucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQXVFO0FBR3ZFOzs7R0FHRztBQUNILE1BQU0sVUFBVSxHQUFHLDBEQUEwRCxDQUFDO0FBRTlFLDBGQUEwRjtBQUMxRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFekIsZ0dBQWdHO0FBQ2hHLE1BQU0sSUFBSSxHQUNSLGlIQUFpSCxDQUFDO0FBRXBILFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtJQUNqQyxJQUFJLFNBQW9CLENBQUM7SUFDekIsSUFBSSxJQUFxQixDQUFDO0lBQzFCLElBQUksU0FBYyxDQUFDO0lBRW5CLDBFQUEwRTtJQUMxRSxTQUFTLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUFHLEdBQUcsVUFBVTtRQUN0QyxNQUFNLFlBQVksR0FBRztZQUNuQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ25ELGVBQWUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUNqRSxDQUFDO1FBQ0YsT0FBTyxJQUFJLGVBQVMsQ0FBQyxTQUFTLEVBQUUsWUFBbUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxVQUFVLENBQUM7UUFDVCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9B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QUFTLENBQUMsNEJBQTRCLENBQUM7Z0JBQ25FLFFBQVEsRUFBRTtvQkFDUixFQUFFLEVBQUUsUUFBUTtvQkFDWixZQUFZLEVBQUUsc0JBQXNCO29CQUNwQyxJQUFJLEVBQUUsYUFBYTtpQkFDcEI7Z0JBQ0QsV0FBVyxFQUFFLGNBQWM7Z0JBQzNCLFdBQVcsRUFBRSxjQUFjO2dCQUMzQixpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixpQkFBaUIsRUFBRSxPQUFPO2FBQzNCLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pFLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsZUFBZSxDQUFDLFlBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgS2V5Y2hhaW5zLCBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB0eXBlIHsgSUVuY3J5cHRpb25TZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2FwaSc7XG5cbi8qKlxuICogU2xvdC3ikaMgcm9vdCBrZXlzIGFyZSBnZW5lcmF0ZWQgYXMgWExNIGtleWNoYWlucywgc28gYGNyZWF0ZSgpYCB5aWVsZHMgYSA1Ni1jaGFyIFN0cktleSBwdWIuXG4gKiBUYWtlbiBmcm9tIHRoZSBjcm9zcy1yZXBvIGZpeHR1cmUgcGlubmVkIGluIFdDTi0yNDg1LlxuICovXG5jb25zdCBTVFJLRVlfUFVCID0gJ0dBNVdVSjU0WjIzS0lMTENVT1VOQUtUUEJWWldLTVFWTzRPNkVRNUdITEFFUklNTExITkNTS1lIJztcblxuLyoqIE1hcmtzIHRoZSBrZXkgYXMgYSBzYWZlIHJvb3Q7IGNvbWJpbmVkIHdpdGggdGhlIHB1YidzIHNoYXBlIHRoaXMgaWRlbnRpZmllcyBzbG90IOKRoy4gKi9cbmNvbnN0IFNBRkVfSUQgPSAnc2FmZS0xJztcblxuLyoqIEFuIHhwdWIsIGFzIHRoZSBzZWNwMjU2azFNdWx0aXNpZyAoc2xvdCDikaApIHJvb3QgY29pbiBnZW5lcmF0ZXMuIEFscmVhZHkgaGFzIGEgY2hhaW4gY29kZS4gKi9cbmNvbnN0IFhQVUIgPVxuICAneHB1YjY2MU15TXdBcVJiY0Z0WGdTNXNZSkFCcXFHOVlMbUM0UTFSZGFwOWdTRThOcXR3eWJHaGVQWTJnWjI5RVNGanFKb0N1MVJ1cGplOFl0R3FzZWZEMjY1VE1nN3VzVURGZHA2VzFFR01jZXQ4JztcblxuZGVzY3JpYmUoJ0tleWNoYWlucy5jcmVhdGVCYWNrdXAnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBrZXljaGFpbnM6IEtleWNoYWlucztcbiAgbGV0IHNlbmQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuXG4gIC8qKiBUaGUgYm9keSBhY3R1YWxseSBoYW5kZWQgdG8gYC5zZW5kKClgIOKAlCBpLmUuIHdoYXQgZ29lcyBvbiB0aGUgd2lyZS4gKi9cbiAgZnVuY3Rpb24gc2VudEJvZHkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiBzZW5kLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRLZXljaGFpbnMocHViID0gU1RSS0VZX1BVQik6IEtleWNoYWlucyB7XG4gICAgY29uc3QgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgZ2VuZXJhdGVLZXlQYWlyOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YiwgcHJ2OiAnU09NRV9TRUVEJyB9KSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgS2V5Y2hhaW5zKG1vY2tCaXRHbywgbW9ja0Jhc2VDb2luIGFzIGFueSk7XG4gIH1cblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiAnYmFja3VwLWtleS1pZCcgfSkgfSk7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgcG9zdDogc2lub24uc3R1YigpLnJldHVybnMoeyBzZW5kIH0pLFxuICAgICAgZW5jcnlwdDogc2lub24uc3R1YigpLnJlc29sdmVzKCdlbmNyeXB0ZWQtcHJ2JyksXG4gICAgICBzZXRSZXF1ZXN0VHJhY2VyOiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBrZXljaGFpbnMgPSBidWlsZEtleWNoYWlucygpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2FmZSBjaGlsZCBrZXkgcmVnaXN0cmF0aW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzZXJpYWxpemVzIHRoZSBoYXJkZW5lZCBkZXJpdmF0aW9uIHBhdGgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuYWRkKHtcbiAgICAgICAgcHViOiBYUFVCLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAga2V5VHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgICAgcGFyZW50OiAndXNlci1yb290LWlkJyxcbiAgICAgICAgc2FmZUlkOiBTQUZFX0lELFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhQYXRoOiBcIm0vNydcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBkZXJpdmVkUGF0aCA9IHNlbnRCb2R5KCkuZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aDtcbiAgICAgIGlmICh0eXBlb2YgZGVyaXZlZFBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aCB0byBiZSBzZXJpYWxpemVkJyk7XG4gICAgICB9XG4gICAgICBkZXJpdmVkUGF0aC5zaG91bGQuZXF1YWwoXCJtLzcnXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2FmZSBlZDI1NTE5TXVsdGlzaWcgcm9vdCAoc2xvdCDikaMpJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdwb3N0cyBhIDEwOC1jaGFyIGNvbXBvc2l0ZSBwdWIgYnVpbHQgZnJvbSB0aGUgZ2VuZXJhdGVkIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIGNvbnN0IHB1YiA9IHNlbnRCb2R5KCkucHViIGFzIHN0cmluZztcbiAgICAgIHB1Yi5sZW5ndGguc2hvdWxkLmVxdWFsKDEwOCk7XG4gICAgICBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHB1YikucHViLnNob3VsZC5lcXVhbChTVFJLRVlfUFVCKTtcbiAgICB9KTtcblxuICAgIGl0KCdtaW50cyBhIGNoYWluIGNvZGUgdGhhdCByb3VuZC10cmlwcyBvdXQgb2YgdGhlIHB1YicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIC8vIFRoZSBjaGFpbiBjb2RlIGhhcyBubyBmaWVsZCBvZiBpdHMgb3duOyB0aGlzIGRlY29kZSBpcyBob3cgY2FsbGVycyAoZS5nLiB0aGUga2V5Y2FyZCdzXG4gICAgICAvLyBib3ggQikgcmVjb3ZlciBpdC5cbiAgICAgIGNvbnN0IHsgY2hhaW5Db2RlIH0gPSBkZWNvZGVEZXJpdmFibGVFZDI1NTE5UHViKHNlbnRCb2R5KCkucHViIGFzIHN0cmluZyk7XG4gICAgICBjaGFpbkNvZGUuc2hvdWxkLm1hdGNoKC9eW0EtWjItN117NTJ9JC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ21pbnRzIGEgZGlmZmVyZW50IGNoYWluIGNvZGUgZm9yIGVhY2ggYmFja3VwIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBjb25zdCBmaXJzdCA9IGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoc2VuZC5maXJzdENhbGwuYXJnc1swXS5wdWIpLmNoYWluQ29kZTtcbiAgICAgIGNvbnN0IHNlY29uZCA9IGRlY29kZURlcml2YWJsZUVkMjU1MTlQdWIoc2VuZC5zZWNvbmRDYWxsLmFyZ3NbMF0ucHViKS5jaGFpbkNvZGU7XG4gICAgICBmaXJzdC5zaG91bGQubm90LmVxdWFsKHNlY29uZCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VuZHMgbm8gY2hhaW5Db2RlIGZpZWxkIG9mIGl0cyBvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBzZW50Qm9keSgpLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnY2hhaW5Db2RlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RpbGwgZW5jcnlwdHMgYW5kIHJldHVybnMgdGhlIHVuLWNvbXBvc2VkIHBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIHNlbnRCb2R5KCkuZW5jcnlwdGVkUHJ2IS5zaG91bGQuZXF1YWwoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICAgIHJlc3VsdC5wcnYhLnNob3VsZC5lcXVhbCgnU09NRV9TRUVEJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsZWF2ZXMgZXZlcnkgb3RoZXIga2V5IHVudG91Y2hlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnZG9lcyBub3QgY29tcG9zZSB3aXRob3V0IGEgc2FmZUlkLCBldmVuIGZvciBhbiBlZDI1NTE5IGNvaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgY29uc3QgYm9keSA9IHNlbnRCb2R5KCk7XG4gICAgICBib2R5LnB1YiEuc2hvdWxkLmVxdWFsKFNUUktFWV9QVUIpO1xuICAgICAgKGJvZHkucHViIGFzIHN0cmluZykubGVuZ3RoLnNob3VsZC5lcXVhbCg1Nik7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY29tcG9zZSBhIHNhZmUgc2VjcDI1NmsxTXVsdGlzaWcgcm9vdCAoc2xvdCDikaApJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQW4geHB1YiBhbHJlYWR5IGNhcnJpZXMgaXRzIG93biBjaGFpbiBjb2RlOyBjb21wb3Npbmcgb250byBpdCB3b3VsZCBjb3JydXB0IHRoZSBwdWIuXG4gICAgICBjb25zdCBidGNLZXljaGFpbnMgPSBidWlsZEtleWNoYWlucyhYUFVCKTtcblxuICAgICAgYXdhaXQgYnRjS2V5Y2hhaW5zLmNyZWF0ZUJhY2t1cCh7IHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogU0FGRV9JRCB9KTtcblxuICAgICAgc2VudEJvZHkoKS5wdWIhLnNob3VsZC5lcXVhbChYUFVCKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZW5kcyBhIGJvZHkgd2l0aCBubyBjaGFpbkNvZGUgYW5kIHNvdXJjZSBiYWNrdXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgY29uc3QgYm9keSA9IHNlbnRCb2R5KCk7XG4gICAgICBib2R5LnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnY2hhaW5Db2RlJyk7XG4gICAgICBib2R5LnNvdXJjZSEuc2hvdWxkLmVxdWFsKCdiYWNrdXAnKTtcbiAgICAgIGJvZHkuZW5jcnlwdGVkUHJ2IS5zaG91bGQuZXF1YWwoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICB9KTtcblxuICAgIGl0KCdsZWF2ZXMgYSBUU1MgYmFja3VwIGtleSB1bnRvdWNoZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBObyBsb2NhbCBrZXlwYWlyIGlzIGdlbmVyYXRlZCBvbiB0aGUgVFNTIHBhdGgsIHNvIHRoZXJlIGlzIG5vIHB1YiB0byBpbnNwZWN0IG9yIGNvbXBvc2UuXG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcHJ2OiAndHNzLXBydicsIGNvbW1vbktleWNoYWluOiAnY29tbW9uLWtleWNoYWluJywgc2FmZUlkOiBTQUZFX0lEIH0pO1xuXG4gICAgICBjb25zdCBib2R5ID0gc2VudEJvZHkoKTtcbiAgICAgIGJvZHkuY29tbW9uS2V5Y2hhaW4hLnNob3VsZC5lcXVhbCgnY29tbW9uLWtleWNoYWluJyk7XG4gICAgICAoYm9keS5wdWIgPT09IHVuZGVmaW5lZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICB9KTtcblxuICAgIGl0KCdsZWF2ZXMgYSBLUlMtcHJvdmlkZXIgYmFja3VwIGtleSB1bnRvdWNoZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcHJvdmlkZXI6ICdrcnMtcHJvdmlkZXInLCBzYWZlSWQ6IFNBRkVfSUQgfSk7XG5cbiAgICAgIGNvbnN0IGJvZHkgPSBzZW50Qm9keSgpO1xuICAgICAgKGJvZHkucHViID09PSB1bmRlZmluZWQpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBib2R5LnByb3ZpZGVyIS5zaG91bGQuZXF1YWwoJ2tycy1wcm92aWRlcicpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ3Bhc3N3b3JkIHJvdGF0aW9uIGVuY3J5cHRpb24gc2Vzc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgndXNlcyB0aGUgc3VwcGxpZWQgc2Vzc2lvbiBmb3IgdGhlIG5ldyBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZGVjcnlwdCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygnZGVjcnlwdGVkLXBydicpO1xuICAgICAgY29uc3Qgc2Vzc2lvbkVuY3J5cHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ3Nlc3Npb24tZW5jcnlwdGVkJyk7XG4gICAgICBjb25zdCBzZXNzaW9uOiBJRW5jcnlwdGlvblNlc3Npb24gPSB7XG4gICAgICAgIGVuY3J5cHQ6IHNlc3Npb25FbmNyeXB0LFxuICAgICAgICBkZWNyeXB0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ2RlY3J5cHRlZC1wcnYnKSxcbiAgICAgICAgZGVzdHJveTogc2lub24uc3R1YigpLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgdXBkYXRlZEtleWNoYWluID0gYXdhaXQga2V5Y2hhaW5zLnVwZGF0ZVNpbmdsZUtleWNoYWluUGFzc3dvcmQoe1xuICAgICAgICBrZXljaGFpbjoge1xuICAgICAgICAgIGlkOiAna2V5LWlkJyxcbiAgICAgICAgICBlbmNyeXB0ZWRQcnY6ICdsZWdhY3ktZW5jcnlwdGVkLXBydicsXG4gICAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgICAgfSxcbiAgICAgICAgb2xkUGFzc3dvcmQ6ICdvbGQtcGFzc3dvcmQnLFxuICAgICAgICBuZXdQYXNzd29yZDogJ25ldy1wYXNzd29yZCcsXG4gICAgICAgIGVuY3J5cHRpb25WZXJzaW9uOiAyLFxuICAgICAgICBlbmNyeXB0aW9uU2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgIH0pO1xuXG4gICAgICBzZXNzaW9uRW5jcnlwdC5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoJ2RlY3J5cHRlZC1wcnYnKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICBtb2NrQml0R28uZW5jcnlwdC5jYWxsZWQuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICAgIHVwZGF0ZWRLZXljaGFpbi5lbmNyeXB0ZWRQcnYhLnNob3VsZC5lcXVhbCgnc2Vzc2lvbi1lbmNyeXB0ZWQnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -129,18 +129,20 @@ describe('Safe', function () {
129
129
  result.status.should.equal('archived');
130
130
  });
131
131
  });
132
- describe('member/share methods are stubbed (WCN-1204)', function () {
133
- it('addMember throws not-implemented (WCN-1204)', async function () {
134
- await safe.addMember({ userId: 'u', permissions: ['view'] }).should.be.rejectedWith(/WCN-1204/);
132
+ describe('member/share methods are stubbed', function () {
133
+ it('addMember throws not-implemented', async function () {
134
+ await safe.addMember({ userId: 'u', permissions: ['view'] }).should.be.rejectedWith(/not yet implemented/);
135
135
  });
136
- it('addMemberToWallet throws not-implemented (WCN-1204)', async function () {
137
- await safe.addMemberToWallet({ walletId: 'w', walletPassphrase: 'p' }).should.be.rejectedWith(/WCN-1204/);
136
+ it('addMemberToWallet throws not-implemented', async function () {
137
+ await safe
138
+ .addMemberToWallet({ walletId: 'w', walletPassphrase: 'p' })
139
+ .should.be.rejectedWith(/not yet implemented/);
138
140
  });
139
- it('listShares throws not-implemented (WCN-1204)', async function () {
140
- await safe.listShares().should.be.rejectedWith(/WCN-1204/);
141
+ it('listShares throws not-implemented', async function () {
142
+ await safe.listShares().should.be.rejectedWith(/not yet implemented/);
141
143
  });
142
- it('acceptShare throws not-implemented (WCN-1204)', async function () {
143
- await safe.acceptShare({ safeShareId: 's' }).should.be.rejectedWith(/WCN-1204/);
144
+ it('acceptShare throws not-implemented', async function () {
145
+ await safe.acceptShare({ safeShareId: 's' }).should.be.rejectedWith(/not yet implemented/);
144
146
  });
145
147
  });
146
148
  describe('createWallet (WCN-1203)', function () {
@@ -205,7 +207,7 @@ describe('Safe', function () {
205
207
  keyType: 'independent',
206
208
  parent: 'user-root-id',
207
209
  safeId: 'test-safe-id',
208
- derivedFromParentWithHardenedPath: "m/0'",
210
+ derivedFromParentWithPath: "m/0'",
209
211
  });
210
212
  addArgs.should.not.have.property('encryptedPrv');
211
213
  addArgs.should.not.have.property('derivedFromParentWithSeed');
@@ -225,7 +227,7 @@ describe('Safe', function () {
225
227
  }
226
228
  mintedSafeId.should.equal('test-safe-id');
227
229
  });
228
- it('registers the child with derivedFromParentWithHardenedPath at a non-zero mint index', async function () {
230
+ it('registers the child with derivedFromParentWithPath at a non-zero mint index', async function () {
229
231
  derivationQuery.returns({
230
232
  result: sinon.stub().resolves({ slot: 'secp256k1Multisig', index: 7 }),
231
233
  });
@@ -233,20 +235,49 @@ describe('Safe', function () {
233
235
  await safe.createWallet({ coin: 'tbtc', label: 'desk 8', passphrase: 'pw' });
234
236
  const addArgs = keychainsAdd.firstCall.args[0];
235
237
  addArgs.pub.should.equal(childAt7.pub);
236
- addArgs.derivedFromParentWithHardenedPath.should.equal("m/7'");
238
+ addArgs.derivedFromParentWithPath.should.equal("m/7'");
237
239
  addArgs.should.not.have.property('path');
238
240
  addArgs.should.not.have.property('derivedFromParentWithSeed');
239
241
  });
240
- it('rejects TSS minting', async function () {
241
- await safe
242
- .createWallet({ coin: 'hteth', label: 'evm', passphrase: 'pw', multisigType: 'tss' })
243
- .should.be.rejectedWith(/MPC safe wallet minting is not yet implemented/);
244
- });
245
- it('rejects a TSS-default coin even without multisigType tss', async function () {
242
+ it('mints a TSS wallet via the user/BitGo derive ceremony', async function () {
246
243
  stubCoin('hteth', { getDefaultMultisigType: 'tss' });
247
- await safe
248
- .createWallet({ coin: 'hteth', label: 'evm', passphrase: 'pw' })
249
- .should.be.rejectedWith(/MPC safe wallet minting is not yet implemented/);
244
+ // Real VRF key envelope: `{version: 1, prvKeyShare, vrf}`.
245
+ const userBlob = src_1.ECDSAUtils.buildVrfKeyEnvelopes(Buffer.from('signing-1'), Buffer.from('reduced-1'), Buffer.from('vrf-1')).envelope.toString('base64');
246
+ keychainsGet.onFirstCall().resolves({ id: 'ecdsa-user', source: 'user', encryptedPrv: `enc:${userBlob}` });
247
+ mockBitGo.decrypt = sinon
248
+ .stub()
249
+ .callsFake(({ input }) => Promise.resolve(input.startsWith('enc:') ? input.slice(4) : ''));
250
+ derivationQuery.returns({
251
+ result: sinon.stub().resolves({ slot: 'ecdsaMpc', index: 0 }),
252
+ });
253
+ const ceremonyStub = sinon.stub(src_1.ECDSAUtils.EcdsaVrfMPCv2Utils.prototype, 'createSafeChildKeychains').resolves({
254
+ userKeychain: { id: 'ecdsa-child-user' },
255
+ backupKeychain: { id: 'ecdsa-child-backup-placeholder' },
256
+ });
257
+ const wallet = await safe.createWallet({ coin: 'hteth', label: 'evm', passphrase: 'pw', multisigType: 'tss' });
258
+ derivationQuery.calledOnceWithExactly({ slot: 'ecdsaMpc' }).should.be.true();
259
+ keychainsGet.calledOnceWithExactly({ id: 'ecdsa-user' }).should.be.true();
260
+ const ceremonyArgs = ceremonyStub.firstCall.args[0];
261
+ ceremonyArgs.should.containEql({
262
+ safeId: 'test-safe-id',
263
+ enterprise: 'test-enterprise-id',
264
+ parentKeyId: 'ecdsa-bitgo',
265
+ derivationIndex: 0,
266
+ userRootKeyId: 'ecdsa-user',
267
+ backupRootKeyId: 'ecdsa-backup',
268
+ });
269
+ ceremonyArgs.should.not.have.property('backupRootKeyShare');
270
+ ceremonyArgs.should.not.have.property('backupRootVrfKeyShare');
271
+ ceremonyArgs.userRootKeyShare.should.deepEqual(Buffer.from('signing-1'));
272
+ ceremonyArgs.userRootVrfKeyShare.should.deepEqual(Buffer.from('vrf-1'));
273
+ mintSend.firstCall.args[0].should.eql({
274
+ coin: 'hteth',
275
+ label: 'evm',
276
+ type: 'hot',
277
+ multisigType: 'tss',
278
+ keys: ['ecdsa-child-user', 'ecdsa-child-backup-placeholder'],
279
+ });
280
+ wallet.id().should.equal('wallet-id');
250
281
  });
251
282
  it('rejects a peeked derivation index for the wrong slot', async function () {
252
283
  derivationQuery.returns({
@@ -274,4 +305,4 @@ describe('Safe', function () {
274
305
  });
275
306
  });
276
307
  });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUFnRztBQUVoRyxNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNsQixDQUFD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Q0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkJBQTZCLEVBQUUsS0FBSztZQUNyQyxNQUFNLElBQUk7aUJBQ1AsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLO1lBQ3BDLE1BQU0sSUFBSTtpQkFDUCxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUM5RCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw0QkFBc0IsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFNhZmVEYXRhIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBJbmNvcnJlY3RQYXNzd29yZEVycm9yLCBTYWZlLCBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBjb25zdCBzZWNwMjU2azFNdWx0aXNpZzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyd1c2VyLXJvb3QtaWQnLCAnYmFja3VwLXJvb3QtaWQnLCAnYml0Z28tcm9vdC1pZCddO1xuICBjb25zdCBlY2RzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlY2RzYS11c2VyJywgJ2VjZHNhLWJhY2t1cCcsICdlY2RzYS1iaXRnbyddO1xuICBjb25zdCBlZGRzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlZGRzYS11c2VyJywgJ2VkZHNhLWJhY2t1cCcsICdlZGRzYS1iaXRnbyddO1xuICBjb25zdCBlZDI1NTE5TXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWQtdXNlcicsICdlZC1iYWNrdXAnLCAnZWQtYml0Z28nXTtcbiAgY29uc3Qgcm9vdEtleXMgPSB7XG4gICAgaG90OiB7XG4gICAgICBzZWNwMjU2azFNdWx0aXNpZyxcbiAgICAgIGVjZHNhTXBjLFxuICAgICAgZWRkc2FNcGMsXG4gICAgICBlZDI1NTE5TXVsdGlzaWcsXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuICAgIHNhZmVEYXRhID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyksXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmVEYXRhV2lyZSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicsXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmUgPSBuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXR0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdleHBvc2VzIGlkL2VudGVycHJpc2VJZC9sYWJlbC9zdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUuZW50ZXJwcmlzZUlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICAgIHNhZmUuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b0pTT04gcmV0dXJucyB0aGUgdW5kZXJseWluZyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS50b0pTT04oKS5zaG91bGQuZXF1YWwoc2FmZURhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXJsJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdidWlsZHMgdGhlIGVudGVycHJpc2Utc2NvcGVkIHYyIHBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnVybCgpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS51cmwoJy9mcmVlemUnKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJyk7XG4gICAgICBtb2NrQml0R28udXJsLmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnLCAyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJlZXplIC8gYXJjaGl2ZSBSRVNUIHBsdW1iaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0dWJQb3N0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2VuZFN0dWIgfSk7XG4gICAgICByZXR1cm4geyBzZW5kU3R1YiB9O1xuICAgIH1cblxuICAgIGl0KCdmcmVlemUgcG9zdHMgdGhlIGVuY29kZWQgYm9keSB0byB0aGUgZnJlZXplIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZnJvemVuID0geyAuLi5zYWZlRGF0YVdpcmUsIGZyZWV6ZTogeyByZWFzb246ICdpbmNpZGVudCcgfSB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoZnJvemVuKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuZnJlZXplKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aCh7IHJlYXNvbjogJ2luY2lkZW50JyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LmZyZWV6ZSEucmVhc29uIS5zaG91bGQuZXF1YWwoJ2luY2lkZW50Jyk7XG4gICAgICByZXN1bHQuY3JlYXRlZEF0LnNob3VsZC5iZS5pbnN0YW5jZW9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmUgcG9zdHMgYW4gZW1wdHkgYm9keSB0byB0aGUgYXJjaGl2ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVkID0geyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyBhcyBjb25zdCB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoYXJjaGl2ZWQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5hcmNoaXZlKCk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtZW1iZXIvc2hhcmUgbWV0aG9kcyBhcmUgc3R1YmJlZCAoV0NOLTEyMDQpJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdhZGRNZW1iZXIgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hZGRNZW1iZXIoeyB1c2VySWQ6ICd1JywgcGVybWlzc2lvbnM6IFsndmlldyddIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dDTi0xMjA0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkTWVtYmVyVG9XYWxsZXQgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hZGRNZW1iZXJUb1dhbGxldCh7IHdhbGxldElkOiAndycsIHdhbGxldFBhc3NwaHJhc2U6ICdwJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2xpc3RTaGFyZXMgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCAoV0NOLTEyMDQpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5saXN0U2hhcmVzKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV0NOLTEyMDQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRTaGFyZSB0aHJvd3Mgbm90LWltcGxlbWVudGVkIChXQ04tMTIwNCknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFjY2VwdFNoYXJlKHsgc2FmZVNoYXJlSWQ6ICdzJyB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9XQ04tMTIwNC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlV2FsbGV0IChXQ04tMTIwMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY2hpbGRBdDAgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgMCk7XG4gICAgY29uc3QgY2hpbGRBdDcgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgNyk7XG4gICAgbGV0IGtleWNoYWluc0FkZDogc2lub24uU2lub25TdHViO1xuICAgIGxldCBrZXljaGFpbnNHZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZGVyaXZhdGlvblF1ZXJ5OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IG1pbnRTZW5kOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBmdW5jdGlvbiBzdHViQ29pbihjaGFpbjogc3RyaW5nLCBvcHRzOiB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU/OiBzdHJpbmcgfSA9IHt9KSB7XG4gICAgICBrZXljaGFpbnNHZXQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3VzZXItcm9vdC1pZCcsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6IGBlbmM6JHtST09UX1hQUlZ9YCxcbiAgICAgICAgcHViOiAncm9vdC14cHViJyxcbiAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGNoaWxkQXQwLnB1YiwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICBnZXRDaGFpbjogc2lub24uc3R1YigpLnJldHVybnMoY2hhaW4pLFxuICAgICAgICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlOiBzaW5vbi5zdHViKCkucmV0dXJucyhvcHRzLmdldERlZmF1bHRNdWx0aXNpZ1R5cGUpLFxuICAgICAgICBzdXBwb3J0c1Rzczogc2lub24uc3R1YigpLnJldHVybnMoZmFsc2UpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgZ2V0OiBrZXljaGFpbnNHZXQsIGFkZDoga2V5Y2hhaW5zQWRkIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbigndGJ0YycpO1xuICAgICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKCh7IGlucHV0LCBwYXNzd29yZCB9OiB7IGlucHV0OiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICBpZiAocGFzc3dvcmQgIT09ICdwdycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBwYXNzd29yZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKCdlbmM6JykpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGlucHV0LnNsaWNlKDQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCBjaXBoZXJ0ZXh0Jyk7XG4gICAgICB9KTtcbiAgICAgIGRlcml2YXRpb25RdWVyeSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgbW9ja0JpdEdvLmdldC5yZXR1cm5zKHsgcXVlcnk6IGRlcml2YXRpb25RdWVyeSB9KTtcbiAgICAgIGNvbnN0IG1pbnRSZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3dhbGxldC1pZCcsXG4gICAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgICAga2V5czogWydjaGlsZC1rZXktaWQnLCAnYmFja3VwLWNoaWxkJywgJ2JpdGdvLWNoaWxkJ10sXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyxcbiAgICAgICAgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICAgIHNhZmU6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgfSk7XG4gICAgICBtaW50U2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBtaW50UmVzdWx0IH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQ6IG1pbnRTZW5kIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3BlZWtzIHRoZSBpbmRleCwgcmVnaXN0ZXJzIGEgcHVibGljLW9ubHkgdXNlciBjaGlsZCwgYW5kIG1pbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgc2FmZS5jcmVhdGVXYWxsZXQoeyBjb2luOiAndGJ0YycsIGxhYmVsOiAnZGVzayAxJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0dldC5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBpZDogJ3VzZXItcm9vdC1pZCcgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0FkZC5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBjb25zdCBhZGRBcmdzID0ga2V5Y2hhaW5zQWRkLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgICAgYWRkQXJncy5zaG91bGQuZXFsKHtcbiAgICAgICAgcHViOiBjaGlsZEF0MC5wdWIsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBrZXlUeXBlOiAnaW5kZXBlbmRlbnQnLFxuICAgICAgICBwYXJlbnQ6ICd1c2VyLXJvb3QtaWQnLFxuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBkZXJpdmVkRnJvbVBhcmVudFdpdGhIYXJkZW5lZFBhdGg6IFwibS8wJ1wiLFxuICAgICAgfSk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkUHJ2Jyk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ3BhdGgnKTtcblxuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC93YWxsZXRzJykuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGxhYmVsOiAnZGVzayAxJyxcbiAgICAgICAgdHlwZTogJ2hvdCcsXG4gICAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgICBrZXlzOiBbJ2NoaWxkLWtleS1pZCddLFxuICAgICAgfSk7XG4gICAgICB3YWxsZXQuaWQoKS5zaG91bGQuZXF1YWwoJ3dhbGxldC1pZCcpO1xuICAgICAgY29uc3QgbWludGVkU2FmZUlkID0gd2FsbGV0LnNhZmVJZCgpO1xuICAgICAgaWYgKG1pbnRlZFNhZmVJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgbWludGVkIHdhbGxldCB0byBpbmNsdWRlIHNhZmVJZCcpO1xuICAgICAgfVxuICAgICAgbWludGVkU2FmZUlkLnNob3VsZC5lcXVhbCgndGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVnaXN0ZXJzIHRoZSBjaGlsZCB3aXRoIGRlcml2ZWRGcm9tUGFyZW50V2l0aEhhcmRlbmVkUGF0aCBhdCBhIG5vbi16ZXJvIG1pbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgaW5kZXg6IDcgfSksXG4gICAgICB9KTtcbiAgICAgIGtleWNoYWluc0FkZC5yZXNvbHZlcyh7IGlkOiAnY2hpbGQta2V5LWlkJywgcHViOiBjaGlsZEF0Ny5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgOCcsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBhZGRBcmdzLnB1Yi5zaG91bGQuZXF1YWwoY2hpbGRBdDcucHViKTtcbiAgICAgIGFkZEFyZ3MuZGVyaXZlZEZyb21QYXJlbnRXaXRoSGFyZGVuZWRQYXRoLnNob3VsZC5lcXVhbChcIm0vNydcIik7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgncGF0aCcpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2Rlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIFRTUyBtaW50aW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ2h0ZXRoJywgbGFiZWw6ICdldm0nLCBwYXNzcGhyYXNlOiAncHcnLCBtdWx0aXNpZ1R5cGU6ICd0c3MnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9NUEMgc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIFRTUy1kZWZhdWx0IGNvaW4gZXZlbiB3aXRob3V0IG11bHRpc2lnVHlwZSB0c3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbignaHRldGgnLCB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU6ICd0c3MnIH0pO1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ2h0ZXRoJywgbGFiZWw6ICdldm0nLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9NUEMgc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHBlZWtlZCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgd3Jvbmcgc2xvdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcml2YXRpb25RdWVyeS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnZWNkc2FNcGMnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgMScsIHBhc3NwaHJhc2U6ICdwdycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3JldHVybmVkIHNsb3QgJ2VjZHNhTXBjJy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZWQyNTUxOSBvbmNoYWluIGNvaW5zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ3R4bG0nKTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0eGxtJywgbGFiZWw6ICd4bG0nLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9lZDI1NTE5IGNvaW4gc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IHN1cHBvcnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gZW1wdHkgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3Bhc3NwaHJhc2UgaXMgcmVxdWlyZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgd3JvbmcgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJ25vcGUnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKEluY29ycmVjdFBhc3N3b3JkRXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iaXRnby9zYWZlL3NhZmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0Isa0JBQWdCO0FBRWhCLHlDQUE0RztBQUU1RyxNQUFNLFNBQVMsR0FDYixpSEFBaUgsQ0FBQztBQUVwSCxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxJQUFVLENBQUM7SUFDZixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFFBQWtCLENBQUM7SUFDdkIsOEZBQThGO0lBQzlGLElBQUksWUFBaUIsQ0FBQztJQUV0QixNQUFNLGlCQUFpQixHQUE2QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUN4RyxNQUFNLFFBQVEsR0FBNkIsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pGLE1BQU0sUUFBUSxHQUE2QixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekYsTUFBTSxlQUFlLEdBQTZCLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNLFFBQVEsR0FBRztRQUNmLEdBQUcsRUFBRTtZQUNILGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsUUFBUTtZQUNSLGVBQWU7U0FDaEI7S0FDRixDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNsQixHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNsQixDQUFD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WSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDMUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxLQUFLO1lBQ3BDLE1BQU0sSUFBSTtpQkFDUCxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUM5RCxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyw0QkFBc0IsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IFNhZmVEYXRhIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBFQ0RTQVV0aWxzLCBJbmNvcnJlY3RQYXNzd29yZEVycm9yLCBTYWZlLCBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuY29uc3QgUk9PVF9YUFJWID1cbiAgJ3hwcnY5czIxWnJRSDE0M0szaGVreU5qN1RjaVI0WE5ZZTFrTWo2OFcyaXBqSkdOSEVUV1A3bzQyQWpEblNQZ0toZFo0eDhOQkF2YUw3MlJyWGp1WE5kbWtNcUxFUlp6YTczb1l1Z0d0YkxGWEc4Zyc7XG5cbmRlc2NyaWJlKCdTYWZlJywgZnVuY3Rpb24gKCkge1xuICBsZXQgc2FmZTogU2FmZTtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgc2FmZURhdGE6IFNhZmVEYXRhO1xuICAvLyB3aXJlLXNoYXBlZCBTYWZlRGF0YSAodGltZXN0YW1wcyBhcyBJU08gc3RyaW5ncykgZm9yIG1vY2tlZCBSRVNUIHJlc3BvbnNlcyB0aGF0IGdldCBkZWNvZGVkXG4gIGxldCBzYWZlRGF0YVdpcmU6IGFueTtcblxuICBjb25zdCBzZWNwMjU2azFNdWx0aXNpZzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWyd1c2VyLXJvb3QtaWQnLCAnYmFja3VwLXJvb3QtaWQnLCAnYml0Z28tcm9vdC1pZCddO1xuICBjb25zdCBlY2RzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlY2RzYS11c2VyJywgJ2VjZHNhLWJhY2t1cCcsICdlY2RzYS1iaXRnbyddO1xuICBjb25zdCBlZGRzYU1wYzogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gWydlZGRzYS11c2VyJywgJ2VkZHNhLWJhY2t1cCcsICdlZGRzYS1iaXRnbyddO1xuICBjb25zdCBlZDI1NTE5TXVsdGlzaWc6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSA9IFsnZWQtdXNlcicsICdlZC1iYWNrdXAnLCAnZWQtYml0Z28nXTtcbiAgY29uc3Qgcm9vdEtleXMgPSB7XG4gICAgaG90OiB7XG4gICAgICBzZWNwMjU2azFNdWx0aXNpZyxcbiAgICAgIGVjZHNhTXBjLFxuICAgICAgZWRkc2FNcGMsXG4gICAgICBlZDI1NTE5TXVsdGlzaWcsXG4gICAgfSxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuICAgIHNhZmVEYXRhID0ge1xuICAgICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgZW50ZXJwcmlzZUlkOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgY3JlYXRvcjogJ2NyZWF0b3ItaWQnLFxuICAgICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyksXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmVEYXRhV2lyZSA9IHtcbiAgICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgICBsYWJlbDogJ215IHNhZmUnLFxuICAgICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICAgIHVzZXJzOiBbeyB1c2VySWQ6ICdjcmVhdG9yLWlkJywgcGVybWlzc2lvbnM6IFsnYWRtaW4nLCAnc3BlbmQnXSB9XSxcbiAgICAgIGNyZWF0ZWRBdDogJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicsXG4gICAgICByb290S2V5cyxcbiAgICB9O1xuICAgIHNhZmUgPSBuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXR0ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdleHBvc2VzIGlkL2VudGVycHJpc2VJZC9sYWJlbC9zdGF0dXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNhZmUuZW50ZXJwcmlzZUlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgICAgIHNhZmUubGFiZWwoKS5zaG91bGQuZXF1YWwoJ215IHNhZmUnKTtcbiAgICAgIHNhZmUuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b0pTT04gcmV0dXJucyB0aGUgdW5kZXJseWluZyBkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2FmZS50b0pTT04oKS5zaG91bGQuZXF1YWwoc2FmZURhdGEpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXJsJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdidWlsZHMgdGhlIGVudGVycHJpc2Utc2NvcGVkIHYyIHBhdGgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzYWZlLnVybCgpLnNob3VsZC5lcXVhbCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2FmZS51cmwoJy9mcmVlemUnKS5zaG91bGQuZXF1YWwoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZnJlZXplJyk7XG4gICAgICBtb2NrQml0R28udXJsLmNhbGxlZFdpdGgoJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnLCAyKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJlZXplIC8gYXJjaGl2ZSBSRVNUIHBsdW1iaW5nJywgZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIHN0dWJQb3N0KHJlc3BvbnNlOiB1bmtub3duKSB7XG4gICAgICBjb25zdCByZXN1bHRTdHViID0gc2lub24uc3R1YigpLnJlc29sdmVzKHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHNlbmRTdHViID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHJlc3VsdFN0dWIgfSk7XG4gICAgICBtb2NrQml0R28ucG9zdC5yZXR1cm5zKHsgc2VuZDogc2VuZFN0dWIgfSk7XG4gICAgICByZXR1cm4geyBzZW5kU3R1YiB9O1xuICAgIH1cblxuICAgIGl0KCdmcmVlemUgcG9zdHMgdGhlIGVuY29kZWQgYm9keSB0byB0aGUgZnJlZXplIHJvdXRlIGFuZCBkZWNvZGVzIFNhZmVEYXRhJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZnJvemVuID0geyAuLi5zYWZlRGF0YVdpcmUsIGZyZWV6ZTogeyByZWFzb246ICdpbmNpZGVudCcgfSB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoZnJvemVuKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmUuZnJlZXplKHsgcmVhc29uOiAnaW5jaWRlbnQnIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QuY2FsbGVkV2l0aCgnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9mcmVlemUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aCh7IHJlYXNvbjogJ2luY2lkZW50JyB9KS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LmZyZWV6ZSEucmVhc29uIS5zaG91bGQuZXF1YWwoJ2luY2lkZW50Jyk7XG4gICAgICByZXN1bHQuY3JlYXRlZEF0LnNob3VsZC5iZS5pbnN0YW5jZW9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FyY2hpdmUgcG9zdHMgYW4gZW1wdHkgYm9keSB0byB0aGUgYXJjaGl2ZSByb3V0ZSBhbmQgZGVjb2RlcyBTYWZlRGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyY2hpdmVkID0geyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyBhcyBjb25zdCB9O1xuICAgICAgY29uc3QgeyBzZW5kU3R1YiB9ID0gc3R1YlBvc3QoYXJjaGl2ZWQpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZS5hcmNoaXZlKCk7XG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL2FyY2hpdmUnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2VuZFN0dWIuY2FsbGVkV2l0aEV4YWN0bHkoKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2FyY2hpdmVkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtZW1iZXIvc2hhcmUgbWV0aG9kcyBhcmUgc3R1YmJlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnYWRkTWVtYmVyIHRocm93cyBub3QtaW1wbGVtZW50ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlLmFkZE1lbWJlcih7IHVzZXJJZDogJ3UnLCBwZXJtaXNzaW9uczogWyd2aWV3J10gfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZE1lbWJlclRvV2FsbGV0IHRocm93cyBub3QtaW1wbGVtZW50ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBzYWZlXG4gICAgICAgIC5hZGRNZW1iZXJUb1dhbGxldCh7IHdhbGxldElkOiAndycsIHdhbGxldFBhc3NwaHJhc2U6ICdwJyB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2xpc3RTaGFyZXMgdGhyb3dzIG5vdC1pbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmUubGlzdFNoYXJlcygpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL25vdCB5ZXQgaW1wbGVtZW50ZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdhY2NlcHRTaGFyZSB0aHJvd3Mgbm90LWltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgc2FmZS5hY2NlcHRTaGFyZSh7IHNhZmVTaGFyZUlkOiAncycgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHlldCBpbXBsZW1lbnRlZC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY3JlYXRlV2FsbGV0IChXQ04tMTIwMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgY2hpbGRBdDAgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgMCk7XG4gICAgY29uc3QgY2hpbGRBdDcgPSBkZXJpdmVTYWZlQ2hpbGRIYXJkZW5lZEZyb21YcHJ2KFJPT1RfWFBSViwgNyk7XG4gICAgbGV0IGtleWNoYWluc0FkZDogc2lub24uU2lub25TdHViO1xuICAgIGxldCBrZXljaGFpbnNHZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBsZXQgZGVyaXZhdGlvblF1ZXJ5OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgbGV0IG1pbnRTZW5kOiBzaW5vbi5TaW5vblN0dWI7XG5cbiAgICBmdW5jdGlvbiBzdHViQ29pbihjaGFpbjogc3RyaW5nLCBvcHRzOiB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU/OiBzdHJpbmcgfSA9IHt9KSB7XG4gICAgICBrZXljaGFpbnNHZXQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgICBpZDogJ3VzZXItcm9vdC1pZCcsXG4gICAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6IGBlbmM6JHtST09UX1hQUlZ9YCxcbiAgICAgICAgcHViOiAncm9vdC14cHViJyxcbiAgICAgICAgdHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgIH0pO1xuICAgICAga2V5Y2hhaW5zQWRkID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6ICdjaGlsZC1rZXktaWQnLCBwdWI6IGNoaWxkQXQwLnB1YiwgdHlwZTogJ2luZGVwZW5kZW50JyB9KTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICBnZXRDaGFpbjogc2lub24uc3R1YigpLnJldHVybnMoY2hhaW4pLFxuICAgICAgICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlOiBzaW5vbi5zdHViKCkucmV0dXJucyhvcHRzLmdldERlZmF1bHRNdWx0aXNpZ1R5cGUpLFxuICAgICAgICBzdXBwb3J0c1Rzczogc2lub24uc3R1YigpLnJldHVybnMoZmFsc2UpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgZ2V0OiBrZXljaGFpbnNHZXQsIGFkZDoga2V5Y2hhaW5zQWRkIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ3RidGMnKTtcbiAgICAgIG1vY2tCaXRHby5kZWNyeXB0ID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgoeyBpbnB1dCwgcGFzc3dvcmQgfTogeyBpbnB1dDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgaWYgKHBhc3N3b3JkICE9PSAncHcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgcGFzc3dvcmQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgnZW5jOicpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpbnB1dC5zbGljZSg0KSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgY2lwaGVydGV4dCcpO1xuICAgICAgfSk7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgaW5kZXg6IDAgfSksXG4gICAgICB9KTtcbiAgICAgIG1vY2tCaXRHby5nZXQucmV0dXJucyh7IHF1ZXJ5OiBkZXJpdmF0aW9uUXVlcnkgfSk7XG4gICAgICBjb25zdCBtaW50UmVzdWx0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgaWQ6ICd3YWxsZXQtaWQnLFxuICAgICAgICBjb2luOiAndGJ0YycsXG4gICAgICAgIGtleXM6IFsnY2hpbGQta2V5LWlkJywgJ2JhY2t1cC1jaGlsZCcsICdiaXRnby1jaGlsZCddLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgICBzYWZlOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgIH0pO1xuICAgICAgbWludFNlbmQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogbWludFJlc3VsdCB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kOiBtaW50U2VuZCB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwZWVrcyB0aGUgaW5kZXgsIHJlZ2lzdGVycyBhIHB1YmxpYy1vbmx5IHVzZXIgY2hpbGQsIGFuZCBtaW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdhbGxldCA9IGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgMScsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIGRlcml2YXRpb25RdWVyeS5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNHZXQuY2FsbGVkT25jZVdpdGhFeGFjdGx5KHsgaWQ6ICd1c2VyLXJvb3QtaWQnIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBrZXljaGFpbnNBZGQuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgY29uc3QgYWRkQXJncyA9IGtleWNoYWluc0FkZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLmVxbCh7XG4gICAgICAgIHB1YjogY2hpbGRBdDAucHViLFxuICAgICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgICAga2V5VHlwZTogJ2luZGVwZW5kZW50JyxcbiAgICAgICAgcGFyZW50OiAndXNlci1yb290LWlkJyxcbiAgICAgICAgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICAgICAgZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aDogXCJtLzAnXCIsXG4gICAgICB9KTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdlbmNyeXB0ZWRQcnYnKTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkJyk7XG4gICAgICBhZGRBcmdzLnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgncGF0aCcpO1xuXG4gICAgICBtb2NrQml0R28ucG9zdC5jYWxsZWRXaXRoKCcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkL3dhbGxldHMnKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgbWludFNlbmQuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxbCh7XG4gICAgICAgIGNvaW46ICd0YnRjJyxcbiAgICAgICAgbGFiZWw6ICdkZXNrIDEnLFxuICAgICAgICB0eXBlOiAnaG90JyxcbiAgICAgICAgbXVsdGlzaWdUeXBlOiAnb25jaGFpbicsXG4gICAgICAgIGtleXM6IFsnY2hpbGQta2V5LWlkJ10sXG4gICAgICB9KTtcbiAgICAgIHdhbGxldC5pZCgpLnNob3VsZC5lcXVhbCgnd2FsbGV0LWlkJyk7XG4gICAgICBjb25zdCBtaW50ZWRTYWZlSWQgPSB3YWxsZXQuc2FmZUlkKCk7XG4gICAgICBpZiAobWludGVkU2FmZUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBtaW50ZWQgd2FsbGV0IHRvIGluY2x1ZGUgc2FmZUlkJyk7XG4gICAgICB9XG4gICAgICBtaW50ZWRTYWZlSWQuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWdpc3RlcnMgdGhlIGNoaWxkIHdpdGggZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aCBhdCBhIG5vbi16ZXJvIG1pbnQgaW5kZXgnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXJpdmF0aW9uUXVlcnkucmV0dXJucyh7XG4gICAgICAgIHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgaW5kZXg6IDcgfSksXG4gICAgICB9KTtcbiAgICAgIGtleWNoYWluc0FkZC5yZXNvbHZlcyh7IGlkOiAnY2hpbGQta2V5LWlkJywgcHViOiBjaGlsZEF0Ny5wdWIsIHR5cGU6ICdpbmRlcGVuZGVudCcgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmUuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgOCcsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIGNvbnN0IGFkZEFyZ3MgPSBrZXljaGFpbnNBZGQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBhZGRBcmdzLnB1Yi5zaG91bGQuZXF1YWwoY2hpbGRBdDcucHViKTtcbiAgICAgIGFkZEFyZ3MuZGVyaXZlZEZyb21QYXJlbnRXaXRoUGF0aC5zaG91bGQuZXF1YWwoXCJtLzcnXCIpO1xuICAgICAgYWRkQXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ3BhdGgnKTtcbiAgICAgIGFkZEFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdkZXJpdmVkRnJvbVBhcmVudFdpdGhTZWVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWludHMgYSBUU1Mgd2FsbGV0IHZpYSB0aGUgdXNlci9CaXRHbyBkZXJpdmUgY2VyZW1vbnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBzdHViQ29pbignaHRldGgnLCB7IGdldERlZmF1bHRNdWx0aXNpZ1R5cGU6ICd0c3MnIH0pO1xuICAgICAgLy8gUmVhbCBWUkYga2V5IGVudmVsb3BlOiBge3ZlcnNpb246IDEsIHBydktleVNoYXJlLCB2cmZ9YC5cbiAgICAgIGNvbnN0IHVzZXJCbG9iID0gRUNEU0FVdGlscy5idWlsZFZyZktleUVudmVsb3BlcyhcbiAgICAgICAgQnVmZmVyLmZyb20oJ3NpZ25pbmctMScpLFxuICAgICAgICBCdWZmZXIuZnJvbSgncmVkdWNlZC0xJyksXG4gICAgICAgIEJ1ZmZlci5mcm9tKCd2cmYtMScpXG4gICAgICApLmVudmVsb3BlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGtleWNoYWluc0dldC5vbkZpcnN0Q2FsbCgpLnJlc29sdmVzKHsgaWQ6ICdlY2RzYS11c2VyJywgc291cmNlOiAndXNlcicsIGVuY3J5cHRlZFBydjogYGVuYzoke3VzZXJCbG9ifWAgfSk7XG4gICAgICBtb2NrQml0R28uZGVjcnlwdCA9IHNpbm9uXG4gICAgICAgIC5zdHViKClcbiAgICAgICAgLmNhbGxzRmFrZSgoeyBpbnB1dCB9OiB7IGlucHV0OiBzdHJpbmcgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKGlucHV0LnN0YXJ0c1dpdGgoJ2VuYzonKSA/IGlucHV0LnNsaWNlKDQpIDogJycpKTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHNsb3Q6ICdlY2RzYU1wYycsIGluZGV4OiAwIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNlcmVtb255U3R1YiA9IHNpbm9uLnN0dWIoRUNEU0FVdGlscy5FY2RzYVZyZk1QQ3YyVXRpbHMucHJvdG90eXBlLCAnY3JlYXRlU2FmZUNoaWxkS2V5Y2hhaW5zJykucmVzb2x2ZXMoe1xuICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6ICdlY2RzYS1jaGlsZC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ2VjZHNhLWNoaWxkLWJhY2t1cC1wbGFjZWhvbGRlcicgfSxcbiAgICAgIH0gYXMgbmV2ZXIpO1xuXG4gICAgICBjb25zdCB3YWxsZXQgPSBhd2FpdCBzYWZlLmNyZWF0ZVdhbGxldCh7IGNvaW46ICdodGV0aCcsIGxhYmVsOiAnZXZtJywgcGFzc3BocmFzZTogJ3B3JywgbXVsdGlzaWdUeXBlOiAndHNzJyB9KTtcblxuICAgICAgZGVyaXZhdGlvblF1ZXJ5LmNhbGxlZE9uY2VXaXRoRXhhY3RseSh7IHNsb3Q6ICdlY2RzYU1wYycgfSkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIGtleWNoYWluc0dldC5jYWxsZWRPbmNlV2l0aEV4YWN0bHkoeyBpZDogJ2VjZHNhLXVzZXInIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBjb25zdCBjZXJlbW9ueUFyZ3MgPSBjZXJlbW9ueVN0dWIuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgICBjZXJlbW9ueUFyZ3Muc2hvdWxkLmNvbnRhaW5FcWwoe1xuICAgICAgICBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgcGFyZW50S2V5SWQ6ICdlY2RzYS1iaXRnbycsXG4gICAgICAgIGRlcml2YXRpb25JbmRleDogMCxcbiAgICAgICAgdXNlclJvb3RLZXlJZDogJ2VjZHNhLXVzZXInLFxuICAgICAgICBiYWNrdXBSb290S2V5SWQ6ICdlY2RzYS1iYWNrdXAnLFxuICAgICAgfSk7XG4gICAgICBjZXJlbW9ueUFyZ3Muc2hvdWxkLm5vdC5oYXZlLnByb3BlcnR5KCdiYWNrdXBSb290S2V5U2hhcmUnKTtcbiAgICAgIGNlcmVtb255QXJncy5zaG91bGQubm90LmhhdmUucHJvcGVydHkoJ2JhY2t1cFJvb3RWcmZLZXlTaGFyZScpO1xuICAgICAgY2VyZW1vbnlBcmdzLnVzZXJSb290S2V5U2hhcmUuc2hvdWxkLmRlZXBFcXVhbChCdWZmZXIuZnJvbSgnc2lnbmluZy0xJykpO1xuICAgICAgY2VyZW1vbnlBcmdzLnVzZXJSb290VnJmS2V5U2hhcmUuc2hvdWxkLmRlZXBFcXVhbChCdWZmZXIuZnJvbSgndnJmLTEnKSk7XG5cbiAgICAgIG1pbnRTZW5kLmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcWwoe1xuICAgICAgICBjb2luOiAnaHRldGgnLFxuICAgICAgICBsYWJlbDogJ2V2bScsXG4gICAgICAgIHR5cGU6ICdob3QnLFxuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBrZXlzOiBbJ2VjZHNhLWNoaWxkLXVzZXInLCAnZWNkc2EtY2hpbGQtYmFja3VwLXBsYWNlaG9sZGVyJ10sXG4gICAgICB9KTtcbiAgICAgIHdhbGxldC5pZCgpLnNob3VsZC5lcXVhbCgnd2FsbGV0LWlkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVqZWN0cyBhIHBlZWtlZCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgd3Jvbmcgc2xvdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlcml2YXRpb25RdWVyeS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzbG90OiAnZWNkc2FNcGMnLCBpbmRleDogMCB9KSxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgc2FmZVxuICAgICAgICAuY3JlYXRlV2FsbGV0KHsgY29pbjogJ3RidGMnLCBsYWJlbDogJ2Rlc2sgMScsIHBhc3NwaHJhc2U6ICdwdycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3JldHVybmVkIHNsb3QgJ2VjZHNhTXBjJy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZWQyNTUxOSBvbmNoYWluIGNvaW5zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgc3R1YkNvaW4oJ3R4bG0nKTtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0eGxtJywgbGFiZWw6ICd4bG0nLCBwYXNzcGhyYXNlOiAncHcnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9lZDI1NTE5IGNvaW4gc2FmZSB3YWxsZXQgbWludGluZyBpcyBub3QgeWV0IHN1cHBvcnRlZC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYW4gZW1wdHkgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJycgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3Bhc3NwaHJhc2UgaXMgcmVxdWlyZWQvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgd3JvbmcgcGFzc3BocmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVcbiAgICAgICAgLmNyZWF0ZVdhbGxldCh7IGNvaW46ICd0YnRjJywgbGFiZWw6ICd3JywgcGFzc3BocmFzZTogJ25vcGUnIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKEluY29ycmVjdFBhc3N3b3JkRXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/tss/common.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ const common_1 = require("../../../../src/bitgo/tss/common");
39
+ const src_1 = require("../../../../src");
40
+ describe('sendSignatureShareV2 request type dispatch', function () {
41
+ afterEach(function () {
42
+ sinon.restore();
43
+ });
44
+ async function captureRequestType(mpcAlgorithm, multisigTypeVersion) {
45
+ let capturedBody;
46
+ const send = sinon.stub().callsFake((body) => {
47
+ capturedBody = body;
48
+ return { result: sinon.stub().resolves({}) };
49
+ });
50
+ const mockBitGo = {
51
+ url: sinon.stub().returns('/mock/url'),
52
+ post: sinon.stub().returns({ send }),
53
+ setRequestTracer: sinon.stub(),
54
+ };
55
+ await (0, common_1.sendSignatureShareV2)(mockBitGo, 'walletId', 'txRequestId', [], src_1.RequestType.tx, mpcAlgorithm, 'signerGpgPublicKey', undefined, multisigTypeVersion);
56
+ if (!capturedBody) {
57
+ throw new Error('request body should have been captured');
58
+ }
59
+ return capturedBody.type;
60
+ }
61
+ it('resolves ecdsaMpcV2 for MPCv2 + ecdsa', async function () {
62
+ assert.strictEqual(await captureRequestType('ecdsa', 'MPCv2'), 'ecdsaMpcV2');
63
+ });
64
+ it('resolves eddsaMpcV2 for MPCv2 + eddsa', async function () {
65
+ assert.strictEqual(await captureRequestType('eddsa', 'MPCv2'), 'eddsaMpcV2');
66
+ });
67
+ it('resolves redpallasMpcV2 for MPCv2 + redpallas', async function () {
68
+ assert.strictEqual(await captureRequestType('redpallas', 'MPCv2'), 'redpallasMpcV2');
69
+ });
70
+ it('resolves eddsaMpcV1 for undefined multisigTypeVersion + eddsa', async function () {
71
+ assert.strictEqual(await captureRequestType('eddsa', undefined), 'eddsaMpcV1');
72
+ });
73
+ it('resolves an empty type for redpallas without MPCv2 (no MPCv1 variant exists)', async function () {
74
+ assert.strictEqual(await captureRequestType('redpallas', undefined), '');
75
+ });
76
+ });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3Rzcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDZEQUF3RTtBQUN4RSx5Q0FBa0Y7QUFFbEYsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEtBQUssVUFBVSxrQkFBa0IsQ0FDL0IsWUFBMEIsRUFDMUIsbUJBQXdDO1FBRXhDLElBQUksWUFBMEMsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0MsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNwQixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHO1lBQ2hCLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7U0FDUCxDQUFDO1FBRTFCLE1BQU0sSUFBQSw2QkFBb0IsRUFDeEIsU0FBUyxFQUNULFVBQVUsRUFDVixhQUFhLEVBQ2IsRUFBRSxFQUNGLGlCQUFXLENBQUMsRUFBRSxFQUNkLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULG1CQUFtQixDQUNwQixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSztRQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUs7UUFDL0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO1FBQ3ZELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLO1FBQ3ZFLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDakYsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEVBQThFLEVBQUUsS0FBSztRQUN0RixNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sa0JBQWtCLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IHNlbmRTaWduYXR1cmVTaGFyZVYyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9jb21tb24nO1xuaW1wb3J0IHsgQml0R29CYXNlLCBSZXF1ZXN0VHlwZSwgVHhSZXF1ZXN0LCBNUENBbGdvcml0aG0gfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnc2VuZFNpZ25hdHVyZVNoYXJlVjIgcmVxdWVzdCB0eXBlIGRpc3BhdGNoJywgZnVuY3Rpb24gKCkge1xuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gY2FwdHVyZVJlcXVlc3RUeXBlKFxuICAgIG1wY0FsZ29yaXRobTogTVBDQWxnb3JpdGhtLFxuICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICdNUEN2MicgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgY2FwdHVyZWRCb2R5OiB7IHR5cGU6IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNlbmQgPSBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChib2R5KSA9PiB7XG4gICAgICBjYXB0dXJlZEJvZHkgPSBib2R5O1xuICAgICAgcmV0dXJuIHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe30gYXMgVHhSZXF1ZXN0KSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJy9tb2NrL3VybCcpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLnJldHVybnMoeyBzZW5kIH0pLFxuICAgICAgc2V0UmVxdWVzdFRyYWNlcjogc2lub24uc3R1YigpLFxuICAgIH0gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG5cbiAgICBhd2FpdCBzZW5kU2lnbmF0dXJlU2hhcmVWMihcbiAgICAgIG1vY2tCaXRHbyxcbiAgICAgICd3YWxsZXRJZCcsXG4gICAgICAndHhSZXF1ZXN0SWQnLFxuICAgICAgW10sXG4gICAgICBSZXF1ZXN0VHlwZS50eCxcbiAgICAgIG1wY0FsZ29yaXRobSxcbiAgICAgICdzaWduZXJHcGdQdWJsaWNLZXknLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAoIWNhcHR1cmVkQm9keSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGJvZHkgc2hvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gY2FwdHVyZWRCb2R5LnR5cGU7XG4gIH1cblxuICBpdCgncmVzb2x2ZXMgZWNkc2FNcGNWMiBmb3IgTVBDdjIgKyBlY2RzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlY2RzYScsICdNUEN2MicpLCAnZWNkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgZWRkc2FNcGNWMiBmb3IgTVBDdjIgKyBlZGRzYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdlZGRzYScsICdNUEN2MicpLCAnZWRkc2FNcGNWMicpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgcmVkcGFsbGFzTXBjVjIgZm9yIE1QQ3YyICsgcmVkcGFsbGFzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChhd2FpdCBjYXB0dXJlUmVxdWVzdFR5cGUoJ3JlZHBhbGxhcycsICdNUEN2MicpLCAncmVkcGFsbGFzTXBjVjInKTtcbiAgfSk7XG5cbiAgaXQoJ3Jlc29sdmVzIGVkZHNhTXBjVjEgZm9yIHVuZGVmaW5lZCBtdWx0aXNpZ1R5cGVWZXJzaW9uICsgZWRkc2EnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGF3YWl0IGNhcHR1cmVSZXF1ZXN0VHlwZSgnZWRkc2EnLCB1bmRlZmluZWQpLCAnZWRkc2FNcGNWMScpO1xuICB9KTtcblxuICBpdCgncmVzb2x2ZXMgYW4gZW1wdHkgdHlwZSBmb3IgcmVkcGFsbGFzIHdpdGhvdXQgTVBDdjIgKG5vIE1QQ3YxIHZhcmlhbnQgZXhpc3RzKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYXdhaXQgY2FwdHVyZVJlcXVlc3RUeXBlKCdyZWRwYWxsYXMnLCB1bmRlZmluZWQpLCAnJyk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redpallasMPCv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":""}