@bitgo/sdk-core 1.1.0-rc.7 → 1.2.0-dev.1

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 (73) hide show
  1. package/LICENSE +191 -0
  2. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  3. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  5. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +1 -0
  6. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/curves/secp256k1.js +5 -1
  8. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  9. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +21 -12
  10. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +3 -0
  11. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  12. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  13. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -1
  14. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  15. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +6 -3
  16. package/dist/src/bitgo/errors.js +2 -2
  17. package/dist/src/bitgo/index.d.ts +1 -0
  18. package/dist/src/bitgo/index.d.ts.map +1 -1
  19. package/dist/src/bitgo/index.js +2 -1
  20. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
  21. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
  22. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
  23. package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
  24. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
  25. package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
  26. package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
  27. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
  28. package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
  29. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +1 -1
  30. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  31. package/dist/src/bitgo/tss/eddsa/eddsa.js +1 -1
  32. package/dist/src/bitgo/tss/eddsa/index.d.ts +4 -0
  33. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -1
  34. package/dist/src/bitgo/tss/eddsa/index.js +25 -2
  35. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  36. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  37. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  38. package/dist/src/bitgo/tss/index.d.ts +5 -2
  39. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  40. package/dist/src/bitgo/tss/index.js +38 -12
  41. package/dist/src/bitgo/tss/types.d.ts +0 -22
  42. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  43. package/dist/src/bitgo/tss/types.js +1 -1
  44. package/dist/src/bitgo/utils/index.d.ts +2 -2
  45. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/index.js +3 -3
  47. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  48. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  49. package/dist/src/bitgo/utils/triple.js +8 -0
  50. package/dist/src/bitgo/utils/{tssUtils.d.ts → tss/eddsa/eddsa.d.ts} +9 -9
  51. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  52. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
  53. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  54. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  55. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  56. package/dist/src/bitgo/utils/{iTssUtils.d.ts → tss/eddsa/types.d.ts} +25 -17
  57. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  58. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  59. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  60. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  61. package/dist/src/bitgo/utils/tss/index.js +29 -0
  62. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  63. package/dist/src/bitgo/wallet/wallet.js +31 -16
  64. package/dist/tsconfig.tsbuildinfo +268 -117
  65. package/dist/web/main.js +2 -0
  66. package/dist/web/main.js.LICENSE.txt +47 -0
  67. package/package.json +13 -7
  68. package/webpack.config.js +24 -0
  69. package/CHANGELOG.md +0 -89
  70. package/dist/src/bitgo/utils/iTssUtils.d.ts.map +0 -1
  71. package/dist/src/bitgo/utils/iTssUtils.js +0 -10
  72. package/dist/src/bitgo/utils/tssUtils.d.ts.map +0 -1
  73. package/dist/src/bitgo/utils/tssUtils.js +0 -348
@@ -189,12 +189,15 @@ class Eddsa {
189
189
  }
190
190
  return shares;
191
191
  }
192
- signShare(message, pShare, jShares) {
192
+ signShare(message, pShare, jShares, seed) {
193
+ if (seed && seed.length !== 64) {
194
+ throw new Error('Seed must have length 64');
195
+ }
193
196
  const indices = [pShare, ...jShares].map(({ i }) => i);
194
197
  const split_u = Eddsa.shamir.split(util_1.bigIntFromBufferLE(Buffer.from(pShare.u, 'hex')), pShare.t, pShare.n);
195
198
  // Generate nonce contribution.
196
199
  const prefix = Buffer.from(pShare.prefix, 'hex');
197
- const randomBuffer = crypto_1.randomBytes(32);
200
+ const randomBuffer = seed !== null && seed !== void 0 ? seed : crypto_1.randomBytes(64);
198
201
  const digest = crypto_1.createHash('sha512')
199
202
  .update(Buffer.concat([prefix, message, randomBuffer]))
200
203
  .digest();
@@ -270,4 +273,4 @@ exports.default = Eddsa;
270
273
  Eddsa.curve = new curves_1.Ed25519Curve();
271
274
  Eddsa.shamir = new shamir_1.default(Eddsa.curve);
272
275
  Eddsa.initialized = false;
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsbUNBQWlEO0FBQ2pELHlDQUE0QztBQUM1QywwREFBa0M7QUFFbEMscUNBQStHO0FBZ0IvRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFFNUYsTUFBcUIsS0FBSztJQWdCeEIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFiRCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFlO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3RCLE1BQU0scUJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVFELFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLElBQWE7UUFDekUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLG9CQUFXLENB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Q0FBQyxDQUFDO0lBQy9ELENBQUM7O0FBOVFILHdCQStRQztBQTlRUSxXQUFLLEdBQWlCLElBQUkscUJBQVksRUFBRSxDQUFDO0FBQ3pDLFlBQU0sR0FBVyxJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLGlCQUFXLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBNUEMgdXNpbmcgdGhyZXNob2xkIHNpZ25hdHVyZSBzY2hlbWUgKFRTUykuIEl0IGNvbnRhaW5zXG4gKiBmdW5jdGlvbnMgZm9yIGtleSBnZW5lcmF0aW9uIGFuZCBtZXNzYWdlIHNpZ25pbmcgd2l0aCBFZERTQS5cbiAqXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgS2V5IEdlbmVyYXRpb25cbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIDEuIEVhY2ggc2lnbmVyIGdlbmVyYXRlcyB0aGVpciBvd24ga2V5IHNoYXJlLCB3aGljaCBpbnZvbHZlcyBhIHByaXZhdGUgdS1zaGFyZSBhbmQgYSBwdWJsaWMgeS1zaGFyZS5cbiAqIDIuIFNpZ25lcnMgZGlzdHJpYnV0ZSB0aGVpciB5LXNoYXJlIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHktc2hhcmVzIHRoZSBuZXh0IHBoYXNlIGlzIHRvIGNvbWJpbmUga2V5IHNoYXJlcy4gRWFjaCBzaWduZXIgY29tYmluZXMgdGhlaXIgdS1zaGFyZVxuICogICAgd2l0aCB0aGUgeS1zaGFyZXMgcmVjZWl2ZWQgZnJvbSBvdGhlciBzaWduZXJzIGluIG9yZGVyIHRvIGdlbmVyYXRlIGEgcC1zaGFyZSBmb3IgdGhlbXNlbHZlcy4gV2VcbiAqICAgIGFsc28gc2F2ZSBqLXNoYXJlcyBmb3Igb3RoZXIgc2lnbmVycy5cbiAqIDQuIEF0IHRoaXMgcG9pbnQgdGhlIHBsYXllcnMgZG8gbm90IGRpc3RyaWJ1dGUgYW55IHNoYXJlcyBhbmQgdGhlIGZpcnN0IHBoYXNlIG9mIHRoZVxuICogICAgc2lnbmluZyBwcm90b2NvbCBpcyBjb21wbGV0ZS5cbiAqXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiBFZERTQSBTaWduaW5nXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBUaGUgcGFydGllcyBmcm9tIGtleSBnZW5lcmF0aW9uIGRlY2lkZSB0aGV5IHdhbnQgdG8gc2lnbiBzb21ldGhpbmcuIFRoZXkgYmVnaW4gdGhlIHNpZ25pbmcgcHJvdG9jb2xcbiAqICAgIGJ5IGdlbmVyYXRpbmcgc2hhcmVzIG9mIGFuIGVwaGVtZXJhbCBrZXkuXG4gKlxuICogICAgYSkgRWFjaCBzaWduZXIgdXNlcyBoaXMgcC1zaGFyZSBhbmQgdGhlIGotc2hhcmVzIHN0b3JlZCBmb3Igb3RoZXIgcGxheWVycyB0byBnZW5lcmF0ZSBoaXMgc2lnbmluZyBzaGFyZS5cbiAqICAgIGIpIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwcml2YXRlIHgtc2hhcmUgYW5kIHB1YmxpYyByLXNoYXJlcy5cbiAqXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgci1zaGFyZXMgdG8gb3RoZXIgc2lnbmVycy5cbiAqIDMuIEFmdGVyIGV4Y2hhbmdpbmcgci1zaGFyZXMsIGVhY2ggc2lnbmVyIHNpZ25zIHRoZWlyIHNoYXJlIG9mIHRoZSBlcGhlbWVyYWwga2V5IHVzaW5nIHRoZWlyIHByaXZhdGVcbiAqICAgIHgtc2hhcmUgd2l0aCB0aGUgci1zaGFyZXMgZnJvbSBvdGhlciBzaWduZXJzLlxuICogNC4gVGhpcyByZXN1bHRzIGluIGVhY2ggc2lnbmVyIGhhdmluZyBhIHB1YmxpYyBnLXNoYXJlIHdoaWNoIHRoZXkgc2VuZCB0byB0aGUgb3RoZXIgc2lnbmVycy5cbiAqIDUuIEFmdGVyIHRoZSBzaWduZXJzIGJyb2FkY2FzdCB0aGVpciBnLXNoYXJlcywgdGhlIGZpbmFsIHNpZ25hdHVyZSBjYW4gYmUgcmUtY29uc3RydWN0ZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuY29uc3QgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5pbXBvcnQgeyByYW5kb21CeXRlcywgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBFZDI1NTE5Q3VydmUgfSBmcm9tICcuLi8uLi9jdXJ2ZXMnO1xuaW1wb3J0IFNoYW1pciBmcm9tICcuLi8uLi9zaGFtaXInO1xuaW1wb3J0IEhEVHJlZSBmcm9tICcuLi8uLi9oZFRyZWUnO1xuaW1wb3J0IHsgYmlnSW50RnJvbUJ1ZmZlckxFLCBiaWdJbnRUb0J1ZmZlckxFLCBiaWdJbnRGcm9tQnVmZmVyQkUsIGJpZ0ludFRvQnVmZmVyQkUsIGNsYW1wIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQge1xuICBLZXlTaGFyZSxcbiAgVVNoYXJlLFxuICBZU2hhcmUsXG4gIEtleUNvbWJpbmUsXG4gIFBTaGFyZSxcbiAgU3Via2V5U2hhcmUsXG4gIEpTaGFyZSxcbiAgU2lnblNoYXJlLFxuICBTaWduYXR1cmUsXG4gIFhTaGFyZSxcbiAgUlNoYXJlLFxuICBHU2hhcmUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vLyAyXjI1NlxuY29uc3QgYmFzZSA9IEJpZ0ludCgnMHgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRkc2Ege1xuICBzdGF0aWMgY3VydmU6IEVkMjU1MTlDdXJ2ZSA9IG5ldyBFZDI1NTE5Q3VydmUoKTtcbiAgc3RhdGljIHNoYW1pcjogU2hhbWlyID0gbmV3IFNoYW1pcihFZGRzYS5jdXJ2ZSk7XG4gIHN0YXRpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHN0YXRpYyBhc3luYyBpbml0aWFsaXplKGhkVHJlZT86IEhEVHJlZSk6IFByb21pc2U8RWRkc2E+IHtcbiAgICBpZiAoIUVkZHNhLmluaXRpYWxpemVkKSB7XG4gICAgICBhd2FpdCBFZDI1NTE5Q3VydmUuaW5pdGlhbGl6ZSgpO1xuICAgICAgRWRkc2EuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRWRkc2EoaGRUcmVlKTtcbiAgfVxuXG4gIGhkVHJlZT86IEhEVHJlZTtcblxuICBjb25zdHJ1Y3RvcihoZFRyZWU/OiBIRFRyZWUpIHtcbiAgICB0aGlzLmhkVHJlZSA9IGhkVHJlZTtcbiAgfVxuXG4gIGtleVNoYXJlKGluZGV4OiBudW1iZXIsIHRocmVzaG9sZDogbnVtYmVyLCBudW1TaGFyZXM6IG51bWJlciwgc2VlZD86IEJ1ZmZlcik6IEtleVNoYXJlIHtcbiAgICBhc3NlcnQoaW5kZXggPiAwICYmIGluZGV4IDw9IG51bVNoYXJlcyk7XG4gICAgaWYgKHNlZWQgJiYgc2VlZC5sZW5ndGggIT09IDY0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlZWQgbXVzdCBoYXZlIGxlbmd0aCA2NCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlZWRjaGFpbiA9IHNlZWQgPz8gcmFuZG9tQnl0ZXMoNjQpO1xuICAgIGNvbnN0IGFjdHVhbFNlZWQgPSBzZWVkY2hhaW4uc2xpY2UoMCwgMzIpO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IHNlZWRjaGFpbi5zbGljZSgzMik7XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShhY3R1YWxTZWVkKS5kaWdlc3QoKTtcbiAgICBjb25zdCB1ID0gY2xhbXAoYmlnSW50RnJvbUJ1ZmZlckxFKGguc2xpY2UoMCwgMzIpKSk7XG4gICAgY29uc3QgeSA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQodSk7XG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdCh1LCB0aHJlc2hvbGQsIG51bVNoYXJlcyk7XG5cbiAgICBjb25zdCBQX2k6IFVTaGFyZSA9IHtcbiAgICAgIGk6IGluZGV4LFxuICAgICAgdDogdGhyZXNob2xkLFxuICAgICAgbjogbnVtU2hhcmVzLFxuICAgICAgeTogYmlnSW50VG9CdWZmZXJMRSh5LCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgc2VlZDogYWN0dWFsU2VlZC50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBzaGFyZXM6IEtleVNoYXJlID0ge1xuICAgICAgdVNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBpbmQgaW4gc3BsaXRfdSkge1xuICAgICAgY29uc3QgaSA9IHBhcnNlSW50KGluZCwgMTApO1xuICAgICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgc2hhcmVzLnlTaGFyZXNbaV0gPSB7XG4gICAgICAgIGksXG4gICAgICAgIGo6IFBfaS5pLFxuICAgICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfdVtpbmRdLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBjaGFpbmNvZGU6IGNoYWluY29kZS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gc2hhcmVzO1xuICB9XG5cbiAga2V5Q29tYmluZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10pOiBLZXlDb21iaW5lIHtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKEJ1ZmZlci5mcm9tKHVTaGFyZS5zZWVkLCAnaGV4JykpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gY2hhaW5jb2Rlcy5yZWR1Y2UoKGFjYywgY2hhaW5jb2RlKSA9PiAoYWNjICsgY2hhaW5jb2RlKSAlIGJhc2UpO1xuXG4gICAgY29uc3QgUF9pOiBQU2hhcmUgPSB7XG4gICAgICBpOiB1U2hhcmUuaSxcbiAgICAgIHQ6IHVTaGFyZS50LFxuICAgICAgbjogdVNoYXJlLm4sXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGguc2xpY2UoMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICBjb25zdCBwbGF5ZXJzOiBLZXlDb21iaW5lID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICBqU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBwbGF5ZXJzLmpTaGFyZXNbUF9qLmpdID0ge1xuICAgICAgICBpOiBQX2ouaixcbiAgICAgICAgajogUF9pLmksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcGxheWVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmVzIGEgY2hpbGQgY29tbW9uIGtleWNoYWluIGZyb20gY29tbW9uIGtleWNoYWluXG4gICAqXG4gICAqIEBwYXJhbSBjb21tb25LZXljaGFpbiAtIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICogQHBhcmFtIHBhdGggLSBiaXAzMiBwYXRoXG4gICAqIEByZXR1cm4ge3N0cmluZ30gZGVyaXZlZCBjb21tb24ga2V5Y2hhaW4gYXMgYSBoZXggc3RyaW5nXG4gICAqL1xuICBkZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaGRUcmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGRlcml2ZSBrZXkgd2l0aG91dCBIRFRyZWUgaW1wbGVtZW50YXRpb25cIik7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5Y2hhaW4gPSBCdWZmZXIuZnJvbShjb21tb25LZXljaGFpbiwgJ2hleCcpO1xuXG4gICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleWNoYWluID0gdGhpcy5oZFRyZWUucHVibGljRGVyaXZlKFxuICAgICAge1xuICAgICAgICBwazogYmlnSW50RnJvbUJ1ZmZlckxFKGtleWNoYWluLnNsaWNlKDAsIDMyKSksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50RnJvbUJ1ZmZlckJFKGtleWNoYWluLnNsaWNlKDMyKSksXG4gICAgICB9LFxuICAgICAgcGF0aFxuICAgICk7XG5cbiAgICBjb25zdCBkZXJpdmVkUGsgPSBiaWdJbnRUb0J1ZmZlckxFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5waywgMzIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBkZXJpdmVkQ2hhaW5jb2RlID0gYmlnSW50VG9CdWZmZXJCRShkZXJpdmVkUHVibGljS2V5Y2hhaW4uY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgcmV0dXJuIGRlcml2ZWRQayArIGRlcml2ZWRDaGFpbmNvZGU7XG4gIH1cblxuICBrZXlEZXJpdmUodVNoYXJlOiBVU2hhcmUsIHlTaGFyZXM6IFlTaGFyZVtdLCBwYXRoOiBzdHJpbmcpOiBTdWJrZXlTaGFyZSB7XG4gICAgaWYgKHRoaXMuaGRUcmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IGRlcml2ZSBrZXkgd2l0aG91dCBIRFRyZWUgaW1wbGVtZW50YXRpb25cIik7XG4gICAgfVxuICAgIGNvbnN0IGggPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoQnVmZmVyLmZyb20odVNoYXJlLnNlZWQsICdoZXgnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgeVZhbHVlcyA9IFt1U2hhcmUsIC4uLnlTaGFyZXNdLm1hcCgoc2hhcmUpID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaGFyZS55LCAnaGV4JykpKTtcbiAgICBjb25zdCB5ID0geVZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCBwcmVmaXggPSBiaWdJbnRGcm9tQnVmZmVyQkUoaC5zbGljZSgzMikpO1xuICAgIGxldCBjb250cmliQ2hhaW5jb2RlID0gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKHVTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSk7XG4gICAgY29uc3QgY2hhaW5jb2RlcyA9IFtcbiAgICAgIGNvbnRyaWJDaGFpbmNvZGUsXG4gICAgICAuLi55U2hhcmVzLm1hcCgoeyBjaGFpbmNvZGUgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGNoYWluY29kZSwgJ2hleCcpKSksXG4gICAgXTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IChhY2MgKyBjaGFpbmNvZGUpICUgYmFzZSk7XG5cbiAgICAvLyBEZXJpdmUgc3Via2V5LlxuICAgIGNvbnN0IHN1YmtleSA9IHRoaXMuaGRUcmVlLnByaXZhdGVEZXJpdmUoeyBwazogeSwgc2s6IHUsIHByZWZpeCwgY2hhaW5jb2RlIH0sIHBhdGgpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBwdWJsaWMga2V5IGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBjb250cmliWSA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQoc3Via2V5LnNrKTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgY2hhaW5jb2RlIGNvbnRyaWJ1dGlvbi5cbiAgICBjb25zdCBjaGFpbmNvZGVEZWx0YSA9IChiYXNlICsgc3Via2V5LmNoYWluY29kZSAtIGNoYWluY29kZSkgJSBiYXNlO1xuICAgIGNvbnRyaWJDaGFpbmNvZGUgPSAoY29udHJpYkNoYWluY29kZSArIGNoYWluY29kZURlbHRhKSAlIGJhc2U7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHUgdmFsdWVzLlxuICAgIGNvbnN0IHNwbGl0X3UgPSBFZGRzYS5zaGFtaXIuc3BsaXQoc3Via2V5LnNrLCB1U2hhcmUudCwgdVNoYXJlLm4pO1xuXG4gICAgY29uc3QgUF9pOiBQU2hhcmUgPSB7XG4gICAgICBpOiB1U2hhcmUuaSxcbiAgICAgIHQ6IHVTaGFyZS50LFxuICAgICAgbjogdVNoYXJlLm4sXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHN1YmtleS5waywgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnNrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJlZml4OiBiaWdJbnRUb0J1ZmZlckJFKHN1YmtleS5wcmVmaXgsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBjaGFpbmNvZGU6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LmNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2hhcmVzOiBTdWJrZXlTaGFyZSA9IHtcbiAgICAgIHBTaGFyZTogUF9pLFxuICAgICAgeVNoYXJlczoge30sXG4gICAgfTtcblxuICAgIGZvciAobGV0IGluZCA9IDA7IGluZCA8IHlTaGFyZXMubGVuZ3RoOyBpbmQrKykge1xuICAgICAgY29uc3QgUF9qID0geVNoYXJlc1tpbmRdO1xuICAgICAgc2hhcmVzLnlTaGFyZXNbUF9qLmpdID0ge1xuICAgICAgICBpOiBQX2ouaixcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoY29udHJpYlksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfdVtQX2oual0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShjb250cmliQ2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVzO1xuICB9XG5cbiAgc2lnblNoYXJlKG1lc3NhZ2U6IEJ1ZmZlciwgcFNoYXJlOiBQU2hhcmUsIGpTaGFyZXM6IEpTaGFyZVtdKTogU2lnblNoYXJlIHtcbiAgICBjb25zdCBpbmRpY2VzID0gW3BTaGFyZSwgLi4ualNoYXJlc10ubWFwKCh7IGkgfSkgPT4gaSk7XG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdChiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ocFNoYXJlLnUsICdoZXgnKSksIHBTaGFyZS50LCBwU2hhcmUubik7XG5cbiAgICAvLyBHZW5lcmF0ZSBub25jZSBjb250cmlidXRpb24uXG4gICAgY29uc3QgcHJlZml4ID0gQnVmZmVyLmZyb20ocFNoYXJlLnByZWZpeCwgJ2hleCcpO1xuICAgIGNvbnN0IHJhbmRvbUJ1ZmZlciA9IHJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBkaWdlc3QgPSBjcmVhdGVIYXNoKCdzaGE1MTInKVxuICAgICAgLnVwZGF0ZShCdWZmZXIuY29uY2F0KFtwcmVmaXgsIG1lc3NhZ2UsIHJhbmRvbUJ1ZmZlcl0pKVxuICAgICAgLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgciA9IEVkZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUoZGlnZXN0KSk7XG4gICAgY29uc3QgUiA9IEVkZHNhLmN1cnZlLmJhc2VQb2ludE11bHQocik7XG4gICAgY29uc3Qgc3BsaXRfciA9IEVkZHNhLnNoYW1pci5zcGxpdChyLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcy5sZW5ndGgsIGluZGljZXMpO1xuXG4gICAgY29uc3QgUF9pOiBYU2hhcmUgPSB7XG4gICAgICBpOiBwU2hhcmUuaSxcbiAgICAgIHk6IHBTaGFyZS55LFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHI6IGJpZ0ludFRvQnVmZmVyTEUoc3BsaXRfcltwU2hhcmUuaV0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlczogU2lnblNoYXJlID0ge1xuICAgICAgeFNoYXJlOiBQX2ksXG4gICAgICByU2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgalNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBTX2ogPSBqU2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXMuclNoYXJlc1tTX2ouaV0gPSB7XG4gICAgICAgIGk6IFNfai5pLFxuICAgICAgICBqOiBwU2hhcmUuaSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Nfai5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW1Nfai5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgUjogYmlnSW50VG9CdWZmZXJMRShSLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFNoYXJlcztcbiAgfVxuXG4gIHNpZ24obWVzc2FnZTogQnVmZmVyLCBwbGF5ZXJTaGFyZTogWFNoYXJlLCByU2hhcmVzOiBSU2hhcmVbXSwgeVNoYXJlczogWVNoYXJlW10gPSBbXSk6IEdTaGFyZSB7XG4gICAgY29uc3QgU19pID0gcGxheWVyU2hhcmU7XG5cbiAgICBjb25zdCB1VmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzLCAuLi55U2hhcmVzXS5tYXAoKHsgdSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20odSwgJ2hleCcpKSk7XG4gICAgY29uc3QgeCA9IHVWYWx1ZXMucmVkdWNlKChhY2MsIHUpID0+IEVkZHNhLmN1cnZlLnNjYWxhckFkZChhY2MsIHUpKTtcblxuICAgIGNvbnN0IFJWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXNdLm1hcCgoeyBSIH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShSLCAnaGV4JykpKTtcbiAgICBjb25zdCBSID0gUlZhbHVlcy5yZWR1Y2UoKHBhcnRpYWwsIHNoYXJlKSA9PiBFZGRzYS5jdXJ2ZS5wb2ludEFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuXG4gICAgY29uc3QgclZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IHIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHIsICdoZXgnKSkpO1xuICAgIGNvbnN0IHIgPSByVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnNjYWxhckFkZChwYXJ0aWFsLCBzaGFyZSkpO1xuXG4gICAgY29uc3QgY29tYmluZWRCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFtiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKSwgQnVmZmVyLmZyb20oU19pLnksICdoZXgnKSwgbWVzc2FnZV0pO1xuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShjb21iaW5lZEJ1ZmZlcikuZGlnZXN0KCk7XG4gICAgY29uc3QgayA9IEVkZHNhLmN1cnZlLnNjYWxhclJlZHVjZShiaWdJbnRGcm9tQnVmZmVyTEUoZGlnZXN0KSk7XG5cbiAgICBjb25zdCBnYW1tYSA9IEVkZHNhLmN1cnZlLnNjYWxhckFkZChyLCBFZGRzYS5jdXJ2ZS5zY2FsYXJNdWx0KGssIHgpKTtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBpOiBwbGF5ZXJTaGFyZS5pLFxuICAgICAgeTogcGxheWVyU2hhcmUueSxcbiAgICAgIGdhbW1hOiBiaWdJbnRUb0J1ZmZlckxFKGdhbW1hLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgUjogYmlnSW50VG9CdWZmZXJMRShSLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNpZ25Db21iaW5lKHNoYXJlczogR1NoYXJlW10pOiBTaWduYXR1cmUge1xuICAgIGNvbnN0IHkgPSBzaGFyZXNbMF0ueTtcbiAgICBjb25zdCBSID0gc2hhcmVzWzBdLlI7XG5cbiAgICBjb25zdCByZXN1bHRTaGFyZXMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzaGFyZXMpIHtcbiAgICAgIGNvbnN0IFNfaSA9IHNoYXJlc1tpbmRdO1xuICAgICAgcmVzdWx0U2hhcmVzW1NfaS5pXSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShTX2kuZ2FtbWEsICdoZXgnKSk7XG4gICAgfVxuICAgIGNvbnN0IHNpZ21hOiBiaWdpbnQgPSBFZGRzYS5zaGFtaXIuY29tYmluZShyZXN1bHRTaGFyZXMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIHksXG4gICAgICBSLFxuICAgICAgc2lnbWE6IGJpZ0ludFRvQnVmZmVyTEUoc2lnbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdmVyaWZ5KG1lc3NhZ2U6IEJ1ZmZlciwgc2lnbmF0dXJlOiBTaWduYXR1cmUpOiBib29sZWFuIHtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2lnbmF0dXJlLnksICdoZXgnKSk7XG4gICAgY29uc3Qgc2lnbmVkTWVzc2FnZSA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKHNpZ25hdHVyZS5SLCAnaGV4JyksIEJ1ZmZlci5mcm9tKHNpZ25hdHVyZS5zaWdtYSwgJ2hleCcpXSk7XG4gICAgcmV0dXJuIEVkZHNhLmN1cnZlLnZlcmlmeShtZXNzYWdlLCBzaWduZWRNZXNzYWdlLCBwdWJsaWNLZXkpO1xuICB9XG59XG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvbXBjL3Rzcy9lZGRzYS9lZGRzYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsbUNBQWlEO0FBQ2pELHlDQUE0QztBQUM1QywwREFBa0M7QUFFbEMscUNBQStHO0FBZ0IvRyxRQUFRO0FBQ1IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7QUFFNUYsTUFBcUIsS0FBSztJQWdCeEIsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFiRCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFlO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ3RCLE1BQU0scUJBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQVFELFFBQVEsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLElBQWE7UUFDekUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztTQUM3QztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLG9CQUFXLENB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QUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDOztBQWpSSCx3QkFrUkM7QUFqUlEsV0FBSyxHQUFpQixJQUFJLHFCQUFZLEVBQUUsQ0FBQztBQUN6QyxZQUFNLEdBQVcsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxpQkFBVyxHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgTVBDIHVzaW5nIHRocmVzaG9sZCBzaWduYXR1cmUgc2NoZW1lIChUU1MpLiBJdCBjb250YWluc1xuICogZnVuY3Rpb25zIGZvciBrZXkgZ2VuZXJhdGlvbiBhbmQgbWVzc2FnZSBzaWduaW5nIHdpdGggRWREU0EuXG4gKlxuICpcbiAqID09PT09PT09PT09PT09PT09PT09PT1cbiAqIEVkRFNBIEtleSBHZW5lcmF0aW9uXG4gKiA9PT09PT09PT09PT09PT09PT09PT09XG4gKiAxLiBFYWNoIHNpZ25lciBnZW5lcmF0ZXMgdGhlaXIgb3duIGtleSBzaGFyZSwgd2hpY2ggaW52b2x2ZXMgYSBwcml2YXRlIHUtc2hhcmUgYW5kIGEgcHVibGljIHktc2hhcmUuXG4gKiAyLiBTaWduZXJzIGRpc3RyaWJ1dGUgdGhlaXIgeS1zaGFyZSB0byBvdGhlciBzaWduZXJzLlxuICogMy4gQWZ0ZXIgZXhjaGFuZ2luZyB5LXNoYXJlcyB0aGUgbmV4dCBwaGFzZSBpcyB0byBjb21iaW5lIGtleSBzaGFyZXMuIEVhY2ggc2lnbmVyIGNvbWJpbmVzIHRoZWlyIHUtc2hhcmVcbiAqICAgIHdpdGggdGhlIHktc2hhcmVzIHJlY2VpdmVkIGZyb20gb3RoZXIgc2lnbmVycyBpbiBvcmRlciB0byBnZW5lcmF0ZSBhIHAtc2hhcmUgZm9yIHRoZW1zZWx2ZXMuIFdlXG4gKiAgICBhbHNvIHNhdmUgai1zaGFyZXMgZm9yIG90aGVyIHNpZ25lcnMuXG4gKiA0LiBBdCB0aGlzIHBvaW50IHRoZSBwbGF5ZXJzIGRvIG5vdCBkaXN0cmlidXRlIGFueSBzaGFyZXMgYW5kIHRoZSBmaXJzdCBwaGFzZSBvZiB0aGVcbiAqICAgIHNpZ25pbmcgcHJvdG9jb2wgaXMgY29tcGxldGUuXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogRWREU0EgU2lnbmluZ1xuICogPT09PT09PT09PT09PT09PT09PT09PVxuICogMS4gVGhlIHBhcnRpZXMgZnJvbSBrZXkgZ2VuZXJhdGlvbiBkZWNpZGUgdGhleSB3YW50IHRvIHNpZ24gc29tZXRoaW5nLiBUaGV5IGJlZ2luIHRoZSBzaWduaW5nIHByb3RvY29sXG4gKiAgICBieSBnZW5lcmF0aW5nIHNoYXJlcyBvZiBhbiBlcGhlbWVyYWwga2V5LlxuICpcbiAqICAgIGEpIEVhY2ggc2lnbmVyIHVzZXMgaGlzIHAtc2hhcmUgYW5kIHRoZSBqLXNoYXJlcyBzdG9yZWQgZm9yIG90aGVyIHBsYXllcnMgdG8gZ2VuZXJhdGUgaGlzIHNpZ25pbmcgc2hhcmUuXG4gKiAgICBiKSBUaGlzIHJlc3VsdHMgaW4gZWFjaCBzaWduZXIgaGF2aW5nIGEgcHJpdmF0ZSB4LXNoYXJlIGFuZCBwdWJsaWMgci1zaGFyZXMuXG4gKlxuICogMi4gU2lnbmVycyBkaXN0cmlidXRlIHRoZWlyIHItc2hhcmVzIHRvIG90aGVyIHNpZ25lcnMuXG4gKiAzLiBBZnRlciBleGNoYW5naW5nIHItc2hhcmVzLCBlYWNoIHNpZ25lciBzaWducyB0aGVpciBzaGFyZSBvZiB0aGUgZXBoZW1lcmFsIGtleSB1c2luZyB0aGVpciBwcml2YXRlXG4gKiAgICB4LXNoYXJlIHdpdGggdGhlIHItc2hhcmVzIGZyb20gb3RoZXIgc2lnbmVycy5cbiAqIDQuIFRoaXMgcmVzdWx0cyBpbiBlYWNoIHNpZ25lciBoYXZpbmcgYSBwdWJsaWMgZy1zaGFyZSB3aGljaCB0aGV5IHNlbmQgdG8gdGhlIG90aGVyIHNpZ25lcnMuXG4gKiA1LiBBZnRlciB0aGUgc2lnbmVycyBicm9hZGNhc3QgdGhlaXIgZy1zaGFyZXMsIHRoZSBmaW5hbCBzaWduYXR1cmUgY2FuIGJlIHJlLWNvbnN0cnVjdGVkIGluZGVwZW5kZW50bHkuXG4gKi9cbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuaW1wb3J0IHsgcmFuZG9tQnl0ZXMsIGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRWQyNTUxOUN1cnZlIH0gZnJvbSAnLi4vLi4vY3VydmVzJztcbmltcG9ydCBTaGFtaXIgZnJvbSAnLi4vLi4vc2hhbWlyJztcbmltcG9ydCBIRFRyZWUgZnJvbSAnLi4vLi4vaGRUcmVlJztcbmltcG9ydCB7IGJpZ0ludEZyb21CdWZmZXJMRSwgYmlnSW50VG9CdWZmZXJMRSwgYmlnSW50RnJvbUJ1ZmZlckJFLCBiaWdJbnRUb0J1ZmZlckJFLCBjbGFtcCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHtcbiAgS2V5U2hhcmUsXG4gIFVTaGFyZSxcbiAgWVNoYXJlLFxuICBLZXlDb21iaW5lLFxuICBQU2hhcmUsXG4gIFN1YmtleVNoYXJlLFxuICBKU2hhcmUsXG4gIFNpZ25TaGFyZSxcbiAgU2lnbmF0dXJlLFxuICBYU2hhcmUsXG4gIFJTaGFyZSxcbiAgR1NoYXJlLFxufSBmcm9tICcuL3R5cGVzJztcblxuLy8gMl4yNTZcbmNvbnN0IGJhc2UgPSBCaWdJbnQoJzB4MDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVkZHNhIHtcbiAgc3RhdGljIGN1cnZlOiBFZDI1NTE5Q3VydmUgPSBuZXcgRWQyNTUxOUN1cnZlKCk7XG4gIHN0YXRpYyBzaGFtaXI6IFNoYW1pciA9IG5ldyBTaGFtaXIoRWRkc2EuY3VydmUpO1xuICBzdGF0aWMgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBzdGF0aWMgYXN5bmMgaW5pdGlhbGl6ZShoZFRyZWU/OiBIRFRyZWUpOiBQcm9taXNlPEVkZHNhPiB7XG4gICAgaWYgKCFFZGRzYS5pbml0aWFsaXplZCkge1xuICAgICAgYXdhaXQgRWQyNTUxOUN1cnZlLmluaXRpYWxpemUoKTtcbiAgICAgIEVkZHNhLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEVkZHNhKGhkVHJlZSk7XG4gIH1cblxuICBoZFRyZWU/OiBIRFRyZWU7XG5cbiAgY29uc3RydWN0b3IoaGRUcmVlPzogSERUcmVlKSB7XG4gICAgdGhpcy5oZFRyZWUgPSBoZFRyZWU7XG4gIH1cblxuICBrZXlTaGFyZShpbmRleDogbnVtYmVyLCB0aHJlc2hvbGQ6IG51bWJlciwgbnVtU2hhcmVzOiBudW1iZXIsIHNlZWQ/OiBCdWZmZXIpOiBLZXlTaGFyZSB7XG4gICAgYXNzZXJ0KGluZGV4ID4gMCAmJiBpbmRleCA8PSBudW1TaGFyZXMpO1xuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3Qgc2VlZGNoYWluID0gc2VlZCA/PyByYW5kb21CeXRlcyg2NCk7XG4gICAgY29uc3QgYWN0dWFsU2VlZCA9IHNlZWRjaGFpbi5zbGljZSgwLCAzMik7XG4gICAgY29uc3QgY2hhaW5jb2RlID0gc2VlZGNoYWluLnNsaWNlKDMyKTtcbiAgICBjb25zdCBoID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGFjdHVhbFNlZWQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHUgPSBjbGFtcChiaWdJbnRGcm9tQnVmZmVyTEUoaC5zbGljZSgwLCAzMikpKTtcbiAgICBjb25zdCB5ID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdCh1KTtcbiAgICBjb25zdCBzcGxpdF91ID0gRWRkc2Euc2hhbWlyLnNwbGl0KHUsIHRocmVzaG9sZCwgbnVtU2hhcmVzKTtcblxuICAgIGNvbnN0IFBfaTogVVNoYXJlID0ge1xuICAgICAgaTogaW5kZXgsXG4gICAgICB0OiB0aHJlc2hvbGQsXG4gICAgICBuOiBudW1TaGFyZXMsXG4gICAgICB5OiBiaWdJbnRUb0J1ZmZlckxFKHksIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBzZWVkOiBhY3R1YWxTZWVkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHNoYXJlczogS2V5U2hhcmUgPSB7XG4gICAgICB1U2hhcmU6IFBfaSxcbiAgICAgIHlTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGluZCBpbiBzcGxpdF91KSB7XG4gICAgICBjb25zdCBpID0gcGFyc2VJbnQoaW5kLCAxMCk7XG4gICAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBzaGFyZXMueVNoYXJlc1tpXSA9IHtcbiAgICAgICAgaSxcbiAgICAgICAgajogUF9pLmksXG4gICAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W2luZF0sIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICAgIGNoYWluY29kZTogY2hhaW5jb2RlLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBrZXlDb21iaW5lKHVTaGFyZTogVVNoYXJlLCB5U2hhcmVzOiBZU2hhcmVbXSk6IEtleUNvbWJpbmUge1xuICAgIGNvbnN0IGggPSBjcmVhdGVIYXNoKCdzaGE1MTInKS51cGRhdGUoQnVmZmVyLmZyb20odVNoYXJlLnNlZWQsICdoZXgnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHlWYWx1ZXMgPSBbdVNoYXJlLCAuLi55U2hhcmVzXS5tYXAoKHNoYXJlKSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20oc2hhcmUueSwgJ2hleCcpKSk7XG4gICAgY29uc3QgeSA9IHlWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUucG9pbnRBZGQocGFydGlhbCwgc2hhcmUpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKTtcbiAgICBjb25zdCBjaGFpbmNvZGUgPSBjaGFpbmNvZGVzLnJlZHVjZSgoYWNjLCBjaGFpbmNvZGUpID0+IChhY2MgKyBjaGFpbmNvZGUpICUgYmFzZSk7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoeSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHU6IGJpZ0ludFRvQnVmZmVyTEUodSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHByZWZpeDogaC5zbGljZSgzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNoYWluY29kZSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIGNvbnN0IHBsYXllcnM6IEtleUNvbWJpbmUgPSB7XG4gICAgICBwU2hhcmU6IFBfaSxcbiAgICAgIGpTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCB5U2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFBfaiA9IHlTaGFyZXNbaW5kXTtcbiAgICAgIHBsYXllcnMualNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBwbGF5ZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcml2ZXMgYSBjaGlsZCBjb21tb24ga2V5Y2hhaW4gZnJvbSBjb21tb24ga2V5Y2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1vbktleWNoYWluIC0gY29tbW9uIGtleWNoYWluIGFzIGEgaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0gcGF0aCAtIGJpcDMyIHBhdGhcbiAgICogQHJldHVybiB7c3RyaW5nfSBkZXJpdmVkIGNvbW1vbiBrZXljaGFpbiBhcyBhIGhleCBzdHJpbmdcbiAgICovXG4gIGRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW46IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXljaGFpbiA9IEJ1ZmZlci5mcm9tKGNvbW1vbktleWNoYWluLCAnaGV4Jyk7XG5cbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5Y2hhaW4gPSB0aGlzLmhkVHJlZS5wdWJsaWNEZXJpdmUoXG4gICAgICB7XG4gICAgICAgIHBrOiBiaWdJbnRGcm9tQnVmZmVyTEUoa2V5Y2hhaW4uc2xpY2UoMCwgMzIpKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRGcm9tQnVmZmVyQkUoa2V5Y2hhaW4uc2xpY2UoMzIpKSxcbiAgICAgIH0sXG4gICAgICBwYXRoXG4gICAgKTtcblxuICAgIGNvbnN0IGRlcml2ZWRQayA9IGJpZ0ludFRvQnVmZmVyTEUoZGVyaXZlZFB1YmxpY0tleWNoYWluLnBrLCAzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2ZWRDaGFpbmNvZGUgPSBiaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWJsaWNLZXljaGFpbi5jaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICByZXR1cm4gZGVyaXZlZFBrICsgZGVyaXZlZENoYWluY29kZTtcbiAgfVxuXG4gIGtleURlcml2ZSh1U2hhcmU6IFVTaGFyZSwgeVNoYXJlczogWVNoYXJlW10sIHBhdGg6IHN0cmluZyk6IFN1YmtleVNoYXJlIHtcbiAgICBpZiAodGhpcy5oZFRyZWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3QgZGVyaXZlIGtleSB3aXRob3V0IEhEVHJlZSBpbXBsZW1lbnRhdGlvblwiKTtcbiAgICB9XG4gICAgY29uc3QgaCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpLnVwZGF0ZShCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpKS5kaWdlc3QoKTtcbiAgICBjb25zdCB5VmFsdWVzID0gW3VTaGFyZSwgLi4ueVNoYXJlc10ubWFwKChzaGFyZSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHNoYXJlLnksICdoZXgnKSkpO1xuICAgIGNvbnN0IHkgPSB5VmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG4gICAgY29uc3QgdSA9IGNsYW1wKGJpZ0ludEZyb21CdWZmZXJMRShoLnNsaWNlKDAsIDMyKSkpO1xuICAgIGNvbnN0IHByZWZpeCA9IGJpZ0ludEZyb21CdWZmZXJCRShoLnNsaWNlKDMyKSk7XG4gICAgbGV0IGNvbnRyaWJDaGFpbmNvZGUgPSBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20odVNoYXJlLmNoYWluY29kZSwgJ2hleCcpKTtcbiAgICBjb25zdCBjaGFpbmNvZGVzID0gW1xuICAgICAgY29udHJpYkNoYWluY29kZSxcbiAgICAgIC4uLnlTaGFyZXMubWFwKCh7IGNoYWluY29kZSB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyQkUoQnVmZmVyLmZyb20oY2hhaW5jb2RlLCAnaGV4JykpKSxcbiAgICBdO1xuICAgIGNvbnN0IGNoYWluY29kZSA9IGNoYWluY29kZXMucmVkdWNlKChhY2MsIGNoYWluY29kZSkgPT4gKGFjYyArIGNoYWluY29kZSkgJSBiYXNlKTtcblxuICAgIC8vIERlcml2ZSBzdWJrZXkuXG4gICAgY29uc3Qgc3Via2V5ID0gdGhpcy5oZFRyZWUucHJpdmF0ZURlcml2ZSh7IHBrOiB5LCBzazogdSwgcHJlZml4LCBjaGFpbmNvZGUgfSwgcGF0aCk7XG5cbiAgICAvLyBDYWxjdWxhdGUgbmV3IHB1YmxpYyBrZXkgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNvbnRyaWJZID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChzdWJrZXkuc2spO1xuXG4gICAgLy8gQ2FsY3VsYXRlIG5ldyBjaGFpbmNvZGUgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IGNoYWluY29kZURlbHRhID0gKGJhc2UgKyBzdWJrZXkuY2hhaW5jb2RlIC0gY2hhaW5jb2RlKSAlIGJhc2U7XG4gICAgY29udHJpYkNoYWluY29kZSA9IChjb250cmliQ2hhaW5jb2RlICsgY2hhaW5jb2RlRGVsdGEpICUgYmFzZTtcblxuICAgIC8vIENhbGN1bGF0ZSBuZXcgdSB2YWx1ZXMuXG4gICAgY29uc3Qgc3BsaXRfdSA9IEVkZHNhLnNoYW1pci5zcGxpdChzdWJrZXkuc2ssIHVTaGFyZS50LCB1U2hhcmUubik7XG5cbiAgICBjb25zdCBQX2k6IFBTaGFyZSA9IHtcbiAgICAgIGk6IHVTaGFyZS5pLFxuICAgICAgdDogdVNoYXJlLnQsXG4gICAgICBuOiB1U2hhcmUubixcbiAgICAgIHk6IGJpZ0ludFRvQnVmZmVyTEUoc3Via2V5LnBrLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzdWJrZXkuc2ssIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcmVmaXg6IGJpZ0ludFRvQnVmZmVyQkUoc3Via2V5LnByZWZpeCwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIGNoYWluY29kZTogYmlnSW50VG9CdWZmZXJCRShzdWJrZXkuY2hhaW5jb2RlLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG5cbiAgICBjb25zdCBzaGFyZXM6IFN1YmtleVNoYXJlID0ge1xuICAgICAgcFNoYXJlOiBQX2ksXG4gICAgICB5U2hhcmVzOiB7fSxcbiAgICB9O1xuXG4gICAgZm9yIChsZXQgaW5kID0gMDsgaW5kIDwgeVNoYXJlcy5sZW5ndGg7IGluZCsrKSB7XG4gICAgICBjb25zdCBQX2ogPSB5U2hhcmVzW2luZF07XG4gICAgICBzaGFyZXMueVNoYXJlc1tQX2oual0gPSB7XG4gICAgICAgIGk6IFBfai5qLFxuICAgICAgICBqOiBQX2kuaSxcbiAgICAgICAgeTogYmlnSW50VG9CdWZmZXJMRShjb250cmliWSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgdTogYmlnSW50VG9CdWZmZXJMRShzcGxpdF91W1Bfai5qXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgY2hhaW5jb2RlOiBiaWdJbnRUb0J1ZmZlckJFKGNvbnRyaWJDaGFpbmNvZGUsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cblxuICBzaWduU2hhcmUobWVzc2FnZTogQnVmZmVyLCBwU2hhcmU6IFBTaGFyZSwgalNoYXJlczogSlNoYXJlW10sIHNlZWQ/OiBCdWZmZXIpOiBTaWduU2hhcmUge1xuICAgIGlmIChzZWVkICYmIHNlZWQubGVuZ3RoICE9PSA2NCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWVkIG11c3QgaGF2ZSBsZW5ndGggNjQnKTtcbiAgICB9XG4gICAgY29uc3QgaW5kaWNlcyA9IFtwU2hhcmUsIC4uLmpTaGFyZXNdLm1hcCgoeyBpIH0pID0+IGkpO1xuICAgIGNvbnN0IHNwbGl0X3UgPSBFZGRzYS5zaGFtaXIuc3BsaXQoYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKHBTaGFyZS51LCAnaGV4JykpLCBwU2hhcmUudCwgcFNoYXJlLm4pO1xuXG4gICAgLy8gR2VuZXJhdGUgbm9uY2UgY29udHJpYnV0aW9uLlxuICAgIGNvbnN0IHByZWZpeCA9IEJ1ZmZlci5mcm9tKHBTaGFyZS5wcmVmaXgsICdoZXgnKTtcbiAgICBjb25zdCByYW5kb21CdWZmZXIgPSBzZWVkID8/IHJhbmRvbUJ5dGVzKDY0KTtcblxuICAgIGNvbnN0IGRpZ2VzdCA9IGNyZWF0ZUhhc2goJ3NoYTUxMicpXG4gICAgICAudXBkYXRlKEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgbWVzc2FnZSwgcmFuZG9tQnVmZmVyXSkpXG4gICAgICAuZGlnZXN0KCk7XG5cbiAgICBjb25zdCByID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcbiAgICBjb25zdCBSID0gRWRkc2EuY3VydmUuYmFzZVBvaW50TXVsdChyKTtcbiAgICBjb25zdCBzcGxpdF9yID0gRWRkc2Euc2hhbWlyLnNwbGl0KHIsIGluZGljZXMubGVuZ3RoLCBpbmRpY2VzLmxlbmd0aCwgaW5kaWNlcyk7XG5cbiAgICBjb25zdCBQX2k6IFhTaGFyZSA9IHtcbiAgICAgIGk6IHBTaGFyZS5pLFxuICAgICAgeTogcFNoYXJlLnksXG4gICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbcFNoYXJlLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcjogYmlnSW50VG9CdWZmZXJMRShzcGxpdF9yW3BTaGFyZS5pXSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIFI6IGJpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0U2hhcmVzOiBTaWduU2hhcmUgPSB7XG4gICAgICB4U2hhcmU6IFBfaSxcbiAgICAgIHJTaGFyZXM6IHt9LFxuICAgIH07XG5cbiAgICBmb3IgKGxldCBpbmQgPSAwOyBpbmQgPCBqU2hhcmVzLmxlbmd0aDsgaW5kKyspIHtcbiAgICAgIGNvbnN0IFNfaiA9IGpTaGFyZXNbaW5kXTtcbiAgICAgIHJlc3VsdFNoYXJlcy5yU2hhcmVzW1Nfai5pXSA9IHtcbiAgICAgICAgaTogU19qLmksXG4gICAgICAgIGo6IHBTaGFyZS5pLFxuICAgICAgICB1OiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3VbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICByOiBiaWdJbnRUb0J1ZmZlckxFKHNwbGl0X3JbU19qLmldLCAzMikudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0U2hhcmVzO1xuICB9XG5cbiAgc2lnbihtZXNzYWdlOiBCdWZmZXIsIHBsYXllclNoYXJlOiBYU2hhcmUsIHJTaGFyZXM6IFJTaGFyZVtdLCB5U2hhcmVzOiBZU2hhcmVbXSA9IFtdKTogR1NoYXJlIHtcbiAgICBjb25zdCBTX2kgPSBwbGF5ZXJTaGFyZTtcblxuICAgIGNvbnN0IHVWYWx1ZXMgPSBbcGxheWVyU2hhcmUsIC4uLnJTaGFyZXMsIC4uLnlTaGFyZXNdLm1hcCgoeyB1IH0pID0+IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbSh1LCAnaGV4JykpKTtcbiAgICBjb25zdCB4ID0gdVZhbHVlcy5yZWR1Y2UoKGFjYywgdSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKGFjYywgdSkpO1xuXG4gICAgY29uc3QgUlZhbHVlcyA9IFtwbGF5ZXJTaGFyZSwgLi4uclNoYXJlc10ubWFwKCh7IFIgfSkgPT4gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFIsICdoZXgnKSkpO1xuICAgIGNvbnN0IFIgPSBSVmFsdWVzLnJlZHVjZSgocGFydGlhbCwgc2hhcmUpID0+IEVkZHNhLmN1cnZlLnBvaW50QWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCByVmFsdWVzID0gW3BsYXllclNoYXJlLCAuLi5yU2hhcmVzXS5tYXAoKHsgciB9KSA9PiBiaWdJbnRGcm9tQnVmZmVyTEUoQnVmZmVyLmZyb20ociwgJ2hleCcpKSk7XG4gICAgY29uc3QgciA9IHJWYWx1ZXMucmVkdWNlKChwYXJ0aWFsLCBzaGFyZSkgPT4gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHBhcnRpYWwsIHNoYXJlKSk7XG5cbiAgICBjb25zdCBjb21iaW5lZEJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2JpZ0ludFRvQnVmZmVyTEUoUiwgMzIpLCBCdWZmZXIuZnJvbShTX2kueSwgJ2hleCcpLCBtZXNzYWdlXSk7XG4gICAgY29uc3QgZGlnZXN0ID0gY3JlYXRlSGFzaCgnc2hhNTEyJykudXBkYXRlKGNvbWJpbmVkQnVmZmVyKS5kaWdlc3QoKTtcbiAgICBjb25zdCBrID0gRWRkc2EuY3VydmUuc2NhbGFyUmVkdWNlKGJpZ0ludEZyb21CdWZmZXJMRShkaWdlc3QpKTtcblxuICAgIGNvbnN0IGdhbW1hID0gRWRkc2EuY3VydmUuc2NhbGFyQWRkKHIsIEVkZHNhLmN1cnZlLnNjYWxhck11bHQoaywgeCkpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGk6IHBsYXllclNoYXJlLmksXG4gICAgICB5OiBwbGF5ZXJTaGFyZS55LFxuICAgICAgZ2FtbWE6IGJpZ0ludFRvQnVmZmVyTEUoZ2FtbWEsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgICBSOiBiaWdJbnRUb0J1ZmZlckxFKFIsIDMyKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2lnbkNvbWJpbmUoc2hhcmVzOiBHU2hhcmVbXSk6IFNpZ25hdHVyZSB7XG4gICAgY29uc3QgeSA9IHNoYXJlc1swXS55O1xuICAgIGNvbnN0IFIgPSBzaGFyZXNbMF0uUjtcblxuICAgIGNvbnN0IHJlc3VsdFNoYXJlcyA9IHt9O1xuICAgIGZvciAoY29uc3QgaW5kIGluIHNoYXJlcykge1xuICAgICAgY29uc3QgU19pID0gc2hhcmVzW2luZF07XG4gICAgICByZXN1bHRTaGFyZXNbU19pLmldID0gYmlnSW50RnJvbUJ1ZmZlckxFKEJ1ZmZlci5mcm9tKFNfaS5nYW1tYSwgJ2hleCcpKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbWE6IGJpZ2ludCA9IEVkZHNhLnNoYW1pci5jb21iaW5lKHJlc3VsdFNoYXJlcyk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgeSxcbiAgICAgIFIsXG4gICAgICBzaWdtYTogYmlnSW50VG9CdWZmZXJMRShzaWdtYSwgMzIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2ZXJpZnkobWVzc2FnZTogQnVmZmVyLCBzaWduYXR1cmU6IFNpZ25hdHVyZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGJpZ0ludEZyb21CdWZmZXJMRShCdWZmZXIuZnJvbShzaWduYXR1cmUueSwgJ2hleCcpKTtcbiAgICBjb25zdCBzaWduZWRNZXNzYWdlID0gQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oc2lnbmF0dXJlLlIsICdoZXgnKSwgQnVmZmVyLmZyb20oc2lnbmF0dXJlLnNpZ21hLCAnaGV4JyldKTtcbiAgICByZXR1cm4gRWRkc2EuY3VydmUudmVyaWZ5KG1lc3NhZ2UsIHNpZ25lZE1lc3NhZ2UsIHB1YmxpY0tleSk7XG4gIH1cbn1cbiJdfQ==
@@ -19,7 +19,7 @@ class NodeEnvironmentError extends bitgojsError_1.BitGoJsError {
19
19
  exports.NodeEnvironmentError = NodeEnvironmentError;
20
20
  class UnsupportedCoinError extends bitgojsError_1.BitGoJsError {
21
21
  constructor(coin) {
22
- super(`Coin or token type ${coin} not supported or not compiled. Please be sure that you are using the latest version of BitGoJS.`);
22
+ super(`Coin or token type ${coin} not supported or not compiled. Please be sure that you are using the latest version of BitGoJS. If using @bitgo/sdk-api, please confirm you have registered ${coin} first.`);
23
23
  }
24
24
  }
25
25
  exports.UnsupportedCoinError = UnsupportedCoinError;
@@ -160,4 +160,4 @@ class ApiResponseError extends bitgojsError_1.BitGoJsError {
160
160
  }
161
161
  }
162
162
  exports.ApiResponseError = ApiResponseError;
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQUd0Qyw2RkFIQSwyQkFBWSxPQUdBO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLGtHQUFrRyxDQUM3SCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBTkQsb0RBTUM7QUFFRCxNQUFhLDZCQUE4QixTQUFRLDJCQUFZO0lBQzdELFlBQVksV0FBbUIsRUFBRSxLQUFzQjtRQUNyRCxLQUFLLENBQUMsZ0JBQWdCLFdBQVcsaUNBQWlDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBSkQsc0VBSUM7QUFFRCxNQUFhLHlCQUEwQixTQUFRLDJCQUFZO0lBQ3pELFlBQVksT0FBZ0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sSUFBSSxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDRjtBQUpELDhEQUlDO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSwyQkFBWTtJQUNyRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLGtDQUFrQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBSkQsc0RBSUM7QUFF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LE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxtQkFBb0IsU0FBUSwyQkFBWTtJQUNuRCxZQUFtQixPQUFlO1FBQ2hDLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUFKRCxrREFJQztBQUVELE1BQWEsdUJBQXdCLFNBQVEsMkJBQVk7SUFDdkQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQUpELDBEQUlDO0FBRUQsTUFBYSxnQkFBeUMsU0FBUSwyQkFBWTtJQU94RSxZQUNFLE9BQWUsRUFDZixNQUFjLEVBQ2QsTUFBeUIsRUFDekIsWUFBc0IsRUFDdEIsUUFBa0I7UUFFbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBckJELDRDQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlc2NyaXB0aXZlIGVycm9yIHR5cGVzIGZvciBjb21tb24gaXNzdWVzIHdoaWNoIG1heSBhcmlzZVxuLy8gZHVyaW5nIHRoZSBvcGVyYXRpb24gb2YgQml0R29KUyBvciBCaXRHb0V4cHJlc3NcbmltcG9ydCB7IEJpdEdvSnNFcnJvciB9IGZyb20gJy4uL2JpdGdvanNFcnJvcic7XG5cbi8vIHJlLWV4cG9ydCBmb3IgYmFja3dhcmRzIGNvbXBhdFxuZXhwb3J0IHsgQml0R29Kc0Vycm9yIH07XG5cbmV4cG9ydCBjbGFzcyBUbHNDb25maWd1cmF0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ1RMUyBpcyBjb25maWd1cmF0aW9uIGlzIGludmFsaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm9kZUVudmlyb25tZW50RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05PREVfRU5WIGlzIGludmFsaWQgZm9yIHRoZSBjdXJyZW50IGJpdGdvIGVudmlyb25tZW50Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkQ29pbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvaW46IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYENvaW4gb3IgdG9rZW4gdHlwZSAke2NvaW59IG5vdCBzdXBwb3J0ZWQgb3Igbm90IGNvbXBpbGVkLiBQbGVhc2UgYmUgc3VyZSB0aGF0IHlvdSBhcmUgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEJpdEdvSlMuYFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NUeXBlQ2hhaW5NaXNtYXRjaEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgY29uc3RydWN0b3IoYWRkcmVzc1R5cGU6IHN0cmluZywgY2hhaW46IG51bWJlciB8IHN0cmluZykge1xuICAgIHN1cGVyKGBhZGRyZXNzIHR5cGUgJHthZGRyZXNzVHlwZX0gZG9lcyBub3QgY29ycmVzcG9uZCB0byBjaGFpbiAke2NoYWlufWApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMnNoUDJ3c2hVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3Ayc2hQMndzaCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMndzaFVuc3VwcG9ydGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3Ayd3NoIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFAydHJVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMnRyIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuc3VwcG9ydGVkQWRkcmVzc1R5cGVFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBhZGRyZXNzIHR5cGUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBhZGRyZXNzJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzVmVyaWZpY2F0aW9uT2JqZWN0UHJvcGVydHlFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEFkZHJlc3NFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyB2YWxpZGF0aW9uIGZhaWx1cmUnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnYWRkcmVzcyBjaGFpbiBhbmQvb3IgaW5kZXggYXJlIGludmFsaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0UmVjb3ZlcnlVbnN1cHBvcnRlZCBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnd2FsbGV0IHJlY292ZXJ5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBjb2luJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1ldGhvZE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ21ldGhvZCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQmxvY2tFeHBsb3JlclVuYXZhaWxhYmxlIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICd0aGlyZC1wYXJ0eSBibG9ja2V4cGxvcmVyIG5vdCByZXNwb25kaW5nJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRNZW1vSWRFcnJvciBleHRlbmRzIEludmFsaWRBZGRyZXNzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgbWVtbyBpZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUGF5bWVudElkRXJyb3IgZXh0ZW5kcyBJbnZhbGlkQWRkcmVzc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIHBheW1lbnQgaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2V5UmVjb3ZlcnlTZXJ2aWNlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2tleSByZWNvdmVyeSBzZXJ2aWNlIGVuY291bnRlcmVkIGFuIGVycm9yJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFkZHJlc3NHZW5lcmF0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgZ2VuZXJhdGlvbiBmYWlsZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXRoZXJldW1MaWJyYXJ5VW5hdmFpbGFibGVFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYEV0aGVyZXVtIGxpYnJhcnkgcmVxdWlyZWQgZm9yIG9wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgaW5zdGFsbCBcIiR7cGFja2FnZU5hbWV9XCIuYCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0ZWxsYXJGZWRlcmF0aW9uVXNlck5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FjY291bnQgbm90IGZvdW5kJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yTm9JbnB1dFRvUmVjb3ZlciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnTm8gaW5wdXQgdG8gcmVjb3ZlciAtIGFib3J0aW5nIScpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkS2V5UGF0aEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGtleVBhdGg6IHN0cmluZykge1xuICAgIHN1cGVyKGBpbnZhbGlkIGtleXBhdGg6ICR7a2V5UGF0aH1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBpUmVzcG9uc2VFcnJvcjxSZXNwb25zZUJvZHlUeXBlID0gYW55PiBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhdHVzOiBudW1iZXI7XG4gIHJlc3VsdD86IFJlc3BvbnNlQm9keVR5cGU7XG4gIGludmFsaWRUb2tlbj86IGJvb2xlYW47XG4gIG5lZWRzT1RQPzogYm9vbGVhbjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHN0YXR1czogbnVtYmVyLFxuICAgIHJlc3VsdD86IFJlc3BvbnNlQm9keVR5cGUsXG4gICAgaW52YWxpZFRva2VuPzogYm9vbGVhbixcbiAgICBuZWVkc09UUD86IGJvb2xlYW5cbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcbiAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbiAgICB0aGlzLmludmFsaWRUb2tlbiA9IGludmFsaWRUb2tlbjtcbiAgICB0aGlzLm5lZWRzT1RQID0gbmVlZHNPVFA7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JpdGdvL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsa0RBQWtEO0FBQ2xELGtEQUErQztBQUd0Qyw2RkFIQSwyQkFBWSxPQUdBO0FBRXJCLE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUpELHNEQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSwyQkFBWTtJQUNwRCxZQUFtQixPQUFnQjtRQUNqQyxLQUFLLENBQUMsT0FBTyxJQUFJLHVEQUF1RCxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLDJCQUFZO0lBQ3BELFlBQW1CLElBQVk7UUFDN0IsS0FBSyxDQUNILHNCQUFzQixJQUFJLGdLQUFnSyxJQUFJLFNBQVMsQ0FDeE0sQ0FBQztJQUNKLENBQUM7Q0FDRjtBQU5ELG9EQU1DO0FBRUQsTUFBYSw2QkFBOEIsU0FBUSwyQkFBWTtJQUM3RCxZQUFZLFdBQW1CLEVBQUUsS0FBc0I7UUFDckQsS0FBSyxDQUFDLGdCQUFnQixXQUFXLGlDQUFpQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Q0FDRjtBQUpELHNFQUlDO0FBRUQsTUFBYSx5QkFBMEIsU0FBUSwyQkFBWTtJQUN6RCxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLElBQUksc0NBQXNDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFKRCw4REFJQztBQUVELE1BQWEscUJBQXNCLFNBQVEsMkJBQVk7SUFDckQsWUFBbUIsT0FBZ0I7UUFDakMsS0FBSyxDQUFDLE9BQU8sSUFBSSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQUpE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LEtBQUssQ0FBQyxPQUFPLElBQUksaUNBQWlDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFKRCxzREFJQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsMkJBQVk7SUFDbkQsWUFBbUIsT0FBZTtRQUNoQyxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBSkQsa0RBSUM7QUFFRCxNQUFhLHVCQUF3QixTQUFRLDJCQUFZO0lBQ3ZELFlBQW1CLE9BQWdCO1FBQ2pDLEtBQUssQ0FBQyxPQUFPLElBQUkscUJBQXFCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFKRCwwREFJQztBQUVELE1BQWEsZ0JBQXlDLFNBQVEsMkJBQVk7SUFPeEUsWUFDRSxPQUFlLEVBQ2YsTUFBYyxFQUNkLE1BQXlCLEVBQ3pCLFlBQXNCLEVBQ3RCLFFBQWtCO1FBRWxCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7Q0FDRjtBQXJCRCw0Q0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBEZXNjcmlwdGl2ZSBlcnJvciB0eXBlcyBmb3IgY29tbW9uIGlzc3VlcyB3aGljaCBtYXkgYXJpc2Vcbi8vIGR1cmluZyB0aGUgb3BlcmF0aW9uIG9mIEJpdEdvSlMgb3IgQml0R29FeHByZXNzXG5pbXBvcnQgeyBCaXRHb0pzRXJyb3IgfSBmcm9tICcuLi9iaXRnb2pzRXJyb3InO1xuXG4vLyByZS1leHBvcnQgZm9yIGJhY2t3YXJkcyBjb21wYXRcbmV4cG9ydCB7IEJpdEdvSnNFcnJvciB9O1xuXG5leHBvcnQgY2xhc3MgVGxzQ29uZmlndXJhdGlvbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdUTFMgaXMgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vZGVFbnZpcm9ubWVudEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdOT0RFX0VOViBpcyBpbnZhbGlkIGZvciB0aGUgY3VycmVudCBiaXRnbyBlbnZpcm9ubWVudCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZENvaW5FcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb2luOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgIGBDb2luIG9yIHRva2VuIHR5cGUgJHtjb2lufSBub3Qgc3VwcG9ydGVkIG9yIG5vdCBjb21waWxlZC4gUGxlYXNlIGJlIHN1cmUgdGhhdCB5b3UgYXJlIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBCaXRHb0pTLiBJZiB1c2luZyBAYml0Z28vc2RrLWFwaSwgcGxlYXNlIGNvbmZpcm0geW91IGhhdmUgcmVnaXN0ZXJlZCAke2NvaW59IGZpcnN0LmBcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVHlwZUNoYWluTWlzbWF0Y2hFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGFkZHJlc3NUeXBlOiBzdHJpbmcsIGNoYWluOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICBzdXBlcihgYWRkcmVzcyB0eXBlICR7YWRkcmVzc1R5cGV9IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gY2hhaW4gJHtjaGFpbn1gKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJzaFAyd3NoVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMnNoUDJ3c2ggbm90IHN1cHBvcnRlZCBieSB0aGlzIGNvaW4nKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUDJ3c2hVbnN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdwMndzaCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQMnRyVW5zdXBwb3J0ZWRFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAncDJ0ciBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbnN1cHBvcnRlZEFkZHJlc3NUeXBlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgYWRkcmVzcyB0eXBlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2ludmFsaWQgYWRkcmVzcycpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQWRkcmVzc1ZlcmlmaWNhdGlvbk9iamVjdFByb3BlcnR5RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ2FkZHJlc3MgY2hhaW4gYW5kL29yIGluZGV4IGFyZSBpbnZhbGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdhbGxldFJlY292ZXJ5VW5zdXBwb3J0ZWQgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ3dhbGxldCByZWNvdmVyeSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgY29pbicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNZXRob2ROb3RJbXBsZW1lbnRlZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdtZXRob2Qgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrRXhwbG9yZXJVbmF2YWlsYWJsZSBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAndGhpcmQtcGFydHkgYmxvY2tleHBsb3JlciBub3QgcmVzcG9uZGluZycpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkTWVtb0lkRXJyb3IgZXh0ZW5kcyBJbnZhbGlkQWRkcmVzc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdpbnZhbGlkIG1lbW8gaWQnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZFBheW1lbnRJZEVycm9yIGV4dGVuZHMgSW52YWxpZEFkZHJlc3NFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSB8fCAnaW52YWxpZCBwYXltZW50IGlkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtleVJlY292ZXJ5U2VydmljZUVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdrZXkgcmVjb3Zlcnkgc2VydmljZSBlbmNvdW50ZXJlZCBhbiBlcnJvcicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzR2VuZXJhdGlvbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhZGRyZXNzIGdlbmVyYXRpb24gZmFpbGVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV0aGVyZXVtTGlicmFyeVVuYXZhaWxhYmxlRXJyb3IgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFja2FnZU5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKGBFdGhlcmV1bSBsaWJyYXJ5IHJlcXVpcmVkIGZvciBvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGluc3RhbGwgXCIke3BhY2thZ2VOYW1lfVwiLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdGVsbGFyRmVkZXJhdGlvblVzZXJOb3RGb3VuZEVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdhY2NvdW50IG5vdCBmb3VuZCcpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vSW5wdXRUb1JlY292ZXIgZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UgfHwgJ05vIGlucHV0IHRvIHJlY292ZXIgLSBhYm9ydGluZyEnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW52YWxpZEtleVBhdGhFcnJvciBleHRlbmRzIEJpdEdvSnNFcnJvciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihrZXlQYXRoOiBzdHJpbmcpIHtcbiAgICBzdXBlcihgaW52YWxpZCBrZXlwYXRoOiAke2tleVBhdGh9YCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGV4dGVuZHMgQml0R29Kc0Vycm9yIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlIHx8ICdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwaVJlc3BvbnNlRXJyb3I8UmVzcG9uc2VCb2R5VHlwZSA9IGFueT4gZXh0ZW5kcyBCaXRHb0pzRXJyb3Ige1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHN0YXR1czogbnVtYmVyO1xuICByZXN1bHQ/OiBSZXNwb25zZUJvZHlUeXBlO1xuICBpbnZhbGlkVG9rZW4/OiBib29sZWFuO1xuICBuZWVkc09UUD86IGJvb2xlYW47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGF0dXM6IG51bWJlcixcbiAgICByZXN1bHQ/OiBSZXNwb25zZUJvZHlUeXBlLFxuICAgIGludmFsaWRUb2tlbj86IGJvb2xlYW4sXG4gICAgbmVlZHNPVFA/OiBib29sZWFuXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XG4gICAgdGhpcy5yZXN1bHQgPSByZXN1bHQ7XG4gICAgdGhpcy5pbnZhbGlkVG9rZW4gPSBpbnZhbGlkVG9rZW47XG4gICAgdGhpcy5uZWVkc09UUCA9IG5lZWRzT1RQO1xuICB9XG59XG4iXX0=
@@ -5,6 +5,7 @@ export * from './bip32util';
5
5
  export * from './bitcoin';
6
6
  export * from './bitgoBase';
7
7
  export * from './config';
8
+ export * from './coinFactory';
8
9
  export * from './ecdh';
9
10
  export * from './enterprise';
10
11
  export * from './environments';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bitgo/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAE7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -32,6 +32,7 @@ __exportStar(require("./bip32util"), exports);
32
32
  __exportStar(require("./bitcoin"), exports);
33
33
  __exportStar(require("./bitgoBase"), exports);
34
34
  __exportStar(require("./config"), exports);
35
+ __exportStar(require("./coinFactory"), exports);
35
36
  __exportStar(require("./ecdh"), exports);
36
37
  __exportStar(require("./enterprise"), exports);
37
38
  __exportStar(require("./environments"), exports);
@@ -47,4 +48,4 @@ __exportStar(require("./types"), exports);
47
48
  __exportStar(require("./utils"), exports);
48
49
  __exportStar(require("./wallet"), exports);
49
50
  __exportStar(require("./webhook"), exports);
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQXVCaEMsa0NBQVc7QUF0QnBCLDJDQUE2QjtBQXVCcEIsa0JBQUc7QUFyQlosNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLGlEQUErQjtBQUMvQiwyQ0FBeUI7QUFDekIsNkNBQTJCO0FBQzNCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsb0RBQWtDO0FBQ2xDLDZDQUEyQjtBQUMzQiw0Q0FBMEI7QUFDMUIsd0NBQXNCO0FBQ3RCLDBDQUF3QjtBQUN4QiwwQ0FBd0I7QUFDeEIsMkNBQXlCO0FBQ3pCLDRDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJpdGNvaW5VdGlsIGZyb20gJy4vYml0Y29pbic7XG5pbXBvcnQgKiBhcyB0c3MgZnJvbSAnLi90c3MnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Jhc2VDb2luJztcbmV4cG9ydCAqIGZyb20gJy4vYmlwMzJ1dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vYml0Y29pbic7XG5leHBvcnQgKiBmcm9tICcuL2JpdGdvQmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2VjZGgnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRlcnByaXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJuYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljaGFpbic7XG5leHBvcnQgKiBmcm9tICcuL21hcmtldCc7XG5leHBvcnQgKiBmcm9tICcuL3BlbmRpbmdBcHByb3ZhbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlY292ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3Rzcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWJob29rJztcbmV4cG9ydCB7IGJpdGNvaW5VdGlsIH07XG5leHBvcnQgeyB0c3MgfTtcbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYml0Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQXdCaEMsa0NBQVc7QUF2QnBCLDJDQUE2QjtBQXdCcEIsa0JBQUc7QUF0QlosNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6QixnREFBOEI7QUFDOUIseUNBQXVCO0FBQ3ZCLCtDQUE2QjtBQUM3QixpREFBK0I7QUFDL0IsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyw2Q0FBMkI7QUFDM0IsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0QiwwQ0FBd0I7QUFDeEIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6Qiw0Q0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXRjb2luVXRpbCBmcm9tICcuL2JpdGNvaW4nO1xuaW1wb3J0ICogYXMgdHNzIGZyb20gJy4vdHNzJztcblxuZXhwb3J0ICogZnJvbSAnLi9iYXNlQ29pbic7XG5leHBvcnQgKiBmcm9tICcuL2JpcDMydXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2JpdGNvaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRnb0Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2luRmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2VjZGgnO1xuZXhwb3J0ICogZnJvbSAnLi9lbnRlcnByaXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJuYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljaGFpbic7XG5leHBvcnQgKiBmcm9tICcuL21hcmtldCc7XG5leHBvcnQgKiBmcm9tICcuL3BlbmRpbmdBcHByb3ZhbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlY292ZXJ5JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3Rzcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi93YWxsZXQnO1xuZXhwb3J0ICogZnJvbSAnLi93ZWJob29rJztcbmV4cG9ydCB7IGJpdGNvaW5VdGlsIH07XG5leHBvcnQgeyB0c3MgfTtcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { ECDSA } from './../../../account-lib/mpc/tss';
2
+ import { DecryptableNShare, CombinedKey, EncryptedNShare } from './types';
3
+ declare type KeyShare = ECDSA.KeyShare;
4
+ /**
5
+ * Combines NShares to combine the final TSS key
6
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
7
+ *
8
+ * @param params.keyShare - TSS key share
9
+ * @param params.encryptedNShares - encrypted NShares with information on how to decrypt
10
+ * @param params.commonKeychain - expected common keychain of the combined key
11
+ * @returns {CombinedKey} combined TSS key
12
+ */
13
+ export declare function createCombinedKey(params: {
14
+ keyShare: KeyShare;
15
+ encryptedNShares: DecryptableNShare[];
16
+ commonKeychain: string;
17
+ }): Promise<CombinedKey>;
18
+ /**
19
+ * Prepares a NShare to be exchanged with other key holders.
20
+ * Output is in a format that is usable within BitGo's ecosystem.
21
+ *
22
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
23
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
24
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
25
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
26
+ * @returns { EncryptedNShare } encrypted Y Share
27
+ */
28
+ export declare function encryptNShare(params: {
29
+ keyShare: KeyShare;
30
+ recipientIndex: number;
31
+ recipientGpgPublicArmor: string;
32
+ senderGpgPrivateArmor: string;
33
+ }): Promise<EncryptedNShare>;
34
+ export {};
35
+ //# sourceMappingURL=ecdsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAS,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAI3F,aAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC/B;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CA+DvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB3B"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encryptNShare = exports.createCombinedKey = void 0;
4
+ const tss_1 = require("./../../../account-lib/mpc/tss");
5
+ const utils_1 = require("./../../utils");
6
+ /**
7
+ * Combines NShares to combine the final TSS key
8
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
9
+ *
10
+ * @param params.keyShare - TSS key share
11
+ * @param params.encryptedNShares - encrypted NShares with information on how to decrypt
12
+ * @param params.commonKeychain - expected common keychain of the combined key
13
+ * @returns {CombinedKey} combined TSS key
14
+ */
15
+ async function createCombinedKey(params) {
16
+ const MPC = new tss_1.Ecdsa();
17
+ const { keyShare, encryptedNShares, commonKeychain } = params;
18
+ const nShares = [];
19
+ let bitgoNShare;
20
+ let userNShare;
21
+ let backupNShare;
22
+ for (const encryptedNShare of encryptedNShares) {
23
+ const privateShare = await utils_1.readSignedMessage(encryptedNShare.nShare.encryptedPrivateShare, encryptedNShare.senderPublicArmor, encryptedNShare.recipientPrivateArmor);
24
+ const nShare = {
25
+ i: encryptedNShare.nShare.i,
26
+ j: encryptedNShare.nShare.j,
27
+ y: encryptedNShare.nShare.publicShare,
28
+ u: privateShare,
29
+ n: encryptedNShare.nShare.n,
30
+ chaincode: encryptedNShare.nShare.chaincode,
31
+ };
32
+ switch (encryptedNShare.nShare.j) {
33
+ case 1:
34
+ userNShare = nShare;
35
+ break;
36
+ case 2:
37
+ backupNShare = nShare;
38
+ break;
39
+ case 3:
40
+ bitgoNShare = nShare;
41
+ break;
42
+ default:
43
+ throw new Error('Invalid NShare index');
44
+ }
45
+ nShares.push(nShare);
46
+ }
47
+ if (!bitgoNShare) {
48
+ throw new Error('Missing BitGo N Share');
49
+ }
50
+ const combinedKey = MPC.keyCombine(keyShare.pShare, nShares);
51
+ if (combinedKey.xShare.y + combinedKey.xShare.chaincode !== commonKeychain) {
52
+ throw new Error('Common keychains do not match');
53
+ }
54
+ const signingMaterial = {
55
+ pShare: keyShare.pShare,
56
+ bitgoNShare,
57
+ backupNShare,
58
+ userNShare,
59
+ };
60
+ return {
61
+ signingMaterial,
62
+ commonKeychain,
63
+ };
64
+ }
65
+ exports.createCombinedKey = createCombinedKey;
66
+ /**
67
+ * Prepares a NShare to be exchanged with other key holders.
68
+ * Output is in a format that is usable within BitGo's ecosystem.
69
+ *
70
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
71
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
72
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
73
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
74
+ * @returns { EncryptedNShare } encrypted Y Share
75
+ */
76
+ async function encryptNShare(params) {
77
+ const { keyShare, recipientIndex, recipientGpgPublicArmor, senderGpgPrivateArmor } = params;
78
+ const nShare = keyShare.nShares[recipientIndex];
79
+ if (!nShare) {
80
+ throw new Error('Invalid recipient');
81
+ }
82
+ const publicShare = keyShare.pShare.y;
83
+ const privateShare = nShare.u;
84
+ const encryptedPrivateShare = await utils_1.encryptAndSignText(privateShare, recipientGpgPublicArmor, senderGpgPrivateArmor);
85
+ return {
86
+ i: nShare.i,
87
+ j: nShare.j,
88
+ n: nShare.n,
89
+ publicShare,
90
+ encryptedPrivateShare,
91
+ chaincode: nShare.chaincode,
92
+ };
93
+ }
94
+ exports.encryptNShare = encryptNShare;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2VjZHNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUE4RDtBQUU5RCx5Q0FBc0U7QUFJdEU7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsTUFJdkM7SUFDQyxNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQUssRUFBRSxDQUFDO0lBRXhCLE1BQU0sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzlELE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUU3QixJQUFJLFdBQStCLENBQUM7SUFDcEMsSUFBSSxVQUE4QixDQUFDO0lBQ25DLElBQUksWUFBZ0MsQ0FBQztJQUVyQyxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0seUJBQWlCLENBQzFDLGVBQWUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQzVDLGVBQWUsQ0FBQyxpQkFBaUIsRUFDakMsZUFBZSxDQUFDLHFCQUFxQixDQUN0QyxDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQVc7WUFDckIsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFdBQVc7WUFDckMsQ0FBQyxFQUFFLFlBQVk7WUFDZixDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLFNBQVMsRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVM7U0FDNUMsQ0FBQztRQUVGLFFBQVEsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLE1BQU07WUFDUixLQUFLLENBQUM7Z0JBQ0osWUFBWSxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsTUFBTTtZQUNSLEtBQUssQ0FBQztnQkFDSixXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUNyQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0tBQzFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFO1FBQzFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztLQUNsRDtJQUVELE1BQU0sZUFBZSxHQUFvQjtRQUN2QyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDdkIsV0FBVztRQUNYLFlBQVk7UUFDWixVQUFVO0tBQ1gsQ0FBQztJQUVGLE9BQU87UUFDTCxlQUFlO1FBQ2YsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDO0FBbkVELDhDQW1FQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxhQUFhLENBQUMsTUFLbkM7SUFDQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUU1RixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FDdEM7SUFFRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTlCLE1BQU0scUJBQXFCLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUVySCxPQUFPO1FBQ0wsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ1gsV0FBVztRQUNYLHFCQUFxQjtRQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUExQkQsc0NBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUNEU0EsIEVjZHNhIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcbmltcG9ydCB7IERlY3J5cHRhYmxlTlNoYXJlLCBDb21iaW5lZEtleSwgU2lnbmluZ01hdGVyaWFsLCBFbmNyeXB0ZWROU2hhcmUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGVuY3J5cHRBbmRTaWduVGV4dCwgcmVhZFNpZ25lZE1lc3NhZ2UgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcblxudHlwZSBOU2hhcmUgPSBFQ0RTQS5OU2hhcmU7XG50eXBlIEtleVNoYXJlID0gRUNEU0EuS2V5U2hhcmU7XG4vKipcbiAqIENvbWJpbmVzIE5TaGFyZXMgdG8gY29tYmluZSB0aGUgZmluYWwgVFNTIGtleVxuICogVGhpcyBjYW4gb25seSBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVXNlciBvciBCYWNrdXAga2V5IHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBjb21tb24ga2V5Y2hhaW4gZnJvbSBCaXRHbyBmaXJzdFxuICpcbiAqIEBwYXJhbSBwYXJhbXMua2V5U2hhcmUgLSBUU1Mga2V5IHNoYXJlXG4gKiBAcGFyYW0gcGFyYW1zLmVuY3J5cHRlZE5TaGFyZXMgLSBlbmNyeXB0ZWQgTlNoYXJlcyB3aXRoIGluZm9ybWF0aW9uIG9uIGhvdyB0byBkZWNyeXB0XG4gKiBAcGFyYW0gcGFyYW1zLmNvbW1vbktleWNoYWluIC0gZXhwZWN0ZWQgY29tbW9uIGtleWNoYWluIG9mIHRoZSBjb21iaW5lZCBrZXlcbiAqIEByZXR1cm5zIHtDb21iaW5lZEtleX0gY29tYmluZWQgVFNTIGtleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tYmluZWRLZXkocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn0pOiBQcm9taXNlPENvbWJpbmVkS2V5PiB7XG4gIGNvbnN0IE1QQyA9IG5ldyBFY2RzYSgpO1xuXG4gIGNvbnN0IHsga2V5U2hhcmUsIGVuY3J5cHRlZE5TaGFyZXMsIGNvbW1vbktleWNoYWluIH0gPSBwYXJhbXM7XG4gIGNvbnN0IG5TaGFyZXM6IE5TaGFyZVtdID0gW107XG5cbiAgbGV0IGJpdGdvTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCB1c2VyTlNoYXJlOiBOU2hhcmUgfCB1bmRlZmluZWQ7XG4gIGxldCBiYWNrdXBOU2hhcmU6IE5TaGFyZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgKGNvbnN0IGVuY3J5cHRlZE5TaGFyZSBvZiBlbmNyeXB0ZWROU2hhcmVzKSB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlID0gYXdhaXQgcmVhZFNpZ25lZE1lc3NhZ2UoXG4gICAgICBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICAgIGVuY3J5cHRlZE5TaGFyZS5zZW5kZXJQdWJsaWNBcm1vcixcbiAgICAgIGVuY3J5cHRlZE5TaGFyZS5yZWNpcGllbnRQcml2YXRlQXJtb3JcbiAgICApO1xuXG4gICAgY29uc3QgblNoYXJlOiBOU2hhcmUgPSB7XG4gICAgICBpOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmksXG4gICAgICBqOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmosXG4gICAgICB5OiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgdTogcHJpdmF0ZVNoYXJlLFxuICAgICAgbjogZW5jcnlwdGVkTlNoYXJlLm5TaGFyZS5uLFxuICAgICAgY2hhaW5jb2RlOiBlbmNyeXB0ZWROU2hhcmUublNoYXJlLmNoYWluY29kZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoIChlbmNyeXB0ZWROU2hhcmUublNoYXJlLmopIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdXNlck5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJhY2t1cE5TaGFyZSA9IG5TaGFyZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGJpdGdvTlNoYXJlID0gblNoYXJlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOU2hhcmUgaW5kZXgnKTtcbiAgICB9XG5cbiAgICBuU2hhcmVzLnB1c2goblNoYXJlKTtcbiAgfVxuXG4gIGlmICghYml0Z29OU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgQml0R28gTiBTaGFyZScpO1xuICB9XG5cbiAgY29uc3QgY29tYmluZWRLZXkgPSBNUEMua2V5Q29tYmluZShrZXlTaGFyZS5wU2hhcmUsIG5TaGFyZXMpO1xuICBpZiAoY29tYmluZWRLZXkueFNoYXJlLnkgKyBjb21iaW5lZEtleS54U2hhcmUuY2hhaW5jb2RlICE9PSBjb21tb25LZXljaGFpbikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29tbW9uIGtleWNoYWlucyBkbyBub3QgbWF0Y2gnKTtcbiAgfVxuXG4gIGNvbnN0IHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsID0ge1xuICAgIHBTaGFyZToga2V5U2hhcmUucFNoYXJlLFxuICAgIGJpdGdvTlNoYXJlLFxuICAgIGJhY2t1cE5TaGFyZSxcbiAgICB1c2VyTlNoYXJlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgc2lnbmluZ01hdGVyaWFsLFxuICAgIGNvbW1vbktleWNoYWluLFxuICB9O1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgTlNoYXJlIHRvIGJlIGV4Y2hhbmdlZCB3aXRoIG90aGVyIGtleSBob2xkZXJzLlxuICogT3V0cHV0IGlzIGluIGEgZm9ybWF0IHRoYXQgaXMgdXNhYmxlIHdpdGhpbiBCaXRHbydzIGVjb3N5c3RlbS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zLmtleVNoYXJlIC0gVFNTIGtleSBzaGFyZSBvZiB0aGUgcGFydHkgcHJlcGFyaW5nIGV4Y2hhbmdlIG1hdGVyaWFsc1xuICogQHBhcmFtIHBhcmFtcy5yZWNpcGllbnRJbmRleCAtIGluZGV4IG9mIHRoZSByZWNpcGllbnQgKDEsIDIsIG9yIDMpXG4gKiBAcGFyYW0gcGFyYW1zLnJlY2lwaWVudEdwZ1B1YmxpY0FybW9yIC0gcmVjaXBpZW50J3MgcHVibGljIGdwZyBrZXkgaW4gYXJtb3IgZm9ybWF0XG4gKiBAcGFyYW0gcGFyYW1zLnNlbmRlckdwZ1ByaXZhdGVBcm1vciAtIHNlbmRlcidzIHByaXZhdGUgZ3BnIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEByZXR1cm5zIHsgRW5jcnlwdGVkTlNoYXJlIH0gZW5jcnlwdGVkIFkgU2hhcmVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuY3J5cHROU2hhcmUocGFyYW1zOiB7XG4gIGtleVNoYXJlOiBLZXlTaGFyZTtcbiAgcmVjaXBpZW50SW5kZXg6IG51bWJlcjtcbiAgcmVjaXBpZW50R3BnUHVibGljQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyR3BnUHJpdmF0ZUFybW9yOiBzdHJpbmc7XG59KTogUHJvbWlzZTxFbmNyeXB0ZWROU2hhcmU+IHtcbiAgY29uc3QgeyBrZXlTaGFyZSwgcmVjaXBpZW50SW5kZXgsIHJlY2lwaWVudEdwZ1B1YmxpY0FybW9yLCBzZW5kZXJHcGdQcml2YXRlQXJtb3IgfSA9IHBhcmFtcztcblxuICBjb25zdCBuU2hhcmUgPSBrZXlTaGFyZS5uU2hhcmVzW3JlY2lwaWVudEluZGV4XTtcbiAgaWYgKCFuU2hhcmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVjaXBpZW50Jyk7XG4gIH1cblxuICBjb25zdCBwdWJsaWNTaGFyZSA9IGtleVNoYXJlLnBTaGFyZS55O1xuICBjb25zdCBwcml2YXRlU2hhcmUgPSBuU2hhcmUudTtcblxuICBjb25zdCBlbmNyeXB0ZWRQcml2YXRlU2hhcmUgPSBhd2FpdCBlbmNyeXB0QW5kU2lnblRleHQocHJpdmF0ZVNoYXJlLCByZWNpcGllbnRHcGdQdWJsaWNBcm1vciwgc2VuZGVyR3BnUHJpdmF0ZUFybW9yKTtcblxuICByZXR1cm4ge1xuICAgIGk6IG5TaGFyZS5pLFxuICAgIGo6IG5TaGFyZS5qLFxuICAgIG46IG5TaGFyZS5uLFxuICAgIHB1YmxpY1NoYXJlLFxuICAgIGVuY3J5cHRlZFByaXZhdGVTaGFyZSxcbiAgICBjaGFpbmNvZGU6IG5TaGFyZS5jaGFpbmNvZGUsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ import * as ECDSAMethods from './ecdsa';
2
+ export * as ECDSAMethodTypes from './types';
3
+ export default ECDSAMethods;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,gBAAgB,MAAM,SAAS,CAAC;AAE5C,eAAe,YAAY,CAAC"}
@@ -0,0 +1,26 @@
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.ECDSAMethodTypes = void 0;
23
+ const ECDSAMethods = __importStar(require("./ecdsa"));
24
+ exports.ECDSAMethodTypes = __importStar(require("./types"));
25
+ exports.default = ECDSAMethods;
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBd0M7QUFFeEMsNERBQTRDO0FBRTVDLGtCQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEVDRFNBTWV0aG9kcyBmcm9tICcuL2VjZHNhJztcblxuZXhwb3J0ICogYXMgRUNEU0FNZXRob2RUeXBlcyBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgRUNEU0FNZXRob2RzO1xuIl19
@@ -0,0 +1,30 @@
1
+ import { ECDSA } from './../../../account-lib/mpc/tss';
2
+ export declare type EncryptedNShare = {
3
+ i: number;
4
+ j: number;
5
+ n: string;
6
+ publicShare: string;
7
+ encryptedPrivateShare: string;
8
+ chaincode: string;
9
+ };
10
+ export declare type DecryptableNShare = {
11
+ nShare: EncryptedNShare;
12
+ recipientPrivateArmor: string;
13
+ senderPublicArmor: string;
14
+ };
15
+ export declare type CombinedKey = {
16
+ commonKeychain: string;
17
+ signingMaterial: SigningMaterial;
18
+ };
19
+ export declare type SigningMaterial = {
20
+ pShare: ECDSA.PShare;
21
+ bitgoNShare: ECDSA.NShare;
22
+ backupNShare?: ECDSA.NShare;
23
+ userNShare?: ECDSA.NShare;
24
+ };
25
+ export declare type CreateCombinedKeyParams = {
26
+ keyShare: ECDSA.KeyShare;
27
+ encryptedNShares: DecryptableNShare[];
28
+ commonKeychain: string;
29
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/ecdsa/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAGvD,oBAAY,eAAe,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAGF,oBAAY,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAGF,oBAAY,eAAe,GAAG;IAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;CAC3B,CAAC;AAEF,oBAAY,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;IACzB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFQ0RTQSB9IGZyb20gJy4vLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5cbi8vIE5TaGFyZSB0aGF0IGhhcyBiZWVuIGVuY3J5cHRlZCBhbmQgc2lnbmVkIHZpYSBHUEdcbmV4cG9ydCB0eXBlIEVuY3J5cHRlZE5TaGFyZSA9IHtcbiAgaTogbnVtYmVyO1xuICBqOiBudW1iZXI7XG4gIG46IHN0cmluZztcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgLy8gc2lnbmVkIGFuZCBlbmNyeXB0ZWQgZ3BnIGFybW9yXG4gIGVuY3J5cHRlZFByaXZhdGVTaGFyZTogc3RyaW5nO1xuICBjaGFpbmNvZGU6IHN0cmluZztcbn07XG5cbi8vIE5TaGFyZSB3aXRoIGluZm9ybWF0aW9uIG5lZWRlZCB0byBkZWNyeXB0IGFuZCB2ZXJpZnkgYSBHUEcgbWVzYXNnZVxuZXhwb3J0IHR5cGUgRGVjcnlwdGFibGVOU2hhcmUgPSB7XG4gIG5TaGFyZTogRW5jcnlwdGVkTlNoYXJlO1xuICByZWNpcGllbnRQcml2YXRlQXJtb3I6IHN0cmluZztcbiAgc2VuZGVyUHVibGljQXJtb3I6IHN0cmluZztcbn07XG5cbi8vIEZpbmFsIFRTUyBcIktleXBhaXJcIlxuZXhwb3J0IHR5cGUgQ29tYmluZWRLZXkgPSB7XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG4gIHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsO1xufTtcblxuLy8gUHJpdmF0ZSBwb3J0aW9uIG9mIGEgVFNTIGtleSwgdGhpcyBtdXN0IGJlIGhhbmRsZWQgbGlrZSBhbnkgb3RoZXIgcHJpdmF0ZSBrZXlcbmV4cG9ydCB0eXBlIFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgcFNoYXJlOiBFQ0RTQS5QU2hhcmU7XG4gIGJpdGdvTlNoYXJlOiBFQ0RTQS5OU2hhcmU7XG4gIGJhY2t1cE5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbiAgdXNlck5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNvbWJpbmVkS2V5UGFyYW1zID0ge1xuICBrZXlTaGFyZTogRUNEU0EuS2V5U2hhcmU7XG4gIGVuY3J5cHRlZE5TaGFyZXM6IERlY3J5cHRhYmxlTlNoYXJlW107XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG59O1xuIl19
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { GShare, KeyShare, PShare, SignShare, YShare } from './../../../account-lib/mpc/tss';
3
3
  import { BitGoBase } from './../../bitgoBase';
4
- import { DecryptableYShare, CombinedKey, EncryptedYShare } from './../types';
4
+ import { DecryptableYShare, CombinedKey, EncryptedYShare } from './types';
5
5
  import { SignatureShareRecord, TxRequest } from './../../utils';
6
6
  /**
7
7
  * Combines YShares to combine the final TSS key
@@ -1 +1 @@
1
- {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAqC,eAAe,EAAE,MAAM,YAAY,CAAC;AAChH,OAAO,EAGL,oBAAoB,EAEpB,SAAS,EACV,MAAM,eAAe,CAAC;AAGvB;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8DvB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrG;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,oBAAoB,EACvC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,SAAS,EACxB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAW9G;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,oBAAoB,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B"}
1
+ {"version":3,"file":"eddsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/tss/eddsa/eddsa.ts"],"names":[],"mappings":";AAAA,OAAc,EAAE,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAU,SAAS,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,eAAe,EAAE,MAAM,SAAS,CAAC;AAE3F,OAAO,EAGL,oBAAoB,EAEpB,SAAS,EACV,MAAM,eAAe,CAAC;AAGvB;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,iBAAiB,EAAE,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CA8DvB;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAQrG;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,SAAS,EACxB,iBAAiB,EAAE,oBAAoB,EACvC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,SAAS,EACxB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAW9G;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,oBAAoB,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAQ/B;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B"}