@bitgo/sdk-core 36.44.0 → 37.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 (100) hide show
  1. package/dist/src/account-lib/baseCoin/enum.d.ts +19 -15
  2. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/enum.js +24 -16
  4. package/dist/src/api/types.d.ts +12 -0
  5. package/dist/src/api/types.d.ts.map +1 -1
  6. package/dist/src/api/types.js +1 -1
  7. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -0
  8. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  9. package/dist/src/bitgo/baseCoin/baseCoin.js +4 -1
  10. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
  11. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  12. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  13. package/dist/src/bitgo/bitgoBase.d.ts +3 -1
  14. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  15. package/dist/src/bitgo/bitgoBase.js +1 -1
  16. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +12 -1
  17. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -1
  18. package/dist/src/bitgo/keychain/decryptKeychain.js +34 -2
  19. package/dist/src/bitgo/keychain/iKeychains.d.ts +6 -1
  20. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  21. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  22. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  23. package/dist/src/bitgo/keychain/keychains.js +10 -2
  24. package/dist/src/bitgo/trading/iTradingAccount.d.ts +12 -1
  25. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  26. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  27. package/dist/src/bitgo/trading/network/network.d.ts +1 -1
  28. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  29. package/dist/src/bitgo/trading/network/network.js +3 -5
  30. package/dist/src/bitgo/trading/network/types.d.ts +1 -1
  31. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  32. package/dist/src/bitgo/trading/network/types.js +1 -1
  33. package/dist/src/bitgo/trading/tradingAccount.d.ts +14 -1
  34. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  35. package/dist/src/bitgo/trading/tradingAccount.js +53 -7
  36. package/dist/src/bitgo/tss/common.d.ts +2 -1
  37. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  38. package/dist/src/bitgo/tss/common.js +10 -1
  39. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +37 -0
  40. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  41. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +95 -0
  42. package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -1
  43. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  44. package/dist/src/bitgo/utils/mpcUtils.js +8 -1
  45. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +7 -4
  46. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  47. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +7 -1
  48. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +95 -17
  49. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  50. package/dist/src/bitgo/utils/tss/baseTypes.js +26 -2
  51. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +8 -5
  52. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  53. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +25 -4
  54. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +14 -4
  55. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  56. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +123 -46
  57. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +9 -6
  58. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  59. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +96 -38
  60. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +32 -2
  61. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -1
  62. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +141 -6
  63. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -1
  64. package/dist/src/bitgo/utils/txRequest.js +6 -4
  65. package/dist/src/bitgo/wallet/BuildParams.d.ts +20 -0
  66. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  67. package/dist/src/bitgo/wallet/BuildParams.js +12 -2
  68. package/dist/src/bitgo/wallet/iWallet.d.ts +60 -2
  69. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  70. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  71. package/dist/src/bitgo/wallet/iWallets.d.ts +20 -19
  72. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  73. package/dist/src/bitgo/wallet/iWallets.js +16 -8
  74. package/dist/src/bitgo/wallet/wallet.d.ts +77 -2
  75. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  76. package/dist/src/bitgo/wallet/wallet.js +281 -13
  77. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  78. package/dist/src/bitgo/wallet/wallets.js +49 -23
  79. package/dist/src/index.d.ts +2 -0
  80. package/dist/src/index.d.ts.map +1 -1
  81. package/dist/src/index.js +4 -2
  82. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  83. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  84. package/dist/test/unit/bitgo/trading/tradingAccount.js +183 -0
  85. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  86. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  87. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +239 -0
  88. package/dist/test/unit/bitgo/utils/txRequest.js +75 -1
  89. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  90. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  91. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +62 -0
  92. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  93. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  94. package/dist/test/unit/bitgo/wallet/resourceManagement.js +326 -0
  95. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  96. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  97. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +43 -0
  98. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +5 -2
  99. package/dist/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +5 -5
@@ -10,6 +10,7 @@ describe('txRequest utils', () => {
10
10
  baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
11
11
  type: () => 'hot',
12
12
  multisigType: () => 'tss',
13
+ multisigTypeVersion: () => undefined,
13
14
  },
14
15
  requestedApiVersion: 'lite',
15
16
  expectedApiVersion: '',
@@ -20,6 +21,7 @@ describe('txRequest utils', () => {
20
21
  baseCoin: { getMPCAlgorithm: () => 'eddsa' },
21
22
  type: () => 'cold',
22
23
  multisigType: () => 'tss',
24
+ multisigTypeVersion: () => undefined,
23
25
  },
24
26
  requestedApiVersion: 'lite',
25
27
  expectedApiVersion: '',
@@ -30,17 +32,41 @@ describe('txRequest utils', () => {
30
32
  baseCoin: { getMPCAlgorithm: () => 'eddsa' },
31
33
  type: () => 'hot',
32
34
  multisigType: () => 'tss',
35
+ multisigTypeVersion: () => undefined,
33
36
  },
34
37
  requestedApiVersion: undefined,
35
38
  expectedApiVersion: 'lite',
36
39
  expectedErrorMessage: '',
37
40
  },
41
+ {
42
+ wallet: {
43
+ baseCoin: { getMPCAlgorithm: () => 'eddsa' },
44
+ type: () => 'hot',
45
+ multisigType: () => 'tss',
46
+ multisigTypeVersion: () => 'MPCv2',
47
+ },
48
+ requestedApiVersion: 'lite',
49
+ expectedApiVersion: '',
50
+ expectedErrorMessage: 'For EdDSA MPCv2 tss wallets, parameter `apiVersion` must be `full`.',
51
+ },
52
+ {
53
+ wallet: {
54
+ baseCoin: { getMPCAlgorithm: () => 'eddsa' },
55
+ type: () => 'hot',
56
+ multisigType: () => 'tss',
57
+ multisigTypeVersion: () => 'MPCv2',
58
+ },
59
+ requestedApiVersion: undefined,
60
+ expectedApiVersion: 'full',
61
+ expectedErrorMessage: '',
62
+ },
38
63
  ...['hot', 'cold', 'custodial', 'backing'].map((walletType) => {
39
64
  return {
40
65
  wallet: {
41
66
  baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
42
67
  type: () => walletType,
43
68
  multisigType: () => 'tss',
69
+ multisigTypeVersion: () => undefined,
44
70
  },
45
71
  requestedApiVersion: 'full',
46
72
  expectedApiVersion: 'full',
@@ -54,6 +80,7 @@ describe('txRequest utils', () => {
54
80
  baseCoin: { getMPCAlgorithm: () => 'ecdsa' },
55
81
  type: () => walletType,
56
82
  multisigType: () => 'tss',
83
+ multisigTypeVersion: () => undefined,
57
84
  },
58
85
  requestedApiVersion: undefined,
59
86
  expectedApiVersion: 'full',
@@ -67,6 +94,7 @@ describe('txRequest utils', () => {
67
94
  baseCoin: { getMPCAlgorithm: () => 'eddsa' },
68
95
  type: () => walletType,
69
96
  multisigType: () => 'tss',
97
+ multisigTypeVersion: () => undefined,
70
98
  },
71
99
  requestedApiVersion: 'full',
72
100
  expectedApiVersion: 'full',
@@ -80,6 +108,7 @@ describe('txRequest utils', () => {
80
108
  baseCoin: { getMPCAlgorithm: () => 'eddsa' },
81
109
  type: () => walletType,
82
110
  multisigType: () => 'tss',
111
+ multisigTypeVersion: () => undefined,
83
112
  },
84
113
  requestedApiVersion: undefined,
85
114
  expectedApiVersion: 'full',
@@ -87,6 +116,51 @@ describe('txRequest utils', () => {
87
116
  shouldThrow: false,
88
117
  };
89
118
  }),
119
+ // EdDSA MPCv2: all wallet types + 'full' explicitly → returns 'full'
120
+ ...['hot', 'cold', 'custodial', 'backing'].map((walletType) => {
121
+ return {
122
+ wallet: {
123
+ baseCoin: { getMPCAlgorithm: () => 'eddsa' },
124
+ type: () => walletType,
125
+ multisigType: () => 'tss',
126
+ multisigTypeVersion: () => 'MPCv2',
127
+ },
128
+ requestedApiVersion: 'full',
129
+ expectedApiVersion: 'full',
130
+ expectedErrorMessage: '',
131
+ shouldThrow: false,
132
+ };
133
+ }),
134
+ // EdDSA MPCv2: non-hot wallet types + undefined → defaults to 'full'
135
+ ...['cold', 'custodial', 'backing'].map((walletType) => {
136
+ return {
137
+ wallet: {
138
+ baseCoin: { getMPCAlgorithm: () => 'eddsa' },
139
+ type: () => walletType,
140
+ multisigType: () => 'tss',
141
+ multisigTypeVersion: () => 'MPCv2',
142
+ },
143
+ requestedApiVersion: undefined,
144
+ expectedApiVersion: 'full',
145
+ expectedErrorMessage: '',
146
+ shouldThrow: false,
147
+ };
148
+ }),
149
+ // EdDSA MPCv2: non-hot wallet types + 'lite' → throws EdDSA MPCv2 error
150
+ ...['cold', 'custodial', 'backing'].map((walletType) => {
151
+ return {
152
+ wallet: {
153
+ baseCoin: { getMPCAlgorithm: () => 'eddsa' },
154
+ type: () => walletType,
155
+ multisigType: () => 'tss',
156
+ multisigTypeVersion: () => 'MPCv2',
157
+ },
158
+ requestedApiVersion: 'lite',
159
+ expectedApiVersion: '',
160
+ expectedErrorMessage: 'For EdDSA MPCv2 tss wallets, parameter `apiVersion` must be `full`.',
161
+ shouldThrow: true,
162
+ };
163
+ }),
90
164
  ];
91
165
  testCases.forEach((testCase) => {
92
166
  if (testCase.expectedErrorMessage) {
@@ -102,4 +176,4 @@ describe('txRequest utils', () => {
102
176
  });
103
177
  });
104
178
  });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3V0aWxzL3R4UmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUVoQixxRUFBK0U7QUFFL0UsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQixRQUFRLENBQUMsd0JBQXdCLEVBQUU7UUFDakMsTUFBTSxTQUFTLEdBQUc7WUFDaEI7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO29CQUNqQixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztpQkFDUjtnQkFDbkIsbUJBQW1CLEVBQUUsTUFBTTtnQkFDM0Isa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEIsb0JBQW9CLEVBQUUsK0RBQStEO2FBQ3RGO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO29CQUNsQixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztpQkFDUjtnQkFDbkIsbUJBQW1CLEVBQUUsTUFBTTtnQkFDM0Isa0JBQWtCLEVBQUUsRUFBRTtnQkFDdEIsb0JBQW9CLEVBQUUsa0ZBQWtGO2FBQ3pHO1lBQ0Q7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO29CQUNqQixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztpQkFDUjtnQkFDbkIsbUJBQW1CLEVB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QUcsRUFBRSxDQUNKLElBQUEsa0NBQXNCLEVBQ3BCLFFBQVEsQ0FBQyxNQUFNLEVBQ2YsUUFBUSxDQUFDLG1CQUE2QyxDQUN2RCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDbkQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sRUFBRSxDQUFDLGlCQUFpQixRQUFRLENBQUMsa0JBQWtCLCtCQUM3QyxRQUFRLENBQUMsbUJBQ1gsb0JBQW9CLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7b0JBQzVHLElBQUEsa0NBQXNCLEVBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsbUJBQTZDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUMxRyxRQUFRLENBQUMsa0JBQWtCLENBQzVCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgQXBpVmVyc2lvbiwgSVdhbGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBnZXRUeFJlcXVlc3RBcGlWZXJzaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3R4UmVxdWVzdCc7XG5cbmRlc2NyaWJlKCd0eFJlcXVlc3QgdXRpbHMnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdnZXRUeFJlcXVlc3RBcGlWZXJzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHRlc3RDYXNlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWNkc2EnIH0sXG4gICAgICAgICAgdHlwZTogKCkgPT4gJ2hvdCcsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogJ2xpdGUnLFxuICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICcnLFxuICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJ0ZvciBFQ0RTQSB0c3Mgd2FsbGV0cywgcGFyYW1ldGVyIGBhcGlWZXJzaW9uYCBtdXN0IGJlIGBmdWxsYC4nLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWRkc2EnIH0sXG4gICAgICAgICAgdHlwZTogKCkgPT4gJ2NvbGQnLFxuICAgICAgICAgIG11bHRpc2lnVHlwZTogKCkgPT4gJ3RzcycsXG4gICAgICAgIH0gYXMgYW55IGFzIElXYWxsZXQsXG4gICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246ICdsaXRlJyxcbiAgICAgICAgZXhwZWN0ZWRBcGlWZXJzaW9uOiAnJyxcbiAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICdGb3Igbm9uIHNlbGYtY3VzdG9kaWFsIChob3QpIHRzcyB3YWxsZXRzLCBwYXJhbWV0ZXIgYGFwaVZlcnNpb25gIG11c3QgYmUgYGZ1bGxgLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiAnaG90JyxcbiAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJ2xpdGUnLFxuICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICB9LFxuICAgICAgLi4uWydob3QnLCAnY29sZCcsICdjdXN0b2RpYWwnLCAnYmFja2luZyddLm1hcCgod2FsbGV0VHlwZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWNkc2EnIH0sXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiB3YWxsZXRUeXBlLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgc2hvdWxkVGhyb3c6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAuLi5bJ2hvdCcsICdjb2xkJywgJ2N1c3RvZGlhbCcsICdiYWNraW5nJ10ubWFwKCh3YWxsZXRUeXBlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlY2RzYScgfSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IHdhbGxldFR5cGUsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgIH0gYXMgYW55IGFzIElXYWxsZXQsXG4gICAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJ2Z1bGwnLFxuICAgICAgICAgIGV4cGVjdGVkRXJyb3JNZXNzYWdlOiAnJyxcbiAgICAgICAgICBzaG91bGRUaHJvdzogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIC4uLlsnaG90JywgJ2NvbGQnLCAnY3VzdG9kaWFsJywgJ2JhY2tpbmcnXS5tYXAoKHdhbGxldFR5cGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgIGJhc2VDb2luOiB7IGdldE1QQ0FsZ29yaXRobTogKCkgPT4gJ2VkZHNhJyB9LFxuICAgICAgICAgICAgdHlwZTogKCkgPT4gd2FsbGV0VHlwZSxcbiAgICAgICAgICAgIG11bHRpc2lnVHlwZTogKCkgPT4gJ3RzcycsXG4gICAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiAnZnVsbCcsXG4gICAgICAgICAgZXhwZWN0ZWRBcGlWZXJzaW9uOiAnZnVsbCcsXG4gICAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHNob3VsZFRocm93OiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgLi4uWydjb2xkJywgJ2N1c3RvZGlhbCcsICdiYWNraW5nJ10ubWFwKCh3YWxsZXRUeXBlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IHdhbGxldFR5cGUsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgIH0gYXMgYW55IGFzIElXYWxsZXQsXG4gICAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJ2Z1bGwnLFxuICAgICAgICAgIGV4cGVjdGVkRXJyb3JNZXNzYWdlOiAnJyxcbiAgICAgICAgICBzaG91bGRUaHJvdzogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICBdO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHRlc3RDYXNlKSA9PiB7XG4gICAgICBpZiAodGVzdENhc2UuZXhwZWN0ZWRFcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgaXQoYHNob3VsZCB0aHJvdyBhbiBlcnJvciBpZiByZXF1ZXN0ZWQgYXBpVmVyc2lvbiBpcyAke1xuICAgICAgICAgIHRlc3RDYXNlLnJlcXVlc3RlZEFwaVZlcnNpb25cbiAgICAgICAgfSBmb3Igd2FsbGV0IHR5cGUgJHt0ZXN0Q2FzZS53YWxsZXQudHlwZSgpfSBmb3IgYSAke3Rlc3RDYXNlLndhbGxldC5iYXNlQ29pbi5nZXRNUENBbGdvcml0aG0oKX0gd2FsbGV0YCwgKCkgPT4ge1xuICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgZ2V0VHhSZXF1ZXN0QXBpVmVyc2lvbihcbiAgICAgICAgICAgICAgdGVzdENhc2Uud2FsbGV0LFxuICAgICAgICAgICAgICB0ZXN0Q2FzZS5yZXF1ZXN0ZWRBcGlWZXJzaW9uIGFzIEFwaVZlcnNpb24gfCB1bmRlZmluZWRcbiAgICAgICAgICAgICkpLnNob3VsZC50aHJvdyh0ZXN0Q2FzZS5leHBlY3RlZEVycm9yTWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXQoYHNob3VsZCByZXR1cm4gJHt0ZXN0Q2FzZS5leHBlY3RlZEFwaVZlcnNpb259IGlmIHJlcXVlc3RlZCBhcGlWZXJzaW9uIGlzICR7XG4gICAgICAgICAgdGVzdENhc2UucmVxdWVzdGVkQXBpVmVyc2lvblxuICAgICAgICB9IGZvciB3YWxsZXQgdHlwZSAke3Rlc3RDYXNlLndhbGxldC50eXBlKCl9IGZvciBhICR7dGVzdENhc2Uud2FsbGV0LmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpfSB3YWxsZXRgLCAoKSA9PiB7XG4gICAgICAgICAgZ2V0VHhSZXF1ZXN0QXBpVmVyc2lvbih0ZXN0Q2FzZS53YWxsZXQsIHRlc3RDYXNlLnJlcXVlc3RlZEFwaVZlcnNpb24gYXMgQXBpVmVyc2lvbiB8IHVuZGVmaW5lZCkuc2hvdWxkLmVxdWFsKFxuICAgICAgICAgICAgdGVzdENhc2UuZXhwZWN0ZWRBcGlWZXJzaW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3V0aWxzL3R4UmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUVoQixxRUFBK0U7QUFFL0UsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQixRQUFRLENBQUMsd0JBQXdCLEVBQUU7UUFDakMsTUFBTSxTQUFTLEdBQUc7WUFDaEI7Z0JBQ0UsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUU7b0JBQzVDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLO29CQUNqQixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSztvQkFDekIsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUztpQkFDbkI7Z0JBQ25CLG1CQUFtQixFQUFFLE1BQU07Z0JBQzNCLGtCQUFrQixFQUFFLEVBQUU7Z0JBQ3RCLG9CQUFvQixFQUFFLCtEQUErRDthQUN0RjtZQUNEO2dCQUNFLE1BQU0sRUFBRTtvQkFDTixRQUFRLEVBQUUsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFO29CQUM1QyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTTtvQkFDbEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUs7b0JBQ3pCLG1CQUFtQixFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7aUJBQ25CO2dCQUNuQixtQkFBbUIsRUFBRSxNQUFNO2dCQUMzQixrQkFBa0IsRUFBRSxFQUFFO2dCQUN0QixvQkFBb0IsRUFBRSxrRkFBa0Y7YUFDekc7WUFDRDtnQkFDRSxNQUFNLEVBQUU7b0JBQ04sUUFBUSxFQUFFLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRTtvQkFDNUMsSUFBSSxFQUFF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aVZlcnNpb24sIElXYWxsZXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgZ2V0VHhSZXF1ZXN0QXBpVmVyc2lvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90eFJlcXVlc3QnO1xuXG5kZXNjcmliZSgndHhSZXF1ZXN0IHV0aWxzJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2V0VHhSZXF1ZXN0QXBpVmVyc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0ZXN0Q2FzZXMgPSBbXG4gICAgICB7XG4gICAgICAgIHdhbGxldDoge1xuICAgICAgICAgIGJhc2VDb2luOiB7IGdldE1QQ0FsZ29yaXRobTogKCkgPT4gJ2VjZHNhJyB9LFxuICAgICAgICAgIHR5cGU6ICgpID0+ICdob3QnLFxuICAgICAgICAgIG11bHRpc2lnVHlwZTogKCkgPT4gJ3RzcycsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiAnbGl0ZScsXG4gICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJycsXG4gICAgICAgIGV4cGVjdGVkRXJyb3JNZXNzYWdlOiAnRm9yIEVDRFNBIHRzcyB3YWxsZXRzLCBwYXJhbWV0ZXIgYGFwaVZlcnNpb25gIG11c3QgYmUgYGZ1bGxgLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiAnY29sZCcsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIH0gYXMgYW55IGFzIElXYWxsZXQsXG4gICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246ICdsaXRlJyxcbiAgICAgICAgZXhwZWN0ZWRBcGlWZXJzaW9uOiAnJyxcbiAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICdGb3Igbm9uIHNlbGYtY3VzdG9kaWFsIChob3QpIHRzcyB3YWxsZXRzLCBwYXJhbWV0ZXIgYGFwaVZlcnNpb25gIG11c3QgYmUgYGZ1bGxgLicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICB0eXBlOiAoKSA9PiAnaG90JyxcbiAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdsaXRlJyxcbiAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICcnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWRkc2EnIH0sXG4gICAgICAgICAgdHlwZTogKCkgPT4gJ2hvdCcsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAoKSA9PiAnTVBDdjInLFxuICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiAnbGl0ZScgYXMgQXBpVmVyc2lvbixcbiAgICAgICAgZXhwZWN0ZWRBcGlWZXJzaW9uOiAnJyxcbiAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICdGb3IgRWREU0EgTVBDdjIgdHNzIHdhbGxldHMsIHBhcmFtZXRlciBgYXBpVmVyc2lvbmAgbXVzdCBiZSBgZnVsbGAuJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHdhbGxldDoge1xuICAgICAgICAgIGJhc2VDb2luOiB7IGdldE1QQ0FsZ29yaXRobTogKCkgPT4gJ2VkZHNhJyB9LFxuICAgICAgICAgIHR5cGU6ICgpID0+ICdob3QnLFxuICAgICAgICAgIG11bHRpc2lnVHlwZTogKCkgPT4gJ3RzcycsXG4gICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogKCkgPT4gJ01QQ3YyJyxcbiAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICcnLFxuICAgICAgfSxcbiAgICAgIC4uLlsnaG90JywgJ2NvbGQnLCAnY3VzdG9kaWFsJywgJ2JhY2tpbmcnXS5tYXAoKHdhbGxldFR5cGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB3YWxsZXQ6IHtcbiAgICAgICAgICAgIGJhc2VDb2luOiB7IGdldE1QQ0FsZ29yaXRobTogKCkgPT4gJ2VjZHNhJyB9LFxuICAgICAgICAgICAgdHlwZTogKCkgPT4gd2FsbGV0VHlwZSxcbiAgICAgICAgICAgIG11bHRpc2lnVHlwZTogKCkgPT4gJ3RzcycsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGVWZXJzaW9uOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiAnZnVsbCcsXG4gICAgICAgICAgZXhwZWN0ZWRBcGlWZXJzaW9uOiAnZnVsbCcsXG4gICAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHNob3VsZFRocm93OiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgLi4uWydob3QnLCAnY29sZCcsICdjdXN0b2RpYWwnLCAnYmFja2luZyddLm1hcCgod2FsbGV0VHlwZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWNkc2EnIH0sXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiB3YWxsZXRUeXBlLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgc2hvdWxkVGhyb3c6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAuLi5bJ2hvdCcsICdjb2xkJywgJ2N1c3RvZGlhbCcsICdiYWNraW5nJ10ubWFwKCh3YWxsZXRUeXBlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IHdhbGxldFR5cGUsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICAgIH0gYXMgYW55IGFzIElXYWxsZXQsXG4gICAgICAgICAgcmVxdWVzdGVkQXBpVmVyc2lvbjogJ2Z1bGwnLFxuICAgICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJ2Z1bGwnLFxuICAgICAgICAgIGV4cGVjdGVkRXJyb3JNZXNzYWdlOiAnJyxcbiAgICAgICAgICBzaG91bGRUaHJvdzogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIC4uLlsnY29sZCcsICdjdXN0b2RpYWwnLCAnYmFja2luZyddLm1hcCgod2FsbGV0VHlwZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWRkc2EnIH0sXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiB3YWxsZXRUeXBlLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgc2hvdWxkVGhyb3c6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAvLyBFZERTQSBNUEN2MjogYWxsIHdhbGxldCB0eXBlcyArICdmdWxsJyBleHBsaWNpdGx5IOKGkiByZXR1cm5zICdmdWxsJ1xuICAgICAgLi4uWydob3QnLCAnY29sZCcsICdjdXN0b2RpYWwnLCAnYmFja2luZyddLm1hcCgod2FsbGV0VHlwZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHdhbGxldDoge1xuICAgICAgICAgICAgYmFzZUNvaW46IHsgZ2V0TVBDQWxnb3JpdGhtOiAoKSA9PiAnZWRkc2EnIH0sXG4gICAgICAgICAgICB0eXBlOiAoKSA9PiB3YWxsZXRUeXBlLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlOiAoKSA9PiAndHNzJyxcbiAgICAgICAgICAgIG11bHRpc2lnVHlwZVZlcnNpb246ICgpID0+ICdNUEN2MicsXG4gICAgICAgICAgfSBhcyBhbnkgYXMgSVdhbGxldCxcbiAgICAgICAgICByZXF1ZXN0ZWRBcGlWZXJzaW9uOiAnZnVsbCcgYXMgQXBpVmVyc2lvbixcbiAgICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgc2hvdWxkVGhyb3c6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAvLyBFZERTQSBNUEN2Mjogbm9uLWhvdCB3YWxsZXQgdHlwZXMgKyB1bmRlZmluZWQg4oaSIGRlZmF1bHRzIHRvICdmdWxsJ1xuICAgICAgLi4uWydjb2xkJywgJ2N1c3RvZGlhbCcsICdiYWNraW5nJ10ubWFwKCh3YWxsZXRUeXBlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IHdhbGxldFR5cGUsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogKCkgPT4gJ01QQ3YyJyxcbiAgICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICBleHBlY3RlZEFwaVZlcnNpb246ICdmdWxsJyxcbiAgICAgICAgICBleHBlY3RlZEVycm9yTWVzc2FnZTogJycsXG4gICAgICAgICAgc2hvdWxkVGhyb3c6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICAvLyBFZERTQSBNUEN2Mjogbm9uLWhvdCB3YWxsZXQgdHlwZXMgKyAnbGl0ZScg4oaSIHRocm93cyBFZERTQSBNUEN2MiBlcnJvclxuICAgICAgLi4uWydjb2xkJywgJ2N1c3RvZGlhbCcsICdiYWNraW5nJ10ubWFwKCh3YWxsZXRUeXBlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgd2FsbGV0OiB7XG4gICAgICAgICAgICBiYXNlQ29pbjogeyBnZXRNUENBbGdvcml0aG06ICgpID0+ICdlZGRzYScgfSxcbiAgICAgICAgICAgIHR5cGU6ICgpID0+IHdhbGxldFR5cGUsXG4gICAgICAgICAgICBtdWx0aXNpZ1R5cGU6ICgpID0+ICd0c3MnLFxuICAgICAgICAgICAgbXVsdGlzaWdUeXBlVmVyc2lvbjogKCkgPT4gJ01QQ3YyJyxcbiAgICAgICAgICB9IGFzIGFueSBhcyBJV2FsbGV0LFxuICAgICAgICAgIHJlcXVlc3RlZEFwaVZlcnNpb246ICdsaXRlJyBhcyBBcGlWZXJzaW9uLFxuICAgICAgICAgIGV4cGVjdGVkQXBpVmVyc2lvbjogJycsXG4gICAgICAgICAgZXhwZWN0ZWRFcnJvck1lc3NhZ2U6ICdGb3IgRWREU0EgTVBDdjIgdHNzIHdhbGxldHMsIHBhcmFtZXRlciBgYXBpVmVyc2lvbmAgbXVzdCBiZSBgZnVsbGAuJyxcbiAgICAgICAgICBzaG91bGRUaHJvdzogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgodGVzdENhc2UpID0+IHtcbiAgICAgIGlmICh0ZXN0Q2FzZS5leHBlY3RlZEVycm9yTWVzc2FnZSkge1xuICAgICAgICBpdChgc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHJlcXVlc3RlZCBhcGlWZXJzaW9uIGlzICR7XG4gICAgICAgICAgdGVzdENhc2UucmVxdWVzdGVkQXBpVmVyc2lvblxuICAgICAgICB9IGZvciB3YWxsZXQgdHlwZSAke3Rlc3RDYXNlLndhbGxldC50eXBlKCl9IGZvciBhICR7dGVzdENhc2Uud2FsbGV0LmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpfSB3YWxsZXRgLCAoKSA9PiB7XG4gICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICBnZXRUeFJlcXVlc3RBcGlWZXJzaW9uKFxuICAgICAgICAgICAgICB0ZXN0Q2FzZS53YWxsZXQsXG4gICAgICAgICAgICAgIHRlc3RDYXNlLnJlcXVlc3RlZEFwaVZlcnNpb24gYXMgQXBpVmVyc2lvbiB8IHVuZGVmaW5lZFxuICAgICAgICAgICAgKSkuc2hvdWxkLnRocm93KHRlc3RDYXNlLmV4cGVjdGVkRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdChgc2hvdWxkIHJldHVybiAke3Rlc3RDYXNlLmV4cGVjdGVkQXBpVmVyc2lvbn0gaWYgcmVxdWVzdGVkIGFwaVZlcnNpb24gaXMgJHtcbiAgICAgICAgICB0ZXN0Q2FzZS5yZXF1ZXN0ZWRBcGlWZXJzaW9uXG4gICAgICAgIH0gZm9yIHdhbGxldCB0eXBlICR7dGVzdENhc2Uud2FsbGV0LnR5cGUoKX0gZm9yIGEgJHt0ZXN0Q2FzZS53YWxsZXQuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCl9IHdhbGxldGAsICgpID0+IHtcbiAgICAgICAgICBnZXRUeFJlcXVlc3RBcGlWZXJzaW9uKHRlc3RDYXNlLndhbGxldCwgdGVzdENhc2UucmVxdWVzdGVkQXBpVmVyc2lvbiBhcyBBcGlWZXJzaW9uIHwgdW5kZWZpbmVkKS5zaG91bGQuZXF1YWwoXG4gICAgICAgICAgICB0ZXN0Q2FzZS5leHBlY3RlZEFwaVZlcnNpb25cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=ofcWalletSignTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ofcWalletSignTransaction.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/ofcWalletSignTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * @prettier
8
+ */
9
+ const sinon_1 = __importDefault(require("sinon"));
10
+ require("should");
11
+ const src_1 = require("../../../../src");
12
+ describe('Wallet - OFC signTransaction', function () {
13
+ let wallet;
14
+ let mockBitGo;
15
+ let mockBaseCoin;
16
+ let mockWalletData;
17
+ beforeEach(function () {
18
+ mockBitGo = {
19
+ url: sinon_1.default.stub().returns('https://test.bitgo.com'),
20
+ post: sinon_1.default.stub(),
21
+ get: sinon_1.default.stub(),
22
+ setRequestTracer: sinon_1.default.stub(),
23
+ };
24
+ mockBaseCoin = {
25
+ getFamily: sinon_1.default.stub().returns('ofc'),
26
+ url: sinon_1.default.stub().returns('https://test.bitgo.com/wallet'),
27
+ keychains: sinon_1.default.stub(),
28
+ supportsTss: sinon_1.default.stub().returns(false),
29
+ getMPCAlgorithm: sinon_1.default.stub(),
30
+ presignTransaction: sinon_1.default.stub().resolvesArg(0),
31
+ keyIdsForSigning: sinon_1.default.stub().returns([0]),
32
+ signTransaction: sinon_1.default.stub().resolves({ halfSigned: { payload: 'test', signature: 'aabbcc' } }),
33
+ };
34
+ mockWalletData = {
35
+ id: 'test-wallet-id',
36
+ coin: 'ofcusdt',
37
+ keys: ['user-key', 'backup-key', 'bitgo-key'],
38
+ multisigType: 'onchain',
39
+ enterprise: 'ent-id',
40
+ };
41
+ wallet = new src_1.Wallet(mockBitGo, mockBaseCoin, mockWalletData);
42
+ });
43
+ afterEach(function () {
44
+ sinon_1.default.restore();
45
+ });
46
+ it('should pass prv and paylaod to baseCoin.signTransaction', async function () {
47
+ const txPrebuild = { txInfo: { payload: '{"amount":"100"}' } };
48
+ const prv = 'test-prv';
49
+ await wallet.signTransaction({ txPrebuild, prv });
50
+ mockBaseCoin.signTransaction.calledOnce.should.be.true();
51
+ mockBaseCoin.signTransaction.calledWith({ txPrebuild, prv });
52
+ const callArgs = mockBaseCoin.signTransaction.getCall(0).args[0];
53
+ callArgs.prv.should.equal(prv);
54
+ });
55
+ it('should return the result from baseCoin.signTransaction', async function () {
56
+ const txPrebuild = { txInfo: { payload: '{"amount":"100"}' } };
57
+ const prv = 'test-prv';
58
+ const result = await wallet.signTransaction({ txPrebuild, prv });
59
+ result.should.deepEqual({ halfSigned: { payload: 'test', signature: 'aabbcc' } });
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjV2FsbGV0U2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2JpdGdvL3dhbGxldC9vZmNXYWxsZXRTaWduVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7R0FFRztBQUNILGtEQUEwQjtBQUMxQixrQkFBZ0I7QUFDaEIseUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRTtJQUN2QyxJQUFJLE1BQWMsQ0FBQztJQUNuQixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFlBQWlCLENBQUM7SUFDdEIsSUFBSSxjQUFtQixDQUFDO0lBRXhCLFVBQVUsQ0FBQztRQUNULFNBQVMsR0FBRztZQUNWLEdBQUcsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDO1lBQ25ELElBQUksRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2xCLEdBQUcsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2pCLGdCQUFnQixFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUU7U0FDL0IsQ0FBQztRQUVGLFlBQVksR0FBRztZQUNiLFNBQVMsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN0QyxHQUFHLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztZQUMxRCxTQUFTLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRTtZQUN2QixXQUFXLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDeEMsZUFBZSxFQUFFLGVBQUssQ0FBQyxJQUFJLEVBQUU7WUFDN0Isa0JBQWtCLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0MsZ0JBQWdCLEVBQUUsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLGVBQWUsRUFBRSxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztTQUNqRyxDQUFDO1FBRUYsY0FBYyxHQUFHO1lBQ2YsRUFBRSxFQUFFLGdCQUFnQjtZQUNwQixJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQzdDLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFVBQVUsRUFBRSxRQUFRO1NBQ3JCLENBQUM7UUFFRixNQUFNLEdBQUcsSUFBSSxZQUFNLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLGVBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxLQUFLO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEVBQVMsQ0FBQztRQUN0RSxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7UUFFdkIsTUFBTSxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFbEQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6RCxZQUFZLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUUsS0FBSztRQUNoRSxNQUFNLFVBQVUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxFQUFTLENBQUM7UUFDdEUsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO1FBRXZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgV2FsbGV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ1dhbGxldCAtIE9GQyBzaWduVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB3YWxsZXQ6IFdhbGxldDtcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgbW9ja0Jhc2VDb2luOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0RGF0YTogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJ2h0dHBzOi8vdGVzdC5iaXRnby5jb20nKSxcbiAgICAgIHBvc3Q6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGdldDogc2lub24uc3R1YigpLFxuICAgICAgc2V0UmVxdWVzdFRyYWNlcjogc2lub24uc3R1YigpLFxuICAgIH07XG5cbiAgICBtb2NrQmFzZUNvaW4gPSB7XG4gICAgICBnZXRGYW1pbHk6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdvZmMnKSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLnJldHVybnMoJ2h0dHBzOi8vdGVzdC5iaXRnby5jb20vd2FsbGV0JyksXG4gICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKSxcbiAgICAgIHN1cHBvcnRzVHNzOiBzaW5vbi5zdHViKCkucmV0dXJucyhmYWxzZSksXG4gICAgICBnZXRNUENBbGdvcml0aG06IHNpbm9uLnN0dWIoKSxcbiAgICAgIHByZXNpZ25UcmFuc2FjdGlvbjogc2lub24uc3R1YigpLnJlc29sdmVzQXJnKDApLFxuICAgICAga2V5SWRzRm9yU2lnbmluZzogc2lub24uc3R1YigpLnJldHVybnMoWzBdKSxcbiAgICAgIHNpZ25UcmFuc2FjdGlvbjogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkOiAndGVzdCcsIHNpZ25hdHVyZTogJ2FhYmJjYycgfSB9KSxcbiAgICB9O1xuXG4gICAgbW9ja1dhbGxldERhdGEgPSB7XG4gICAgICBpZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICAgIGNvaW46ICdvZmN1c2R0JyxcbiAgICAgIGtleXM6IFsndXNlci1rZXknLCAnYmFja3VwLWtleScsICdiaXRnby1rZXknXSxcbiAgICAgIG11bHRpc2lnVHlwZTogJ29uY2hhaW4nLFxuICAgICAgZW50ZXJwcmlzZTogJ2VudC1pZCcsXG4gICAgfTtcblxuICAgIHdhbGxldCA9IG5ldyBXYWxsZXQobW9ja0JpdEdvLCBtb2NrQmFzZUNvaW4sIG1vY2tXYWxsZXREYXRhKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyBwcnYgYW5kIHBheWxhb2QgdG8gYmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHR4UHJlYnVpbGQgPSB7IHR4SW5mbzogeyBwYXlsb2FkOiAne1wiYW1vdW50XCI6XCIxMDBcIn0nIH0gfSBhcyBhbnk7XG4gICAgY29uc3QgcHJ2ID0gJ3Rlc3QtcHJ2JztcblxuICAgIGF3YWl0IHdhbGxldC5zaWduVHJhbnNhY3Rpb24oeyB0eFByZWJ1aWxkLCBwcnYgfSk7XG5cbiAgICBtb2NrQmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWUoKTtcbiAgICBtb2NrQmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uLmNhbGxlZFdpdGgoeyB0eFByZWJ1aWxkLCBwcnYgfSk7XG4gICAgY29uc3QgY2FsbEFyZ3MgPSBtb2NrQmFzZUNvaW4uc2lnblRyYW5zYWN0aW9uLmdldENhbGwoMCkuYXJnc1swXTtcbiAgICBjYWxsQXJncy5wcnYuc2hvdWxkLmVxdWFsKHBydik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmV0dXJuIHRoZSByZXN1bHQgZnJvbSBiYXNlQ29pbi5zaWduVHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhQcmVidWlsZCA9IHsgdHhJbmZvOiB7IHBheWxvYWQ6ICd7XCJhbW91bnRcIjpcIjEwMFwifScgfSB9IGFzIGFueTtcbiAgICBjb25zdCBwcnYgPSAndGVzdC1wcnYnO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7IHR4UHJlYnVpbGQsIHBydiB9KTtcblxuICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHsgaGFsZlNpZ25lZDogeyBwYXlsb2FkOiAndGVzdCcsIHNpZ25hdHVyZTogJ2FhYmJjYycgfSB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import 'should';
2
+ import 'should-sinon';
3
+ //# sourceMappingURL=resourceManagement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceManagement.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/wallet/resourceManagement.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC;AAChB,OAAO,cAAc,CAAC"}