@bitgo-beta/sdk-core 8.2.1-beta.205 → 8.2.1-beta.2050

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 (756) hide show
  1. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
  6. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
  7. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  8. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +43 -31
  9. package/dist/src/account-lib/baseCoin/enum.d.ts +58 -5
  10. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  11. package/dist/src/account-lib/baseCoin/enum.js +109 -10
  12. package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
  13. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  14. package/dist/src/account-lib/baseCoin/errors.js +8 -2
  15. package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
  16. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  17. package/dist/src/account-lib/baseCoin/iface.js +26 -18
  18. package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
  19. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  20. package/dist/src/account-lib/baseCoin/index.js +8 -5
  21. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +88 -0
  22. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  23. package/dist/src/account-lib/baseCoin/messages/baseMessage.js +154 -0
  24. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
  25. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  26. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
  27. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
  28. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  29. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +45 -0
  30. package/dist/src/account-lib/baseCoin/messages/iface.d.ts +164 -0
  31. package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
  32. package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
  33. package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
  34. package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
  35. package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
  36. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
  37. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
  38. package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
  39. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
  40. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
  41. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +28 -0
  42. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
  43. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
  44. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
  45. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
  46. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  47. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
  48. package/dist/src/account-lib/index.d.ts +0 -1
  49. package/dist/src/account-lib/index.d.ts.map +1 -1
  50. package/dist/src/account-lib/index.js +23 -10
  51. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  52. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  53. package/dist/src/account-lib/mpc/index.js +6 -2
  54. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -3
  55. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  56. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +376 -354
  57. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  58. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  59. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  60. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  61. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +46 -53
  62. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  63. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  64. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
  65. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  66. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
  67. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  68. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  69. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  70. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  71. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  72. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  73. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  74. package/dist/src/account-lib/mpc/util.js +24 -1
  75. package/dist/src/account-lib/staking/index.js +6 -2
  76. package/dist/src/account-lib/staking/utils.js +3 -3
  77. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  78. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  79. package/dist/src/account-lib/util/crypto.js +69 -38
  80. package/dist/src/api/bip32path.js +2 -3
  81. package/dist/src/api/index.js +6 -2
  82. package/dist/src/api/types.d.ts +37 -0
  83. package/dist/src/api/types.d.ts.map +1 -1
  84. package/dist/src/api/types.js +8 -1
  85. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -1
  86. package/dist/src/bitgo/address-book/address-book.js +20 -12
  87. package/dist/src/bitgo/address-book/index.js +6 -2
  88. package/dist/src/bitgo/address-book/types.d.ts +36 -36
  89. package/dist/src/bitgo/address-book/types.d.ts.map +1 -1
  90. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +123 -12
  91. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  92. package/dist/src/bitgo/baseCoin/baseCoin.js +203 -16
  93. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +300 -27
  94. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  95. package/dist/src/bitgo/baseCoin/iBaseCoin.js +14 -3
  96. package/dist/src/bitgo/baseCoin/index.js +6 -2
  97. package/dist/src/bitgo/bip32util.d.ts +3 -16
  98. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  99. package/dist/src/bitgo/bip32util.js +4 -56
  100. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  101. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  102. package/dist/src/bitgo/bitcoin.js +26 -13
  103. package/dist/src/bitgo/bitgoBase.d.ts +17 -4
  104. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  105. package/dist/src/bitgo/bitgoBase.js +1 -1
  106. package/dist/src/bitgo/coinFactory.d.ts +17 -3
  107. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  108. package/dist/src/bitgo/coinFactory.js +26 -3
  109. package/dist/src/bitgo/config.d.ts +3 -101
  110. package/dist/src/bitgo/config.d.ts.map +1 -1
  111. package/dist/src/bitgo/config.js +26 -15
  112. package/dist/src/bitgo/defi/defiVault.d.ts +171 -0
  113. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
  114. package/dist/src/bitgo/defi/defiVault.js +445 -0
  115. package/dist/src/bitgo/defi/iDefiVault.d.ts +101 -0
  116. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
  117. package/dist/src/bitgo/defi/iDefiVault.js +6 -0
  118. package/dist/src/bitgo/defi/index.d.ts +3 -0
  119. package/dist/src/bitgo/defi/index.d.ts.map +1 -0
  120. package/dist/src/bitgo/defi/index.js +22 -0
  121. package/dist/src/bitgo/ecdh.d.ts +0 -1
  122. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  123. package/dist/src/bitgo/ecdh.js +26 -13
  124. package/dist/src/bitgo/enterprise/enterprise.d.ts +9 -4
  125. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  126. package/dist/src/bitgo/enterprise/enterprise.js +47 -21
  127. package/dist/src/bitgo/enterprise/enterprises.js +27 -13
  128. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +5 -3
  129. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  130. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  131. package/dist/src/bitgo/enterprise/index.js +6 -2
  132. package/dist/src/bitgo/environments.d.ts +68 -3
  133. package/dist/src/bitgo/environments.d.ts.map +1 -1
  134. package/dist/src/bitgo/environments.js +414 -34
  135. package/dist/src/bitgo/errors.d.ts +182 -1
  136. package/dist/src/bitgo/errors.d.ts.map +1 -1
  137. package/dist/src/bitgo/errors.js +177 -3
  138. package/dist/src/bitgo/evm/evmUtils.d.ts +26 -0
  139. package/dist/src/bitgo/evm/evmUtils.d.ts.map +1 -0
  140. package/dist/src/bitgo/evm/evmUtils.js +50 -0
  141. package/dist/src/bitgo/index.d.ts +5 -1
  142. package/dist/src/bitgo/index.d.ts.map +1 -1
  143. package/dist/src/bitgo/index.js +31 -11
  144. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  145. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  146. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  147. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  148. package/dist/src/bitgo/internal/index.js +6 -2
  149. package/dist/src/bitgo/internal/internal.js +5 -6
  150. package/dist/src/bitgo/internal/keycard.d.ts +13 -8
  151. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  152. package/dist/src/bitgo/internal/keycard.js +63 -48
  153. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +14 -0
  154. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  155. package/dist/src/bitgo/keychain/decryptKeychain.js +36 -0
  156. package/dist/src/bitgo/keychain/iKeychains.d.ts +132 -11
  157. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  158. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  159. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  160. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  161. package/dist/src/bitgo/keychain/index.js +7 -2
  162. package/dist/src/bitgo/keychain/keychains.d.ts +55 -7
  163. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  164. package/dist/src/bitgo/keychain/keychains.js +293 -52
  165. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  166. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  167. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  168. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  169. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  170. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  171. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
  172. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
  173. package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
  174. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  175. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  176. package/dist/src/bitgo/market/index.js +6 -2
  177. package/dist/src/bitgo/market/markets.js +23 -9
  178. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +5 -1
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  181. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  182. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  183. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  184. package/dist/src/bitgo/pendingApproval/pendingApproval.js +246 -111
  185. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  186. package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
  187. package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
  188. package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
  189. package/dist/src/bitgo/proofs/index.d.ts +2 -0
  190. package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
  191. package/dist/src/bitgo/proofs/index.js +6 -0
  192. package/dist/src/bitgo/proofs/types.d.ts +80 -0
  193. package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
  194. package/dist/src/bitgo/proofs/types.js +80 -0
  195. package/dist/src/bitgo/recovery/index.js +6 -2
  196. package/dist/src/bitgo/recovery/initiate.d.ts +13 -3
  197. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  198. package/dist/src/bitgo/recovery/initiate.js +49 -41
  199. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +13 -0
  200. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  201. package/dist/src/bitgo/safe/derivableEd25519Pub.js +35 -0
  202. package/dist/src/bitgo/safe/iSafe.d.ts +95 -0
  203. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
  204. package/dist/src/bitgo/safe/iSafe.js +3 -0
  205. package/dist/src/bitgo/safe/iSafes.d.ts +94 -0
  206. package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
  207. package/dist/src/bitgo/safe/iSafes.js +3 -0
  208. package/dist/src/bitgo/safe/index.d.ts +7 -0
  209. package/dist/src/bitgo/safe/index.d.ts.map +1 -0
  210. package/dist/src/bitgo/safe/index.js +23 -0
  211. package/dist/src/bitgo/safe/safe.d.ts +72 -0
  212. package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
  213. package/dist/src/bitgo/safe/safe.js +294 -0
  214. package/dist/src/bitgo/safe/safes.d.ts +107 -0
  215. package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
  216. package/dist/src/bitgo/safe/safes.js +317 -0
  217. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
  218. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  219. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  220. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  221. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  222. package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
  223. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  224. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  225. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  226. package/dist/src/bitgo/staking/iStakingWallet.d.ts +165 -8
  227. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  228. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  229. package/dist/src/bitgo/staking/index.d.ts +3 -0
  230. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  231. package/dist/src/bitgo/staking/index.js +9 -2
  232. package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
  233. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  234. package/dist/src/bitgo/staking/stakingWallet.js +153 -7
  235. package/dist/src/bitgo/trading/iTradingAccount.d.ts +13 -1
  236. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  237. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  238. package/dist/src/bitgo/trading/index.d.ts +1 -0
  239. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  240. package/dist/src/bitgo/trading/index.js +7 -2
  241. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  242. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  243. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  244. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  245. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  246. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  247. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  248. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  249. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  250. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  251. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  252. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  253. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  254. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  255. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  256. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  257. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  258. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  259. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  260. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  261. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  262. package/dist/src/bitgo/trading/network/index.d.ts +2 -0
  263. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -1
  264. package/dist/src/bitgo/trading/network/index.js +8 -2
  265. package/dist/src/bitgo/trading/network/network.d.ts +4 -3
  266. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  267. package/dist/src/bitgo/trading/network/network.js +24 -27
  268. package/dist/src/bitgo/trading/network/types.d.ts +79 -46
  269. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  270. package/dist/src/bitgo/trading/network/types.js +1 -1
  271. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  272. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  273. package/dist/src/bitgo/trading/network/utils.js +54 -0
  274. package/dist/src/bitgo/trading/tradingAccount.d.ts +15 -1
  275. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  276. package/dist/src/bitgo/trading/tradingAccount.js +55 -7
  277. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +49 -0
  278. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  279. package/dist/src/bitgo/tss/bitgoPubKeys.js +92 -0
  280. package/dist/src/bitgo/tss/common.d.ts +41 -6
  281. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  282. package/dist/src/bitgo/tss/common.js +127 -17
  283. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  284. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  285. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  286. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  287. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  288. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
  289. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  290. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  291. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  292. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  293. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  294. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  295. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  296. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  297. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  298. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +42 -0
  299. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  300. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +104 -0
  301. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  302. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  303. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  304. package/dist/src/bitgo/tss/index.d.ts +3 -2
  305. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  306. package/dist/src/bitgo/tss/index.js +26 -10
  307. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +50 -0
  308. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  309. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +112 -0
  310. package/dist/src/bitgo/tss/types.d.ts +3 -3
  311. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  312. package/dist/src/bitgo/tss/types.js +2 -2
  313. package/dist/src/bitgo/types.d.ts +3 -3
  314. package/dist/src/bitgo/types.d.ts.map +1 -1
  315. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +10 -0
  316. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  317. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +76 -14
  318. package/dist/src/bitgo/utils/codecProps.js +24 -11
  319. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  320. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  321. package/dist/src/bitgo/utils/codecs.js +59 -0
  322. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  323. package/dist/src/bitgo/utils/decode.js +30 -16
  324. package/dist/src/bitgo/utils/index.d.ts +4 -2
  325. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  326. package/dist/src/bitgo/utils/index.js +27 -11
  327. package/dist/src/bitgo/utils/messageTypes.d.ts +40 -0
  328. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  329. package/dist/src/bitgo/utils/messageTypes.js +17 -0
  330. package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
  331. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  332. package/dist/src/bitgo/utils/mpcUtils.js +189 -14
  333. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  334. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  335. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  336. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -7
  337. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  338. package/dist/src/bitgo/utils/opengpgUtils.js +79 -62
  339. package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
  340. package/dist/src/bitgo/utils/postWithCodec.js +4 -38
  341. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  342. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  343. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  344. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  345. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  346. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  347. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  348. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  349. package/dist/src/bitgo/utils/triple.js +2 -3
  350. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
  351. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  352. package/dist/src/bitgo/utils/tss/addressVerification.js +93 -0
  353. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +94 -17
  354. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  355. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +305 -45
  356. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +432 -55
  357. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  358. package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
  359. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  360. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  361. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  362. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  363. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  364. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  365. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +25 -51
  366. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  367. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +173 -246
  368. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +236 -0
  369. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  370. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1072 -0
  371. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +16 -0
  372. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  373. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +37 -0
  374. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +88 -0
  375. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  376. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +502 -0
  377. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +5 -0
  378. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  379. package/dist/src/bitgo/utils/tss/ecdsa/index.js +11 -2
  380. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  381. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  382. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  383. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +125 -0
  384. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  385. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  386. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
  387. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
  388. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +118 -0
  389. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
  390. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  391. package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
  392. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +38 -11
  393. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  394. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +254 -96
  395. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +207 -0
  396. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  397. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +862 -0
  398. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +6 -0
  399. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  400. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +16 -0
  401. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +33 -0
  402. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  403. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +260 -0
  404. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  405. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  406. package/dist/src/bitgo/utils/tss/eddsa/index.js +30 -8
  407. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +12 -7
  408. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  409. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  410. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +53 -0
  411. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  412. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +55 -0
  413. package/dist/src/bitgo/utils/tss/index.d.ts +5 -0
  414. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  415. package/dist/src/bitgo/utils/tss/index.js +29 -10
  416. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  417. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  418. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  419. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +41 -0
  420. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  421. package/dist/src/bitgo/utils/tss/recipientUtils.js +162 -0
  422. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  423. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  424. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +126 -0
  425. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  426. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  427. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  428. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +27 -0
  429. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  430. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +43 -0
  431. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +45 -0
  432. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  433. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  434. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts +8 -0
  435. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts.map +1 -0
  436. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.js +13 -0
  437. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  438. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  439. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  440. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  441. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  442. package/dist/src/bitgo/utils/txRequest.js +49 -0
  443. package/dist/src/bitgo/utils/util.js +24 -10
  444. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  445. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  446. package/dist/src/bitgo/utils/wallet.js +48 -0
  447. package/dist/src/bitgo/v1Wallets.d.ts +170 -0
  448. package/dist/src/bitgo/v1Wallets.d.ts.map +1 -0
  449. package/dist/src/bitgo/v1Wallets.js +3 -0
  450. package/dist/src/bitgo/wallet/BuildParams.d.ts +89 -1
  451. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  452. package/dist/src/bitgo/wallet/BuildParams.js +90 -11
  453. package/dist/src/bitgo/wallet/iWallet.d.ts +586 -31
  454. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  455. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  456. package/dist/src/bitgo/wallet/iWallets.d.ts +310 -16
  457. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  458. package/dist/src/bitgo/wallet/iWallets.js +84 -3
  459. package/dist/src/bitgo/wallet/index.d.ts +1 -0
  460. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  461. package/dist/src/bitgo/wallet/index.js +7 -2
  462. package/dist/src/bitgo/wallet/safeKeychain.d.ts +75 -0
  463. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -0
  464. package/dist/src/bitgo/wallet/safeKeychain.js +151 -0
  465. package/dist/src/bitgo/wallet/wallet.d.ts +373 -28
  466. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  467. package/dist/src/bitgo/wallet/wallet.js +2266 -380
  468. package/dist/src/bitgo/wallet/wallets.d.ts +99 -4
  469. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  470. package/dist/src/bitgo/wallet/wallets.js +1242 -156
  471. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
  472. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
  473. package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
  474. package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
  475. package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
  476. package/dist/src/bitgo/walletUtil/index.js +19 -0
  477. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
  478. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
  479. package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
  480. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
  481. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
  482. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
  483. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
  484. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
  485. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
  486. package/dist/src/bitgo/webhook/index.js +6 -2
  487. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  488. package/dist/src/coins/fiat.d.ts +45 -0
  489. package/dist/src/coins/fiat.d.ts.map +1 -0
  490. package/dist/src/coins/fiat.js +94 -0
  491. package/dist/src/coins/index.d.ts +1 -6
  492. package/dist/src/coins/index.d.ts.map +1 -1
  493. package/dist/src/coins/index.js +7 -8
  494. package/dist/src/coins/ofc.d.ts +21 -2
  495. package/dist/src/coins/ofc.d.ts.map +1 -1
  496. package/dist/src/coins/ofc.js +29 -3
  497. package/dist/src/coins/ofcToken.d.ts +15 -4
  498. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  499. package/dist/src/coins/ofcToken.js +43 -5
  500. package/dist/src/coins/susd.d.ts +3 -2
  501. package/dist/src/coins/susd.d.ts.map +1 -1
  502. package/dist/src/coins/susd.js +5 -1
  503. package/dist/src/common.js +27 -13
  504. package/dist/src/index.d.ts +9 -1
  505. package/dist/src/index.d.ts.map +1 -1
  506. package/dist/src/index.js +40 -11
  507. package/dist/src/lightning.d.ts +20 -0
  508. package/dist/src/lightning.d.ts.map +1 -0
  509. package/dist/src/lightning.js +13 -0
  510. package/dist/src/units.js +5 -6
  511. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  512. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  513. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  514. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  515. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  516. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  517. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  518. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  519. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  520. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  521. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  522. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  523. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
  524. package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
  525. package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
  526. package/dist/test/unit/account-lib/mpc/util.js +53 -0
  527. package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
  528. package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
  529. package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
  530. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  531. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  532. package/dist/test/unit/bitgo/defi/defiVault.js +863 -0
  533. package/dist/test/unit/bitgo/environment.d.ts +2 -0
  534. package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
  535. package/dist/test/unit/bitgo/environment.js +38 -0
  536. package/dist/test/unit/bitgo/errors.d.ts +2 -0
  537. package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
  538. package/dist/test/unit/bitgo/errors.js +262 -0
  539. package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
  540. package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
  541. package/dist/test/unit/bitgo/keychain/keychains.js +166 -0
  542. package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
  543. package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
  544. package/dist/test/unit/bitgo/recovery/initiate.js +159 -0
  545. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts +2 -0
  546. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  547. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +133 -0
  548. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +72 -0
  549. package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
  550. package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
  551. package/dist/test/unit/bitgo/safe/safe.js +402 -0
  552. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
  553. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
  554. package/dist/test/unit/bitgo/safe/safeDerivation.js +75 -0
  555. package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
  556. package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
  557. package/dist/test/unit/bitgo/safe/safes.js +376 -0
  558. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  559. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  560. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  561. package/dist/test/unit/bitgo/trading/network/network.test.d.ts +2 -0
  562. package/dist/test/unit/bitgo/trading/network/network.test.d.ts.map +1 -0
  563. package/dist/test/unit/bitgo/trading/network/network.test.js +136 -0
  564. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  565. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  566. package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
  567. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  568. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  569. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  570. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  571. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  572. package/dist/test/unit/bitgo/tss/common.js +77 -0
  573. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  574. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  575. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +181 -0
  576. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -4
  577. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  578. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  579. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  580. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts +2 -0
  581. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts.map +1 -0
  582. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.js +106 -0
  583. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  584. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  585. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  586. package/dist/test/unit/bitgo/utils/postWithCodec.js +32 -38
  587. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
  588. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  589. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +251 -0
  590. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
  591. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
  592. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +348 -0
  593. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  594. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  595. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  596. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
  597. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  598. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1068 -0
  599. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
  600. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
  601. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
  602. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  603. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  604. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  605. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  606. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  607. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +1918 -0
  608. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  609. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  610. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +173 -0
  611. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
  612. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
  613. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +311 -0
  614. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  615. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  616. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  617. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  618. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  619. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +434 -0
  620. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  621. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  622. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +80 -0
  623. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  624. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  625. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +279 -0
  626. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  627. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  628. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  629. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  630. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  631. package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
  632. package/dist/test/unit/bitgo/utils/wallet.d.ts +2 -0
  633. package/dist/test/unit/bitgo/utils/wallet.d.ts.map +1 -0
  634. package/dist/test/unit/bitgo/utils/wallet.js +55 -0
  635. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  636. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  637. package/dist/test/unit/bitgo/wallet/BuildParams.js +141 -0
  638. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +79 -9
  639. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
  640. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
  641. package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
  642. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
  643. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
  644. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
  645. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
  646. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
  647. package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
  648. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  649. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  650. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  651. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  652. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  653. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
  654. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
  655. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
  656. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
  657. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  658. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  659. package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
  660. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts +5 -0
  661. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts.map +1 -0
  662. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +671 -0
  663. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  664. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  665. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +303 -0
  666. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
  667. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
  668. package/dist/test/unit/bitgo/wallet/tokenApproval.js +201 -0
  669. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
  670. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
  671. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
  672. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  673. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  674. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +69 -0
  675. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
  676. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
  677. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
  678. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  679. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  680. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +304 -0
  681. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
  682. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
  683. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
  684. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  685. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  686. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +675 -0
  687. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
  688. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
  689. package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +150 -0
  690. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  691. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  692. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +201 -0
  693. package/dist/test/unit/coins/ofc.d.ts +2 -0
  694. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  695. package/dist/test/unit/coins/ofc.js +124 -0
  696. package/dist/test/unit/lightning.d.ts +2 -0
  697. package/dist/test/unit/lightning.d.ts.map +1 -0
  698. package/dist/test/unit/lightning.js +23 -0
  699. package/dist/test/unit/units.d.ts.map +1 -1
  700. package/dist/test/unit/units.js +64 -64
  701. package/dist/tsconfig.tsbuildinfo +1 -1
  702. package/package.json +25 -22
  703. package/.eslintignore +0 -5
  704. package/CHANGELOG.md +0 -1712
  705. package/LICENSE +0 -191
  706. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  707. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  708. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  709. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -49
  710. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
  711. package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -87
  712. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  713. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  714. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  715. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  716. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  717. package/dist/src/bitgo/lightning/index.js +0 -17
  718. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  719. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  720. package/dist/src/bitgo/lightning/lightning.js +0 -111
  721. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  722. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  723. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  724. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  725. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  726. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  727. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  728. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  729. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  730. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  731. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  732. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  733. package/dist/src/coins/fiateur.d.ts +0 -31
  734. package/dist/src/coins/fiateur.d.ts.map +0 -1
  735. package/dist/src/coins/fiateur.js +0 -57
  736. package/dist/src/coins/fiatgbp.d.ts +0 -31
  737. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  738. package/dist/src/coins/fiatgbp.js +0 -57
  739. package/dist/src/coins/fiatusd.d.ts +0 -31
  740. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  741. package/dist/src/coins/fiatusd.js +0 -57
  742. package/dist/src/coins/tfiateur.d.ts +0 -11
  743. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  744. package/dist/src/coins/tfiateur.js +0 -17
  745. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  746. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  747. package/dist/src/coins/tfiatgbp.js +0 -17
  748. package/dist/src/coins/tfiatusd.d.ts +0 -11
  749. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  750. package/dist/src/coins/tfiatusd.js +0 -17
  751. package/dist/src/openssl/index.d.ts +0 -5
  752. package/dist/src/openssl/index.d.ts.map +0 -1
  753. package/dist/src/openssl/index.js +0 -9
  754. package/dist/test/unit/openssl.d.ts +0 -2
  755. package/dist/test/unit/openssl.d.ts.map +0 -1
  756. package/dist/test/unit/openssl.js +0 -39
@@ -0,0 +1,55 @@
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 preHashedSignable_1 = require("../../../../../src/bitgo/utils/tss/preHashedSignable");
38
+ describe('preHashedSignable', function () {
39
+ it('isAvalancheAtomicTx detects codec prefix 0000', function () {
40
+ assert.strictEqual((0, preHashedSignable_1.isAvalancheAtomicTx)({
41
+ serializedTxHex: '0000000000010000007278db5c',
42
+ signableHex: 'abc',
43
+ }), true);
44
+ assert.strictEqual((0, preHashedSignable_1.isAvalancheAtomicTx)({
45
+ serializedTxHex: 'f86c808504a817c800825208',
46
+ signableHex: 'f86c808504a817c800825208',
47
+ }), false);
48
+ });
49
+ it('isCoinWithPreHashedSignable type guard', function () {
50
+ assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)({ isSignablePreHashed: () => true }), true);
51
+ assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)({}), false);
52
+ assert.strictEqual((0, preHashedSignable_1.isCoinWithPreHashedSignable)(null), false);
53
+ });
54
+ });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlSGFzaGVkU2lnbmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3ByZUhhc2hlZFNpZ25hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDRGQUF3SDtBQUV4SCxRQUFRLENBQUMsbUJBQW1CLEVBQUU7SUFDNUIsRUFBRSxDQUFDLCtDQUErQyxFQUFFO1FBQ2xELE1BQU0sQ0FBQyxXQUFXLENBQ2hCLElBQUEsdUNBQW1CLEVBQUM7WUFDbEIsZUFBZSxFQUFFLDRCQUE0QjtZQUM3QyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLEVBQ0YsSUFBSSxDQUNMLENBQUM7UUFDRixNQUFNLENBQUMsV0FBVyxDQUNoQixJQUFBLHVDQUFtQixFQUFDO1lBQ2xCLGVBQWUsRUFBRSwwQkFBMEI7WUFDM0MsV0FBVyxFQUFFLDBCQUEwQjtTQUN4QyxDQUFDLEVBQ0YsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRTtRQUMzQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsK0NBQTJCLEVBQUMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNGLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBQSwrQ0FBMkIsRUFBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUEsK0NBQTJCLEVBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgaXNBdmFsYW5jaGVBdG9taWNUeCwgaXNDb2luV2l0aFByZUhhc2hlZFNpZ25hYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9wcmVIYXNoZWRTaWduYWJsZSc7XG5cbmRlc2NyaWJlKCdwcmVIYXNoZWRTaWduYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2lzQXZhbGFuY2hlQXRvbWljVHggZGV0ZWN0cyBjb2RlYyBwcmVmaXggMDAwMCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICBpc0F2YWxhbmNoZUF0b21pY1R4KHtcbiAgICAgICAgc2VyaWFsaXplZFR4SGV4OiAnMDAwMDAwMDAwMDAxMDAwMDAwNzI3OGRiNWMnLFxuICAgICAgICBzaWduYWJsZUhleDogJ2FiYycsXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgIGlzQXZhbGFuY2hlQXRvbWljVHgoe1xuICAgICAgICBzZXJpYWxpemVkVHhIZXg6ICdmODZjODA4NTA0YTgxN2M4MDA4MjUyMDgnLFxuICAgICAgICBzaWduYWJsZUhleDogJ2Y4NmM4MDg1MDRhODE3YzgwMDgyNTIwOCcsXG4gICAgICB9KSxcbiAgICAgIGZhbHNlXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ2lzQ29pbldpdGhQcmVIYXNoZWRTaWduYWJsZSB0eXBlIGd1YXJkJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0NvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUoeyBpc1NpZ25hYmxlUHJlSGFzaGVkOiAoKSA9PiB0cnVlIH0pLCB0cnVlKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNDb2luV2l0aFByZUhhc2hlZFNpZ25hYmxlKHt9KSwgZmFsc2UpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0NvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUobnVsbCksIGZhbHNlKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=recipientUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,434 @@
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
+ const assert_1 = __importDefault(require("assert"));
7
+ const recipientUtils_1 = require("../../../../../src/bitgo/utils/tss/recipientUtils");
8
+ const errors_1 = require("../../../../../src/bitgo/errors");
9
+ function makeTxRequest(overrides = {}) {
10
+ return {
11
+ txRequestId: 'test-tx-request-id',
12
+ walletId: 'test-wallet-id',
13
+ intent: undefined,
14
+ ...overrides,
15
+ };
16
+ }
17
+ describe('recipientUtils', function () {
18
+ describe('NO_RECIPIENT_TX_TYPES', function () {
19
+ it('contains all expected types', function () {
20
+ const expected = [
21
+ // ECDSA EVM
22
+ 'acceleration',
23
+ 'fillNonce',
24
+ 'transferToken',
25
+ 'tokenApproval',
26
+ 'consolidate',
27
+ 'bridgeFunds',
28
+ 'enableToken',
29
+ 'enabletoken',
30
+ 'disabletoken',
31
+ 'customTx',
32
+ 'defiApprove',
33
+ 'defiDeposit',
34
+ 'defiWithdraw',
35
+ // Native wrap/unwrap — registered in both spellings on purpose
36
+ 'wrapNative',
37
+ 'wrap-native',
38
+ 'unwrapNative',
39
+ 'unwrap-native',
40
+ 'wrapApprove',
41
+ 'wrap',
42
+ 'contractCall',
43
+ // Staking — 'delegate' also covers SOL solDelegateIntent
44
+ 'delegate',
45
+ 'undelegate',
46
+ 'switchValidator',
47
+ 'stake',
48
+ 'unstake',
49
+ 'stakeWithCallData',
50
+ 'unstakeWithCallData',
51
+ 'transferStake',
52
+ 'increaseStake',
53
+ 'goUnstake',
54
+ 'claim',
55
+ 'stakeClaimRewards',
56
+ 'createAccount',
57
+ // Canton operations with no SDK-level recipients.
58
+ 'transferAccept',
59
+ 'transferReject',
60
+ 'transferOfferWithdrawn',
61
+ 'cosignDelegationAccept',
62
+ 'allocationAllocate',
63
+ 'allocationOfferWithdrawn',
64
+ 'cantonCommand',
65
+ 'cantonEndInvestorOnboardingOffer',
66
+ 'cantonEndInvestorOnboardingAccept',
67
+ 'cantonEndInvestorOnboardingReject',
68
+ 'cantonParticipantOnboardingRequest',
69
+ 'pledge',
70
+ // Avalanche / Flare cross-chain atomic imports
71
+ 'import',
72
+ 'importtoc',
73
+ // SOL: deactivate stake account (solDeactivateIntent)
74
+ 'deactivate',
75
+ // SOL: authorize stake account (solAuthorizeIntent)
76
+ 'authorize',
77
+ ];
78
+ expected.forEach((t) => assert_1.default.ok(recipientUtils_1.NO_RECIPIENT_TX_TYPES.has(t), `${t} should be in NO_RECIPIENT_TX_TYPES`));
79
+ assert_1.default.strictEqual(recipientUtils_1.NO_RECIPIENT_TX_TYPES.size, expected.length);
80
+ });
81
+ it('does not contain value-transfer types', function () {
82
+ ['payment', 'fanout', 'vote', 'defi-deposit', 'defi-redeem'].forEach((t) => {
83
+ assert_1.default.ok(!recipientUtils_1.NO_RECIPIENT_TX_TYPES.has(t), `${t} must NOT be in NO_RECIPIENT_TX_TYPES`);
84
+ });
85
+ });
86
+ });
87
+ describe('resolveEffectiveTxParams', function () {
88
+ it('passes through txParams.recipients when present', function () {
89
+ const txRequest = makeTxRequest();
90
+ const txParams = { recipients: [{ address: '0xabc', amount: '100' }] };
91
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, txParams);
92
+ assert_1.default.deepStrictEqual(result.recipients, txParams.recipients);
93
+ });
94
+ it('falls back to intent.recipients when txParams has none', function () {
95
+ const txRequest = makeTxRequest({
96
+ intent: {
97
+ intentType: 'payment',
98
+ recipients: [{ address: { address: '0xabc' }, amount: { value: '500', symbol: 'eth' } }],
99
+ },
100
+ });
101
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
102
+ assert_1.default.strictEqual(result.recipients?.length, 1);
103
+ assert_1.default.strictEqual(result.recipients?.[0].address, '0xabc');
104
+ assert_1.default.strictEqual(result.recipients?.[0].amount, '500');
105
+ });
106
+ it('resolves txType from intent.intentType when txParams.type is absent', function () {
107
+ const txRequest = makeTxRequest({ intent: { intentType: 'consolidate' } });
108
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
109
+ assert_1.default.strictEqual(result.type, 'consolidate');
110
+ });
111
+ it('does not throw for exempt types', function () {
112
+ for (const txType of [
113
+ 'acceleration',
114
+ 'consolidate',
115
+ 'contractCall',
116
+ 'delegate',
117
+ 'stake',
118
+ 'createAccount',
119
+ 'pledge',
120
+ 'import',
121
+ 'importtoc',
122
+ 'deactivate',
123
+ ]) {
124
+ const txRequest = makeTxRequest();
125
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: txType }));
126
+ }
127
+ });
128
+ it('does not require recipients for Canton intents resolved from the tx request', function () {
129
+ const cantonIntentTypes = [
130
+ 'transferAccept',
131
+ 'transferReject',
132
+ 'transferOfferWithdrawn',
133
+ 'cosignDelegationAccept',
134
+ 'allocationAllocate',
135
+ 'allocationOfferWithdrawn',
136
+ 'cantonCommand',
137
+ 'cantonEndInvestorOnboardingOffer',
138
+ 'cantonEndInvestorOnboardingAccept',
139
+ 'cantonEndInvestorOnboardingReject',
140
+ 'cantonParticipantOnboardingRequest',
141
+ ];
142
+ for (const intentType of cantonIntentTypes) {
143
+ const intent = { intentType };
144
+ const txRequest = makeTxRequest({ intent });
145
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, undefined));
146
+ }
147
+ });
148
+ it('does not require recipients for a wrapApprove intent', function () {
149
+ const txRequest = makeTxRequest({
150
+ intent: {
151
+ intentType: 'wrapApprove',
152
+ tokenName: 'hteth:cusdt',
153
+ amount: '1000000',
154
+ },
155
+ });
156
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
157
+ assert_1.default.strictEqual(result.type, 'wrapApprove');
158
+ assert_1.default.strictEqual(result.recipients, undefined);
159
+ });
160
+ it('does not require recipients for a wrap intent', function () {
161
+ const txRequest = makeTxRequest({
162
+ intent: {
163
+ intentType: 'wrap',
164
+ tokenName: 'hteth:cusdt',
165
+ amount: '1000000',
166
+ },
167
+ });
168
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
169
+ assert_1.default.strictEqual(result.type, 'wrap');
170
+ assert_1.default.strictEqual(result.recipients, undefined);
171
+ });
172
+ it('does not throw for Avalanche cross-chain imports resolved from intent.intentType', function () {
173
+ // P-chain and C-chain import intents legitimately carry no recipients —
174
+ // the wallet imports its own UTXOs and the destination address is the
175
+ // wallet itself. The intentType lives only on the intent (txParams.type
176
+ // is unset on the MPC signing call) so the guard must read it from there.
177
+ for (const intentType of ['import', 'importtoc']) {
178
+ const txRequest = makeTxRequest({ intent: { intentType } });
179
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}));
180
+ }
181
+ });
182
+ describe('native wrap/unwrap intents', function () {
183
+ // Regression test for the camelCase/kebab-case asymmetry. This set is matched
184
+ // against BOTH txParams.type (buildParams.type — camelCase, from wallet.sendMany)
185
+ // and intent.intentType (kebab-case, as WP persists it). Signing paths that carry
186
+ // no txParams — pendingApproval.approve() → recreateTxRequest() → signTxRequest()
187
+ // — only ever see the kebab-case spelling, so both must be registered.
188
+ it('does not throw when the type comes from buildParams.type (camelCase)', function () {
189
+ for (const txType of ['wrapNative', 'unwrapNative']) {
190
+ const txRequest = makeTxRequest();
191
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: txType }));
192
+ }
193
+ });
194
+ it('does not throw when the type comes only from intent.intentType (kebab-case)', function () {
195
+ for (const intentType of ['wrap-native', 'unwrap-native']) {
196
+ const txRequest = makeTxRequest({ intent: { intentType } });
197
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
198
+ assert_1.default.strictEqual(result.type, intentType);
199
+ assert_1.default.strictEqual(result.recipients, undefined);
200
+ }
201
+ });
202
+ it('does not throw when txParams is undefined entirely (pendingApproval re-sign path)', function () {
203
+ for (const intentType of ['wrap-native', 'unwrap-native']) {
204
+ const txRequest = makeTxRequest({ intent: { intentType, vaultId: 'vlt-weth-1', amount: '10' } });
205
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, undefined));
206
+ }
207
+ });
208
+ });
209
+ it('does not throw when buildParams.type is PascalCase but intent.intentType is lowercase', function () {
210
+ // signTransactionTss passes txPrebuild.buildParams as txParams. Prebuild uses
211
+ // type: 'Import' while WP stores intentType: 'import' on the txRequest.
212
+ const txRequest = makeTxRequest({ intent: { intentType: 'import', recipients: [] } });
213
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: 'Import', recipients: [] }));
214
+ });
215
+ it('throws InvalidTransactionError for unknown types with no recipients', function () {
216
+ const txRequest = makeTxRequest();
217
+ assert_1.default.throws(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { type: 'payment' }), errors_1.InvalidTransactionError, 'should throw for payment type with no recipients');
218
+ });
219
+ it('throws when txParams is undefined and no intent', function () {
220
+ const txRequest = makeTxRequest();
221
+ assert_1.default.throws(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, undefined), errors_1.InvalidTransactionError);
222
+ });
223
+ it('does not throw when intent has stakingRequestId (staking bypass)', function () {
224
+ const txRequest = makeTxRequest({
225
+ intent: { intentType: 'delegate', stakingRequestId: 'staking-req-123' },
226
+ });
227
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}));
228
+ });
229
+ it('propagates stakingRequestId from intent into effectiveTxParams', function () {
230
+ const txRequest = makeTxRequest({
231
+ intent: { intentType: 'delegate', stakingRequestId: 'staking-req-456' },
232
+ });
233
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
234
+ assert_1.default.strictEqual(result.stakingRequestId, 'staking-req-456');
235
+ });
236
+ it('does not overwrite existing stakingRequestId in txParams', function () {
237
+ const txRequest = makeTxRequest({
238
+ intent: { intentType: 'delegate', stakingRequestId: 'from-intent' },
239
+ });
240
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, { stakingRequestId: 'from-caller' });
241
+ assert_1.default.strictEqual(result.stakingRequestId, 'from-caller');
242
+ });
243
+ it('prefers txParams.recipients over intent.recipients', function () {
244
+ const txRequest = makeTxRequest({
245
+ intent: {
246
+ intentType: 'payment',
247
+ recipients: [{ address: { address: '0xintent' }, amount: { value: '999', symbol: 'eth' } }],
248
+ },
249
+ });
250
+ const txParams = { recipients: [{ address: '0xcaller', amount: '100' }] };
251
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, txParams);
252
+ assert_1.default.strictEqual(result.recipients?.[0].address, '0xcaller');
253
+ });
254
+ it('preserves data field from intent recipients', function () {
255
+ const txRequest = makeTxRequest({
256
+ intent: {
257
+ intentType: 'payment',
258
+ recipients: [{ address: { address: '0xabc' }, amount: { value: '100', symbol: 'eth' }, data: '0xdeadbeef' }],
259
+ },
260
+ });
261
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
262
+ assert_1.default.strictEqual(result.recipients?.[0].data, '0xdeadbeef');
263
+ });
264
+ describe('tokenName preservation regression tests', function () {
265
+ it('preserves tokenName from amount.symbol when it differs from chainName', function () {
266
+ const txRequest = makeTxRequest({
267
+ intent: {
268
+ intentType: 'payment',
269
+ recipients: [
270
+ {
271
+ address: { address: 'UserWalletAddress111111111111111111111111111' },
272
+ amount: { value: '1000000', symbol: 'tsol:usdc' },
273
+ },
274
+ ],
275
+ },
276
+ });
277
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
278
+ assert_1.default.strictEqual(result.recipients?.length, 1);
279
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, 'tsol:usdc');
280
+ });
281
+ it('does NOT set tokenName when symbol equals chainName (native SOL transfer)', function () {
282
+ const txRequest = makeTxRequest({
283
+ intent: {
284
+ intentType: 'payment',
285
+ recipients: [
286
+ {
287
+ address: { address: 'RecipientAddress111111111111111111111111111' },
288
+ amount: { value: '5000000000', symbol: 'tsol' },
289
+ },
290
+ ],
291
+ },
292
+ });
293
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
294
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, undefined);
295
+ });
296
+ it('prefers tokenData.tokenName over amount.symbol (uses distinct values to verify)', function () {
297
+ const txRequest = makeTxRequest({
298
+ intent: {
299
+ intentType: 'payment',
300
+ recipients: [
301
+ {
302
+ address: { address: 'RecipientAddress111111111111111111111111111' },
303
+ amount: { value: '500000', symbol: 'tsol:usdc-alt' },
304
+ tokenData: { tokenType: 'fungible', tokenQuantity: '500000', tokenName: 'canonical-token-name' },
305
+ },
306
+ ],
307
+ },
308
+ });
309
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
310
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, 'canonical-token-name');
311
+ });
312
+ it('falls back to amount.symbol when tokenData.tokenName is absent', function () {
313
+ const txRequest = makeTxRequest({
314
+ intent: {
315
+ intentType: 'payment',
316
+ recipients: [
317
+ {
318
+ address: { address: 'RecipientAddress111111111111111111111111111' },
319
+ amount: { value: '200000', symbol: 'sol:usdc' },
320
+ tokenData: { tokenType: 'fungible', tokenQuantity: '200000' },
321
+ },
322
+ ],
323
+ },
324
+ });
325
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'sol');
326
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, 'sol:usdc');
327
+ });
328
+ it('falls back to amount.symbol when tokenData.tokenName is empty string', function () {
329
+ const txRequest = makeTxRequest({
330
+ intent: {
331
+ intentType: 'payment',
332
+ recipients: [
333
+ {
334
+ address: { address: 'RecipientAddress111111111111111111111111111' },
335
+ amount: { value: '100000', symbol: 'tsol:usdc' },
336
+ tokenData: { tokenType: 'fungible', tokenQuantity: '100000', tokenName: '' },
337
+ },
338
+ ],
339
+ },
340
+ });
341
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
342
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, 'tsol:usdc');
343
+ });
344
+ it('does NOT set tokenName when chainName is absent (legacy ECDSA callers, no tokenData)', function () {
345
+ const txRequest = makeTxRequest({
346
+ intent: {
347
+ intentType: 'payment',
348
+ recipients: [{ address: { address: '0xabc' }, amount: { value: '100', symbol: 'eth' } }],
349
+ },
350
+ });
351
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
352
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, undefined);
353
+ assert_1.default.strictEqual(result.recipients?.[0].address, '0xabc');
354
+ });
355
+ it('preserves tokenData.tokenName when chainName is absent (legacy ECDSA with tokenData)', function () {
356
+ const txRequest = makeTxRequest({
357
+ intent: {
358
+ intentType: 'transferToken',
359
+ recipients: [
360
+ {
361
+ address: { address: '0xabc' },
362
+ amount: { value: '1000', symbol: 'erc20:usdc' },
363
+ tokenData: { tokenType: 'fungible', tokenQuantity: '1000', tokenName: 'eth:usdc' },
364
+ },
365
+ ],
366
+ },
367
+ });
368
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {});
369
+ assert_1.default.strictEqual(result.recipients?.[0].tokenName, 'eth:usdc');
370
+ });
371
+ it('sendMany tsol:usdc: does not throw and preserves tokenName in full round-trip', function () {
372
+ const txRequest = makeTxRequest({
373
+ intent: {
374
+ intentType: 'payment',
375
+ recipients: [
376
+ {
377
+ address: { address: 'SolUserWallet1111111111111111111111111111111' },
378
+ amount: { value: '2000000', symbol: 'tsol:usdc' },
379
+ },
380
+ {
381
+ address: { address: 'SolUserWallet2222222222222222222222222222222' },
382
+ amount: { value: '3000000', symbol: 'tsol:usdc' },
383
+ },
384
+ ],
385
+ },
386
+ });
387
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
388
+ assert_1.default.strictEqual(result.recipients?.length, 2);
389
+ result.recipients.forEach((r) => assert_1.default.strictEqual(r.tokenName, 'tsol:usdc'));
390
+ assert_1.default.strictEqual(result.recipients[0].amount, '2000000');
391
+ assert_1.default.strictEqual(result.recipients[1].amount, '3000000');
392
+ });
393
+ it('handles mixed native + token recipients correctly', function () {
394
+ const txRequest = makeTxRequest({
395
+ intent: {
396
+ intentType: 'payment',
397
+ recipients: [
398
+ {
399
+ address: { address: 'SolNative111111111111111111111111111111111' },
400
+ amount: { value: '1000000000', symbol: 'tsol' },
401
+ },
402
+ {
403
+ address: { address: 'SolToken111111111111111111111111111111111' },
404
+ amount: { value: '500000', symbol: 'tsol:usdc' },
405
+ },
406
+ ],
407
+ },
408
+ });
409
+ const result = (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}, 'tsol');
410
+ assert_1.default.strictEqual(result.recipients[0].tokenName, undefined);
411
+ assert_1.default.strictEqual(result.recipients[1].tokenName, 'tsol:usdc');
412
+ });
413
+ });
414
+ describe('SOL no-recipient intent types', function () {
415
+ it('does not throw for "delegate" (solDelegateIntent)', function () {
416
+ const txRequest = makeTxRequest({ intent: { intentType: 'delegate' } });
417
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}));
418
+ });
419
+ it('does not throw for "deactivate" (solDeactivateIntent)', function () {
420
+ const txRequest = makeTxRequest({ intent: { intentType: 'deactivate' } });
421
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}));
422
+ });
423
+ it('does not throw for "authorize" (solAuthorizeIntent)', function () {
424
+ const txRequest = makeTxRequest({ intent: { intentType: 'authorize' } });
425
+ assert_1.default.doesNotThrow(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}));
426
+ });
427
+ it('throws for stakingAuthorize — must be validated at coin layer', function () {
428
+ const txRequest = makeTxRequest({ intent: { intentType: 'stakingAuthorize' } });
429
+ assert_1.default.throws(() => (0, recipientUtils_1.resolveEffectiveTxParams)(txRequest, {}), errors_1.InvalidTransactionError);
430
+ });
431
+ });
432
+ });
433
+ });
434
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLHNGQUFvSDtBQUNwSCw0REFBMEU7QUFHMUUsU0FBUyxhQUFhLENBQUMsWUFBZ0MsRUFBRTtJQUN2RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLG9CQUFvQjtRQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsU0FBUztLQUNXLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtJQUN6QixRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHO2dCQUNmLFlBQVk7Z0JBQ1osY0FBYztnQkFDZCxXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGNBQWM7Z0JBQ2QsVUFBVTtnQkFDVixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsY0FBYztnQkFDZCwrREFBK0Q7Z0JBQy9ELFlBQVk7Z0JBQ1osYUFBYTtnQkFDYixjQUFjO2dCQUNkLGVBQWU7Z0JBQ2YsYUFBYTtnQkFDYixNQUFNO2dCQUNOLGNBQWM7Z0JBQ2QseURBQXlEO2dCQUN6RCxVQUFVO2dCQUNWLFlBQVk7Z0JBQ1osaUJBQWlCO2dCQUNqQixPQUFPO2dCQUNQLFNBQVM7Z0JBQ1QsbUJBQW1CO2dCQUNuQixxQkFBcUI7Z0JBQ3JCLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixXQUFXO2dCQUNYLE9BQU87Z0JBQ1AsbUJBQW1CO2dCQUNuQixlQUFlO2dCQUNmLGtEQUFrRDtnQkFDbEQsZ0JBQWdCO2dCQUNoQixnQkFB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QUF1QixDQUFDLENBQUM7WUFDeEYsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBOT19SRUNJUElFTlRfVFhfVFlQRVMsIHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby91dGlscy90c3MvcmVjaXBpZW50VXRpbHMnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vZXJyb3JzJztcbmltcG9ydCB7IFBvcHVsYXRlZEludGVudCwgVHhSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9iYXNlVHlwZXMnO1xuXG5mdW5jdGlvbiBtYWtlVHhSZXF1ZXN0KG92ZXJyaWRlczogUGFydGlhbDxUeFJlcXVlc3Q+ID0ge30pOiBUeFJlcXVlc3Qge1xuICByZXR1cm4ge1xuICAgIHR4UmVxdWVzdElkOiAndGVzdC10eC1yZXF1ZXN0LWlkJyxcbiAgICB3YWxsZXRJZDogJ3Rlc3Qtd2FsbGV0LWlkJyxcbiAgICBpbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICAuLi5vdmVycmlkZXMsXG4gIH0gYXMgdW5rbm93biBhcyBUeFJlcXVlc3Q7XG59XG5cbmRlc2NyaWJlKCdyZWNpcGllbnRVdGlscycsIGZ1bmN0aW9uICgpIHtcbiAgZGVzY3JpYmUoJ05PX1JFQ0lQSUVOVF9UWF9UWVBFUycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnY29udGFpbnMgYWxsIGV4cGVjdGVkIHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSBbXG4gICAgICAgIC8vIEVDRFNBIEVWTVxuICAgICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICAgJ2ZpbGxOb25jZScsXG4gICAgICAgICd0cmFuc2ZlclRva2VuJyxcbiAgICAgICAgJ3Rva2VuQXBwcm92YWwnLFxuICAgICAgICAnY29uc29saWRhdGUnLFxuICAgICAgICAnYnJpZGdlRnVuZHMnLFxuICAgICAgICAnZW5hYmxlVG9rZW4nLFxuICAgICAgICAnZW5hYmxldG9rZW4nLFxuICAgICAgICAnZGlzYWJsZXRva2VuJyxcbiAgICAgICAgJ2N1c3RvbVR4JyxcbiAgICAgICAgJ2RlZmlBcHByb3ZlJyxcbiAgICAgICAgJ2RlZmlEZXBvc2l0JyxcbiAgICAgICAgJ2RlZmlXaXRoZHJhdycsXG4gICAgICAgIC8vIE5hdGl2ZSB3cmFwL3Vud3JhcCDigJQgcmVnaXN0ZXJlZCBpbiBib3RoIHNwZWxsaW5ncyBvbiBwdXJwb3NlXG4gICAgICAgICd3cmFwTmF0aXZlJyxcbiAgICAgICAgJ3dyYXAtbmF0aXZlJyxcbiAgICAgICAgJ3Vud3JhcE5hdGl2ZScsXG4gICAgICAgICd1bndyYXAtbmF0aXZlJyxcbiAgICAgICAgJ3dyYXBBcHByb3ZlJyxcbiAgICAgICAgJ3dyYXAnLFxuICAgICAgICAnY29udHJhY3RDYWxsJyxcbiAgICAgICAgLy8gU3Rha2luZyDigJQgJ2RlbGVnYXRlJyBhbHNvIGNvdmVycyBTT0wgc29sRGVsZWdhdGVJbnRlbnRcbiAgICAgICAgJ2RlbGVnYXRlJyxcbiAgICAgICAgJ3VuZGVsZWdhdGUnLFxuICAgICAgICAnc3dpdGNoVmFsaWRhdG9yJyxcbiAgICAgICAgJ3N0YWtlJyxcbiAgICAgICAgJ3Vuc3Rha2UnLFxuICAgICAgICAnc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAgICAgICAndW5zdGFrZVdpdGhDYWxsRGF0YScsXG4gICAgICAgICd0cmFuc2ZlclN0YWtlJyxcbiAgICAgICAgJ2luY3JlYXNlU3Rha2UnLFxuICAgICAgICAnZ29VbnN0YWtlJyxcbiAgICAgICAgJ2NsYWltJyxcbiAgICAgICAgJ3N0YWtlQ2xhaW1SZXdhcmRzJyxcbiAgICAgICAgJ2NyZWF0ZUFjY291bnQnLFxuICAgICAgICAvLyBDYW50b24gb3BlcmF0aW9ucyB3aXRoIG5vIFNESy1sZXZlbCByZWNpcGllbnRzLlxuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjb3NpZ25EZWxlZ2F0aW9uQWNjZXB0JyxcbiAgICAgICAgJ2FsbG9jYXRpb25BbGxvY2F0ZScsXG4gICAgICAgICdhbGxvY2F0aW9uT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnY2FudG9uQ29tbWFuZCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcicsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdBY2NlcHQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nUmVqZWN0JyxcbiAgICAgICAgJ2NhbnRvblBhcnRpY2lwYW50T25ib2FyZGluZ1JlcXVlc3QnLFxuXG4gICAgICAgICdwbGVkZ2UnLFxuICAgICAgICAvLyBBdmFsYW5jaGUgLyBGbGFyZSBjcm9zcy1jaGFpbiBhdG9taWMgaW1wb3J0c1xuICAgICAgICAnaW1wb3J0JyxcbiAgICAgICAgJ2ltcG9ydHRvYycsXG4gICAgICAgIC8vIFNPTDogZGVhY3RpdmF0ZSBzdGFrZSBhY2NvdW50IChzb2xEZWFjdGl2YXRlSW50ZW50KVxuICAgICAgICAnZGVhY3RpdmF0ZScsXG4gICAgICAgIC8vIFNPTDogYXV0aG9yaXplIHN0YWtlIGFjY291bnQgKHNvbEF1dGhvcml6ZUludGVudClcbiAgICAgICAgJ2F1dGhvcml6ZScsXG4gICAgICBdO1xuICAgICAgZXhwZWN0ZWQuZm9yRWFjaCgodCkgPT4gYXNzZXJ0Lm9rKE5PX1JFQ0lQSUVOVF9UWF9UWVBFUy5oYXModCksIGAke3R9IHNob3VsZCBiZSBpbiBOT19SRUNJUElFTlRfVFhfVFlQRVNgKSk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoTk9fUkVDSVBJRU5UX1RYX1RZUEVTLnNpemUsIGV4cGVjdGVkLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgY29udGFpbiB2YWx1ZS10cmFuc2ZlciB0eXBlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIFsncGF5bWVudCcsICdmYW5vdXQnLCAndm90ZScsICdkZWZpLWRlcG9zaXQnLCAnZGVmaS1yZWRlZW0nXS5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgIGFzc2VydC5vayghTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyh0KSwgYCR7dH0gbXVzdCBOT1QgYmUgaW4gTk9fUkVDSVBJRU5UX1RYX1RZUEVTYCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Jlc29sdmVFZmZlY3RpdmVUeFBhcmFtcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncGFzc2VzIHRocm91Z2ggdHhQYXJhbXMucmVjaXBpZW50cyB3aGVuIHByZXNlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICBjb25zdCB0eFBhcmFtcyA9IHsgcmVjaXBpZW50czogW3sgYWRkcmVzczogJzB4YWJjJywgYW1vdW50OiAnMTAwJyB9XSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdHhQYXJhbXMpO1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cywgdHhQYXJhbXMucmVjaXBpZW50cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZmFsbHMgYmFjayB0byBpbnRlbnQucmVjaXBpZW50cyB3aGVuIHR4UGFyYW1zIGhhcyBub25lJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7XG4gICAgICAgIGludGVudDoge1xuICAgICAgICAgIGludGVudFR5cGU6ICdwYXltZW50JyxcbiAgICAgICAgICByZWNpcGllbnRzOiBbeyBhZGRyZXNzOiB7IGFkZHJlc3M6ICcweGFiYycgfSwgYW1vdW50OiB7IHZhbHVlOiAnNTAwJywgc3ltYm9sOiAnZXRoJyB9IH1dLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5sZW5ndGgsIDEpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzPy5bMF0uYWRkcmVzcywgJzB4YWJjJyk7XG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnJlY2lwaWVudHM/LlswXS5hbW91bnQsICc1MDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXNvbHZlcyB0eFR5cGUgZnJvbSBpbnRlbnQuaW50ZW50VHlwZSB3aGVuIHR4UGFyYW1zLnR5cGUgaXMgYWJzZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlOiAnY29uc29saWRhdGUnIH0gYXMgYW55IH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC50eXBlLCAnY29uc29saWRhdGUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgZXhlbXB0IHR5cGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCB0eFR5cGUgb2YgW1xuICAgICAgICAnYWNjZWxlcmF0aW9uJyxcbiAgICAgICAgJ2NvbnNvbGlkYXRlJyxcbiAgICAgICAgJ2NvbnRyYWN0Q2FsbCcsXG4gICAgICAgICdkZWxlZ2F0ZScsXG4gICAgICAgICdzdGFrZScsXG4gICAgICAgICdjcmVhdGVBY2NvdW50JyxcbiAgICAgICAgJ3BsZWRnZScsXG4gICAgICAgICdpbXBvcnQnLFxuICAgICAgICAnaW1wb3J0dG9jJyxcbiAgICAgICAgJ2RlYWN0aXZhdGUnLFxuICAgICAgXSkge1xuICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgeyB0eXBlOiB0eFR5cGUgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cyBmb3IgQ2FudG9uIGludGVudHMgcmVzb2x2ZWQgZnJvbSB0aGUgdHggcmVxdWVzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhbnRvbkludGVudFR5cGVzID0gW1xuICAgICAgICAndHJhbnNmZXJBY2NlcHQnLFxuICAgICAgICAndHJhbnNmZXJSZWplY3QnLFxuICAgICAgICAndHJhbnNmZXJPZmZlcldpdGhkcmF3bicsXG4gICAgICAgICdjb3NpZ25EZWxlZ2F0aW9uQWNjZXB0JyxcbiAgICAgICAgJ2FsbG9jYXRpb25BbGxvY2F0ZScsXG4gICAgICAgICdhbGxvY2F0aW9uT2ZmZXJXaXRoZHJhd24nLFxuICAgICAgICAnY2FudG9uQ29tbWFuZCcsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcicsXG4gICAgICAgICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdBY2NlcHQnLFxuICAgICAgICAnY2FudG9uRW5kSW52ZXN0b3JPbmJvYXJkaW5nUmVqZWN0JyxcbiAgICAgICAgJ2NhbnRvblBhcnRpY2lwYW50T25ib2FyZGluZ1JlcXVlc3QnLFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCBpbnRlbnRUeXBlIG9mIGNhbnRvbkludGVudFR5cGVzKSB7XG4gICAgICAgIGNvbnN0IGludGVudDogUG9wdWxhdGVkSW50ZW50ID0geyBpbnRlbnRUeXBlIH07XG4gICAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQgfSk7XG4gICAgICAgIGFzc2VydC5kb2VzTm90VGhyb3coKCkgPT4gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwgdW5kZWZpbmVkKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVxdWlyZSByZWNpcGllbnRzIGZvciBhIHdyYXBBcHByb3ZlIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAnd3JhcEFwcHJvdmUnLFxuICAgICAgICAgIHRva2VuTmFtZTogJ2h0ZXRoOmN1c2R0JyxcbiAgICAgICAgICBhbW91bnQ6ICcxMDAwMDAwJyxcbiAgICAgICAgfSBhcyBhbnksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LnR5cGUsICd3cmFwQXBwcm92ZScpO1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IHJlcXVpcmUgcmVjaXBpZW50cyBmb3IgYSB3cmFwIGludGVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3Qoe1xuICAgICAgICBpbnRlbnQ6IHtcbiAgICAgICAgICBpbnRlbnRUeXBlOiAnd3JhcCcsXG4gICAgICAgICAgdG9rZW5OYW1lOiAnaHRldGg6Y3VzZHQnLFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICB9IGFzIGFueSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7fSk7XG5cbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgJ3dyYXAnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQucmVjaXBpZW50cywgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyBmb3IgQXZhbGFuY2hlIGNyb3NzLWNoYWluIGltcG9ydHMgcmVzb2x2ZWQgZnJvbSBpbnRlbnQuaW50ZW50VHlwZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFAtY2hhaW4gYW5kIEMtY2hhaW4gaW1wb3J0IGludGVudHMgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIHJlY2lwaWVudHMg4oCUXG4gICAgICAvLyB0aGUgd2FsbGV0IGltcG9ydHMgaXRzIG93biBVVFhPcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgdGhlXG4gICAgICAvLyB3YWxsZXQgaXRzZWxmLiBUaGUgaW50ZW50VHlwZSBsaXZlcyBvbmx5IG9uIHRoZSBpbnRlbnQgKHR4UGFyYW1zLnR5cGVcbiAgICAgIC8vIGlzIHVuc2V0IG9uIHRoZSBNUEMgc2lnbmluZyBjYWxsKSBzbyB0aGUgZ3VhcmQgbXVzdCByZWFkIGl0IGZyb20gdGhlcmUuXG4gICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWydpbXBvcnQnLCAnaW1wb3J0dG9jJ10pIHtcbiAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlIH0gYXMgYW55IH0pO1xuICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHt9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnbmF0aXZlIHdyYXAvdW53cmFwIGludGVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBSZWdyZXNzaW9uIHRlc3QgZm9yIHRoZSBjYW1lbENhc2Uva2ViYWItY2FzZSBhc3ltbWV0cnkuIFRoaXMgc2V0IGlzIG1hdGNoZWRcbiAgICAgIC8vIGFnYWluc3QgQk9USCB0eFBhcmFtcy50eXBlIChidWlsZFBhcmFtcy50eXBlIOKAlCBjYW1lbENhc2UsIGZyb20gd2FsbGV0LnNlbmRNYW55KVxuICAgICAgLy8gYW5kIGludGVudC5pbnRlbnRUeXBlIChrZWJhYi1jYXNlLCBhcyBXUCBwZXJzaXN0cyBpdCkuIFNpZ25pbmcgcGF0aHMgdGhhdCBjYXJyeVxuICAgICAgLy8gbm8gdHhQYXJhbXMg4oCUIHBlbmRpbmdBcHByb3ZhbC5hcHByb3ZlKCkg4oaSIHJlY3JlYXRlVHhSZXF1ZXN0KCkg4oaSIHNpZ25UeFJlcXVlc3QoKVxuICAgICAgLy8g4oCUIG9ubHkgZXZlciBzZWUgdGhlIGtlYmFiLWNhc2Ugc3BlbGxpbmcsIHNvIGJvdGggbXVzdCBiZSByZWdpc3RlcmVkLlxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gdGhlIHR5cGUgY29tZXMgZnJvbSBidWlsZFBhcmFtcy50eXBlIChjYW1lbENhc2UpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGNvbnN0IHR4VHlwZSBvZiBbJ3dyYXBOYXRpdmUnLCAndW53cmFwTmF0aXZlJ10pIHtcbiAgICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KCk7XG4gICAgICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6IHR4VHlwZSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgdGhyb3cgd2hlbiB0aGUgdHlwZSBjb21lcyBvbmx5IGZyb20gaW50ZW50LmludGVudFR5cGUgKGtlYmFiLWNhc2UpJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGludGVudFR5cGUgb2YgWyd3cmFwLW5hdGl2ZScsICd1bndyYXAtbmF0aXZlJ10pIHtcbiAgICAgICAgICBjb25zdCB0eFJlcXVlc3QgPSBtYWtlVHhSZXF1ZXN0KHsgaW50ZW50OiB7IGludGVudFR5cGUgfSBhcyBhbnkgfSk7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzb2x2ZUVmZmVjdGl2ZVR4UGFyYW1zKHR4UmVxdWVzdCwge30pO1xuICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQudHlwZSwgaW50ZW50VHlwZSk7XG4gICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdC5yZWNpcGllbnRzLCB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IHRocm93IHdoZW4gdHhQYXJhbXMgaXMgdW5kZWZpbmVkIGVudGlyZWx5IChwZW5kaW5nQXBwcm92YWwgcmUtc2lnbiBwYXRoKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbnRlbnRUeXBlIG9mIFsnd3JhcC1uYXRpdmUnLCAndW53cmFwLW5hdGl2ZSddKSB7XG4gICAgICAgICAgY29uc3QgdHhSZXF1ZXN0ID0gbWFrZVR4UmVxdWVzdCh7IGludGVudDogeyBpbnRlbnRUeXBlLCB2YXVsdElkOiAndmx0LXdldGgtMScsIGFtb3VudDogJzEwJyB9IGFzIGFueSB9KTtcbiAgICAgICAgICBhc3NlcnQuZG9lc05vdFRocm93KCgpID0+IHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyh0eFJlcXVlc3QsIHVuZGVmaW5lZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCB0aHJvdyB3aGVuIGJ1aWxkUGFyYW1zLnR5cGUgaXMgUGFzY2FsQ2FzZSBidXQgaW50ZW50LmludGVudFR5cGUgaXMgbG93ZXJjYXNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc2lnblRyYW5zYWN0aW9uVHNzIHBhc3NlcyB0eFByZWJ1aWxkLmJ1aWxkUGFyYW1zIGFzIHR4UGFyYW1zLiBQcmVidWlsZCB1c2VzXG4gICAgICAvLyB0eXBlOiAnSW1wb3J0JyB3aGlsZSBXUCBzdG9yZXMgaW50ZW50VHlwZTogJ2ltcG9ydCcgb24gdGhlIHR4UmVxdWVzdC5cbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoeyBpbnRlbnQ6IHsgaW50ZW50VHlwZTogJ2ltcG9ydCcsIHJlY2lwaWVudHM6IFtdIH0gYXMgYW55IH0pO1xuICAgICAgYXNzZXJ0LmRvZXNOb3RUaHJvdygoKSA9PiByZXNvbHZlRWZmZWN0aXZlVHhQYXJhbXModHhSZXF1ZXN0LCB7IHR5cGU6ICdJbXBvcnQnLCByZWNpcGllbnRzOiBbXSB9KSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGZvciB1bmtub3duIHR5cGVzIHdpdGggbm8gcmVjaXBpZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4UmVxdWVzdCA9IG1ha2VUeFJlcXVlc3QoKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+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":""}