@bitgo-beta/sdk-core 8.2.1-beta.213 → 8.2.1-beta.2131

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 (809) 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 +59 -5
  10. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  11. package/dist/src/account-lib/baseCoin/enum.js +112 -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 -13
  91. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  92. package/dist/src/bitgo/baseCoin/baseCoin.js +200 -16
  93. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +337 -33
  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 +24 -3
  107. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  108. package/dist/src/bitgo/coinFactory.js +35 -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 +74 -3
  133. package/dist/src/bitgo/environments.d.ts.map +1 -1
  134. package/dist/src/bitgo/environments.js +417 -34
  135. package/dist/src/bitgo/errors.d.ts +193 -1
  136. package/dist/src/bitgo/errors.d.ts.map +1 -1
  137. package/dist/src/bitgo/errors.js +194 -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 +6 -1
  142. package/dist/src/bitgo/index.d.ts.map +1 -1
  143. package/dist/src/bitgo/index.js +32 -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 +180 -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 +106 -13
  163. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  164. package/dist/src/bitgo/keychain/keychains.js +423 -72
  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 +72 -0
  200. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  201. package/dist/src/bitgo/safe/derivableEd25519Pub.js +186 -0
  202. package/dist/src/bitgo/safe/iSafe.d.ts +124 -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 +8 -0
  209. package/dist/src/bitgo/safe/index.d.ts.map +1 -0
  210. package/dist/src/bitgo/safe/index.js +24 -0
  211. package/dist/src/bitgo/safe/recovery.d.ts +192 -0
  212. package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
  213. package/dist/src/bitgo/safe/recovery.js +253 -0
  214. package/dist/src/bitgo/safe/rootCoin.d.ts +15 -0
  215. package/dist/src/bitgo/safe/rootCoin.d.ts.map +1 -0
  216. package/dist/src/bitgo/safe/rootCoin.js +47 -0
  217. package/dist/src/bitgo/safe/safe.d.ts +88 -0
  218. package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
  219. package/dist/src/bitgo/safe/safe.js +417 -0
  220. package/dist/src/bitgo/safe/safes.d.ts +102 -0
  221. package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
  222. package/dist/src/bitgo/safe/safes.js +281 -0
  223. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
  224. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  225. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  226. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  227. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  228. package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
  229. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  230. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  231. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  232. package/dist/src/bitgo/staking/iStakingWallet.d.ts +161 -8
  233. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  234. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  235. package/dist/src/bitgo/staking/index.d.ts +3 -0
  236. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  237. package/dist/src/bitgo/staking/index.js +9 -2
  238. package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
  239. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  240. package/dist/src/bitgo/staking/stakingWallet.js +153 -7
  241. package/dist/src/bitgo/trading/iTradingAccount.d.ts +13 -1
  242. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  243. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  244. package/dist/src/bitgo/trading/index.d.ts +1 -0
  245. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  246. package/dist/src/bitgo/trading/index.js +7 -2
  247. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  248. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  249. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  250. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  251. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  252. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  253. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  254. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  255. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  256. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  257. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  258. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  259. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  260. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  261. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  262. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  263. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  264. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  265. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  266. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  267. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  268. package/dist/src/bitgo/trading/network/index.d.ts +2 -0
  269. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -1
  270. package/dist/src/bitgo/trading/network/index.js +8 -2
  271. package/dist/src/bitgo/trading/network/network.d.ts +4 -3
  272. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  273. package/dist/src/bitgo/trading/network/network.js +24 -27
  274. package/dist/src/bitgo/trading/network/types.d.ts +79 -46
  275. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  276. package/dist/src/bitgo/trading/network/types.js +1 -1
  277. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  278. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  279. package/dist/src/bitgo/trading/network/utils.js +54 -0
  280. package/dist/src/bitgo/trading/tradingAccount.d.ts +15 -1
  281. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  282. package/dist/src/bitgo/trading/tradingAccount.js +55 -7
  283. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +49 -0
  284. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  285. package/dist/src/bitgo/tss/bitgoPubKeys.js +92 -0
  286. package/dist/src/bitgo/tss/common.d.ts +50 -6
  287. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  288. package/dist/src/bitgo/tss/common.js +139 -17
  289. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  290. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  291. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  292. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  293. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  294. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
  295. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  296. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  297. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  298. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  299. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  300. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  301. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  302. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  303. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  304. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +42 -0
  305. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  306. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +104 -0
  307. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  308. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  309. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  310. package/dist/src/bitgo/tss/index.d.ts +3 -2
  311. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  312. package/dist/src/bitgo/tss/index.js +26 -10
  313. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +138 -0
  314. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  315. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +255 -0
  316. package/dist/src/bitgo/tss/types.d.ts +3 -3
  317. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  318. package/dist/src/bitgo/tss/types.js +2 -2
  319. package/dist/src/bitgo/types.d.ts +3 -3
  320. package/dist/src/bitgo/types.d.ts.map +1 -1
  321. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +10 -0
  322. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  323. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +76 -14
  324. package/dist/src/bitgo/utils/codecProps.js +24 -11
  325. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  326. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  327. package/dist/src/bitgo/utils/codecs.js +59 -0
  328. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  329. package/dist/src/bitgo/utils/decode.js +30 -16
  330. package/dist/src/bitgo/utils/index.d.ts +5 -2
  331. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  332. package/dist/src/bitgo/utils/index.js +28 -11
  333. package/dist/src/bitgo/utils/messageTypes.d.ts +46 -0
  334. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  335. package/dist/src/bitgo/utils/messageTypes.js +23 -0
  336. package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
  337. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  338. package/dist/src/bitgo/utils/mpcUtils.js +210 -14
  339. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  340. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  341. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  342. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -7
  343. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  344. package/dist/src/bitgo/utils/opengpgUtils.js +79 -62
  345. package/dist/src/bitgo/utils/postWithCodec.js +2 -3
  346. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  347. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  348. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  349. package/dist/src/bitgo/utils/siws.d.ts +17 -0
  350. package/dist/src/bitgo/utils/siws.d.ts.map +1 -0
  351. package/dist/src/bitgo/utils/siws.js +171 -0
  352. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  353. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  354. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  355. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  356. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  357. package/dist/src/bitgo/utils/triple.js +2 -3
  358. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
  359. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  360. package/dist/src/bitgo/utils/tss/addressVerification.js +93 -0
  361. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +99 -17
  362. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  363. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +322 -45
  364. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +478 -55
  365. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  366. package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
  367. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  368. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  369. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  370. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  371. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  372. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  373. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +25 -51
  374. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  375. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +173 -246
  376. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +241 -0
  377. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  378. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1082 -0
  379. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +17 -0
  380. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  381. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +39 -0
  382. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +65 -0
  383. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  384. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +439 -0
  385. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +5 -0
  386. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  387. package/dist/src/bitgo/utils/tss/ecdsa/index.js +11 -2
  388. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  389. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  390. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  391. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +151 -0
  392. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  393. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  394. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
  395. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
  396. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +119 -0
  397. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
  398. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  399. package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
  400. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +43 -11
  401. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  402. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +261 -96
  403. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +261 -0
  404. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  405. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +994 -0
  406. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +14 -0
  407. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  408. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +29 -0
  409. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +44 -0
  410. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  411. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +268 -0
  412. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  413. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  414. package/dist/src/bitgo/utils/tss/eddsa/index.js +30 -8
  415. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +15 -7
  416. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  417. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  418. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +75 -0
  419. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  420. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
  421. package/dist/src/bitgo/utils/tss/index.d.ts +7 -0
  422. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  423. package/dist/src/bitgo/utils/tss/index.js +31 -10
  424. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
  425. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  426. package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
  427. package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
  428. package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  429. package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
  430. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  431. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  432. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  433. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +42 -0
  434. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  435. package/dist/src/bitgo/utils/tss/recipientUtils.js +179 -0
  436. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  437. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  438. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +126 -0
  439. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  440. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  441. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  442. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +27 -0
  443. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  444. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +43 -0
  445. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +45 -0
  446. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  447. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  448. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts +8 -0
  449. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts.map +1 -0
  450. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.js +13 -0
  451. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  452. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  453. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  454. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  455. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  456. package/dist/src/bitgo/utils/txRequest.js +49 -0
  457. package/dist/src/bitgo/utils/util.js +24 -10
  458. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  459. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  460. package/dist/src/bitgo/utils/wallet.js +48 -0
  461. package/dist/src/bitgo/v1Wallets.d.ts +170 -0
  462. package/dist/src/bitgo/v1Wallets.d.ts.map +1 -0
  463. package/dist/src/bitgo/v1Wallets.js +3 -0
  464. package/dist/src/bitgo/wallet/BuildParams.d.ts +92 -1
  465. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  466. package/dist/src/bitgo/wallet/BuildParams.js +97 -11
  467. package/dist/src/bitgo/wallet/iWallet.d.ts +647 -33
  468. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  469. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  470. package/dist/src/bitgo/wallet/iWallets.d.ts +311 -16
  471. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  472. package/dist/src/bitgo/wallet/iWallets.js +84 -3
  473. package/dist/src/bitgo/wallet/index.d.ts +1 -0
  474. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  475. package/dist/src/bitgo/wallet/index.js +7 -2
  476. package/dist/src/bitgo/wallet/safeKeychain.d.ts +75 -0
  477. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -0
  478. package/dist/src/bitgo/wallet/safeKeychain.js +152 -0
  479. package/dist/src/bitgo/wallet/wallet.d.ts +410 -27
  480. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  481. package/dist/src/bitgo/wallet/wallet.js +2525 -510
  482. package/dist/src/bitgo/wallet/wallets.d.ts +99 -4
  483. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  484. package/dist/src/bitgo/wallet/wallets.js +1256 -156
  485. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
  486. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
  487. package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
  488. package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
  489. package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
  490. package/dist/src/bitgo/walletUtil/index.js +19 -0
  491. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
  492. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
  493. package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
  494. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
  495. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
  496. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
  497. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
  498. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
  499. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
  500. package/dist/src/bitgo/webauthn/base64url.d.ts +16 -0
  501. package/dist/src/bitgo/webauthn/base64url.d.ts.map +1 -0
  502. package/dist/src/bitgo/webauthn/base64url.js +27 -0
  503. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts +18 -0
  504. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts.map +1 -0
  505. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.js +26 -0
  506. package/dist/src/bitgo/webauthn/derivePassword.d.ts +11 -0
  507. package/dist/src/bitgo/webauthn/derivePassword.d.ts.map +1 -0
  508. package/dist/src/bitgo/webauthn/derivePassword.js +16 -0
  509. package/dist/src/bitgo/webauthn/index.d.ts +5 -0
  510. package/dist/src/bitgo/webauthn/index.d.ts.map +1 -0
  511. package/dist/src/bitgo/webauthn/index.js +21 -0
  512. package/dist/src/bitgo/webauthn/types.d.ts +18 -0
  513. package/dist/src/bitgo/webauthn/types.d.ts.map +1 -0
  514. package/dist/src/bitgo/webauthn/types.js +3 -0
  515. package/dist/src/bitgo/webhook/index.js +6 -2
  516. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  517. package/dist/src/coins/fiat.d.ts +45 -0
  518. package/dist/src/coins/fiat.d.ts.map +1 -0
  519. package/dist/src/coins/fiat.js +94 -0
  520. package/dist/src/coins/index.d.ts +1 -6
  521. package/dist/src/coins/index.d.ts.map +1 -1
  522. package/dist/src/coins/index.js +7 -8
  523. package/dist/src/coins/ofc.d.ts +21 -2
  524. package/dist/src/coins/ofc.d.ts.map +1 -1
  525. package/dist/src/coins/ofc.js +29 -3
  526. package/dist/src/coins/ofcToken.d.ts +15 -4
  527. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  528. package/dist/src/coins/ofcToken.js +43 -5
  529. package/dist/src/coins/susd.d.ts +3 -2
  530. package/dist/src/coins/susd.d.ts.map +1 -1
  531. package/dist/src/coins/susd.js +5 -1
  532. package/dist/src/common.js +27 -13
  533. package/dist/src/index.d.ts +9 -1
  534. package/dist/src/index.d.ts.map +1 -1
  535. package/dist/src/index.js +40 -11
  536. package/dist/src/lightning.d.ts +20 -0
  537. package/dist/src/lightning.d.ts.map +1 -0
  538. package/dist/src/lightning.js +13 -0
  539. package/dist/src/units.js +5 -6
  540. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  541. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  542. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  543. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  544. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  545. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  546. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  547. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  548. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  549. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  550. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  551. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  552. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
  553. package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
  554. package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
  555. package/dist/test/unit/account-lib/mpc/util.js +53 -0
  556. package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
  557. package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
  558. package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
  559. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  560. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  561. package/dist/test/unit/bitgo/defi/defiVault.js +863 -0
  562. package/dist/test/unit/bitgo/environment.d.ts +2 -0
  563. package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
  564. package/dist/test/unit/bitgo/environment.js +38 -0
  565. package/dist/test/unit/bitgo/errors.d.ts +2 -0
  566. package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
  567. package/dist/test/unit/bitgo/errors.js +276 -0
  568. package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
  569. package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
  570. package/dist/test/unit/bitgo/keychain/keychains.js +426 -0
  571. package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
  572. package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
  573. package/dist/test/unit/bitgo/recovery/initiate.js +159 -0
  574. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts +2 -0
  575. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  576. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +257 -0
  577. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +72 -0
  578. package/dist/test/unit/bitgo/safe/fixtures/safeBip44Vectors.json +319 -0
  579. package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
  580. package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
  581. package/dist/test/unit/bitgo/safe/recovery.js +647 -0
  582. package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
  583. package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
  584. package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
  585. package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
  586. package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
  587. package/dist/test/unit/bitgo/safe/safe.js +607 -0
  588. package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts +2 -0
  589. package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts.map +1 -0
  590. package/dist/test/unit/bitgo/safe/safeBip44Vectors.js +189 -0
  591. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
  592. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
  593. package/dist/test/unit/bitgo/safe/safeDerivation.js +37 -0
  594. package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
  595. package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
  596. package/dist/test/unit/bitgo/safe/safes.js +376 -0
  597. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  598. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  599. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  600. package/dist/test/unit/bitgo/trading/network/network.test.d.ts +2 -0
  601. package/dist/test/unit/bitgo/trading/network/network.test.d.ts.map +1 -0
  602. package/dist/test/unit/bitgo/trading/network/network.test.js +136 -0
  603. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  604. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  605. package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
  606. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  607. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  608. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  609. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  610. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  611. package/dist/test/unit/bitgo/tss/common.js +84 -0
  612. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  613. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  614. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +370 -0
  615. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -4
  616. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  617. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  618. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  619. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts +2 -0
  620. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts.map +1 -0
  621. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.js +109 -0
  622. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts +2 -0
  623. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts.map +1 -0
  624. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.js +106 -0
  625. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  626. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  627. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  628. package/dist/test/unit/bitgo/utils/postWithCodec.js +24 -10
  629. package/dist/test/unit/bitgo/utils/siws.d.ts +2 -0
  630. package/dist/test/unit/bitgo/utils/siws.d.ts.map +1 -0
  631. package/dist/test/unit/bitgo/utils/siws.js +206 -0
  632. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
  633. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  634. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +251 -0
  635. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
  636. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
  637. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +348 -0
  638. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  639. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  640. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  641. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
  642. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  643. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1246 -0
  644. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
  645. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
  646. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
  647. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  648. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  649. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  650. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  651. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  652. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +2410 -0
  653. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  654. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  655. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +553 -0
  656. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
  657. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
  658. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +376 -0
  659. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
  660. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  661. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
  662. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
  663. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  664. package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
  665. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  666. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  667. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  668. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  669. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  670. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +498 -0
  671. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  672. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  673. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +80 -0
  674. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  675. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  676. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +279 -0
  677. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  678. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  679. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  680. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  681. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  682. package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
  683. package/dist/test/unit/bitgo/utils/wallet.d.ts +2 -0
  684. package/dist/test/unit/bitgo/utils/wallet.d.ts.map +1 -0
  685. package/dist/test/unit/bitgo/utils/wallet.js +55 -0
  686. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  687. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  688. package/dist/test/unit/bitgo/wallet/BuildParams.js +167 -0
  689. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +79 -9
  690. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
  691. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
  692. package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
  693. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
  694. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
  695. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
  696. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
  697. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
  698. package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
  699. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  700. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  701. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  702. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  703. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  704. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
  705. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
  706. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
  707. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
  708. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  709. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  710. package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
  711. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts +5 -0
  712. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts.map +1 -0
  713. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +651 -0
  714. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  715. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  716. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +304 -0
  717. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
  718. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
  719. package/dist/test/unit/bitgo/wallet/tokenApproval.js +210 -0
  720. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
  721. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
  722. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
  723. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  724. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  725. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +69 -0
  726. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
  727. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
  728. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
  729. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
  730. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
  731. package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
  732. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  733. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  734. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +304 -0
  735. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
  736. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
  737. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
  738. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  739. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  740. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +853 -0
  741. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
  742. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
  743. package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +150 -0
  744. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  745. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  746. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +201 -0
  747. package/dist/test/unit/coins/ofc.d.ts +2 -0
  748. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  749. package/dist/test/unit/coins/ofc.js +124 -0
  750. package/dist/test/unit/lightning.d.ts +2 -0
  751. package/dist/test/unit/lightning.d.ts.map +1 -0
  752. package/dist/test/unit/lightning.js +23 -0
  753. package/dist/test/unit/units.d.ts.map +1 -1
  754. package/dist/test/unit/units.js +64 -64
  755. package/dist/tsconfig.tsbuildinfo +1 -1
  756. package/package.json +25 -22
  757. package/.eslintignore +0 -5
  758. package/CHANGELOG.md +0 -1866
  759. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  760. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  761. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  762. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -49
  763. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
  764. package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -87
  765. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  766. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  767. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  768. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  769. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  770. package/dist/src/bitgo/lightning/index.js +0 -17
  771. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  772. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  773. package/dist/src/bitgo/lightning/lightning.js +0 -111
  774. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  775. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  776. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  777. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  778. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  779. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  780. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  781. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  782. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  783. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  784. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  785. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  786. package/dist/src/coins/fiateur.d.ts +0 -31
  787. package/dist/src/coins/fiateur.d.ts.map +0 -1
  788. package/dist/src/coins/fiateur.js +0 -57
  789. package/dist/src/coins/fiatgbp.d.ts +0 -31
  790. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  791. package/dist/src/coins/fiatgbp.js +0 -57
  792. package/dist/src/coins/fiatusd.d.ts +0 -31
  793. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  794. package/dist/src/coins/fiatusd.js +0 -57
  795. package/dist/src/coins/tfiateur.d.ts +0 -11
  796. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  797. package/dist/src/coins/tfiateur.js +0 -17
  798. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  799. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  800. package/dist/src/coins/tfiatgbp.js +0 -17
  801. package/dist/src/coins/tfiatusd.d.ts +0 -11
  802. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  803. package/dist/src/coins/tfiatusd.js +0 -17
  804. package/dist/src/openssl/index.d.ts +0 -5
  805. package/dist/src/openssl/index.d.ts.map +0 -1
  806. package/dist/src/openssl/index.js +0 -9
  807. package/dist/test/unit/openssl.d.ts +0 -2
  808. package/dist/test/unit/openssl.d.ts.map +0 -1
  809. package/dist/test/unit/openssl.js +0 -39
@@ -0,0 +1,192 @@
1
+ /**
2
+ * @prettier
3
+ *
4
+ * @experimental WRW-facing safe recovery entry points.
5
+ */
6
+ import { Buffer } from 'buffer';
7
+ import type { RootKeyType } from '@bitgo/public-types';
8
+ import { type Ed25519ExtendedKeyParts, type ExternalEd25519Signer } from './derivableEd25519Pub';
9
+ import { BitGoBase } from '../bitgoBase';
10
+ export type DecryptedMpcSafeRoot = {
11
+ signing: Buffer;
12
+ vrf: Buffer;
13
+ };
14
+ export type OnchainSafeRoot = {
15
+ user: string;
16
+ backup: string;
17
+ bitgo: string;
18
+ };
19
+ export type MpcSafeRoot = {
20
+ user: DecryptedMpcSafeRoot;
21
+ backup: DecryptedMpcSafeRoot;
22
+ bitgo: string;
23
+ };
24
+ export type Ed25519MultisigSafeRoot = {
25
+ user: string;
26
+ backup: {
27
+ prv: string;
28
+ chainCode: string;
29
+ };
30
+ bitgo: string;
31
+ };
32
+ export type Secp256k1MultisigChildKeys = {
33
+ user: {
34
+ prv: string;
35
+ pub: string;
36
+ };
37
+ backup: {
38
+ prv: string;
39
+ pub: string;
40
+ };
41
+ bitgo: {
42
+ pub: string;
43
+ };
44
+ };
45
+ export type EcdsaMpcChildKeys = {
46
+ commonKeychain: string;
47
+ user: string;
48
+ backup: string;
49
+ };
50
+ export type EddsaMpcChildKeys = EcdsaMpcChildKeys;
51
+ /**
52
+ * A hardened (SLIP-0010) ed25519 child. The `kind` discriminator prevents a raw seed from being
53
+ * mistaken for an extended key downstream — both are 32-byte values that `isValidPub` would accept.
54
+ */
55
+ export type SafeEd25519SeedKey = {
56
+ readonly kind: 'seed';
57
+ readonly seed: string;
58
+ readonly pub: string;
59
+ };
60
+ /**
61
+ * A soft (BIP32-Ed25519) ed25519 child. No 32-byte seed maps back to a soft-derived child, so the
62
+ * signer needs both halves directly: `kL` (the clamped scalar) and `kR` (the nonce prefix).
63
+ */
64
+ export type SafeEd25519ExtendedKey = {
65
+ readonly kind: 'extended';
66
+ } & Ed25519ExtendedKeyParts<string>;
67
+ /** The three ed25519 co-signer children. BitGo is pub-only: its private key stays in the HSM. */
68
+ export type Ed25519MultisigChildKeys = {
69
+ user: SafeEd25519SeedKey;
70
+ backup: SafeEd25519ExtendedKey;
71
+ bitgo: {
72
+ readonly pub: string;
73
+ };
74
+ };
75
+ export type DerivedSafeWalletKeys = {
76
+ slot: 'secp256k1Multisig';
77
+ path: string;
78
+ keys: Secp256k1MultisigChildKeys;
79
+ } | {
80
+ slot: 'ecdsaMpc';
81
+ path: string;
82
+ keys: EcdsaMpcChildKeys;
83
+ } | {
84
+ slot: 'eddsaMpc';
85
+ path: string;
86
+ keys: EddsaMpcChildKeys;
87
+ } | {
88
+ slot: 'ed25519Multisig';
89
+ path: string;
90
+ keys: Ed25519MultisigChildKeys;
91
+ };
92
+ export type SecpSafeRecoverKeyParams = {
93
+ slot: 'secp256k1Multisig';
94
+ userKey: string;
95
+ backupKey: string;
96
+ bitgoKey: string;
97
+ walletPassphrase?: string;
98
+ };
99
+ /**
100
+ * Slot-2 (ed25519Multisig) safe recovery key params. A discriminated union on `mode`, so the invalid
101
+ * combos are not representable: signed mode always carries the lazy signer and never a `backupKey`,
102
+ * unsigned mode always carries the encoded `backupKey` and never a signer or passphrase.
103
+ *
104
+ * `rootAddress` is the wallet's on-chain address. For ALGO it's the 2-of-3 multisig address over the
105
+ * three child pubs — derivable here, but `recover()` still requires it as input. Note this is
106
+ * *derived*, not independently verified against a known wallet address; callers with a recorded
107
+ * address should cross-check it themselves. For HBAR this field is omitted so the caller's
108
+ * network-assigned account ID is preserved when the key params are spread into a recovery request.
109
+ */
110
+ export type Ed25519SafeRecoverKeyParams = {
111
+ slot: 'ed25519Multisig';
112
+ mode: 'signed';
113
+ userKey: string;
114
+ bitgoKey: string;
115
+ walletPassphrase: string;
116
+ rootAddress?: string;
117
+ /**
118
+ * Lazy signer for the seedless backup child. The backup child has no seed, so it cannot be
119
+ * seed-signed; and its signature must cover `tx.bytesToSign()`, which only exists once
120
+ * `recover()` builds the tx. So instead of a pre-made signature we pass a closure that holds
121
+ * the private `kL`/`kR` and signs on demand — the private halves never leave it.
122
+ */
123
+ externalBackupSigner: ExternalEd25519Signer;
124
+ } | {
125
+ slot: 'ed25519Multisig';
126
+ mode: 'unsigned';
127
+ userKey: string;
128
+ backupKey: string;
129
+ bitgoKey: string;
130
+ rootAddress?: string;
131
+ };
132
+ export type SafeRecoverKeyParams = SecpSafeRecoverKeyParams | Ed25519SafeRecoverKeyParams;
133
+ export type DecryptedSafeRoots = {
134
+ secp256k1Multisig: OnchainSafeRoot;
135
+ ed25519Multisig: Ed25519MultisigSafeRoot;
136
+ ecdsaMpc: MpcSafeRoot;
137
+ eddsaMpc: MpcSafeRoot;
138
+ };
139
+ export declare function decryptSafeKeycard(params: {
140
+ bitgo: BitGoBase;
141
+ userKeyBox: string;
142
+ backupKeyBox: string;
143
+ bitgoKeyBox: string;
144
+ password: string;
145
+ }): Promise<DecryptedSafeRoots>;
146
+ /**
147
+ * Derives a Safe wallet's child keys at the BIP44 path for a given slot and account.
148
+ * Supports all four slots: `secp256k1Multisig`, `ed25519Multisig`, `ecdsaMpc`, and `eddsaMpc`.
149
+ */
150
+ export declare function deriveSafeWalletKeys(params: {
151
+ coin: string;
152
+ slot: RootKeyType;
153
+ account: number;
154
+ roots: DecryptedSafeRoots;
155
+ }): Promise<DerivedSafeWalletKeys>;
156
+ /**
157
+ * The request shape for `buildSafeRecoverKeyParams`. The `slot` literal is the discriminant that
158
+ * ties each slot to its own `keys` shape, so TypeScript narrows `params.keys` automatically and a
159
+ * slot added without a branch is a compile error rather than a silent cast.
160
+ */
161
+ export type SafeRecoverKeyParamsRequest = {
162
+ bitgo: BitGoBase;
163
+ coin: string;
164
+ mode: 'signed' | 'unsigned';
165
+ } & ({
166
+ slot: 'secp256k1Multisig';
167
+ keys: Secp256k1MultisigChildKeys;
168
+ } | {
169
+ slot: 'ed25519Multisig';
170
+ keys: Ed25519MultisigChildKeys;
171
+ } | {
172
+ slot: 'ecdsaMpc';
173
+ keys: EcdsaMpcChildKeys;
174
+ } | {
175
+ slot: 'eddsaMpc';
176
+ keys: EddsaMpcChildKeys;
177
+ });
178
+ /**
179
+ * Builds the key fields `coin.recover()` expects from derived Safe child keys.
180
+ * Supports `secp256k1Multisig` (slot 1) and `ed25519Multisig` (slot 2); the MPC slots fail closed.
181
+ * Signed mode re-encrypts the child secrets under a fresh ephemeral passphrase (v1/SJCL); unsigned
182
+ * mode returns pubs. Where supported, `rootAddress` is derived from the child keys, not independently
183
+ * verified; otherwise it is omitted so the caller can supply it.
184
+ */
185
+ export declare function buildSafeRecoverKeyParams(params: Extract<SafeRecoverKeyParamsRequest, {
186
+ slot: 'secp256k1Multisig';
187
+ }>): Promise<SecpSafeRecoverKeyParams>;
188
+ export declare function buildSafeRecoverKeyParams(params: Extract<SafeRecoverKeyParamsRequest, {
189
+ slot: 'ed25519Multisig';
190
+ }>): Promise<Ed25519SafeRecoverKeyParams>;
191
+ export declare function buildSafeRecoverKeyParams(params: SafeRecoverKeyParamsRequest): Promise<SafeRecoverKeyParams>;
192
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/recovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiBvD,OAAO,EAIL,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC9E,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACtG,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAErG,iGAAiG;AACjG,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,0BAA0B,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,2BAA2B,GACnC;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,oBAAoB,EAAE,qBAAqB,CAAC;CAC7C,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,2BAA2B,CAAC;AAE1F,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,eAAe,CAAC;IACnC,eAAe,EAAE,uBAAuB,CAAC;IACzC,QAAQ,EAAE,WAAW,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8D9B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,kBAAkB,CAAC;CAC3B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwEjC;AA6BD;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC7B,GAAG,CACA;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,0BAA0B,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,wBAAwB,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAChD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,CAAC,2BAA2B,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC,GAC1E,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACrC,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,OAAO,CAAC,2BAA2B,EAAE;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC,GACxE,OAAO,CAAC,2BAA2B,CAAC,CAAC;AACxC,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptSafeKeycard = decryptSafeKeycard;
4
+ exports.deriveSafeWalletKeys = deriveSafeWalletKeys;
5
+ exports.buildSafeRecoverKeyParams = buildSafeRecoverKeyParams;
6
+ /**
7
+ * @prettier
8
+ *
9
+ * @experimental WRW-facing safe recovery entry points.
10
+ */
11
+ const buffer_1 = require("buffer");
12
+ const crypto_1 = require("crypto");
13
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
14
+ const statics_1 = require("@bitgo-beta/statics");
15
+ const sdk_lib_safes_1 = require("@bitgo-beta/sdk-lib-safes");
16
+ const derivableEd25519Pub_1 = require("./derivableEd25519Pub");
17
+ const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
18
+ const errors_1 = require("../errors");
19
+ const keyShareEnvelope_1 = require("../utils/tss/keyShareEnvelope");
20
+ async function decryptSafeKeycard(params) {
21
+ const { bitgo, userKeyBox, backupKeyBox, bitgoKeyBox, password } = params;
22
+ const userRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(userKeyBox);
23
+ const backupRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(backupKeyBox);
24
+ const bitgoRoots = (0, sdk_lib_safes_1.parseSafeKeycardBox)(bitgoKeyBox);
25
+ const decryptRoot = async (root) => {
26
+ try {
27
+ return await bitgo.decrypt({ input: root, password });
28
+ }
29
+ catch (e) {
30
+ throw new errors_1.IncorrectPasswordError('unable to decrypt the safe keycard with the provided password', e);
31
+ }
32
+ };
33
+ const unwrapMpcRoot = (decrypted) => {
34
+ try {
35
+ return (0, keyShareEnvelope_1.parseSafeMpcKeyEnvelopes)(decrypted);
36
+ }
37
+ catch (e) {
38
+ throw new errors_1.IncorrectPasswordError('unable to decrypt the safe keycard with the provided password', e);
39
+ }
40
+ };
41
+ // Only box B's ed25519Multisig slot may carry the derivable `{ prv, chainCode }` object; every
42
+ // other entry — all of boxes A and C, and every non-ed25519 slot in box B — is a bare string and
43
+ // fails closed if it carries the object instead.
44
+ const requireBareString = (entry) => {
45
+ if (sdk_lib_safes_1.Ed25519ChainCodeEntryCodec.is(entry)) {
46
+ throw new Error('unexpected ed25519 chain-code entry where a bare string was required');
47
+ }
48
+ return entry;
49
+ };
50
+ const decryptEd25519Backup = async (entry) => {
51
+ if (!sdk_lib_safes_1.Ed25519ChainCodeEntryCodec.is(entry)) {
52
+ throw new Error('ed25519 backup root must carry a chain code');
53
+ }
54
+ return { prv: await decryptRoot(entry.prv), chainCode: entry.chainCode };
55
+ };
56
+ return {
57
+ secp256k1Multisig: {
58
+ user: await decryptRoot(requireBareString(userRoots.secp256k1Multisig)),
59
+ backup: await decryptRoot(requireBareString(backupRoots.secp256k1Multisig)),
60
+ bitgo: requireBareString(bitgoRoots.secp256k1Multisig),
61
+ },
62
+ ed25519Multisig: {
63
+ user: await decryptRoot(requireBareString(userRoots.ed25519Multisig)),
64
+ backup: await decryptEd25519Backup(backupRoots.ed25519Multisig),
65
+ bitgo: requireBareString(bitgoRoots.ed25519Multisig),
66
+ },
67
+ ecdsaMpc: {
68
+ user: unwrapMpcRoot(await decryptRoot(requireBareString(userRoots.ecdsaMpc))),
69
+ backup: unwrapMpcRoot(await decryptRoot(requireBareString(backupRoots.ecdsaMpc))),
70
+ bitgo: requireBareString(bitgoRoots.ecdsaMpc),
71
+ },
72
+ eddsaMpc: {
73
+ user: unwrapMpcRoot(await decryptRoot(requireBareString(userRoots.eddsaMpc))),
74
+ backup: unwrapMpcRoot(await decryptRoot(requireBareString(backupRoots.eddsaMpc))),
75
+ bitgo: requireBareString(bitgoRoots.eddsaMpc),
76
+ },
77
+ };
78
+ }
79
+ /**
80
+ * Derives a Safe wallet's child keys at the BIP44 path for a given slot and account.
81
+ * Supports all four slots: `secp256k1Multisig`, `ed25519Multisig`, `ecdsaMpc`, and `eddsaMpc`.
82
+ */
83
+ async function deriveSafeWalletKeys(params) {
84
+ if (!Number.isInteger(params.account) || params.account < 0 || params.account > statics_1.MAX_BIP32_INDEX) {
85
+ throw new Error(`deriveSafeWalletKeys: invalid account '${params.account}'`);
86
+ }
87
+ const { account, roots } = params;
88
+ const path = (0, sdk_lib_safes_1.buildSafeBip44Path)((0, sdk_lib_safes_1.getSafeBip44CoinType)(params.coin), params.slot, account);
89
+ const { coinType, slotOrdinal } = (0, sdk_lib_safes_1.parseSafeBip44Path)(path);
90
+ if (params.slot === 'secp256k1Multisig') {
91
+ return { slot: 'secp256k1Multisig', path, keys: (0, sdk_lib_safes_1.deriveSafeChildTriplet)(roots.secp256k1Multisig, path) };
92
+ }
93
+ if (params.slot === 'ecdsaMpc') {
94
+ const { commonKeychain, userChild, backupChild } = await sdk_lib_mpc_1.DklsVrfUtils.deriveSafeEcdsaMpcChild({
95
+ userRoot: roots.ecdsaMpc.user,
96
+ backupRoot: roots.ecdsaMpc.backup,
97
+ account,
98
+ coinType,
99
+ safeSlotOrdinal: slotOrdinal,
100
+ });
101
+ return {
102
+ slot: 'ecdsaMpc',
103
+ path,
104
+ keys: { commonKeychain, user: userChild, backup: backupChild },
105
+ };
106
+ }
107
+ if (params.slot === 'eddsaMpc') {
108
+ const { commonKeychain, userChild, backupChild } = await sdk_lib_mpc_1.MpsVrfUtils.deriveSafeEddsaMpcChild({
109
+ userRoot: roots.eddsaMpc.user,
110
+ backupRoot: roots.eddsaMpc.backup,
111
+ account,
112
+ coinType,
113
+ safeSlotOrdinal: slotOrdinal,
114
+ });
115
+ return {
116
+ slot: 'eddsaMpc',
117
+ path,
118
+ keys: { commonKeychain, user: userChild, backup: backupChild },
119
+ };
120
+ }
121
+ if (params.slot === 'ed25519Multisig') {
122
+ const root = roots.ed25519Multisig;
123
+ const cosignerPath = (0, sdk_lib_safes_1.toSoftTwinPath)(path);
124
+ const user = (0, sdk_lib_safes_1.deriveSafeChildEd25519Hardened)(root.user, path);
125
+ const backup = await (0, derivableEd25519Pub_1.softDeriveChildPrvEd25519AtPath)({
126
+ seedStrKey: root.backup.prv,
127
+ chainCode: root.backup.chainCode,
128
+ path: cosignerPath,
129
+ });
130
+ const bitgo = await (0, derivableEd25519Pub_1.softDeriveChildPubEd25519AtPath)(root.bitgo, cosignerPath);
131
+ return {
132
+ slot: 'ed25519Multisig',
133
+ path,
134
+ keys: {
135
+ user: { kind: 'seed', seed: user.prv, pub: (0, sdk_lib_safes_1.decodeEd25519StrKeyPublicKey)(user.pub).toString('hex') },
136
+ backup: {
137
+ kind: 'extended',
138
+ kL: backup.kL.toString('hex'),
139
+ kR: backup.kR.toString('hex'),
140
+ pub: backup.pub.toString('hex'),
141
+ },
142
+ bitgo: { pub: bitgo.toString('hex') },
143
+ },
144
+ };
145
+ }
146
+ throw new Error(`deriveSafeWalletKeys: slot '${params.slot}' is not supported yet`);
147
+ }
148
+ /**
149
+ * Per-coin encoders for the `ed25519Multisig` slot: each slot-2 coin re-encodes the same 32-byte
150
+ * children into its own address/seed string formats. A coin absent from the registry is not yet
151
+ * supported for slot-2 recovery (xlm is a future arm).
152
+ */
153
+ const ALGO_ENCODERS = {
154
+ encodePub: sdk_lib_safes_1.encodeAlgoKey,
155
+ encodeSeed: sdk_lib_safes_1.encodeAlgoKey,
156
+ deriveRootAddress: (userPub, backupPub, bitgoPub) => (0, sdk_lib_safes_1.algoMultisigAddress)(1, 2, [userPub, backupPub, bitgoPub]),
157
+ };
158
+ const ED25519_MULTISIG_COIN_ENCODERS = {
159
+ algo: ALGO_ENCODERS,
160
+ talgo: ALGO_ENCODERS,
161
+ hbar: { encodePub: sdk_lib_safes_1.encodeHbarPublicKeyDer, encodeSeed: sdk_lib_safes_1.encodeHbarPrivateKeyDer },
162
+ thbar: { encodePub: sdk_lib_safes_1.encodeHbarPublicKeyDer, encodeSeed: sdk_lib_safes_1.encodeHbarPrivateKeyDer },
163
+ };
164
+ async function buildSafeRecoverKeyParams(params) {
165
+ const { bitgo, mode } = params;
166
+ if (params.slot === 'ed25519Multisig') {
167
+ return buildEd25519MultisigRecoverKeyParams(bitgo, params.coin, params.keys, mode);
168
+ }
169
+ if (params.slot === 'secp256k1Multisig') {
170
+ const keys = params.keys;
171
+ if (mode === 'unsigned') {
172
+ return {
173
+ slot: 'secp256k1Multisig',
174
+ userKey: keys.user.pub,
175
+ backupKey: keys.backup.pub,
176
+ bitgoKey: keys.bitgo.pub,
177
+ };
178
+ }
179
+ const userPrv = utxo_lib_1.bip32.fromBase58(keys.user.prv);
180
+ const backupPrv = utxo_lib_1.bip32.fromBase58(keys.backup.prv);
181
+ if (!userPrv.privateKey || !backupPrv.privateKey) {
182
+ throw new Error('buildSafeRecoverKeyParams: keys.user.prv and keys.backup.prv must be private xprvs');
183
+ }
184
+ const walletPassphrase = (0, crypto_1.randomBytes)(32).toString('hex');
185
+ const [userKey, backupKey] = await Promise.all([
186
+ bitgo.encrypt({ input: keys.user.prv, password: walletPassphrase, encryptionVersion: 1 }),
187
+ bitgo.encrypt({ input: keys.backup.prv, password: walletPassphrase, encryptionVersion: 1 }),
188
+ ]);
189
+ return {
190
+ slot: 'secp256k1Multisig',
191
+ userKey,
192
+ backupKey,
193
+ bitgoKey: keys.bitgo.pub,
194
+ walletPassphrase,
195
+ };
196
+ }
197
+ throw new Error(`buildSafeRecoverKeyParams: slot '${params.slot}' is not supported yet`);
198
+ }
199
+ async function buildEd25519MultisigRecoverKeyParams(bitgo, coin, keys, mode) {
200
+ const encoders = ED25519_MULTISIG_COIN_ENCODERS[coin];
201
+ if (!encoders) {
202
+ throw new Error(`buildSafeRecoverKeyParams: coin '${coin}' ed25519Multisig is not supported yet`);
203
+ }
204
+ for (const pub of [keys.user.pub, keys.backup.pub, keys.bitgo.pub]) {
205
+ // strict hex, not length-only: Buffer.from(pub, 'hex') truncates at the first bad pair, so a
206
+ // length check alone would accept trailing garbage
207
+ if (!/^[0-9a-f]{64}$/i.test(pub)) {
208
+ throw new Error('buildSafeRecoverKeyParams: ed25519 child public keys must be 32 bytes');
209
+ }
210
+ }
211
+ const userPub = buffer_1.Buffer.from(keys.user.pub, 'hex');
212
+ const backupPub = buffer_1.Buffer.from(keys.backup.pub, 'hex');
213
+ const bitgoPub = buffer_1.Buffer.from(keys.bitgo.pub, 'hex');
214
+ // The root address is derivable from child pubs for ALGO (version-1 2-of-3 multisig), but
215
+ // not for HBAR (Hedera account IDs are network-assigned). Each coin declares, via its registry
216
+ // entry, whether it can derive one; the caller supplies it otherwise.
217
+ const rootAddress = encoders.deriveRootAddress?.(userPub, backupPub, bitgoPub);
218
+ const rootAddressParams = rootAddress === undefined ? {} : { rootAddress };
219
+ if (mode === 'unsigned') {
220
+ return {
221
+ slot: 'ed25519Multisig',
222
+ mode: 'unsigned',
223
+ userKey: encoders.encodePub(userPub),
224
+ backupKey: encoders.encodePub(backupPub),
225
+ bitgoKey: encoders.encodePub(bitgoPub),
226
+ ...rootAddressParams,
227
+ };
228
+ }
229
+ // The user child is a hardened SLIP-0010 seed, so it re-encrypts exactly like slot 1. The backup
230
+ // child is a seedless soft extended key: it cannot be re-encrypted as a seed, so it becomes a lazy
231
+ // external signer over the tx bytes (WCN-2895's extended-key signer, invoked by the coin).
232
+ const walletPassphrase = (0, crypto_1.randomBytes)(32).toString('hex');
233
+ const userKey = await bitgo.encrypt({
234
+ input: encoders.encodeSeed(buffer_1.Buffer.from(keys.user.seed, 'hex')),
235
+ password: walletPassphrase,
236
+ encryptionVersion: 1,
237
+ });
238
+ return {
239
+ slot: 'ed25519Multisig',
240
+ mode: 'signed',
241
+ userKey,
242
+ bitgoKey: encoders.encodePub(bitgoPub),
243
+ walletPassphrase,
244
+ ...rootAddressParams,
245
+ externalBackupSigner: {
246
+ publicKey: keys.backup.pub,
247
+ sign: async (message) => ({
248
+ signature: (await (0, derivableEd25519Pub_1.signEd25519Extended)(buffer_1.Buffer.from(message), buffer_1.Buffer.from(keys.backup.kL, 'hex'), buffer_1.Buffer.from(keys.backup.kR, 'hex'))).toString('hex'),
249
+ }),
250
+ },
251
+ };
252
+ }
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9yZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdKQSxnREFvRUM7QUFNRCxvREE2RUM7QUEyREQsOERBeUNDO0FBM1lEOzs7O0dBSUc7QUFDSCxtQ0FBZ0M7QUFDaEMsbUNBQXFDO0FBQ3JDLG1EQUE2QztBQUM3QyxpREFBc0Q7QUFFdEQsNkRBZW1DO0FBQ25DLCtEQU0rQjtBQUMvQix5REFBb0U7QUFFcEUsc0NBQW1EO0FBQ25ELG9FQUF5RTtBQTRHbEUsS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BTXhDO0lBQ0MsTUFBTSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFMUUsTUFBTSxTQUFTLEdBQUcsSUFBQSxtQ0FBbUIsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG1DQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUEsbUNBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7SUFFcEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBbUIsRUFBRTtRQUMxRCxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSwrQkFBc0IsQ0FBQywrREFBK0QsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxTQUFpQixFQUF3QixFQUFFO1FBQ2hFLElBQUksQ0FBQztZQUNILE9BQU8sSUFBQSwyQ0FBd0IsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSwrQkFBc0IsQ0FBQywrREFBK0QsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsK0ZBQStGO0lBQy9GLGlHQUFpRztJQUNqRyxpREFBaUQ7SUFDakQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQTJCLEVBQVUsRUFBRTtRQUNoRSxJQUFJLDBDQUEwQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFBRSxLQUEyQixFQUErQyxFQUFFO1FBQzlHLElBQUksQ0FBQywwQ0FBMEIsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0UsQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLGlCQUFpQixFQUFFO1lBQ2pCLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2RSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0UsS0FBSyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztTQUN2RDtRQUNELGVBQWUsRUFBRTtZQUNmLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDckUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUMvRCxLQUFLLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQztTQUNyRDtRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0UsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRixLQUFLLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUM5QztRQUNELFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxhQUFhLENBQUMsTUFBTSxXQUFXLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0UsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRixLQUFLLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUM5QztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUFDLE1BSzFDO0lBQ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcseUJBQWUsRUFBRSxDQUFDO1FBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxNQUFNLElBQUksR0FBRyxJQUFBLGtDQUFrQixFQUFDLElBQUEsb0NBQW9CLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekYsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFBLGtDQUFrQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFBLHNDQUFzQixFQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzFHLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDL0IsTUFBTSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSwwQkFBWSxDQUFDLHVCQUF1QixDQUFDO1lBQzVGLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUNqQyxPQUFPO1lBQ1AsUUFBUTtZQUNSLGVBQWUsRUFBRSxXQUFXO1NBQzdCLENBQUMsQ0FBQztRQUNILE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixJQUFJO1lBQ0osSUFBSSxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtTQUMvRCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQixNQUFNLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLHlCQUFXLENBQUMsdUJBQXVCLENBQUM7WUFDM0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUM3QixVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ2pDLE9BQU87WUFDUCxRQUFRO1lBQ1IsZUFBZSxFQUFFLFdBQVc7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUk7WUFDSixJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFO1NBQy9ELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUNuQyxNQUFNLFlBQVksR0FBRyxJQUFBLDhCQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsTUFBTSxJQUFJLEdBQUcsSUFBQSw4Q0FBOEIsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxxREFBK0IsRUFBQztZQUNuRCxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDaEMsSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHFEQUErQixFQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFOUUsT0FBTztZQUNMLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSTtZQUNKLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFBLDRDQUE0QixFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25HLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDN0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztvQkFDN0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDaEM7Z0JBQ0QsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7YUFDdEM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLE1BQU0sQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUM7QUFDdEYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLGFBQWEsR0FBRztJQUNwQixTQUFTLEVBQUUsNkJBQWE7SUFDeEIsVUFBVSxFQUFFLDZCQUFhO0lBQ3pCLGlCQUFpQixFQUFFLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQzFFLElBQUEsbUNBQW1CLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDNUQsQ0FBQztBQUVGLE1BQU0sOEJBQThCLEdBUWhDO0lBQ0YsSUFBSSxFQUFFLGFBQWE7SUFDbkIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLHNDQUFzQixFQUFFLFVBQVUsRUFBRSx1Q0FBdUIsRUFBRTtJQUNoRixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsc0NBQXNCLEVBQUUsVUFBVSxFQUFFLHVDQUF1QixFQUFFO0NBQ2xGLENBQUM7QUFnQ0ssS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQW1DO0lBQ2pGLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRS9CLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sb0NBQW9DLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUV6QixJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QixPQUFPO2dCQUNMLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0JBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7YUFDekIsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLGdCQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUEsb0JBQVcsRUFBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekQsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDekYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLElBQUksRUFBRSxtQkFBbUI7WUFDekIsT0FBTztZQUNQLFNBQVM7WUFDVCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO1lBQ3hCLGdCQUFnQjtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVELEtBQUssVUFBVSxvQ0FBb0MsQ0FDakQsS0FBZ0IsRUFDaEIsSUFBWSxFQUNaLElBQThCLEVBQzlCLElBQTJCO0lBRTNCLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLElBQUksd0NBQXdDLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNuRSw2RkFBNkY7UUFDN0YsbURBQW1EO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEQsTUFBTSxRQUFRLEdBQUcsZUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVwRCwwRkFBMEY7SUFDMUYsK0ZBQStGO0lBQy9GLHNFQUFzRTtJQUN0RSxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBRTNFLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLE9BQU87WUFDTCxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUNwQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7WUFDeEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3RDLEdBQUcsaUJBQWlCO1NBQ3JCLENBQUM7SUFDSixDQUFDO0lBRUQsaUdBQWlHO0lBQ2pHLG1HQUFtRztJQUNuRywyRkFBMkY7SUFDM0YsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLG9CQUFXLEVBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELE1BQU0sT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNsQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlELFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsaUJBQWlCLEVBQUUsQ0FBQztLQUNyQixDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU87UUFDUCxRQUFRLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDdEMsZ0JBQWdCO1FBQ2hCLEdBQUcsaUJBQWlCO1FBQ3BCLG9CQUFvQixFQUFFO1lBQ3BCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFDMUIsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRSxDQUNULE1BQU0sSUFBQSx5Q0FBbUIsRUFDdkIsZUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFDcEIsZUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFDbEMsZUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FDbkMsQ0FDRixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDbEIsQ0FBQztTQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgV1JXLWZhY2luZyBzYWZlIHJlY292ZXJ5IGVudHJ5IHBvaW50cy5cbiAqL1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgTUFYX0JJUDMyX0lOREVYIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgdHlwZSB7IFJvb3RLZXlUeXBlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQge1xuICBidWlsZFNhZmVCaXA0NFBhdGgsXG4gIGRlY29kZUVkMjU1MTlTdHJLZXlQdWJsaWNLZXksXG4gIGRlcml2ZVNhZmVDaGlsZEVkMjU1MTlIYXJkZW5lZCxcbiAgZGVyaXZlU2FmZUNoaWxkVHJpcGxldCxcbiAgRWQyNTUxOUNoYWluQ29kZUVudHJ5Q29kZWMsXG4gIGdldFNhZmVCaXA0NENvaW5UeXBlLFxuICBwYXJzZVNhZmVCaXA0NFBhdGgsXG4gIHBhcnNlU2FmZUtleWNhcmRCb3gsXG4gIHRvU29mdFR3aW5QYXRoLFxuICBhbGdvTXVsdGlzaWdBZGRyZXNzLFxuICBlbmNvZGVBbGdvS2V5LFxuICBlbmNvZGVIYmFyUHVibGljS2V5RGVyLFxuICBlbmNvZGVIYmFyUHJpdmF0ZUtleURlcixcbiAgdHlwZSBTYWZlS2V5Y2FyZFJvb3RFbnRyeSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1zYWZlcyc7XG5pbXBvcnQge1xuICBzaWduRWQyNTUxOUV4dGVuZGVkLFxuICBzb2Z0RGVyaXZlQ2hpbGRQdWJFZDI1NTE5QXRQYXRoLFxuICBzb2Z0RGVyaXZlQ2hpbGRQcnZFZDI1NTE5QXRQYXRoLFxuICB0eXBlIEVkMjU1MTlFeHRlbmRlZEtleVBhcnRzLFxuICB0eXBlIEV4dGVybmFsRWQyNTUxOVNpZ25lcixcbn0gZnJvbSAnLi9kZXJpdmFibGVFZDI1NTE5UHViJztcbmltcG9ydCB7IERrbHNWcmZVdGlscywgTXBzVnJmVXRpbHMgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSW5jb3JyZWN0UGFzc3dvcmRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQgeyBwYXJzZVNhZmVNcGNLZXlFbnZlbG9wZXMgfSBmcm9tICcuLi91dGlscy90c3Mva2V5U2hhcmVFbnZlbG9wZSc7XG5cbmV4cG9ydCB0eXBlIERlY3J5cHRlZE1wY1NhZmVSb290ID0geyBzaWduaW5nOiBCdWZmZXI7IHZyZjogQnVmZmVyIH07XG5cbmV4cG9ydCB0eXBlIE9uY2hhaW5TYWZlUm9vdCA9IHsgdXNlcjogc3RyaW5nOyBiYWNrdXA6IHN0cmluZzsgYml0Z286IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgTXBjU2FmZVJvb3QgPSB7IHVzZXI6IERlY3J5cHRlZE1wY1NhZmVSb290OyBiYWNrdXA6IERlY3J5cHRlZE1wY1NhZmVSb290OyBiaXRnbzogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBFZDI1NTE5TXVsdGlzaWdTYWZlUm9vdCA9IHtcbiAgdXNlcjogc3RyaW5nO1xuICBiYWNrdXA6IHsgcHJ2OiBzdHJpbmc7IGNoYWluQ29kZTogc3RyaW5nIH07XG4gIGJpdGdvOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZWNwMjU2azFNdWx0aXNpZ0NoaWxkS2V5cyA9IHtcbiAgdXNlcjogeyBwcnY6IHN0cmluZzsgcHViOiBzdHJpbmcgfTtcbiAgYmFja3VwOiB7IHBydjogc3RyaW5nOyBwdWI6IHN0cmluZyB9O1xuICBiaXRnbzogeyBwdWI6IHN0cmluZyB9O1xufTtcblxuZXhwb3J0IHR5cGUgRWNkc2FNcGNDaGlsZEtleXMgPSB7XG4gIGNvbW1vbktleWNoYWluOiBzdHJpbmc7XG4gIHVzZXI6IHN0cmluZztcbiAgYmFja3VwOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBFZGRzYU1wY0NoaWxkS2V5cyA9IEVjZHNhTXBjQ2hpbGRLZXlzO1xuXG4vKipcbiAqIEEgaGFyZGVuZWQgKFNMSVAtMDAxMCkgZWQyNTUxOSBjaGlsZC4gVGhlIGBraW5kYCBkaXNjcmltaW5hdG9yIHByZXZlbnRzIGEgcmF3IHNlZWQgZnJvbSBiZWluZ1xuICogbWlzdGFrZW4gZm9yIGFuIGV4dGVuZGVkIGtleSBkb3duc3RyZWFtIOKAlCBib3RoIGFyZSAzMi1ieXRlIHZhbHVlcyB0aGF0IGBpc1ZhbGlkUHViYCB3b3VsZCBhY2NlcHQuXG4gKi9cbmV4cG9ydCB0eXBlIFNhZmVFZDI1NTE5U2VlZEtleSA9IHtcbiAgcmVhZG9ubHkga2luZDogJ3NlZWQnO1xuICByZWFkb25seSBzZWVkOiBzdHJpbmc7IC8vIDMyLWJ5dGUgY2hpbGQgc2VlZCAoaGV4KSDigJQgdGhlIHNpZ25lciBpbnB1dFxuICByZWFkb25seSBwdWI6IHN0cmluZzsgLy8gMzItYnl0ZSBwdWJsaWMga2V5IChoZXgpXG59O1xuXG4vKipcbiAqIEEgc29mdCAoQklQMzItRWQyNTUxOSkgZWQyNTUxOSBjaGlsZC4gTm8gMzItYnl0ZSBzZWVkIG1hcHMgYmFjayB0byBhIHNvZnQtZGVyaXZlZCBjaGlsZCwgc28gdGhlXG4gKiBzaWduZXIgbmVlZHMgYm90aCBoYWx2ZXMgZGlyZWN0bHk6IGBrTGAgKHRoZSBjbGFtcGVkIHNjYWxhcikgYW5kIGBrUmAgKHRoZSBub25jZSBwcmVmaXgpLlxuICovXG5leHBvcnQgdHlwZSBTYWZlRWQyNTUxOUV4dGVuZGVkS2V5ID0geyByZWFkb25seSBraW5kOiAnZXh0ZW5kZWQnIH0gJiBFZDI1NTE5RXh0ZW5kZWRLZXlQYXJ0czxzdHJpbmc+OyAvLyBoZXhcblxuLyoqIFRoZSB0aHJlZSBlZDI1NTE5IGNvLXNpZ25lciBjaGlsZHJlbi4gQml0R28gaXMgcHViLW9ubHk6IGl0cyBwcml2YXRlIGtleSBzdGF5cyBpbiB0aGUgSFNNLiAqL1xuZXhwb3J0IHR5cGUgRWQyNTUxOU11bHRpc2lnQ2hpbGRLZXlzID0ge1xuICB1c2VyOiBTYWZlRWQyNTUxOVNlZWRLZXk7XG4gIGJhY2t1cDogU2FmZUVkMjU1MTlFeHRlbmRlZEtleTtcbiAgYml0Z286IHsgcmVhZG9ubHkgcHViOiBzdHJpbmcgfTtcbn07XG5cbmV4cG9ydCB0eXBlIERlcml2ZWRTYWZlV2FsbGV0S2V5cyA9XG4gIHwgeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnOyBwYXRoOiBzdHJpbmc7IGtleXM6IFNlY3AyNTZrMU11bHRpc2lnQ2hpbGRLZXlzIH1cbiAgfCB7IHNsb3Q6ICdlY2RzYU1wYyc7IHBhdGg6IHN0cmluZzsga2V5czogRWNkc2FNcGNDaGlsZEtleXMgfVxuICB8IHsgc2xvdDogJ2VkZHNhTXBjJzsgcGF0aDogc3RyaW5nOyBrZXlzOiBFZGRzYU1wY0NoaWxkS2V5cyB9XG4gIHwgeyBzbG90OiAnZWQyNTUxOU11bHRpc2lnJzsgcGF0aDogc3RyaW5nOyBrZXlzOiBFZDI1NTE5TXVsdGlzaWdDaGlsZEtleXMgfTtcblxuZXhwb3J0IHR5cGUgU2VjcFNhZmVSZWNvdmVyS2V5UGFyYW1zID0ge1xuICBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnO1xuICB1c2VyS2V5OiBzdHJpbmc7XG4gIGJhY2t1cEtleTogc3RyaW5nO1xuICBiaXRnb0tleTogc3RyaW5nO1xuICB3YWxsZXRQYXNzcGhyYXNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBTbG90LTIgKGVkMjU1MTlNdWx0aXNpZykgc2FmZSByZWNvdmVyeSBrZXkgcGFyYW1zLiBBIGRpc2NyaW1pbmF0ZWQgdW5pb24gb24gYG1vZGVgLCBzbyB0aGUgaW52YWxpZFxuICogY29tYm9zIGFyZSBub3QgcmVwcmVzZW50YWJsZTogc2lnbmVkIG1vZGUgYWx3YXlzIGNhcnJpZXMgdGhlIGxhenkgc2lnbmVyIGFuZCBuZXZlciBhIGBiYWNrdXBLZXlgLFxuICogdW5zaWduZWQgbW9kZSBhbHdheXMgY2FycmllcyB0aGUgZW5jb2RlZCBgYmFja3VwS2V5YCBhbmQgbmV2ZXIgYSBzaWduZXIgb3IgcGFzc3BocmFzZS5cbiAqXG4gKiBgcm9vdEFkZHJlc3NgIGlzIHRoZSB3YWxsZXQncyBvbi1jaGFpbiBhZGRyZXNzLiBGb3IgQUxHTyBpdCdzIHRoZSAyLW9mLTMgbXVsdGlzaWcgYWRkcmVzcyBvdmVyIHRoZVxuICogdGhyZWUgY2hpbGQgcHVicyDigJQgZGVyaXZhYmxlIGhlcmUsIGJ1dCBgcmVjb3ZlcigpYCBzdGlsbCByZXF1aXJlcyBpdCBhcyBpbnB1dC4gTm90ZSB0aGlzIGlzXG4gKiAqZGVyaXZlZCosIG5vdCBpbmRlcGVuZGVudGx5IHZlcmlmaWVkIGFnYWluc3QgYSBrbm93biB3YWxsZXQgYWRkcmVzczsgY2FsbGVycyB3aXRoIGEgcmVjb3JkZWRcbiAqIGFkZHJlc3Mgc2hvdWxkIGNyb3NzLWNoZWNrIGl0IHRoZW1zZWx2ZXMuIEZvciBIQkFSIHRoaXMgZmllbGQgaXMgb21pdHRlZCBzbyB0aGUgY2FsbGVyJ3NcbiAqIG5ldHdvcmstYXNzaWduZWQgYWNjb3VudCBJRCBpcyBwcmVzZXJ2ZWQgd2hlbiB0aGUga2V5IHBhcmFtcyBhcmUgc3ByZWFkIGludG8gYSByZWNvdmVyeSByZXF1ZXN0LlxuICovXG5leHBvcnQgdHlwZSBFZDI1NTE5U2FmZVJlY292ZXJLZXlQYXJhbXMgPVxuICB8IHtcbiAgICAgIHNsb3Q6ICdlZDI1NTE5TXVsdGlzaWcnO1xuICAgICAgbW9kZTogJ3NpZ25lZCc7XG4gICAgICB1c2VyS2V5OiBzdHJpbmc7XG4gICAgICBiaXRnb0tleTogc3RyaW5nO1xuICAgICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nO1xuICAgICAgcm9vdEFkZHJlc3M/OiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIExhenkgc2lnbmVyIGZvciB0aGUgc2VlZGxlc3MgYmFja3VwIGNoaWxkLiBUaGUgYmFja3VwIGNoaWxkIGhhcyBubyBzZWVkLCBzbyBpdCBjYW5ub3QgYmVcbiAgICAgICAqIHNlZWQtc2lnbmVkOyBhbmQgaXRzIHNpZ25hdHVyZSBtdXN0IGNvdmVyIGB0eC5ieXRlc1RvU2lnbigpYCwgd2hpY2ggb25seSBleGlzdHMgb25jZVxuICAgICAgICogYHJlY292ZXIoKWAgYnVpbGRzIHRoZSB0eC4gU28gaW5zdGVhZCBvZiBhIHByZS1tYWRlIHNpZ25hdHVyZSB3ZSBwYXNzIGEgY2xvc3VyZSB0aGF0IGhvbGRzXG4gICAgICAgKiB0aGUgcHJpdmF0ZSBga0xgL2BrUmAgYW5kIHNpZ25zIG9uIGRlbWFuZCDigJQgdGhlIHByaXZhdGUgaGFsdmVzIG5ldmVyIGxlYXZlIGl0LlxuICAgICAgICovXG4gICAgICBleHRlcm5hbEJhY2t1cFNpZ25lcjogRXh0ZXJuYWxFZDI1NTE5U2lnbmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICBzbG90OiAnZWQyNTUxOU11bHRpc2lnJztcbiAgICAgIG1vZGU6ICd1bnNpZ25lZCc7XG4gICAgICB1c2VyS2V5OiBzdHJpbmc7XG4gICAgICBiYWNrdXBLZXk6IHN0cmluZztcbiAgICAgIGJpdGdvS2V5OiBzdHJpbmc7XG4gICAgICByb290QWRkcmVzcz86IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBTYWZlUmVjb3ZlcktleVBhcmFtcyA9IFNlY3BTYWZlUmVjb3ZlcktleVBhcmFtcyB8IEVkMjU1MTlTYWZlUmVjb3ZlcktleVBhcmFtcztcblxuZXhwb3J0IHR5cGUgRGVjcnlwdGVkU2FmZVJvb3RzID0ge1xuICBzZWNwMjU2azFNdWx0aXNpZzogT25jaGFpblNhZmVSb290O1xuICBlZDI1NTE5TXVsdGlzaWc6IEVkMjU1MTlNdWx0aXNpZ1NhZmVSb290O1xuICBlY2RzYU1wYzogTXBjU2FmZVJvb3Q7XG4gIGVkZHNhTXBjOiBNcGNTYWZlUm9vdDtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWNyeXB0U2FmZUtleWNhcmQocGFyYW1zOiB7XG4gIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHVzZXJLZXlCb3g6IHN0cmluZztcbiAgYmFja3VwS2V5Qm94OiBzdHJpbmc7XG4gIGJpdGdvS2V5Qm94OiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59KTogUHJvbWlzZTxEZWNyeXB0ZWRTYWZlUm9vdHM+IHtcbiAgY29uc3QgeyBiaXRnbywgdXNlcktleUJveCwgYmFja3VwS2V5Qm94LCBiaXRnb0tleUJveCwgcGFzc3dvcmQgfSA9IHBhcmFtcztcblxuICBjb25zdCB1c2VyUm9vdHMgPSBwYXJzZVNhZmVLZXljYXJkQm94KHVzZXJLZXlCb3gpO1xuICBjb25zdCBiYWNrdXBSb290cyA9IHBhcnNlU2FmZUtleWNhcmRCb3goYmFja3VwS2V5Qm94KTtcbiAgY29uc3QgYml0Z29Sb290cyA9IHBhcnNlU2FmZUtleWNhcmRCb3goYml0Z29LZXlCb3gpO1xuXG4gIGNvbnN0IGRlY3J5cHRSb290ID0gYXN5bmMgKHJvb3Q6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBiaXRnby5kZWNyeXB0KHsgaW5wdXQ6IHJvb3QsIHBhc3N3b3JkIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbmNvcnJlY3RQYXNzd29yZEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCB0aGUgc2FmZSBrZXljYXJkIHdpdGggdGhlIHByb3ZpZGVkIHBhc3N3b3JkJywgZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVud3JhcE1wY1Jvb3QgPSAoZGVjcnlwdGVkOiBzdHJpbmcpOiBEZWNyeXB0ZWRNcGNTYWZlUm9vdCA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBwYXJzZVNhZmVNcGNLZXlFbnZlbG9wZXMoZGVjcnlwdGVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW5jb3JyZWN0UGFzc3dvcmRFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgdGhlIHNhZmUga2V5Y2FyZCB3aXRoIHRoZSBwcm92aWRlZCBwYXNzd29yZCcsIGUpO1xuICAgIH1cbiAgfTtcblxuICAvLyBPbmx5IGJveCBCJ3MgZWQyNTUxOU11bHRpc2lnIHNsb3QgbWF5IGNhcnJ5IHRoZSBkZXJpdmFibGUgYHsgcHJ2LCBjaGFpbkNvZGUgfWAgb2JqZWN0OyBldmVyeVxuICAvLyBvdGhlciBlbnRyeSDigJQgYWxsIG9mIGJveGVzIEEgYW5kIEMsIGFuZCBldmVyeSBub24tZWQyNTUxOSBzbG90IGluIGJveCBCIOKAlCBpcyBhIGJhcmUgc3RyaW5nIGFuZFxuICAvLyBmYWlscyBjbG9zZWQgaWYgaXQgY2FycmllcyB0aGUgb2JqZWN0IGluc3RlYWQuXG4gIGNvbnN0IHJlcXVpcmVCYXJlU3RyaW5nID0gKGVudHJ5OiBTYWZlS2V5Y2FyZFJvb3RFbnRyeSk6IHN0cmluZyA9PiB7XG4gICAgaWYgKEVkMjU1MTlDaGFpbkNvZGVFbnRyeUNvZGVjLmlzKGVudHJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVkMjU1MTkgY2hhaW4tY29kZSBlbnRyeSB3aGVyZSBhIGJhcmUgc3RyaW5nIHdhcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH07XG5cbiAgY29uc3QgZGVjcnlwdEVkMjU1MTlCYWNrdXAgPSBhc3luYyAoZW50cnk6IFNhZmVLZXljYXJkUm9vdEVudHJ5KTogUHJvbWlzZTx7IHBydjogc3RyaW5nOyBjaGFpbkNvZGU6IHN0cmluZyB9PiA9PiB7XG4gICAgaWYgKCFFZDI1NTE5Q2hhaW5Db2RlRW50cnlDb2RlYy5pcyhlbnRyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZWQyNTUxOSBiYWNrdXAgcm9vdCBtdXN0IGNhcnJ5IGEgY2hhaW4gY29kZScpO1xuICAgIH1cbiAgICByZXR1cm4geyBwcnY6IGF3YWl0IGRlY3J5cHRSb290KGVudHJ5LnBydiksIGNoYWluQ29kZTogZW50cnkuY2hhaW5Db2RlIH07XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBzZWNwMjU2azFNdWx0aXNpZzoge1xuICAgICAgdXNlcjogYXdhaXQgZGVjcnlwdFJvb3QocmVxdWlyZUJhcmVTdHJpbmcodXNlclJvb3RzLnNlY3AyNTZrMU11bHRpc2lnKSksXG4gICAgICBiYWNrdXA6IGF3YWl0IGRlY3J5cHRSb290KHJlcXVpcmVCYXJlU3RyaW5nKGJhY2t1cFJvb3RzLnNlY3AyNTZrMU11bHRpc2lnKSksXG4gICAgICBiaXRnbzogcmVxdWlyZUJhcmVTdHJpbmcoYml0Z29Sb290cy5zZWNwMjU2azFNdWx0aXNpZyksXG4gICAgfSxcbiAgICBlZDI1NTE5TXVsdGlzaWc6IHtcbiAgICAgIHVzZXI6IGF3YWl0IGRlY3J5cHRSb290KHJlcXVpcmVCYXJlU3RyaW5nKHVzZXJSb290cy5lZDI1NTE5TXVsdGlzaWcpKSxcbiAgICAgIGJhY2t1cDogYXdhaXQgZGVjcnlwdEVkMjU1MTlCYWNrdXAoYmFja3VwUm9vdHMuZWQyNTUxOU11bHRpc2lnKSxcbiAgICAgIGJpdGdvOiByZXF1aXJlQmFyZVN0cmluZyhiaXRnb1Jvb3RzLmVkMjU1MTlNdWx0aXNpZyksXG4gICAgfSxcbiAgICBlY2RzYU1wYzoge1xuICAgICAgdXNlcjogdW53cmFwTXBjUm9vdChhd2FpdCBkZWNyeXB0Um9vdChyZXF1aXJlQmFyZVN0cmluZyh1c2VyUm9vdHMuZWNkc2FNcGMpKSksXG4gICAgICBiYWNrdXA6IHVud3JhcE1wY1Jvb3QoYXdhaXQgZGVjcnlwdFJvb3QocmVxdWlyZUJhcmVTdHJpbmcoYmFja3VwUm9vdHMuZWNkc2FNcGMpKSksXG4gICAgICBiaXRnbzogcmVxdWlyZUJhcmVTdHJpbmcoYml0Z29Sb290cy5lY2RzYU1wYyksXG4gICAgfSxcbiAgICBlZGRzYU1wYzoge1xuICAgICAgdXNlcjogdW53cmFwTXBjUm9vdChhd2FpdCBkZWNyeXB0Um9vdChyZXF1aXJlQmFyZVN0cmluZyh1c2VyUm9vdHMuZWRkc2FNcGMpKSksXG4gICAgICBiYWNrdXA6IHVud3JhcE1wY1Jvb3QoYXdhaXQgZGVjcnlwdFJvb3QocmVxdWlyZUJhcmVTdHJpbmcoYmFja3VwUm9vdHMuZWRkc2FNcGMpKSksXG4gICAgICBiaXRnbzogcmVxdWlyZUJhcmVTdHJpbmcoYml0Z29Sb290cy5lZGRzYU1wYyksXG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIGEgU2FmZSB3YWxsZXQncyBjaGlsZCBrZXlzIGF0IHRoZSBCSVA0NCBwYXRoIGZvciBhIGdpdmVuIHNsb3QgYW5kIGFjY291bnQuXG4gKiBTdXBwb3J0cyBhbGwgZm91ciBzbG90czogYHNlY3AyNTZrMU11bHRpc2lnYCwgYGVkMjU1MTlNdWx0aXNpZ2AsIGBlY2RzYU1wY2AsIGFuZCBgZWRkc2FNcGNgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVyaXZlU2FmZVdhbGxldEtleXMocGFyYW1zOiB7XG4gIGNvaW46IHN0cmluZztcbiAgc2xvdDogUm9vdEtleVR5cGU7XG4gIGFjY291bnQ6IG51bWJlcjtcbiAgcm9vdHM6IERlY3J5cHRlZFNhZmVSb290cztcbn0pOiBQcm9taXNlPERlcml2ZWRTYWZlV2FsbGV0S2V5cz4ge1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIocGFyYW1zLmFjY291bnQpIHx8IHBhcmFtcy5hY2NvdW50IDwgMCB8fCBwYXJhbXMuYWNjb3VudCA+IE1BWF9CSVAzMl9JTkRFWCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZGVyaXZlU2FmZVdhbGxldEtleXM6IGludmFsaWQgYWNjb3VudCAnJHtwYXJhbXMuYWNjb3VudH0nYCk7XG4gIH1cblxuICBjb25zdCB7IGFjY291bnQsIHJvb3RzIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBhdGggPSBidWlsZFNhZmVCaXA0NFBhdGgoZ2V0U2FmZUJpcDQ0Q29pblR5cGUocGFyYW1zLmNvaW4pLCBwYXJhbXMuc2xvdCwgYWNjb3VudCk7XG4gIGNvbnN0IHsgY29pblR5cGUsIHNsb3RPcmRpbmFsIH0gPSBwYXJzZVNhZmVCaXA0NFBhdGgocGF0aCk7XG5cbiAgaWYgKHBhcmFtcy5zbG90ID09PSAnc2VjcDI1NmsxTXVsdGlzaWcnKSB7XG4gICAgcmV0dXJuIHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJywgcGF0aCwga2V5czogZGVyaXZlU2FmZUNoaWxkVHJpcGxldChyb290cy5zZWNwMjU2azFNdWx0aXNpZywgcGF0aCkgfTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2xvdCA9PT0gJ2VjZHNhTXBjJykge1xuICAgIGNvbnN0IHsgY29tbW9uS2V5Y2hhaW4sIHVzZXJDaGlsZCwgYmFja3VwQ2hpbGQgfSA9IGF3YWl0IERrbHNWcmZVdGlscy5kZXJpdmVTYWZlRWNkc2FNcGNDaGlsZCh7XG4gICAgICB1c2VyUm9vdDogcm9vdHMuZWNkc2FNcGMudXNlcixcbiAgICAgIGJhY2t1cFJvb3Q6IHJvb3RzLmVjZHNhTXBjLmJhY2t1cCxcbiAgICAgIGFjY291bnQsXG4gICAgICBjb2luVHlwZSxcbiAgICAgIHNhZmVTbG90T3JkaW5hbDogc2xvdE9yZGluYWwsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNsb3Q6ICdlY2RzYU1wYycsXG4gICAgICBwYXRoLFxuICAgICAga2V5czogeyBjb21tb25LZXljaGFpbiwgdXNlcjogdXNlckNoaWxkLCBiYWNrdXA6IGJhY2t1cENoaWxkIH0sXG4gICAgfTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2xvdCA9PT0gJ2VkZHNhTXBjJykge1xuICAgIGNvbnN0IHsgY29tbW9uS2V5Y2hhaW4sIHVzZXJDaGlsZCwgYmFja3VwQ2hpbGQgfSA9IGF3YWl0IE1wc1ZyZlV0aWxzLmRlcml2ZVNhZmVFZGRzYU1wY0NoaWxkKHtcbiAgICAgIHVzZXJSb290OiByb290cy5lZGRzYU1wYy51c2VyLFxuICAgICAgYmFja3VwUm9vdDogcm9vdHMuZWRkc2FNcGMuYmFja3VwLFxuICAgICAgYWNjb3VudCxcbiAgICAgIGNvaW5UeXBlLFxuICAgICAgc2FmZVNsb3RPcmRpbmFsOiBzbG90T3JkaW5hbCxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgc2xvdDogJ2VkZHNhTXBjJyxcbiAgICAgIHBhdGgsXG4gICAgICBrZXlzOiB7IGNvbW1vbktleWNoYWluLCB1c2VyOiB1c2VyQ2hpbGQsIGJhY2t1cDogYmFja3VwQ2hpbGQgfSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zbG90ID09PSAnZWQyNTUxOU11bHRpc2lnJykge1xuICAgIGNvbnN0IHJvb3QgPSByb290cy5lZDI1NTE5TXVsdGlzaWc7XG4gICAgY29uc3QgY29zaWduZXJQYXRoID0gdG9Tb2Z0VHdpblBhdGgocGF0aCk7XG5cbiAgICBjb25zdCB1c2VyID0gZGVyaXZlU2FmZUNoaWxkRWQyNTUxOUhhcmRlbmVkKHJvb3QudXNlciwgcGF0aCk7XG4gICAgY29uc3QgYmFja3VwID0gYXdhaXQgc29mdERlcml2ZUNoaWxkUHJ2RWQyNTUxOUF0UGF0aCh7XG4gICAgICBzZWVkU3RyS2V5OiByb290LmJhY2t1cC5wcnYsXG4gICAgICBjaGFpbkNvZGU6IHJvb3QuYmFja3VwLmNoYWluQ29kZSxcbiAgICAgIHBhdGg6IGNvc2lnbmVyUGF0aCxcbiAgICB9KTtcbiAgICBjb25zdCBiaXRnbyA9IGF3YWl0IHNvZnREZXJpdmVDaGlsZFB1YkVkMjU1MTlBdFBhdGgocm9vdC5iaXRnbywgY29zaWduZXJQYXRoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzbG90OiAnZWQyNTUxOU11bHRpc2lnJyxcbiAgICAgIHBhdGgsXG4gICAgICBrZXlzOiB7XG4gICAgICAgIHVzZXI6IHsga2luZDogJ3NlZWQnLCBzZWVkOiB1c2VyLnBydiwgcHViOiBkZWNvZGVFZDI1NTE5U3RyS2V5UHVibGljS2V5KHVzZXIucHViKS50b1N0cmluZygnaGV4JykgfSxcbiAgICAgICAgYmFja3VwOiB7XG4gICAgICAgICAga2luZDogJ2V4dGVuZGVkJyxcbiAgICAgICAgICBrTDogYmFja3VwLmtMLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBrUjogYmFja3VwLmtSLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBwdWI6IGJhY2t1cC5wdWIudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9LFxuICAgICAgICBiaXRnbzogeyBwdWI6IGJpdGdvLnRvU3RyaW5nKCdoZXgnKSB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBkZXJpdmVTYWZlV2FsbGV0S2V5czogc2xvdCAnJHtwYXJhbXMuc2xvdH0nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0YCk7XG59XG5cbi8qKlxuICogUGVyLWNvaW4gZW5jb2RlcnMgZm9yIHRoZSBgZWQyNTUxOU11bHRpc2lnYCBzbG90OiBlYWNoIHNsb3QtMiBjb2luIHJlLWVuY29kZXMgdGhlIHNhbWUgMzItYnl0ZVxuICogY2hpbGRyZW4gaW50byBpdHMgb3duIGFkZHJlc3Mvc2VlZCBzdHJpbmcgZm9ybWF0cy4gQSBjb2luIGFic2VudCBmcm9tIHRoZSByZWdpc3RyeSBpcyBub3QgeWV0XG4gKiBzdXBwb3J0ZWQgZm9yIHNsb3QtMiByZWNvdmVyeSAoeGxtIGlzIGEgZnV0dXJlIGFybSkuXG4gKi9cbmNvbnN0IEFMR09fRU5DT0RFUlMgPSB7XG4gIGVuY29kZVB1YjogZW5jb2RlQWxnb0tleSxcbiAgZW5jb2RlU2VlZDogZW5jb2RlQWxnb0tleSxcbiAgZGVyaXZlUm9vdEFkZHJlc3M6ICh1c2VyUHViOiBCdWZmZXIsIGJhY2t1cFB1YjogQnVmZmVyLCBiaXRnb1B1YjogQnVmZmVyKSA9PlxuICAgIGFsZ29NdWx0aXNpZ0FkZHJlc3MoMSwgMiwgW3VzZXJQdWIsIGJhY2t1cFB1YiwgYml0Z29QdWJdKSxcbn07XG5cbmNvbnN0IEVEMjU1MTlfTVVMVElTSUdfQ09JTl9FTkNPREVSUzogUmVjb3JkPFxuICBzdHJpbmcsXG4gIHwge1xuICAgICAgZW5jb2RlUHViOiAoYnl0ZXM6IEJ1ZmZlcikgPT4gc3RyaW5nO1xuICAgICAgZW5jb2RlU2VlZDogKGJ5dGVzOiBCdWZmZXIpID0+IHN0cmluZztcbiAgICAgIGRlcml2ZVJvb3RBZGRyZXNzPzogKHVzZXJQdWI6IEJ1ZmZlciwgYmFja3VwUHViOiBCdWZmZXIsIGJpdGdvUHViOiBCdWZmZXIpID0+IHN0cmluZztcbiAgICB9XG4gIHwgdW5kZWZpbmVkXG4+ID0ge1xuICBhbGdvOiBBTEdPX0VOQ09ERVJTLFxuICB0YWxnbzogQUxHT19FTkNPREVSUyxcbiAgaGJhcjogeyBlbmNvZGVQdWI6IGVuY29kZUhiYXJQdWJsaWNLZXlEZXIsIGVuY29kZVNlZWQ6IGVuY29kZUhiYXJQcml2YXRlS2V5RGVyIH0sXG4gIHRoYmFyOiB7IGVuY29kZVB1YjogZW5jb2RlSGJhclB1YmxpY0tleURlciwgZW5jb2RlU2VlZDogZW5jb2RlSGJhclByaXZhdGVLZXlEZXIgfSxcbn07XG5cbi8qKlxuICogVGhlIHJlcXVlc3Qgc2hhcGUgZm9yIGBidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zYC4gVGhlIGBzbG90YCBsaXRlcmFsIGlzIHRoZSBkaXNjcmltaW5hbnQgdGhhdFxuICogdGllcyBlYWNoIHNsb3QgdG8gaXRzIG93biBga2V5c2Agc2hhcGUsIHNvIFR5cGVTY3JpcHQgbmFycm93cyBgcGFyYW1zLmtleXNgIGF1dG9tYXRpY2FsbHkgYW5kIGFcbiAqIHNsb3QgYWRkZWQgd2l0aG91dCBhIGJyYW5jaCBpcyBhIGNvbXBpbGUgZXJyb3IgcmF0aGVyIHRoYW4gYSBzaWxlbnQgY2FzdC5cbiAqL1xuZXhwb3J0IHR5cGUgU2FmZVJlY292ZXJLZXlQYXJhbXNSZXF1ZXN0ID0ge1xuICBiaXRnbzogQml0R29CYXNlO1xuICBjb2luOiBzdHJpbmc7XG4gIG1vZGU6ICdzaWduZWQnIHwgJ3Vuc2lnbmVkJztcbn0gJiAoXG4gIHwgeyBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnOyBrZXlzOiBTZWNwMjU2azFNdWx0aXNpZ0NoaWxkS2V5cyB9XG4gIHwgeyBzbG90OiAnZWQyNTUxOU11bHRpc2lnJzsga2V5czogRWQyNTUxOU11bHRpc2lnQ2hpbGRLZXlzIH1cbiAgfCB7IHNsb3Q6ICdlY2RzYU1wYyc7IGtleXM6IEVjZHNhTXBjQ2hpbGRLZXlzIH1cbiAgfCB7IHNsb3Q6ICdlZGRzYU1wYyc7IGtleXM6IEVkZHNhTXBjQ2hpbGRLZXlzIH1cbik7XG5cbi8qKlxuICogQnVpbGRzIHRoZSBrZXkgZmllbGRzIGBjb2luLnJlY292ZXIoKWAgZXhwZWN0cyBmcm9tIGRlcml2ZWQgU2FmZSBjaGlsZCBrZXlzLlxuICogU3VwcG9ydHMgYHNlY3AyNTZrMU11bHRpc2lnYCAoc2xvdCAxKSBhbmQgYGVkMjU1MTlNdWx0aXNpZ2AgKHNsb3QgMik7IHRoZSBNUEMgc2xvdHMgZmFpbCBjbG9zZWQuXG4gKiBTaWduZWQgbW9kZSByZS1lbmNyeXB0cyB0aGUgY2hpbGQgc2VjcmV0cyB1bmRlciBhIGZyZXNoIGVwaGVtZXJhbCBwYXNzcGhyYXNlICh2MS9TSkNMKTsgdW5zaWduZWRcbiAqIG1vZGUgcmV0dXJucyBwdWJzLiBXaGVyZSBzdXBwb3J0ZWQsIGByb290QWRkcmVzc2AgaXMgZGVyaXZlZCBmcm9tIHRoZSBjaGlsZCBrZXlzLCBub3QgaW5kZXBlbmRlbnRseVxuICogdmVyaWZpZWQ7IG90aGVyd2lzZSBpdCBpcyBvbWl0dGVkIHNvIHRoZSBjYWxsZXIgY2FuIHN1cHBseSBpdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkU2FmZVJlY292ZXJLZXlQYXJhbXMoXG4gIHBhcmFtczogRXh0cmFjdDxTYWZlUmVjb3ZlcktleVBhcmFtc1JlcXVlc3QsIHsgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJyB9PlxuKTogUHJvbWlzZTxTZWNwU2FmZVJlY292ZXJLZXlQYXJhbXM+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkU2FmZVJlY292ZXJLZXlQYXJhbXMoXG4gIHBhcmFtczogRXh0cmFjdDxTYWZlUmVjb3ZlcktleVBhcmFtc1JlcXVlc3QsIHsgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycgfT5cbik6IFByb21pc2U8RWQyNTUxOVNhZmVSZWNvdmVyS2V5UGFyYW1zPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zKHBhcmFtczogU2FmZVJlY292ZXJLZXlQYXJhbXNSZXF1ZXN0KTogUHJvbWlzZTxTYWZlUmVjb3ZlcktleVBhcmFtcz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtcyhwYXJhbXM6IFNhZmVSZWNvdmVyS2V5UGFyYW1zUmVxdWVzdCk6IFByb21pc2U8U2FmZVJlY292ZXJLZXlQYXJhbXM+IHtcbiAgY29uc3QgeyBiaXRnbywgbW9kZSB9ID0gcGFyYW1zO1xuXG4gIGlmIChwYXJhbXMuc2xvdCA9PT0gJ2VkMjU1MTlNdWx0aXNpZycpIHtcbiAgICByZXR1cm4gYnVpbGRFZDI1NTE5TXVsdGlzaWdSZWNvdmVyS2V5UGFyYW1zKGJpdGdvLCBwYXJhbXMuY29pbiwgcGFyYW1zLmtleXMsIG1vZGUpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zbG90ID09PSAnc2VjcDI1NmsxTXVsdGlzaWcnKSB7XG4gICAgY29uc3Qga2V5cyA9IHBhcmFtcy5rZXlzO1xuXG4gICAgaWYgKG1vZGUgPT09ICd1bnNpZ25lZCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsXG4gICAgICAgIHVzZXJLZXk6IGtleXMudXNlci5wdWIsXG4gICAgICAgIGJhY2t1cEtleToga2V5cy5iYWNrdXAucHViLFxuICAgICAgICBiaXRnb0tleToga2V5cy5iaXRnby5wdWIsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJQcnYgPSBiaXAzMi5mcm9tQmFzZTU4KGtleXMudXNlci5wcnYpO1xuICAgIGNvbnN0IGJhY2t1cFBydiA9IGJpcDMyLmZyb21CYXNlNTgoa2V5cy5iYWNrdXAucHJ2KTtcbiAgICBpZiAoIXVzZXJQcnYucHJpdmF0ZUtleSB8fCAhYmFja3VwUHJ2LnByaXZhdGVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtczoga2V5cy51c2VyLnBydiBhbmQga2V5cy5iYWNrdXAucHJ2IG11c3QgYmUgcHJpdmF0ZSB4cHJ2cycpO1xuICAgIH1cblxuICAgIGNvbnN0IHdhbGxldFBhc3NwaHJhc2UgPSByYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IFt1c2VyS2V5LCBiYWNrdXBLZXldID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgYml0Z28uZW5jcnlwdCh7IGlucHV0OiBrZXlzLnVzZXIucHJ2LCBwYXNzd29yZDogd2FsbGV0UGFzc3BocmFzZSwgZW5jcnlwdGlvblZlcnNpb246IDEgfSksXG4gICAgICBiaXRnby5lbmNyeXB0KHsgaW5wdXQ6IGtleXMuYmFja3VwLnBydiwgcGFzc3dvcmQ6IHdhbGxldFBhc3NwaHJhc2UsIGVuY3J5cHRpb25WZXJzaW9uOiAxIH0pLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsXG4gICAgICB1c2VyS2V5LFxuICAgICAgYmFja3VwS2V5LFxuICAgICAgYml0Z29LZXk6IGtleXMuYml0Z28ucHViLFxuICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICB9O1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKGBidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zOiBzbG90ICcke3BhcmFtcy5zbG90fScgaXMgbm90IHN1cHBvcnRlZCB5ZXRgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRFZDI1NTE5TXVsdGlzaWdSZWNvdmVyS2V5UGFyYW1zKFxuICBiaXRnbzogQml0R29CYXNlLFxuICBjb2luOiBzdHJpbmcsXG4gIGtleXM6IEVkMjU1MTlNdWx0aXNpZ0NoaWxkS2V5cyxcbiAgbW9kZTogJ3NpZ25lZCcgfCAndW5zaWduZWQnXG4pOiBQcm9taXNlPEVkMjU1MTlTYWZlUmVjb3ZlcktleVBhcmFtcz4ge1xuICBjb25zdCBlbmNvZGVycyA9IEVEMjU1MTlfTVVMVElTSUdfQ09JTl9FTkNPREVSU1tjb2luXTtcbiAgaWYgKCFlbmNvZGVycykge1xuICAgIHRocm93IG5ldyBFcnJvcihgYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtczogY29pbiAnJHtjb2lufScgZWQyNTUxOU11bHRpc2lnIGlzIG5vdCBzdXBwb3J0ZWQgeWV0YCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHB1YiBvZiBba2V5cy51c2VyLnB1Yiwga2V5cy5iYWNrdXAucHViLCBrZXlzLmJpdGdvLnB1Yl0pIHtcbiAgICAvLyBzdHJpY3QgaGV4LCBub3QgbGVuZ3RoLW9ubHk6IEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpIHRydW5jYXRlcyBhdCB0aGUgZmlyc3QgYmFkIHBhaXIsIHNvIGFcbiAgICAvLyBsZW5ndGggY2hlY2sgYWxvbmUgd291bGQgYWNjZXB0IHRyYWlsaW5nIGdhcmJhZ2VcbiAgICBpZiAoIS9eWzAtOWEtZl17NjR9JC9pLnRlc3QocHViKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zOiBlZDI1NTE5IGNoaWxkIHB1YmxpYyBrZXlzIG11c3QgYmUgMzIgYnl0ZXMnKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB1c2VyUHViID0gQnVmZmVyLmZyb20oa2V5cy51c2VyLnB1YiwgJ2hleCcpO1xuICBjb25zdCBiYWNrdXBQdWIgPSBCdWZmZXIuZnJvbShrZXlzLmJhY2t1cC5wdWIsICdoZXgnKTtcbiAgY29uc3QgYml0Z29QdWIgPSBCdWZmZXIuZnJvbShrZXlzLmJpdGdvLnB1YiwgJ2hleCcpO1xuXG4gIC8vIFRoZSByb290IGFkZHJlc3MgaXMgZGVyaXZhYmxlIGZyb20gY2hpbGQgcHVicyBmb3IgQUxHTyAodmVyc2lvbi0xIDItb2YtMyBtdWx0aXNpZyksIGJ1dFxuICAvLyBub3QgZm9yIEhCQVIgKEhlZGVyYSBhY2NvdW50IElEcyBhcmUgbmV0d29yay1hc3NpZ25lZCkuIEVhY2ggY29pbiBkZWNsYXJlcywgdmlhIGl0cyByZWdpc3RyeVxuICAvLyBlbnRyeSwgd2hldGhlciBpdCBjYW4gZGVyaXZlIG9uZTsgdGhlIGNhbGxlciBzdXBwbGllcyBpdCBvdGhlcndpc2UuXG4gIGNvbnN0IHJvb3RBZGRyZXNzID0gZW5jb2RlcnMuZGVyaXZlUm9vdEFkZHJlc3M/Lih1c2VyUHViLCBiYWNrdXBQdWIsIGJpdGdvUHViKTtcbiAgY29uc3Qgcm9vdEFkZHJlc3NQYXJhbXMgPSByb290QWRkcmVzcyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHJvb3RBZGRyZXNzIH07XG5cbiAgaWYgKG1vZGUgPT09ICd1bnNpZ25lZCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsXG4gICAgICBtb2RlOiAndW5zaWduZWQnLFxuICAgICAgdXNlcktleTogZW5jb2RlcnMuZW5jb2RlUHViKHVzZXJQdWIpLFxuICAgICAgYmFja3VwS2V5OiBlbmNvZGVycy5lbmNvZGVQdWIoYmFja3VwUHViKSxcbiAgICAgIGJpdGdvS2V5OiBlbmNvZGVycy5lbmNvZGVQdWIoYml0Z29QdWIpLFxuICAgICAgLi4ucm9vdEFkZHJlc3NQYXJhbXMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRoZSB1c2VyIGNoaWxkIGlzIGEgaGFyZGVuZWQgU0xJUC0wMDEwIHNlZWQsIHNvIGl0IHJlLWVuY3J5cHRzIGV4YWN0bHkgbGlrZSBzbG90IDEuIFRoZSBiYWNrdXBcbiAgLy8gY2hpbGQgaXMgYSBzZWVkbGVzcyBzb2Z0IGV4dGVuZGVkIGtleTogaXQgY2Fubm90IGJlIHJlLWVuY3J5cHRlZCBhcyBhIHNlZWQsIHNvIGl0IGJlY29tZXMgYSBsYXp5XG4gIC8vIGV4dGVybmFsIHNpZ25lciBvdmVyIHRoZSB0eCBieXRlcyAoV0NOLTI4OTUncyBleHRlbmRlZC1rZXkgc2lnbmVyLCBpbnZva2VkIGJ5IHRoZSBjb2luKS5cbiAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9IHJhbmRvbUJ5dGVzKDMyKS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHVzZXJLZXkgPSBhd2FpdCBiaXRnby5lbmNyeXB0KHtcbiAgICBpbnB1dDogZW5jb2RlcnMuZW5jb2RlU2VlZChCdWZmZXIuZnJvbShrZXlzLnVzZXIuc2VlZCwgJ2hleCcpKSxcbiAgICBwYXNzd29yZDogd2FsbGV0UGFzc3BocmFzZSxcbiAgICBlbmNyeXB0aW9uVmVyc2lvbjogMSxcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzbG90OiAnZWQyNTUxOU11bHRpc2lnJyxcbiAgICBtb2RlOiAnc2lnbmVkJyxcbiAgICB1c2VyS2V5LFxuICAgIGJpdGdvS2V5OiBlbmNvZGVycy5lbmNvZGVQdWIoYml0Z29QdWIpLFxuICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgLi4ucm9vdEFkZHJlc3NQYXJhbXMsXG4gICAgZXh0ZXJuYWxCYWNrdXBTaWduZXI6IHtcbiAgICAgIHB1YmxpY0tleToga2V5cy5iYWNrdXAucHViLFxuICAgICAgc2lnbjogYXN5bmMgKG1lc3NhZ2UpID0+ICh7XG4gICAgICAgIHNpZ25hdHVyZTogKFxuICAgICAgICAgIGF3YWl0IHNpZ25FZDI1NTE5RXh0ZW5kZWQoXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShtZXNzYWdlKSxcbiAgICAgICAgICAgIEJ1ZmZlci5mcm9tKGtleXMuYmFja3VwLmtMLCAnaGV4JyksXG4gICAgICAgICAgICBCdWZmZXIuZnJvbShrZXlzLmJhY2t1cC5rUiwgJ2hleCcpXG4gICAgICAgICAgKVxuICAgICAgICApLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIH0pLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { RootKeyType } from '@bitgo/public-types';
2
+ import { IBaseCoin } from '../baseCoin';
3
+ import { BitGoBase } from '../bitgoBase';
4
+ /**
5
+ * Canonical order of the safe root slots. Shared by safe minting (Safes.createSafeKeys) and
6
+ * passkey register/remove (Safe) so both iterate the slots identically.
7
+ * @experimental
8
+ */
9
+ export declare const SAFE_ROOT_SLOTS: RootKeyType[];
10
+ /**
11
+ * Coin used to route a given root's key operations (see ROOT_COIN_BY_NETWORK).
12
+ * @experimental
13
+ */
14
+ export declare function coinForRoot(bitgo: BitGoBase, slot: RootKeyType): IBaseCoin;
15
+ //# sourceMappingURL=rootCoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootCoin.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/rootCoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,EAAqE,CAAC;AA4B/G;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SAFE_ROOT_SLOTS = void 0;
4
+ exports.coinForRoot = coinForRoot;
5
+ const common_1 = require("../../common");
6
+ /**
7
+ * Canonical order of the safe root slots. Shared by safe minting (Safes.createSafeKeys) and
8
+ * passkey register/remove (Safe) so both iterate the slots identically.
9
+ * @experimental
10
+ */
11
+ exports.SAFE_ROOT_SLOTS = ['secp256k1Multisig', 'ed25519Multisig', 'ecdsaMpc', 'eddsaMpc'];
12
+ /**
13
+ * Representative coin per root slot, by network. Safe roots are curve/scheme-scoped, not
14
+ * coin-scoped — WP stamps `curve` server-side from the coin's key curve, so any coin of the
15
+ * right (curve, scheme) works. These are stable, always-available choices used only to route
16
+ * the key ceremony; the resulting root is interchangeable across coins of the slot.
17
+ * @experimental
18
+ */
19
+ const ROOT_COIN_BY_NETWORK = {
20
+ mainnet: {
21
+ // multisig roots
22
+ secp256k1Multisig: 'btc',
23
+ ed25519Multisig: 'xlm',
24
+ // MPC roots
25
+ ecdsaMpc: 'eth',
26
+ eddsaMpc: 'sol',
27
+ },
28
+ testnet: {
29
+ // multisig roots
30
+ secp256k1Multisig: 'tbtc',
31
+ ed25519Multisig: 'txlm',
32
+ // MPC roots
33
+ ecdsaMpc: 'hteth',
34
+ eddsaMpc: 'tsol',
35
+ },
36
+ };
37
+ /**
38
+ * Coin used to route a given root's key operations (see ROOT_COIN_BY_NETWORK).
39
+ * @experimental
40
+ */
41
+ function coinForRoot(bitgo, slot) {
42
+ // V1Network is exactly 'bitcoin' | 'testnet', so this branch is exhaustive over every
43
+ // environment: 'bitcoin' is mainnet and every other value is a testnet.
44
+ const network = common_1.Environments[bitgo.getEnv()].network === 'bitcoin' ? 'mainnet' : 'testnet';
45
+ return bitgo.coin(ROOT_COIN_BY_NETWORK[network][slot]);
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdENvaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9yb290Q29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwQ0Esa0NBS0M7QUE5Q0QseUNBQTRDO0FBSTVDOzs7O0dBSUc7QUFDVSxRQUFBLGVBQWUsR0FBa0IsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFL0c7Ozs7OztHQU1HO0FBQ0gsTUFBTSxvQkFBb0IsR0FBK0Q7SUFDdkYsT0FBTyxFQUFFO1FBQ1AsaUJBQWlCO1FBQ2pCLGlCQUFpQixFQUFFLEtBQUs7UUFDeEIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsWUFBWTtRQUNaLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLEtBQUs7S0FDaEI7SUFDRCxPQUFPLEVBQUU7UUFDUCxpQkFBaUI7UUFDakIsaUJBQWlCLEVBQUUsTUFBTTtRQUN6QixlQUFlLEVBQUUsTUFBTTtRQUN2QixZQUFZO1FBQ1osUUFBUSxFQUFFLE9BQU87UUFDakIsUUFBUSxFQUFFLE1BQU07S0FDakI7Q0FDRixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLEtBQWdCLEVBQUUsSUFBaUI7SUFDN0Qsc0ZBQXNGO0lBQ3RGLHdFQUF3RTtJQUN4RSxNQUFNLE9BQU8sR0FBRyxxQkFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb290S2V5VHlwZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IElCYXNlQ29pbiB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5cbi8qKlxuICogQ2Fub25pY2FsIG9yZGVyIG9mIHRoZSBzYWZlIHJvb3Qgc2xvdHMuIFNoYXJlZCBieSBzYWZlIG1pbnRpbmcgKFNhZmVzLmNyZWF0ZVNhZmVLZXlzKSBhbmRcbiAqIHBhc3NrZXkgcmVnaXN0ZXIvcmVtb3ZlIChTYWZlKSBzbyBib3RoIGl0ZXJhdGUgdGhlIHNsb3RzIGlkZW50aWNhbGx5LlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY29uc3QgU0FGRV9ST09UX1NMT1RTOiBSb290S2V5VHlwZVtdID0gWydzZWNwMjU2azFNdWx0aXNpZycsICdlZDI1NTE5TXVsdGlzaWcnLCAnZWNkc2FNcGMnLCAnZWRkc2FNcGMnXTtcblxuLyoqXG4gKiBSZXByZXNlbnRhdGl2ZSBjb2luIHBlciByb290IHNsb3QsIGJ5IG5ldHdvcmsuIFNhZmUgcm9vdHMgYXJlIGN1cnZlL3NjaGVtZS1zY29wZWQsIG5vdFxuICogY29pbi1zY29wZWQg4oCUIFdQIHN0YW1wcyBgY3VydmVgIHNlcnZlci1zaWRlIGZyb20gdGhlIGNvaW4ncyBrZXkgY3VydmUsIHNvIGFueSBjb2luIG9mIHRoZVxuICogcmlnaHQgKGN1cnZlLCBzY2hlbWUpIHdvcmtzLiBUaGVzZSBhcmUgc3RhYmxlLCBhbHdheXMtYXZhaWxhYmxlIGNob2ljZXMgdXNlZCBvbmx5IHRvIHJvdXRlXG4gKiB0aGUga2V5IGNlcmVtb255OyB0aGUgcmVzdWx0aW5nIHJvb3QgaXMgaW50ZXJjaGFuZ2VhYmxlIGFjcm9zcyBjb2lucyBvZiB0aGUgc2xvdC5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuY29uc3QgUk9PVF9DT0lOX0JZX05FVFdPUks6IFJlY29yZDwnbWFpbm5ldCcgfCAndGVzdG5ldCcsIFJlY29yZDxSb290S2V5VHlwZSwgc3RyaW5nPj4gPSB7XG4gIG1haW5uZXQ6IHtcbiAgICAvLyBtdWx0aXNpZyByb290c1xuICAgIHNlY3AyNTZrMU11bHRpc2lnOiAnYnRjJyxcbiAgICBlZDI1NTE5TXVsdGlzaWc6ICd4bG0nLFxuICAgIC8vIE1QQyByb290c1xuICAgIGVjZHNhTXBjOiAnZXRoJyxcbiAgICBlZGRzYU1wYzogJ3NvbCcsXG4gIH0sXG4gIHRlc3RuZXQ6IHtcbiAgICAvLyBtdWx0aXNpZyByb290c1xuICAgIHNlY3AyNTZrMU11bHRpc2lnOiAndGJ0YycsXG4gICAgZWQyNTUxOU11bHRpc2lnOiAndHhsbScsXG4gICAgLy8gTVBDIHJvb3RzXG4gICAgZWNkc2FNcGM6ICdodGV0aCcsXG4gICAgZWRkc2FNcGM6ICd0c29sJyxcbiAgfSxcbn07XG5cbi8qKlxuICogQ29pbiB1c2VkIHRvIHJvdXRlIGEgZ2l2ZW4gcm9vdCdzIGtleSBvcGVyYXRpb25zIChzZWUgUk9PVF9DT0lOX0JZX05FVFdPUkspLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29pbkZvclJvb3QoYml0Z286IEJpdEdvQmFzZSwgc2xvdDogUm9vdEtleVR5cGUpOiBJQmFzZUNvaW4ge1xuICAvLyBWMU5ldHdvcmsgaXMgZXhhY3RseSAnYml0Y29pbicgfCAndGVzdG5ldCcsIHNvIHRoaXMgYnJhbmNoIGlzIGV4aGF1c3RpdmUgb3ZlciBldmVyeVxuICAvLyBlbnZpcm9ubWVudDogJ2JpdGNvaW4nIGlzIG1haW5uZXQgYW5kIGV2ZXJ5IG90aGVyIHZhbHVlIGlzIGEgdGVzdG5ldC5cbiAgY29uc3QgbmV0d29yayA9IEVudmlyb25tZW50c1tiaXRnby5nZXRFbnYoKV0ubmV0d29yayA9PT0gJ2JpdGNvaW4nID8gJ21haW5uZXQnIDogJ3Rlc3RuZXQnO1xuICByZXR1cm4gYml0Z28uY29pbihST09UX0NPSU5fQllfTkVUV09SS1tuZXR3b3JrXVtzbG90XSk7XG59XG4iXX0=