@bitgo/sdk-core 5.1.0 → 6.0.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 (71) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +1 -1
  3. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -1
  4. package/dist/src/account-lib/mpc/curves/baseCurve.js +1 -1
  5. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +1 -0
  6. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -1
  7. package/dist/src/account-lib/mpc/curves/ed25519.js +4 -1
  8. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  9. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  10. package/dist/src/account-lib/mpc/index.js +3 -2
  11. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +13 -3
  12. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  13. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +277 -44
  14. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +1 -0
  15. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -1
  16. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +3 -2
  17. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +63 -0
  18. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -0
  19. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +279 -0
  20. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +79 -4
  21. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  22. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  23. package/dist/src/account-lib/mpc/tss/index.d.ts +2 -2
  24. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -1
  25. package/dist/src/account-lib/mpc/tss/index.js +3 -2
  26. package/dist/src/bitgo/environments.js +2 -2
  27. package/dist/src/bitgo/keychain/iKeychains.d.ts +3 -2
  28. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  29. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  30. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  31. package/dist/src/bitgo/keychain/keychains.js +5 -2
  32. package/dist/src/bitgo/tss/common.d.ts +12 -1
  33. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  34. package/dist/src/bitgo/tss/common.js +30 -2
  35. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +18 -5
  36. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  37. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +161 -19
  38. package/dist/src/bitgo/tss/ecdsa/types.d.ts +2 -0
  39. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  40. package/dist/src/bitgo/tss/ecdsa/types.js +1 -1
  41. package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -0
  42. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  43. package/dist/src/bitgo/utils/mpcUtils.js +1 -1
  44. package/dist/src/bitgo/utils/opengpgUtils.d.ts +8 -2
  45. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  46. package/dist/src/bitgo/utils/opengpgUtils.js +31 -8
  47. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +5 -4
  48. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  49. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +4 -3
  50. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +7 -1
  51. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  52. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  53. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +26 -11
  54. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  55. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +142 -59
  56. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +5 -4
  57. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  58. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  59. package/dist/src/bitgo/wallet/iWallet.d.ts +10 -1
  60. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  61. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  62. package/dist/src/bitgo/wallet/iWallets.d.ts +4 -2
  63. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  64. package/dist/src/bitgo/wallet/iWallets.js +3 -1
  65. package/dist/src/bitgo/wallet/wallet.d.ts +8 -1
  66. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  67. package/dist/src/bitgo/wallet/wallet.js +23 -2
  68. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  69. package/dist/src/bitgo/wallet/wallets.js +7 -1
  70. package/dist/tsconfig.tsbuildinfo +107 -78
  71. package/package.json +5 -4
@@ -13,4 +13,4 @@ var ReceivedShareType;
13
13
  ReceivedShareType["DShare"] = "DShare";
14
14
  ReceivedShareType["Signature"] = "Signature";
15
15
  })(ReceivedShareType = exports.ReceivedShareType || (exports.ReceivedShareType = {}));
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9CQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7SUFDbkIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0FBRUQsSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLHNDQUFpQixDQUFBO0lBQ2pCLDRDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFKVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUk1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVDRFNBIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcblxuZXhwb3J0IHR5cGUgTlNoYXJlID0gRUNEU0EuTlNoYXJlO1xuZXhwb3J0IHR5cGUgS2V5U2hhcmUgPSBFQ0RTQS5LZXlTaGFyZTtcbmV4cG9ydCB0eXBlIFhTaGFyZSA9IEVDRFNBLlhTaGFyZTtcbmV4cG9ydCB0eXBlIFlTaGFyZSA9IEVDRFNBLllTaGFyZTtcbmV4cG9ydCB0eXBlIFNpZ25TaGFyZSA9IEVDRFNBLlNpZ25TaGFyZVJUO1xuZXhwb3J0IHR5cGUgS1NoYXJlID0gRUNEU0EuS1NoYXJlO1xuZXhwb3J0IHR5cGUgV1NoYXJlID0gRUNEU0EuV1NoYXJlO1xuZXhwb3J0IHR5cGUgQVNoYXJlID0gRUNEU0EuQVNoYXJlO1xuZXhwb3J0IHR5cGUgR1NoYXJlID0gRUNEU0EuR1NoYXJlO1xuZXhwb3J0IHR5cGUgT1NoYXJlID0gRUNEU0EuT1NoYXJlO1xuZXhwb3J0IHR5cGUgRFNoYXJlID0gRUNEU0EuRFNoYXJlO1xuZXhwb3J0IHR5cGUgQ3JlYXRlVXNlckdhbW1hQW5kTXVTaGFyZVJUID0gRUNEU0EuU2lnbkNvbnZlcnRSVDtcbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJPbWljcm9uQW5kRGVsdGFTaGFyZVJUID0gRUNEU0EuU2lnbkNvbWJpbmVSVDtcbmV4cG9ydCB0eXBlIFNpZ25hdHVyZVNoYXJlID0gRUNEU0EuU1NoYXJlO1xuZXhwb3J0IHR5cGUgU2lnbmF0dXJlID0gRUNEU0EuU2lnbmF0dXJlO1xuZXhwb3J0IHR5cGUgQlNoYXJlID0gRUNEU0EuQlNoYXJlO1xuZXhwb3J0IHR5cGUgU1NoYXJlID0gRUNEU0EuU1NoYXJlO1xuXG5leHBvcnQgZW51bSBTZW5kU2hhcmVUeXBlIHtcbiAgS1NoYXJlID0gJ0tTaGFyZScsXG4gIE1VU2hhcmUgPSAnTVVTaGFyZScsXG4gIFNTaGFyZSA9ICdTU2hhcmUnLFxufVxuXG5leHBvcnQgZW51bSBSZWNlaXZlZFNoYXJlVHlwZSB7XG4gIEFTaGFyZSA9ICdBU2hhcmUnLFxuICBEU2hhcmUgPSAnRFNoYXJlJyxcbiAgU2lnbmF0dXJlID0gJ1NpZ25hdHVyZScsXG59XG5cbmV4cG9ydCB0eXBlIEdldFNoYXJlRnJvbUJpdGdvUlQgPSBEU2hhcmUgfCBBU2hhcmU7XG4vLyBOU2hhcmUgdGhhdCBoYXMgYmVlbiBlbmNyeXB0ZWQgYW5kIHNpZ25lZCB2aWEgR1BHXG5leHBvcnQgdHlwZSBFbmNyeXB0ZWROU2hhcmUgPSB7XG4gIGk6IG51bWJlcjtcbiAgajogbnVtYmVyO1xuICBwdWJsaWNTaGFyZTogc3RyaW5nO1xuICAvLyBzaWduZWQgYW5kIGVuY3J5cHRlZCBncGcgYXJtb3JcbiAgZW5jcnlwdGVkUHJpdmF0ZVNoYXJlOiBzdHJpbmc7XG4gIG46IHN0cmluZztcbiAgdnNzUHJvb2Y/OiBzdHJpbmc7XG4gIC8vIHUgdmFsdWUgcHJvb2ZcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y/OiBzdHJpbmc7XG59O1xuXG4vLyBOU2hhcmUgd2l0aCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gZGVjcnlwdCBhbmQgdmVyaWZ5IGEgR1BHIG1lc2FzZ2VcbmV4cG9ydCB0eXBlIERlY3J5cHRhYmxlTlNoYXJlID0ge1xuICBuU2hhcmU6IEVuY3J5cHRlZE5TaGFyZTtcbiAgcmVjaXBpZW50UHJpdmF0ZUFybW9yOiBzdHJpbmc7XG4gIHNlbmRlclB1YmxpY0FybW9yOiBzdHJpbmc7XG4gIGlzYnM1OEVuY29kZWQ/OiBib29sZWFuO1xufTtcblxuLy8gRmluYWwgVFNTIFwiS2V5cGFpclwiXG5leHBvcnQgdHlwZSBDb21iaW5lZEtleSA9IHtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbiAgc2lnbmluZ01hdGVyaWFsOiBTaWduaW5nTWF0ZXJpYWw7XG59O1xuXG4vLyBQcml2YXRlIHBvcnRpb24gb2YgYSBUU1Mga2V5LCB0aGlzIG11c3QgYmUgaGFuZGxlZCBsaWtlIGFueSBvdGhlciBwcml2YXRlIGtleVxuZXhwb3J0IHR5cGUgU2lnbmluZ01hdGVyaWFsID0ge1xuICBwU2hhcmU6IEVDRFNBLlBTaGFyZTtcbiAgYml0Z29OU2hhcmU6IEVDRFNBLk5TaGFyZTtcbiAgYmFja3VwTlNoYXJlPzogRUNEU0EuTlNoYXJlO1xuICB1c2VyTlNoYXJlPzogRUNEU0EuTlNoYXJlO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ29tYmluZWRLZXlQYXJhbXMgPSB7XG4gIGtleVNoYXJlOiBFQ0RTQS5LZXlTaGFyZTtcbiAgZW5jcnlwdGVkTlNoYXJlczogRGVjcnlwdGFibGVOU2hhcmVbXTtcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNlbmRTaGFyZVRvQml0Z29SVCA9IEFTaGFyZSB8IERTaGFyZSB8IFNTaGFyZSB8IFNpZ25hdHVyZTtcbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHNzL2VjZHNhL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNCQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsa0NBQWlCLENBQUE7SUFDakIsb0NBQW1CLENBQUE7SUFDbkIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0FBRUQsSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLHNDQUFpQixDQUFBO0lBQ2pCLHNDQUFpQixDQUFBO0lBQ2pCLDRDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFKVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQUk1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVDRFNBIH0gZnJvbSAnLi8uLi8uLi8uLi9hY2NvdW50LWxpYi9tcGMvdHNzJztcblxuZXhwb3J0IHR5cGUgTlNoYXJlID0gRUNEU0EuTlNoYXJlO1xuZXhwb3J0IHR5cGUgS2V5U2hhcmUgPSBFQ0RTQS5LZXlTaGFyZTtcbmV4cG9ydCB0eXBlIFhTaGFyZSA9IEVDRFNBLlhTaGFyZTtcbmV4cG9ydCB0eXBlIFhTaGFyZVdpdGhOVGlsZGUgPSBFQ0RTQS5YU2hhcmVXaXRoTlRpbGRlO1xuZXhwb3J0IHR5cGUgWVNoYXJlID0gRUNEU0EuWVNoYXJlO1xuZXhwb3J0IHR5cGUgWVNoYXJlV2l0aE5UaWxkZSA9IEVDRFNBLllTaGFyZVdpdGhOVGlsZGU7XG5leHBvcnQgdHlwZSBTaWduU2hhcmUgPSBFQ0RTQS5TaWduU2hhcmVSVDtcbmV4cG9ydCB0eXBlIEtTaGFyZSA9IEVDRFNBLktTaGFyZTtcbmV4cG9ydCB0eXBlIFdTaGFyZSA9IEVDRFNBLldTaGFyZTtcbmV4cG9ydCB0eXBlIEFTaGFyZSA9IEVDRFNBLkFTaGFyZTtcbmV4cG9ydCB0eXBlIEdTaGFyZSA9IEVDRFNBLkdTaGFyZTtcbmV4cG9ydCB0eXBlIE9TaGFyZSA9IEVDRFNBLk9TaGFyZTtcbmV4cG9ydCB0eXBlIERTaGFyZSA9IEVDRFNBLkRTaGFyZTtcbmV4cG9ydCB0eXBlIENyZWF0ZVVzZXJHYW1tYUFuZE11U2hhcmVSVCA9IEVDRFNBLlNpZ25Db252ZXJ0UlQ7XG5leHBvcnQgdHlwZSBDcmVhdGVVc2VyT21pY3JvbkFuZERlbHRhU2hhcmVSVCA9IEVDRFNBLlNpZ25Db21iaW5lUlQ7XG5leHBvcnQgdHlwZSBTaWduYXR1cmVTaGFyZSA9IEVDRFNBLlNTaGFyZTtcbmV4cG9ydCB0eXBlIFNpZ25hdHVyZSA9IEVDRFNBLlNpZ25hdHVyZTtcbmV4cG9ydCB0eXBlIEJTaGFyZSA9IEVDRFNBLkJTaGFyZTtcbmV4cG9ydCB0eXBlIFNTaGFyZSA9IEVDRFNBLlNTaGFyZTtcblxuZXhwb3J0IGVudW0gU2VuZFNoYXJlVHlwZSB7XG4gIEtTaGFyZSA9ICdLU2hhcmUnLFxuICBNVVNoYXJlID0gJ01VU2hhcmUnLFxuICBTU2hhcmUgPSAnU1NoYXJlJyxcbn1cblxuZXhwb3J0IGVudW0gUmVjZWl2ZWRTaGFyZVR5cGUge1xuICBBU2hhcmUgPSAnQVNoYXJlJyxcbiAgRFNoYXJlID0gJ0RTaGFyZScsXG4gIFNpZ25hdHVyZSA9ICdTaWduYXR1cmUnLFxufVxuXG5leHBvcnQgdHlwZSBHZXRTaGFyZUZyb21CaXRnb1JUID0gRFNoYXJlIHwgQVNoYXJlO1xuLy8gTlNoYXJlIHRoYXQgaGFzIGJlZW4gZW5jcnlwdGVkIGFuZCBzaWduZWQgdmlhIEdQR1xuZXhwb3J0IHR5cGUgRW5jcnlwdGVkTlNoYXJlID0ge1xuICBpOiBudW1iZXI7XG4gIGo6IG51bWJlcjtcbiAgcHVibGljU2hhcmU6IHN0cmluZztcbiAgLy8gc2lnbmVkIGFuZCBlbmNyeXB0ZWQgZ3BnIGFybW9yXG4gIGVuY3J5cHRlZFByaXZhdGVTaGFyZTogc3RyaW5nO1xuICBuOiBzdHJpbmc7XG4gIHZzc1Byb29mPzogc3RyaW5nO1xuICAvLyB1IHZhbHVlIHByb29mXG4gIHByaXZhdGVTaGFyZVByb29mPzogc3RyaW5nO1xufTtcblxuLy8gTlNoYXJlIHdpdGggaW5mb3JtYXRpb24gbmVlZGVkIHRvIGRlY3J5cHQgYW5kIHZlcmlmeSBhIEdQRyBtZXNhc2dlXG5leHBvcnQgdHlwZSBEZWNyeXB0YWJsZU5TaGFyZSA9IHtcbiAgblNoYXJlOiBFbmNyeXB0ZWROU2hhcmU7XG4gIHJlY2lwaWVudFByaXZhdGVBcm1vcjogc3RyaW5nO1xuICBzZW5kZXJQdWJsaWNBcm1vcjogc3RyaW5nO1xuICBpc2JzNThFbmNvZGVkPzogYm9vbGVhbjtcbn07XG5cbi8vIEZpbmFsIFRTUyBcIktleXBhaXJcIlxuZXhwb3J0IHR5cGUgQ29tYmluZWRLZXkgPSB7XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG4gIHNpZ25pbmdNYXRlcmlhbDogU2lnbmluZ01hdGVyaWFsO1xufTtcblxuLy8gUHJpdmF0ZSBwb3J0aW9uIG9mIGEgVFNTIGtleSwgdGhpcyBtdXN0IGJlIGhhbmRsZWQgbGlrZSBhbnkgb3RoZXIgcHJpdmF0ZSBrZXlcbmV4cG9ydCB0eXBlIFNpZ25pbmdNYXRlcmlhbCA9IHtcbiAgcFNoYXJlOiBFQ0RTQS5QU2hhcmU7XG4gIGJpdGdvTlNoYXJlOiBFQ0RTQS5OU2hhcmU7XG4gIGJhY2t1cE5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbiAgdXNlck5TaGFyZT86IEVDRFNBLk5TaGFyZTtcbn07XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUNvbWJpbmVkS2V5UGFyYW1zID0ge1xuICBrZXlTaGFyZTogRUNEU0EuS2V5U2hhcmU7XG4gIGVuY3J5cHRlZE5TaGFyZXM6IERlY3J5cHRhYmxlTlNoYXJlW107XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZW5kU2hhcmVUb0JpdGdvUlQgPSBBU2hhcmUgfCBEU2hhcmUgfCBTU2hhcmUgfCBTaWduYXR1cmU7XG4iXX0=
@@ -2,6 +2,7 @@ import { SerializedKeyPair } from 'openpgp';
2
2
  import { IBaseCoin, KeychainsTriplet } from '../baseCoin';
3
3
  import { BitGoBase } from '../bitgoBase';
4
4
  import { Keychain, KeyType } from '../keychain';
5
+ import { BackupProvider } from '../wallet';
5
6
  import { PopulatedIntent, PrebuildTransactionWithIntentOptions } from './tss/baseTypes';
6
7
  export interface MpcKeyShare {
7
8
  publicShare: string;
@@ -26,6 +27,7 @@ export declare abstract class MpcUtils {
26
27
  passphrase: string;
27
28
  enterprise?: string;
28
29
  originalPasscodeEncryptionCode?: string;
30
+ backupProvider?: BackupProvider;
29
31
  }): Promise<KeychainsTriplet>;
30
32
  /**
31
33
  * This function would be responsible for populating intents
@@ -1 +1 @@
1
- {"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAmB,eAAe,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;KACzC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;CA+EnG"}
1
+ {"version":3,"file":"mpcUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/mpcUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwC,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAsB,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAmB,eAAe,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AAEzG,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;cAKjC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBjG,uBAAuB,CACrC,UAAU,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,WAAW,EAC3B,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAkCpB;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,8BAA8B,CAAC,EAAE,MAAM,CAAC;QACxC,cAAc,CAAC,EAAE,cAAc,CAAC;KACjC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE7B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,oCAAoC,GAAG,eAAe;CA+EnG"}
@@ -138,4 +138,4 @@ class MpcUtils {
138
138
  }
139
139
  }
140
140
  exports.MpcUtils = MpcUtils;
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBSWxGLGlEQUFnRTtBQVVoRSxNQUFzQixRQUFRO0lBSTVCLFlBQVksS0FBZ0IsRUFBRSxRQUFtQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsVUFBcUM7UUFDN0YsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHFCQUFXLENBQUM7WUFDNUMsY0FBYyxFQUFFLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLGlCQUFPLENBQUM7WUFDWixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDO1FBRVAsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRVMsS0FBSyxDQUFDLHVCQUF1QixDQUNyQyxVQUFxQyxFQUNyQyxZQUF1QyxFQUN2QyxZQUF5QixFQUN6QixjQUEyQixFQUMzQixPQUFnQixFQUNoQixVQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLGdDQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQVcsQ0FBQyxZQUFZLENB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TSxDQUFDLFlBQVk7Z0JBQ2pDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTthQUM5QixDQUFDO1NBQ0g7UUFFRCxPQUFPO1lBQ0wsR0FBRyxVQUFVO1lBQ2IsSUFBSSxFQUFFLE1BQUEsTUFBTSxDQUFDLElBQUksMENBQUUsS0FBSztZQUN4QixLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDdkIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO1NBQ2xDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF0S0QsNEJBc0tDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgZGVjcnlwdCwgcmVhZE1lc3NhZ2UsIHJlYWRQcml2YXRlS2V5LCBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEFkZEtleWNoYWluT3B0aW9ucywgS2V5Y2hhaW4sIEtleVR5cGUgfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBlbmNyeXB0VGV4dCwgZ2V0Qml0Z29HcGdQdWJLZXkgfSBmcm9tICcuL29wZW5ncGdVdGlscyc7XG5pbXBvcnQgeyBJbnRlbnRSZWNpcGllbnQsIFBvcHVsYXRlZEludGVudCwgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zIH0gZnJvbSAnLi90c3MvYmFzZVR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBNcGNLZXlTaGFyZSB7XG4gIHB1YmxpY1NoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZTogc3RyaW5nO1xuICBwcml2YXRlU2hhcmVQcm9vZj86IHN0cmluZztcbiAgdnNzUHJvb2Y/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNcGNVdGlscyB7XG4gIHByb3RlY3RlZCBiaXRnbzogQml0R29CYXNlO1xuICBwcm90ZWN0ZWQgYmFzZUNvaW46IElCYXNlQ29pbjtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBiYXNlQ29pbjogSUJhc2VDb2luKSB7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAgIHRoaXMuYmFzZUNvaW4gPSBiYXNlQ29pbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBkZWNyeXB0UHJpdmF0ZVNoYXJlKHByaXZhdGVTaGFyZTogc3RyaW5nLCB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcml2YXRlU2hhcmVNZXNzYWdlID0gYXdhaXQgcmVhZE1lc3NhZ2Uoe1xuICAgICAgYXJtb3JlZE1lc3NhZ2U6IHByaXZhdGVTaGFyZSxcbiAgICB9KTtcbiAgICBjb25zdCB1c2VyR3BnUHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogdXNlckdwZ0tleS5wcml2YXRlS2V5IH0pO1xuXG4gICAgY29uc3QgZGVjcnlwdGVkUHJpdmF0ZVNoYXJlID0gKFxuICAgICAgYXdhaXQgZGVjcnlwdCh7XG4gICAgICAgIG1lc3NhZ2U6IHByaXZhdGVTaGFyZU1lc3NhZ2UsXG4gICAgICAgIGRlY3J5cHRpb25LZXlzOiBbdXNlckdwZ1ByaXZhdGVLZXldLFxuICAgICAgICBmb3JtYXQ6ICd1dGY4JyxcbiAgICAgIH0pXG4gICAgKS5kYXRhO1xuXG4gICAgcmV0dXJuIGRlY3J5cHRlZFByaXZhdGVTaGFyZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjcmVhdGVCaXRnb0tleWNoYWluSW5XUChcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIGJhY2t1cEdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICB1c2VyS2V5U2hhcmU6IE1wY0tleVNoYXJlLFxuICAgIGJhY2t1cEtleVNoYXJlOiBNcGNLZXlTaGFyZSxcbiAgICBrZXlUeXBlOiBLZXlUeXBlLFxuICAgIGVudGVycHJpc2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gYXdhaXQgZ2V0Qml0Z29HcGdQdWJLZXkodGhpcy5iaXRnbyk7XG4gICAgY29uc3QgZW5jVXNlclRvQml0R29NZXNzYWdlID0gYXdhaXQgZW5jcnlwdFRleHQodXNlcktleVNoYXJlLnByaXZhdGVTaGFyZSwgYml0Z29LZXkpO1xuICAgIGNvbnN0IGVuY0JhY2t1cFRvQml0R29NZXNzYWdlID0gYXdhaXQgZW5jcnlwdFRleHQoYmFja3VwS2V5U2hhcmUucHJpdmF0ZVNoYXJlLCBiaXRnb0tleSk7XG5cbiAgICBjb25zdCBjcmVhdGVCaXRHb01QQ1BhcmFtczogQWRkS2V5Y2hhaW5PcHRpb25zID0ge1xuICAgICAga2V5VHlwZSxcbiAgICAgIHNvdXJjZTogJ2JpdGdvJyxcbiAgICAgIGtleVNoYXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogJ3VzZXInLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiB1c2VyS2V5U2hhcmUucHVibGljU2hhcmUsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlOiBlbmNVc2VyVG9CaXRHb01lc3NhZ2UsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IHVzZXJLZXlTaGFyZS5wcml2YXRlU2hhcmVQcm9vZixcbiAgICAgICAgICB2c3NQcm9vZjogdXNlcktleVNoYXJlLnZzc1Byb29mLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbTogJ2JhY2t1cCcsXG4gICAgICAgICAgdG86ICdiaXRnbycsXG4gICAgICAgICAgcHVibGljU2hhcmU6IGJhY2t1cEtleVNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZTogZW5jQmFja3VwVG9CaXRHb01lc3NhZ2UsXG4gICAgICAgICAgcHJpdmF0ZVNoYXJlUHJvb2Y6IGJhY2t1cEtleVNoYXJlLnByaXZhdGVTaGFyZVByb29mLFxuICAgICAgICAgIHZzc1Byb29mOiBiYWNrdXBLZXlTaGFyZS52c3NQcm9vZixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB1c2VyR1BHUHVibGljS2V5OiB1c2VyR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGJhY2t1cEdQR1B1YmxpY0tleTogYmFja3VwR3BnS2V5LnB1YmxpY0tleSxcbiAgICAgIGVudGVycHJpc2U6IGVudGVycHJpc2UsXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJhc2VDb2luLmtleWNoYWlucygpLmFkZChjcmVhdGVCaXRHb01QQ1BhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBVc2VyLCBCYWNrdXAsIGFuZCBCaXRHbyBNUEMgS2V5Y2hhaW5zLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zLnBhc3NwaHJhc2UgLSBwYXNzcGhyYXNlIHVzZWQgdG8gZW5jcnlwdCBzaWduaW5nIG1hdGVyaWFscyBjcmVhdGVkIGZvciBVc2VyIGFuZCBCYWNrdXBcbiAgICogQHBhcmFtIHBhcmFtcy5lbnRlcnByaXNlIC0gb3B0aW9uYWwgZW50ZXJwcmlzZSBpZCB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIEJpdEdvIEtleWNoYWluXG4gICAqIEBwYXJhbSBwYXJhbXMub3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlIC0gb3B0aW9uYWwgZW5jcnlwdGlvbiBjb2RlIHVzZWQgdG8gcmVzZXQgdGhlIHVzZXIncyBwYXNzd29yZCwgaWYgYWJzZW50LCBwYXNzd29yZCByZWNvdmVyeSB3aWxsIG5vdCB3b3JrXG4gICAqL1xuICBhYnN0cmFjdCBjcmVhdGVLZXljaGFpbnMocGFyYW1zOiB7XG4gICAgcGFzc3BocmFzZTogc3RyaW5nO1xuICAgIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gICAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PjtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiB3b3VsZCBiZSByZXNwb25zaWJsZSBmb3IgcG9wdWxhdGluZyBpbnRlbnRzXG4gICAqIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGNvaW4gLyBzaWcgc2NoZW1lIHRoZSBjb2luIHVzZXNcbiAgICogQHBhcmFtIHtJQmFzZUNvaW59IGJhc2VDb2luXG4gICAqIEBwYXJhbSB7UHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zfSBwYXJhbXNcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKi9cbiAgcG9wdWxhdGVJbnRlbnQoYmFzZUNvaW46IElCYXNlQ29pbiwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiBQb3B1bGF0ZWRJbnRlbnQge1xuICAgIGNvbnN0IGNoYWluID0gdGhpcy5iYXNlQ29pbi5nZXRDaGFpbigpO1xuXG4gICAgaWYgKCFbJ2FjY2VsZXJhdGlvbicsICdmaWxsTm9uY2UnLCAndHJhbnNmZXJUb2tlbiddLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC50b2tlbkRhdGEgPSB0b2tlbkRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0dGVkUmVjaXBpZW50O1xuICAgIH0pO1xuXG4gICAgY29uc3QgYmFzZUludGVudCA9IHtcbiAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgc2VxdWVuY2VJZDogcGFyYW1zLnNlcXVlbmNlSWQsXG4gICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICByZWNpcGllbnRzOiBpbnRlbnRSZWNpcGllbnRzLFxuICAgIH07XG5cbiAgICBpZiAoYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdldGgnIHx8IGJhc2VDb2luLmdldEZhbWlseSgpID09PSAncG9seWdvbicgfHwgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdic2MnKSB7XG4gICAgICBzd2l0Y2ggKHBhcmFtcy5pbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3BheW1lbnQnOlxuICAgICAgICBjYXNlICd0cmFuc2ZlclRva2VuJzpcbiAgICAgICAgY2FzZSAnZmlsbE5vbmNlJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHNlbGZTZW5kOiBwYXJhbXMuc2VsZlNlbmQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYWNjZWxlcmF0aW9uJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHR4aWQ6IHBhcmFtcy5sb3dGZWVUeGlkLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGludGVudCB0eXBlICR7cGFyYW1zLmludGVudFR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5mZWVPcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgfTtcbiAgfVxufVxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBjVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvbXBjVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxvREFBNEI7QUFDNUIscUNBQWtGO0FBS2xGLGlEQUFnRTtBQVVoRSxNQUFzQixRQUFRO0lBSTVCLFlBQVksS0FBZ0IsRUFBRSxRQUFtQjtRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQW9CLEVBQUUsVUFBcUM7UUFDN0YsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLHFCQUFXLENBQUM7WUFDNUMsY0FBYyxFQUFFLFlBQVk7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLHdCQUFjLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFdEYsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixNQUFNLGlCQUFPLENBQUM7WUFDWixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLGNBQWMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFDO1FBRVAsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRVMsS0FBSyxDQUFDLHVCQUF1QixDQUNyQyxVQUFxQyxFQUNyQyxZQUF1QyxFQUN2QyxZQUF5QixFQUN6QixjQUEyQixFQUMzQixPQUFnQixFQUNoQixVQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBRyxNQUFNLGdDQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sMEJBQVcsQ0FBQyxZQUFZLENB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QU0sQ0FBQyxZQUFZO2dCQUNqQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7YUFDOUIsQ0FBQztTQUNIO1FBRUQsT0FBTztZQUNMLEdBQUcsVUFBVTtZQUNiLElBQUksRUFBRSxNQUFBLE1BQU0sQ0FBQyxJQUFJLDBDQUFFLEtBQUs7WUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3ZCLFlBQVksRUFBRSxNQUFNLENBQUMsWUFBWTtTQUNsQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdktELDRCQXVLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGRlY3J5cHQsIHJlYWRNZXNzYWdlLCByZWFkUHJpdmF0ZUtleSwgU2VyaWFsaXplZEtleVBhaXIgfSBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBBZGRLZXljaGFpbk9wdGlvbnMsIEtleWNoYWluLCBLZXlUeXBlIH0gZnJvbSAnLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgQmFja3VwUHJvdmlkZXIgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHsgZW5jcnlwdFRleHQsIGdldEJpdGdvR3BnUHViS2V5IH0gZnJvbSAnLi9vcGVuZ3BnVXRpbHMnO1xuaW1wb3J0IHsgSW50ZW50UmVjaXBpZW50LCBQb3B1bGF0ZWRJbnRlbnQsIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyB9IGZyb20gJy4vdHNzL2Jhc2VUeXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXBjS2V5U2hhcmUge1xuICBwdWJsaWNTaGFyZTogc3RyaW5nO1xuICBwcml2YXRlU2hhcmU6IHN0cmluZztcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y/OiBzdHJpbmc7XG4gIHZzc1Byb29mPzogc3RyaW5nO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTXBjVXRpbHMge1xuICBwcm90ZWN0ZWQgYml0Z286IEJpdEdvQmFzZTtcbiAgcHJvdGVjdGVkIGJhc2VDb2luOiBJQmFzZUNvaW47XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgYmFzZUNvaW46IElCYXNlQ29pbikge1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmJhc2VDb2luID0gYmFzZUNvaW47XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZGVjcnlwdFByaXZhdGVTaGFyZShwcml2YXRlU2hhcmU6IHN0cmluZywgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcHJpdmF0ZVNoYXJlTWVzc2FnZSA9IGF3YWl0IHJlYWRNZXNzYWdlKHtcbiAgICAgIGFybW9yZWRNZXNzYWdlOiBwcml2YXRlU2hhcmUsXG4gICAgfSk7XG4gICAgY29uc3QgdXNlckdwZ1ByaXZhdGVLZXkgPSBhd2FpdCByZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHVzZXJHcGdLZXkucHJpdmF0ZUtleSB9KTtcblxuICAgIGNvbnN0IGRlY3J5cHRlZFByaXZhdGVTaGFyZSA9IChcbiAgICAgIGF3YWl0IGRlY3J5cHQoe1xuICAgICAgICBtZXNzYWdlOiBwcml2YXRlU2hhcmVNZXNzYWdlLFxuICAgICAgICBkZWNyeXB0aW9uS2V5czogW3VzZXJHcGdQcml2YXRlS2V5XSxcbiAgICAgICAgZm9ybWF0OiAndXRmOCcsXG4gICAgICB9KVxuICAgICkuZGF0YTtcblxuICAgIHJldHVybiBkZWNyeXB0ZWRQcml2YXRlU2hhcmU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQml0Z29LZXljaGFpbkluV1AoXG4gICAgdXNlckdwZ0tleTogU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPixcbiAgICBiYWNrdXBHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgdXNlcktleVNoYXJlOiBNcGNLZXlTaGFyZSxcbiAgICBiYWNrdXBLZXlTaGFyZTogTXBjS2V5U2hhcmUsXG4gICAga2V5VHlwZTogS2V5VHlwZSxcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nXG4gICk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgICBjb25zdCBiaXRnb0tleSA9IGF3YWl0IGdldEJpdGdvR3BnUHViS2V5KHRoaXMuYml0Z28pO1xuICAgIGNvbnN0IGVuY1VzZXJUb0JpdEdvTWVzc2FnZSA9IGF3YWl0IGVuY3J5cHRUZXh0KHVzZXJLZXlTaGFyZS5wcml2YXRlU2hhcmUsIGJpdGdvS2V5KTtcbiAgICBjb25zdCBlbmNCYWNrdXBUb0JpdEdvTWVzc2FnZSA9IGF3YWl0IGVuY3J5cHRUZXh0KGJhY2t1cEtleVNoYXJlLnByaXZhdGVTaGFyZSwgYml0Z29LZXkpO1xuXG4gICAgY29uc3QgY3JlYXRlQml0R29NUENQYXJhbXM6IEFkZEtleWNoYWluT3B0aW9ucyA9IHtcbiAgICAgIGtleVR5cGUsXG4gICAgICBzb3VyY2U6ICdiaXRnbycsXG4gICAgICBrZXlTaGFyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICd1c2VyJyxcbiAgICAgICAgICB0bzogJ2JpdGdvJyxcbiAgICAgICAgICBwdWJsaWNTaGFyZTogdXNlcktleVNoYXJlLnB1YmxpY1NoYXJlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZTogZW5jVXNlclRvQml0R29NZXNzYWdlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZVByb29mOiB1c2VyS2V5U2hhcmUucHJpdmF0ZVNoYXJlUHJvb2YsXG4gICAgICAgICAgdnNzUHJvb2Y6IHVzZXJLZXlTaGFyZS52c3NQcm9vZixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb206ICdiYWNrdXAnLFxuICAgICAgICAgIHRvOiAnYml0Z28nLFxuICAgICAgICAgIHB1YmxpY1NoYXJlOiBiYWNrdXBLZXlTaGFyZS5wdWJsaWNTaGFyZSxcbiAgICAgICAgICBwcml2YXRlU2hhcmU6IGVuY0JhY2t1cFRvQml0R29NZXNzYWdlLFxuICAgICAgICAgIHByaXZhdGVTaGFyZVByb29mOiBiYWNrdXBLZXlTaGFyZS5wcml2YXRlU2hhcmVQcm9vZixcbiAgICAgICAgICB2c3NQcm9vZjogYmFja3VwS2V5U2hhcmUudnNzUHJvb2YsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdXNlckdQR1B1YmxpY0tleTogdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBiYWNrdXBHUEdQdWJsaWNLZXk6IGJhY2t1cEdwZ0tleS5wdWJsaWNLZXksXG4gICAgICBlbnRlcnByaXNlOiBlbnRlcnByaXNlLFxuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iYXNlQ29pbi5rZXljaGFpbnMoKS5hZGQoY3JlYXRlQml0R29NUENQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgVXNlciwgQmFja3VwLCBhbmQgQml0R28gTVBDIEtleWNoYWlucy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcy5wYXNzcGhyYXNlIC0gcGFzc3BocmFzZSB1c2VkIHRvIGVuY3J5cHQgc2lnbmluZyBtYXRlcmlhbHMgY3JlYXRlZCBmb3IgVXNlciBhbmQgQmFja3VwXG4gICAqIEBwYXJhbSBwYXJhbXMuZW50ZXJwcmlzZSAtIG9wdGlvbmFsIGVudGVycHJpc2UgaWQgdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBCaXRHbyBLZXljaGFpblxuICAgKiBAcGFyYW0gcGFyYW1zLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSAtIG9wdGlvbmFsIGVuY3J5cHRpb24gY29kZSB1c2VkIHRvIHJlc2V0IHRoZSB1c2VyJ3MgcGFzc3dvcmQsIGlmIGFic2VudCwgcGFzc3dvcmQgcmVjb3Zlcnkgd2lsbCBub3Qgd29ya1xuICAgKi9cbiAgYWJzdHJhY3QgY3JlYXRlS2V5Y2hhaW5zKHBhcmFtczoge1xuICAgIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgICBlbnRlcnByaXNlPzogc3RyaW5nO1xuICAgIG9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgICBiYWNrdXBQcm92aWRlcj86IEJhY2t1cFByb3ZpZGVyO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PjtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiB3b3VsZCBiZSByZXNwb25zaWJsZSBmb3IgcG9wdWxhdGluZyBpbnRlbnRzXG4gICAqIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGNvaW4gLyBzaWcgc2NoZW1lIHRoZSBjb2luIHVzZXNcbiAgICogQHBhcmFtIHtJQmFzZUNvaW59IGJhc2VDb2luXG4gICAqIEBwYXJhbSB7UHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zfSBwYXJhbXNcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHVua25vd24+fVxuICAgKi9cbiAgcG9wdWxhdGVJbnRlbnQoYmFzZUNvaW46IElCYXNlQ29pbiwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiBQb3B1bGF0ZWRJbnRlbnQge1xuICAgIGNvbnN0IGNoYWluID0gdGhpcy5iYXNlQ29pbi5nZXRDaGFpbigpO1xuXG4gICAgaWYgKCFbJ2FjY2VsZXJhdGlvbicsICdmaWxsTm9uY2UnLCAndHJhbnNmZXJUb2tlbiddLmluY2x1ZGVzKHBhcmFtcy5pbnRlbnRUeXBlKSkge1xuICAgICAgYXNzZXJ0KHBhcmFtcy5yZWNpcGllbnRzLCBgJ3JlY2lwaWVudHMnIGlzIGEgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAke3BhcmFtcy5pbnRlbnRUeXBlfSBpbnRlbnRgKTtcbiAgICB9XG4gICAgY29uc3QgaW50ZW50UmVjaXBpZW50cyA9IHBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0dGVkUmVjaXBpZW50OiBJbnRlbnRSZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MgfSxcbiAgICAgICAgYW1vdW50OiB7IHZhbHVlOiBgJHtyZWNpcGllbnQuYW1vdW50fWAsIHN5bWJvbDogcmVjaXBpZW50LnRva2VuTmFtZSA/IHJlY2lwaWVudC50b2tlbk5hbWUgOiBjaGFpbiB9LFxuICAgICAgfTtcblxuICAgICAgaWYgKHJlY2lwaWVudC5kYXRhKSB7XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC5kYXRhID0gcmVjaXBpZW50LmRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdG9rZW5EYXRhIH0gPSByZWNpcGllbnQ7XG4gICAgICBpZiAodG9rZW5EYXRhICYmICh0b2tlbkRhdGEudG9rZW5Db250cmFjdEFkZHJlc3MgfHwgdG9rZW5EYXRhLnRva2VuTmFtZSkpIHtcbiAgICAgICAgLy8gdG9rZW4gcmVsYXRlZCByZWNpcGllbnQgZGF0YSBnZXRzIHZhbGlkYXRlZCBpbiBXUFxuICAgICAgICBpZiAoISh0b2tlbkRhdGEudG9rZW5UeXBlICYmIHRva2VuRGF0YS50b2tlblF1YW50aXR5KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICd0b2tlbiB0eXBlIGFuZCBxdWFudGl0eSBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgdHJhbnNhY3Rpb24gd2l0aCBpbnRlbnQgdG8gdHJhbnNmZXIgYSB0b2tlbidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGZvcm1hdHRlZFJlY2lwaWVudC50b2tlbkRhdGEgPSB0b2tlbkRhdGE7XG4gICAgICB9XG4gICAgICByZXR1cm4gZm9ybWF0dGVkUmVjaXBpZW50O1xuICAgIH0pO1xuXG4gICAgY29uc3QgYmFzZUludGVudCA9IHtcbiAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgc2VxdWVuY2VJZDogcGFyYW1zLnNlcXVlbmNlSWQsXG4gICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgIG5vbmNlOiBwYXJhbXMubm9uY2UsXG4gICAgICByZWNpcGllbnRzOiBpbnRlbnRSZWNpcGllbnRzLFxuICAgIH07XG5cbiAgICBpZiAoYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdldGgnIHx8IGJhc2VDb2luLmdldEZhbWlseSgpID09PSAncG9seWdvbicgfHwgYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdic2MnKSB7XG4gICAgICBzd2l0Y2ggKHBhcmFtcy5pbnRlbnRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ3BheW1lbnQnOlxuICAgICAgICBjYXNlICd0cmFuc2ZlclRva2VuJzpcbiAgICAgICAgY2FzZSAnZmlsbE5vbmNlJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHNlbGZTZW5kOiBwYXJhbXMuc2VsZlNlbmQsXG4gICAgICAgICAgICBmZWVPcHRpb25zOiBwYXJhbXMuZmVlT3B0aW9ucyxcbiAgICAgICAgICAgIGhvcFBhcmFtczogcGFyYW1zLmhvcFBhcmFtcyxcbiAgICAgICAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICAgICAgICBub25jZTogcGFyYW1zLm5vbmNlLFxuICAgICAgICAgICAgY3VzdG9kaWFuVHJhbnNhY3Rpb25JZDogcGFyYW1zLmN1c3RvZGlhblRyYW5zYWN0aW9uSWQsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnYWNjZWxlcmF0aW9uJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uYmFzZUludGVudCxcbiAgICAgICAgICAgIHR4aWQ6IHBhcmFtcy5sb3dGZWVUeGlkLFxuICAgICAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICAgICAgfTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGludGVudCB0eXBlICR7cGFyYW1zLmludGVudFR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5mZWVPcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2VJbnRlbnQsXG4gICAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgIGVuYWJsZVRva2VuczogcGFyYW1zLmVuYWJsZVRva2VucyxcbiAgICAgICAgZmVlT3B0aW9uczogcGFyYW1zLmZlZU9wdGlvbnMsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5iYXNlSW50ZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgdG9rZW46IHBhcmFtcy50b2tlbk5hbWUsXG4gICAgICBlbmFibGVUb2tlbnM6IHBhcmFtcy5lbmFibGVUb2tlbnMsXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -8,14 +8,20 @@ import { BitGoBase } from '../bitgoBase';
8
8
  */
9
9
  export declare function getBitgoGpgPubKey(bitgo: BitGoBase): Promise<Key>;
10
10
  /**
11
- * Verify an Eddsa KeyShare Proof.
11
+ * Fetches Trust pub key string
12
+ * @param bitgo
13
+ */
14
+ export declare function getTrustGpgPubKey(bitgo: BitGoBase): Promise<Key>;
15
+ /**
16
+ * Verify an Eddsa or Ecdsa KeyShare Proof.
12
17
  *
13
18
  * @param senderPubKey public key of the sender of the privateShareProof
14
19
  * @param privateShareProof u value proof
15
20
  * @param uValue u value from an Eddsa keyshare
21
+ * @param algo
16
22
  * @return {boolean} whether uValue proof actually was signed by sender as part of their subkeys
17
23
  */
18
- export declare function verifyEdShareProof(senderPubKey: string, privateShareProof: string, uValue: string): Promise<boolean>;
24
+ export declare function verifyShareProof(senderPubKey: string, privateShareProof: string, uValue: string, algo: 'eddsa' | 'ecdsa'): Promise<boolean>;
19
25
  /**
20
26
  * Verify a shared data proof.
21
27
  *
@@ -1 +1 @@
1
- {"version":3,"file":"opengpgUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/opengpgUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,EAIL,GAAG,EAOJ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAQtE;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC3C,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6D1G;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAczE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjH;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAclH;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlF;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnH;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAkBxC"}
1
+ {"version":3,"file":"opengpgUtils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/utils/opengpgUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,SAAS,CAAC;AAC/B,OAAO,EAIL,GAAG,EAOJ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAQtE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAMtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GAAG,OAAO,GACtB,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC9C,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,iBAAiB,EAAE,MAAM,EACzB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAC3C,OAAO,CAAC,MAAM,CAAC,CAsDjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6D1G;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAczE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjH;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAclH;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlF;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnH;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAkBxC"}
@@ -23,7 +23,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
23
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.generateGPGKeyPair = exports.verifySignature = exports.signText = exports.readSignedMessage = exports.encryptAndSignText = exports.encryptText = exports.createShareProof = exports.createSharedDataProof = exports.verifySharedDataProof = exports.verifyEdShareProof = exports.getBitgoGpgPubKey = void 0;
26
+ exports.generateGPGKeyPair = exports.verifySignature = exports.signText = exports.readSignedMessage = exports.encryptAndSignText = exports.encryptText = exports.createShareProof = exports.createSharedDataProof = exports.verifySharedDataProof = exports.verifyShareProof = exports.getTrustGpgPubKey = exports.getBitgoGpgPubKey = void 0;
27
27
  const pgp = __importStar(require("openpgp"));
28
28
  const openpgp_1 = require("openpgp");
29
29
  const _ = __importStar(require("lodash"));
@@ -45,25 +45,48 @@ async function getBitgoGpgPubKey(bitgo) {
45
45
  }
46
46
  exports.getBitgoGpgPubKey = getBitgoGpgPubKey;
47
47
  /**
48
- * Verify an Eddsa KeyShare Proof.
48
+ * Fetches Trust pub key string
49
+ * @param bitgo
50
+ */
51
+ async function getTrustGpgPubKey(bitgo) {
52
+ const constants = await bitgo.fetchConstants();
53
+ if (!constants.trustPubKey) {
54
+ throw new Error('Unable to get trustPubKey');
55
+ }
56
+ return openpgp_1.readKey({ armoredKey: constants.trustPubKey });
57
+ }
58
+ exports.getTrustGpgPubKey = getTrustGpgPubKey;
59
+ /**
60
+ * Verify an Eddsa or Ecdsa KeyShare Proof.
49
61
  *
50
62
  * @param senderPubKey public key of the sender of the privateShareProof
51
63
  * @param privateShareProof u value proof
52
64
  * @param uValue u value from an Eddsa keyshare
65
+ * @param algo
53
66
  * @return {boolean} whether uValue proof actually was signed by sender as part of their subkeys
54
67
  */
55
- async function verifyEdShareProof(senderPubKey, privateShareProof, uValue) {
68
+ async function verifyShareProof(senderPubKey, privateShareProof, uValue, algo) {
56
69
  const decodedProof = await pgp.readKey({ armoredKey: privateShareProof });
57
70
  const senderGpgKey = await pgp.readKey({ armoredKey: senderPubKey });
58
71
  if (!(await decodedProof.verifyPrimaryUser([senderGpgKey]))[0].valid) {
59
72
  return false;
60
73
  }
61
74
  const proofSubkeys = decodedProof.getSubkeys()[1];
62
- const decodedUValueProof = Buffer.from(proofSubkeys.keyPacket.publicParams['Q'].slice(1)).toString('hex');
63
- const rawUValueProof = Buffer.from(sodium.crypto_scalarmult_ed25519_base_noclamp(Buffer.from(uValue, 'hex'))).toString('hex');
64
- return decodedUValueProof === rawUValueProof;
75
+ if (algo === 'eddsa') {
76
+ const decodedUValueProof = Buffer.from(proofSubkeys.keyPacket.publicParams['Q'].slice(1)).toString('hex');
77
+ const rawUValueProof = Buffer.from(sodium.crypto_scalarmult_ed25519_base_noclamp(Buffer.from(uValue, 'hex'))).toString('hex');
78
+ return decodedUValueProof === rawUValueProof;
79
+ }
80
+ else if (algo === 'ecdsa') {
81
+ const decodedUValueProof = Buffer.from(proofSubkeys.keyPacket.publicParams['Q']).toString('hex');
82
+ const rawUValueProof = utxo_lib_1.ecc.pointFromScalar(Buffer.from(uValue, 'hex'), false);
83
+ return rawUValueProof !== null && decodedUValueProof === Buffer.from(rawUValueProof).toString('hex');
84
+ }
85
+ else {
86
+ throw new Error('Invalid algorithm provided');
87
+ }
65
88
  }
66
- exports.verifyEdShareProof = verifyEdShareProof;
89
+ exports.verifyShareProof = verifyShareProof;
67
90
  /**
68
91
  * Verify a shared data proof.
69
92
  *
@@ -357,4 +380,4 @@ async function generateGPGKeyPair(keyCurve, username, email) {
357
380
  return gpgKey;
358
381
  }
359
382
  exports.generateGPGKeyPair = generateGPGKeyPair;
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmdwZ1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRELDZDQUErQjtBQUMvQixxQ0FXaUI7QUFDakIsMENBQTRCO0FBQzVCLDhDQUFtRDtBQUVuRCxvREFBNEI7QUFFNUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFO1FBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztLQUN6RjtJQUVELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUF3QixDQUFDO0lBQ2pFLE9BQU8sTUFBTSxpQkFBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBUkQsOENBUUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLGtCQUFrQixDQUN0QyxZQUFvQixFQUNwQixpQkFBeUIsRUFDekIsTUFBYztJQUVkLE1BQU0sWUFBWSxHQUFHLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDMUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDckUsSUFBSSxDQUFDLENBQUMs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ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuXG5pbXBvcnQgKiBhcyBwZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQge1xuICBjcmVhdGVNZXNzYWdlLFxuICBkZWNyeXB0LFxuICBlbmNyeXB0LFxuICBLZXksXG4gIHJlYWRLZXksXG4gIHJlYWRNZXNzYWdlLFxuICByZWFkUHJpdmF0ZUtleSxcbiAgcmVhZFNpZ25hdHVyZSxcbiAgc2lnbixcbiAgdmVyaWZ5LFxufSBmcm9tICdvcGVucGdwJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVjYyBhcyBzZWNwMjU2azEgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3Qgc29kaXVtID0gcmVxdWlyZSgnbGlic29kaXVtLXdyYXBwZXJzLXN1bW8nKTtcblxuLyoqXG4gKiBGZXRjaGVzIEJpdEdvJ3MgcHViaWMgZ3BnIGtleSB1c2VkIGluIE1QQyBmbG93c1xuICogQHBhcmFtIHtCaXRHb30gYml0Z28gQml0R28gb2JqZWN0XG4gKiBAcmV0dXJuIHtLZXl9IHB1YmxpYyBncGcga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb0dwZ1B1YktleShiaXRnbzogQml0R29CYXNlKTogUHJvbWlzZTxLZXk+IHtcbiAgY29uc3QgY29uc3RhbnRzID0gYXdhaXQgYml0Z28uZmV0Y2hDb25zdGFudHMoKTtcbiAgaWYgKCFjb25zdGFudHMubXBjIHx8ICFjb25zdGFudHMubXBjLmJpdGdvUHVibGljS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gY3JlYXRlIE1QQyBrZXlzIC0gYml0Z29QdWJsaWNLZXkgaXMgbWlzc2luZyBmcm9tIGNvbnN0YW50cycpO1xuICB9XG5cbiAgY29uc3QgYml0Z29QdWJsaWNLZXlTdHIgPSBjb25zdGFudHMubXBjLmJpdGdvUHVibGljS2V5IGFzIHN0cmluZztcbiAgcmV0dXJuIGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb1B1YmxpY0tleVN0ciB9KTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgYW4gRWRkc2EgS2V5U2hhcmUgUHJvb2YuXG4gKlxuICogQHBhcmFtIHNlbmRlclB1YktleSBwdWJsaWMga2V5IG9mIHRoZSBzZW5kZXIgb2YgdGhlIHByaXZhdGVTaGFyZVByb29mXG4gKiBAcGFyYW0gcHJpdmF0ZVNoYXJlUHJvb2YgdSB2YWx1ZSBwcm9vZlxuICogQHBhcmFtIHVWYWx1ZSB1IHZhbHVlIGZyb20gYW4gRWRkc2Ega2V5c2hhcmVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgdVZhbHVlIHByb29mIGFjdHVhbGx5IHdhcyBzaWduZWQgYnkgc2VuZGVyIGFzIHBhcnQgb2YgdGhlaXIgc3Via2V5c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5RWRTaGFyZVByb29mKFxuICBzZW5kZXJQdWJLZXk6IHN0cmluZyxcbiAgcHJpdmF0ZVNoYXJlUHJvb2Y6IHN0cmluZyxcbiAgdVZhbHVlOiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBkZWNvZGVkUHJvb2YgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVTaGFyZVByb29mIH0pO1xuICBjb25zdCBzZW5kZXJHcGdLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHNlbmRlclB1YktleSB9KTtcbiAgaWYgKCEoYXdhaXQgZGVjb2RlZFByb29mLnZlcmlmeVByaW1hcnlVc2VyKFtzZW5kZXJHcGdLZXldKSlbMF0udmFsaWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcHJvb2ZTdWJrZXlzID0gZGVjb2RlZFByb29mLmdldFN1YmtleXMoKVsxXTtcbiAgY29uc3QgZGVjb2RlZFVWYWx1ZVByb29mID0gQnVmZmVyLmZyb20ocHJvb2ZTdWJrZXlzLmtleVBhY2tldC5wdWJsaWNQYXJhbXNbJ1EnXS5zbGljZSgxKSkudG9TdHJpbmcoJ2hleCcpO1xuICBjb25zdCByYXdVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKFxuICAgIHNvZGl1bS5jcnlwdG9fc2NhbGFybXVsdF9lZDI1NTE5X2Jhc2Vfbm9jbGFtcChCdWZmZXIuZnJvbSh1VmFsdWUsICdoZXgnKSlcbiAgKS50b1N0cmluZygnaGV4Jyk7XG4gIHJldHVybiBkZWNvZGVkVVZhbHVlUHJvb2YgPT09IHJhd1VWYWx1ZVByb29mO1xufVxuXG4vKipcbiAqIFZlcmlmeSBhIHNoYXJlZCBkYXRhIHByb29mLlxuICpcbiAqIEBwYXJhbSBzZW5kZXJQdWJLZXlBcm0gcHVibGljIGtleSBvZiB0aGUgc2lnbmVyIG9mIHRoZSBrZXkgd2l0aCBwcm9vZiBkYXRhXG4gKiBAcGFyYW0ga2V5V2l0aE5vdGF0aW9uIHNpZ25lZCByZWNpZXZlciBrZXkgd2l0aCBub3RhdGlvbiBkYXRhXG4gKiBAcGFyYW0gZGF0YVRvVmVyaWZ5IGRhdGEgdG8gYmUgY2hlY2tlZCBhZ2FpbnN0IG5vdGF0aW9uIGRhdGEgaW4gdGhlIHNpZ25lZCBrZXlcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgcHJvb2YgaXMgdmFsaWRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVNoYXJlZERhdGFQcm9vZihcbiAgc2VuZGVyUHViS2V5QXJtOiBzdHJpbmcsXG4gIGtleVdpdGhOb3RhdGlvbjogc3RyaW5nLFxuICBkYXRhVG9WZXJpZnk6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXVxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHNlbmRlclB1YktleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogc2VuZGVyUHViS2V5QXJtIH0pO1xuICBjb25zdCBzaWduZWRLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IGtleVdpdGhOb3RhdGlvbiB9KTtcbiAgaWYgKCEoYXdhaXQgc2lnbmVkS2V5LnZlcmlmeVByaW1hcnlVc2VyKFtzZW5kZXJQdWJLZXldKS50aGVuKCh2YWx1ZXMpID0+IF8uc29tZSh2YWx1ZXMsICh2YWx1ZSkgPT4gdmFsdWUudmFsaWQpKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcHJpbWFyeVVzZXIgPSBhd2FpdCBzaWduZWRLZXkuZ2V0UHJpbWFyeVVzZXIoKTtcbiAgY29uc3QgYW55SW52YWxpZFByb29mID0gXy5zb21lKFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcmltYXJ5VXNlci51c2VyLm90aGVyQ2VydGlmaWNhdGlvbnNbMF0ucmF3Tm90YXRpb25zLFxuICAgIChub3RhdGlvbikgPT4gZGF0YVRvVmVyaWZ5LmZpbmQoKGkpID0+IGkubmFtZSA9PT0gbm90YXRpb24ubmFtZSk/LnZhbHVlICE9PSBCdWZmZXIuZnJvbShub3RhdGlvbi52YWx1ZSkudG9TdHJpbmcoKVxuICApO1xuICByZXR1cm4gIWFueUludmFsaWRQcm9vZjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcHJvb2YgdGhyb3VnaCBhZGRpbmcgbm90YXRpb24gZGF0YSB0byBhIEdQRyBjZXJpdGlmeWluZyBzaWduYXR1cmUuXG4gKlxuICogQHBhcmFtIHByaXZhdGVLZXlBcm1vcmVkIGdwZyBwcml2YXRlIGtleSBpbiBhcm1vciBmb3JtYXQgb2YgdGhlIHNlbmRlclxuICogQHBhcmFtIHB1YmxpY0tleVRvQ2VydEFybW9yZWQgZ3BnIHB1YmxpYyBrZXkgaW4gYXJtb3IgZm9tcmF0IG9mIHRoZSByZWNpZXZlclxuICogQHBhcmFtIG5vdGF0aW9ucyBkYXRhIHRvIGJlIHByb29mZWRcbiAqIEByZXR1cm4ge3N0cmluZ30ga2V5c2hhcmUgcHJvb2ZcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVNoYXJlZERhdGFQcm9vZihcbiAgcHJpdmF0ZUtleUFybW9yZWQ6IHN0cmluZyxcbiAgcHVibGljS2V5VG9DZXJ0QXJtb3JlZDogc3RyaW5nLFxuICBub3RhdGlvbnM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXVxuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY2VydGlmeWluZ0tleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUtleUFybW9yZWQgfSk7XG4gIGNvbnN0IHB1YmxpY0tleVRvQ2VydCA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogcHVibGljS2V5VG9DZXJ0QXJtb3JlZCB9KTtcbiAgY29uc3QgZGF0ZVRpbWUgPSBuZXcgRGF0ZSgpO1xuICAvLyBVc2VySWQgUGFja2V0LlxuICBjb25zdCB1c2VySWRQa3QgPSBuZXcgcGdwLlVzZXJJRFBhY2tldCgpO1xuICBjb25zdCBwcmltYXJ5VXNlciA9IGF3YWl0IHB1YmxpY0tleVRvQ2VydC5nZXRQcmltYXJ5VXNlcigpO1xuICAvLyBAdHMtaWdub3JlXG4gIHVzZXJJZFBrdC51c2VySUQgPSBwcmltYXJ5VXNlci51c2VyLnVzZXJJRC51c2VySUQ7XG4gIC8vIFNpZ25hdHVyZSBwYWNrZXQuXG4gIGNvbnN0IHNpZ25hdHVyZVBhY2tldCA9IG5ldyBwZ3AuU2lnbmF0dXJlUGFja2V0KCk7XG4gIHNpZ25hdHVyZVBhY2tldC5zaWduYXR1cmVUeXBlID0gcGdwLmVudW1zLnNpZ25hdHVyZS5jZXJ0UG9zaXRpdmU7XG4gIHNpZ25hdHVyZVBhY2tldC5wdWJsaWNLZXlBbGdvcml0aG0gPSBwZ3AuZW51bXMucHVibGljS2V5LmVjZHNhO1xuICBzaWduYXR1cmVQYWNrZXQuaGFzaEFsZ29yaXRobSA9IHBncC5lbnVtcy5oYXNoLnNoYTI1NjtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuaXNzdWVyRmluZ2VycHJpbnQgPSBhd2FpdCBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmdldEZpbmdlcnByaW50Qnl0ZXMoKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuaXNzdWVyS2V5SUQgPSBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmtleUlEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5zaWduaW5nS2V5SUQgPSBwcmltYXJ5VXNlci51c2VyLm1haW5LZXkua2V5UGFja2V0LmtleUlEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5zaWduZXJzVXNlcklEID0gcHJpbWFyeVVzZXIudXNlci51c2VySUQudXNlcklEO1xuICAvLyBAdHMtaWdub3JlXG4gIHNpZ25hdHVyZVBhY2tldC5mZWF0dXJlcyA9IFsxXTtcbiAgbm90YXRpb25zLmZvckVhY2goKHsgbmFtZSwgdmFsdWUgfSkgPT4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBzaWduYXR1cmVQYWNrZXQucmF3Tm90YXRpb25zLnB1c2goW1xuICAgICAge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odmFsdWUpKSxcbiAgICAgICAgaHVtYW5SZWFkYWJsZTogdHJ1ZSxcbiAgICAgICAgY3JpdGljYWw6IDAsXG4gICAgICB9LFxuICAgIF0pO1xuICB9KTtcblxuICAvLyBQcmVwYXJlIHNpZ25pbmcgZGF0YS5cbiAgY29uc3Qga2V5ZGF0YVRvU2lnbiA9IHt9O1xuICAvLyBAdHMtaWdub3JlXG4gIGtleWRhdGFUb1NpZ24ua2V5ID0gcHVibGljS2V5VG9DZXJ0LmtleVBhY2tldDtcbiAgLy8gQHRzLWlnbm9yZVxuICBrZXlkYXRhVG9TaWduLnVzZXJJRCA9IHVzZXJJZFBrdDtcblxuICAvLyBTaWduIHRoZSBkYXRhIChjcmVhdGUgY2VydGlmaWNhdGlvbikuXG4gIC8vIEB0cy1pZ25vcmVcbiAgYXdhaXQgc2lnbmF0dXJlUGFja2V0LnNpZ24oY2VydGlmeWluZ0tleS5rZXlQYWNrZXQsIGtleWRhdGFUb1NpZ24sIGRhdGVUaW1lKTtcblxuICAvLyBBc3NlbWJsZSBwYWNrZXRzIHRvZ2V0aGVyLlxuICBjb25zdCBwdWJsaWNLZXlUb0NlcnRQa3RzID0gcHVibGljS2V5VG9DZXJ0LnRvUGFja2V0TGlzdCgpO1xuICBjb25zdCBuZXdLZXlQa3RMaXN0ID0gbmV3IHBncC5QYWNrZXRMaXN0KCk7XG4gIG5ld0tleVBrdExpc3QucHVzaCguLi5wdWJsaWNLZXlUb0NlcnRQa3RzLnNsaWNlKDAsIDMpLCBzaWduYXR1cmVQYWNrZXQsIC4uLnB1YmxpY0tleVRvQ2VydFBrdHMuc2xpY2UoMykpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG5ld1B1YktleSA9IG5ldyBwZ3AuUHVibGljS2V5KG5ld0tleVBrdExpc3QpO1xuICByZXR1cm4gbmV3UHViS2V5LmFybW9yKCkucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgS2V5U2hhcmUgUHJvb2YgYmFzZWQgb24gZ2l2ZW4gYWxnby5cbiAqXG4gKiBDcmVhdGVzIGFuIEVkRFNBIEtleVNoYXJlIFByb29mIGJ5IGFwcGVuZGluZyBhbiBlZDI1NTE5IHN1YmtleSAoYXV0aCkgdG8gYW4gYXJtb3JlZCBncGcgcHJpdmF0ZSBrZXkuXG4gKiBDcmVhdGVzIGFuIEVDRFNBIEtleVNoYXJlIFByb29mIGJ5IEFwcGVuZCBhIHNlY3AyNTZrMSBzdWJrZXkgKGF1dGgpIHRvIGEgUEdQIGtleWNoYWluLlxuICpcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgZ3BnIHByaXZhdGUga2V5IGluIGFybW9yIGZvcm1hdFxuICogQHBhcmFtIHVWYWx1ZSB1IHZhbHVlIGZyb20gYW4gRWRkc2Ega2V5c2hhcmVcbiAqIEBwYXJhbSBhbGdvIGFsZ28gdG8gdXNlLCBlZGRzYSBvciBlY2RzYVxuICogQHJldHVybiB7c3RyaW5nfSBrZXlzaGFyZSBwcm9vZlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2hhcmVQcm9vZihwcml2YXRlQXJtb3I6IHN0cmluZywgdVZhbHVlOiBzdHJpbmcsIGFsZ286IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuICBjb25zdCBkYXRlVGltZSA9IG5ldyBEYXRlKCk7XG4gIC8vIEB0cy1pZ25vcmUgLSB0eXBlIGluY29uc2lzdGVuY3ksIHRoaXMgY3RvciBzdXBwb3J0cyBhIGRhdGUgcGFyYW06IGh0dHBzOi8vZG9jcy5vcGVucGdwanMub3JnL1NlY3JldFN1YmtleVBhY2tldC5odG1sXG4gIGNvbnN0IHNlY3JldFN1YmtleVBhY2tldCA9IG5ldyBwZ3AuU2VjcmV0U3Via2V5UGFja2V0KGRhdGVUaW1lKTtcbiAgc2VjcmV0U3Via2V5UGFja2V0LmFsZ29yaXRobSA9IHBncC5lbnVtcy5wdWJsaWNLZXlbYWxnb107XG4gIC8vIEB0cy1pZ25vcmUgLSBzYW1lIGFzIGFib3ZlXG4gIHNlY3JldFN1YmtleVBhY2tldC5pc0VuY3J5cHRlZCA9IGZhbHNlO1xuICBsZXQgb2lkO1xuICBsZXQgUTtcbiAgaWYgKGFsZ28gPT09ICdlZGRzYScpIHtcbiAgICBhd2FpdCBzb2RpdW0ucmVhZHk7XG4gICAgY29uc3Qgc3ViS2V5VmFsID0gQnVmZmVyLmZyb20oXG4gICAgICBzb2RpdW0uY3J5cHRvX3NjYWxhcm11bHRfZWQyNTUxOV9iYXNlX25vY2xhbXAoQnVmZmVyLmZyb20odVZhbHVlLCAnaGV4JyksICd1aW50OGFycmF5JylcbiAgICApO1xuICAgIC8vIFN1Yi1rZXkgKGVuY3J5cHRpb24ga2V5KSBwYWNrZXQuXG4gICAgb2lkID0gWzB4MmIsIDB4MDYsIDB4MDEsIDB4MDQsIDB4MDEsIDB4ZGEsIDB4NDcsIDB4MGYsIDB4MDFdO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvaWQud3JpdGUgPSAoKSA9PiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSgnMDkyYjA2MDEwNDAxZGE0NzBmMDEnLCAnaGV4JykpO1xuICAgIFEgPSBuZXcgVWludDhBcnJheShbMHg0MCwgLi4uc3ViS2V5VmFsXSk7XG4gIH0gZWxzZSBpZiAoYWxnbyA9PT0gJ2VjZHNhJykge1xuICAgIG9pZCA9IFsweDJiLCAweDgxLCAweDA0LCAweDAwLCAweDBhXTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2FtZSBhcyBhYm92ZVxuICAgIG9pZC53cml0ZSA9ICgpID0+IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCcwNTJiODEwNDAwMGEnLCAnaGV4JykpO1xuICAgIFEgPSBzZWNwMjU2azEucG9pbnRGcm9tU2NhbGFyKG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpKSwgZmFsc2UpO1xuICB9XG4gIHNlY3JldFN1YmtleVBhY2tldC5wdWJsaWNQYXJhbXMgPSB7XG4gICAgb2lkLFxuICAgIFEsXG4gIH07XG4gIC8vIEB0cy1pZ25vcmUgLSBzYW1lIGFzIGFib3ZlXG4gIGF3YWl0IHNlY3JldFN1YmtleVBhY2tldC5jb21wdXRlRmluZ2VycHJpbnRBbmRLZXlJRCgpO1xuXG4gIC8vIFN1Yi1rZXkgc2lnbmF0dXJlIHBhY2tldC5cbiAgY29uc3Qgc3ViS2V5ZGF0YVRvU2lnbiA9IHtcbiAgICBrZXk6IHByaXZhdGVLZXkua2V5UGFja2V0LFxuICAgIGJpbmQ6IHNlY3JldFN1YmtleVBhY2tldCxcbiAgfTtcbiAgY29uc3Qgc3Via2V5U2lnbmF0dXJlUGFja2V0ID0gbmV3IHBncC5TaWduYXR1cmVQYWNrZXQoKTtcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0LnNpZ25hdHVyZVR5cGUgPSBwZ3AuZW51bXMuc2lnbmF0dXJlLnN1YmtleUJpbmRpbmc7XG4gIHN1YmtleVNpZ25hdHVyZVBhY2tldC5wdWJsaWNLZXlBbGdvcml0aG0gPSBwZ3AuZW51bXMucHVibGljS2V5LmVjZHNhO1xuICBzdWJrZXlTaWduYXR1cmVQYWNrZXQuaGFzaEFsZ29yaXRobSA9IHBncC5lbnVtcy5oYXNoLnNoYTI1NjtcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0LmtleUZsYWdzID0gbmV3IFVpbnQ4QXJyYXkoW3BncC5lbnVtcy5rZXlGbGFncy5hdXRoZW50aWNhdGlvbl0pO1xuXG4gIC8vIFNpZ24gdGhlIHN1YmtleVxuICAvLyBAdHMtaWdub3JlIC0gc2lnbiBzdXBwb3J0cyBhcmJpdHJhcnkgZGF0YSBmb3IgMm5kIHBhcmFtOiBodHRwczovL2RvY3Mub3BlbnBncGpzLm9yZy9TaWduYXR1cmVQYWNrZXQuaHRtbFxuICBhd2FpdCBzdWJrZXlTaWduYXR1cmVQYWNrZXQuc2lnbihwcml2YXRlS2V5LmtleVBhY2tldCwgc3ViS2V5ZGF0YVRvU2lnbiwgZGF0ZVRpbWUpO1xuXG4gIC8vIEFzc2VtYmxlIHBhY2tldHMgdG9nZXRoZXIuXG4gIGNvbnN0IG5ld0tleVBrdExpc3QgPSBuZXcgcGdwLlBhY2tldExpc3QoKTtcbiAgY29uc3QgcHJpdmF0ZUtleVBrdHMgPSBwcml2YXRlS2V5LnRvUGFja2V0TGlzdCgpO1xuICBwcml2YXRlS2V5UGt0cy5mb3JFYWNoKChwYWNrZXQpID0+IG5ld0tleVBrdExpc3QucHVzaChwYWNrZXQpKTtcbiAgbmV3S2V5UGt0TGlzdC5wdXNoKHNlY3JldFN1YmtleVBhY2tldCwgc3Via2V5U2lnbmF0dXJlUGFja2V0KTtcbiAgLy8gQHRzLWlnbm9yZSAtIHN1cHBvcnRzIHBhY2tldCBsaXN0IGFzIGN0b3IgcGFyYW06IGh0dHBzOi8vZG9jcy5vcGVucGdwanMub3JnL1ByaXZhdGVLZXkuaHRtbFxuICBjb25zdCBuZXdQdWJLZXkgPSBuZXcgcGdwLlByaXZhdGVLZXkobmV3S2V5UGt0TGlzdCkudG9QdWJsaWMoKTtcblxuICBpZiAoIShhd2FpdCBuZXdQdWJLZXkudmVyaWZ5UHJpbWFyeVVzZXIoW3ByaXZhdGVLZXldKSlbMF0udmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29ycmVjdCBzaWduYXR1cmUnKTtcbiAgfVxuXG4gIHJldHVybiBuZXdQdWJLZXkuYXJtb3IoKS5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xufVxuXG4vKipcbiAqIEVuY3J5cHRzIHN0cmluZyB1c2luZyBncGcga2V5XG4gKiBAREVQUkVDQVRFRCAtIHNob3VsZCB1c2UgZW5jcnlwdEFuZFNpZ25UZXh0IGluc3RlYWQgZm9yIGFkZGVkIHNlY3VyaXR5XG4gKlxuICogQHBhcmFtIHRleHQgc3RyaW5nIHRvIGVuY3J5cHRcbiAqIEBwYXJhbSBrZXkgZW5jcnlwdGlvbiBrZXlcbiAqIEByZXR1cm4ge3N0cmluZ30gZW5jcnlwdGVkIHN0cmluZ1xuICpcbiAqIFRPRE8oQkctNDcxNzApOiBEZWxldGUgb25jZSBncGcgc2lnbmF0dXJlcyBhcmUgZnVsbHkgc3VwcG9ydGVkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0VGV4dCh0ZXh0OiBzdHJpbmcsIGtleTogS2V5KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgbWVzc2FnZVRvRW5jcnlwdCA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2Uoe1xuICAgIHRleHQsXG4gIH0pO1xuICByZXR1cm4gYXdhaXQgZW5jcnlwdCh7XG4gICAgbWVzc2FnZTogbWVzc2FnZVRvRW5jcnlwdCxcbiAgICBlbmNyeXB0aW9uS2V5czogW2tleV0sXG4gICAgZm9ybWF0OiAnYXJtb3JlZCcsXG4gICAgY29uZmlnOiB7XG4gICAgICByZWplY3RDdXJ2ZXM6IG5ldyBTZXQoKSxcbiAgICAgIHNob3dWZXJzaW9uOiBmYWxzZSxcbiAgICAgIHNob3dDb21tZW50OiBmYWxzZSxcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0cyBhbmQgc2lnbnMgYSBzdHJpbmdcbiAqIEBwYXJhbSB0ZXh0IHN0cmluZyB0byBlbmNyeXB0IGFuZCBzaWduXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0byBlbmNyeXB0IHdpdGhcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgcHJpdmF0ZSBrZXkgdG8gc2lnbiB3aXRoXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0QW5kU2lnblRleHQodGV4dDogc3RyaW5nLCBwdWJsaWNBcm1vcjogc3RyaW5nLCBwcml2YXRlQXJtb3I6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwdWJsaWNBcm1vciB9KTtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHsgdGV4dCB9KTtcblxuICBjb25zdCBzaWduZWRNZXNzYWdlID0gYXdhaXQgZW5jcnlwdCh7XG4gICAgbWVzc2FnZSxcbiAgICBlbmNyeXB0aW9uS2V5czogcHVibGljS2V5LFxuICAgIHNpZ25pbmdLZXlzOiBwcml2YXRlS2V5LFxuICAgIGZvcm1hdDogJ2FybW9yZWQnLFxuICAgIGNvbmZpZzoge1xuICAgICAgcmVqZWN0Q3VydmVzOiBuZXcgU2V0KCksXG4gICAgICBzaG93VmVyc2lvbjogZmFsc2UsXG4gICAgICBzaG93Q29tbWVudDogZmFsc2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25lZE1lc3NhZ2U7XG59XG5cbi8qKlxuICogUmVhZHMgYSBzaWduZWQgYW5kIGVuY3J5cHRlZCBtZXNzYWdlXG4gKlxuICogQHBhcmFtIHNpZ25lZCBzaWduZWQgYW5kIGVuY3J5cHRlZCBtZXNzYWdlXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0byB2ZXJpZnkgc2lnbmF0dXJlXG4gKiBAcGFyYW0gcHJpdmF0ZUFybW9yIHByaXZhdGUga2V5IHRvIGRlY3J5cHQgbWVzc2FnZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFNpZ25lZE1lc3NhZ2Uoc2lnbmVkOiBzdHJpbmcsIHB1YmxpY0FybW9yOiBzdHJpbmcsIHByaXZhdGVBcm1vcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcHVibGljS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0FybW9yIH0pO1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG5cbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlYWRNZXNzYWdlKHsgYXJtb3JlZE1lc3NhZ2U6IHNpZ25lZCB9KTtcbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdCh7XG4gICAgbWVzc2FnZSxcbiAgICB2ZXJpZmljYXRpb25LZXlzOiBwdWJsaWNLZXksXG4gICAgZGVjcnlwdGlvbktleXM6IHByaXZhdGVLZXksXG4gICAgZXhwZWN0U2lnbmVkOiB0cnVlLFxuICAgIGNvbmZpZzogeyByZWplY3RDdXJ2ZXM6IG5ldyBTZXQoKSB9LFxuICB9KTtcblxuICByZXR1cm4gZGVjcnlwdGVkLmRhdGE7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIHRleHQgc3RyaW5nIHRvIGdlbmVyYXRlIGEgc2lnbmF0dXJlIGZvclxuICogQHBhcmFtIHByaXZhdGVBcm1vciBwcml2YXRlIGtleSBhcyBhcm1vcmVkIHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfSBhcm1vcmVkIHNpZ25hdHVyZSBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25UZXh0KHRleHQ6IHN0cmluZywgcHJpdmF0ZUFybW9yOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZFByaXZhdGVLZXkoeyBhcm1vcmVkS2V5OiBwcml2YXRlQXJtb3IgfSk7XG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHsgdGV4dCB9KTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgc2lnbih7XG4gICAgbWVzc2FnZSxcbiAgICBzaWduaW5nS2V5czogcHJpdmF0ZUtleSxcbiAgICBmb3JtYXQ6ICdhcm1vcmVkJyxcbiAgICBkZXRhY2hlZDogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyBzaWduYXR1cmUgd2FzIGdlbmVyYXRlZCBieSB0aGUgcHVibGljIGtleSBhbmQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgdGV4dFxuICpcbiAqIEBwYXJhbSB0ZXh0IHRleHQgdGhhdCB0aGUgc2lnbmF0dXJlIHdhcyBmb3JcbiAqIEBwYXJhbSBhcm1vcmVkU2lnbmF0dXJlIHNpZ25lZCBtZXNzYWdlIGFzIGFuIGFybW9yZWQgc3RyaW5nXG4gKiBAcGFyYW0gcHVibGljQXJtb3IgcHVibGljIGtleSB0aGF0IGdlbmVyYXRlZCB0aGUgc2lnbmF0dXJlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlTaWduYXR1cmUodGV4dDogc3RyaW5nLCBhcm1vcmVkU2lnbmF0dXJlOiBzdHJpbmcsIHB1YmxpY0FybW9yOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcHVibGljS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0FybW9yIH0pO1xuICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCByZWFkU2lnbmF0dXJlKHsgYXJtb3JlZFNpZ25hdHVyZSB9KTtcbiAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IGNyZWF0ZU1lc3NhZ2UoeyB0ZXh0IH0pO1xuICBjb25zdCB2ZXJpZmljYXRpb25SZXN1bHQgPSBhd2FpdCB2ZXJpZnkoe1xuICAgIG1lc3NhZ2UsXG4gICAgc2lnbmF0dXJlLFxuICAgIHZlcmlmaWNhdGlvbktleXM6IHB1YmxpY0tleSxcbiAgfSk7XG5cbiAgaWYgKHZlcmlmaWNhdGlvblJlc3VsdC5zaWduYXR1cmVzLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBudW1iZXIgb2Ygc2lnbmF0dXJlcycpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB2ZXJpZmljYXRpb25SZXN1bHQuc2lnbmF0dXJlc1swXS52ZXJpZmllZDtcbiAgICByZXR1cm4gdGV4dCA9PT0gdmVyaWZpY2F0aW9uUmVzdWx0LmRhdGE7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgR1BHIGtleSBwYWlyXG4gKlxuICogQHBhcmFtOiBrZXlDdXJ2ZSB0aGUgY3VydmUgdG8gY3JlYXRlIGEga2V5IHdpdGhcbiAqIEBwYXJhbTogdXNlcm5hbWUgbmFtZSBvZiB0aGUgdXNlciAob3B0aW9uYWwpXG4gKiBAcGFyYW06IGVtYWlsIGVtYWlsIG9mIHRoZSB1c2VyIChvcHRpb25hbClcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlR1BHS2V5UGFpcihcbiAga2V5Q3VydmU6IHBncC5FbGxpcHRpY0N1cnZlTmFtZSxcbiAgdXNlcm5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGVtYWlsPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBQcm9taXNlPHBncC5TZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+PiB7XG4gIGNvbnN0IHJhbmRvbUhleFN0cmluZyA9IGNyeXB0by5yYW5kb21CeXRlcygxMikudG9TdHJpbmcoJ2hleCcpO1xuICB1c2VybmFtZSA9IHVzZXJuYW1lID8/IHJhbmRvbUhleFN0cmluZztcbiAgZW1haWwgPSBlbWFpbCA/PyBgdXNlci0ke3JhbmRvbUhleFN0cmluZ31AJHtyYW5kb21IZXhTdHJpbmd9LmNvbWA7XG5cbiAgLy8gQWxsb3cgZ2VuZXJhdGluZyBzZWNwMjU2azEga2V5IHBhaXJzXG4gIHBncC5jb25maWcucmVqZWN0Q3VydmVzID0gbmV3IFNldCgpO1xuICBjb25zdCBncGdLZXkgPSBhd2FpdCBwZ3AuZ2VuZXJhdGVLZXkoe1xuICAgIHVzZXJJRHM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdXNlcm5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGN1cnZlOiBrZXlDdXJ2ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIGdwZ0tleTtcbn1cbiJdfQ==
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmdwZ1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL29wZW5ncGdVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRELDZDQUErQjtBQUMvQixxQ0FXaUI7QUFDakIsMENBQTRCO0FBQzVCLDhDQUFtRDtBQUVuRCxvREFBNEI7QUFFNUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFbEQ7Ozs7R0FJRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxLQUFnQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMvQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFO1FBQ25ELE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztLQUN6RjtJQUVELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUF3QixDQUFDO0lBQ2pFLE9BQU8sTUFBTSxpQkFBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBUkQsOENBUUM7QUFFRDs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsS0FBZ0I7SUFDdEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBQzlDO0lBQ0QsT0FBTyxpQkFBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQ3hELENBQUM7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RCxJQUFJO1FBQ0YsTUFBTSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxLQUFLLGtCQUFrQixDQUFDLElBQUksQ0FBQztLQUN6QztJQUFDLE1BQU07UUFDTixPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQXBCRCwwQ0FvQkM7QUFFRDs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFFBQStCLEVBQy9CLFFBQTZCLEVBQzdCLEtBQTBCO0lBRTFCLE1BQU0sZUFBZSxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRCxRQUFRLEdBQUcsUUFBUSxhQUFSLFFBQVEsY0FBUixRQUFRLEdBQUksZUFBZSxDQUFDO0lBQ3ZDLEtBQUssR0FBRyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxRQUFRLGVBQWUsSUFBSSxlQUFlLE1BQU0sQ0FBQztJQUVsRSx1Q0FBdUM7SUFDdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFDbkMsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSzthQUNOO1NBQ0Y7UUFDRCxLQUFLLEVBQUUsUUFBUTtLQUNoQixDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBdEJELGdEQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqL1xuXG5pbXBvcnQgKiBhcyBwZ3AgZnJvbSAnb3BlbnBncCc7XG5pbXBvcnQge1xuICBjcmVhdGVNZXNzYWdlLFxuICBkZWNyeXB0LFxuICBlbmNyeXB0LFxuICBLZXksXG4gIHJlYWRLZXksXG4gIHJlYWRNZXNzYWdlLFxuICByZWFkUHJpdmF0ZUtleSxcbiAgcmVhZFNpZ25hdHVyZSxcbiAgc2lnbixcbiAgdmVyaWZ5LFxufSBmcm9tICdvcGVucGdwJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVjYyBhcyBzZWNwMjU2azEgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuY29uc3Qgc29kaXVtID0gcmVxdWlyZSgnbGlic29kaXVtLXdyYXBwZXJzLXN1bW8nKTtcblxuLyoqXG4gKiBGZXRjaGVzIEJpdEdvJ3MgcHViaWMgZ3BnIGtleSB1c2VkIGluIE1QQyBmbG93c1xuICogQHBhcmFtIHtCaXRHb30gYml0Z28gQml0R28gb2JqZWN0XG4gKiBAcmV0dXJuIHtLZXl9IHB1YmxpYyBncGcga2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCaXRnb0dwZ1B1YktleShiaXRnbzogQml0R29CYXNlKTogUHJvbWlzZTxLZXk+IHtcbiAgY29uc3QgY29uc3RhbnRzID0gYXdhaXQgYml0Z28uZmV0Y2hDb25zdGFudHMoKTtcbiAgaWYgKCFjb25zdGFudHMubXBjIHx8ICFjb25zdGFudHMubXBjLmJpdGdvUHVibGljS2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gY3JlYXRlIE1QQyBrZXlzIC0gYml0Z29QdWJsaWNLZXkgaXMgbWlzc2luZyBmcm9tIGNvbnN0YW50cycpO1xuICB9XG5cbiAgY29uc3QgYml0Z29QdWJsaWNLZXlTdHIgPSBjb25zdGFudHMubXBjLmJpdGdvUHVibGljS2V5IGFzIHN0cmluZztcbiAgcmV0dXJuIGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBiaXRnb1B1YmxpY0tleVN0ciB9KTtcbn1cblxuLyoqXG4gKiBGZXRjaGVzIFRydXN0IHB1YiBrZXkgc3RyaW5nXG4gKiBAcGFyYW0gYml0Z29cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFRydXN0R3BnUHViS2V5KGJpdGdvOiBCaXRHb0Jhc2UpOiBQcm9taXNlPEtleT4ge1xuICBjb25zdCBjb25zdGFudHMgPSBhd2FpdCBiaXRnby5mZXRjaENvbnN0YW50cygpO1xuICBpZiAoIWNvbnN0YW50cy50cnVzdFB1YktleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGdldCB0cnVzdFB1YktleScpO1xuICB9XG4gIHJldHVybiByZWFkS2V5KHsgYXJtb3JlZEtleTogY29uc3RhbnRzLnRydXN0UHViS2V5IH0pO1xufVxuXG4vKipcbiAqIFZlcmlmeSBhbiBFZGRzYSBvciBFY2RzYSBLZXlTaGFyZSBQcm9vZi5cbiAqXG4gKiBAcGFyYW0gc2VuZGVyUHViS2V5IHB1YmxpYyBrZXkgb2YgdGhlIHNlbmRlciBvZiB0aGUgcHJpdmF0ZVNoYXJlUHJvb2ZcbiAqIEBwYXJhbSBwcml2YXRlU2hhcmVQcm9vZiB1IHZhbHVlIHByb29mXG4gKiBAcGFyYW0gdVZhbHVlIHUgdmFsdWUgZnJvbSBhbiBFZGRzYSBrZXlzaGFyZVxuICogQHBhcmFtIGFsZ29cbiAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgdVZhbHVlIHByb29mIGFjdHVhbGx5IHdhcyBzaWduZWQgYnkgc2VuZGVyIGFzIHBhcnQgb2YgdGhlaXIgc3Via2V5c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2hhcmVQcm9vZihcbiAgc2VuZGVyUHViS2V5OiBzdHJpbmcsXG4gIHByaXZhdGVTaGFyZVByb29mOiBzdHJpbmcsXG4gIHVWYWx1ZTogc3RyaW5nLFxuICBhbGdvOiAnZWRkc2EnIHwgJ2VjZHNhJ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGRlY29kZWRQcm9vZiA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZVNoYXJlUHJvb2YgfSk7XG4gIGNvbnN0IHNlbmRlckdwZ0tleSA9IGF3YWl0IHBncC5yZWFkS2V5KHsgYXJtb3JlZEtleTogc2VuZGVyUHViS2V5IH0pO1xuICBpZiAoIShhd2FpdCBkZWNvZGVkUHJvb2YudmVyaWZ5UHJpbWFyeVVzZXIoW3NlbmRlckdwZ0tleV0pKVswXS52YWxpZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwcm9vZlN1YmtleXMgPSBkZWNvZGVkUHJvb2YuZ2V0U3Via2V5cygpWzFdO1xuICBpZiAoYWxnbyA9PT0gJ2VkZHNhJykge1xuICAgIGNvbnN0IGRlY29kZWRVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKHByb29mU3Via2V5cy5rZXlQYWNrZXQucHVibGljUGFyYW1zWydRJ10uc2xpY2UoMSkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCByYXdVVmFsdWVQcm9vZiA9IEJ1ZmZlci5mcm9tKFxuICAgICAgc29kaXVtLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfYmFzZV9ub2NsYW1wKEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpKVxuICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgIHJldHVybiBkZWNvZGVkVVZhbHVlUHJvb2YgPT09IHJhd1VWYWx1ZVByb29mO1xuICB9IGVsc2UgaWYgKGFsZ28gPT09ICdlY2RzYScpIHtcbiAgICBjb25zdCBkZWNvZGVkVVZhbHVlUHJvb2YgPSBCdWZmZXIuZnJvbShwcm9vZlN1YmtleXMua2V5UGFja2V0LnB1YmxpY1BhcmFtc1snUSddKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgcmF3VVZhbHVlUHJvb2YgPSBzZWNwMjU2azEucG9pbnRGcm9tU2NhbGFyKEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpLCBmYWxzZSk7XG4gICAgcmV0dXJuIHJhd1VWYWx1ZVByb29mICE9PSBudWxsICYmIGRlY29kZWRVVmFsdWVQcm9vZiA9PT0gQnVmZmVyLmZyb20ocmF3VVZhbHVlUHJvb2YpLnRvU3RyaW5nKCdoZXgnKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYWxnb3JpdGhtIHByb3ZpZGVkJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBWZXJpZnkgYSBzaGFyZWQgZGF0YSBwcm9vZi5cbiAqXG4gKiBAcGFyYW0gc2VuZGVyUHViS2V5QXJtIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lciBvZiB0aGUga2V5IHdpdGggcHJvb2YgZGF0YVxuICogQHBhcmFtIGtleVdpdGhOb3RhdGlvbiBzaWduZWQgcmVjaWV2ZXIga2V5IHdpdGggbm90YXRpb24gZGF0YVxuICogQHBhcmFtIGRhdGFUb1ZlcmlmeSBkYXRhIHRvIGJlIGNoZWNrZWQgYWdhaW5zdCBub3RhdGlvbiBkYXRhIGluIHRoZSBzaWduZWQga2V5XG4gKiBAcmV0dXJuIHtib29sZWFufSB3aGV0aGVyIHByb29mIGlzIHZhbGlkXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlTaGFyZWREYXRhUHJvb2YoXG4gIHNlbmRlclB1YktleUFybTogc3RyaW5nLFxuICBrZXlXaXRoTm90YXRpb246IHN0cmluZyxcbiAgZGF0YVRvVmVyaWZ5OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBzZW5kZXJQdWJLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHNlbmRlclB1YktleUFybSB9KTtcbiAgY29uc3Qgc2lnbmVkS2V5ID0gYXdhaXQgcGdwLnJlYWRLZXkoeyBhcm1vcmVkS2V5OiBrZXlXaXRoTm90YXRpb24gfSk7XG4gIGlmICghKGF3YWl0IHNpZ25lZEtleS52ZXJpZnlQcmltYXJ5VXNlcihbc2VuZGVyUHViS2V5XSkudGhlbigodmFsdWVzKSA9PiBfLnNvbWUodmFsdWVzLCAodmFsdWUpID0+IHZhbHVlLnZhbGlkKSkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByaW1hcnlVc2VyID0gYXdhaXQgc2lnbmVkS2V5LmdldFByaW1hcnlVc2VyKCk7XG4gIGNvbnN0IGFueUludmFsaWRQcm9vZiA9IF8uc29tZShcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcHJpbWFyeVVzZXIudXNlci5vdGhlckNlcnRpZmljYXRpb25zWzBdLnJhd05vdGF0aW9ucyxcbiAgICAobm90YXRpb24pID0+IGRhdGFUb1ZlcmlmeS5maW5kKChpKSA9PiBpLm5hbWUgPT09IG5vdGF0aW9uLm5hbWUpPy52YWx1ZSAhPT0gQnVmZmVyLmZyb20obm90YXRpb24udmFsdWUpLnRvU3RyaW5nKClcbiAgKTtcbiAgcmV0dXJuICFhbnlJbnZhbGlkUHJvb2Y7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByb29mIHRocm91Z2ggYWRkaW5nIG5vdGF0aW9uIGRhdGEgdG8gYSBHUEcgY2VyaXRpZnlpbmcgc2lnbmF0dXJlLlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5QXJtb3JlZCBncGcgcHJpdmF0ZSBrZXkgaW4gYXJtb3IgZm9ybWF0IG9mIHRoZSBzZW5kZXJcbiAqIEBwYXJhbSBwdWJsaWNLZXlUb0NlcnRBcm1vcmVkIGdwZyBwdWJsaWMga2V5IGluIGFybW9yIGZvbXJhdCBvZiB0aGUgcmVjaWV2ZXJcbiAqIEBwYXJhbSBub3RhdGlvbnMgZGF0YSB0byBiZSBwcm9vZmVkXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGtleXNoYXJlIHByb29mXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTaGFyZWREYXRhUHJvb2YoXG4gIHByaXZhdGVLZXlBcm1vcmVkOiBzdHJpbmcsXG4gIHB1YmxpY0tleVRvQ2VydEFybW9yZWQ6IHN0cmluZyxcbiAgbm90YXRpb25zOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGNlcnRpZnlpbmdLZXkgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVLZXlBcm1vcmVkIH0pO1xuICBjb25zdCBwdWJsaWNLZXlUb0NlcnQgPSBhd2FpdCBwZ3AucmVhZEtleSh7IGFybW9yZWRLZXk6IHB1YmxpY0tleVRvQ2VydEFybW9yZWQgfSk7XG4gIGNvbnN0IGRhdGVUaW1lID0gbmV3IERhdGUoKTtcbiAgLy8gVXNlcklkIFBhY2tldC5cbiAgY29uc3QgdXNlcklkUGt0ID0gbmV3IHBncC5Vc2VySURQYWNrZXQoKTtcbiAgY29uc3QgcHJpbWFyeVVzZXIgPSBhd2FpdCBwdWJsaWNLZXlUb0NlcnQuZ2V0UHJpbWFyeVVzZXIoKTtcbiAgLy8gQHRzLWlnbm9yZVxuICB1c2VySWRQa3QudXNlcklEID0gcHJpbWFyeVVzZXIudXNlci51c2VySUQudXNlcklEO1xuICAvLyBTaWduYXR1cmUgcGFja2V0LlxuICBjb25zdCBzaWduYXR1cmVQYWNrZXQgPSBuZXcgcGdwLlNpZ25hdHVyZVBhY2tldCgpO1xuICBzaWduYXR1cmVQYWNrZXQuc2lnbmF0dXJlVHlwZSA9IHBncC5lbnVtcy5zaWduYXR1cmUuY2VydFBvc2l0aXZlO1xuICBzaWduYXR1cmVQYWNrZXQucHVibGljS2V5QWxnb3JpdGhtID0gcGdwLmVudW1zLnB1YmxpY0tleS5lY2RzYTtcbiAgc2lnbmF0dXJlUGFja2V0Lmhhc2hBbGdvcml0aG0gPSBwZ3AuZW51bXMuaGFzaC5zaGEyNTY7XG4gIC8vIEB0cy1pZ25vcmVcbiAgc2lnbmF0dXJlUGFja2V0Lmlzc3VlckZpbmdlcnByaW50ID0gYXdhaXQgcHJpbWFyeVVzZXIudXNlci5tYWluS2V5LmtleVBhY2tldC5nZXRGaW5nZXJwcmludEJ5dGVzKCk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgc2lnbmF0dXJlUGFja2V0Lmlzc3VlcktleUlEID0gcHJpbWFyeVVzZXIudXNlci5tYWluS2V5LmtleVBhY2tldC5rZXlJRDtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuc2lnbmluZ0tleUlEID0gcHJpbWFyeVVzZXIudXNlci5tYWluS2V5LmtleVBhY2tldC5rZXlJRDtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuc2lnbmVyc1VzZXJJRCA9IHByaW1hcnlVc2VyLnVzZXIudXNlcklELnVzZXJJRDtcbiAgLy8gQHRzLWlnbm9yZVxuICBzaWduYXR1cmVQYWNrZXQuZmVhdHVyZXMgPSBbMV07XG4gIG5vdGF0aW9ucy5mb3JFYWNoKCh7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2lnbmF0dXJlUGFja2V0LnJhd05vdGF0aW9ucy5wdXNoKFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHZhbHVlKSksXG4gICAgICAgIGh1bWFuUmVhZGFibGU6IHRydWUsXG4gICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfSk7XG5cbiAgLy8gUHJlcGFyZSBzaWduaW5nIGRhdGEuXG4gIGNvbnN0IGtleWRhdGFUb1NpZ24gPSB7fTtcbiAgLy8gQHRzLWlnbm9yZVxuICBrZXlkYXRhVG9TaWduLmtleSA9IHB1YmxpY0tleVRvQ2VydC5rZXlQYWNrZXQ7XG4gIC8vIEB0cy1pZ25vcmVcbiAga2V5ZGF0YVRvU2lnbi51c2VySUQgPSB1c2VySWRQa3Q7XG5cbiAgLy8gU2lnbiB0aGUgZGF0YSAoY3JlYXRlIGNlcnRpZmljYXRpb24pLlxuICAvLyBAdHMtaWdub3JlXG4gIGF3YWl0IHNpZ25hdHVyZVBhY2tldC5zaWduKGNlcnRpZnlpbmdLZXkua2V5UGFja2V0LCBrZXlkYXRhVG9TaWduLCBkYXRlVGltZSk7XG5cbiAgLy8gQXNzZW1ibGUgcGFja2V0cyB0b2dldGhlci5cbiAgY29uc3QgcHVibGljS2V5VG9DZXJ0UGt0cyA9IHB1YmxpY0tleVRvQ2VydC50b1BhY2tldExpc3QoKTtcbiAgY29uc3QgbmV3S2V5UGt0TGlzdCA9IG5ldyBwZ3AuUGFja2V0TGlzdCgpO1xuICBuZXdLZXlQa3RMaXN0LnB1c2goLi4ucHVibGljS2V5VG9DZXJ0UGt0cy5zbGljZSgwLCAzKSwgc2lnbmF0dXJlUGFja2V0LCAuLi5wdWJsaWNLZXlUb0NlcnRQa3RzLnNsaWNlKDMpKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBuZXdQdWJLZXkgPSBuZXcgcGdwLlB1YmxpY0tleShuZXdLZXlQa3RMaXN0KTtcbiAgcmV0dXJuIG5ld1B1YktleS5hcm1vcigpLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIEtleVNoYXJlIFByb29mIGJhc2VkIG9uIGdpdmVuIGFsZ28uXG4gKlxuICogQ3JlYXRlcyBhbiBFZERTQSBLZXlTaGFyZSBQcm9vZiBieSBhcHBlbmRpbmcgYW4gZWQyNTUxOSBzdWJrZXkgKGF1dGgpIHRvIGFuIGFybW9yZWQgZ3BnIHByaXZhdGUga2V5LlxuICogQ3JlYXRlcyBhbiBFQ0RTQSBLZXlTaGFyZSBQcm9vZiBieSBBcHBlbmQgYSBzZWNwMjU2azEgc3Via2V5IChhdXRoKSB0byBhIFBHUCBrZXljaGFpbi5cbiAqXG4gKiBAcGFyYW0gcHJpdmF0ZUFybW9yIGdwZyBwcml2YXRlIGtleSBpbiBhcm1vciBmb3JtYXRcbiAqIEBwYXJhbSB1VmFsdWUgdSB2YWx1ZSBmcm9tIGFuIEVkZHNhIGtleXNoYXJlXG4gKiBAcGFyYW0gYWxnbyBhbGdvIHRvIHVzZSwgZWRkc2Egb3IgZWNkc2FcbiAqIEByZXR1cm4ge3N0cmluZ30ga2V5c2hhcmUgcHJvb2ZcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVNoYXJlUHJvb2YocHJpdmF0ZUFybW9yOiBzdHJpbmcsIHVWYWx1ZTogc3RyaW5nLCBhbGdvOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgcmVhZEtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVBcm1vciB9KTtcbiAgY29uc3QgZGF0ZVRpbWUgPSBuZXcgRGF0ZSgpO1xuICAvLyBAdHMtaWdub3JlIC0gdHlwZSBpbmNvbnNpc3RlbmN5LCB0aGlzIGN0b3Igc3VwcG9ydHMgYSBkYXRlIHBhcmFtOiBodHRwczovL2RvY3Mub3BlbnBncGpzLm9yZy9TZWNyZXRTdWJrZXlQYWNrZXQuaHRtbFxuICBjb25zdCBzZWNyZXRTdWJrZXlQYWNrZXQgPSBuZXcgcGdwLlNlY3JldFN1YmtleVBhY2tldChkYXRlVGltZSk7XG4gIHNlY3JldFN1YmtleVBhY2tldC5hbGdvcml0aG0gPSBwZ3AuZW51bXMucHVibGljS2V5W2FsZ29dO1xuICAvLyBAdHMtaWdub3JlIC0gc2FtZSBhcyBhYm92ZVxuICBzZWNyZXRTdWJrZXlQYWNrZXQuaXNFbmNyeXB0ZWQgPSBmYWxzZTtcbiAgbGV0IG9pZDtcbiAgbGV0IFE7XG4gIGlmIChhbGdvID09PSAnZWRkc2EnKSB7XG4gICAgYXdhaXQgc29kaXVtLnJlYWR5O1xuICAgIGNvbnN0IHN1YktleVZhbCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgc29kaXVtLmNyeXB0b19zY2FsYXJtdWx0X2VkMjU1MTlfYmFzZV9ub2NsYW1wKEJ1ZmZlci5mcm9tKHVWYWx1ZSwgJ2hleCcpLCAndWludDhhcnJheScpXG4gICAgKTtcbiAgICAvLyBTdWIta2V5IChlbmNyeXB0aW9uIGtleSkgcGFja2V0LlxuICAgIG9pZCA9IFsweDJiLCAweDA2LCAweDAxLCAweDA0LCAweDAxLCAweGRhLCAweDQ3LCAweDBmLCAweDAxXTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb2lkLndyaXRlID0gKCkgPT4gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20oJzA5MmIwNjAxMDQwMWRhNDcwZjAxJywgJ2hleCcpKTtcbiAgICBRID0gbmV3IFVpbnQ4QXJyYXkoWzB4NDAsIC4uLnN1YktleVZhbF0pO1xuICB9IGVsc2UgaWYgKGFsZ28gPT09ICdlY2RzYScpIHtcbiAgICBvaWQgPSBbMHgyYiwgMHg4MSwgMHgwNCwgMHgwMCwgMHgwYV07XG4gICAgLy8gQHRzLWlnbm9yZSAtIHNhbWUgYXMgYWJvdmVcbiAgICBvaWQud3JpdGUgPSAoKSA9PiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSgnMDUyYjgxMDQwMDBhJywgJ2hleCcpKTtcbiAgICBRID0gc2VjcDI1NmsxLnBvaW50RnJvbVNjYWxhcihuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh1VmFsdWUsICdoZXgnKSksIGZhbHNlKTtcbiAgfVxuICBzZWNyZXRTdWJrZXlQYWNrZXQucHVibGljUGFyYW1zID0ge1xuICAgIG9pZCxcbiAgICBRLFxuICB9O1xuICAvLyBAdHMtaWdub3JlIC0gc2FtZSBhcyBhYm92ZVxuICBhd2FpdCBzZWNyZXRTdWJrZXlQYWNrZXQuY29tcHV0ZUZpbmdlcnByaW50QW5kS2V5SUQoKTtcblxuICAvLyBTdWIta2V5IHNpZ25hdHVyZSBwYWNrZXQuXG4gIGNvbnN0IHN1YktleWRhdGFUb1NpZ24gPSB7XG4gICAga2V5OiBwcml2YXRlS2V5LmtleVBhY2tldCxcbiAgICBiaW5kOiBzZWNyZXRTdWJrZXlQYWNrZXQsXG4gIH07XG4gIGNvbnN0IHN1YmtleVNpZ25hdHVyZVBhY2tldCA9IG5ldyBwZ3AuU2lnbmF0dXJlUGFja2V0KCk7XG4gIHN1YmtleVNpZ25hdHVyZVBhY2tldC5zaWduYXR1cmVUeXBlID0gcGdwLmVudW1zLnNpZ25hdHVyZS5zdWJrZXlCaW5kaW5nO1xuICBzdWJrZXlTaWduYXR1cmVQYWNrZXQucHVibGljS2V5QWxnb3JpdGhtID0gcGdwLmVudW1zLnB1YmxpY0tleS5lY2RzYTtcbiAgc3Via2V5U2lnbmF0dXJlUGFja2V0Lmhhc2hBbGdvcml0aG0gPSBwZ3AuZW51bXMuaGFzaC5zaGEyNTY7XG4gIHN1YmtleVNpZ25hdHVyZVBhY2tldC5rZXlGbGFncyA9IG5ldyBVaW50OEFycmF5KFtwZ3AuZW51bXMua2V5RmxhZ3MuYXV0aGVudGljYXRpb25dKTtcblxuICAvLyBTaWduIHRoZSBzdWJrZXlcbiAgLy8gQHRzLWlnbm9yZSAtIHNpZ24gc3VwcG9ydHMgYXJiaXRyYXJ5IGRhdGEgZm9yIDJuZCBwYXJhbTogaHR0cHM6Ly9kb2NzLm9wZW5wZ3Bqcy5vcmcvU2lnbmF0dXJlUGFja2V0Lmh0bWxcbiAgYXdhaXQgc3Via2V5U2lnbmF0dXJlUGFja2V0LnNpZ24ocHJpdmF0ZUtleS5rZXlQYWNrZXQsIHN1YktleWRhdGFUb1NpZ24sIGRhdGVUaW1lKTtcblxuICAvLyBBc3NlbWJsZSBwYWNrZXRzIHRvZ2V0aGVyLlxuICBjb25zdCBuZXdLZXlQa3RMaXN0ID0gbmV3IHBncC5QYWNrZXRMaXN0KCk7XG4gIGNvbnN0IHByaXZhdGVLZXlQa3RzID0gcHJpdmF0ZUtleS50b1BhY2tldExpc3QoKTtcbiAgcHJpdmF0ZUtleVBrdHMuZm9yRWFjaCgocGFja2V0KSA9PiBuZXdLZXlQa3RMaXN0LnB1c2gocGFja2V0KSk7XG4gIG5ld0tleVBrdExpc3QucHVzaChzZWNyZXRTdWJrZXlQYWNrZXQsIHN1YmtleVNpZ25hdHVyZVBhY2tldCk7XG4gIC8vIEB0cy1pZ25vcmUgLSBzdXBwb3J0cyBwYWNrZXQgbGlzdCBhcyBjdG9yIHBhcmFtOiBodHRwczovL2RvY3Mub3BlbnBncGpzLm9yZy9Qcml2YXRlS2V5Lmh0bWxcbiAgY29uc3QgbmV3UHViS2V5ID0gbmV3IHBncC5Qcml2YXRlS2V5KG5ld0tleVBrdExpc3QpLnRvUHVibGljKCk7XG5cbiAgaWYgKCEoYXdhaXQgbmV3UHViS2V5LnZlcmlmeVByaW1hcnlVc2VyKFtwcml2YXRlS2V5XSkpWzBdLnZhbGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3Qgc2lnbmF0dXJlJyk7XG4gIH1cblxuICByZXR1cm4gbmV3UHViS2V5LmFybW9yKCkucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbmNyeXB0cyBzdHJpbmcgdXNpbmcgZ3BnIGtleVxuICogQERFUFJFQ0FURUQgLSBzaG91bGQgdXNlIGVuY3J5cHRBbmRTaWduVGV4dCBpbnN0ZWFkIGZvciBhZGRlZCBzZWN1cml0eVxuICpcbiAqIEBwYXJhbSB0ZXh0IHN0cmluZyB0byBlbmNyeXB0XG4gKiBAcGFyYW0ga2V5IGVuY3J5cHRpb24ga2V5XG4gKiBAcmV0dXJuIHtzdHJpbmd9IGVuY3J5cHRlZCBzdHJpbmdcbiAqXG4gKiBUT0RPKEJHLTQ3MTcwKTogRGVsZXRlIG9uY2UgZ3BnIHNpZ25hdHVyZXMgYXJlIGZ1bGx5IHN1cHBvcnRlZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdFRleHQodGV4dDogc3RyaW5nLCBrZXk6IEtleSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IG1lc3NhZ2VUb0VuY3J5cHQgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHtcbiAgICB0ZXh0LFxuICB9KTtcbiAgcmV0dXJuIGF3YWl0IGVuY3J5cHQoe1xuICAgIG1lc3NhZ2U6IG1lc3NhZ2VUb0VuY3J5cHQsXG4gICAgZW5jcnlwdGlvbktleXM6IFtrZXldLFxuICAgIGZvcm1hdDogJ2FybW9yZWQnLFxuICAgIGNvbmZpZzoge1xuICAgICAgcmVqZWN0Q3VydmVzOiBuZXcgU2V0KCksXG4gICAgICBzaG93VmVyc2lvbjogZmFsc2UsXG4gICAgICBzaG93Q29tbWVudDogZmFsc2UsXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRW5jcnlwdHMgYW5kIHNpZ25zIGEgc3RyaW5nXG4gKiBAcGFyYW0gdGV4dCBzdHJpbmcgdG8gZW5jcnlwdCBhbmQgc2lnblxuICogQHBhcmFtIHB1YmxpY0FybW9yIHB1YmxpYyBrZXkgdG8gZW5jcnlwdCB3aXRoXG4gKiBAcGFyYW0gcHJpdmF0ZUFybW9yIHByaXZhdGUga2V5IHRvIHNpZ24gd2l0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdEFuZFNpZ25UZXh0KHRleHQ6IHN0cmluZywgcHVibGljQXJtb3I6IHN0cmluZywgcHJpdmF0ZUFybW9yOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBwdWJsaWNLZXkgPSBhd2FpdCByZWFkS2V5KHsgYXJtb3JlZEtleTogcHVibGljQXJtb3IgfSk7XG4gIGNvbnN0IHByaXZhdGVLZXkgPSBhd2FpdCByZWFkUHJpdmF0ZUtleSh7IGFybW9yZWRLZXk6IHByaXZhdGVBcm1vciB9KTtcblxuICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY3JlYXRlTWVzc2FnZSh7IHRleHQgfSk7XG5cbiAgY29uc3Qgc2lnbmVkTWVzc2FnZSA9IGF3YWl0IGVuY3J5cHQoe1xuICAgIG1lc3NhZ2UsXG4gICAgZW5jcnlwdGlvbktleXM6IHB1YmxpY0tleSxcbiAgICBzaWduaW5nS2V5czogcHJpdmF0ZUtleSxcbiAgICBmb3JtYXQ6ICdhcm1vcmVkJyxcbiAgICBjb25maWc6IHtcbiAgICAgIHJlamVjdEN1cnZlczogbmV3IFNldCgpLFxuICAgICAgc2hvd1ZlcnNpb246IGZhbHNlLFxuICAgICAgc2hvd0NvbW1lbnQ6IGZhbHNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiBzaWduZWRNZXNzYWdlO1xufVxuXG4vKipcbiAqIFJlYWRzIGEgc2lnbmVkIGFuZCBlbmNyeXB0ZWQgbWVzc2FnZVxuICpcbiAqIEBwYXJhbSBzaWduZWQgc2lnbmVkIGFuZCBlbmNyeXB0ZWQgbWVzc2FnZVxuICogQHBhcmFtIHB1YmxpY0FybW9yIHB1YmxpYyBrZXkgdG8gdmVyaWZ5IHNpZ25hdHVyZVxuICogQHBhcmFtIHByaXZhdGVBcm1vciBwcml2YXRlIGtleSB0byBkZWNyeXB0IG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTaWduZWRNZXNzYWdlKHNpZ25lZDogc3RyaW5nLCBwdWJsaWNBcm1vcjogc3RyaW5nLCBwcml2YXRlQXJtb3I6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwdWJsaWNBcm1vciB9KTtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuXG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZWFkTWVzc2FnZSh7IGFybW9yZWRNZXNzYWdlOiBzaWduZWQgfSk7XG4gIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IGRlY3J5cHQoe1xuICAgIG1lc3NhZ2UsXG4gICAgdmVyaWZpY2F0aW9uS2V5czogcHVibGljS2V5LFxuICAgIGRlY3J5cHRpb25LZXlzOiBwcml2YXRlS2V5LFxuICAgIGV4cGVjdFNpZ25lZDogdHJ1ZSxcbiAgICBjb25maWc6IHsgcmVqZWN0Q3VydmVzOiBuZXcgU2V0KCkgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY3J5cHRlZC5kYXRhO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSB0ZXh0IHN0cmluZyB0byBnZW5lcmF0ZSBhIHNpZ25hdHVyZSBmb3JcbiAqIEBwYXJhbSBwcml2YXRlQXJtb3IgcHJpdmF0ZSBrZXkgYXMgYXJtb3JlZCBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gYXJtb3JlZCBzaWduYXR1cmUgc3RyaW5nXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaWduVGV4dCh0ZXh0OiBzdHJpbmcsIHByaXZhdGVBcm1vcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IHJlYWRQcml2YXRlS2V5KHsgYXJtb3JlZEtleTogcHJpdmF0ZUFybW9yIH0pO1xuICBjb25zdCBtZXNzYWdlID0gYXdhaXQgY3JlYXRlTWVzc2FnZSh7IHRleHQgfSk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IHNpZ24oe1xuICAgIG1lc3NhZ2UsXG4gICAgc2lnbmluZ0tleXM6IHByaXZhdGVLZXksXG4gICAgZm9ybWF0OiAnYXJtb3JlZCcsXG4gICAgZGV0YWNoZWQ6IHRydWUsXG4gIH0pO1xuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbi8qKlxuICogVmVyaWZpZXMgc2lnbmF0dXJlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIHB1YmxpYyBrZXkgYW5kIG1hdGNoZXMgdGhlIGV4cGVjdGVkIHRleHRcbiAqXG4gKiBAcGFyYW0gdGV4dCB0ZXh0IHRoYXQgdGhlIHNpZ25hdHVyZSB3YXMgZm9yXG4gKiBAcGFyYW0gYXJtb3JlZFNpZ25hdHVyZSBzaWduZWQgbWVzc2FnZSBhcyBhbiBhcm1vcmVkIHN0cmluZ1xuICogQHBhcmFtIHB1YmxpY0FybW9yIHB1YmxpYyBrZXkgdGhhdCBnZW5lcmF0ZWQgdGhlIHNpZ25hdHVyZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKHRleHQ6IHN0cmluZywgYXJtb3JlZFNpZ25hdHVyZTogc3RyaW5nLCBwdWJsaWNBcm1vcjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHB1YmxpY0tleSA9IGF3YWl0IHJlYWRLZXkoeyBhcm1vcmVkS2V5OiBwdWJsaWNBcm1vciB9KTtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgcmVhZFNpZ25hdHVyZSh7IGFybW9yZWRTaWduYXR1cmUgfSk7XG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCBjcmVhdGVNZXNzYWdlKHsgdGV4dCB9KTtcbiAgY29uc3QgdmVyaWZpY2F0aW9uUmVzdWx0ID0gYXdhaXQgdmVyaWZ5KHtcbiAgICBtZXNzYWdlLFxuICAgIHNpZ25hdHVyZSxcbiAgICB2ZXJpZmljYXRpb25LZXlzOiBwdWJsaWNLZXksXG4gIH0pO1xuXG4gIGlmICh2ZXJpZmljYXRpb25SZXN1bHQuc2lnbmF0dXJlcy5sZW5ndGggIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbnVtYmVyIG9mIHNpZ25hdHVyZXMnKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgdmVyaWZpY2F0aW9uUmVzdWx0LnNpZ25hdHVyZXNbMF0udmVyaWZpZWQ7XG4gICAgcmV0dXJuIHRleHQgPT09IHZlcmlmaWNhdGlvblJlc3VsdC5kYXRhO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIEdQRyBrZXkgcGFpclxuICpcbiAqIEBwYXJhbToga2V5Q3VydmUgdGhlIGN1cnZlIHRvIGNyZWF0ZSBhIGtleSB3aXRoXG4gKiBAcGFyYW06IHVzZXJuYW1lIG5hbWUgb2YgdGhlIHVzZXIgKG9wdGlvbmFsKVxuICogQHBhcmFtOiBlbWFpbCBlbWFpbCBvZiB0aGUgdXNlciAob3B0aW9uYWwpXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUdQR0tleVBhaXIoXG4gIGtleUN1cnZlOiBwZ3AuRWxsaXB0aWNDdXJ2ZU5hbWUsXG4gIHVzZXJuYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBlbWFpbD86IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogUHJvbWlzZTxwZ3AuU2VyaWFsaXplZEtleVBhaXI8c3RyaW5nPj4ge1xuICBjb25zdCByYW5kb21IZXhTdHJpbmcgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTIpLnRvU3RyaW5nKCdoZXgnKTtcbiAgdXNlcm5hbWUgPSB1c2VybmFtZSA/PyByYW5kb21IZXhTdHJpbmc7XG4gIGVtYWlsID0gZW1haWwgPz8gYHVzZXItJHtyYW5kb21IZXhTdHJpbmd9QCR7cmFuZG9tSGV4U3RyaW5nfS5jb21gO1xuXG4gIC8vIEFsbG93IGdlbmVyYXRpbmcgc2VjcDI1NmsxIGtleSBwYWlyc1xuICBwZ3AuY29uZmlnLnJlamVjdEN1cnZlcyA9IG5ldyBTZXQoKTtcbiAgY29uc3QgZ3BnS2V5ID0gYXdhaXQgcGdwLmdlbmVyYXRlS2V5KHtcbiAgICB1c2VySURzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHVzZXJuYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjdXJ2ZToga2V5Q3VydmUsXG4gIH0pO1xuXG4gIHJldHVybiBncGdLZXk7XG59XG4iXX0=
@@ -3,7 +3,7 @@ import { Key, SerializedKeyPair } from 'openpgp';
3
3
  import { IBaseCoin, KeychainsTriplet } from '../../baseCoin';
4
4
  import { BitGoBase } from '../../bitgoBase';
5
5
  import { Keychain } from '../../keychain';
6
- import { IWallet } from '../../wallet';
6
+ import { IWallet, BackupProvider } from '../../wallet';
7
7
  import { MpcUtils } from '../mpcUtils';
8
8
  import { BitgoHeldBackupKeyShare, CustomGShareGeneratingFunction, CustomRShareGeneratingFunction, ITssUtils, PrebuildTransactionWithIntentOptions, SignatureShareRecord, TSSParams, TxRequest, TxRequestVersion, CreateKeychainParamsBase, IntentOptionsForMessage, IntentOptionsForTypedData, CreateBitGoKeychainParamsBase } from './baseTypes';
9
9
  import { GShare, SignShare, YShare } from '../../../account-lib/mpc/tss';
@@ -14,8 +14,8 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
14
14
  private _wallet?;
15
15
  constructor(bitgo: BitGoBase, baseCoin: IBaseCoin, wallet?: IWallet);
16
16
  get wallet(): IWallet;
17
- createBitgoHeldBackupKeyShare(userGpgKey: SerializedKeyPair<string>): Promise<BitgoHeldBackupKeyShare>;
18
- finalizeBitgoHeldBackupKeyShare(keyId: string, commonKeychain: string, userKeyShare: KeyShare, bitgoKeychain: Keychain, gpgKey: SerializedKeyPair<string>, bitgoPublicGpgKey?: Key): Promise<BitgoHeldBackupKeyShare>;
17
+ createBitgoHeldBackupKeyShare(userGpgKey: SerializedKeyPair<string>, enterprise: string | undefined): Promise<BitgoHeldBackupKeyShare>;
18
+ finalizeBitgoHeldBackupKeyShare(keyId: string, commonKeychain: string, userKeyShare: KeyShare, bitgoKeychain: Keychain, userGpgKey: SerializedKeyPair<string>, backupGpgKey: Key): Promise<BitgoHeldBackupKeyShare>;
19
19
  createUserKeychain(params: CreateKeychainParamsBase): Promise<Keychain>;
20
20
  createBackupKeychain(params: CreateKeychainParamsBase): Promise<Keychain>;
21
21
  createBitgoKeychain(params: CreateBitGoKeychainParamsBase): Promise<Keychain>;
@@ -24,6 +24,7 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
24
24
  enterprise?: string | undefined;
25
25
  originalPasscodeEncryptionCode?: string | undefined;
26
26
  isThirdPartyBackup?: boolean;
27
+ backupProvider?: BackupProvider;
27
28
  }): Promise<KeychainsTriplet>;
28
29
  signTxRequest(params: TSSParams): Promise<TxRequest>;
29
30
  signTxRequestForMessage(params: TSSParams): Promise<TxRequest>;
@@ -132,7 +133,7 @@ export default class BaseTssUtils<KeyShare> extends MpcUtils implements ITssUtil
132
133
  * Checks whether the third party backup provider is valid/supported
133
134
  * @param backupProvider - the backup provider client selected
134
135
  */
135
- isValidThirdPartyBackupProvider(backupProvider: string | undefined): boolean;
136
+ isValidThirdPartyBackupProvider(backupProvider: BackupProvider | string | undefined): backupProvider is BackupProvider;
136
137
  /**
137
138
  * It gets the appropriate BitGo GPG public key for key creation based on a
138
139
  * combination of coin and the feature flags on the user and their enterprise if set.
@@ -1 +1 @@
1
- {"version":3,"file":"baseTSSUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTSSUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseTSSUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/baseTSSUtils.ts"],"names":[],"mappings":"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"}
@@ -37,10 +37,11 @@ class BaseTssUtils extends mpcUtils_1.MpcUtils {
37
37
  }
38
38
  return this._wallet;
39
39
  }
40
- async createBitgoHeldBackupKeyShare(userGpgKey) {
40
+ async createBitgoHeldBackupKeyShare(userGpgKey, enterprise) {
41
41
  const keyResponse = await this.bitgo
42
42
  .post(this.baseCoin.url('/krs/backupkeys'))
43
43
  .send({
44
+ enterprise,
44
45
  userGPGPublicKey: userGpgKey.publicKey,
45
46
  })
46
47
  .result();
@@ -52,7 +53,7 @@ class BaseTssUtils extends mpcUtils_1.MpcUtils {
52
53
  keyShares: keyResponse.keyShares,
53
54
  };
54
55
  }
55
- finalizeBitgoHeldBackupKeyShare(keyId, commonKeychain, userKeyShare, bitgoKeychain, gpgKey, bitgoPublicGpgKey) {
56
+ finalizeBitgoHeldBackupKeyShare(keyId, commonKeychain, userKeyShare, bitgoKeychain, userGpgKey, backupGpgKey) {
56
57
  throw new Error('Method not implemented.');
57
58
  }
58
59
  createUserKeychain(params) {
@@ -262,4 +263,4 @@ class BaseTssUtils extends mpcUtils_1.MpcUtils {
262
263
  }
263
264
  }
264
265
  exports.default = BaseTssUtils;
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVRTU1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVFNTVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EscUNBQTBEO0FBSTFELG1DQUF5QztBQUV6QywwQ0FBdUM7QUFDdkMsMENBQTRCO0FBcUI1Qjs7R0FFRztBQUNILE1BQXFCLFlBQXVCLFNBQVEsbUJBQVE7SUFHMUQsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsTUFBZ0I7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxVQUFxQztRQUN2RSxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzFDLElBQUksQ0FBQztZQUNKLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxTQUFTO1NBQ3ZDLENBQUM7YUFDRCxNQUFNLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUM1RDtRQUNELE9BQU87WUFDTCxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFD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SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQW1CO1FBQ3BDLE9BQU8sa0JBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7T0FHRztJQUNILCtCQUErQixDQUFDLGNBQWtDO1FBQ2hFLDhEQUE4RDtRQUM5RCxPQUFPLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxjQUFjLEtBQUssaUJBQWlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxZQUFnQztRQUNoRixNQUFNLFFBQVEsR0FBc0IsTUFBTSxJQUFJLENBQUMsS0FBSzthQUNqRCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDckMsS0FBSyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUM7YUFDdkIsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxTQUFtQixDQUFDO1FBQ3ZELE9BQU8saUJBQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBOVNELCtCQThTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZXF1ZXN0VHJhY2VyIH0gZnJvbSAnLi4vLi4vLi4vYXBpJztcbmltcG9ydCB7IEtleSwgcmVhZEtleSwgU2VyaWFsaXplZEtleVBhaXIgfSBmcm9tICdvcGVucGdwJztcbmltcG9ydCB7IElCYXNlQ29pbiwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uLy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uLy4uL2tleWNoYWluJztcbmltcG9ydCB7IGdldFR4UmVxdWVzdCB9IGZyb20gJy4uLy4uL3Rzcyc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vLi4vd2FsbGV0JztcbmltcG9ydCB7IE1wY1V0aWxzIH0gZnJvbSAnLi4vbXBjVXRpbHMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQml0Z29HUEdQdWJsaWNLZXksXG4gIEJpdGdvSGVsZEJhY2t1cEtleVNoYXJlLFxuICBDdXN0b21HU2hhcmVHZW5lcmF0aW5nRnVuY3Rpb24sXG4gIEN1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbixcbiAgSVRzc1V0aWxzLFxuICBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBUU1NQYXJhbXMsXG4gIFR4UmVxdWVzdCxcbiAgVHhSZXF1ZXN0VmVyc2lvbixcbiAgQ3JlYXRlS2V5Y2hhaW5QYXJhbXNCYXNlLFxuICBJbnRlbnRPcHRpb25zRm9yTWVzc2FnZSxcbiAgUG9wdWxhdGVkSW50ZW50Rm9yTWVzc2FnZVNpZ25pbmcsXG4gIEludGVudE9wdGlvbnNGb3JUeXBlZERhdGEsXG4gIFBvcHVsYXRlZEludGVudEZvclR5cGVkRGF0YVNpZ25pbmcsXG4gIENyZWF0ZUJpdEdvS2V5Y2hhaW5QYXJhbXNCYXNlLFxufSBmcm9tICcuL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBHU2hhcmUsIFNpZ25TaGFyZSwgWVNoYXJlIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5cbi8qKlxuICogQmFzZVRzc1V0aWwgY2xhc3Mgd2hpY2ggZGlmZmVyZW50IHNpZ25hdHVyZSBzY2hlbWVzIGhhdmUgdG8gZXh0ZW5kXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VUc3NVdGlsczxLZXlTaGFyZT4gZXh0ZW5kcyBNcGNVdGlscyBpbXBsZW1lbnRzIElUc3NVdGlsczxLZXlTaGFyZT4ge1xuICBwcml2YXRlIF93YWxsZXQ/OiBJV2FsbGV0O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICBzdXBlcihiaXRnbywgYmFzZUNvaW4pO1xuICAgIHRoaXMuX3dhbGxldCA9IHdhbGxldDtcbiAgfVxuXG4gIGdldCB3YWxsZXQoKTogSVdhbGxldCB7XG4gICAgaWYgKF8uaXNOaWwodGhpcy5fd2FsbGV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXYWxsZXQgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dhbGxldDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUJpdGdvSGVsZEJhY2t1cEtleVNoYXJlKHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4pOiBQcm9taXNlPEJpdGdvSGVsZEJhY2t1cEtleVNoYXJlPiB7XG4gICAgY29uc3Qga2V5UmVzcG9uc2UgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJhc2VDb2luLnVybCgnL2tycy9iYWNrdXBrZXlzJykpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIHVzZXJHUEdQdWJsaWNLZXk6IHVzZXJHcGdLZXkucHVibGljS2V5LFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgICBpZiAoIWtleVJlc3BvbnNlIHx8ICFrZXlSZXNwb25zZS5rZXlTaGFyZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdldCBiYWNrdXAgc2hhcmVzIGZyb20gQml0R28uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDoga2V5UmVzcG9uc2UuaWQsXG4gICAgICBrZXlTaGFyZXM6IGtleVJlc3BvbnNlLmtleVNoYXJlcyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGZpbmFsaXplQml0Z29IZWxkQmFja3VwS2V5U2hhcmUoXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICBjb21tb25LZXljaGFpbjogc3RyaW5nLFxuICAgIHVzZXJLZXlTaGFyZTogS2V5U2hhcmUsXG4gICAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW4sXG4gICAgZ3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIGJpdGdvUHVibGljR3BnS2V5PzogS2V5XG4gICk6IFByb21pc2U8Qml0Z29IZWxkQmFja3VwS2V5U2hhcmU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBjcmVhdGVVc2VyS2V5Y2hhaW4ocGFyYW1zOiBDcmVhdGVLZXljaGFpblBhcmFtc0Jhc2UpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgY3JlYXRlQmFja3VwS2V5Y2hhaW4ocGFyYW1zOiBDcmVhdGVLZXljaGFpblBhcmFtc0Jhc2UpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgY3JlYXRlQml0Z29LZXljaGFpbihwYXJhbXM6IENyZWF0ZUJpdEdvS2V5Y2hhaW5QYXJhbXNCYXNlKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaXNUaGlyZFBhcnR5QmFja3VwPzogYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8S2V5Y2hhaW5zVHJpcGxldD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHNpZ25UeFJlcXVlc3QocGFyYW1zOiBUU1NQYXJhbXMpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHNpZ25UeFJlcXVlc3RGb3JNZXNzYWdlKHBhcmFtczogVFNTUGFyYW1zKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSB0cmFuc2FjdGlvbiB1c2luZyBUU1MgZm9yIEVkRFNBIGFuZCB0aHJvdWdoIHV0aWxpemF0aW9uIG9mIGN1c3RvbSBzaGFyZSBnZW5lcmF0b3JzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgVHhSZXF1ZXN0fSB0eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IHdpdGggdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtDdXN0b21SU2hhcmVHZW5lcmF0aW5nRnVuY3Rpb259IGV4dGVybmFsU2lnbmVyUlNoYXJlR2VuZXJhdG9yIGEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIFIgc2hhcmVzIGluIHRoZSBFZERTQSBUU1MgZmxvd1xuICAgKiBAcGFyYW0ge0N1c3RvbUdTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbn0gZXh0ZXJuYWxTaWduZXJHU2hhcmVHZW5lcmF0b3IgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgRyBzaGFyZXMgaW4gdGhlIEVkRFNBIFRTUyBmbG93XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59IC0gYSBzaWduZWQgdHggcmVxdWVzdFxuICAgKi9cbiAgc2lnblVzaW5nRXh0ZXJuYWxTaWduZXIoXG4gICAgdHhSZXF1ZXN0OiBzdHJpbmcgfCBUeFJlcXVlc3QsXG4gICAgZXh0ZXJuYWxTaWduZXJSU2hhcmVHZW5lcmF0b3I6IEN1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbixcbiAgICBleHRlcm5hbFNpZ25lckdTaGFyZUdlbmVyYXRvcjogQ3VzdG9tR1NoYXJlR2VuZXJhdGluZ0Z1bmN0aW9uXG4gICk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBSIChVc2VyIHRvIEJpdEdvKSBzaGFyZSBmcm9tIGFuIHVuc2lnbmVkIHRyYW5zYWN0aW9uIGFuZCBwcml2YXRlIHVzZXIgc2lnbmluZyBtYXRlcmlhbFxuICAgKlxuICAgKiBAcGFyYW0ge1R4UmVxdWVzdH0gdHhSZXF1ZXN0IC0gdHJhbnNhY3Rpb24gcmVxdWVzdCB3aXRoIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSB1c2VyIHNpZ25pbmcgbWF0ZXJpYWxcbiAgICogQHJldHVybnMge1Byb21pc2U8eyByU2hhcmU6IFNpZ25TaGFyZTsgc2lnbmluZ0tleVlTaGFyZTogWVNoYXJlIH0+fSAtIFIgU2hhcmUgYW5kIHRoZSBTaWduaW5nIEtleSdzIFkgc2hhcmUgdG8gQml0R29cbiAgICovXG4gIGNyZWF0ZVJTaGFyZUZyb21UeFJlcXVlc3QocGFyYW1zOiB7XG4gICAgdHhSZXF1ZXN0OiBUeFJlcXVlc3Q7XG4gICAgcHJ2OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHsgclNoYXJlOiBTaWduU2hhcmU7IHNpZ25pbmdLZXlZU2hhcmU6IFlTaGFyZSB9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIEcgKFVzZXIgdG8gQml0R28pIHNoYXJlIGZyb20gYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByaXZhdGUgdXNlciBzaWduaW5nIG1hdGVyaWFsXG4gICAqXG4gICAqIEBwYXJhbSB7VHhSZXF1ZXN0fSB0eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IHdpdGggdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHVzZXIgc2lnbmluZyBtYXRlcmlhbFxuICAgKiBAcGFyYW0ge1NpZ25hdHVyZVNoYXJlUmVjb3JkfSBiaXRnb1RvVXNlclJTaGFyZSAtIEJpdEdvIHRvIFVzZXIgUiBTaGFyZVxuICAgKiBAcGFyYW0ge1NpZ25TaGFyZX0gdXNlclRvQml0Z29SU2hhcmUgLSBVc2VyIHRvIEJpdEdvIFIgU2hhcmVcbiAgICogQHJldHVybnMge1Byb21pc2U8R1NoYXJlPn0gLSBHU2hhcmUgZnJvbSBVc2VyIHRvIEJpdEdvXG4gICAqL1xuICBjcmVhdGVHU2hhcmVGcm9tVHhSZXF1ZXN0KHBhcmFtczoge1xuICAgIHR4UmVxdWVzdDogVHhSZXF1ZXN0O1xuICAgIHBydjogc3RyaW5nO1xuICAgIGJpdGdvVG9Vc2VyUlNoYXJlOiBTaWduYXR1cmVTaGFyZVJlY29yZDtcbiAgICB1c2VyVG9CaXRnb1JTaGFyZTogU2lnblNoYXJlO1xuICB9KTogUHJvbWlzZTxHU2hhcmU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgdHggcmVxdWVzdCBmcm9tIHBhcmFtcyBhbmQgdmVyaWZ5IGl0XG4gICAqXG4gICAqIEBwYXJhbSB7UHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zfSBwYXJhbXMgLSBwYXJhbWV0ZXJzIHRvIGJ1aWxkIHRoZSB0eFxuICAgKiBAcGFyYW0ge1R4UmVxdWVzdFZlcnNpb259IGFwaVZlcnNpb24gbGl0ZSBvciBmdWxsXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlldyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhpcyBpcyB0byBwcmV2aWV3IGEgdHggcmVxdWVzdCwgd2hpY2ggd2lsbCBub3QgaW5pdGlhdGUgcG9saWN5IGNoZWNrcyBvciBwZW5kaW5nIGFwcHJvdmFsc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUeFJlcXVlc3Q+fSAtIGEgYnVpbHQgdHggcmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgcHJlYnVpbGRUeFdpdGhJbnRlbnQoXG4gICAgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gICAgYXBpVmVyc2lvbjogVHhSZXF1ZXN0VmVyc2lvbiA9ICdsaXRlJyxcbiAgICBwcmV2aWV3PzogYm9vbGVhblxuICApOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIGNvbnN0IGludGVudE9wdGlvbnMgPSB0aGlzLnBvcHVsYXRlSW50ZW50KHRoaXMuYmFzZUNvaW4sIHBhcmFtcyk7XG5cbiAgICBjb25zdCB3aGl0ZWxpc3RlZFBhcmFtcyA9IHtcbiAgICAgIGludGVudDoge1xuICAgICAgICAuLi5pbnRlbnRPcHRpb25zLFxuICAgICAgfSxcbiAgICAgIGFwaVZlcnNpb246IGFwaVZlcnNpb24sXG4gICAgICBwcmV2aWV3LFxuICAgIH07XG5cbiAgICBjb25zdCB1bnNpZ25lZFR4ID0gKGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0LycgKyB0aGlzLndhbGxldC5pZCgpICsgJy90eHJlcXVlc3RzJywgMikpXG4gICAgICAuc2VuZCh3aGl0ZWxpc3RlZFBhcmFtcylcbiAgICAgIC5yZXN1bHQoKSkgYXMgVHhSZXF1ZXN0O1xuXG4gICAgcmV0dXJuIHVuc2lnbmVkVHg7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdHggcmVxdWVzdCBmcm9tIHBhcmFtcyBmb3IgbWVzc2FnZSBzaWduaW5nXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIGFwaVZlcnNpb25cbiAgICogQHBhcmFtIHByZXZpZXdcbiAgICovXG4gIGFzeW5jIGNyZWF0ZVR4UmVxdWVzdFdpdGhJbnRlbnRGb3JNZXNzYWdlU2lnbmluZyhcbiAgICBwYXJhbXM6IEludGVudE9wdGlvbnNGb3JNZXNzYWdlLFxuICAgIGFwaVZlcnNpb246IFR4UmVxdWVzdFZlcnNpb24gPSAnZnVsbCcsXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBjb25zdCBpbnRlbnRPcHRpb25zOiBQb3B1bGF0ZWRJbnRlbnRGb3JNZXNzYWdlU2lnbmluZyA9IHtcbiAgICAgIGN1c3RvZGlhbk1lc3NhZ2VJZDogcGFyYW1zLmN1c3RvZGlhbk1lc3NhZ2VJZCxcbiAgICAgIGludGVudFR5cGU6IHBhcmFtcy5pbnRlbnRUeXBlLFxuICAgICAgc2VxdWVuY2VJZDogcGFyYW1zLnNlcXVlbmNlSWQsXG4gICAgICBjb21tZW50OiBwYXJhbXMuY29tbWVudCxcbiAgICAgIG1lbW86IHBhcmFtcy5tZW1vPy52YWx1ZSxcbiAgICAgIGlzVHNzOiBwYXJhbXMuaXNUc3MsXG4gICAgICBtZXNzYWdlUmF3OiBwYXJhbXMubWVzc2FnZVJhdyxcbiAgICAgIG1lc3NhZ2VFbmNvZGVkOiBwYXJhbXMubWVzc2FnZUVuY29kZWQgPz8gJycsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVR4UmVxdWVzdEJhc2UoaW50ZW50T3B0aW9ucywgYXBpVmVyc2lvbiwgcHJldmlldyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdHggcmVxdWVzdCBmcm9tIHBhcmFtcyBmb3IgdHlwZSBkYXRhIHNpZ25pbmdcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gYXBpVmVyc2lvblxuICAgKiBAcGFyYW0gcHJldmlld1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlVHhSZXF1ZXN0V2l0aEludGVudEZvclR5cGVkRGF0YVNpZ25pbmcoXG4gICAgcGFyYW1zOiBJbnRlbnRPcHRpb25zRm9yVHlwZWREYXRhLFxuICAgIGFwaVZlcnNpb246IFR4UmVxdWVzdFZlcnNpb24gPSAnZnVsbCcsXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBjb25zdCBpbnRlbnRPcHRpb25zOiBQb3B1bGF0ZWRJbnRlbnRGb3JUeXBlZERhdGFTaWduaW5nID0ge1xuICAgICAgY3VzdG9kaWFuTWVzc2FnZUlkOiBwYXJhbXMuY3VzdG9kaWFuTWVzc2FnZUlkLFxuICAgICAgaW50ZW50VHlwZTogcGFyYW1zLmludGVudFR5cGUsXG4gICAgICBzZXF1ZW5jZUlkOiBwYXJhbXMuc2VxdWVuY2VJZCxcbiAgICAgIGNvbW1lbnQ6IHBhcmFtcy5jb21tZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgaXNUc3M6IHBhcmFtcy5pc1RzcyxcbiAgICAgIG1lc3NhZ2VSYXc6IHBhcmFtcy50eXBlZERhdGFSYXcsXG4gICAgICBtZXNzYWdlRW5jb2RlZDogcGFyYW1zLnR5cGVkRGF0YUVuY29kZWQgPz8gJycsXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVR4UmVxdWVzdEJhc2UoaW50ZW50T3B0aW9ucywgYXBpVmVyc2lvbiwgcHJldmlldyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgQml0Z28gQVBJIHRvIGNyZWF0ZSB0eCByZXF1ZXN0LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVUeFJlcXVlc3RCYXNlKFxuICAgIGludGVudE9wdGlvbnM6IFBvcHVsYXRlZEludGVudEZvclR5cGVkRGF0YVNpZ25pbmcgfCBQb3B1bGF0ZWRJbnRlbnRGb3JNZXNzYWdlU2lnbmluZyxcbiAgICBhcGlWZXJzaW9uOiBUeFJlcXVlc3RWZXJzaW9uLFxuICAgIHByZXZpZXc/OiBib29sZWFuXG4gICk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgY29uc3Qgd2hpdGVsaXN0ZWRQYXJhbXMgPSB7XG4gICAgICBpbnRlbnQ6IHtcbiAgICAgICAgLi4uaW50ZW50T3B0aW9ucyxcbiAgICAgIH0sXG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgcHJldmlldyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYml0Z28udXJsKGAvd2FsbGV0LyR7dGhpcy53YWxsZXQuaWQoKX0vdHhyZXF1ZXN0c2AsIDIpKVxuICAgICAgLnNlbmQod2hpdGVsaXN0ZWRQYXJhbXMpXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBkZWxldGUgc2lnbmF0dXJlIHNoYXJlcyBmb3IgYSB0eFJlcXVlc3QsIHRoZSBlbmRwb2ludCBkZWxldGUgdGhlIHNpZ25hdHVyZXMgYW5kIHJldHVybiB0aGVtXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eFJlcXVlc3RJZCB0eCBpZCByZWZlcmVuY2UgdG8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXNcbiAgICogQHJldHVybnMge1NpZ25hdHVyZVNoYXJlUmVjb3JkW119XG4gICAqL1xuICBhc3luYyBkZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U2lnbmF0dXJlU2hhcmVSZWNvcmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmJpdGdvXG4gICAgICAuZGVsKHRoaXMuYml0Z28udXJsKGAvd2FsbGV0LyR7dGhpcy53YWxsZXQuaWQoKX0vdHhyZXF1ZXN0cy8ke3R4UmVxdWVzdElkfS9zaWduYXR1cmVzaGFyZXNgLCAyKSlcbiAgICAgIC5zZW5kKClcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBzZW5kIHByb2NlZHVyZSBvbmNlIEJpdGdvIGhhcyB0aGUgVXNlciBUbyBCaXRnbyBHU2hhcmVcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgYXN5bmMgc2VuZFR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iYXNlQ29pbi51cmwoJy93YWxsZXQvJyArIHRoaXMud2FsbGV0LmlkKCkgKyAnL3R4L3NlbmQnKSlcbiAgICAgIC5zZW5kKHsgdHhSZXF1ZXN0SWQgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgc2lnbmF0dXJlIHNoYXJlcywgZ2V0IHRoZSB0eCByZXF1ZXN0IHdpdGhvdXQgdGhlbSBmcm9tIHRoZSBkYiBhbmQgc2lnbiBpdCB0byBmaW5hbGx5IHNlbmQgaXQuXG4gICAqXG4gICAqIE5vdGUgOiBUaGlzIGNhbiBiZSBwZXJmb3JtZWQgaW4gb3JkZXIgdG8gcmVhY2ggbGF0ZXN0IG5ldHdvcmsgY29uZGl0aW9ucyByZXF1aXJlZCBvbiBwZW5kaW5nIGFwcHJvdmFsIGZsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWQgdG8gbWFrZSB0aGUgcmVxdWVzdHMuXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBkZWNyeXB0ZWRQcnYgLSBkZWNyeXB0ZWQgcHJ2IHRvIHNpZ24gdGhlIHR4IHJlcXVlc3QuXG4gICAqIEBwYXJhbSB7UmVxdWVzdFRyYWNlcn0gcmVxSWQgaWQgdHJhY2VyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgYXN5bmMgcmVjcmVhdGVUeFJlcXVlc3QodHhSZXF1ZXN0SWQ6IHN0cmluZywgZGVjcnlwdGVkUHJ2OiBzdHJpbmcsIHJlcUlkOiBJUmVxdWVzdFRyYWNlcik6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgYXdhaXQgdGhpcy5kZWxldGVTaWduYXR1cmVTaGFyZXModHhSZXF1ZXN0SWQpO1xuICAgIC8vIGFmdGVyIGRlbGV0ZSBzaWduYXR1cmVzIHNoYXJlcyBnZXQgdGhlIHR4IHdpdGhvdXQgdGhlbVxuICAgIGNvbnN0IHR4UmVxdWVzdCA9IGF3YWl0IGdldFR4UmVxdWVzdCh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5pZCgpLCB0eFJlcXVlc3RJZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2lnblR4UmVxdWVzdCh7IHR4UmVxdWVzdCwgcHJ2OiBkZWNyeXB0ZWRQcnYsIHJlcUlkIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBUeCBSZXF1ZXN0IGJ5IGlkXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eFJlcXVlc3RJZCAtIHRoZSB0eFJlcXVlc3QgSWRcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn1cbiAgICovXG4gIGFzeW5jIGdldFR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICByZXR1cm4gZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdGhpcmQgcGFydHkgYmFja3VwIHByb3ZpZGVyIGlzIHZhbGlkL3N1cHBvcnRlZFxuICAgKiBAcGFyYW0gYmFja3VwUHJvdmlkZXIgLSB0aGUgYmFja3VwIHByb3ZpZGVyIGNsaWVudCBzZWxlY3RlZFxuICAgKi9cbiAgaXNWYWxpZFRoaXJkUGFydHlCYWNrdXBQcm92aWRlcihiYWNrdXBQcm92aWRlcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgLy8gQXMgb2Ygbm93LCBCaXRHbyBpcyB0aGUgb25seSBzdXBwb3J0ZWQgS1JTIHByb3ZpZGVyIGZvciBUU1NcbiAgICByZXR1cm4gISEoYmFja3VwUHJvdmlkZXIgJiYgYmFja3VwUHJvdmlkZXIgPT09ICdCaXRHb1RydXN0QXNLcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBnZXRzIHRoZSBhcHByb3ByaWF0ZSBCaXRHbyBHUEcgcHVibGljIGtleSBmb3Iga2V5IGNyZWF0aW9uIGJhc2VkIG9uIGFcbiAgICogY29tYmluYXRpb24gb2YgY29pbiBhbmQgdGhlIGZlYXR1cmUgZmxhZ3Mgb24gdGhlIHVzZXIgYW5kIHRoZWlyIGVudGVycHJpc2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gZW50ZXJwcmlzZUlkIC0gZW50ZXJwcmlzZSB1bmRlciB3aGljaCB1c2VyIHdhbnRzIHRvIGNyZWF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzKGVudGVycHJpc2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxLZXk+IHtcbiAgICBjb25zdCByZXNwb25zZTogQml0Z29HUEdQdWJsaWNLZXkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYmFzZUNvaW4udXJsKCcvdHNzL3B1YmtleScpKVxuICAgICAgLnF1ZXJ5KHsgZW50ZXJwcmlzZUlkIH0pXG4gICAgICAucmVzdWx0KCk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNLZXlTdHIgPSByZXNwb25zZS5wdWJsaWNLZXkgYXMgc3RyaW5nO1xuICAgIHJldHVybiByZWFkS2V5KHsgYXJtb3JlZEtleTogYml0Z29QdWJsaWNLZXlTdHIgfSk7XG4gIH1cbn1cbiJdfQ==
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZVRTU1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVFNTVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EscUNBQTBEO0FBSTFELG1DQUF5QztBQUV6QywwQ0FBdUM7QUFDdkMsMENBQTRCO0FBcUI1Qjs7R0FFRztBQUNILE1BQXFCLFlBQXVCLFNBQVEsbUJBQVE7SUFHMUQsWUFBWSxLQUFnQixFQUFFLFFBQW1CLEVBQUUsTUFBZ0I7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyw2QkFBNkIsQ0FDakMsVUFBcUMsRUFDckMsVUFBOEI7UUFFOUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSzthQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUMxQyxJQUFJLENBQUM7WUFDSixVQUFVO1lBQ1YsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLFNBQVM7U0FDdkMsQ0FBQzthQUNELE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsT0FBTztZQUNMLEVBQUUs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M0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxXQUFtQjtRQUNwQyxPQUFPLGtCQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCwrQkFBK0IsQ0FDN0IsY0FBbUQ7UUFFbkQsOERBQThEO1FBQzlELE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxJQUFJLGNBQWMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLFlBQWdDO1FBQ2hGLE1BQU0sUUFBUSxHQUFzQixNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ2pELEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNyQyxLQUFLLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQzthQUN2QixNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLFNBQW1CLENBQUM7UUFDdkQsT0FBTyxpQkFBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFyVEQsK0JBcVRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi8uLi8uLi9hcGknO1xuaW1wb3J0IHsgS2V5LCByZWFkS2V5LCBTZXJpYWxpemVkS2V5UGFpciB9IGZyb20gJ29wZW5wZ3AnO1xuaW1wb3J0IHsgSUJhc2VDb2luLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnLi4vLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEtleWNoYWluIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW4nO1xuaW1wb3J0IHsgZ2V0VHhSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHNzJztcbmltcG9ydCB7IElXYWxsZXQsIEJhY2t1cFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vd2FsbGV0JztcbmltcG9ydCB7IE1wY1V0aWxzIH0gZnJvbSAnLi4vbXBjVXRpbHMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtcbiAgQml0Z29HUEdQdWJsaWNLZXksXG4gIEJpdGdvSGVsZEJhY2t1cEtleVNoYXJlLFxuICBDdXN0b21HU2hhcmVHZW5lcmF0aW5nRnVuY3Rpb24sXG4gIEN1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbixcbiAgSVRzc1V0aWxzLFxuICBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gIFNpZ25hdHVyZVNoYXJlUmVjb3JkLFxuICBUU1NQYXJhbXMsXG4gIFR4UmVxdWVzdCxcbiAgVHhSZXF1ZXN0VmVyc2lvbixcbiAgQ3JlYXRlS2V5Y2hhaW5QYXJhbXNCYXNlLFxuICBJbnRlbnRPcHRpb25zRm9yTWVzc2FnZSxcbiAgUG9wdWxhdGVkSW50ZW50Rm9yTWVzc2FnZVNpZ25pbmcsXG4gIEludGVudE9wdGlvbnNGb3JUeXBlZERhdGEsXG4gIFBvcHVsYXRlZEludGVudEZvclR5cGVkRGF0YVNpZ25pbmcsXG4gIENyZWF0ZUJpdEdvS2V5Y2hhaW5QYXJhbXNCYXNlLFxufSBmcm9tICcuL2Jhc2VUeXBlcyc7XG5pbXBvcnQgeyBHU2hhcmUsIFNpZ25TaGFyZSwgWVNoYXJlIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5cbi8qKlxuICogQmFzZVRzc1V0aWwgY2xhc3Mgd2hpY2ggZGlmZmVyZW50IHNpZ25hdHVyZSBzY2hlbWVzIGhhdmUgdG8gZXh0ZW5kXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhc2VUc3NVdGlsczxLZXlTaGFyZT4gZXh0ZW5kcyBNcGNVdGlscyBpbXBsZW1lbnRzIElUc3NVdGlsczxLZXlTaGFyZT4ge1xuICBwcml2YXRlIF93YWxsZXQ/OiBJV2FsbGV0O1xuXG4gIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIGJhc2VDb2luOiBJQmFzZUNvaW4sIHdhbGxldD86IElXYWxsZXQpIHtcbiAgICBzdXBlcihiaXRnbywgYmFzZUNvaW4pO1xuICAgIHRoaXMuX3dhbGxldCA9IHdhbGxldDtcbiAgfVxuXG4gIGdldCB3YWxsZXQoKTogSVdhbGxldCB7XG4gICAgaWYgKF8uaXNOaWwodGhpcy5fd2FsbGV0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdXYWxsZXQgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dhbGxldDtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUJpdGdvSGVsZEJhY2t1cEtleVNoYXJlKFxuICAgIHVzZXJHcGdLZXk6IFNlcmlhbGl6ZWRLZXlQYWlyPHN0cmluZz4sXG4gICAgZW50ZXJwcmlzZTogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICk6IFByb21pc2U8Qml0Z29IZWxkQmFja3VwS2V5U2hhcmU+IHtcbiAgICBjb25zdCBrZXlSZXNwb25zZSA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYmFzZUNvaW4udXJsKCcva3JzL2JhY2t1cGtleXMnKSlcbiAgICAgIC5zZW5kKHtcbiAgICAgICAgZW50ZXJwcmlzZSxcbiAgICAgICAgdXNlckdQR1B1YmxpY0tleTogdXNlckdwZ0tleS5wdWJsaWNLZXksXG4gICAgICB9KVxuICAgICAgLnJlc3VsdCgpO1xuICAgIGlmICgha2V5UmVzcG9uc2UgfHwgIWtleVJlc3BvbnNlLmtleVNoYXJlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZ2V0IGJhY2t1cCBzaGFyZXMgZnJvbSBCaXRHby4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBrZXlSZXNwb25zZS5pZCxcbiAgICAgIGtleVNoYXJlczoga2V5UmVzcG9uc2Uua2V5U2hhcmVzLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZmluYWxpemVCaXRnb0hlbGRCYWNrdXBLZXlTaGFyZShcbiAgICBrZXlJZDogc3RyaW5nLFxuICAgIGNvbW1vbktleWNoYWluOiBzdHJpbmcsXG4gICAgdXNlcktleVNoYXJlOiBLZXlTaGFyZSxcbiAgICBiaXRnb0tleWNoYWluOiBLZXljaGFpbixcbiAgICB1c2VyR3BnS2V5OiBTZXJpYWxpemVkS2V5UGFpcjxzdHJpbmc+LFxuICAgIGJhY2t1cEdwZ0tleTogS2V5XG4gICk6IFByb21pc2U8Qml0Z29IZWxkQmFja3VwS2V5U2hhcmU+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBjcmVhdGVVc2VyS2V5Y2hhaW4ocGFyYW1zOiBDcmVhdGVLZXljaGFpblBhcmFtc0Jhc2UpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgY3JlYXRlQmFja3VwS2V5Y2hhaW4ocGFyYW1zOiBDcmVhdGVLZXljaGFpblBhcmFtc0Jhc2UpOiBQcm9taXNlPEtleWNoYWluPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgY3JlYXRlQml0Z29LZXljaGFpbihwYXJhbXM6IENyZWF0ZUJpdEdvS2V5Y2hhaW5QYXJhbXNCYXNlKTogUHJvbWlzZTxLZXljaGFpbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGNyZWF0ZUtleWNoYWlucyhwYXJhbXM6IHtcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmc7XG4gICAgZW50ZXJwcmlzZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaXNUaGlyZFBhcnR5QmFja3VwPzogYm9vbGVhbjtcbiAgICBiYWNrdXBQcm92aWRlcj86IEJhY2t1cFByb3ZpZGVyO1xuICB9KTogUHJvbWlzZTxLZXljaGFpbnNUcmlwbGV0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgc2lnblR4UmVxdWVzdChwYXJhbXM6IFRTU1BhcmFtcyk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgc2lnblR4UmVxdWVzdEZvck1lc3NhZ2UocGFyYW1zOiBUU1NQYXJhbXMpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBhIHRyYW5zYWN0aW9uIHVzaW5nIFRTUyBmb3IgRWREU0EgYW5kIHRocm91Z2ggdXRpbGl6YXRpb24gb2YgY3VzdG9tIHNoYXJlIGdlbmVyYXRvcnNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBUeFJlcXVlc3R9IHR4UmVxdWVzdCAtIHRyYW5zYWN0aW9uIHJlcXVlc3Qgd2l0aCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge0N1c3RvbVJTaGFyZUdlbmVyYXRpbmdGdW5jdGlvbn0gZXh0ZXJuYWxTaWduZXJSU2hhcmVHZW5lcmF0b3IgYSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgUiBzaGFyZXMgaW4gdGhlIEVkRFNBIFRTUyBmbG93XG4gICAqIEBwYXJhbSB7Q3VzdG9tR1NoYXJlR2VuZXJhdGluZ0Z1bmN0aW9ufSBleHRlcm5hbFNpZ25lckdTaGFyZUdlbmVyYXRvciBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBHIHNoYXJlcyBpbiB0aGUgRWREU0EgVFNTIGZsb3dcbiAgICogQHJldHVybnMge1Byb21pc2U8VHhSZXF1ZXN0Pn0gLSBhIHNpZ25lZCB0eCByZXF1ZXN0XG4gICAqL1xuICBzaWduVXNpbmdFeHRlcm5hbFNpZ25lcihcbiAgICB0eFJlcXVlc3Q6IHN0cmluZyB8IFR4UmVxdWVzdCxcbiAgICBleHRlcm5hbFNpZ25lclJTaGFyZUdlbmVyYXRvcjogQ3VzdG9tUlNoYXJlR2VuZXJhdGluZ0Z1bmN0aW9uLFxuICAgIGV4dGVybmFsU2lnbmVyR1NoYXJlR2VuZXJhdG9yOiBDdXN0b21HU2hhcmVHZW5lcmF0aW5nRnVuY3Rpb25cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIFIgKFVzZXIgdG8gQml0R28pIHNoYXJlIGZyb20gYW4gdW5zaWduZWQgdHJhbnNhY3Rpb24gYW5kIHByaXZhdGUgdXNlciBzaWduaW5nIG1hdGVyaWFsXG4gICAqXG4gICAqIEBwYXJhbSB7VHhSZXF1ZXN0fSB0eFJlcXVlc3QgLSB0cmFuc2FjdGlvbiByZXF1ZXN0IHdpdGggdW5zaWduZWQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiAtIHVzZXIgc2lnbmluZyBtYXRlcmlhbFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx7IHJTaGFyZTogU2lnblNoYXJlOyBzaWduaW5nS2V5WVNoYXJlOiBZU2hhcmUgfT59IC0gUiBTaGFyZSBhbmQgdGhlIFNpZ25pbmcgS2V5J3MgWSBzaGFyZSB0byBCaXRHb1xuICAgKi9cbiAgY3JlYXRlUlNoYXJlRnJvbVR4UmVxdWVzdChwYXJhbXM6IHtcbiAgICB0eFJlcXVlc3Q6IFR4UmVxdWVzdDtcbiAgICBwcnY6IHN0cmluZztcbiAgfSk6IFByb21pc2U8eyByU2hhcmU6IFNpZ25TaGFyZTsgc2lnbmluZ0tleVlTaGFyZTogWVNoYXJlIH0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgRyAoVXNlciB0byBCaXRHbykgc2hhcmUgZnJvbSBhbiB1bnNpZ25lZCB0cmFuc2FjdGlvbiBhbmQgcHJpdmF0ZSB1c2VyIHNpZ25pbmcgbWF0ZXJpYWxcbiAgICpcbiAgICogQHBhcmFtIHtUeFJlcXVlc3R9IHR4UmVxdWVzdCAtIHRyYW5zYWN0aW9uIHJlcXVlc3Qgd2l0aCB1bnNpZ25lZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJ2IC0gdXNlciBzaWduaW5nIG1hdGVyaWFsXG4gICAqIEBwYXJhbSB7U2lnbmF0dXJlU2hhcmVSZWNvcmR9IGJpdGdvVG9Vc2VyUlNoYXJlIC0gQml0R28gdG8gVXNlciBSIFNoYXJlXG4gICAqIEBwYXJhbSB7U2lnblNoYXJlfSB1c2VyVG9CaXRnb1JTaGFyZSAtIFVzZXIgdG8gQml0R28gUiBTaGFyZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxHU2hhcmU+fSAtIEdTaGFyZSBmcm9tIFVzZXIgdG8gQml0R29cbiAgICovXG4gIGNyZWF0ZUdTaGFyZUZyb21UeFJlcXVlc3QocGFyYW1zOiB7XG4gICAgdHhSZXF1ZXN0OiBUeFJlcXVlc3Q7XG4gICAgcHJ2OiBzdHJpbmc7XG4gICAgYml0Z29Ub1VzZXJSU2hhcmU6IFNpZ25hdHVyZVNoYXJlUmVjb3JkO1xuICAgIHVzZXJUb0JpdGdvUlNoYXJlOiBTaWduU2hhcmU7XG4gIH0pOiBQcm9taXNlPEdTaGFyZT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSB0eCByZXF1ZXN0IGZyb20gcGFyYW1zIGFuZCB2ZXJpZnkgaXRcbiAgICpcbiAgICogQHBhcmFtIHtQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnN9IHBhcmFtcyAtIHBhcmFtZXRlcnMgdG8gYnVpbGQgdGhlIHR4XG4gICAqIEBwYXJhbSB7VHhSZXF1ZXN0VmVyc2lvbn0gYXBpVmVyc2lvbiBsaXRlIG9yIGZ1bGxcbiAgICogQHBhcmFtIHtib29sZWFufSBwcmV2aWV3IGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGlzIGlzIHRvIHByZXZpZXcgYSB0eCByZXF1ZXN0LCB3aGljaCB3aWxsIG5vdCBpbml0aWF0ZSBwb2xpY3kgY2hlY2tzIG9yIHBlbmRpbmcgYXBwcm92YWxzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFR4UmVxdWVzdD59IC0gYSBidWlsdCB0eCByZXF1ZXN0XG4gICAqL1xuICBhc3luYyBwcmVidWlsZFR4V2l0aEludGVudChcbiAgICBwYXJhbXM6IFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgICBhcGlWZXJzaW9uOiBUeFJlcXVlc3RWZXJzaW9uID0gJ2xpdGUnLFxuICAgIHByZXZpZXc/OiBib29sZWFuXG4gICk6IFByb21pc2U8VHhSZXF1ZXN0PiB7XG4gICAgY29uc3QgaW50ZW50T3B0aW9ucyA9IHRoaXMucG9wdWxhdGVJbnRlbnQodGhpcy5iYXNlQ29pbiwgcGFyYW1zKTtcblxuICAgIGNvbnN0IHdoaXRlbGlzdGVkUGFyYW1zID0ge1xuICAgICAgaW50ZW50OiB7XG4gICAgICAgIC4uLmludGVudE9wdGlvbnMsXG4gICAgICB9LFxuICAgICAgYXBpVmVyc2lvbjogYXBpVmVyc2lvbixcbiAgICAgIHByZXZpZXcsXG4gICAgfTtcblxuICAgIGNvbnN0IHVuc2lnbmVkVHggPSAoYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby51cmwoJy93YWxsZXQvJyArIHRoaXMud2FsbGV0LmlkKCkgKyAnL3R4cmVxdWVzdHMnLCAyKSlcbiAgICAgIC5zZW5kKHdoaXRlbGlzdGVkUGFyYW1zKVxuICAgICAgLnJlc3VsdCgpKSBhcyBUeFJlcXVlc3Q7XG5cbiAgICByZXR1cm4gdW5zaWduZWRUeDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0eCByZXF1ZXN0IGZyb20gcGFyYW1zIGZvciBtZXNzYWdlIHNpZ25pbmdcbiAgICpcbiAgICogQHBhcmFtIHBhcmFtc1xuICAgKiBAcGFyYW0gYXBpVmVyc2lvblxuICAgKiBAcGFyYW0gcHJldmlld1xuICAgKi9cbiAgYXN5bmMgY3JlYXRlVHhSZXF1ZXN0V2l0aEludGVudEZvck1lc3NhZ2VTaWduaW5nKFxuICAgIHBhcmFtczogSW50ZW50T3B0aW9uc0Zvck1lc3NhZ2UsXG4gICAgYXBpVmVyc2lvbjogVHhSZXF1ZXN0VmVyc2lvbiA9ICdmdWxsJyxcbiAgICBwcmV2aWV3PzogYm9vbGVhblxuICApOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIGNvbnN0IGludGVudE9wdGlvbnM6IFBvcHVsYXRlZEludGVudEZvck1lc3NhZ2VTaWduaW5nID0ge1xuICAgICAgY3VzdG9kaWFuTWVzc2FnZUlkOiBwYXJhbXMuY3VzdG9kaWFuTWVzc2FnZUlkLFxuICAgICAgaW50ZW50VHlwZTogcGFyYW1zLmludGVudFR5cGUsXG4gICAgICBzZXF1ZW5jZUlkOiBwYXJhbXMuc2VxdWVuY2VJZCxcbiAgICAgIGNvbW1lbnQ6IHBhcmFtcy5jb21tZW50LFxuICAgICAgbWVtbzogcGFyYW1zLm1lbW8/LnZhbHVlLFxuICAgICAgaXNUc3M6IHBhcmFtcy5pc1RzcyxcbiAgICAgIG1lc3NhZ2VSYXc6IHBhcmFtcy5tZXNzYWdlUmF3LFxuICAgICAgbWVzc2FnZUVuY29kZWQ6IHBhcmFtcy5tZXNzYWdlRW5jb2RlZCA/PyAnJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVHhSZXF1ZXN0QmFzZShpbnRlbnRPcHRpb25zLCBhcGlWZXJzaW9uLCBwcmV2aWV3KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSB0eCByZXF1ZXN0IGZyb20gcGFyYW1zIGZvciB0eXBlIGRhdGEgc2lnbmluZ1xuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBhcGlWZXJzaW9uXG4gICAqIEBwYXJhbSBwcmV2aWV3XG4gICAqL1xuICBhc3luYyBjcmVhdGVUeFJlcXVlc3RXaXRoSW50ZW50Rm9yVHlwZWREYXRhU2lnbmluZyhcbiAgICBwYXJhbXM6IEludGVudE9wdGlvbnNGb3JUeXBlZERhdGEsXG4gICAgYXBpVmVyc2lvbjogVHhSZXF1ZXN0VmVyc2lvbiA9ICdmdWxsJyxcbiAgICBwcmV2aWV3PzogYm9vbGVhblxuICApOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIGNvbnN0IGludGVudE9wdGlvbnM6IFBvcHVsYXRlZEludGVudEZvclR5cGVkRGF0YVNpZ25pbmcgPSB7XG4gICAgICBjdXN0b2RpYW5NZXNzYWdlSWQ6IHBhcmFtcy5jdXN0b2RpYW5NZXNzYWdlSWQsXG4gICAgICBpbnRlbnRUeXBlOiBwYXJhbXMuaW50ZW50VHlwZSxcbiAgICAgIHNlcXVlbmNlSWQ6IHBhcmFtcy5zZXF1ZW5jZUlkLFxuICAgICAgY29tbWVudDogcGFyYW1zLmNvbW1lbnQsXG4gICAgICBtZW1vOiBwYXJhbXMubWVtbz8udmFsdWUsXG4gICAgICBpc1RzczogcGFyYW1zLmlzVHNzLFxuICAgICAgbWVzc2FnZVJhdzogcGFyYW1zLnR5cGVkRGF0YVJhdyxcbiAgICAgIG1lc3NhZ2VFbmNvZGVkOiBwYXJhbXMudHlwZWREYXRhRW5jb2RlZCA/PyAnJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlVHhSZXF1ZXN0QmFzZShpbnRlbnRPcHRpb25zLCBhcGlWZXJzaW9uLCBwcmV2aWV3KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBCaXRnbyBBUEkgdG8gY3JlYXRlIHR4IHJlcXVlc3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVR4UmVxdWVzdEJhc2UoXG4gICAgaW50ZW50T3B0aW9uczogUG9wdWxhdGVkSW50ZW50Rm9yVHlwZWREYXRhU2lnbmluZyB8IFBvcHVsYXRlZEludGVudEZvck1lc3NhZ2VTaWduaW5nLFxuICAgIGFwaVZlcnNpb246IFR4UmVxdWVzdFZlcnNpb24sXG4gICAgcHJldmlldz86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBjb25zdCB3aGl0ZWxpc3RlZFBhcmFtcyA9IHtcbiAgICAgIGludGVudDoge1xuICAgICAgICAuLi5pbnRlbnRPcHRpb25zLFxuICAgICAgfSxcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBwcmV2aWV3LFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby51cmwoYC93YWxsZXQvJHt0aGlzLndhbGxldC5pZCgpfS90eHJlcXVlc3RzYCwgMikpXG4gICAgICAuc2VuZCh3aGl0ZWxpc3RlZFBhcmFtcylcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGRlbGV0ZSBzaWduYXR1cmUgc2hhcmVzIGZvciBhIHR4UmVxdWVzdCwgdGhlIGVuZHBvaW50IGRlbGV0ZSB0aGUgc2lnbmF0dXJlcyBhbmQgcmV0dXJuIHRoZW1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR4UmVxdWVzdElkIHR4IGlkIHJlZmVyZW5jZSB0byBkZWxldGUgc2lnbmF0dXJlIHNoYXJlc1xuICAgKiBAcmV0dXJucyB7U2lnbmF0dXJlU2hhcmVSZWNvcmRbXX1cbiAgICovXG4gIGFzeW5jIGRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0eFJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTaWduYXR1cmVTaGFyZVJlY29yZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYml0Z29cbiAgICAgIC5kZWwodGhpcy5iaXRnby51cmwoYC93YWxsZXQvJHt0aGlzLndhbGxldC5pZCgpfS90eHJlcXVlc3RzLyR7dHhSZXF1ZXN0SWR9L3NpZ25hdHVyZXNoYXJlc2AsIDIpKVxuICAgICAgLnNlbmQoKVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHNlbmQgcHJvY2VkdXJlIG9uY2UgQml0Z28gaGFzIHRoZSBVc2VyIFRvIEJpdGdvIEdTaGFyZVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHhSZXF1ZXN0SWQgLSB0aGUgdHhSZXF1ZXN0IElkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBhc3luYyBzZW5kVHhSZXF1ZXN0KHR4UmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJhc2VDb2luLnVybCgnL3dhbGxldC8nICsgdGhpcy53YWxsZXQuaWQoKSArICcvdHgvc2VuZCcpKVxuICAgICAgLnNlbmQoeyB0eFJlcXVlc3RJZCB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBzaWduYXR1cmUgc2hhcmVzLCBnZXQgdGhlIHR4IHJlcXVlc3Qgd2l0aG91dCB0aGVtIGZyb20gdGhlIGRiIGFuZCBzaWduIGl0IHRvIGZpbmFsbHkgc2VuZCBpdC5cbiAgICpcbiAgICogTm90ZSA6IFRoaXMgY2FuIGJlIHBlcmZvcm1lZCBpbiBvcmRlciB0byByZWFjaCBsYXRlc3QgbmV0d29yayBjb25kaXRpb25zIHJlcXVpcmVkIG9uIHBlbmRpbmcgYXBwcm92YWwgZmxvdy5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZCB0byBtYWtlIHRoZSByZXF1ZXN0cy5cbiAgICogQHBhcmFtIHtTdHJpbmd9IGRlY3J5cHRlZFBydiAtIGRlY3J5cHRlZCBwcnYgdG8gc2lnbiB0aGUgdHggcmVxdWVzdC5cbiAgICogQHBhcmFtIHtSZXF1ZXN0VHJhY2VyfSByZXFJZCBpZCB0cmFjZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBhc3luYyByZWNyZWF0ZVR4UmVxdWVzdCh0eFJlcXVlc3RJZDogc3RyaW5nLCBkZWNyeXB0ZWRQcnY6IHN0cmluZywgcmVxSWQ6IElSZXF1ZXN0VHJhY2VyKTogUHJvbWlzZTxUeFJlcXVlc3Q+IHtcbiAgICBhd2FpdCB0aGlzLmRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0eFJlcXVlc3RJZCk7XG4gICAgLy8gYWZ0ZXIgZGVsZXRlIHNpZ25hdHVyZXMgc2hhcmVzIGdldCB0aGUgdHggd2l0aG91dCB0aGVtXG4gICAgY29uc3QgdHhSZXF1ZXN0ID0gYXdhaXQgZ2V0VHhSZXF1ZXN0KHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmlkKCksIHR4UmVxdWVzdElkKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zaWduVHhSZXF1ZXN0KHsgdHhSZXF1ZXN0LCBwcnY6IGRlY3J5cHRlZFBydiwgcmVxSWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IFR4IFJlcXVlc3QgYnkgaWRcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR4UmVxdWVzdElkIC0gdGhlIHR4UmVxdWVzdCBJZFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUeFJlcXVlc3Q+fVxuICAgKi9cbiAgYXN5bmMgZ2V0VHhSZXF1ZXN0KHR4UmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFR4UmVxdWVzdD4ge1xuICAgIHJldHVybiBnZXRUeFJlcXVlc3QodGhpcy5iaXRnbywgdGhpcy53YWxsZXQuaWQoKSwgdHhSZXF1ZXN0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSB0aGlyZCBwYXJ0eSBiYWNrdXAgcHJvdmlkZXIgaXMgdmFsaWQvc3VwcG9ydGVkXG4gICAqIEBwYXJhbSBiYWNrdXBQcm92aWRlciAtIHRoZSBiYWNrdXAgcHJvdmlkZXIgY2xpZW50IHNlbGVjdGVkXG4gICAqL1xuICBpc1ZhbGlkVGhpcmRQYXJ0eUJhY2t1cFByb3ZpZGVyKFxuICAgIGJhY2t1cFByb3ZpZGVyOiBCYWNrdXBQcm92aWRlciB8IHN0cmluZyB8IHVuZGVmaW5lZFxuICApOiBiYWNrdXBQcm92aWRlciBpcyBCYWNrdXBQcm92aWRlciB7XG4gICAgLy8gQXMgb2Ygbm93LCBCaXRHbyBpcyB0aGUgb25seSBzdXBwb3J0ZWQgS1JTIHByb3ZpZGVyIGZvciBUU1NcbiAgICByZXR1cm4gISEoYmFja3VwUHJvdmlkZXIgJiYgYmFja3VwUHJvdmlkZXIgPT09ICdCaXRHb1RydXN0QXNLcnMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBnZXRzIHRoZSBhcHByb3ByaWF0ZSBCaXRHbyBHUEcgcHVibGljIGtleSBmb3Iga2V5IGNyZWF0aW9uIGJhc2VkIG9uIGFcbiAgICogY29tYmluYXRpb24gb2YgY29pbiBhbmQgdGhlIGZlYXR1cmUgZmxhZ3Mgb24gdGhlIHVzZXIgYW5kIHRoZWlyIGVudGVycHJpc2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gZW50ZXJwcmlzZUlkIC0gZW50ZXJwcmlzZSB1bmRlciB3aGljaCB1c2VyIHdhbnRzIHRvIGNyZWF0ZSB0aGUgd2FsbGV0XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0Qml0Z29HcGdQdWJrZXlCYXNlZE9uRmVhdHVyZUZsYWdzKGVudGVycHJpc2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxLZXk+IHtcbiAgICBjb25zdCByZXNwb25zZTogQml0Z29HUEdQdWJsaWNLZXkgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYmFzZUNvaW4udXJsKCcvdHNzL3B1YmtleScpKVxuICAgICAgLnF1ZXJ5KHsgZW50ZXJwcmlzZUlkIH0pXG4gICAgICAucmVzdWx0KCk7XG4gICAgY29uc3QgYml0Z29QdWJsaWNLZXlTdHIgPSByZXNwb25zZS5wdWJsaWNLZXkgYXMgc3RyaW5nO1xuICAgIHJldHVybiByZWFkS2V5KHsgYXJtb3JlZEtleTogYml0Z29QdWJsaWNLZXlTdHIgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -228,12 +228,18 @@ export interface BitgoGPGPublicKey {
228
228
  publicKey: string;
229
229
  enterpriseId: string;
230
230
  }
231
+ export declare type Challenge = {
232
+ ntilde: string;
233
+ h1: string;
234
+ h2: string;
235
+ };
236
+ export declare type BackupGpgKey = SerializedKeyPair<string> | Key;
231
237
  /**
232
238
  * Common Interface for implementing signature scheme specific
233
239
  * util functions
234
240
  */
235
241
  export interface ITssUtils<KeyShare = EDDSA.KeyShare> {
236
- createBitgoHeldBackupKeyShare(userGpgKey: SerializedKeyPair<string>): Promise<BitgoHeldBackupKeyShare>;
242
+ createBitgoHeldBackupKeyShare(userGpgKey: SerializedKeyPair<string>, enterprise: string | undefined): Promise<BitgoHeldBackupKeyShare>;
237
243
  finalizeBitgoHeldBackupKeyShare(keyId: string, commonKeychain: string, userKeyShare: KeyShare, bitgoKeychain: Keychain, gpgKey: SerializedKeyPair<string>, bitgoPublicGpgKey?: Key): Promise<BitgoHeldBackupKeyShare>;
238
244
  createUserKeychain(params: CreateKeychainParamsBase): Promise<Keychain>;
239
245
  createBackupKeychain(params: CreateKeychainParamsBase): Promise<Keychain>;