@bitgo/sdk-core 38.9.1 → 38.11.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 (100) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +8 -1
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/defi/defiVault.d.ts +21 -1
  5. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -1
  6. package/dist/src/bitgo/defi/defiVault.js +36 -12
  7. package/dist/src/bitgo/defi/iDefiVault.d.ts +2 -1
  8. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -1
  9. package/dist/src/bitgo/defi/iDefiVault.js +1 -1
  10. package/dist/src/bitgo/environments.js +3 -3
  11. package/dist/src/bitgo/keychain/iKeychains.d.ts +7 -1
  12. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  13. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  14. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  15. package/dist/src/bitgo/keychain/keychains.js +5 -1
  16. package/dist/src/bitgo/safe/iSafe.d.ts +4 -2
  17. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -1
  18. package/dist/src/bitgo/safe/iSafe.js +1 -1
  19. package/dist/src/bitgo/safe/iSafes.d.ts +13 -8
  20. package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -1
  21. package/dist/src/bitgo/safe/iSafes.js +1 -1
  22. package/dist/src/bitgo/safe/safe.d.ts +3 -8
  23. package/dist/src/bitgo/safe/safe.d.ts.map +1 -1
  24. package/dist/src/bitgo/safe/safe.js +138 -4
  25. package/dist/src/bitgo/safe/safeDerivation.d.ts +22 -3
  26. package/dist/src/bitgo/safe/safeDerivation.d.ts.map +1 -1
  27. package/dist/src/bitgo/safe/safeDerivation.js +100 -17
  28. package/dist/src/bitgo/safe/safes.d.ts +7 -6
  29. package/dist/src/bitgo/safe/safes.d.ts.map +1 -1
  30. package/dist/src/bitgo/safe/safes.js +27 -19
  31. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +12 -1
  32. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
  33. package/dist/src/bitgo/tss/bitgoPubKeys.js +22 -2
  34. package/dist/src/bitgo/tss/common.d.ts +2 -1
  35. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  36. package/dist/src/bitgo/tss/common.js +1 -1
  37. package/dist/src/bitgo/utils/opengpgUtils.d.ts +1 -0
  38. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  39. package/dist/src/bitgo/utils/opengpgUtils.js +5 -1
  40. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +6 -2
  41. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  42. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +31 -7
  43. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -0
  44. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  45. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  46. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  47. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +9 -1
  48. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +9 -3
  49. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  50. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +19 -3
  51. package/dist/src/bitgo/utils/tss/index.d.ts +2 -0
  52. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  53. package/dist/src/bitgo/utils/tss/index.js +4 -2
  54. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +1 -1
  55. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -1
  56. package/dist/src/bitgo/utils/tss/recipientUtils.js +4 -2
  57. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  58. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  59. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +128 -0
  60. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  61. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  62. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  63. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +30 -0
  64. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  65. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +46 -0
  66. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +46 -0
  67. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  68. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  69. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  70. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  71. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  72. package/dist/src/bitgo/wallet/iWallet.d.ts +3 -2
  73. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  74. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  75. package/dist/src/bitgo/wallet/safeKeychain.d.ts +2 -2
  76. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -1
  77. package/dist/src/bitgo/wallet/safeKeychain.js +7 -7
  78. package/dist/src/bitgo/wallet/wallet.d.ts +8 -0
  79. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  80. package/dist/src/bitgo/wallet/wallet.js +11 -5
  81. package/dist/test/unit/bitgo/defi/defiVault.js +56 -1
  82. package/dist/test/unit/bitgo/safe/safe.js +148 -5
  83. package/dist/test/unit/bitgo/safe/safes.js +45 -4
  84. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  85. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  86. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  87. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +121 -1
  88. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +14 -1
  89. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  90. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  91. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +81 -0
  92. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  93. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  94. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +281 -0
  95. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  96. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  97. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  98. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +82 -25
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +6 -6
@@ -32,6 +32,7 @@ describe('recipientUtils', function () {
32
32
  'defiApprove',
33
33
  'defiDeposit',
34
34
  'defiWithdraw',
35
+ 'wrapApprove',
35
36
  'contractCall',
36
37
  // Staking — 'delegate' also covers SOL solDelegateIntent
37
38
  'delegate',
@@ -110,6 +111,18 @@ describe('recipientUtils', function () {
110
111
  assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: txType }));
111
112
  }
112
113
  });
114
+ it('does not require recipients for a wrapApprove intent', function () {
115
+ const txRequest = makeTxRequest({
116
+ intent: {
117
+ intentType: 'wrapApprove',
118
+ tokenName: 'hteth:cusdt',
119
+ amount: '1000000',
120
+ },
121
+ });
122
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
123
+ assert_1.default.strictEqual(result.type, 'wrapApprove');
124
+ assert_1.default.strictEqual(result.recipients, undefined);
125
+ });
113
126
  it('does not throw for Avalanche cross-chain imports resolved from intent.intentType', function () {
114
127
  // P-chain and C-chain import intents legitimately carry no recipients —
115
128
  // the wallet imports its own UTXOs and the destination address is the
@@ -345,4 +358,4 @@ describe('recipientUtils', function () {
345
358
  });
346
359
  });
347
360
  });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNGQUFvSDtBQUNwSCw0REFBMEU7QUFHMUUsU0FBUyxhQUFhLENBQUMsWUFBZ0MsRUFBRTtJQUN2RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsU0FBUztLQUNXLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osY0FBYztnQkFDZCxXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxjQUFjO2dCQUNkLHlEQUF5RDtnQkFDekQsVUFBVTtnQkFDVixZQUFZO2dCQUNaLGlCQUFpQjtnQkFDakIsT0FBTztnQkFDUCxTQUFTO2dCQUNULG1CQUFtQjtnQkFDbkIscUJBQXFCO2dCQUNyQixlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsV0FBVztnQkFDWCxPQUFPO2dCQUNQLG1CQUFtQjtnQkFDbkIsZUFBZTtnQkFDZixnQkFBZ0I7Z0JBQ2hCLGdCQUFnQjtnQkFDaEIsd0JBQXdCO2dCQUN4QixlQUFlO2dCQUNmLFFBQVE7Z0JBQ1IsK0NBQStDO2dCQUMvQyxRQUFRO2dCQUNSLFdBQVc7Z0JBQ1gsc0RBQXNEO2dCQUN0RCxZQUFZO2dCQUNaLG9EQUFvRDtnQkFDcEQsV0FBVzthQUNaLENBQUM7WUFDRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxzQ0FBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUMsQ0FBQztZQUM1RyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxzQ0FBcUIsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFO1lBQzFDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6RSxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLHNDQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUN4RixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsMEJBQTBCLEVBQUU7UUFDbkMsRUFBRSxDQUFDLGlEQUFpRCxFQUFFO1lBQ3BELE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0QsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUU7WUFDM0QsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO2dCQUM5QixNQUFNLEVBQUU7b0JBQ04sVUFBVSxFQUFFLFNBQVM7b0JBQ3JCLFVBQVUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7aUJBQ2xGO2FBQ1QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDakQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM1RCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFO1lBQ3hFLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQVMsRUFBRSxDQUFDLENBQUM7WUFDbEYsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtZQUNwQyxLQUFLLE1BQU0sTUFBTSxJQUFJO2dCQUNuQixjQUFjO2dCQUNkLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxVQUFVO2dCQUNWLE9BQU87Z0JBQ1AsZUFBZTtnQkFDZixRQUFRO2dCQUNSLFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxZQUFZO2FBQ2IsRUFBRSxDQUFDO2dCQUNGLE1BQU0sU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO2dCQUNsQyxnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtGQUFrRixFQUFFO1lBQ3JGLHdFQUF3RTtZQUN4RSxzRUFBc0U7WUFDdEUsd0VBQXdFO1lBQ3hFLDBFQUEwRTtZQUMxRSxLQUFLLE1BQU0sVUFBVSxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBUyxFQUFFLENBQUMsQ0FBQztnQkFDbkUsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUZBQXVGLEVBQUU7WUFDMUYsOEVBQThFO1lBQzlFLHdFQUF3RTtZQUN4RSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQVMsRUFBRSxDQUFDLENBQUM7WUFDN0YsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUU7WUFDeEUsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxNQUFNLENBQ1gsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFDOUQsZ0NBQXVCLEVBQ3ZCLGtEQUFrRCxDQUNuRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaURBQWlELEVBQUU7WUFDcEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDbEMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsZ0NBQXVCLENBQUMsQ0FBQztRQUMvRixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxrRUFBa0UsRUFBRTtZQUNyRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQzlCLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQVM7YUFDL0UsQ0FBQyxDQUFDO1lBQ0gsZ0JBQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnRUFBZ0UsRUFBRTtZQUNuRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQzlCLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQVM7YUFDL0UsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMERBQTBELEVBQUU7WUFDN0QsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO2dCQUM5QixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBUzthQUMzRSxDQUFDLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDeEYsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9EQUFvRCxFQUFFO1lBQ3ZELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQztnQkFDOUIsTUFBTSxFQUFFO29CQUNOLFVBQVUsRUFBRSxTQUFTO29CQUNyQixVQUFVLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2lCQUNyRjthQUNULENBQUMsQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDN0QsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRTtZQUNoRCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7Z0JBQzlCLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUUsU0FBUztvQkFDckIsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO2lCQUN0RzthQUNULENBQUMsQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMseUNBQXlDLEVBQUU7WUFDbEQsRUFBRSxDQUFDLHVFQUF1RSxFQUFFO2dCQUMxRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7b0JBQzlCLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsU0FBUzt3QkFDckIsVUFBVSxFQUFFOzRCQUNWO2dDQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRTtnQ0FDcEUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFOzZCQUNsRDt5QkFDRjtxQkFDSztpQkFDVCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywyRUFBMkUsRUFBRTtnQkFDOUUsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO29CQUM5QixNQUFNLEVBQUU7d0JBQ04sVUFBVSxFQUFFLFNBQVM7d0JBQ3JCLFVBQVUsRUFBRTs0QkFDVjtnQ0FDRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkNBQTZDLEVBQUU7Z0NBQ25FLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTs2QkFDaEQ7eUJBQ0Y7cUJBQ0s7aUJBQ1QsQ0FBQyxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0QsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQyxpRkFBaUYsRUFBRTtnQkFDcEYsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO29CQUM5QixNQUFNLEVBQUU7d0JBQ04sVUFBVSxFQUFFLFNBQVM7d0JBQ3JCLFVBQVUsRUFBRTs0QkFDVjtnQ0FDRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkNBQTZDLEVBQUU7Z0NBQ25FLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRTtnQ0FDcEQsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTs2QkFDakc7eUJBQ0Y7cUJBQ0s7aUJBQ1QsQ0FBQyxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0QsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9FLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLGdFQUFnRSxFQUFFO2dCQUNuRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7b0JBQzlCLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsU0FBUzt3QkFDckIsVUFBVSxFQUFFOzRCQUNWO2dDQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSw2Q0FBNkMsRUFBRTtnQ0FDbkUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFO2dDQUMvQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7NkJBQzlEO3lCQUNGO3FCQUNLO2lCQUNULENBQUMsQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlELGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsc0VBQXNFLEVBQUU7Z0JBQ3pFLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQztvQkFDOUIsTUFBTSxFQUFFO3dCQUNOLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixVQUFVLEVBQUU7NEJBQ1Y7Z0NBQ0UsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLDZDQUE2QyxFQUFFO2dDQUNuRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7Z0NBQ2hELFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFOzZCQUM3RTt5QkFDRjtxQkFDSztpQkFDVCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHNGQUFzRixFQUFFO2dCQUN6RixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7b0JBQzlCLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsU0FBUzt3QkFDckIsVUFBVSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztxQkFDbEY7aUJBQ1QsQ0FBQyxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUNoRSxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHNGQUFzRixFQUFFO2dCQUN6RixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUM7b0JBQzlCLE1BQU0sRUFBRTt3QkFDTixVQUFVLEVBQUUsZUFBZTt3QkFDM0IsVUFBVSxFQUFFOzRCQUNWO2dDQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7Z0NBQzdCLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtnQ0FDL0MsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUU7NkJBQ25GO3lCQUNGO3FCQUNLO2lCQUNULENBQUMsQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRTtnQkFDbEYsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDO29CQUM5QixNQUFNLEVBQUU7d0JBQ04sVUFBVSxFQUFFLFNBQVM7d0JBQ3JCLFVBQVUsRUFBRTs0QkFDVjtnQ0FDRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsOENBQThDLEVBQUU7Z0NBQ3BFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTs2QkFDbEQ7NEJBQ0Q7Z0NBQ0UsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLDhDQUE4QyxFQUFFO2dDQUNwRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUU7NkJBQ2xEO3lCQUNGO3FCQUNLO2lCQUNULENBQUMsQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQy9ELGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLENBQUMsVUFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNoRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDNUQsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsbURBQW1ELEVBQUU7Z0JBQ3RELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQztvQkFDOUIsTUFBTSxFQUFFO3dCQUNOLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixVQUFVLEVBQUU7NEJBQ1Y7Z0NBQ0UsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLDRDQUE0QyxFQUFFO2dDQUNsRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7NkJBQ2hEOzRCQUNEO2dDQUNFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSwyQ0FBMkMsRUFBRTtnQ0FDakUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFOzZCQUNqRDt5QkFDRjtxQkFDSztpQkFDVCxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRCxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDL0QsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRTtZQUN4QyxFQUFFLENBQUMsbURBQW1ELEVBQUU7Z0JBQ3RELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQy9FLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUU7Z0JBQzFELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pGLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hGLGdCQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsK0RBQStELEVBQUU7Z0JBQ2xFLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBUyxFQUFFLENBQUMsQ0FBQztnQkFDdkYsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSx5Q0FBd0IsRUFBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsZ0NBQXVCLENBQUMsQ0FBQztZQUN4RixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IE5PX1JFQ0lQSUVOVF9UWF9UWVBFUywgcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9yZWNpcGllbnRVdGlscyc7XG5pbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby9lcnJvcnMnO1xuaW1wb3J0IHsgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVHlwZXMnO1xuXG5mdW5jdGlvbiBtYWtlVHhSZXF1ZXN0KG92ZXJyaWRlczogUGFydGlhbDxUeFJlcXVlc3Q+ID0ge30pOiBUeFJlcXVlc3Qge1xuICByZXR1cm4ge1xuICAgIHR4UmVxdWVzdElkOiAndGVzdC10eC1yZXF1ZXN0LWlkJyxcbiAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICBpbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH0gYXMgdW5rbm93biBhcyBUeFJlcXVlc3Q7XG59XG5cbmRlc2NyaWJlKCdyZWNpcGllbnRVdGlscycsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ05PX1JFQ0lQSUVOVF9UWF9UWVBFUycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnY29udGFpbnMgYWxsIGV4cGVjdGVkIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSBbXG4gICAgICAgIC8vIEVDRFNBIEVWTVxuICAgICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICAgJ2ZpbGxOb25jZScsXG4gICAgICAgICd0cmFuc2ZlclRva2VuJyxcbiAgICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgICAnY29uc29saWRhdGUnLFxuICAgICAgICAnYnJpZGdlRnVuZHMnLFxuICAgICAgICAnZW5hYmxlVG9rZW4nLFxuICAgICAgICAnZW5hYmxldG9rZW4nLFxuICAgICAgICAnZGlzYWJsZXRva2VuJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgICAgJ2RlZmlBcHByb3ZlJyxcbiAgICAgICAgJ2RlZmlEZXBvc2l0JyxcbiAgICAgICAgJ2RlZmlXaXRoZHJhdycsXG4gICAgICAgICdjb250cmFjdENhbGwnLFxuICAgICAgICAvLyBTdGFraW5nIOKAlCAnZGVsZWdhdGUnIGFsc28gY292ZXJzIFNPTCBzb2xEZWxlZ2F0ZUludGVudFxuICAgICAgICAnZGVsZWdhdGUnLFxuICAgICAgICAndW5kZWxlZ2F0ZScsXG4gICAgICAgICdzd2l0Y2hWYWxpZGF0b3InLFxuICAgICAgICAnc3Rha2UnLFxuICAgICAgICAndW5zdGFrZScsXG4gICAgICAgICdzdGFrZVdpdGhDYWxsRGF0YScsXG4gICAgICAgICd1bnN0YWtlV2l0aENhbGxEYXRhJyxcbiAgICAgICAgJ3RyYW5zZmVyU3Rha2UnLFxuICAgICAgICAnaW5jcmVhc2VTdGFrZScsXG4gICAgICAgICdnb1Vuc3Rha2UnLFxuICAgICAgICAnY2xhaW0nLFxuICAgICAgICAnc3Rha2VDbGFpbVJld2FyZHMnLFxuICAgICAgICAnY3JlYXRlQWNjb3VudCcsXG4gICAgICAgICd0cmFuc2ZlckFjY2VwdCcsXG4gICAgICAgICd0cmFuc2ZlclJlamVjdCcsXG4gICAgICAgICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgICAgICAgJ2NhbnRvbkNvbW1hbmQnLFxuICAgICAgICAncGxlZGdlJyxcbiAgICAgICAgLy8gQXZhbGFuY2hlIC8gRmxhcmUgY3Jvc3MtY2hhaW4gYXRvbWljIGltcG9ydHNcbiAgICAgICAgJ2ltcG9ydCcsXG4gICAgICAgICdpbXBvcnR0b2MnLFxuICAgICAgICAvLyBTT0w6IGRlYWN0aXZhdGUgc3Rha2UgYWNjb3VudCAoc29sRGVhY3RpdmF0ZUludGVudClcbiAgICAgICAgJ2RlYWN0aXZhdGUnLFxuICAgICAgICAvLyBTT0w6IGF1dGhvcml6ZSBzdGFrZSBhY2NvdW50IChzb2xBdXRob3JpemVJbnRlbnQpXG4gICAgICAgICdhdXRob3JpemUnLFxuICAgICAgXTtcbiAgICAgIGV4cGVjdGVkLmZvckVhY2goKHQpID0+IGFzc2VydC5vayhOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHQpLCBgJHt0fSBzaG91bGQgYmUgaW4gTk9fUkVDSVBJRU5UX1RYX1RZUEVTYCkpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKE5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5zaXplLCBleHBlY3RlZC5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGNvbnRhaW4gdmFsdWUtdHJhbnNmZXIgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBbJ3BheW1lbnQnLCAnZmFub3V0JywgJ3ZvdGUnLCAnZGVmaS1kZXBvc2l0JywgJ2RlZmktcmVkZWVtJ10uZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICBhc3NlcnQub2soIU5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXModCksIGAke3R9IG11c3QgTk9UIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Bhc3NlcyB0aHJvdWdoIHR4UGFyYW1zLnJlY2lwaWVudHMgd2hlbiBwcmVzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGFiYycsIGFtb3VudDogJzEwMCcgfV0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHR4UGFyYW1zKTtcbiAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMsIHR4UGFyYW1zLnJlY2lwaWVudHMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhbGxzIGJhY2sgdG8gaW50ZW50LnJlY2lwaWVudHMgd2hlbiB0eFBhcmFtcyBoYXMgbm9uZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sIGFtb3VudDogeyB2YWx1ZTogJzUwMCcsIHN5bWJvbDogJ2V0aCcgfSB9XSxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAxKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFkZHJlc3MsICcweGFiYycpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYW1vdW50LCAnNTAwJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVzb2x2ZXMgdHhUeXBlIGZyb20gaW50ZW50LmludGVudFR5cGUgd2hlbiB0eFBhcmFtcy50eXBlIGlzIGFic2VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2NvbnNvbGlkYXRlJyB9IGFzIGFueSB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgJ2NvbnNvbGlkYXRlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIGV4ZW1wdCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgdHhUeXBlIG9mIFtcbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdjb25zb2xpZGF0ZScsXG4gICAgICAgICdjb250cmFjdENhbGwnLFxuICAgICAgICAnZGVsZWdhdGUnLFxuICAgICAgICAnc3Rha2UnLFxuICAgICAgICAnY3JlYXRlQWNjb3VudCcsXG4gICAgICAgICdwbGVkZ2UnLFxuICAgICAgICAnaW1wb3J0JyxcbiAgICAgICAgJ2ltcG9ydHRvYycsXG4gICAgICAgICdkZWFjdGl2YXRlJyxcbiAgICAgIF0pIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogdHhUeXBlIH0pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgQXZhbGFuY2hlIGNyb3NzLWNoYWluIGltcG9ydHMgcmVzb2x2ZWQgZnJvbSBpbnRlbnQuaW50ZW50VHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFAtY2hhaW4gYW5kIEMtY2hhaW4gaW1wb3J0IGludGVudHMgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIHJlY2lwaWVudHMg4oCUXG4gICAgICAvLyB0aGUgd2FsbGV0IGltcG9ydHMgaXRzIG93biBVVFhPcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgdGhlXG4gICAgICAvLyB3YWxsZXQgaXRzZWxmLiBUaGUgaW50ZW50VHlwZSBsaXZlcyBvbmx5IG9uIHRoZSBpbnRlbnQgKHR4UGFyYW1zLnR5cGVcbiAgICAgIC8vIGlzIHVuc2V0IG9uIHRoZSBNUEMgc2lnbmluZyBjYWxsKSBzbyB0aGUgZ3VhcmQgbXVzdCByZWFkIGl0IGZyb20gdGhlcmUuXG4gICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWydpbXBvcnQnLCAnaW1wb3J0dG9jJ10pIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiBidWlsZFBhcmFtcy50eXBlIGlzIFBhc2NhbENhc2UgYnV0IGludGVudC5pbnRlbnRUeXBlIGlzIGxvd2VyY2FzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHNpZ25UcmFuc2FjdGlvblRzcyBwYXNzZXMgdHhQcmVidWlsZC5idWlsZFBhcmFtcyBhcyB0eFBhcmFtcy4gUHJlYnVpbGQgdXNlc1xuICAgICAgLy8gdHlwZTogJ0ltcG9ydCcgd2hpbGUgV1Agc3RvcmVzIGludGVudFR5cGU6ICdpbXBvcnQnIG9uIHRoZSB0eFJlcXVlc3QuXG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdpbXBvcnQnLCByZWNpcGllbnRzOiBbXSB9IGFzIGFueSB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgeyB0eXBlOiAnSW1wb3J0JywgcmVjaXBpZW50czogW10gfSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciBmb3IgdW5rbm93biB0eXBlcyB3aXRoIG5vIHJlY2lwaWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6ICdwYXltZW50JyB9KSxcbiAgICAgICAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gICAgICAgICdzaG91bGQgdGhyb3cgZm9yIHBheW1lbnQgdHlwZSB3aXRoIG5vIHJlY2lwaWVudHMnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Rocm93cyB3aGVuIHR4UGFyYW1zIGlzIHVuZGVmaW5lZCBhbmQgbm8gaW50ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCgpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB1bmRlZmluZWQpLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiBpbnRlbnQgaGFzIHN0YWtpbmdSZXF1ZXN0SWQgKHN0YWtpbmcgYnlwYXNzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlbGVnYXRlJywgc3Rha2luZ1JlcXVlc3RJZDogJ3N0YWtpbmctcmVxLTEyMycgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcm9wYWdhdGVzIHN0YWtpbmdSZXF1ZXN0SWQgZnJvbSBpbnRlbnQgaW50byBlZmZlY3RpdmVUeFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlbGVnYXRlJywgc3Rha2luZ1JlcXVlc3RJZDogJ3N0YWtpbmctcmVxLTQ1NicgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuc3Rha2luZ1JlcXVlc3RJZCwgJ3N0YWtpbmctcmVxLTQ1NicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IG92ZXJ3cml0ZSBleGlzdGluZyBzdGFraW5nUmVxdWVzdElkIGluIHR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnLCBzdGFraW5nUmVxdWVzdElkOiAnZnJvbS1pbnRlbnQnIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHN0YWtpbmdSZXF1ZXN0SWQ6ICdmcm9tLWNhbGxlcicgfSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnN0YWtpbmdSZXF1ZXN0SWQsICdmcm9tLWNhbGxlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZWZlcnMgdHhQYXJhbXMucmVjaXBpZW50cyBvdmVyIGludGVudC5yZWNpcGllbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGludGVudCcgfSwgYW1vdW50OiB7IHZhbHVlOiAnOTk5Jywgc3ltYm9sOiAnZXRoJyB9IH1dLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgdHhQYXJhbXMgPSB7IHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6ICcweGNhbGxlcicsIGFtb3VudDogJzEwMCcgfV0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHR4UGFyYW1zKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFkZHJlc3MsICcweGNhbGxlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBkYXRhIGZpZWxkIGZyb20gaW50ZW50IHJlY2lwaWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LCBhbW91bnQ6IHsgdmFsdWU6ICcxMDAnLCBzeW1ib2w6ICdldGgnIH0sIGRhdGE6ICcweGRlYWRiZWVmJyB9XSxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmRhdGEsICcweGRlYWRiZWVmJyk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndG9rZW5OYW1lIHByZXNlcnZhdGlvbiByZWdyZXNzaW9uIHRlc3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3ByZXNlcnZlcyB0b2tlbk5hbWUgZnJvbSBhbW91bnQuc3ltYm9sIHdoZW4gaXQgZGlmZmVycyBmcm9tIGNoYWluTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdVc2VyV2FsbGV0QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/Lmxlbmd0aCwgMSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ3Rzb2w6dXNkYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIE5PVCBzZXQgdG9rZW5OYW1lIHdoZW4gc3ltYm9sIGVxdWFscyBjaGFpbk5hbWUgKG5hdGl2ZSBTT0wgdHJhbnNmZXIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnNTAwMDAwMDAwMCcsIHN5bWJvbDogJ3Rzb2wnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncHJlZmVycyB0b2tlbkRhdGEudG9rZW5OYW1lIG92ZXIgYW1vdW50LnN5bWJvbCAodXNlcyBkaXN0aW5jdCB2YWx1ZXMgdG8gdmVyaWZ5KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdSZWNpcGllbnRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzUwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYy1hbHQnIH0sXG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhOiB7IHRva2VuVHlwZTogJ2Z1bmdpYmxlJywgdG9rZW5RdWFudGl0eTogJzUwMDAwMCcsIHRva2VuTmFtZTogJ2Nhbm9uaWNhbC10b2tlbi1uYW1lJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICdjYW5vbmljYWwtdG9rZW4tbmFtZScpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdmYWxscyBiYWNrIHRvIGFtb3VudC5zeW1ib2wgd2hlbiB0b2tlbkRhdGEudG9rZW5OYW1lIGlzIGFic2VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdSZWNpcGllbnRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzIwMDAwMCcsIHN5bWJvbDogJ3NvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICAgIHRva2VuRGF0YTogeyB0b2tlblR5cGU6ICdmdW5naWJsZScsIHRva2VuUXVhbnRpdHk6ICcyMDAwMDAnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICdzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAnc29sOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZmFsbHMgYmFjayB0byBhbW91bnQuc3ltYm9sIHdoZW4gdG9rZW5EYXRhLnRva2VuTmFtZSBpcyBlbXB0eSBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnUmVjaXBpZW50QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhOiB7IHRva2VuVHlwZTogJ2Z1bmdpYmxlJywgdG9rZW5RdWFudGl0eTogJzEwMDAwMCcsIHRva2VuTmFtZTogJycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAndHNvbDp1c2RjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgTk9UIHNldCB0b2tlbk5hbWUgd2hlbiBjaGFpbk5hbWUgaXMgYWJzZW50IChsZWdhY3kgRUNEU0EgY2FsbGVycywgbm8gdG9rZW5EYXRhKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGFiYycgfSwgYW1vdW50OiB7IHZhbHVlOiAnMTAwJywgc3ltYm9sOiAnZXRoJyB9IH1dLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFkZHJlc3MsICcweGFiYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdwcmVzZXJ2ZXMgdG9rZW5EYXRhLnRva2VuTmFtZSB3aGVuIGNoYWluTmFtZSBpcyBhYnNlbnQgKGxlZ2FjeSBFQ0RTQSB3aXRoIHRva2VuRGF0YSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3RyYW5zZmVyVG9rZW4nLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMTAwMCcsIHN5bWJvbDogJ2VyYzIwOnVzZGMnIH0sXG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhOiB7IHRva2VuVHlwZTogJ2Z1bmdpYmxlJywgdG9rZW5RdWFudGl0eTogJzEwMDAnLCB0b2tlbk5hbWU6ICdldGg6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ2V0aDp1c2RjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NlbmRNYW55IHRzb2w6dXNkYzogZG9lcyBub3QgdGhyb3cgYW5kIHByZXNlcnZlcyB0b2tlbk5hbWUgaW4gZnVsbCByb3VuZC10cmlwJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbFVzZXJXYWxsZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzIwMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdTb2xVc2VyV2FsbGV0MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMicgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICczMDAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/Lmxlbmd0aCwgMik7XG4gICAgICAgIHJlc3VsdC5yZWNpcGllbnRzIS5mb3JFYWNoKChyKSA9PiBhc3NlcnQuc3RyaWN0RXF1YWwoci50b2tlbk5hbWUsICd0c29sOnVzZGMnKSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMF0uYW1vdW50LCAnMjAwMDAwMCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMhWzFdLmFtb3VudCwgJzMwMDAwMDAnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaGFuZGxlcyBtaXhlZCBuYXRpdmUgKyB0b2tlbiByZWNpcGllbnRzIGNvcnJlY3RseScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdTb2xOYXRpdmUxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMTAwMDAwMDAwMCcsIHN5bWJvbDogJ3Rzb2wnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdTb2xUb2tlbjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc1MDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMF0udG9rZW5OYW1lLCB1bmRlZmluZWQpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHMhWzFdLnRva2VuTmFtZSwgJ3Rzb2w6dXNkYycpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnU09MIG5vLXJlY2lwaWVudCBpbnRlbnQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIFwiZGVsZWdhdGVcIiAoc29sRGVsZWdhdGVJbnRlbnQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWxlZ2F0ZScgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIFwiZGVhY3RpdmF0ZVwiIChzb2xEZWFjdGl2YXRlSW50ZW50KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVhY3RpdmF0ZScgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgZm9yIFwiYXV0aG9yaXplXCIgKHNvbEF1dGhvcml6ZUludGVudCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2F1dGhvcml6ZScgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndGhyb3dzIGZvciBzdGFraW5nQXV0aG9yaXplIOKAlCBtdXN0IGJlIHZhbGlkYXRlZCBhdCBjb2luIGxheWVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdzdGFraW5nQXV0aG9yaXplJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNGQUFvSDtBQUNwSCw0REFBMEU7QUFHMUUsU0FBUyxhQUFhLENBQUMsWUFBZ0MsRUFBRTtJQUN2RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsU0FBUztLQUNXLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osY0FBYztnQkFDZCxXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCxhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QseURBQXlEO2dCQUN6RCxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osaUJBQWlCO2dCQUNqQixPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLE9BQU87Z0JBQ1AsbUJBQW1CO2dCQUNuQixlQUFlO2dCQUNmLGdCQUFnQjtnQkFDaEIsZ0JBQWdCO2dCQUNoQix3QkFBd0I7Z0JBQ3hCLGVBQWU7Z0JBQ2YsUUFBUTtnQkFDUiwrQ0FBK0M7Z0JBQy9DLFFBQVE7Z0JBQ1IsV0FBVztnQkFDWCxz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RUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFO2dCQUN4RCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRixnQkFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlDQUF3QixFQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFO2dCQUNsRSxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUEseUNBQXdCLEVBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGdDQUF1QixDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBOT19SRUNJUElFTlRfVFhfVFlQRVMsIHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvcmVjaXBpZW50VXRpbHMnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vZXJyb3JzJztcbmltcG9ydCB7IFR4UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvYmFzZVR5cGVzJztcblxuZnVuY3Rpb24gbWFrZVR4UmVxdWVzdChvdmVycmlkZXM6IFBhcnRpYWw8VHhSZXF1ZXN0PiA9IHt9KTogVHhSZXF1ZXN0IHtcbiAgcmV0dXJuIHtcbiAgICB0eFJlcXVlc3RJZDogJ3Rlc3QtdHgtcmVxdWVzdC1pZCcsXG4gICAgd2FsbGV0SWQ6ICd0ZXN0LXdhbGxldC1pZCcsXG4gICAgaW50ZW50OiB1bmRlZmluZWQsXG4gICAgLi4ub3ZlcnJpZGVzLFxuICB9IGFzIHVua25vd24gYXMgVHhSZXF1ZXN0O1xufVxuXG5kZXNjcmliZSgncmVjaXBpZW50VXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdOT19SRUNJUElFTlRfVFhfVFlQRVMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NvbnRhaW5zIGFsbCBleHBlY3RlZCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gW1xuICAgICAgICAvLyBFQ0RTQSBFVk1cbiAgICAgICAgJ2FjY2VsZXJhdGlvbicsXG4gICAgICAgICdmaWxsTm9uY2UnLFxuICAgICAgICAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICd0b2tlbkFwcHJvdmFsJyxcbiAgICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICAgJ2JyaWRnZUZ1bmRzJyxcbiAgICAgICAgJ2VuYWJsZVRva2VuJyxcbiAgICAgICAgJ2VuYWJsZXRva2VuJyxcbiAgICAgICAgJ2Rpc2FibGV0b2tlbicsXG4gICAgICAgICdjdXN0b21UeCcsXG4gICAgICAgICdkZWZpQXBwcm92ZScsXG4gICAgICAgICdkZWZpRGVwb3NpdCcsXG4gICAgICAgICdkZWZpV2l0aGRyYXcnLFxuICAgICAgICAnd3JhcEFwcHJvdmUnLFxuICAgICAgICAnY29udHJhY3RDYWxsJyxcbiAgICAgICAgLy8gU3Rha2luZyDigJQgJ2RlbGVnYXRlJyBhbHNvIGNvdmVycyBTT0wgc29sRGVsZWdhdGVJbnRlbnRcbiAgICAgICAgJ2RlbGVnYXRlJyxcbiAgICAgICAgJ3VuZGVsZWdhdGUnLFxuICAgICAgICAnc3dpdGNoVmFsaWRhdG9yJyxcbiAgICAgICAgJ3N0YWtlJyxcbiAgICAgICAgJ3Vuc3Rha2UnLFxuICAgICAgICAnc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAgICAgICAndW5zdGFrZVdpdGhDYWxsRGF0YScsXG4gICAgICAgICd0cmFuc2ZlclN0YWtlJyxcbiAgICAgICAgJ2luY3JlYXNlU3Rha2UnLFxuICAgICAgICAnZ29VbnN0YWtlJyxcbiAgICAgICAgJ2NsYWltJyxcbiAgICAgICAgJ3N0YWtlQ2xhaW1SZXdhcmRzJyxcbiAgICAgICAgJ2NyZWF0ZUFjY291bnQnLFxuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjYW50b25Db21tYW5kJyxcbiAgICAgICAgJ3BsZWRnZScsXG4gICAgICAgIC8vIEF2YWxhbmNoZSAvIEZsYXJlIGNyb3NzLWNoYWluIGF0b21pYyBpbXBvcnRzXG4gICAgICAgICdpbXBvcnQnLFxuICAgICAgICAnaW1wb3J0dG9jJyxcbiAgICAgICAgLy8gU09MOiBkZWFjdGl2YXRlIHN0YWtlIGFjY291bnQgKHNvbERlYWN0aXZhdGVJbnRlbnQpXG4gICAgICAgICdkZWFjdGl2YXRlJyxcbiAgICAgICAgLy8gU09MOiBhdXRob3JpemUgc3Rha2UgYWNjb3VudCAoc29sQXV0aG9yaXplSW50ZW50KVxuICAgICAgICAnYXV0aG9yaXplJyxcbiAgICAgIF07XG4gICAgICBleHBlY3RlZC5mb3JFYWNoKCh0KSA9PiBhc3NlcnQub2soTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0KSwgYCR7dH0gc2hvdWxkIGJlIGluIE5PX1JFQ0lQSUVOVF9UWF9UWVBFU2ApKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChOT19SRUNJUElFTlRfVFhfVFlQRVMuc2l6ZSwgZXhwZWN0ZWQubGVuZ3RoKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBjb250YWluIHZhbHVlLXRyYW5zZmVyIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgWydwYXltZW50JywgJ2Zhbm91dCcsICd2b3RlJywgJ2RlZmktZGVwb3NpdCcsICdkZWZpLXJlZGVlbSddLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKCFOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHQpLCBgJHt0fSBtdXN0IE5PVCBiZSBpbiBOT19SRUNJUElFTlRfVFhfVFlQRVNgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdwYXNzZXMgdGhyb3VnaCB0eFBhcmFtcy5yZWNpcGllbnRzIHdoZW4gcHJlc2VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGNvbnN0IHR4UGFyYW1zID0geyByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiAnMHhhYmMnLCBhbW91bnQ6ICcxMDAnIH1dIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB0eFBhcmFtcyk7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB0eFBhcmFtcy5yZWNpcGllbnRzKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWxscyBiYWNrIHRvIGludGVudC5yZWNpcGllbnRzIHdoZW4gdHhQYXJhbXMgaGFzIG5vbmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc1MDAnLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/Lmxlbmd0aCwgMSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5hZGRyZXNzLCAnMHhhYmMnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLmFtb3VudCwgJzUwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Jlc29sdmVzIHR4VHlwZSBmcm9tIGludGVudC5pbnRlbnRUeXBlIHdoZW4gdHhQYXJhbXMudHlwZSBpcyBhYnNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdjb25zb2xpZGF0ZScgfSBhcyBhbnkgfSk7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICdjb25zb2xpZGF0ZScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBleGVtcHQgdHlwZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IHR4VHlwZSBvZiBbXG4gICAgICAgICdhY2NlbGVyYXRpb24nLFxuICAgICAgICAnY29uc29saWRhdGUnLFxuICAgICAgICAnY29udHJhY3RDYWxsJyxcbiAgICAgICAgJ2RlbGVnYXRlJyxcbiAgICAgICAgJ3N0YWtlJyxcbiAgICAgICAgJ2NyZWF0ZUFjY291bnQnLFxuICAgICAgICAncGxlZGdlJyxcbiAgICAgICAgJ2ltcG9ydCcsXG4gICAgICAgICdpbXBvcnR0b2MnLFxuICAgICAgICAnZGVhY3RpdmF0ZScsXG4gICAgICBdKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6IHR4VHlwZSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzIGZvciBhIHdyYXBBcHByb3ZlIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAnd3JhcEFwcHJvdmUnLFxuICAgICAgICAgIHRva2VuTmFtZTogJ2h0ZXRoOmN1c2R0JyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICd3cmFwQXBwcm92ZScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHRocm93IGZvciBBdmFsYW5jaGUgY3Jvc3MtY2hhaW4gaW1wb3J0cyByZXNvbHZlZCBmcm9tIGludGVudC5pbnRlbnRUeXBlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUC1jaGFpbiBhbmQgQy1jaGFpbiBpbXBvcnQgaW50ZW50cyBsZWdpdGltYXRlbHkgY2Fycnkgbm8gcmVjaXBpZW50cyDigJRcbiAgICAgIC8vIHRoZSB3YWxsZXQgaW1wb3J0cyBpdHMgb3duIFVUWE9zIGFuZCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyB0aGVcbiAgICAgIC8vIHdhbGxldCBpdHNlbGYuIFRoZSBpbnRlbnRUeXBlIGxpdmVzIG9ubHkgb24gdGhlIGludGVudCAodHhQYXJhbXMudHlwZVxuICAgICAgLy8gaXMgdW5zZXQgb24gdGhlIE1QQyBzaWduaW5nIGNhbGwpIHNvIHRoZSBndWFyZCBtdXN0IHJlYWQgaXQgZnJvbSB0aGVyZS5cbiAgICAgIGZvciAoY29uc3QgaW50ZW50VHlwZSBvZiBbJ2ltcG9ydCcsICdpbXBvcnR0b2MnXSkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGUgfSBhcyBhbnkgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIGJ1aWxkUGFyYW1zLnR5cGUgaXMgUGFzY2FsQ2FzZSBidXQgaW50ZW50LmludGVudFR5cGUgaXMgbG93ZXJjYXNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc2lnblRyYW5zYWN0aW9uVHNzIHBhc3NlcyB0eFByZWJ1aWxkLmJ1aWxkUGFyYW1zIGFzIHR4UGFyYW1zLiBQcmVidWlsZCB1c2VzXG4gICAgICAvLyB0eXBlOiAnSW1wb3J0JyB3aGlsZSBXUCBzdG9yZXMgaW50ZW50VHlwZTogJ2ltcG9ydCcgb24gdGhlIHR4UmVxdWVzdC5cbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2ltcG9ydCcsIHJlY2lwaWVudHM6IFtdIH0gYXMgYW55IH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6ICdJbXBvcnQnLCByZWNpcGllbnRzOiBbXSB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGZvciB1bmtub3duIHR5cGVzIHdpdGggbm8gcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgdHlwZTogJ3BheW1lbnQnIH0pLFxuICAgICAgICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgICAgICAgJ3Nob3VsZCB0aHJvdyBmb3IgcGF5bWVudCB0eXBlIHdpdGggbm8gcmVjaXBpZW50cydcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHhQYXJhbXMgaXMgdW5kZWZpbmVkIGFuZCBubyBpbnRlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCksIEludmFsaWRUcmFuc2FjdGlvbkVycm9yKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIGludGVudCBoYXMgc3Rha2luZ1JlcXVlc3RJZCAoc3Rha2luZyBieXBhc3MpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnLCBzdGFraW5nUmVxdWVzdElkOiAnc3Rha2luZy1yZXEtMTIzJyB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Byb3BhZ2F0ZXMgc3Rha2luZ1JlcXVlc3RJZCBmcm9tIGludGVudCBpbnRvIGVmZmVjdGl2ZVR4UGFyYW1zJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDogeyBpbnRlbnRUeXBlOiAnZGVsZWdhdGUnLCBzdGFraW5nUmVxdWVzdElkOiAnc3Rha2luZy1yZXEtNDU2JyB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5zdGFraW5nUmVxdWVzdElkLCAnc3Rha2luZy1yZXEtNDU2Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3Qgb3ZlcndyaXRlIGV4aXN0aW5nIHN0YWtpbmdSZXF1ZXN0SWQgaW4gdHhQYXJhbXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWxlZ2F0ZScsIHN0YWtpbmdSZXF1ZXN0SWQ6ICdmcm9tLWludGVudCcgfSBhcyBhbnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHsgc3Rha2luZ1JlcXVlc3RJZDogJ2Zyb20tY2FsbGVyJyB9KTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuc3Rha2luZ1JlcXVlc3RJZCwgJ2Zyb20tY2FsbGVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlZmVycyB0eFBhcmFtcy5yZWNpcGllbnRzIG92ZXIgaW50ZW50LnJlY2lwaWVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4aW50ZW50JyB9LCBhbW91bnQ6IHsgdmFsdWU6ICc5OTknLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgIH0gYXMgYW55LFxuICAgICAgfSk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4Y2FsbGVyJywgYW1vdW50OiAnMTAwJyB9XSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdHhQYXJhbXMpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYWRkcmVzcywgJzB4Y2FsbGVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlc2VydmVzIGRhdGEgZmllbGQgZnJvbSBpbnRlbnQgcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogeyBhZGRyZXNzOiAnMHhhYmMnIH0sIGFtb3VudDogeyB2YWx1ZTogJzEwMCcsIHN5bWJvbDogJ2V0aCcgfSwgZGF0YTogJzB4ZGVhZGJlZWYnIH1dLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uZGF0YSwgJzB4ZGVhZGJlZWYnKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd0b2tlbk5hbWUgcHJlc2VydmF0aW9uIHJlZ3Jlc3Npb24gdGVzdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgncHJlc2VydmVzIHRva2VuTmFtZSBmcm9tIGFtb3VudC5zeW1ib2wgd2hlbiBpdCBkaWZmZXJzIGZyb20gY2hhaW5OYW1lJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1VzZXJXYWxsZXRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAxKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAndHNvbDp1c2RjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgTk9UIHNldCB0b2tlbk5hbWUgd2hlbiBzeW1ib2wgZXF1YWxzIGNoYWluTmFtZSAobmF0aXZlIFNPTCB0cmFuc2ZlciknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnUmVjaXBpZW50QWRkcmVzczExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICc1MDAwMDAwMDAwJywgc3ltYm9sOiAndHNvbCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCB1bmRlZmluZWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdwcmVmZXJzIHRva2VuRGF0YS50b2tlbk5hbWUgb3ZlciBhbW91bnQuc3ltYm9sICh1c2VzIGRpc3RpbmN0IHZhbHVlcyB0byB2ZXJpZnkpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnNTAwMDAwJywgc3ltYm9sOiAndHNvbDp1c2RjLWFsdCcgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnNTAwMDAwJywgdG9rZW5OYW1lOiAnY2Fub25pY2FsLXRva2VuLW5hbWUnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgJ2Nhbm9uaWNhbC10b2tlbi1uYW1lJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2ZhbGxzIGJhY2sgdG8gYW1vdW50LnN5bWJvbCB3aGVuIHRva2VuRGF0YS50b2tlbk5hbWUgaXMgYWJzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1JlY2lwaWVudEFkZHJlc3MxMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMjAwMDAwJywgc3ltYm9sOiAnc29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgICAgdG9rZW5EYXRhOiB7IHRva2VuVHlwZTogJ2Z1bmdpYmxlJywgdG9rZW5RdWFudGl0eTogJzIwMDAwMCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3NvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICdzb2w6dXNkYycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdmYWxscyBiYWNrIHRvIGFtb3VudC5zeW1ib2wgd2hlbiB0b2tlbkRhdGEudG9rZW5OYW1lIGlzIGVtcHR5IHN0cmluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAncGF5bWVudCcsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICdSZWNpcGllbnRBZGRyZXNzMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzEwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnMTAwMDAwJywgdG9rZW5OYW1lOiAnJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9LCAndHNvbCcpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS50b2tlbk5hbWUsICd0c29sOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBOT1Qgc2V0IHRva2VuTmFtZSB3aGVuIGNoYWluTmFtZSBpcyBhYnNlbnQgKGxlZ2FjeSBFQ0RTQSBjYWxsZXJzLCBubyB0b2tlbkRhdGEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFt7IGFkZHJlc3M6IHsgYWRkcmVzczogJzB4YWJjJyB9LCBhbW91bnQ6IHsgdmFsdWU6ICcxMDAnLCBzeW1ib2w6ICdldGgnIH0gfV0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8uWzBdLnRva2VuTmFtZSwgdW5kZWZpbmVkKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYWRkcmVzcywgJzB4YWJjJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3ByZXNlcnZlcyB0b2tlbkRhdGEudG9rZW5OYW1lIHdoZW4gY2hhaW5OYW1lIGlzIGFic2VudCAobGVnYWN5IEVDRFNBIHdpdGggdG9rZW5EYXRhKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgICAgaW50ZW50OiB7XG4gICAgICAgICAgICBpbnRlbnRUeXBlOiAndHJhbnNmZXJUb2tlbicsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGFiYycgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwJywgc3ltYm9sOiAnZXJjMjA6dXNkYycgfSxcbiAgICAgICAgICAgICAgICB0b2tlbkRhdGE6IHsgdG9rZW5UeXBlOiAnZnVuZ2libGUnLCB0b2tlblF1YW50aXR5OiAnMTAwMCcsIHRva2VuTmFtZTogJ2V0aDp1c2RjJyB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9IGFzIGFueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0udG9rZW5OYW1lLCAnZXRoOnVzZGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2VuZE1hbnkgdHNvbDp1c2RjOiBkb2VzIG5vdCB0aHJvdyBhbmQgcHJlc2VydmVzIHRva2VuTmFtZSBpbiBmdWxsIHJvdW5kLXRyaXAnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICAgIGludGVudDoge1xuICAgICAgICAgICAgaW50ZW50VHlwZTogJ3BheW1lbnQnLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogeyBhZGRyZXNzOiAnU29sVXNlcldhbGxldDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnIH0sXG4gICAgICAgICAgICAgICAgYW1vdW50OiB7IHZhbHVlOiAnMjAwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbFVzZXJXYWxsZXQyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzMwMDAwMDAnLCBzeW1ib2w6ICd0c29sOnVzZGMnIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0gYXMgYW55LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30sICd0c29sJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cz8ubGVuZ3RoLCAyKTtcbiAgICAgICAgcmVzdWx0LnJlY2lwaWVudHMhLmZvckVhY2goKHIpID0+IGFzc2VydC5zdHJpY3RFcXVhbChyLnRva2VuTmFtZSwgJ3Rzb2w6dXNkYycpKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVswXS5hbW91bnQsICcyMDAwMDAwJyk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMV0uYW1vdW50LCAnMzAwMDAwMCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdoYW5kbGVzIG1peGVkIG5hdGl2ZSArIHRva2VuIHJlY2lwaWVudHMgY29ycmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHtcbiAgICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbE5hdGl2ZTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMScgfSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHsgdmFsdWU6ICcxMDAwMDAwMDAwJywgc3ltYm9sOiAndHNvbCcgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHsgYWRkcmVzczogJ1NvbFRva2VuMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExJyB9LFxuICAgICAgICAgICAgICAgIGFtb3VudDogeyB2YWx1ZTogJzUwMDAwMCcsIHN5bWJvbDogJ3Rzb2w6dXNkYycgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSBhcyBhbnksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSwgJ3Rzb2wnKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzIVswXS50b2tlbk5hbWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cyFbMV0udG9rZW5OYW1lLCAndHNvbDp1c2RjJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdTT0wgbm8tcmVjaXBpZW50IGludGVudCB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJkZWxlZ2F0ZVwiIChzb2xEZWxlZ2F0ZUludGVudCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2RlbGVnYXRlJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJkZWFjdGl2YXRlXCIgKHNvbERlYWN0aXZhdGVJbnRlbnQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGU6ICdkZWFjdGl2YXRlJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgXCJhdXRob3JpemVcIiAoc29sQXV0aG9yaXplSW50ZW50KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnYXV0aG9yaXplJyB9IGFzIGFueSB9KTtcbiAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aHJvd3MgZm9yIHN0YWtpbmdBdXRob3JpemUg4oCUIG11c3QgYmUgdmFsaWRhdGVkIGF0IGNvaW4gbGF5ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ3N0YWtpbmdBdXRob3JpemUnIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQudGhyb3dzKCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redpallasMPCv2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redpallasMPCv2.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ const src_1 = require("../../../../../../src");
39
+ const { RedpallasMPCv2Utils } = src_1.RedpallasUtils;
40
+ describe('RedpallasMPCv2Utils', function () {
41
+ afterEach(function () {
42
+ sinon.restore();
43
+ });
44
+ describe('sendKeyGenerationRound1 / sendKeyGenerationRound2 dispatch', function () {
45
+ let utils;
46
+ beforeEach(function () {
47
+ const mockBitGo = {};
48
+ const mockCoin = {};
49
+ utils = new RedpallasMPCv2Utils(mockBitGo, mockCoin);
50
+ });
51
+ it('sendKeyGenerationRound1BySender invokes the sender with the MPCv2-R1 round', async function () {
52
+ const senderFn = sinon.stub().resolves({ sessionId: 's1', bitgoMsg1: { message: 'm', signature: 'sig' } });
53
+ const payload = {
54
+ userGpgPublicKey: 'user-pub',
55
+ backupGpgPublicKey: 'backup-pub',
56
+ userMsg1: { message: 'u1', signature: 'usig' },
57
+ backupMsg1: { message: 'b1', signature: 'bsig' },
58
+ };
59
+ const result = await utils.sendKeyGenerationRound1BySender(senderFn, payload);
60
+ assert.ok(senderFn.calledOnceWith('MPCv2-R1', payload));
61
+ assert.strictEqual(result.sessionId, 's1');
62
+ });
63
+ it('sendKeyGenerationRound2BySender invokes the sender with the MPCv2-R2 round', async function () {
64
+ const senderFn = sinon.stub().resolves({
65
+ sessionId: 's1',
66
+ commonPublicKeychain: 'a'.repeat(64),
67
+ bitgoMsg2: { message: 'm', signature: 'sig' },
68
+ });
69
+ const payload = {
70
+ sessionId: 's1',
71
+ userMsg2: { message: 'u2', signature: 'usig' },
72
+ backupMsg2: { message: 'b2', signature: 'bsig' },
73
+ derivationSeed: 'a'.repeat(64),
74
+ };
75
+ const result = await utils.sendKeyGenerationRound2BySender(senderFn, payload);
76
+ assert.ok(senderFn.calledOnceWith('MPCv2-R2', payload));
77
+ assert.strictEqual(result.commonPublicKeychain, 'a'.repeat(64));
78
+ });
79
+ });
80
+ });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzTVBDdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlZHBhbGxhcy9yZWRwYWxsYXNNUEN2Mi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyw2Q0FBK0I7QUFDL0IsK0NBQTZFO0FBRTdFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLG9CQUFjLENBQUM7QUFHL0MsUUFBUSxDQUFDLHFCQUFxQixFQUFFO0lBQzlCLFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw0REFBNEQsRUFBRTtRQUNyRSxJQUFJLEtBQTBCLENBQUM7UUFFL0IsVUFBVSxDQUFDO1lBQ1QsTUFBTSxTQUFTLEdBQUcsRUFBMEIsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxFQUEwQixDQUFDO1lBQzVDLEtBQUssR0FBRyxJQUFJLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1lBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRyxNQUFNLE9BQU8sR0FBRztnQkFDZCxnQkFBZ0IsRUFBRSxVQUFVO2dCQUM1QixrQkFBa0IsRUFBRSxZQUFZO2dCQUNoQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7Z0JBQzlDLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRTthQUNqRCxDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsUUFBaUIsRUFBRSxPQUFnQixDQUFDLENBQUM7WUFFaEcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1lBQ3BGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7YUFDOUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO2dCQUM5QyxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7Z0JBQ2hELGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzthQUMvQixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsUUFBaUIsRUFBRSxPQUFnQixDQUFDLENBQUM7WUFFaEcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgSUJhc2VDb2luLCBSZWRwYWxsYXNVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NyYyc7XG5cbmNvbnN0IHsgUmVkcGFsbGFzTVBDdjJVdGlscyB9ID0gUmVkcGFsbGFzVXRpbHM7XG50eXBlIFJlZHBhbGxhc01QQ3YyVXRpbHMgPSBJbnN0YW5jZVR5cGU8dHlwZW9mIFJlZHBhbGxhc1V0aWxzLlJlZHBhbGxhc01QQ3YyVXRpbHM+O1xuXG5kZXNjcmliZSgnUmVkcGFsbGFzTVBDdjJVdGlscycsIGZ1bmN0aW9uICgpIHtcbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZW5kS2V5R2VuZXJhdGlvblJvdW5kMSAvIHNlbmRLZXlHZW5lcmF0aW9uUm91bmQyIGRpc3BhdGNoJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCB1dGlsczogUmVkcGFsbGFzTVBDdjJVdGlscztcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbW9ja0JpdEdvID0ge30gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG4gICAgICBjb25zdCBtb2NrQ29pbiA9IHt9IGFzIHVua25vd24gYXMgSUJhc2VDb2luO1xuICAgICAgdXRpbHMgPSBuZXcgUmVkcGFsbGFzTVBDdjJVdGlscyhtb2NrQml0R28sIG1vY2tDb2luKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZW5kS2V5R2VuZXJhdGlvblJvdW5kMUJ5U2VuZGVyIGludm9rZXMgdGhlIHNlbmRlciB3aXRoIHRoZSBNUEN2Mi1SMSByb3VuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHNlbmRlckZuID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2Vzc2lvbklkOiAnczEnLCBiaXRnb01zZzE6IHsgbWVzc2FnZTogJ20nLCBzaWduYXR1cmU6ICdzaWcnIH0gfSk7XG4gICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgICB1c2VyR3BnUHVibGljS2V5OiAndXNlci1wdWInLFxuICAgICAgICBiYWNrdXBHcGdQdWJsaWNLZXk6ICdiYWNrdXAtcHViJyxcbiAgICAgICAgdXNlck1zZzE6IHsgbWVzc2FnZTogJ3UxJywgc2lnbmF0dXJlOiAndXNpZycgfSxcbiAgICAgICAgYmFja3VwTXNnMTogeyBtZXNzYWdlOiAnYjEnLCBzaWduYXR1cmU6ICdic2lnJyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdXRpbHMuc2VuZEtleUdlbmVyYXRpb25Sb3VuZDFCeVNlbmRlcihzZW5kZXJGbiBhcyBuZXZlciwgcGF5bG9hZCBhcyBuZXZlcik7XG5cbiAgICAgIGFzc2VydC5vayhzZW5kZXJGbi5jYWxsZWRPbmNlV2l0aCgnTVBDdjItUjEnLCBwYXlsb2FkKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnNlc3Npb25JZCwgJ3MxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2VuZEtleUdlbmVyYXRpb25Sb3VuZDJCeVNlbmRlciBpbnZva2VzIHRoZSBzZW5kZXIgd2l0aCB0aGUgTVBDdjItUjIgcm91bmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kZXJGbiA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7XG4gICAgICAgIHNlc3Npb25JZDogJ3MxJyxcbiAgICAgICAgY29tbW9uUHVibGljS2V5Y2hhaW46ICdhJy5yZXBlYXQoNjQpLFxuICAgICAgICBiaXRnb01zZzI6IHsgbWVzc2FnZTogJ20nLCBzaWduYXR1cmU6ICdzaWcnIH0sXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIHNlc3Npb25JZDogJ3MxJyxcbiAgICAgICAgdXNlck1zZzI6IHsgbWVzc2FnZTogJ3UyJywgc2lnbmF0dXJlOiAndXNpZycgfSxcbiAgICAgICAgYmFja3VwTXNnMjogeyBtZXNzYWdlOiAnYjInLCBzaWduYXR1cmU6ICdic2lnJyB9LFxuICAgICAgICBkZXJpdmF0aW9uU2VlZDogJ2EnLnJlcGVhdCg2NCksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB1dGlscy5zZW5kS2V5R2VuZXJhdGlvblJvdW5kMkJ5U2VuZGVyKHNlbmRlckZuIGFzIG5ldmVyLCBwYXlsb2FkIGFzIG5ldmVyKTtcblxuICAgICAgYXNzZXJ0Lm9rKHNlbmRlckZuLmNhbGxlZE9uY2VXaXRoKCdNUEN2Mi1SMicsIHBheWxvYWQpKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuY29tbW9uUHVibGljS2V5Y2hhaW4sICdhJy5yZXBlYXQoNjQpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=smcUtil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smcUtil.d.ts","sourceRoot":"","sources":["../../../../../../../test/unit/bitgo/utils/tss/redpallas/smcUtil.ts"],"names":[],"mappings":""}