@bitgo/abstract-utxo 12.4.4 → 12.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +10 -2
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +29 -37
  4. package/dist/cjs/src/address/fixedScript.d.ts +4 -4
  5. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
  6. package/dist/cjs/src/address/fixedScript.js +4 -3
  7. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  8. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  9. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +3 -4
  10. package/dist/cjs/src/impl/bch/bch.d.ts +15 -1
  11. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -1
  12. package/dist/cjs/src/impl/bch/bch.js +30 -6
  13. package/dist/cjs/src/impl/btc/index.d.ts +2 -0
  14. package/dist/cjs/src/impl/btc/index.d.ts.map +1 -1
  15. package/dist/cjs/src/impl/btc/index.js +3 -1
  16. package/dist/cjs/src/impl/btc/inscriptionBuilder.js +4 -4
  17. package/dist/cjs/src/impl/btc/tbtcstx.d.ts +10 -0
  18. package/dist/cjs/src/impl/btc/tbtcstx.d.ts.map +1 -0
  19. package/dist/cjs/src/impl/btc/tbtcstx.js +18 -0
  20. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts +9 -0
  21. package/dist/cjs/src/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  22. package/dist/cjs/src/impl/btc/tbtcstxprivate1.js +15 -0
  23. package/dist/cjs/src/impl/zec/address.d.ts +73 -0
  24. package/dist/cjs/src/impl/zec/address.d.ts.map +1 -0
  25. package/dist/cjs/src/impl/zec/address.js +120 -0
  26. package/dist/cjs/src/impl/zec/index.d.ts +3 -0
  27. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -1
  28. package/dist/cjs/src/impl/zec/index.js +4 -1
  29. package/dist/cjs/src/impl/zec/recipients.d.ts +85 -0
  30. package/dist/cjs/src/impl/zec/recipients.d.ts.map +1 -0
  31. package/dist/cjs/src/impl/zec/recipients.js +94 -0
  32. package/dist/cjs/src/impl/zec/types.d.ts +3 -0
  33. package/dist/cjs/src/impl/zec/types.d.ts.map +1 -0
  34. package/dist/cjs/src/impl/zec/types.js +3 -0
  35. package/dist/cjs/src/impl/zec/zec.d.ts +14 -1
  36. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -1
  37. package/dist/cjs/src/impl/zec/zec.js +17 -1
  38. package/dist/cjs/src/names.d.ts +5 -2
  39. package/dist/cjs/src/names.d.ts.map +1 -1
  40. package/dist/cjs/src/names.js +19 -1
  41. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +6 -2
  42. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  43. package/dist/cjs/src/recovery/backupKeyRecovery.js +7 -5
  44. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
  45. package/dist/cjs/src/recovery/crossChainRecovery.js +4 -4
  46. package/dist/cjs/src/transaction/decode.d.ts +2 -2
  47. package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
  48. package/dist/cjs/src/transaction/decode.js +3 -2
  49. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts +2 -2
  50. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  51. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +6 -5
  52. package/dist/cjs/src/transaction/descriptor/parse.d.ts +3 -3
  53. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
  54. package/dist/cjs/src/transaction/descriptor/parse.js +17 -18
  55. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +2 -1
  56. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
  57. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +3 -3
  58. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +3 -3
  59. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  60. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +6 -6
  61. package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -2
  62. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
  63. package/dist/cjs/src/transaction/explainTransaction.js +1 -1
  64. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +3 -1
  65. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  66. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +5 -4
  67. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +2 -1
  68. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  69. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +15 -14
  70. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +4 -4
  71. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  72. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +1 -1
  73. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +2 -2
  74. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  75. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +1 -1
  76. package/dist/cjs/src/transaction/parseTransaction.d.ts +2 -1
  77. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -1
  78. package/dist/cjs/src/transaction/parseTransaction.js +4 -4
  79. package/dist/cjs/src/transaction/recipient.d.ts +35 -16
  80. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
  81. package/dist/cjs/src/transaction/recipient.js +80 -47
  82. package/dist/cjs/src/transaction/signTransaction.js +2 -2
  83. package/dist/cjs/src/transaction/verifyTransaction.d.ts +2 -1
  84. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -1
  85. package/dist/cjs/src/transaction/verifyTransaction.js +3 -3
  86. package/dist/cjs/test/unit/descriptorAddress.d.ts.map +1 -1
  87. package/dist/cjs/test/unit/descriptorAddress.js +24 -4
  88. package/dist/cjs/test/unit/impl/bch/unit/bch.js +9 -1
  89. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts +2 -0
  90. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts.map +1 -0
  91. package/dist/cjs/test/unit/impl/zec/unit/address.js +205 -0
  92. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts +2 -0
  93. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts.map +1 -0
  94. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.js +89 -0
  95. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts +2 -0
  96. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts.map +1 -0
  97. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.js +57 -0
  98. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +15 -2
  99. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +2 -2
  100. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +2 -2
  101. package/dist/cjs/test/unit/recovery/mock.d.ts.map +1 -1
  102. package/dist/cjs/test/unit/recovery/mock.js +5 -3
  103. package/dist/cjs/test/unit/tbtcstx.d.ts +2 -0
  104. package/dist/cjs/test/unit/tbtcstx.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/tbtcstx.js +60 -0
  106. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts +2 -0
  107. package/dist/cjs/test/unit/tbtcstxprivate1.d.ts.map +1 -0
  108. package/dist/cjs/test/unit/tbtcstxprivate1.js +61 -0
  109. package/dist/cjs/test/unit/transaction/addressCodec.d.ts +2 -0
  110. package/dist/cjs/test/unit/transaction/addressCodec.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/transaction/addressCodec.js +30 -0
  112. package/dist/cjs/test/unit/transaction/descriptor/parse.js +4 -2
  113. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +6 -5
  114. package/dist/cjs/test/unit/transaction.js +2 -2
  115. package/dist/cjs/test/unit/util/address.d.ts +2 -1
  116. package/dist/cjs/test/unit/util/address.d.ts.map +1 -1
  117. package/dist/cjs/test/unit/util/address.js +3 -2
  118. package/dist/cjs/test/unit/util/nockIndexerAPI.d.ts.map +1 -1
  119. package/dist/cjs/test/unit/util/nockIndexerAPI.js +3 -4
  120. package/dist/cjs/test/unit/util/transaction.d.ts +1 -1
  121. package/dist/cjs/test/unit/util/transaction.d.ts.map +1 -1
  122. package/dist/cjs/test/unit/util/transaction.js +5 -4
  123. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
  124. package/dist/cjs/test/unit/util/unspents.js +3 -3
  125. package/dist/cjs/test/unit/util/utxoCoins.d.ts +2 -2
  126. package/dist/cjs/test/unit/util/utxoCoins.d.ts.map +1 -1
  127. package/dist/cjs/test/unit/util/utxoCoins.js +17 -33
  128. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  129. package/dist/esm/abstractUtxoCoin.d.ts +10 -2
  130. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  131. package/dist/esm/abstractUtxoCoin.js +32 -40
  132. package/dist/esm/address/fixedScript.d.ts +4 -4
  133. package/dist/esm/address/fixedScript.d.ts.map +1 -1
  134. package/dist/esm/address/fixedScript.js +4 -3
  135. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  136. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  137. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +3 -4
  138. package/dist/esm/impl/bch/bch.d.ts +15 -1
  139. package/dist/esm/impl/bch/bch.d.ts.map +1 -1
  140. package/dist/esm/impl/bch/bch.js +31 -7
  141. package/dist/esm/impl/btc/index.d.ts +2 -0
  142. package/dist/esm/impl/btc/index.d.ts.map +1 -1
  143. package/dist/esm/impl/btc/index.js +3 -1
  144. package/dist/esm/impl/btc/inscriptionBuilder.js +4 -4
  145. package/dist/esm/impl/btc/tbtcstx.d.ts +10 -0
  146. package/dist/esm/impl/btc/tbtcstx.d.ts.map +1 -0
  147. package/dist/esm/impl/btc/tbtcstx.js +14 -0
  148. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts +9 -0
  149. package/dist/esm/impl/btc/tbtcstxprivate1.d.ts.map +1 -0
  150. package/dist/esm/impl/btc/tbtcstxprivate1.js +11 -0
  151. package/dist/esm/impl/zec/address.d.ts +73 -0
  152. package/dist/esm/impl/zec/address.d.ts.map +1 -0
  153. package/dist/esm/impl/zec/address.js +113 -0
  154. package/dist/esm/impl/zec/index.d.ts +3 -0
  155. package/dist/esm/impl/zec/index.d.ts.map +1 -1
  156. package/dist/esm/impl/zec/index.js +4 -1
  157. package/dist/esm/impl/zec/recipients.d.ts +85 -0
  158. package/dist/esm/impl/zec/recipients.d.ts.map +1 -0
  159. package/dist/esm/impl/zec/recipients.js +90 -0
  160. package/dist/esm/impl/zec/types.d.ts +3 -0
  161. package/dist/esm/impl/zec/types.d.ts.map +1 -0
  162. package/dist/esm/impl/zec/types.js +2 -0
  163. package/dist/esm/impl/zec/zec.d.ts +14 -1
  164. package/dist/esm/impl/zec/zec.d.ts.map +1 -1
  165. package/dist/esm/impl/zec/zec.js +17 -1
  166. package/dist/esm/names.d.ts +5 -2
  167. package/dist/esm/names.d.ts.map +1 -1
  168. package/dist/esm/names.js +18 -1
  169. package/dist/esm/recovery/backupKeyRecovery.d.ts +6 -2
  170. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
  171. package/dist/esm/recovery/backupKeyRecovery.js +8 -6
  172. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
  173. package/dist/esm/recovery/crossChainRecovery.js +4 -4
  174. package/dist/esm/transaction/decode.d.ts +2 -2
  175. package/dist/esm/transaction/decode.d.ts.map +1 -1
  176. package/dist/esm/transaction/decode.js +3 -2
  177. package/dist/esm/transaction/descriptor/explainPsbt.d.ts +2 -2
  178. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  179. package/dist/esm/transaction/descriptor/explainPsbt.js +6 -5
  180. package/dist/esm/transaction/descriptor/parse.d.ts +3 -3
  181. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
  182. package/dist/esm/transaction/descriptor/parse.js +17 -18
  183. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +2 -1
  184. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
  185. package/dist/esm/transaction/descriptor/parseToAmountType.js +3 -3
  186. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +3 -3
  187. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  188. package/dist/esm/transaction/descriptor/verifyTransaction.js +6 -6
  189. package/dist/esm/transaction/explainTransaction.d.ts +2 -2
  190. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
  191. package/dist/esm/transaction/explainTransaction.js +1 -1
  192. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +3 -1
  193. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  194. package/dist/esm/transaction/fixedScript/parseOutput.js +5 -4
  195. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +2 -1
  196. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  197. package/dist/esm/transaction/fixedScript/parseTransaction.js +16 -15
  198. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +4 -4
  199. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  200. package/dist/esm/transaction/fixedScript/replayProtection.js +1 -1
  201. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +2 -2
  202. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  203. package/dist/esm/transaction/fixedScript/signTransaction.js +1 -1
  204. package/dist/esm/transaction/parseTransaction.d.ts +2 -1
  205. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -1
  206. package/dist/esm/transaction/parseTransaction.js +4 -4
  207. package/dist/esm/transaction/recipient.d.ts +35 -16
  208. package/dist/esm/transaction/recipient.d.ts.map +1 -1
  209. package/dist/esm/transaction/recipient.js +79 -48
  210. package/dist/esm/transaction/signTransaction.js +2 -2
  211. package/dist/esm/transaction/verifyTransaction.d.ts +2 -1
  212. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -1
  213. package/dist/esm/transaction/verifyTransaction.js +3 -3
  214. package/package.json +10 -9
@@ -8,7 +8,6 @@ exports.parseOutput = parseOutput;
8
8
  const debug_1 = __importDefault(require("debug"));
9
9
  const lodash_1 = __importDefault(require("lodash"));
10
10
  const sdk_core_1 = require("@bitgo/sdk-core");
11
- const recipient_1 = require("../recipient");
12
11
  const debug = (0, debug_1.default)('bitgo:v2:parseoutput');
13
12
  function isWalletOutput(output) {
14
13
  return (output.chain !== undefined && output.index !== undefined);
@@ -115,7 +114,7 @@ async function fetchAddressDetails({ reqId, disableNetworking, addressDetailsPre
115
114
  }
116
115
  return addressDetails;
117
116
  }
118
- async function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, txParams, customChange, reqId, }) {
117
+ async function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, addressCodec, txParams, customChange, reqId, }) {
119
118
  const disableNetworking = !!verification.disableNetworking;
120
119
  const currentAddress = currentOutput.address;
121
120
  if (currentAddress === undefined) {
@@ -174,7 +173,9 @@ async function parseOutput({ currentOutput, coin, txPrebuild, verification, keyc
174
173
  * recipient list is > 1000 This is not always a valid assumption and could lead greater apparent spend (but never lower)
175
174
  */
176
175
  if (txParams.recipients !== undefined && txParams.recipients.length > RECIPIENT_THRESHOLD) {
177
- const isCurrentAddressInRecipients = txParams.recipients.some((recipient) => (0, recipient_1.fromExtendedAddressFormatToScript)(recipient.address, coin.name).equals((0, recipient_1.fromExtendedAddressFormatToScript)(currentAddress, coin.name)));
176
+ const isCurrentAddressInRecipients = txParams.recipients.some((recipient) => addressCodec
177
+ .fromExtendedAddressFormatToScript(recipient.address)
178
+ .equals(addressCodec.fromExtendedAddressFormatToScript(currentAddress)));
178
179
  if (isCurrentAddressInRecipients) {
179
180
  return { ...currentOutput };
180
181
  }
@@ -213,4 +214,4 @@ async function parseOutput({ currentOutput, coin, txPrebuild, verification, keyc
213
214
  }));
214
215
  }
215
216
  }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvcGFyc2VPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvQkEsd0NBSUM7QUF5TEQsa0NBMEhDO0FBM1VELGtEQUE2QjtBQUM3QixvREFBdUI7QUFDdkIsOENBVXlCO0FBSXpCLDRDQUFpRTtBQUVqRSxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQVEsRUFBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRS9DLFNBQWdCLGNBQWMsQ0FBQyxNQUFjO0lBQzNDLE9BQU8sQ0FDSixNQUFrQyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUssTUFBa0MsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUNuSCxDQUFDO0FBQ0osQ0FBQztBQU9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILFNBQVMsaUJBQWlCLENBQUMsTUFBZSxFQUFFLGNBQXNCO0lBQ2hFLElBQUksZ0JBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ2xGLEtBQUssQ0FBQyw2RUFBNkUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNyRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFTRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQXdDO0lBQy9FLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxRSxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FDN0IsZ0JBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRTtZ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TSxjQUFjLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQztZQUMvQyxLQUFLO1lBQ0wsMEJBQTBCO1lBQzFCLHNCQUFzQjtZQUN0QixjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLE1BQU07U0FDUCxDQUFDLENBQUM7UUFDSCxvRUFBb0U7UUFDcEUsb0VBQW9FO1FBQ3BFLHFCQUFxQixHQUFHLGNBQWMsQ0FBQztRQUN2QyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQ3RCLGdCQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUU7WUFDM0IsU0FBUyxFQUFFLGFBQWE7WUFDeEIsT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQyxDQUNILENBQUM7UUFDRixLQUFLLENBQUMsZ0NBQWdDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFeEQsZ0VBQWdFO1FBQ2hFLHdFQUF3RTtRQUN4RSxPQUFPLGdCQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxLQUFLLENBQUMseUNBQXlDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQ2IsRUFBRSxFQUNGLGFBQWEsRUFDYixNQUFNLHdCQUF3QixDQUFDO1lBQzdCLENBQUM7WUFDRCxJQUFJO1lBQ0osY0FBYztZQUNkLE1BQU07WUFDTixRQUFRO1lBQ1IsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLFlBQVksQ0FBQyxJQUFJO1lBQ25ELGNBQWMsRUFBRSxxQkFBcUI7WUFDckMsbUNBQW1DLEVBQUUsWUFBWSxDQUFDLG1DQUFtQztTQUN0RixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlYnVnTGliIGZyb20gJ2RlYnVnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBBZGRyZXNzVmVyaWZpY2F0aW9uRGF0YSxcbiAgSVJlcXVlc3RUcmFjZXIsXG4gIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IsXG4gIElXYWxsZXQsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsXG4gIFZlcmlmaWNhdGlvbk9wdGlvbnMsXG4gIElUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJpcGxlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBPdXRwdXQsIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0IH0gZnJvbSAnLi4vcmVjaXBpZW50JztcblxuY29uc3QgZGVidWcgPSBkZWJ1Z0xpYignYml0Z286djI6cGFyc2VvdXRwdXQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2FsbGV0T3V0cHV0KG91dHB1dDogT3V0cHV0KTogb3V0cHV0IGlzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IHtcbiAgcmV0dXJuIChcbiAgICAob3V0cHV0IGFzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0KS5jaGFpbiAhPT0gdW5kZWZpbmVkICYmIChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpLmluZGV4ICE9PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuaW50ZXJmYWNlIEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvclJlc3BvbnNlIHtcbiAgZXh0ZXJuYWw6IGJvb2xlYW47XG4gIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDaGVjayBhbiBhZGRyZXNzIHdoaWNoIGZhaWxlZCBpbml0aWFsIHZhbGlkYXRpb24gdG8gc2VlIGlmIGl0J3MgdGhlIGJhc2UgYWRkcmVzcyBvZiBhIG1pZ3JhdGVkIHYxIGJjaCB3YWxsZXQuXG4gKlxuICogVGhlIHdhbGxldCBpbiBxdWVzdGlvbiBjb3VsZCBiZSBhIG1pZ3JhdGVkIFNhZmVIRCBCQ0ggd2FsbGV0LCBhbmQgdGhlIHRyYW5zYWN0aW9uIHdlXG4gKiBhcmUgY3VycmVudGx5IHBhcnNpbmcgaXMgdHJ5aW5nIHRvIHNwZW5kIGNoYW5nZSBiYWNrIHRvIHRoZSB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzLlxuICpcbiAqIEl0IGRvZXMgdGhpcyBzaW5jZSB3ZSBkb24ndCBhbGxvdyBuZXcgYWRkcmVzcyBjcmVhdGlvbiBmb3IgdGhlc2Ugd2FsbGV0cyxcbiAqIGFuZCBpbnN0ZWFkIHJldHVybiB0aGUgYmFzZSBhZGRyZXNzIGZyb20gdGhlIHYxIHdhbGxldCB3aGVuIGEgbmV3IGFkZHJlc3MgaXMgcmVxdWVzdGVkLlxuICogSWYgdGhpcyBuZXcgYWRkcmVzcyBpcyByZXF1ZXN0ZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiBzcGVuZGluZyBjaGFuZ2UgYmFjayB0byB0aGUgd2FsbGV0LFxuICogdGhlIGNoYW5nZSB3aWxsIGdvIHRvIHRoZSB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzLiBUaGlzIGFkZHJlc3MgKmlzKiBvbiB0aGUgd2FsbGV0LFxuICogYnV0IGl0IHdpbGwgc3RpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duIGJ5IHZlcmlmeUFkZHJlc3MsIHNpbmNlIHRoZSBkZXJpdmF0aW9uIHBhdGhcbiAqIHVzZWQgZm9yIHRoaXMgYWRkcmVzcyBpcyBub24tc3RhbmRhcmQuIChJIGhhdmUgc2VlbiB0aGVzZSBhZGRyZXNzZXMgZGVyaXZlZCB1c2luZyBwYXRocyBtLzAvMCBhbmQgbS8xMDEsXG4gKiB3aGVyZWFzIHRoZSB2MiBhZGRyZXNzZXMgYXJlIGRlcml2ZWQgdXNpbmcgcGF0aCAgbS8wLzAvJHtjaGFpbn0vJHtpbmRleH0pLlxuICpcbiAqIFRoaXMgbWVhbnMgd2UgbmVlZCB0byBjaGVjayBmb3IgdGhpcyBjYXNlIGV4cGxpY2l0bHkgaW4gdGhpcyBjYXRjaCBibG9jaywgYW5kIGNsYXNzaWZ5XG4gKiB0aGVzZSB0eXBlcyBvZiBvdXRwdXRzIGFzIGludGVybmFsIGluc3RlYWQgb2YgZXh0ZXJuYWwuIEZhaWxpbmcgdG8gZG8gc28gd291bGQgY2F1c2UgdGhlXG4gKiB0cmFuc2FjdGlvbidzIGltcGxpY2l0IGV4dGVybmFsIG91dHB1dHMgKGllLCBvdXRwdXRzIHdoaWNoIGdvIHRvIGFkZHJlc3NlcyBub3Qgc3BlY2lmaWVkIGluXG4gKiB0aGUgcmVjaXBpZW50cyBhcnJheSkgdG8gYWRkIHVwIHRvIG1vcmUgdGhhbiB0aGUgMTUwIGJhc2lzIHBvaW50IGxpbWl0IHdoaWNoIHdlIGVuZm9yY2Ugb25cbiAqIHBheS1hcy15b3UtZ28gb3V0cHV0cyAod2hpY2ggc2hvdWxkIGJlIHRoZSBvbmx5IGltcGxpY2l0IGV4dGVybmFsIG91dHB1dHMgb24gb3VyIHRyYW5zYWN0aW9ucykuXG4gKlxuICogVGhlIDE1MCBiYXNpcyBwb2ludCBsaW1pdCBmb3IgaW1wbGljaXQgZXh0ZXJuYWwgc2VuZHMgaXMgZW5mb3JjZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb24sXG4gKiB3aGljaCBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvIGdldCBpbmZvcm1hdGlvbiBvbiB0aGUgdG90YWwgZXh0ZXJuYWwvaW50ZXJuYWwgc3BlbmQgYW1vdW50c1xuICogZm9yIGEgdHJhbnNhY3Rpb24uIFRoZSBpZGVhIGhlcmUgaXMgdG8gcHJvdGVjdCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBtYWxpY2lvdXNseSBtb2RpZmllZFxuICogdG8gYWRkIG1vcmUgaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmRzIChlZywgdG8gYW4gYXR0YWNrZXItY29udHJvbGxlZCB3YWxsZXQpLlxuICpcbiAqIFNlZSB2ZXJpZnlUcmFuc2FjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdHJhbnNhY3Rpb24gcHJlYnVpbGRzIGFyZSB2ZXJpZmllZCBiZWZvcmUgc2lnbmluZy5cbiAqXG4gKiBAcGFyYW0gd2FsbGV0IHtXYWxsZXR9IHdhbGxldCB3aGljaCBpcyBtYWtpbmcgdGhlIHRyYW5zYWN0aW9uXG4gKiBAcGFyYW0gY3VycmVudEFkZHJlc3Mge3N0cmluZ30gYWRkcmVzcyB0byBjaGVjayBmb3IgZXh0ZXJuYWxpdHkgcmVsYXRpdmUgdG8gdjEgd2FsbGV0IGJhc2UgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBpc01pZ3JhdGVkQWRkcmVzcyh3YWxsZXQ6IElXYWxsZXQsIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKF8uaXNTdHJpbmcod2FsbGV0Lm1pZ3JhdGVkRnJvbSgpKSAmJiB3YWxsZXQubWlncmF0ZWRGcm9tKCkgPT09IGN1cnJlbnRBZGRyZXNzKSB7XG4gICAgZGVidWcoJ2ZvdW5kIGFkZHJlc3MgJXMgd2hpY2ggd2FzIG1pZ3JhdGVkIGZyb20gdjEgd2FsbGV0LCBhZGRyZXNzIGlzIG5vdCBleHRlcm5hbCcsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuaW50ZXJmYWNlIFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zIHtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgY3VzdG9tQ2hhbmdlS2V5czogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snY3VzdG9tQ2hhbmdlS2V5cyddO1xuICBhZGRyZXNzRGV0YWlsczogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snYWRkcmVzc0RldGFpbHMnXTtcbiAgY3VycmVudEFkZHJlc3M6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2N1cnJlbnRBZGRyZXNzJ107XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFkZHJlc3MgaXMgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBjdXN0b20gY2hhbmdlIGtleXNcbiAqIEBwYXJhbSB7VmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnN9IHBhcmFtc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzcyhwYXJhbXM6IFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgY29pbiwgY3VzdG9tQ2hhbmdlS2V5cywgYWRkcmVzc0RldGFpbHMsIGN1cnJlbnRBZGRyZXNzIH0gPSBwYXJhbXM7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvaW4udmVyaWZ5QWRkcmVzcyhcbiAgICAgIF8uZXh0ZW5kKHt9LCBhZGRyZXNzRGV0YWlscywge1xuICAgICAgICBrZXljaGFpbnM6IGN1c3RvbUNoYW5nZUtleXMsXG4gICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxuICAgICAgfSlcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byB2ZXJpZnkgY3VzdG9tIGNoYW5nZSBhZGRyZXNzICVzJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9ucyB7XG4gIGU6IEVycm9yO1xuICBjdXJyZW50QWRkcmVzczogc3RyaW5nO1xuICB3YWxsZXQ6IElXYWxsZXQ7XG4gIHR4UGFyYW1zOiB7XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfTtcbiAgY3VzdG9tQ2hhbmdlS2V5cz86IEN1c3RvbUNoYW5nZU9wdGlvbnNbJ2tleXMnXTtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgYWRkcmVzc0RldGFpbHM/OiBhbnk7XG4gIGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgZSxcbiAgY3VycmVudEFkZHJlc3MsXG4gIHdhbGxldCxcbiAgdHhQYXJhbXMsXG4gIGN1c3RvbUNoYW5nZUtleXMsXG4gIGNvaW4sXG4gIGFkZHJlc3NEZXRhaWxzLFxuICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbCxcbn06IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnMpOiBQcm9taXNlPEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvclJlc3BvbnNlPiB7XG4gIC8vIFRvZG86IG5hbWUgc2VydmVyLXNpZGUgZXJyb3JzIHRvIGF2b2lkIG1lc3NhZ2UtYmFzZWQgY2hlY2tpbmcgW0JHLTUxMjRdXG4gIGNvbnN0IHdhbGxldEFkZHJlc3NOb3RGb3VuZCA9IGUubWVzc2FnZS5pbmNsdWRlcygnd2FsbGV0IGFkZHJlc3Mgbm90IGZvdW5kJyk7XG4gIGNvbnN0IHVuZXhwZWN0ZWRBZGRyZXNzID0gZSBpbnN0YW5jZW9mIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3I7XG4gIGlmICh3YWxsZXRBZGRyZXNzTm90Rm91bmQgfHwgdW5leHBlY3RlZEFkZHJlc3MpIHtcbiAgICBpZiAodW5leHBlY3RlZEFkZHJlc3MgJiYgIXdhbGxldEFkZHJlc3NOb3RGb3VuZCkge1xuICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgYSBtaWdyYXRlZCB2MSBiY2ggYWRkcmVzcyAtIGl0IGNvdWxkIGJlIGludGVybmFsXG4gICAgICBjb25zdCBpc01pZ3JhdGVkID0gaXNNaWdyYXRlZEFkZHJlc3Mod2FsbGV0LCBjdXJyZW50QWRkcmVzcyk7XG4gICAgICBpZiAoaXNNaWdyYXRlZCkge1xuICAgICAgICByZXR1cm4geyBleHRlcm5hbDogY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWwgPT09IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGRlYnVnKCdBZGRyZXNzICVzIHdhcyBmb3VuZCBvbiB3YWxsZXQgYnV0IGNvdWxkIG5vdCBiZSByZWNvbnN0cnVjdGVkJywgY3VycmVudEFkZHJlc3MpO1xuXG4gICAgICAvLyBhdHRlbXB0IHRvIHZlcmlmeSBhZGRyZXNzIHVzaW5nIGN1c3RvbSBjaGFuZ2UgYWRkcmVzcyBrZXlzIGlmIHRoZSB3YWxsZXQgaGFzIHRoYXQgZmVhdHVyZSBlbmFibGVkXG4gICAgICBpZiAoXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMgJiZcbiAgICAgICAgKGF3YWl0IHZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3MoeyBjb2luLCBhZGRyZXNzRGV0YWlscywgY3VycmVudEFkZHJlc3MsIGN1c3RvbUNoYW5nZUtleXMgfSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gYWRkcmVzcyBpcyB2YWxpZCBhZ2FpbnN0IHRoZSBjdXN0b20gY2hhbmdlIGtleXMuIE1hcmsgYWRkcmVzcyBhcyBub3QgZXh0ZXJuYWxcbiAgICAgICAgLy8gYW5kIHJlcXVlc3Qgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmb3IgdGhlIGN1c3RvbSBjaGFuZ2Uga2V5c1xuICAgICAgICBkZWJ1ZygnQWRkcmVzcyAlcyB2ZXJpZmllZCBhcyBkZXJpdmVkIGZyb20gdGhlIGN1c3RvbSBjaGFuZ2Uga2V5cycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGZhbHNlLCBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbjogdHJ1ZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoZSBhZGRyZXNzIHdhcyBmb3VuZCwgYnV0IG5vdCBvbiB0aGUgd2FsbGV0LCB3aGljaCBzaW1wbHkgbWVhbnMgaXQncyBleHRlcm5hbFxuICAgIGRlYnVnKCdBZGRyZXNzICVzIHByZXN1bWVkIGV4dGVybmFsJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiB7IGV4dGVybmFsOiB0cnVlIH07XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIEludmFsaWRBZGRyZXNzRGVyaXZhdGlvblByb3BlcnR5RXJyb3IgJiYgY3VycmVudEFkZHJlc3MgPT09IHR4UGFyYW1zLmNoYW5nZUFkZHJlc3MpIHtcbiAgICAvLyBleHBlY3QgdG8gc2VlIHRoaXMgZXJyb3Igd2hlbiBwYXNzaW5nIGluIGEgY3VzdG9tIGNoYW5nZUFkZHJlc3Mgd2l0aCBubyBjaGFpbiBvciBpbmRleFxuICAgIHJldHVybiB7IGV4dGVybmFsOiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc29sZS5lcnJvcignQWRkcmVzcyBjbGFzc2lmaWNhdGlvbiBmYWlsZWQgZm9yIGFkZHJlc3MnLCBjdXJyZW50QWRkcmVzcyk7XG4gIGNvbnNvbGUudHJhY2UoZSk7XG4gIC8qKlxuICAgKiBJdCBtaWdodCBiZSBhIGNvbXBsZXRlbHkgaW52YWxpZCBhZGRyZXNzIG9yIGEgYmFkIHZhbGlkYXRpb24gYXR0ZW1wdCBvciBzb21ldGhpbmcgZWxzZSBjb21wbGV0ZWx5LCBpblxuICAgKiB3aGljaCBjYXNlIHdlIGRvIG5vdCBwcm9jZWVkIGFuZCByYXRoZXIgcmV0aHJvdyB0aGUgZXJyb3IsIHdoaWNoIGlzIHNhZmVyIHRoYW4gYXNzdW1pbmcgdGhhdCB0aGUgYWRkcmVzc1xuICAgKiB2YWxpZGF0aW9uIGZhaWxlZCBzaW1wbHkgYmVjYXVzZSBpdCdzIGV4dGVybmFsIHRvIHRoZSB3YWxsZXQuXG4gICAqL1xuICB0aHJvdyBlO1xufVxuXG5pbnRlcmZhY2UgRmV0Y2hBZGRyZXNzRGV0YWlsc09wdGlvbnMge1xuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyO1xuICBkaXNhYmxlTmV0d29ya2luZzogYm9vbGVhbjtcbiAgYWRkcmVzc0RldGFpbHNQcmVidWlsZDogYW55O1xuICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbjogYW55O1xuICBjdXJyZW50QWRkcmVzczogc3RyaW5nO1xuICB3YWxsZXQ6IElXYWxsZXQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWRkcmVzc0RldGFpbHMoe1xuICByZXFJZCxcbiAgZGlzYWJsZU5ldHdvcmtpbmcsXG4gIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsXG4gIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uLFxuICBjdXJyZW50QWRkcmVzcyxcbiAgd2FsbGV0LFxufTogRmV0Y2hBZGRyZXNzRGV0YWlsc09wdGlvbnMpIHtcbiAgbGV0IGFkZHJlc3NEZXRhaWxzID0gXy5leHRlbmQoe30sIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uKTtcbiAgZGVidWcoJ0xvY2FsbHkgYXZhaWxhYmxlIGFkZHJlc3MgJXMgZGV0YWlsczogJU8nLCBjdXJyZW50QWRkcmVzcywgYWRkcmVzc0RldGFpbHMpO1xuICBpZiAoXy5pc0VtcHR5KGFkZHJlc3NEZXRhaWxzKSAmJiAhZGlzYWJsZU5ldHdvcmtpbmcpIHtcbiAgICBhZGRyZXNzRGV0YWlscyA9IGF3YWl0IHdhbGxldC5nZXRBZGRyZXNzKHsgYWRkcmVzczogY3VycmVudEFkZHJlc3MsIHJlcUlkIH0pO1xuICAgIGRlYnVnKCdEb3dubG9hZGVkIGFkZHJlc3MgJXMgZGV0YWlsczogJU8nLCBjdXJyZW50QWRkcmVzcywgYWRkcmVzc0RldGFpbHMpO1xuICB9XG4gIHJldHVybiBhZGRyZXNzRGV0YWlscztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21DaGFuZ2VPcHRpb25zIHtcbiAga2V5czogVHJpcGxlPHsgcHViOiBzdHJpbmcgfT47XG4gIHNpZ25hdHVyZXM6IFRyaXBsZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlT3V0cHV0T3B0aW9ucyB7XG4gIGN1cnJlbnRPdXRwdXQ6IE91dHB1dDtcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbjtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgdmVyaWZpY2F0aW9uOiBWZXJpZmljYXRpb25PcHRpb25zO1xuICBrZXljaGFpbkFycmF5OiBUcmlwbGU8eyBwdWI6IHN0cmluZyB9PjtcbiAgd2FsbGV0OiBJV2FsbGV0O1xuICB0eFBhcmFtczoge1xuICAgIHJlY2lwaWVudHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGNoYW5nZUFkZHJlc3M/OiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbUNoYW5nZT86IEN1c3RvbUNoYW5nZU9wdGlvbnM7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZU91dHB1dCh7XG4gIGN1cnJlbnRPdXRwdXQsXG4gIGNvaW4sXG4gIHR4UHJlYnVpbGQsXG4gIHZlcmlmaWNhdGlvbixcbiAga2V5Y2hhaW5BcnJheSxcbiAgd2FsbGV0LFxuICB0eFBhcmFtcyxcbiAgY3VzdG9tQ2hhbmdlLFxuICByZXFJZCxcbn06IFBhcnNlT3V0cHV0T3B0aW9ucyk6IFByb21pc2U8T3V0cHV0PiB7XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gISF2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmc7XG4gIGNvbnN0IGN1cnJlbnRBZGRyZXNzID0gY3VycmVudE91dHB1dC5hZGRyZXNzO1xuXG4gIGlmIChjdXJyZW50QWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gSW4gdGhlIGNhc2UgdGhhdCB0aGUgYWRkcmVzcyBpcyB1bmRlZmluZWQsIGl0IG1lYW5zIHRoYXQgdGhlIG91dHB1dCBoYXMgYSBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlcbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgYW1vdW50IGlzIDAgYW5kIHdlIGNhbiBza2lwIHRoZSByZXN0LlxuICAgIGlmIChjdXJyZW50T3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3V0cHV0IHdpdGggdW5kZWZpbmVkIGFkZHJlc3MgbXVzdCBoYXZlIGFtb3VudCBvZiAwJyk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50T3V0cHV0O1xuICB9XG5cbiAgLy8gYXR0ZW1wdCB0byBncmFiIHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBlaXRoZXIgdGhlIHByZWJ1aWx0IHR4LCBvciB0aGUgdmVyaWZpY2F0aW9uIHBhcmFtcy5cbiAgLy8gSWYgYm90aCBvZiB0aGVzZSBhcmUgZW1wdHksIHRoZW4gd2Ugd2lsbCB0cnkgdG8gZ2V0IHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBiaXRnbyBpbnN0ZWFkXG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQgPSBfLmdldCh0eFByZWJ1aWxkLCBgdHhJbmZvLndhbGxldEFkZHJlc3NEZXRhaWxzLiR7Y3VycmVudEFkZHJlc3N9YCwge30pO1xuICBjb25zdCBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbjogQWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEgPSB2ZXJpZmljYXRpb24/LmFkZHJlc3Nlcz8uW2N1cnJlbnRBZGRyZXNzXSA/PyB7fTtcbiAgZGVidWcoJ1BhcnNpbmcgYWRkcmVzcyBkZXRhaWxzIGZvciAlcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgbGV0IGN1cnJlbnRBZGRyZXNzRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgY29uc3QgUkVDSVBJRU5UX1RIUkVTSE9MRCA9IDEwMDA7XG4gIHRyeSB7XG4gICAgLy8gSW4gdGhlIGNhc2Ugb2YgUFNCVHMsIHdlIGNhbiBhbHJlYWR5IGRldGVybWluZSB0aGUgaW50ZXJuYWwvZXh0ZXJuYWwgc3RhdHVzIG9mIHRoZSBvdXRwdXQgYWRkcmVzc2VzXG4gICAgLy8gYmFzZWQgb24gdGhlIGRlcml2YXRpb24gaW5mb3JtYXRpb24gYmVpbmcgaW5jbHVkZWQgaW4gdGhlIFBTQlQuIFdlIGNhbiBzaG9ydCBjaXJjdWl0IEdFVCB2Mi53YWxsZXQuYWRkcmVzc1xuICAgIC8vIGFuZCBzYXZlIG9uIG5ldHdvcmsgcmVxdWVzdHMuIFNpbmNlIHdlIGhhdmUgdGhlIGRlcml2YXRpb24gaW5mb3JtYXRpb24gYWxyZWFkeSwgd2UgY2FuIHN0aWxsIHZlcmlmeSB0aGUgYWRkcmVzc1xuICAgIGlmIChjdXJyZW50T3V0cHV0LmV4dGVybmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgd2UgaGF2ZSBhIGN1c3RvbSBjaGFuZ2Ugd2FsbGV0LCB3ZSBuZWVkIHRvIHZlcmlmeSB0aGUgYWRkcmVzcyBhZ2FpbnN0IHRoZSBjdXN0b20gY2hhbmdlIGtleXNcbiAgICAgIC8vIGFuZCBub3QgdGhlIHdhbGxldCBrZXlzLiBUaGlzIGNoZWNrIGlzIGRvbmUgaW4gdGhlIGhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvciBmdW5jdGlvbiBpZiB0aGlzIGVycm9yIGlzIHRocm93bi5cbiAgICAgIGlmIChjdXN0b21DaGFuZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcignYGFkZHJlc3MgdmFsaWRhdGlvbiBmYWlsdXJlJyk7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCBpcyBhbiBpbnRlcm5hbCBhZGRyZXNzLCB3ZSBjYW4gc2tpcCB0aGUgbmV0d29yayByZXF1ZXN0IGFuZCBqdXN0IHZlcmlmeSB0aGUgYWRkcmVzcyBsb2NhbGx5IHdpdGggdGhlXG4gICAgICAvLyBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIHdlIGhhdmUuIE90aGVyd2lzZSwgaWYgdGhlIGFkZHJlc3MgaXMgZXh0ZXJuYWwsIHdoaWNoIGlzIHRoZSBvbmx5IHJlbWFpbmluZyBjYXNlLCB3ZVxuICAgICAgLy8gY2FuIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IG91dHB1dCBhcyBpcyB3aXRob3V0IGNvbnRhY3RpbmcgdGhlIHNlcnZlci5cbiAgICAgIGlmIChpc1dhbGxldE91dHB1dChjdXJyZW50T3V0cHV0KSkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjb2luLmlzV2FsbGV0QWRkcmVzcyh7XG4gICAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxuICAgICAgICAgIGNoYWluOiBjdXJyZW50T3V0cHV0LmNoYWluLFxuICAgICAgICAgIGluZGV4OiBjdXJyZW50T3V0cHV0LmluZGV4LFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVW5leHBlY3RlZEFkZHJlc3NFcnJvcigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY3VycmVudE91dHB1dDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9yIHRyYW5zYWN0aW9uIHdpdGggdGhlIGxlZ2FjeSB0cmFuc2FjdGlvbiBmb3JtYXQsIHRoZSBvbmx5IHdheSB0b1xuICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFkZHJlc3MgaXMga25vd24gb24gdGhlIHdhbGxldCBpcyB0byBpbml0aWF0ZSBhXG4gICAgICogbmV0d29yayByZXF1ZXN0IGFuZCBmZXRjaCBpdC4gU2hvdWxkIHRoZSByZXF1ZXN0IGZhaWwgYW5kIHJldHVybiBhIDQwNCxcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuZCB0aGVyZWZvcmUgaGFzIHRvIGJlIGNhdWdodC4gRm9yIHRoYXQgcmVhc29uLCBhZGRyZXNzXG4gICAgICogd2FsbGV0IG93bmVyc2hpcCBkZXRlY3Rpb24gaXMgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gQWRkaXRpb25hbGx5LCBvbmNlXG4gICAgICogdGhlIGFkZHJlc3MgZGV0YWlscyBhcmUgZmV0Y2hlZCBvbiB0aGUgd2FsbGV0LCBhIGxvY2FsIGFkZHJlc3MgdmFsaWRhdGlvblxuICAgICAqIGlzIHJ1biwgd2hvc2UgZXJyb3JzIGhvd2V2ZXIgYXJlIGdlbmVyYXRlZCBjbGllbnQtc2lkZSBhbmQgY2FuIHRoZXJlZm9yZVxuICAgICAqIGJlIGFuYWx5emVkIHdpdGggbW9yZSBncmFudWxhcml0eSBhbmQgdHlwZSBjaGVja2luZy5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEluIG9yZGVyIHRvIG1pbmltaXplIEFQSSByZXF1ZXN0cywgd2UgYXNzdW1lIHRoYXQgZXhwbGljaXQgcmVjaXBpZW50cyBhcmUgYWx3YXlzIGV4dGVybmFsIHdoZW4gdGhlXG4gICAgICogcmVjaXBpZW50IGxpc3QgaXMgPiAxMDAwIFRoaXMgaXMgbm90IGFsd2F5cyBhIHZhbGlkIGFzc3VtcHRpb24gYW5kIGNvdWxkIGxlYWQgZ3JlYXRlciBhcHBhcmVudCBzcGVuZCAoYnV0IG5ldmVyIGxvd2VyKVxuICAgICAqL1xuICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQgJiYgdHhQYXJhbXMucmVjaXBpZW50cy5sZW5ndGggPiBSRUNJUElFTlRfVEhSRVNIT0xEKSB7XG4gICAgICBjb25zdCBpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cy5zb21lKChyZWNpcGllbnQpID0+XG4gICAgICAgIGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChyZWNpcGllbnQuYWRkcmVzcywgY29pbi5uYW1lKS5lcXVhbHMoXG4gICAgICAgICAgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KGN1cnJlbnRBZGRyZXNzLCBjb2luLm5hbWUpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRPdXRwdXQgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhZGRyZXNzRGV0YWlscyA9IGF3YWl0IGZldGNoQWRkcmVzc0RldGFpbHMoe1xuICAgICAgcmVxSWQsXG4gICAgICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbixcbiAgICAgIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQsXG4gICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgIGRpc2FibGVOZXR3b3JraW5nLFxuICAgICAgd2FsbGV0LFxuICAgIH0pO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoZSBhZGRyZXNzIGlzIG9uIHRoZSB3YWxsZXQuIHZlcmlmeUFkZHJlc3MgdGhyb3dzIGlmXG4gICAgLy8gaXQgZmFpbHMgdG8gY29ycmVjdGx5IHJlZGVyaXZlIHRoZSBhZGRyZXNzLCBtZWFuaW5nIGl0J3MgZXh0ZXJuYWxcbiAgICBjdXJyZW50QWRkcmVzc0RldGFpbHMgPSBhZGRyZXNzRGV0YWlscztcbiAgICBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7fSwgYWRkcmVzc0RldGFpbHMsIHtcbiAgICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbkFycmF5LFxuICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBkZWJ1ZygnQWRkcmVzcyAlcyB2ZXJpZmljYXRpb24gcGFzc2VkJywgY3VycmVudEFkZHJlc3MpO1xuXG4gICAgLy8gdmVyaWZ5IGFkZHJlc3Mgc3VjY2VlZGVkIHdpdGhvdXQgdGhyb3dpbmcsIHNvIHRoZSBhZGRyZXNzIHdhc1xuICAgIC8vIGNvcnJlY3RseSByZWRlcml2ZWQgZnJvbSB0aGUgd2FsbGV0IGtleWNoYWlucywgbWFraW5nIGl0IG5vdCBleHRlcm5hbFxuICAgIHJldHVybiBfLmV4dGVuZCh7fSwgY3VycmVudE91dHB1dCwgYWRkcmVzc0RldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpY2F0aW9uIHRocmV3IGFuIGVycm9yOicsIGN1cnJlbnRBZGRyZXNzLCBlKTtcbiAgICByZXR1cm4gXy5leHRlbmQoXG4gICAgICB7fSxcbiAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICBhd2FpdCBoYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3Ioe1xuICAgICAgICBlLFxuICAgICAgICBjb2luLFxuICAgICAgICBjdXJyZW50QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0LFxuICAgICAgICB0eFBhcmFtcyxcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5czogY3VzdG9tQ2hhbmdlICYmIGN1c3RvbUNoYW5nZS5rZXlzLFxuICAgICAgICBhZGRyZXNzRGV0YWlsczogY3VycmVudEFkZHJlc3NEZXRhaWxzLFxuICAgICAgICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbDogdmVyaWZpY2F0aW9uLmNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsLFxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZml4ZWRTY3JpcHQvcGFyc2VPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFvQkEsd0NBSUM7QUEwTEQsa0NBMkhDO0FBN1VELGtEQUE2QjtBQUM3QixvREFBdUI7QUFDdkIsOENBVXlCO0FBTXpCLE1BQU0sS0FBSyxHQUFHLElBQUEsZUFBUSxFQUFDLHNCQUFzQixDQUFDLENBQUM7QUFFL0MsU0FBZ0IsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxDQUNKLE1BQWtDLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSyxNQUFrQyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQ25ILENBQUM7QUFDSixDQUFDO0FBT0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsY0FBc0I7SUFDaEUsSUFBSSxnQkFBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDbEYsS0FBSyxDQUFDLDZFQUE2RSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQVNEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUseUJBQXlCLENBQUMsTUFBd0M7SUFDL0UsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQzFFLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUM3QixnQkFBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFO1lBQzNCLFNBQVMsRUFB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Qy9DLEtBQUs7WUFDTCwwQkFBMEI7WUFDMUIsc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxpQkFBaUI7WUFDakIsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUNILG9FQUFvRTtRQUNwRSxvRUFBb0U7UUFDcEUscUJBQXFCLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FDdEIsZ0JBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRTtZQUMzQixTQUFTLEVBQUUsYUFBYTtZQUN4QixPQUFPLEVBQUUsY0FBYztTQUN4QixDQUFDLENBQ0gsQ0FBQztRQUNGLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV4RCxnRUFBZ0U7UUFDaEUsd0VBQXdFO1FBQ3hFLE9BQU8sZ0JBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxnQkFBQyxDQUFDLE1BQU0sQ0FDYixFQUFFLEVBQ0YsYUFBYSxFQUNiLE1BQU0sd0JBQXdCLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQUk7WUFDSixjQUFjO1lBQ2QsTUFBTTtZQUNOLFFBQVE7WUFDUixnQkFBZ0IsRUFBRSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUk7WUFDbkQsY0FBYyxFQUFFLHFCQUFxQjtZQUNyQyxtQ0FBbUMsRUFBRSxZQUFZLENBQUMsbUNBQW1DO1NBQ3RGLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWdMaWIgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEFkZHJlc3NWZXJpZmljYXRpb25EYXRhLFxuICBJUmVxdWVzdFRyYWNlcixcbiAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcixcbiAgSVdhbGxldCxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbiAgVmVyaWZpY2F0aW9uT3B0aW9ucyxcbiAgSVRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmlwbGUsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5cbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi9hYnN0cmFjdFV0eG9Db2luJztcbmltcG9ydCB7IE91dHB1dCwgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEFkZHJlc3NDb2RlYyB9IGZyb20gJy4uL3JlY2lwaWVudCc7XG5cbmNvbnN0IGRlYnVnID0gZGVidWdMaWIoJ2JpdGdvOnYyOnBhcnNlb3V0cHV0Jyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dhbGxldE91dHB1dChvdXRwdXQ6IE91dHB1dCk6IG91dHB1dCBpcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCB7XG4gIHJldHVybiAoXG4gICAgKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCkuY2hhaW4gIT09IHVuZGVmaW5lZCAmJiAob3V0cHV0IGFzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0KS5pbmRleCAhPT0gdW5kZWZpbmVkXG4gICk7XG59XG5cbmludGVyZmFjZSBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JSZXNwb25zZSB7XG4gIGV4dGVybmFsOiBib29sZWFuO1xuICBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ2hlY2sgYW4gYWRkcmVzcyB3aGljaCBmYWlsZWQgaW5pdGlhbCB2YWxpZGF0aW9uIHRvIHNlZSBpZiBpdCdzIHRoZSBiYXNlIGFkZHJlc3Mgb2YgYSBtaWdyYXRlZCB2MSBiY2ggd2FsbGV0LlxuICpcbiAqIFRoZSB3YWxsZXQgaW4gcXVlc3Rpb24gY291bGQgYmUgYSBtaWdyYXRlZCBTYWZlSEQgQkNIIHdhbGxldCwgYW5kIHRoZSB0cmFuc2FjdGlvbiB3ZVxuICogYXJlIGN1cnJlbnRseSBwYXJzaW5nIGlzIHRyeWluZyB0byBzcGVuZCBjaGFuZ2UgYmFjayB0byB0aGUgdjEgd2FsbGV0IGJhc2UgYWRkcmVzcy5cbiAqXG4gKiBJdCBkb2VzIHRoaXMgc2luY2Ugd2UgZG9uJ3QgYWxsb3cgbmV3IGFkZHJlc3MgY3JlYXRpb24gZm9yIHRoZXNlIHdhbGxldHMsXG4gKiBhbmQgaW5zdGVhZCByZXR1cm4gdGhlIGJhc2UgYWRkcmVzcyBmcm9tIHRoZSB2MSB3YWxsZXQgd2hlbiBhIG5ldyBhZGRyZXNzIGlzIHJlcXVlc3RlZC5cbiAqIElmIHRoaXMgbmV3IGFkZHJlc3MgaXMgcmVxdWVzdGVkIGZvciB0aGUgcHVycG9zZXMgb2Ygc3BlbmRpbmcgY2hhbmdlIGJhY2sgdG8gdGhlIHdhbGxldCxcbiAqIHRoZSBjaGFuZ2Ugd2lsbCBnbyB0byB0aGUgdjEgd2FsbGV0IGJhc2UgYWRkcmVzcy4gVGhpcyBhZGRyZXNzICppcyogb24gdGhlIHdhbGxldCxcbiAqIGJ1dCBpdCB3aWxsIHN0aWxsIGNhdXNlIGFuIGVycm9yIHRvIGJlIHRocm93biBieSB2ZXJpZnlBZGRyZXNzLCBzaW5jZSB0aGUgZGVyaXZhdGlvbiBwYXRoXG4gKiB1c2VkIGZvciB0aGlzIGFkZHJlc3MgaXMgbm9uLXN0YW5kYXJkLiAoSSBoYXZlIHNlZW4gdGhlc2UgYWRkcmVzc2VzIGRlcml2ZWQgdXNpbmcgcGF0aHMgbS8wLzAgYW5kIG0vMTAxLFxuICogd2hlcmVhcyB0aGUgdjIgYWRkcmVzc2VzIGFyZSBkZXJpdmVkIHVzaW5nIHBhdGggIG0vMC8wLyR7Y2hhaW59LyR7aW5kZXh9KS5cbiAqXG4gKiBUaGlzIG1lYW5zIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHRoaXMgY2FzZSBleHBsaWNpdGx5IGluIHRoaXMgY2F0Y2ggYmxvY2ssIGFuZCBjbGFzc2lmeVxuICogdGhlc2UgdHlwZXMgb2Ygb3V0cHV0cyBhcyBpbnRlcm5hbCBpbnN0ZWFkIG9mIGV4dGVybmFsLiBGYWlsaW5nIHRvIGRvIHNvIHdvdWxkIGNhdXNlIHRoZVxuICogdHJhbnNhY3Rpb24ncyBpbXBsaWNpdCBleHRlcm5hbCBvdXRwdXRzIChpZSwgb3V0cHV0cyB3aGljaCBnbyB0byBhZGRyZXNzZXMgbm90IHNwZWNpZmllZCBpblxuICogdGhlIHJlY2lwaWVudHMgYXJyYXkpIHRvIGFkZCB1cCB0byBtb3JlIHRoYW4gdGhlIDE1MCBiYXNpcyBwb2ludCBsaW1pdCB3aGljaCB3ZSBlbmZvcmNlIG9uXG4gKiBwYXktYXMteW91LWdvIG91dHB1dHMgKHdoaWNoIHNob3VsZCBiZSB0aGUgb25seSBpbXBsaWNpdCBleHRlcm5hbCBvdXRwdXRzIG9uIG91ciB0cmFuc2FjdGlvbnMpLlxuICpcbiAqIFRoZSAxNTAgYmFzaXMgcG9pbnQgbGltaXQgZm9yIGltcGxpY2l0IGV4dGVybmFsIHNlbmRzIGlzIGVuZm9yY2VkIGluIHZlcmlmeVRyYW5zYWN0aW9uLFxuICogd2hpY2ggY2FsbHMgdGhpcyBmdW5jdGlvbiB0byBnZXQgaW5mb3JtYXRpb24gb24gdGhlIHRvdGFsIGV4dGVybmFsL2ludGVybmFsIHNwZW5kIGFtb3VudHNcbiAqIGZvciBhIHRyYW5zYWN0aW9uLiBUaGUgaWRlYSBoZXJlIGlzIHRvIHByb3RlY3QgZnJvbSB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgbWFsaWNpb3VzbHkgbW9kaWZpZWRcbiAqIHRvIGFkZCBtb3JlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kcyAoZWcsIHRvIGFuIGF0dGFja2VyLWNvbnRyb2xsZWQgd2FsbGV0KS5cbiAqXG4gKiBTZWUgdmVyaWZ5VHJhbnNhY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRyYW5zYWN0aW9uIHByZWJ1aWxkcyBhcmUgdmVyaWZpZWQgYmVmb3JlIHNpZ25pbmcuXG4gKlxuICogQHBhcmFtIHdhbGxldCB7V2FsbGV0fSB3YWxsZXQgd2hpY2ggaXMgbWFraW5nIHRoZSB0cmFuc2FjdGlvblxuICogQHBhcmFtIGN1cnJlbnRBZGRyZXNzIHtzdHJpbmd9IGFkZHJlc3MgdG8gY2hlY2sgZm9yIGV4dGVybmFsaXR5IHJlbGF0aXZlIHRvIHYxIHdhbGxldCBiYXNlIGFkZHJlc3NcbiAqL1xuZnVuY3Rpb24gaXNNaWdyYXRlZEFkZHJlc3Mod2FsbGV0OiBJV2FsbGV0LCBjdXJyZW50QWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChfLmlzU3RyaW5nKHdhbGxldC5taWdyYXRlZEZyb20oKSkgJiYgd2FsbGV0Lm1pZ3JhdGVkRnJvbSgpID09PSBjdXJyZW50QWRkcmVzcykge1xuICAgIGRlYnVnKCdmb3VuZCBhZGRyZXNzICVzIHdoaWNoIHdhcyBtaWdyYXRlZCBmcm9tIHYxIHdhbGxldCwgYWRkcmVzcyBpcyBub3QgZXh0ZXJuYWwnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmludGVyZmFjZSBWZXJpZnlDdXN0b21DaGFuZ2VBZGRyZXNzT3B0aW9ucyB7XG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIGN1c3RvbUNoYW5nZUtleXM6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2N1c3RvbUNoYW5nZUtleXMnXTtcbiAgYWRkcmVzc0RldGFpbHM6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2FkZHJlc3NEZXRhaWxzJ107XG4gIGN1cnJlbnRBZGRyZXNzOiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zWydjdXJyZW50QWRkcmVzcyddO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiBhbiBhZGRyZXNzIGlzIGRlcml2ZWQgZnJvbSB0aGUgZ2l2ZW4gY3VzdG9tIGNoYW5nZSBrZXlzXG4gKiBAcGFyYW0ge1ZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zfSBwYXJhbXNcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3MocGFyYW1zOiBWZXJpZnlDdXN0b21DaGFuZ2VBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IGNvaW4sIGN1c3RvbUNoYW5nZUtleXMsIGFkZHJlc3NEZXRhaWxzLCBjdXJyZW50QWRkcmVzcyB9ID0gcGFyYW1zO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7fSwgYWRkcmVzc0RldGFpbHMsIHtcbiAgICAgICAga2V5Y2hhaW5zOiBjdXN0b21DaGFuZ2VLZXlzLFxuICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcbiAgICAgIH0pXG4gICAgKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gdmVyaWZ5IGN1c3RvbSBjaGFuZ2UgYWRkcmVzcyAlcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnMge1xuICBlOiBFcnJvcjtcbiAgY3VycmVudEFkZHJlc3M6IHN0cmluZztcbiAgd2FsbGV0OiBJV2FsbGV0O1xuICB0eFBhcmFtczoge1xuICAgIGNoYW5nZUFkZHJlc3M/OiBzdHJpbmc7XG4gIH07XG4gIGN1c3RvbUNoYW5nZUtleXM/OiBDdXN0b21DaGFuZ2VPcHRpb25zWydrZXlzJ107XG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIGFkZHJlc3NEZXRhaWxzPzogYW55O1xuICBjb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbD86IGJvb2xlYW47XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvcih7XG4gIGUsXG4gIGN1cnJlbnRBZGRyZXNzLFxuICB3YWxsZXQsXG4gIHR4UGFyYW1zLFxuICBjdXN0b21DaGFuZ2VLZXlzLFxuICBjb2luLFxuICBhZGRyZXNzRGV0YWlscyxcbiAgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWwsXG59OiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zKTogUHJvbWlzZTxIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JSZXNwb25zZT4ge1xuICAvLyBUb2RvOiBuYW1lIHNlcnZlci1zaWRlIGVycm9ycyB0byBhdm9pZCBtZXNzYWdlLWJhc2VkIGNoZWNraW5nIFtCRy01MTI0XVxuICBjb25zdCB3YWxsZXRBZGRyZXNzTm90Rm91bmQgPSBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhbGxldCBhZGRyZXNzIG5vdCBmb3VuZCcpO1xuICBjb25zdCB1bmV4cGVjdGVkQWRkcmVzcyA9IGUgaW5zdGFuY2VvZiBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yO1xuICBpZiAod2FsbGV0QWRkcmVzc05vdEZvdW5kIHx8IHVuZXhwZWN0ZWRBZGRyZXNzKSB7XG4gICAgaWYgKHVuZXhwZWN0ZWRBZGRyZXNzICYmICF3YWxsZXRBZGRyZXNzTm90Rm91bmQpIHtcbiAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIGEgbWlncmF0ZWQgdjEgYmNoIGFkZHJlc3MgLSBpdCBjb3VsZCBiZSBpbnRlcm5hbFxuICAgICAgY29uc3QgaXNNaWdyYXRlZCA9IGlzTWlncmF0ZWRBZGRyZXNzKHdhbGxldCwgY3VycmVudEFkZHJlc3MpO1xuICAgICAgaWYgKGlzTWlncmF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsID09PSBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnQWRkcmVzcyAlcyB3YXMgZm91bmQgb24gd2FsbGV0IGJ1dCBjb3VsZCBub3QgYmUgcmVjb25zdHJ1Y3RlZCcsIGN1cnJlbnRBZGRyZXNzKTtcblxuICAgICAgLy8gYXR0ZW1wdCB0byB2ZXJpZnkgYWRkcmVzcyB1c2luZyBjdXN0b20gY2hhbmdlIGFkZHJlc3Mga2V5cyBpZiB0aGUgd2FsbGV0IGhhcyB0aGF0IGZlYXR1cmUgZW5hYmxlZFxuICAgICAgaWYgKFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzICYmXG4gICAgICAgIChhd2FpdCB2ZXJpZnlDdXN0b21DaGFuZ2VBZGRyZXNzKHsgY29pbiwgYWRkcmVzc0RldGFpbHMsIGN1cnJlbnRBZGRyZXNzLCBjdXN0b21DaGFuZ2VLZXlzIH0pKVxuICAgICAgKSB7XG4gICAgICAgIC8vIGFkZHJlc3MgaXMgdmFsaWQgYWdhaW5zdCB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzLiBNYXJrIGFkZHJlc3MgYXMgbm90IGV4dGVybmFsXG4gICAgICAgIC8vIGFuZCByZXF1ZXN0IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZm9yIHRoZSBjdXN0b20gY2hhbmdlIGtleXNcbiAgICAgICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpZWQgYXMgZGVyaXZlZCBmcm9tIHRoZSBjdXN0b20gY2hhbmdlIGtleXMnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgICAgIHJldHVybiB7IGV4dGVybmFsOiBmYWxzZSwgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb246IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGUgYWRkcmVzcyB3YXMgZm91bmQsIGJ1dCBub3Qgb24gdGhlIHdhbGxldCwgd2hpY2ggc2ltcGx5IG1lYW5zIGl0J3MgZXh0ZXJuYWxcbiAgICBkZWJ1ZygnQWRkcmVzcyAlcyBwcmVzdW1lZCBleHRlcm5hbCcsIGN1cnJlbnRBZGRyZXNzKTtcbiAgICByZXR1cm4geyBleHRlcm5hbDogdHJ1ZSB9O1xuICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBJbnZhbGlkQWRkcmVzc0Rlcml2YXRpb25Qcm9wZXJ0eUVycm9yICYmIGN1cnJlbnRBZGRyZXNzID09PSB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gZXhwZWN0IHRvIHNlZSB0aGlzIGVycm9yIHdoZW4gcGFzc2luZyBpbiBhIGN1c3RvbSBjaGFuZ2VBZGRyZXNzIHdpdGggbm8gY2hhaW4gb3IgaW5kZXhcbiAgICByZXR1cm4geyBleHRlcm5hbDogZmFsc2UgfTtcbiAgfVxuXG4gIGNvbnNvbGUuZXJyb3IoJ0FkZHJlc3MgY2xhc3NpZmljYXRpb24gZmFpbGVkIGZvciBhZGRyZXNzJywgY3VycmVudEFkZHJlc3MpO1xuICBjb25zb2xlLnRyYWNlKGUpO1xuICAvKipcbiAgICogSXQgbWlnaHQgYmUgYSBjb21wbGV0ZWx5IGludmFsaWQgYWRkcmVzcyBvciBhIGJhZCB2YWxpZGF0aW9uIGF0dGVtcHQgb3Igc29tZXRoaW5nIGVsc2UgY29tcGxldGVseSwgaW5cbiAgICogd2hpY2ggY2FzZSB3ZSBkbyBub3QgcHJvY2VlZCBhbmQgcmF0aGVyIHJldGhyb3cgdGhlIGVycm9yLCB3aGljaCBpcyBzYWZlciB0aGFuIGFzc3VtaW5nIHRoYXQgdGhlIGFkZHJlc3NcbiAgICogdmFsaWRhdGlvbiBmYWlsZWQgc2ltcGx5IGJlY2F1c2UgaXQncyBleHRlcm5hbCB0byB0aGUgd2FsbGV0LlxuICAgKi9cbiAgdGhyb3cgZTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQWRkcmVzc0RldGFpbHNPcHRpb25zIHtcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlcjtcbiAgZGlzYWJsZU5ldHdvcmtpbmc6IGJvb2xlYW47XG4gIGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQ6IGFueTtcbiAgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb246IGFueTtcbiAgY3VycmVudEFkZHJlc3M6IHN0cmluZztcbiAgd2FsbGV0OiBJV2FsbGV0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFkZHJlc3NEZXRhaWxzKHtcbiAgcmVxSWQsXG4gIGRpc2FibGVOZXR3b3JraW5nLFxuICBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkLFxuICBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbixcbiAgY3VycmVudEFkZHJlc3MsXG4gIHdhbGxldCxcbn06IEZldGNoQWRkcmVzc0RldGFpbHNPcHRpb25zKSB7XG4gIGxldCBhZGRyZXNzRGV0YWlscyA9IF8uZXh0ZW5kKHt9LCBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkLCBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbik7XG4gIGRlYnVnKCdMb2NhbGx5IGF2YWlsYWJsZSBhZGRyZXNzICVzIGRldGFpbHM6ICVPJywgY3VycmVudEFkZHJlc3MsIGFkZHJlc3NEZXRhaWxzKTtcbiAgaWYgKF8uaXNFbXB0eShhZGRyZXNzRGV0YWlscykgJiYgIWRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgYWRkcmVzc0RldGFpbHMgPSBhd2FpdCB3YWxsZXQuZ2V0QWRkcmVzcyh7IGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLCByZXFJZCB9KTtcbiAgICBkZWJ1ZygnRG93bmxvYWRlZCBhZGRyZXNzICVzIGRldGFpbHM6ICVPJywgY3VycmVudEFkZHJlc3MsIGFkZHJlc3NEZXRhaWxzKTtcbiAgfVxuICByZXR1cm4gYWRkcmVzc0RldGFpbHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tQ2hhbmdlT3B0aW9ucyB7XG4gIGtleXM6IFRyaXBsZTx7IHB1Yjogc3RyaW5nIH0+O1xuICBzaWduYXR1cmVzOiBUcmlwbGU8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZU91dHB1dE9wdGlvbnMge1xuICBjdXJyZW50T3V0cHV0OiBPdXRwdXQ7XG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHZlcmlmaWNhdGlvbjogVmVyaWZpY2F0aW9uT3B0aW9ucztcbiAga2V5Y2hhaW5BcnJheTogVHJpcGxlPHsgcHViOiBzdHJpbmcgfT47XG4gIHdhbGxldDogSVdhbGxldDtcbiAgYWRkcmVzc0NvZGVjOiBBZGRyZXNzQ29kZWM7XG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfTtcbiAgY3VzdG9tQ2hhbmdlPzogQ3VzdG9tQ2hhbmdlT3B0aW9ucztcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlT3V0cHV0KHtcbiAgY3VycmVudE91dHB1dCxcbiAgY29pbixcbiAgdHhQcmVidWlsZCxcbiAgdmVyaWZpY2F0aW9uLFxuICBrZXljaGFpbkFycmF5LFxuICB3YWxsZXQsXG4gIGFkZHJlc3NDb2RlYyxcbiAgdHhQYXJhbXMsXG4gIGN1c3RvbUNoYW5nZSxcbiAgcmVxSWQsXG59OiBQYXJzZU91dHB1dE9wdGlvbnMpOiBQcm9taXNlPE91dHB1dD4ge1xuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9ICEhdmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nO1xuICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IGN1cnJlbnRPdXRwdXQuYWRkcmVzcztcblxuICBpZiAoY3VycmVudEFkZHJlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIEluIHRoZSBjYXNlIHRoYXQgdGhlIGFkZHJlc3MgaXMgdW5kZWZpbmVkLCBpdCBtZWFucyB0aGF0IHRoZSBvdXRwdXQgaGFzIGEgbm9uLWVuY29kZWFibGUgc2NyaXB0UHVia2V5XG4gICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgdGhlIGFtb3VudCBpcyAwIGFuZCB3ZSBjYW4gc2tpcCB0aGUgcmVzdC5cbiAgICBpZiAoY3VycmVudE91dHB1dC5hbW91bnQudG9TdHJpbmcoKSAhPT0gJzAnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ291dHB1dCB3aXRoIHVuZGVmaW5lZCBhZGRyZXNzIG11c3QgaGF2ZSBhbW91bnQgb2YgMCcpO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE91dHB1dDtcbiAgfVxuXG4gIC8vIGF0dGVtcHQgdG8gZ3JhYiB0aGUgYWRkcmVzcyBkZXRhaWxzIGZyb20gZWl0aGVyIHRoZSBwcmVidWlsdCB0eCwgb3IgdGhlIHZlcmlmaWNhdGlvbiBwYXJhbXMuXG4gIC8vIElmIGJvdGggb2YgdGhlc2UgYXJlIGVtcHR5LCB0aGVuIHdlIHdpbGwgdHJ5IHRvIGdldCB0aGUgYWRkcmVzcyBkZXRhaWxzIGZyb20gYml0Z28gaW5zdGVhZFxuICBjb25zdCBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkID0gXy5nZXQodHhQcmVidWlsZCwgYHR4SW5mby53YWxsZXRBZGRyZXNzRGV0YWlscy4ke2N1cnJlbnRBZGRyZXNzfWAsIHt9KTtcbiAgY29uc3QgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb246IEFkZHJlc3NWZXJpZmljYXRpb25EYXRhID0gdmVyaWZpY2F0aW9uPy5hZGRyZXNzZXM/LltjdXJyZW50QWRkcmVzc10gPz8ge307XG4gIGRlYnVnKCdQYXJzaW5nIGFkZHJlc3MgZGV0YWlscyBmb3IgJXMnLCBjdXJyZW50QWRkcmVzcyk7XG4gIGxldCBjdXJyZW50QWRkcmVzc0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gIGNvbnN0IFJFQ0lQSUVOVF9USFJFU0hPTEQgPSAxMDAwO1xuICB0cnkge1xuICAgIC8vIEluIHRoZSBjYXNlIG9mIFBTQlRzLCB3ZSBjYW4gYWxyZWFkeSBkZXRlcm1pbmUgdGhlIGludGVybmFsL2V4dGVybmFsIHN0YXR1cyBvZiB0aGUgb3V0cHV0IGFkZHJlc3Nlc1xuICAgIC8vIGJhc2VkIG9uIHRoZSBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIGJlaW5nIGluY2x1ZGVkIGluIHRoZSBQU0JULiBXZSBjYW4gc2hvcnQgY2lyY3VpdCBHRVQgdjIud2FsbGV0LmFkZHJlc3NcbiAgICAvLyBhbmQgc2F2ZSBvbiBuZXR3b3JrIHJlcXVlc3RzLiBTaW5jZSB3ZSBoYXZlIHRoZSBkZXJpdmF0aW9uIGluZm9ybWF0aW9uIGFscmVhZHksIHdlIGNhbiBzdGlsbCB2ZXJpZnkgdGhlIGFkZHJlc3NcbiAgICBpZiAoY3VycmVudE91dHB1dC5leHRlcm5hbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBJbiB0aGUgY2FzZSB0aGF0IHdlIGhhdmUgYSBjdXN0b20gY2hhbmdlIHdhbGxldCwgd2UgbmVlZCB0byB2ZXJpZnkgdGhlIGFkZHJlc3MgYWdhaW5zdCB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzXG4gICAgICAvLyBhbmQgbm90IHRoZSB3YWxsZXQga2V5cy4gVGhpcyBjaGVjayBpcyBkb25lIGluIHRoZSBoYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3IgZnVuY3Rpb24gaWYgdGhpcyBlcnJvciBpcyB0aHJvd24uXG4gICAgICBpZiAoY3VzdG9tQ2hhbmdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoJ2BhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZScpO1xuICAgICAgfVxuICAgICAgLy8gSWYgaXQgaXMgYW4gaW50ZXJuYWwgYWRkcmVzcywgd2UgY2FuIHNraXAgdGhlIG5ldHdvcmsgcmVxdWVzdCBhbmQganVzdCB2ZXJpZnkgdGhlIGFkZHJlc3MgbG9jYWxseSB3aXRoIHRoZVxuICAgICAgLy8gZGVyaXZhdGlvbiBpbmZvcm1hdGlvbiB3ZSBoYXZlLiBPdGhlcndpc2UsIGlmIHRoZSBhZGRyZXNzIGlzIGV4dGVybmFsLCB3aGljaCBpcyB0aGUgb25seSByZW1haW5pbmcgY2FzZSwgd2VcbiAgICAgIC8vIGNhbiBqdXN0IHJldHVybiB0aGUgY3VycmVudCBvdXRwdXQgYXMgaXMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBzZXJ2ZXIuXG4gICAgICBpZiAoaXNXYWxsZXRPdXRwdXQoY3VycmVudE91dHB1dCkpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY29pbi5pc1dhbGxldEFkZHJlc3Moe1xuICAgICAgICAgIGtleWNoYWluczoga2V5Y2hhaW5BcnJheSxcbiAgICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcbiAgICAgICAgICBjaGFpbjogY3VycmVudE91dHB1dC5jaGFpbixcbiAgICAgICAgICBpbmRleDogY3VycmVudE91dHB1dC5pbmRleCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGN1cnJlbnRPdXRwdXQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvciB0cmFuc2FjdGlvbiB3aXRoIHRoZSBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LCB0aGUgb25seSB3YXkgdG9cbiAgICAgKiBkZXRlcm1pbmUgd2hldGhlciBhbiBhZGRyZXNzIGlzIGtub3duIG9uIHRoZSB3YWxsZXQgaXMgdG8gaW5pdGlhdGUgYVxuICAgICAqIG5ldHdvcmsgcmVxdWVzdCBhbmQgZmV0Y2ggaXQuIFNob3VsZCB0aGUgcmVxdWVzdCBmYWlsIGFuZCByZXR1cm4gYSA0MDQsXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbmQgdGhlcmVmb3JlIGhhcyB0byBiZSBjYXVnaHQuIEZvciB0aGF0IHJlYXNvbiwgYWRkcmVzc1xuICAgICAqIHdhbGxldCBvd25lcnNoaXAgZGV0ZWN0aW9uIGlzIHdyYXBwZWQgaW4gYSB0cnkvY2F0Y2guIEFkZGl0aW9uYWxseSwgb25jZVxuICAgICAqIHRoZSBhZGRyZXNzIGRldGFpbHMgYXJlIGZldGNoZWQgb24gdGhlIHdhbGxldCwgYSBsb2NhbCBhZGRyZXNzIHZhbGlkYXRpb25cbiAgICAgKiBpcyBydW4sIHdob3NlIGVycm9ycyBob3dldmVyIGFyZSBnZW5lcmF0ZWQgY2xpZW50LXNpZGUgYW5kIGNhbiB0aGVyZWZvcmVcbiAgICAgKiBiZSBhbmFseXplZCB3aXRoIG1vcmUgZ3JhbnVsYXJpdHkgYW5kIHR5cGUgY2hlY2tpbmcuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBJbiBvcmRlciB0byBtaW5pbWl6ZSBBUEkgcmVxdWVzdHMsIHdlIGFzc3VtZSB0aGF0IGV4cGxpY2l0IHJlY2lwaWVudHMgYXJlIGFsd2F5cyBleHRlcm5hbCB3aGVuIHRoZVxuICAgICAqIHJlY2lwaWVudCBsaXN0IGlzID4gMTAwMCBUaGlzIGlzIG5vdCBhbHdheXMgYSB2YWxpZCBhc3N1bXB0aW9uIGFuZCBjb3VsZCBsZWFkIGdyZWF0ZXIgYXBwYXJlbnQgc3BlbmQgKGJ1dCBuZXZlciBsb3dlcilcbiAgICAgKi9cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gUkVDSVBJRU5UX1RIUkVTSE9MRCkge1xuICAgICAgY29uc3QgaXNDdXJyZW50QWRkcmVzc0luUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHMuc29tZSgocmVjaXBpZW50KSA9PlxuICAgICAgICBhZGRyZXNzQ29kZWNcbiAgICAgICAgICAuZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KHJlY2lwaWVudC5hZGRyZXNzKVxuICAgICAgICAgIC5lcXVhbHMoYWRkcmVzc0NvZGVjLmZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdChjdXJyZW50QWRkcmVzcykpXG4gICAgICApO1xuXG4gICAgICBpZiAoaXNDdXJyZW50QWRkcmVzc0luUmVjaXBpZW50cykge1xuICAgICAgICByZXR1cm4geyAuLi5jdXJyZW50T3V0cHV0IH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBhd2FpdCBmZXRjaEFkZHJlc3NEZXRhaWxzKHtcbiAgICAgIHJlcUlkLFxuICAgICAgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24sXG4gICAgICBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkLFxuICAgICAgY3VycmVudEFkZHJlc3MsXG4gICAgICBkaXNhYmxlTmV0d29ya2luZyxcbiAgICAgIHdhbGxldCxcbiAgICB9KTtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGUgYWRkcmVzcyBpcyBvbiB0aGUgd2FsbGV0LiB2ZXJpZnlBZGRyZXNzIHRocm93cyBpZlxuICAgIC8vIGl0IGZhaWxzIHRvIGNvcnJlY3RseSByZWRlcml2ZSB0aGUgYWRkcmVzcywgbWVhbmluZyBpdCdzIGV4dGVybmFsXG4gICAgY3VycmVudEFkZHJlc3NEZXRhaWxzID0gYWRkcmVzc0RldGFpbHM7XG4gICAgYXdhaXQgY29pbi52ZXJpZnlBZGRyZXNzKFxuICAgICAgXy5leHRlbmQoe30sIGFkZHJlc3NEZXRhaWxzLCB7XG4gICAgICAgIGtleWNoYWluczoga2V5Y2hhaW5BcnJheSxcbiAgICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICB9KVxuICAgICk7XG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpY2F0aW9uIHBhc3NlZCcsIGN1cnJlbnRBZGRyZXNzKTtcblxuICAgIC8vIHZlcmlmeSBhZGRyZXNzIHN1Y2NlZWRlZCB3aXRob3V0IHRocm93aW5nLCBzbyB0aGUgYWRkcmVzcyB3YXNcbiAgICAvLyBjb3JyZWN0bHkgcmVkZXJpdmVkIGZyb20gdGhlIHdhbGxldCBrZXljaGFpbnMsIG1ha2luZyBpdCBub3QgZXh0ZXJuYWxcbiAgICByZXR1cm4gXy5leHRlbmQoe30sIGN1cnJlbnRPdXRwdXQsIGFkZHJlc3NEZXRhaWxzLCB7IGV4dGVybmFsOiBmYWxzZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGRlYnVnKCdBZGRyZXNzICVzIHZlcmlmaWNhdGlvbiB0aHJldyBhbiBlcnJvcjonLCBjdXJyZW50QWRkcmVzcywgZSk7XG4gICAgcmV0dXJuIF8uZXh0ZW5kKFxuICAgICAge30sXG4gICAgICBjdXJyZW50T3V0cHV0LFxuICAgICAgYXdhaXQgaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgICAgICAgZSxcbiAgICAgICAgY29pbixcbiAgICAgICAgY3VycmVudEFkZHJlc3MsXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXM6IGN1c3RvbUNoYW5nZSAmJiBjdXN0b21DaGFuZ2Uua2V5cyxcbiAgICAgICAgYWRkcmVzc0RldGFpbHM6IGN1cnJlbnRBZGRyZXNzRGV0YWlscyxcbiAgICAgICAgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWw6IHZlcmlmaWNhdGlvbi5jb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbCxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
1
  import type { AbstractUtxoCoin, ParseTransactionOptions } from '../../abstractUtxoCoin';
2
2
  import type { ParsedTransaction } from '../types';
3
+ import { AddressCodec } from '../recipient';
3
4
  import { ComparableOutput, ExpectedOutput } from '../outputDifference';
4
5
  export type ComparableOutputWithExternal<TValue> = (ComparableOutput<TValue> | ExpectedOutput) & {
5
6
  external: boolean | undefined;
6
7
  };
7
- export declare function parseTransaction<TNumber extends bigint | number>(coin: AbstractUtxoCoin, params: ParseTransactionOptions<TNumber>): Promise<ParsedTransaction<TNumber>>;
8
+ export declare function parseTransaction<TNumber extends bigint | number>(coin: AbstractUtxoCoin, params: ParseTransactionOptions<TNumber>, addressCodec?: AddressCodec): Promise<ParsedTransaction<TNumber>>;
8
9
  //# sourceMappingURL=parseTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/parseTransaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,KAAK,EAAmC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAiBnF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAMzF,MAAM,MAAM,4BAA4B,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG;IAC/F,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AAyGF,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACpE,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAyKrC"}
1
+ {"version":3,"file":"parseTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/parseTransaction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,KAAK,EAAmC,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAUnF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AAMzF,MAAM,MAAM,4BAA4B,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG;IAC/F,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AA8GF,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACpE,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,EACxC,YAAY,GAAE,YAAgC,GAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CA0KrC"}
@@ -15,14 +15,14 @@ const tnumber_1 = require("../../tnumber");
15
15
  const parseOutput_1 = require("./parseOutput");
16
16
  function toCanonicalTransactionRecipient(coin, output) {
17
17
  const amount = BigInt(output.valueString);
18
- (0, recipient_1.assertValidTransactionRecipient)({ amount, address: output.address });
18
+ recipient_1.AddressCodec.assertValidTransactionRecipient({ amount, address: output.address });
19
19
  (0, assert_1.default)(output.address, 'address is required');
20
- if ((0, recipient_1.isScriptRecipient)(output.address)) {
20
+ if (recipient_1.AddressCodec.isScriptRecipient(output.address)) {
21
21
  return { amount, address: output.address };
22
22
  }
23
23
  return { amount, address: coin.canonicalAddress(output.address) };
24
24
  }
25
- async function parseRbfTransaction(coin, params) {
25
+ async function parseRbfTransaction(coin, params, addressCodec = coin.addressCodec) {
26
26
  const { txParams, wallet } = params;
27
27
  (0, assert_1.default)(txParams.rbfTxIds);
28
28
  (0, assert_1.default)(txParams.rbfTxIds.length === 1);
@@ -42,9 +42,9 @@ async function parseRbfTransaction(coin, params) {
42
42
  recipients,
43
43
  rbfTxIds: undefined,
44
44
  },
45
- });
45
+ }, addressCodec);
46
46
  }
47
- function toExpectedOutputs(coin, txParams) {
47
+ function toExpectedOutputs(addressCodec, txParams) {
48
48
  // verify that each recipient from txParams has their own output
49
49
  const expectedOutputs = (txParams.recipients ?? []).flatMap((output) => {
50
50
  if (output.address === undefined) {
@@ -54,21 +54,21 @@ function toExpectedOutputs(coin, txParams) {
54
54
  }
55
55
  return [
56
56
  {
57
- script: (0, recipient_1.toOutputScript)(output, coin.name),
57
+ script: addressCodec.toOutputScript(output),
58
58
  value: output.amount === 'max' ? 'max' : BigInt(output.amount),
59
59
  },
60
60
  ];
61
61
  }
62
62
  return [
63
63
  {
64
- script: (0, recipient_1.fromExtendedAddressFormatToScript)(output.address, coin.name),
64
+ script: addressCodec.fromExtendedAddressFormatToScript(output.address),
65
65
  value: output.amount === 'max' ? 'max' : BigInt(output.amount),
66
66
  },
67
67
  ];
68
68
  });
69
69
  if (txParams.allowExternalChangeAddress && txParams.changeAddress) {
70
70
  expectedOutputs.push({
71
- script: (0, recipient_1.toOutputScript)(txParams.changeAddress, coin.name),
71
+ script: addressCodec.toOutputScript(txParams.changeAddress),
72
72
  // When an external change address is explicitly specified, count all outputs going towards that
73
73
  // address in the expected outputs (regardless of the output amount)
74
74
  value: 'max',
@@ -89,11 +89,11 @@ function verifyCustomChangeKeys(userKeychain, customChange) {
89
89
  }
90
90
  }
91
91
  }
92
- async function parseTransaction(coin, params) {
92
+ async function parseTransaction(coin, params, addressCodec = coin.addressCodec) {
93
93
  const { txParams, txPrebuild, wallet, verification = {}, reqId } = params;
94
94
  // Branch off early for RBF transactions
95
95
  if (txParams.rbfTxIds) {
96
- return parseRbfTransaction(coin, params);
96
+ return parseRbfTransaction(coin, params, addressCodec);
97
97
  }
98
98
  if (!lodash_1.default.isUndefined(verification.disableNetworking) && !lodash_1.default.isBoolean(verification.disableNetworking)) {
99
99
  throw new Error('verification.disableNetworking must be a boolean');
@@ -115,7 +115,7 @@ async function parseTransaction(coin, params) {
115
115
  if (lodash_1.default.isUndefined(effectiveTxHex)) {
116
116
  throw new Error('missing required txPrebuild property txHex');
117
117
  }
118
- const expectedOutputs = toExpectedOutputs(coin, txParams);
118
+ const expectedOutputs = toExpectedOutputs(addressCodec, txParams);
119
119
  // get the keychains from the custom change wallet if needed
120
120
  let customChange;
121
121
  const { customChangeWalletId = undefined } = wallet.coinSpecific() || {};
@@ -165,6 +165,7 @@ async function parseTransaction(coin, params) {
165
165
  verification,
166
166
  keychainArray: (0, keychains_1.toKeychainTriple)(keychains),
167
167
  wallet,
168
+ addressCodec,
168
169
  txParams: {
169
170
  recipients: txParams.recipients ?? [],
170
171
  changeAddress: txParams.changeAddress,
@@ -177,7 +178,7 @@ async function parseTransaction(coin, params) {
177
178
  const changeOutputs = lodash_1.default.filter(allOutputDetails, { external: false });
178
179
  function toComparableOutputsWithExternal(outputs) {
179
180
  return outputs.map((output) => ({
180
- script: (0, recipient_1.fromExtendedAddressFormatToScript)(output.address, coin.name),
181
+ script: addressCodec.fromExtendedAddressFormatToScript(output.address),
181
182
  value: output.amount === 'max' ? 'max' : BigInt(output.amount),
182
183
  external: output.external,
183
184
  }));
@@ -205,7 +206,7 @@ async function parseTransaction(coin, params) {
205
206
  const implicitExternalSpendAmount = (0, tnumber_1.toTNumber)(implicitExternalOutputs.reduce((sum, o) => sum + BigInt(o.value), BigInt(0)), coin.amountType);
206
207
  function toOutputs(outputs) {
207
208
  return outputs.map((output) => ({
208
- address: (0, recipient_1.toExtendedAddressFormat)(output.script, coin.name),
209
+ address: addressCodec.toExtendedAddressFormat(output.script),
209
210
  amount: output.value.toString(),
210
211
  external: output.external,
211
212
  }));
@@ -224,4 +225,4 @@ async function parseTransaction(coin, params) {
224
225
  customChange,
225
226
  };
226
227
  }
227
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBd0lBLDRDQTRLQztBQXBURCxvREFBNEI7QUFFNUIsb0RBQXVCO0FBQ3ZCLDhDQUF5RztBQUl6RywrQ0FPeUI7QUFDekIsK0NBQXFEO0FBQ3JELDRDQU1zQjtBQUN0QiwwREFBeUY7QUFDekYsMkNBQTBDO0FBRzFDLCtDQUFpRTtBQU1qRSxTQUFTLCtCQUErQixDQUN0QyxJQUFzQixFQUN0QixNQUFpRDtJQUtqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLElBQUEsMkNBQStCLEVBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFBLDZCQUFpQixFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1CLENBQ2hDLElBQXNCLEVBQ3RCLE1BQXdDO0lBRXhDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXBDLElBQUEsZ0JBQU0sRUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7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QUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDcEYsSUFBSSxDQUFDLFVBQVUsQ0FDTCxDQUFDO0lBRWIsU0FBUyxTQUFTLENBQUMsT0FBMEU7UUFDM0YsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxJQUFBLG1DQUF1QixFQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDL0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDTCxTQUFTO1FBQ1QsYUFBYSxFQUFFLElBQUEsNEJBQWdCLEVBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtRQUM3QyxPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ3pDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCx1QkFBdUIsRUFBRSxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDM0QsYUFBYTtRQUNiLDJCQUEyQjtRQUMzQiwyQkFBMkI7UUFDM0IseUNBQXlDO1FBQ3pDLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElUcmFuc2FjdGlvblJlY2lwaWVudCwgS2V5SW5kaWNlcywgVHJpcGxlLCBWZXJpZmljYXRpb25PcHRpb25zLCBXYWxsZXQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZmV0Y2hLZXljaGFpbnMsXG4gIGdldEtleVNpZ25hdHVyZXMsXG4gIHRvS2V5Y2hhaW5UcmlwbGUsXG4gIHRvWHB1YlRyaXBsZSxcbiAgVXR4b0tleWNoYWluLFxuICBVdHhvTmFtZWRLZXljaGFpbnMsXG59IGZyb20gJy4uLy4uL2tleWNoYWlucyc7XG5pbXBvcnQgeyB2ZXJpZnlLZXlTaWduYXR1cmUgfSBmcm9tICcuLi8uLi92ZXJpZnlLZXknO1xuaW1wb3J0IHtcbiAgYXNzZXJ0VmFsaWRUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0LFxuICBpc1NjcmlwdFJlY2lwaWVudCxcbiAgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQsXG4gIHRvT3V0cHV0U2NyaXB0LFxufSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgQ29tcGFyYWJsZU91dHB1dCwgRXhwZWN0ZWRPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IHRvVE51bWJlciB9IGZyb20gJy4uLy4uL3RudW1iZXInO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSAoQ29tcGFyYWJsZU91dHB1dDxUVmFsdWU+IHwgRXhwZWN0ZWRPdXRwdXQpICYge1xuICBleHRlcm5hbDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn07XG5cbmZ1bmN0aW9uIHRvQ2Fub25pY2FsVHJhbnNhY3Rpb25SZWNpcGllbnQoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nIH1cbik6IHtcbiAgYW1vdW50OiBiaWdpbnQ7XG4gIGFkZHJlc3M6IHN0cmluZztcbn0ge1xuICBjb25zdCBhbW91bnQgPSBCaWdJbnQob3V0cHV0LnZhbHVlU3RyaW5nKTtcbiAgYXNzZXJ0VmFsaWRUcmFuc2FjdGlvblJlY2lwaWVudCh7IGFtb3VudCwgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MgfSk7XG4gIGFzc2VydChvdXRwdXQuYWRkcmVzcywgJ2FkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgaWYgKGlzU2NyaXB0UmVjaXBpZW50KG91dHB1dC5hZGRyZXNzKSkge1xuICAgIHJldHVybiB7IGFtb3VudCwgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MgfTtcbiAgfVxuICByZXR1cm4geyBhbW91bnQsIGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyhvdXRwdXQuYWRkcmVzcykgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbdG9DYW5vbmljYWxUcmFuc2FjdGlvblJlY2lwaWVudChjb2luLCBvdXRwdXQpXTtcbiAgICB9XG4gICk7XG5cbiAgLy8gUmVjdXJzZSBpbnRvIHBhcnNlVHJhbnNhY3Rpb24gd2l0aCB0aGUgZGVyaXZlZCByZWNpcGllbnRzIGFuZCB3aXRob3V0IHJiZlR4SWRzXG4gIHJldHVybiBwYXJzZVRyYW5zYWN0aW9uKGNvaW4sIHtcbiAgICAuLi5wYXJhbXMsXG4gICAgdHhQYXJhbXM6IHtcbiAgICAgIC4uLnR4UGFyYW1zLFxuICAgICAgcmVjaXBpZW50cyxcbiAgICAgIHJiZlR4SWRzOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRvRXhwZWN0ZWRPdXRwdXRzKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICB0eFBhcmFtczoge1xuICAgIHJlY2lwaWVudHM/OiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgICBhbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcz86IGJvb2xlYW47XG4gICAgY2hhbmdlQWRkcmVzcz86IHN0cmluZztcbiAgfVxuKTogRXhwZWN0ZWRPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzOiBFeHBlY3RlZE91dHB1dFtdID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhc3NlcnQoJ3NjcmlwdCcgaW4gb3V0cHV0LCAnc2NyaXB0IGlzIHJlcXVpcmVkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzJyk7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzY3JpcHQ6IHRvT3V0cHV0U2NyaXB0KG91dHB1dCwgY29pbi5uYW1lKSxcbiAgICAgICAgICB2YWx1ZTogb3V0cHV0LmFtb3VudCA9PT0gJ21heCcgPyAnbWF4JyA6IEJpZ0ludChvdXRwdXQuYW1vdW50KSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5hbWUpLFxuICAgICAgICB2YWx1ZTogb3V0cHV0LmFtb3VudCA9PT0gJ21heCcgPyAnbWF4JyA6IEJpZ0ludChvdXRwdXQuYW1vdW50KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgZXhwZWN0ZWRPdXRwdXRzLnB1c2goe1xuICAgICAgc2NyaXB0OiB0b091dHB1dFNjcmlwdCh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzLCBjb2luLm5hbWUpLFxuICAgICAgLy8gV2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgICAvLyBhZGRyZXNzIGluIHRoZSBleHBlY3RlZCBvdXRwdXRzIChyZWdhcmRsZXNzIG9mIHRoZSBvdXRwdXQgYW1vdW50KVxuICAgICAgdmFsdWU6ICdtYXgnLFxuICAgICAgLy8gTm90ZSB0aGF0IHRoZSBjaGFuZ2Ugb3V0cHV0IGlzIG5vdCByZXF1aXJlZCB0byBleGlzdCwgc28gd2UgbWFyayBpdCBhcyBvcHRpb25hbC5cbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiBleHBlY3RlZE91dHB1dHM7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUN1c3RvbUNoYW5nZUtleXModXNlcktleWNoYWluOiBVdHhvS2V5Y2hhaW4sIGN1c3RvbUNoYW5nZTogQ3VzdG9tQ2hhbmdlT3B0aW9ucyk6IHZvaWQge1xuICBmb3IgKGNvbnN0IGtleUluZGV4IG9mIFtLZXlJbmRpY2VzLlVTRVIsIEtleUluZGljZXMuQkFDS1VQLCBLZXlJbmRpY2VzLkJJVEdPXSkge1xuICAgIGlmIChcbiAgICAgICF2ZXJpZnlLZXlTaWduYXR1cmUoe1xuICAgICAgICB1c2VyS2V5Y2hhaW4sXG4gICAgICAgIGtleWNoYWluVG9WZXJpZnk6IGN1c3RvbUNoYW5nZS5rZXlzW2tleUluZGV4XSxcbiAgICAgICAga2V5U2lnbmF0dXJlOiBjdXN0b21DaGFuZ2Uuc2lnbmF0dXJlc1trZXlJbmRleF0sXG4gICAgICB9KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gdmVyaWZ5IGN1c3RvbSBjaGFuZ2UgJHtLZXlJbmRpY2VzW2tleUluZGV4XS50b0xvd2VyQ2FzZSgpfSBrZXkgc2lnbmF0dXJlYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZVRyYW5zYWN0aW9uPFROdW1iZXIgZXh0ZW5kcyBiaWdpbnQgfCBudW1iZXI+KFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zPFROdW1iZXI+XG4pOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPFROdW1iZXI+PiB7XG4gIGNvbnN0IHsgdHhQYXJhbXMsIHR4UHJlYnVpbGQsIHdhbGxldCwgdmVyaWZpY2F0aW9uID0ge30sIHJlcUlkIH0gPSBwYXJhbXM7XG5cbiAgLy8gQnJhbmNoIG9mZiBlYXJseSBmb3IgUkJGIHRyYW5zYWN0aW9uc1xuICBpZiAodHhQYXJhbXMucmJmVHhJZHMpIHtcbiAgICByZXR1cm4gcGFyc2VSYmZUcmFuc2FjdGlvbihjb2luLCBwYXJhbXMpO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykgJiYgIV8uaXNCb29sZWFuKHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3ZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZyBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICB9XG4gIGNvbnN0IGRpc2FibGVOZXR3b3JraW5nID0gdmVyaWZpY2F0aW9uLmRpc2FibGVOZXR3b3JraW5nO1xuXG4gIC8vIG9idGFpbiB0aGUga2V5Y2hhaW5zIGFuZCBrZXkgc2lnbmF0dXJlc1xuICBsZXQga2V5Y2hhaW5zOiBVdHhvTmFtZWRLZXljaGFpbnMgfCBWZXJpZmljYXRpb25PcHRpb25zWydrZXljaGFpbnMnXSB8IHVuZGVmaW5lZCA9IHZlcmlmaWNhdGlvbi5rZXljaGFpbnM7XG4gIGlmICgha2V5Y2hhaW5zKSB7XG4gICAgaWYgKGRpc2FibGVOZXR3b3JraW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBmZXRjaCBrZXljaGFpbnMgd2l0aG91dCBuZXR3b3JraW5nJyk7XG4gICAgfVxuICAgIGtleWNoYWlucyA9IGF3YWl0IGZldGNoS2V5Y2hhaW5zKGNvaW4sIHdhbGxldCwgcmVxSWQpO1xuICB9XG5cbiAgaWYgKCFVdHhvTmFtZWRLZXljaGFpbnMuaXMoa2V5Y2hhaW5zKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBrZXljaGFpbnMnKTtcbiAgfVxuXG4gIGNvbnN0IGtleWNoYWluQXJyYXk6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpO1xuXG4gIGNvbnN0IGVmZmVjdGl2ZVR4SGV4ID0gdHhQcmVidWlsZC50eEhleFBzYnQgPz8gdHhQcmVidWlsZC50eEhleDtcbiAgaWYgKF8uaXNVbmRlZmluZWQoZWZmZWN0aXZlVHhIZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4UHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkT3V0cHV0cyA9IHRvRXhwZWN0ZWRPdXRwdXRzKGNvaW4sIHR4UGFyYW1zKTtcblxuICAvLyBnZXQgdGhlIGtleWNoYWlucyBmcm9tIHRoZSBjdXN0b20gY2hhbmdlIHdhbGxldCBpZiBuZWVkZWRcbiAgbGV0IGN1c3RvbUNoYW5nZTogQ3VzdG9tQ2hhbmdlT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgeyBjdXN0b21DaGFuZ2VXYWxsZXRJZCA9IHVuZGVmaW5lZCB9ID0gd2FsbGV0LmNvaW5TcGVjaWZpYygpIHx8IHt9O1xuICBpZiAoY3VzdG9tQ2hhbmdlV2FsbGV0SWQpIHtcbiAgICAvLyBmZXRjaCBrZXljaGFpbnMgZnJvbSBjdXN0b20gY2hhbmdlIHdhbGxldCBmb3IgZGVyaXZpbmcgYWRkcmVzc2VzLlxuICAgIC8vIFRoZXNlIGtleWNoYWlucyBzaG91bGQgYmUgc2lnbmVkIGFuZCB0aGlzIHNob3VsZCBiZSB2ZXJpZmllZCBpbiB2ZXJpZnlUcmFuc2FjdGlvblxuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMgPSB3YWxsZXQuX3dhbGxldC5jdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzO1xuICAgIGNvbnN0IGN1c3RvbUNoYW5nZVdhbGxldDogV2FsbGV0ID0gYXdhaXQgY29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IGN1c3RvbUNoYW5nZVdhbGxldElkIH0pO1xuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleXMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCBjdXN0b21DaGFuZ2VXYWxsZXQsIHJlcUlkKTtcblxuICAgIGlmICghY3VzdG9tQ2hhbmdlS2V5cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZmV0Y2gga2V5Y2hhaW5zIGZvciBjdXN0b20gY2hhbmdlIHdhbGxldCcpO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21DaGFuZ2VLZXlzLnVzZXIgJiYgY3VzdG9tQ2hhbmdlS2V5cy5iYWNrdXAgJiYgY3VzdG9tQ2hhbmdlS2V5cy5iaXRnbyAmJiBjdXN0b21DaGFuZ2VXYWxsZXQpIHtcbiAgICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleWNoYWluczogVHJpcGxlPFV0eG9LZXljaGFpbj4gPSBbXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMudXNlcixcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5cy5iYWNrdXAsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYml0Z28sXG4gICAgICBdO1xuXG4gICAgICBjdXN0b21DaGFuZ2UgPSB7XG4gICAgICAgIGtleXM6IGN1c3RvbUNoYW5nZUtleWNoYWlucyxcbiAgICAgICAgc2lnbmF0dXJlczogW2N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMudXNlciwgY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcy5iYWNrdXAsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYml0Z29dLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBsZXQgY3VzdG9tQ2hhbmdlWHB1YnM6IFRyaXBsZTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICBpZiAoY3VzdG9tQ2hhbmdlKSB7XG4gICAgdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5cyhrZXljaGFpbkFycmF5W0tleUluZGljZXMuVVNFUl0sIGN1c3RvbUNoYW5nZSk7XG4gICAgY3VzdG9tQ2hhbmdlWHB1YnMgPSB0b1hwdWJUcmlwbGUoY3VzdG9tQ2hhbmdlLmtleXMpO1xuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiBlZmZlY3RpdmVUeEhleCxcbiAgICB0eEluZm86IHR4UHJlYnVpbGQudHhJbmZvLFxuICAgIHB1YnM6IGtleWNoYWluQXJyYXkubWFwKChrKSA9PiBrLnB1YikgYXMgVHJpcGxlPHN0cmluZz4sXG4gICAgY3VzdG9tQ2hhbmdlWHB1YnMsXG4gIH0pO1xuXG4gIGNvbnN0IGFsbE91dHB1dHMgPSBbLi4uZXhwbGFuYXRpb24ub3V0cHV0cywgLi4uZXhwbGFuYXRpb24uY2hhbmdlT3V0cHV0c107XG5cbiAgLyoqXG4gICAqIExvb3AgdGhyb3VnaCBhbGwgdGhlIG91dHB1dHMgYW5kIGNsYXNzaWZ5IGVhY2ggb2YgdGhlbSBhcyBlaXRoZXIgaW50ZXJuYWwgc3BlbmRzXG4gICAqIG9yIGV4dGVybmFsIHNwZW5kcyBieSBzZXR0aW5nIHRoZSBcImV4dGVybmFsXCIgcHJvcGVydHkgdG8gdHJ1ZSBvciBmYWxzZSBvbiB0aGUgb3V0cHV0IG9iamVjdC5cbiAgICovXG4gIGNvbnN0IGFsbE91dHB1dERldGFpbHM6IE91dHB1dFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYWxsT3V0cHV0cy5tYXAoKGN1cnJlbnRPdXRwdXQpID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU91dHB1dCh7XG4gICAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAga2V5Y2hhaW5BcnJheTogdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpLFxuICAgICAgICB3YWxsZXQsXG4gICAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgICAgcmVjaXBpZW50czogdHhQYXJhbXMucmVjaXBpZW50cyA/PyBbXSxcbiAgICAgICAgICBjaGFuZ2VBZGRyZXNzOiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzLFxuICAgICAgICB9LFxuICAgICAgICBjdXN0b21DaGFuZ2UsXG4gICAgICAgIHJlcUlkLFxuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBjb25zdCBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbiA9IGFsbE91dHB1dERldGFpbHMuc29tZShcbiAgICAob3V0cHV0KSA9PiAob3V0cHV0IGFzIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0KT8ubmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb25cbiAgKTtcblxuICBjb25zdCBjaGFuZ2VPdXRwdXRzID0gXy5maWx0ZXIoYWxsT3V0cHV0RGV0YWlscywgeyBleHRlcm5hbDogZmFsc2UgfSk7XG5cbiAgZnVuY3Rpb24gdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChvdXRwdXRzOiBPdXRwdXRbXSk6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10ge1xuICAgIHJldHVybiBvdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgc2NyaXB0OiBmcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0VG9TY3JpcHQob3V0cHV0LmFkZHJlc3MsIGNvaW4ubmFtZSksXG4gICAgICB2YWx1ZTogb3V0cHV0LmFtb3VudCA9PT0gJ21heCcgPyAnbWF4JyA6IChCaWdJbnQob3V0cHV0LmFtb3VudCkgYXMgYmlnaW50IHwgJ21heCcpLFxuICAgICAgZXh0ZXJuYWw6IG91dHB1dC5leHRlcm5hbCxcbiAgICB9KSk7XG4gIH1cblxuICBjb25zdCBtaXNzaW5nT3V0cHV0cyA9IG91dHB1dERpZmZlcmVuY2UoZXhwZWN0ZWRPdXRwdXRzLCB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpKTtcblxuICBjb25zdCBpbXBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGV4cGVjdGVkT3V0cHV0cyk7XG4gIGNvbnN0IGV4cGxpY2l0T3V0cHV0cyA9IG91dHB1dERpZmZlcmVuY2UodG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXREZXRhaWxzKSwgaW1wbGljaXRPdXRwdXRzKTtcblxuICAvLyB0aGVzZSBhcmUgYWxsIHRoZSBub24td2FsbGV0IG91dHB1dHMgdGhhdCBoYWQgYmVlbiBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHJlY2lwaWVudHNcbiAgY29uc3QgZXhwbGljaXRFeHRlcm5hbE91dHB1dHMgPSBleHBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIC8vIHRoaXMgaXMgdGhlIHN1bSBvZiBhbGwgdGhlIG9yaWdpbmFsbHkgZXhwbGljaXRseSBzcGVjaWZpZWQgbm9uLXdhbGxldCBvdXRwdXQgdmFsdWVzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHRvVE51bWJlcihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSksXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICkgYXMgVE51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBhbW91bnQgcGVydGFpbnMgdG8gdmVyaWZ5aW5nIHRoZSBwYXktYXMteW91LWdvLWZlZSBCaXRHb1xuICAgKiBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gdHJhbnNhY3Rpb25zIHNlbmRpbmcgbW9uZXkgb3V0IG9mIHRoZSB3YWxsZXQuIFRoZSBsb2dpYyBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkXG4gICAqIGluIHRoYXQgd2UgY29tcGFyZSB0aGUgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IHRoYXQgd2FzIHNwZWNpZmllZCBleHBsaWNpdGx5IGJ5IHRoZSB1c2VyIHRvIHRoZSBwb3J0aW9uXG4gICAqIHRoYXQgd2FzIHNwZWNpZmllZCBpbXBsaWNpdGx5LiBUbyBwcm90ZWN0IGN1c3RvbWVycyBmcm9tIHBlb3BsZSB0YW1wZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gb3V0cHV0cywgd2VcbiAgICogZGVmaW5lIGEgdGhyZXNob2xkIGZvciB0aGUgbWF4aW11bSBwZXJjZW50YWdlIG9mIHRoZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZCBpbiByZWxhdGlvbiB0byB0aGUgZXhwbGljaXRcbiAgICogZXh0ZXJuYWwgc3BlbmQuXG4gICAqXG4gICAqIFRoaXMgaGFzIGJlY29tZSBvYnNvbGV0ZSB3aXRoIHRoZSBpbnRvZHVjdGlvbiBvZiBgdXR4b2NvcmUucGF5Z28udmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoKWAuXG4gICAqL1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZXh0cmEgYWRkcmVzc2VzIGFyZSBjaGFuZ2UgYWRkcmVzc2VzXG4gIC8vIGdldCBhbGwgdGhlIGFkZGl0aW9uYWwgZXh0ZXJuYWwgb3V0cHV0cyB0aGUgc2VydmVyIGFkZGVkIGFuZCBjYWxjdWxhdGUgdGhlaXIgdmFsdWVzXG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gaW1wbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB0b1ROdW1iZXIoXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMucmVkdWNlKChzdW06IGJpZ2ludCwgbykgPT4gc3VtICsgQmlnSW50KG8udmFsdWUpLCBCaWdJbnQoMCkpLFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApIGFzIFROdW1iZXI7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IEV4cGVjdGVkT3V0cHV0W10gfCBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdKTogT3V0cHV0W10ge1xuICAgIHJldHVybiBvdXRwdXRzLm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgYWRkcmVzczogdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQob3V0cHV0LnNjcmlwdCwgY29pbi5uYW1lKSxcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5Y2hhaW5zLFxuICAgIGtleVNpZ25hdHVyZXM6IGdldEtleVNpZ25hdHVyZXMod2FsbGV0KSA/PyB7fSxcbiAgICBvdXRwdXRzOiBhbGxPdXRwdXREZXRhaWxzLFxuICAgIG1pc3NpbmdPdXRwdXRzOiB0b091dHB1dHMobWlzc2luZ091dHB1dHMpLFxuICAgIGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoZXhwbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoaW1wbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbixcbiAgICBjdXN0b21DaGFuZ2UsXG4gIH07XG59XG4iXX0=
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBdUlBLDRDQThLQztBQXJURCxvREFBNEI7QUFFNUIsb0RBQXVCO0FBQ3ZCLDhDQUF5RztBQUl6RywrQ0FPeUI7QUFDekIsK0NBQXFEO0FBQ3JELDRDQUE0QztBQUM1QywwREFBeUY7QUFDekYsMkNBQTBDO0FBRzFDLCtDQUFpRTtBQU1qRSxTQUFTLCtCQUErQixDQUN0QyxJQUFzQixFQUN0QixNQUFpRDtJQUtqRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLHdCQUFZLENBQUMsK0JBQStCLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsSUFBSSx3QkFBWSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ3BFLENBQUM7QUFFRCxLQUFLLFVBQVUsbUJBQW1CLENBQ2hDLElBQXNCLEVBQ3RCLE1BQXdDLEVBQ3hDLGVBQTZCLElBQUksQ0FBQyxZQUFZO0lBRTlDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXBDLElB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QU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxVQUFVLENBQ0wsQ0FBQztJQUViLFNBQVMsU0FBUyxDQUFDLE9BQTBFO1FBQzNGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QixPQUFPLEVBQUUsWUFBWSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQy9CLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtTQUMxQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPO1FBQ0wsU0FBUztRQUNULGFBQWEsRUFBRSxJQUFBLDRCQUFnQixFQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDN0MsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQztRQUN6Qyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDM0QsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLHVCQUF1QixDQUFDO1FBQzNELGFBQWE7UUFDYiwyQkFBMkI7UUFDM0IsMkJBQTJCO1FBQzNCLHlDQUF5QztRQUN6QyxZQUFZO0tBQ2IsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBJVHJhbnNhY3Rpb25SZWNpcGllbnQsIEtleUluZGljZXMsIFRyaXBsZSwgVmVyaWZpY2F0aW9uT3B0aW9ucywgV2FsbGV0IH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdFV0eG9Db2luLCBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHR5cGUgeyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCwgT3V0cHV0LCBQYXJzZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGZldGNoS2V5Y2hhaW5zLFxuICBnZXRLZXlTaWduYXR1cmVzLFxuICB0b0tleWNoYWluVHJpcGxlLFxuICB0b1hwdWJUcmlwbGUsXG4gIFV0eG9LZXljaGFpbixcbiAgVXR4b05hbWVkS2V5Y2hhaW5zLFxufSBmcm9tICcuLi8uLi9rZXljaGFpbnMnO1xuaW1wb3J0IHsgdmVyaWZ5S2V5U2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vdmVyaWZ5S2V5JztcbmltcG9ydCB7IEFkZHJlc3NDb2RlYyB9IGZyb20gJy4uL3JlY2lwaWVudCc7XG5pbXBvcnQgeyBDb21wYXJhYmxlT3V0cHV0LCBFeHBlY3RlZE91dHB1dCwgb3V0cHV0RGlmZmVyZW5jZSB9IGZyb20gJy4uL291dHB1dERpZmZlcmVuY2UnO1xuaW1wb3J0IHsgdG9UTnVtYmVyIH0gZnJvbSAnLi4vLi4vdG51bWJlcic7XG5cbmltcG9ydCB0eXBlIHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB9IGZyb20gJy4vZXhwbGFpblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IEN1c3RvbUNoYW5nZU9wdGlvbnMsIHBhcnNlT3V0cHV0IH0gZnJvbSAnLi9wYXJzZU91dHB1dCc7XG5cbmV4cG9ydCB0eXBlIENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8VFZhbHVlPiA9IChDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gfCBFeHBlY3RlZE91dHB1dCkgJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuZnVuY3Rpb24gdG9DYW5vbmljYWxUcmFuc2FjdGlvblJlY2lwaWVudChcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgb3V0cHV0OiB7IHZhbHVlU3RyaW5nOiBzdHJpbmc7IGFkZHJlc3M/OiBzdHJpbmcgfVxuKToge1xuICBhbW91bnQ6IGJpZ2ludDtcbiAgYWRkcmVzczogc3RyaW5nO1xufSB7XG4gIGNvbnN0IGFtb3VudCA9IEJpZ0ludChvdXRwdXQudmFsdWVTdHJpbmcpO1xuICBBZGRyZXNzQ29kZWMuYXNzZXJ0VmFsaWRUcmFuc2FjdGlvblJlY2lwaWVudCh7IGFtb3VudCwgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MgfSk7XG4gIGFzc2VydChvdXRwdXQuYWRkcmVzcywgJ2FkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgaWYgKEFkZHJlc3NDb2RlYy5pc1NjcmlwdFJlY2lwaWVudChvdXRwdXQuYWRkcmVzcykpIHtcbiAgICByZXR1cm4geyBhbW91bnQsIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzIH07XG4gIH1cbiAgcmV0dXJuIHsgYW1vdW50LCBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3Mob3V0cHV0LmFkZHJlc3MpIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlUmJmVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj4sXG4gIGFkZHJlc3NDb2RlYzogQWRkcmVzc0NvZGVjID0gY29pbi5hZGRyZXNzQ29kZWNcbik6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgd2FsbGV0IH0gPSBwYXJhbXM7XG5cbiAgYXNzZXJ0KHR4UGFyYW1zLnJiZlR4SWRzKTtcbiAgYXNzZXJ0KHR4UGFyYW1zLnJiZlR4SWRzLmxlbmd0aCA9PT0gMSk7XG5cbiAgY29uc3QgdHhUb0JlUmVwbGFjZWQgPSBhd2FpdCB3YWxsZXQuZ2V0VHJhbnNhY3Rpb24oeyB0eEhhc2g6IHR4UGFyYW1zLnJiZlR4SWRzWzBdLCBpbmNsdWRlUmJmOiB0cnVlIH0pO1xuICBjb25zdCByZWNpcGllbnRzID0gdHhUb0JlUmVwbGFjZWQub3V0cHV0cy5mbGF0TWFwKFxuICAgIChvdXRwdXQ6IHsgdmFsdWVTdHJpbmc6IHN0cmluZzsgYWRkcmVzcz86IHN0cmluZzsgd2FsbGV0Pzogc3RyaW5nIH0pID0+IHtcbiAgICAgIC8vIEZvciBzZWxmLXNlbmRzLCB0aGUgd2FsbGV0SWQgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgd2FsbGV0J3MgaWRcbiAgICAgIGlmIChvdXRwdXQud2FsbGV0ID09PSB3YWxsZXQuaWQoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gW3RvQ2Fub25pY2FsVHJhbnNhY3Rpb25SZWNpcGllbnQoY29pbiwgb3V0cHV0KV07XG4gICAgfVxuICApO1xuXG4gIC8vIFJlY3Vyc2UgaW50byBwYXJzZVRyYW5zYWN0aW9uIHdpdGggdGhlIGRlcml2ZWQgcmVjaXBpZW50cyBhbmQgd2l0aG91dCByYmZUeElkc1xuICByZXR1cm4gcGFyc2VUcmFuc2FjdGlvbihcbiAgICBjb2luLFxuICAgIHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHR4UGFyYW1zOiB7XG4gICAgICAgIC4uLnR4UGFyYW1zLFxuICAgICAgICByZWNpcGllbnRzLFxuICAgICAgICByYmZUeElkczogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGFkZHJlc3NDb2RlY1xuICApO1xufVxuXG5mdW5jdGlvbiB0b0V4cGVjdGVkT3V0cHV0cyhcbiAgYWRkcmVzc0NvZGVjOiBBZGRyZXNzQ29kZWMsXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBFeHBlY3RlZE91dHB1dFtdIHtcbiAgLy8gdmVyaWZ5IHRoYXQgZWFjaCByZWNpcGllbnQgZnJvbSB0eFBhcmFtcyBoYXMgdGhlaXIgb3duIG91dHB1dFxuICBjb25zdCBleHBlY3RlZE91dHB1dHM6IEV4cGVjdGVkT3V0cHV0W10gPSAodHhQYXJhbXMucmVjaXBpZW50cyA/PyBbXSkuZmxhdE1hcCgob3V0cHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dC5hZGRyZXNzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydCgnc2NyaXB0JyBpbiBvdXRwdXQsICdzY3JpcHQgaXMgcmVxdWlyZWQgZm9yIG5vbi1lbmNvZGVhYmxlIHNjcmlwdFB1YmtleXMnKTtcbiAgICAgIGlmIChvdXRwdXQuYW1vdW50LnRvU3RyaW5nKCkgIT09ICcwJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9ubHkgemVybyBhbW91bnRzIGFsbG93ZWQgZm9yIG5vbi1lbmNvZGVhYmxlIHNjcmlwdFB1YmtleXM6ICR7b3V0cHV0fWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHNjcmlwdDogYWRkcmVzc0NvZGVjLnRvT3V0cHV0U2NyaXB0KG91dHB1dCksXG4gICAgICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiBCaWdJbnQob3V0cHV0LmFtb3VudCksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBzY3JpcHQ6IGFkZHJlc3NDb2RlYy5mcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0VG9TY3JpcHQob3V0cHV0LmFkZHJlc3MpLFxuICAgICAgICB2YWx1ZTogb3V0cHV0LmFtb3VudCA9PT0gJ21heCcgPyAnbWF4JyA6IEJpZ0ludChvdXRwdXQuYW1vdW50KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgZXhwZWN0ZWRPdXRwdXRzLnB1c2goe1xuICAgICAgc2NyaXB0OiBhZGRyZXNzQ29kZWMudG9PdXRwdXRTY3JpcHQodHhQYXJhbXMuY2hhbmdlQWRkcmVzcyksXG4gICAgICAvLyBXaGVuIGFuIGV4dGVybmFsIGNoYW5nZSBhZGRyZXNzIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBjb3VudCBhbGwgb3V0cHV0cyBnb2luZyB0b3dhcmRzIHRoYXRcbiAgICAgIC8vIGFkZHJlc3MgaW4gdGhlIGV4cGVjdGVkIG91dHB1dHMgKHJlZ2FyZGxlc3Mgb2YgdGhlIG91dHB1dCBhbW91bnQpXG4gICAgICB2YWx1ZTogJ21heCcsXG4gICAgICAvLyBOb3RlIHRoYXQgdGhlIGNoYW5nZSBvdXRwdXQgaXMgbm90IHJlcXVpcmVkIHRvIGV4aXN0LCBzbyB3ZSBtYXJrIGl0IGFzIG9wdGlvbmFsLlxuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdGVkT3V0cHV0cztcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5cyh1c2VyS2V5Y2hhaW46IFV0eG9LZXljaGFpbiwgY3VzdG9tQ2hhbmdlOiBDdXN0b21DaGFuZ2VPcHRpb25zKTogdm9pZCB7XG4gIGZvciAoY29uc3Qga2V5SW5kZXggb2YgW0tleUluZGljZXMuVVNFUiwgS2V5SW5kaWNlcy5CQUNLVVAsIEtleUluZGljZXMuQklUR09dKSB7XG4gICAgaWYgKFxuICAgICAgIXZlcmlmeUtleVNpZ25hdHVyZSh7XG4gICAgICAgIHVzZXJLZXljaGFpbixcbiAgICAgICAga2V5Y2hhaW5Ub1ZlcmlmeTogY3VzdG9tQ2hhbmdlLmtleXNba2V5SW5kZXhdLFxuICAgICAgICBrZXlTaWduYXR1cmU6IGN1c3RvbUNoYW5nZS5zaWduYXR1cmVzW2tleUluZGV4XSxcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byB2ZXJpZnkgY3VzdG9tIGNoYW5nZSAke0tleUluZGljZXNba2V5SW5kZXhdLnRvTG93ZXJDYXNlKCl9IGtleSBzaWduYXR1cmVgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlVHJhbnNhY3Rpb248VE51bWJlciBleHRlbmRzIGJpZ2ludCB8IG51bWJlcj4oXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnM8VE51bWJlcj4sXG4gIGFkZHJlc3NDb2RlYzogQWRkcmVzc0NvZGVjID0gY29pbi5hZGRyZXNzQ29kZWNcbik6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb248VE51bWJlcj4+IHtcbiAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCwgd2FsbGV0LCB2ZXJpZmljYXRpb24gPSB7fSwgcmVxSWQgfSA9IHBhcmFtcztcblxuICAvLyBCcmFuY2ggb2ZmIGVhcmx5IGZvciBSQkYgdHJhbnNhY3Rpb25zXG4gIGlmICh0eFBhcmFtcy5yYmZUeElkcykge1xuICAgIHJldHVybiBwYXJzZVJiZlRyYW5zYWN0aW9uKGNvaW4sIHBhcmFtcywgYWRkcmVzc0NvZGVjKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBjb25zdCBlZmZlY3RpdmVUeEhleCA9IHR4UHJlYnVpbGQudHhIZXhQc2J0ID8/IHR4UHJlYnVpbGQudHhIZXg7XG4gIGlmIChfLmlzVW5kZWZpbmVkKGVmZmVjdGl2ZVR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhhZGRyZXNzQ29kZWMsIHR4UGFyYW1zKTtcblxuICAvLyBnZXQgdGhlIGtleWNoYWlucyBmcm9tIHRoZSBjdXN0b20gY2hhbmdlIHdhbGxldCBpZiBuZWVkZWRcbiAgbGV0IGN1c3RvbUNoYW5nZTogQ3VzdG9tQ2hhbmdlT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgeyBjdXN0b21DaGFuZ2VXYWxsZXRJZCA9IHVuZGVmaW5lZCB9ID0gd2FsbGV0LmNvaW5TcGVjaWZpYygpIHx8IHt9O1xuICBpZiAoY3VzdG9tQ2hhbmdlV2FsbGV0SWQpIHtcbiAgICAvLyBmZXRjaCBrZXljaGFpbnMgZnJvbSBjdXN0b20gY2hhbmdlIHdhbGxldCBmb3IgZGVyaXZpbmcgYWRkcmVzc2VzLlxuICAgIC8vIFRoZXNlIGtleWNoYWlucyBzaG91bGQgYmUgc2lnbmVkIGFuZCB0aGlzIHNob3VsZCBiZSB2ZXJpZmllZCBpbiB2ZXJpZnlUcmFuc2FjdGlvblxuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMgPSB3YWxsZXQuX3dhbGxldC5jdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzO1xuICAgIGNvbnN0IGN1c3RvbUNoYW5nZVdhbGxldDogV2FsbGV0ID0gYXdhaXQgY29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IGN1c3RvbUNoYW5nZVdhbGxldElkIH0pO1xuICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleXMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCBjdXN0b21DaGFuZ2VXYWxsZXQsIHJlcUlkKTtcblxuICAgIGlmICghY3VzdG9tQ2hhbmdlS2V5cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZmV0Y2gga2V5Y2hhaW5zIGZvciBjdXN0b20gY2hhbmdlIHdhbGxldCcpO1xuICAgIH1cblxuICAgIGlmIChjdXN0b21DaGFuZ2VLZXlzLnVzZXIgJiYgY3VzdG9tQ2hhbmdlS2V5cy5iYWNrdXAgJiYgY3VzdG9tQ2hhbmdlS2V5cy5iaXRnbyAmJiBjdXN0b21DaGFuZ2VXYWxsZXQpIHtcbiAgICAgIGNvbnN0IGN1c3RvbUNoYW5nZUtleWNoYWluczogVHJpcGxlPFV0eG9LZXljaGFpbj4gPSBbXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMudXNlcixcbiAgICAgICAgY3VzdG9tQ2hhbmdlS2V5cy5iYWNrdXAsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYml0Z28sXG4gICAgICBdO1xuXG4gICAgICBjdXN0b21DaGFuZ2UgPSB7XG4gICAgICAgIGtleXM6IGN1c3RvbUNoYW5nZUtleWNoYWlucyxcbiAgICAgICAgc2lnbmF0dXJlczogW2N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMudXNlciwgY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcy5iYWNrdXAsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYml0Z29dLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBsZXQgY3VzdG9tQ2hhbmdlWHB1YnM6IFRyaXBsZTxzdHJpbmc+IHwgdW5kZWZpbmVkO1xuICBpZiAoY3VzdG9tQ2hhbmdlKSB7XG4gICAgdmVyaWZ5Q3VzdG9tQ2hhbmdlS2V5cyhrZXljaGFpbkFycmF5W0tleUluZGljZXMuVVNFUl0sIGN1c3RvbUNoYW5nZSk7XG4gICAgY3VzdG9tQ2hhbmdlWHB1YnMgPSB0b1hwdWJUcmlwbGUoY3VzdG9tQ2hhbmdlLmtleXMpO1xuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiBlZmZlY3RpdmVUeEhleCxcbiAgICB0eEluZm86IHR4UHJlYnVpbGQudHhJbmZvLFxuICAgIHB1YnM6IGtleWNoYWluQXJyYXkubWFwKChrKSA9PiBrLnB1YikgYXMgVHJpcGxlPHN0cmluZz4sXG4gICAgY3VzdG9tQ2hhbmdlWHB1YnMsXG4gIH0pO1xuXG4gIGNvbnN0IGFsbE91dHB1dHMgPSBbLi4uZXhwbGFuYXRpb24ub3V0cHV0cywgLi4uZXhwbGFuYXRpb24uY2hhbmdlT3V0cHV0c107XG5cbiAgLyoqXG4gICAqIExvb3AgdGhyb3VnaCBhbGwgdGhlIG91dHB1dHMgYW5kIGNsYXNzaWZ5IGVhY2ggb2YgdGhlbSBhcyBlaXRoZXIgaW50ZXJuYWwgc3BlbmRzXG4gICAqIG9yIGV4dGVybmFsIHNwZW5kcyBieSBzZXR0aW5nIHRoZSBcImV4dGVybmFsXCIgcHJvcGVydHkgdG8gdHJ1ZSBvciBmYWxzZSBvbiB0aGUgb3V0cHV0IG9iamVjdC5cbiAgICovXG4gIGNvbnN0IGFsbE91dHB1dERldGFpbHM6IE91dHB1dFtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYWxsT3V0cHV0cy5tYXAoKGN1cnJlbnRPdXRwdXQpID0+IHtcbiAgICAgIHJldHVybiBwYXJzZU91dHB1dCh7XG4gICAgICAgIGN1cnJlbnRPdXRwdXQsXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHR4UHJlYnVpbGQsXG4gICAgICAgIHZlcmlmaWNhdGlvbixcbiAgICAgICAga2V5Y2hhaW5BcnJheTogdG9LZXljaGFpblRyaXBsZShrZXljaGFpbnMpLFxuICAgICAgICB3YWxsZXQsXG4gICAgICAgIGFkZHJlc3NDb2RlYyxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiB0eFBhcmFtcy5yZWNpcGllbnRzID8/IFtdLFxuICAgICAgICAgIGNoYW5nZUFkZHJlc3M6IHR4UGFyYW1zLmNoYW5nZUFkZHJlc3MsXG4gICAgICAgIH0sXG4gICAgICAgIGN1c3RvbUNoYW5nZSxcbiAgICAgICAgcmVxSWQsXG4gICAgICB9KTtcbiAgICB9KVxuICApO1xuXG4gIGNvbnN0IG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uID0gYWxsT3V0cHV0RGV0YWlscy5zb21lKFxuICAgIChvdXRwdXQpID0+IChvdXRwdXQgYXMgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQpPy5uZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvblxuICApO1xuXG4gIGNvbnN0IGNoYW5nZU91dHB1dHMgPSBfLmZpbHRlcihhbGxPdXRwdXREZXRhaWxzLCB7IGV4dGVybmFsOiBmYWxzZSB9KTtcblxuICBmdW5jdGlvbiB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKG91dHB1dHM6IE91dHB1dFtdKTogQ29tcGFyYWJsZU91dHB1dFdpdGhFeHRlcm5hbDxiaWdpbnQgfCAnbWF4Jz5bXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBzY3JpcHQ6IGFkZHJlc3NDb2RlYy5mcm9tRXh0ZW5kZWRBZGRyZXNzRm9ybWF0VG9TY3JpcHQob3V0cHV0LmFkZHJlc3MpLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKGV4cGVjdGVkT3V0cHV0cywgdG9Db21wYXJhYmxlT3V0cHV0c1dpdGhFeHRlcm5hbChhbGxPdXRwdXRzKSk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZSh0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLCBleHBlY3RlZE91dHB1dHMpO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB0b1ROdW1iZXIoXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHMucmVkdWNlKChzdW06IGJpZ2ludCwgbykgPT4gc3VtICsgQmlnSW50KG8udmFsdWUpLCBCaWdJbnQoMCkpLFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApIGFzIFROdW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmQgYW1vdW50IHBlcnRhaW5zIHRvIHZlcmlmeWluZyB0aGUgcGF5LWFzLXlvdS1nby1mZWUgQml0R29cbiAgICogYXV0b21hdGljYWxseSBhcHBsaWVkIHRvIHRyYW5zYWN0aW9ucyBzZW5kaW5nIG1vbmV5IG91dCBvZiB0aGUgd2FsbGV0LiBUaGUgbG9naWMgaXMgZmFpcmx5IHN0cmFpZ2h0Zm9yd2FyZFxuICAgKiBpbiB0aGF0IHdlIGNvbXBhcmUgdGhlIGV4dGVybmFsIHNwZW5kIGFtb3VudCB0aGF0IHdhcyBzcGVjaWZpZWQgZXhwbGljaXRseSBieSB0aGUgdXNlciB0byB0aGUgcG9ydGlvblxuICAgKiB0aGF0IHdhcyBzcGVjaWZpZWQgaW1wbGljaXRseS4gVG8gcHJvdGVjdCBjdXN0b21lcnMgZnJvbSBwZW9wbGUgdGFtcGVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIG91dHB1dHMsIHdlXG4gICAqIGRlZmluZSBhIHRocmVzaG9sZCBmb3IgdGhlIG1heGltdW0gcGVyY2VudGFnZSBvZiB0aGUgaW1wbGljaXQgZXh0ZXJuYWwgc3BlbmQgaW4gcmVsYXRpb24gdG8gdGhlIGV4cGxpY2l0XG4gICAqIGV4dGVybmFsIHNwZW5kLlxuICAgKlxuICAgKiBUaGlzIGhhcyBiZWNvbWUgb2Jzb2xldGUgd2l0aCB0aGUgaW50b2R1Y3Rpb24gb2YgYHV0eG9jb3JlLnBheWdvLnZlcmlmeVBheUdvQWRkcmVzc1Byb29mKClgLlxuICAgKi9cblxuICAvLyBtYWtlIHN1cmUgdGhhdCBhbGwgdGhlIGV4dHJhIGFkZHJlc3NlcyBhcmUgY2hhbmdlIGFkZHJlc3Nlc1xuICAvLyBnZXQgYWxsIHRoZSBhZGRpdGlvbmFsIGV4dGVybmFsIG91dHB1dHMgdGhlIHNlcnZlciBhZGRlZCBhbmQgY2FsY3VsYXRlIHRoZWlyIHZhbHVlc1xuICBjb25zdCBpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyA9IGltcGxpY2l0T3V0cHV0cy5maWx0ZXIoKG91dHB1dCkgPT4gb3V0cHV0LmV4dGVybmFsKTtcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50ID0gdG9UTnVtYmVyKFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSxcbiAgICBjb2luLmFtb3VudFR5cGVcbiAgKSBhcyBUTnVtYmVyO1xuXG4gIGZ1bmN0aW9uIHRvT3V0cHV0cyhvdXRwdXRzOiBFeHBlY3RlZE91dHB1dFtdIHwgQ29tcGFyYWJsZU91dHB1dFdpdGhFeHRlcm5hbDxiaWdpbnQgfCAnbWF4Jz5bXSk6IE91dHB1dFtdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3NDb2RlYy50b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0KSxcbiAgICAgIGFtb3VudDogb3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgICBleHRlcm5hbDogb3V0cHV0LmV4dGVybmFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAga2V5Y2hhaW5zLFxuICAgIGtleVNpZ25hdHVyZXM6IGdldEtleVNpZ25hdHVyZXMod2FsbGV0KSA/PyB7fSxcbiAgICBvdXRwdXRzOiBhbGxPdXRwdXREZXRhaWxzLFxuICAgIG1pc3NpbmdPdXRwdXRzOiB0b091dHB1dHMobWlzc2luZ091dHB1dHMpLFxuICAgIGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoZXhwbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzOiB0b091dHB1dHMoaW1wbGljaXRFeHRlcm5hbE91dHB1dHMpLFxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgZXhwbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCxcbiAgICBuZWVkc0N1c3RvbUNoYW5nZUtleVNpZ25hdHVyZVZlcmlmaWNhdGlvbixcbiAgICBjdXN0b21DaGFuZ2UsXG4gIH07XG59XG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { type AddressFormat } from '@bitgo/wasm-utxo';
2
- import { UtxoCoinName } from '../../names';
2
+ import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
3
3
  export declare const pubkeyProd: Buffer<ArrayBuffer>;
4
4
  export declare const pubkeyTestnet: Buffer<ArrayBuffer>;
5
- export declare function getReplayProtectionPubkeys(coinName: UtxoCoinName): Buffer[];
6
- export declare function getReplayProtectionAddresses(coinName: UtxoCoinName, format?: AddressFormat): string[];
5
+ export declare function getReplayProtectionPubkeys(coinName: UtxoCoinName | WasmUtxoCoinName): Buffer[];
6
+ export declare function getReplayProtectionAddresses(coinName: UtxoCoinName | WasmUtxoCoinName, format?: AddressFormat): string[];
7
7
  export declare function isReplayProtectionUnspent(u: {
8
8
  address: string;
9
- }, coinName: UtxoCoinName): boolean;
9
+ }, coinName: UtxoCoinName | WasmUtxoCoinName): boolean;
10
10
  //# sourceMappingURL=replayProtection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAU3E;AAWD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAE,aAAyB,GAAG,MAAM,EAAE,CAWhH;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEjG"}
1
+ {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,MAAM,EAAE,CAU9F;AAWD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EACzC,MAAM,GAAE,aAAyB,GAChC,MAAM,EAAE,CAWV;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,GAAG,OAAO,CAEpH"}
@@ -41,4 +41,4 @@ function getReplayProtectionAddresses(coinName, format = 'default') {
41
41
  function isReplayProtectionUnspent(u, coinName) {
42
42
  return getReplayProtectionAddresses(coinName).includes(u.address);
43
43
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLGdFQVVDO0FBV0Qsb0VBV0M7QUFFRCw4REFFQztBQTVDRCxnREFBK0Q7QUFJbEQsUUFBQSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV0RyxRQUFBLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXRILFNBQWdCLDBCQUEwQixDQUFDLFFBQXNCO0lBQy9ELFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLENBQUMsa0JBQVUsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLHFCQUFhLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQscUJBQXFCO0FBQ3JCLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRyx3QkFBd0I7QUFDeEIsc0NBQXNDO0FBQ3RDLHFEQUFxRDtBQUNyRCxNQUFNLDhCQUE4QixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTlHLFNBQWdCLDRCQUE0QixDQUFDLFFBQXNCLEVBQUUsU0FBd0IsU0FBUztJQUNwRyxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pILEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLG1CQUFPLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3BIO1lBQ0UsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLENBQXNCLEVBQUUsUUFBc0I7SUFDdEYsT0FBTyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRyZXNzLCB0eXBlIEFkZHJlc3NGb3JtYXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5leHBvcnQgY29uc3QgcHVia2V5UHJvZCA9IEJ1ZmZlci5mcm9tKCcwMjU1YjlmNzFhYzJjNzhmZmZkODNlM2UzN2I5ZTE3YWU3MGQ1NDM3YjdmNTZkMGVkMmU5M2I3ZGUwODAxNWFhNTknLCAnaGV4Jyk7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlUZXN0bmV0ID0gQnVmZmVyLmZyb20oJzAyMTlkYTQ4NDEyYzIyNjg4NjVmZThjMTI2MzI3ZDFiMTJlZWUzNTBhM2I2OWViMDllMzMyM2NjOWExMTgyODk0NScsICdoZXgnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBCdWZmZXJbXSB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdiY2gnOlxuICAgIGNhc2UgJ2Jzdic6XG4gICAgICByZXR1cm4gW3B1YmtleVByb2RdO1xuICAgIGNhc2UgJ3Ric3YnOlxuICAgIGNhc2UgJ3RiY2gnOlxuICAgICAgcmV0dXJuIFtwdWJrZXlUZXN0bmV0XTtcbiAgfVxuICByZXR1cm4gW107XG59XG5cbi8vIHNoKHBrKHB1YmtleVByb2QpKVxuLy8gMzNwMXE3bVRHeWVNNVVuWkVSR2lNY1ZVa1kxMlNDc2F0QVxuLy8gYml0Y29pbmNhc2g6cHF0NXg5dzBtNnowZjN6bmpra3g3OXdsM2w3eXdyc3plc2VtcDh4Z3BmXG5jb25zdCByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Byb2QgPSBbQnVmZmVyLmZyb20oJ2E5MTQxNzQzMTVjZmRlODRmNGM0NTM5NWFjNmYxNWRmOGZmYzQ3MGUwMmNjODcnLCAnaGV4JyldO1xuLy8gc2gocGsocHVia2V5VGVzdG5ldCkpXG4vLyAyTXVNblBvU0RnV0VwTldIMjhYMm5MdFlNWFFKQ3lUNjFlWVxuLy8gYmNodGVzdDpwcXRqbW56d3FmZmtyazIzNDlnM2NlY2Z3d2p3eHVzdm5xODduMDdjYWxcbmNvbnN0IHJlcGxheVByb3RlY3Rpb25TY3JpcHRzVGVzdG5ldCA9IFtCdWZmZXIuZnJvbSgnYTkxNDE3MmRjYzRlMDI1MzYxZDk1MWE5NTExYzY3MDk3M2E0ZTM3MjBjOTg4NycsICdoZXgnKV07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUsIGZvcm1hdDogQWRkcmVzc0Zvcm1hdCA9ICdkZWZhdWx0Jyk6IHN0cmluZ1tdIHtcbiAgc3dpdGNoIChjb2luTmFtZSkge1xuICAgIGNhc2UgJ2JjaCc6XG4gICAgY2FzZSAnYnN2JzpcbiAgICAgIHJldHVybiByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Byb2QubWFwKChzY3JpcHQpID0+IGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhDb2luKHNjcmlwdCwgY29pbk5hbWUsIGZvcm1hdCkpO1xuICAgIGNhc2UgJ3Ric3YnOlxuICAgIGNhc2UgJ3RiY2gnOlxuICAgICAgcmV0dXJuIHJlcGxheVByb3RlY3Rpb25TY3JpcHRzVGVzdG5ldC5tYXAoKHNjcmlwdCkgPT4gYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0V2l0aENvaW4oc2NyaXB0LCBjb2luTmFtZSwgZm9ybWF0KSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXBsYXlQcm90ZWN0aW9uVW5zcGVudCh1OiB7IGFkZHJlc3M6IHN0cmluZyB9LCBjb2luTmFtZTogVXR4b0NvaW5OYW1lKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKGNvaW5OYW1lKS5pbmNsdWRlcyh1LmFkZHJlc3MpO1xufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLGdFQVVDO0FBV0Qsb0VBY0M7QUFFRCw4REFFQztBQS9DRCxnREFBK0Q7QUFJbEQsUUFBQSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV0RyxRQUFBLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRXRILFNBQWdCLDBCQUEwQixDQUFDLFFBQXlDO0lBQ2xGLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLENBQUMsa0JBQVUsQ0FBQyxDQUFDO1FBQ3RCLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLHFCQUFhLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQscUJBQXFCO0FBQ3JCLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRyx3QkFBd0I7QUFDeEIsc0NBQXNDO0FBQ3RDLHFEQUFxRDtBQUNyRCxNQUFNLDhCQUE4QixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRTlHLFNBQWdCLDRCQUE0QixDQUMxQyxRQUF5QyxFQUN6QyxTQUF3QixTQUFTO0lBRWpDLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsbUJBQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakgsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU07WUFDVCxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsbUJBQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDcEg7WUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsQ0FBc0IsRUFBRSxRQUF5QztJQUN6RyxPQUFPLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZHJlc3MsIHR5cGUgQWRkcmVzc0Zvcm1hdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBVdHhvQ29pbk5hbWUsIFdhc21VdHhvQ29pbk5hbWUgfSBmcm9tICcuLi8uLi9uYW1lcyc7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlQcm9kID0gQnVmZmVyLmZyb20oJzAyNTViOWY3MWFjMmM3OGZmZmQ4M2UzZTM3YjllMTdhZTcwZDU0MzdiN2Y1NmQwZWQyZTkzYjdkZTA4MDE1YWE1OScsICdoZXgnKTtcblxuZXhwb3J0IGNvbnN0IHB1YmtleVRlc3RuZXQgPSBCdWZmZXIuZnJvbSgnMDIxOWRhNDg0MTJjMjI2ODg2NWZlOGMxMjYzMjdkMWIxMmVlZTM1MGEzYjY5ZWIwOWUzMzIzY2M5YTExODI4OTQ1JywgJ2hleCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMoY29pbk5hbWU6IFV0eG9Db2luTmFtZSB8IFdhc21VdHhvQ29pbk5hbWUpOiBCdWZmZXJbXSB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdiY2gnOlxuICAgIGNhc2UgJ2Jzdic6XG4gICAgICByZXR1cm4gW3B1YmtleVByb2RdO1xuICAgIGNhc2UgJ3Ric3YnOlxuICAgIGNhc2UgJ3RiY2gnOlxuICAgICAgcmV0dXJuIFtwdWJrZXlUZXN0bmV0XTtcbiAgfVxuICByZXR1cm4gW107XG59XG5cbi8vIHNoKHBrKHB1YmtleVByb2QpKVxuLy8gMzNwMXE3bVRHeWVNNVVuWkVSR2lNY1ZVa1kxMlNDc2F0QVxuLy8gYml0Y29pbmNhc2g6cHF0NXg5dzBtNnowZjN6bmpra3g3OXdsM2w3eXdyc3plc2VtcDh4Z3BmXG5jb25zdCByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Byb2QgPSBbQnVmZmVyLmZyb20oJ2E5MTQxNzQzMTVjZmRlODRmNGM0NTM5NWFjNmYxNWRmOGZmYzQ3MGUwMmNjODcnLCAnaGV4JyldO1xuLy8gc2gocGsocHVia2V5VGVzdG5ldCkpXG4vLyAyTXVNblBvU0RnV0VwTldIMjhYMm5MdFlNWFFKQ3lUNjFlWVxuLy8gYmNodGVzdDpwcXRqbW56d3FmZmtyazIzNDlnM2NlY2Z3d2p3eHVzdm5xODduMDdjYWxcbmNvbnN0IHJlcGxheVByb3RlY3Rpb25TY3JpcHRzVGVzdG5ldCA9IFtCdWZmZXIuZnJvbSgnYTkxNDE3MmRjYzRlMDI1MzYxZDk1MWE5NTExYzY3MDk3M2E0ZTM3MjBjOTg4NycsICdoZXgnKV07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lIHwgV2FzbVV0eG9Db2luTmFtZSxcbiAgZm9ybWF0OiBBZGRyZXNzRm9ybWF0ID0gJ2RlZmF1bHQnXG4pOiBzdHJpbmdbXSB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdiY2gnOlxuICAgIGNhc2UgJ2Jzdic6XG4gICAgICByZXR1cm4gcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNQcm9kLm1hcCgoc2NyaXB0KSA9PiBhZGRyZXNzLmZyb21PdXRwdXRTY3JpcHRXaXRoQ29pbihzY3JpcHQsIGNvaW5OYW1lLCBmb3JtYXQpKTtcbiAgICBjYXNlICd0YnN2JzpcbiAgICBjYXNlICd0YmNoJzpcbiAgICAgIHJldHVybiByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Rlc3RuZXQubWFwKChzY3JpcHQpID0+IGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhDb2luKHNjcmlwdCwgY29pbk5hbWUsIGZvcm1hdCkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQodTogeyBhZGRyZXNzOiBzdHJpbmcgfSwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSB8IFdhc21VdHhvQ29pbk5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbk5hbWUpLmluY2x1ZGVzKHUuYWRkcmVzcyk7XG59XG4iXX0=
@@ -1,12 +1,12 @@
1
1
  import { BIP32, bip32, fixedScriptWallet } from '@bitgo/wasm-utxo';
2
- import { UtxoCoinName } from '../../names';
2
+ import { UtxoCoinName, WasmUtxoCoinName } from '../../names';
3
3
  import type { Unspent } from '../../unspent';
4
4
  import { Musig2Participant } from './musig2';
5
5
  import { ReplayProtectionKeys } from './signPsbtWasm';
6
6
  export declare function signAndVerifyPsbt(psbt: fixedScriptWallet.BitGoPsbt, signerKeychain: bip32.BIP32Interface | BIP32, rootWalletKeys: fixedScriptWallet.RootWalletKeys, replayProtection: ReplayProtectionKeys, options?: {
7
7
  writeSignedWith?: boolean;
8
8
  }): fixedScriptWallet.BitGoPsbt;
9
- export declare function signTransaction(coin: Musig2Participant<fixedScriptWallet.BitGoPsbt>, tx: fixedScriptWallet.BitGoPsbt, signerKeychain: bip32.BIP32Interface | undefined, coinName: UtxoCoinName, params: {
9
+ export declare function signTransaction(coin: Musig2Participant<fixedScriptWallet.BitGoPsbt>, tx: fixedScriptWallet.BitGoPsbt, signerKeychain: bip32.BIP32Interface | undefined, coinName: UtxoCoinName | WasmUtxoCoinName, params: {
10
10
  walletId: string | undefined;
11
11
  txInfo: {
12
12
  unspents?: Unspent<bigint | number>[];
@@ -1 +1 @@
1
- {"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAA4D,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGhH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,CAAC,SAAS,EACjC,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,EAC5C,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,iBAAiB,CAAC,SAAS,CAI7B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACpD,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAC/B,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,EAChD,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,OAAO,CAAC,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,CA4B/C"}
1
+ {"version":3,"file":"signTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signTransaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAA4D,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGhH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,CAAC,SAAS,EACjC,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,EAC5C,cAAc,EAAE,iBAAiB,CAAC,cAAc,EAChD,gBAAgB,EAAE,oBAAoB,EACtC,OAAO,GAAE;IAAE,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,iBAAiB,CAAC,SAAS,CAI7B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,EACpD,EAAE,EAAE,iBAAiB,CAAC,SAAS,EAC/B,cAAc,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,EAChD,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EACzC,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9D,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,OAAO,CAAC,iBAAiB,CAAC,SAAS,GAAG,MAAM,CAAC,CA4B/C"}
@@ -43,4 +43,4 @@ async function signTransaction(coin, tx, signerKeychain, coinName, params) {
43
43
  }
44
44
  return signedPsbt;
45
45
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLDhDQVVDO0FBRUQsMENBNENDO0FBckVELG9EQUE0QjtBQUU1Qiw4Q0FBMkM7QUFDM0Msb0RBQXVCO0FBQ3ZCLGdEQUFtRTtBQU1uRSxpREFBZ0g7QUFDaEgseURBQWdFO0FBRWhFLFNBQWdCLGlCQUFpQixDQUMvQixJQUFpQyxFQUNqQyxjQUE0QyxFQUM1QyxjQUFnRCxFQUNoRCxnQkFBc0MsRUFDdEMsVUFBeUMsRUFBRTtJQUUzQyxJQUFBLGdCQUFNLEVBQUMsY0FBYyxFQUFFLCtDQUErQyxDQUFDLENBQUM7SUFDeEUsSUFBQSxnQkFBTSxFQUFDLGdCQUFnQixFQUFFLGlEQUFpRCxDQUFDLENBQUM7SUFDNUUsT0FBTyxJQUFBLG9DQUFxQixFQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxJQUFvRCxFQUNwRCxFQUErQixFQUMvQixjQUFnRCxFQUNoRCxRQUFzQixFQUN0QixNQVVDO0lBRUQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksZ0JBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDeEMsc0dBQXNHO1FBQ3RHLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLEVBQUUsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdDLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsSUFBSSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7SUFDbEUsSUFBQSxnQkFBTSxFQUFDLElBQUEsbUJBQVEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUN2RCxNQUFNLGNBQWMsR0FBRyw2QkFBaUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsZ0RBQWlDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO1FBQ25HLGdCQUFnQixFQUFFO1lBQ2hCLFVBQVUsRUFBRSxJQUFBLDZDQUEwQixFQUFDLFFBQVEsQ0FBQztTQUNqRDtRQUNELFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQUMsQ0FBQztJQUNILElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgaXNUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJJUDMyLCBiaXAzMiwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuaW1wb3J0IHR5cGUgeyBVbnNwZW50IH0gZnJvbSAnLi4vLi4vdW5zcGVudCc7XG5cbmltcG9ydCB7IE11c2lnMlBhcnRpY2lwYW50IH0gZnJvbSAnLi9tdXNpZzInO1xuaW1wb3J0IHsgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtLCBzaWduQW5kVmVyaWZ5UHNidFdhc20sIFJlcGxheVByb3RlY3Rpb25LZXlzIH0gZnJvbSAnLi9zaWduUHNidFdhc20nO1xuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMgfSBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVBzYnQoXG4gIHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IGJpcDMyLkJJUDMySW50ZXJmYWNlIHwgQklQMzIsXG4gIHJvb3RXYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyxcbiAgcmVwbGF5UHJvdGVjdGlvbjogUmVwbGF5UHJvdGVjdGlvbktleXMsXG4gIG9wdGlvbnM6IHsgd3JpdGVTaWduZWRXaXRoPzogYm9vbGVhbiB9ID0ge31cbik6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCB7XG4gIGFzc2VydChyb290V2FsbGV0S2V5cywgJ3Jvb3RXYWxsZXRLZXlzIHJlcXVpcmVkIGZvciB3YXNtLXV0eG8gc2lnbmluZycpO1xuICBhc3NlcnQocmVwbGF5UHJvdGVjdGlvbiwgJ3JlcGxheVByb3RlY3Rpb24gcmVxdWlyZWQgZm9yIHdhc20tdXR4byBzaWduaW5nJyk7XG4gIHJldHVybiBzaWduQW5kVmVyaWZ5UHNidFdhc20ocHNidCwgc2lnbmVyS2V5Y2hhaW4sIHJvb3RXYWxsZXRLZXlzLCByZXBsYXlQcm90ZWN0aW9uLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihcbiAgY29pbjogTXVzaWcyUGFydGljaXBhbnQ8Zml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PixcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IGJpcDMyLkJJUDMySW50ZXJmYWNlIHwgdW5kZWZpbmVkLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICBwYXJhbXM6IHtcbiAgICB3YWxsZXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHR4SW5mbzogeyB1bnNwZW50cz86IFVuc3BlbnQ8YmlnaW50IHwgbnVtYmVyPltdIH0gfCB1bmRlZmluZWQ7XG4gICAgaXNMYXN0U2lnbmF0dXJlOiBib29sZWFuO1xuICAgIHNpZ25pbmdTdGVwOiAnc2lnbmVyTm9uY2UnIHwgJ2Nvc2lnbmVyTm9uY2UnIHwgJ3NpZ25lclNpZ25hdHVyZScgfCB1bmRlZmluZWQ7XG4gICAgcHViczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgY29zaWduZXJQdWI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKiogV2hlbiB0cnVlIChkZWZhdWx0KSwgZXh0cmFjdCBmaW5hbGl6ZWQgUFNCVCB0byBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LiBXaGVuIGZhbHNlLCByZXR1cm4gZmluYWxpemVkIFBTQlQuICovXG4gICAgZXh0cmFjdFRyYW5zYWN0aW9uPzogYm9vbGVhbjtcbiAgICB3cml0ZVNpZ25lZFdpdGg/OiBib29sZWFuO1xuICB9XG4pOiBQcm9taXNlPGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCB8IEJ1ZmZlcj4ge1xuICBsZXQgaXNMYXN0U2lnbmF0dXJlID0gZmFsc2U7XG4gIGlmIChfLmlzQm9vbGVhbihwYXJhbXMuaXNMYXN0U2lnbmF0dXJlKSkge1xuICAgIC8vIGlmIGJ1aWxkIGlzIGNhbGxlZCBpbnN0ZWFkIG9mIGJ1aWxkSW5jb21wbGV0ZSwgbm8gc2lnbmF0dXJlIHBsYWNlaG9sZGVycyBhcmUgbGVmdCBpbiB0aGUgc2lnIHNjcmlwdFxuICAgIGlzTGFzdFNpZ25hdHVyZSA9IHBhcmFtcy5pc0xhc3RTaWduYXR1cmU7XG4gIH1cblxuICBjb25zdCB7IGV4dHJhY3RUcmFuc2FjdGlvbiA9IHRydWUgfSA9IHBhcmFtcztcblxuICBhc3NlcnQocGFyYW1zLnB1YnMsICdwdWJzIGFyZSByZXF1aXJlZCBmb3IgZml4ZWQgc2NyaXB0IHNpZ25pbmcnKTtcbiAgYXNzZXJ0KGlzVHJpcGxlKHBhcmFtcy5wdWJzKSwgJ3B1YnMgbXVzdCBiZSBhIHRyaXBsZScpO1xuICBjb25zdCByb290V2FsbGV0S2V5cyA9IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLmZyb21YcHVicyhwYXJhbXMucHVicyk7XG4gIGNvbnN0IHNpZ25lZFBzYnQgPSBhd2FpdCBzaWduUHNidFdpdGhNdXNpZzJQYXJ0aWNpcGFudFdhc20oY29pbiwgdHgsIHNpZ25lcktleWNoYWluLCByb290V2FsbGV0S2V5cywge1xuICAgIHJlcGxheVByb3RlY3Rpb246IHtcbiAgICAgIHB1YmxpY0tleXM6IGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzKGNvaW5OYW1lKSxcbiAgICB9LFxuICAgIHNpZ25pbmdTdGVwOiBwYXJhbXMuc2lnbmluZ1N0ZXAsXG4gICAgd2FsbGV0SWQ6IHBhcmFtcy53YWxsZXRJZCxcbiAgICB3cml0ZVNpZ25lZFdpdGg6IHBhcmFtcy53cml0ZVNpZ25lZFdpdGgsXG4gIH0pO1xuICBpZiAoaXNMYXN0U2lnbmF0dXJlKSB7XG4gICAgaWYgKGV4dHJhY3RUcmFuc2FjdGlvbikge1xuICAgICAgc2lnbmVkUHNidC5maW5hbGl6ZUFsbElucHV0cygpO1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHNpZ25lZFBzYnQuZXh0cmFjdFRyYW5zYWN0aW9uKCkudG9CeXRlcygpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25lZFBzYnQ7XG4gIH1cbiAgcmV0dXJuIHNpZ25lZFBzYnQ7XG59XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L3NpZ25UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLDhDQVVDO0FBRUQsMENBNENDO0FBckVELG9EQUE0QjtBQUU1Qiw4Q0FBMkM7QUFDM0Msb0RBQXVCO0FBQ3ZCLGdEQUFtRTtBQU1uRSxpREFBZ0g7QUFDaEgseURBQWdFO0FBRWhFLFNBQWdCLGlCQUFpQixDQUMvQixJQUFpQyxFQUNqQyxjQUE0QyxFQUM1QyxjQUFnRCxFQUNoRCxnQkFBc0MsRUFDdEMsVUFBeUMsRUFBRTtJQUUzQyxJQUFBLGdCQUFNLEVBQUMsY0FBYyxFQUFFLCtDQUErQyxDQUFDLENBQUM7SUFDeEUsSUFBQSxnQkFBTSxFQUFDLGdCQUFnQixFQUFFLGlEQUFpRCxDQUFDLENBQUM7SUFDNUUsT0FBTyxJQUFBLG9DQUFxQixFQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxJQUFvRCxFQUNwRCxFQUErQixFQUMvQixjQUFnRCxFQUNoRCxRQUF5QyxFQUN6QyxNQVVDO0lBRUQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksZ0JBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDeEMsc0dBQXNHO1FBQ3RHLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQzNDLENBQUM7SUFFRCxNQUFNLEVBQUUsa0JBQWtCLEdBQUcsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdDLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsSUFBSSxFQUFFLDRDQUE0QyxDQUFDLENBQUM7SUFDbEUsSUFBQSxnQkFBTSxFQUFDLElBQUEsbUJBQVEsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUN2RCxNQUFNLGNBQWMsR0FBRyw2QkFBaUIsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvRSxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsZ0RBQWlDLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFO1FBQ25HLGdCQUFnQixFQUFFO1lBQ2hCLFVBQVUsRUFBRSxJQUFBLDZDQUEwQixFQUFDLFFBQVEsQ0FBQztTQUNqRDtRQUNELFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztRQUMvQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3hDLENBQUMsQ0FBQztJQUNILElBQUksZUFBZSxFQUFFLENBQUM7UUFDcEIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3ZCLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgaXNUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJJUDMyLCBiaXAzMiwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgVXR4b0NvaW5OYW1lLCBXYXNtVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuaW1wb3J0IHR5cGUgeyBVbnNwZW50IH0gZnJvbSAnLi4vLi4vdW5zcGVudCc7XG5cbmltcG9ydCB7IE11c2lnMlBhcnRpY2lwYW50IH0gZnJvbSAnLi9tdXNpZzInO1xuaW1wb3J0IHsgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtLCBzaWduQW5kVmVyaWZ5UHNidFdhc20sIFJlcGxheVByb3RlY3Rpb25LZXlzIH0gZnJvbSAnLi9zaWduUHNidFdhc20nO1xuaW1wb3J0IHsgZ2V0UmVwbGF5UHJvdGVjdGlvblB1YmtleXMgfSBmcm9tICcuL3JlcGxheVByb3RlY3Rpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbkFuZFZlcmlmeVBzYnQoXG4gIHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IGJpcDMyLkJJUDMySW50ZXJmYWNlIHwgQklQMzIsXG4gIHJvb3RXYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyxcbiAgcmVwbGF5UHJvdGVjdGlvbjogUmVwbGF5UHJvdGVjdGlvbktleXMsXG4gIG9wdGlvbnM6IHsgd3JpdGVTaWduZWRXaXRoPzogYm9vbGVhbiB9ID0ge31cbik6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCB7XG4gIGFzc2VydChyb290V2FsbGV0S2V5cywgJ3Jvb3RXYWxsZXRLZXlzIHJlcXVpcmVkIGZvciB3YXNtLXV0eG8gc2lnbmluZycpO1xuICBhc3NlcnQocmVwbGF5UHJvdGVjdGlvbiwgJ3JlcGxheVByb3RlY3Rpb24gcmVxdWlyZWQgZm9yIHdhc20tdXR4byBzaWduaW5nJyk7XG4gIHJldHVybiBzaWduQW5kVmVyaWZ5UHNidFdhc20ocHNidCwgc2lnbmVyS2V5Y2hhaW4sIHJvb3RXYWxsZXRLZXlzLCByZXBsYXlQcm90ZWN0aW9uLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25UcmFuc2FjdGlvbihcbiAgY29pbjogTXVzaWcyUGFydGljaXBhbnQ8Zml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0PixcbiAgdHg6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidCxcbiAgc2lnbmVyS2V5Y2hhaW46IGJpcDMyLkJJUDMySW50ZXJmYWNlIHwgdW5kZWZpbmVkLFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lIHwgV2FzbVV0eG9Db2luTmFtZSxcbiAgcGFyYW1zOiB7XG4gICAgd2FsbGV0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICB0eEluZm86IHsgdW5zcGVudHM/OiBVbnNwZW50PGJpZ2ludCB8IG51bWJlcj5bXSB9IHwgdW5kZWZpbmVkO1xuICAgIGlzTGFzdFNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBzaWduaW5nU3RlcDogJ3NpZ25lck5vbmNlJyB8ICdjb3NpZ25lck5vbmNlJyB8ICdzaWduZXJTaWduYXR1cmUnIHwgdW5kZWZpbmVkO1xuICAgIHB1YnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNvc2lnbmVyUHViOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqIFdoZW4gdHJ1ZSAoZGVmYXVsdCksIGV4dHJhY3QgZmluYWxpemVkIFBTQlQgdG8gbGVnYWN5IHRyYW5zYWN0aW9uIGZvcm1hdC4gV2hlbiBmYWxzZSwgcmV0dXJuIGZpbmFsaXplZCBQU0JULiAqL1xuICAgIGV4dHJhY3RUcmFuc2FjdGlvbj86IGJvb2xlYW47XG4gICAgd3JpdGVTaWduZWRXaXRoPzogYm9vbGVhbjtcbiAgfVxuKTogUHJvbWlzZTxmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQgfCBCdWZmZXI+IHtcbiAgbGV0IGlzTGFzdFNpZ25hdHVyZSA9IGZhbHNlO1xuICBpZiAoXy5pc0Jvb2xlYW4ocGFyYW1zLmlzTGFzdFNpZ25hdHVyZSkpIHtcbiAgICAvLyBpZiBidWlsZCBpcyBjYWxsZWQgaW5zdGVhZCBvZiBidWlsZEluY29tcGxldGUsIG5vIHNpZ25hdHVyZSBwbGFjZWhvbGRlcnMgYXJlIGxlZnQgaW4gdGhlIHNpZyBzY3JpcHRcbiAgICBpc0xhc3RTaWduYXR1cmUgPSBwYXJhbXMuaXNMYXN0U2lnbmF0dXJlO1xuICB9XG5cbiAgY29uc3QgeyBleHRyYWN0VHJhbnNhY3Rpb24gPSB0cnVlIH0gPSBwYXJhbXM7XG5cbiAgYXNzZXJ0KHBhcmFtcy5wdWJzLCAncHVicyBhcmUgcmVxdWlyZWQgZm9yIGZpeGVkIHNjcmlwdCBzaWduaW5nJyk7XG4gIGFzc2VydChpc1RyaXBsZShwYXJhbXMucHVicyksICdwdWJzIG11c3QgYmUgYSB0cmlwbGUnKTtcbiAgY29uc3Qgcm9vdFdhbGxldEtleXMgPSBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cy5mcm9tWHB1YnMocGFyYW1zLnB1YnMpO1xuICBjb25zdCBzaWduZWRQc2J0ID0gYXdhaXQgc2lnblBzYnRXaXRoTXVzaWcyUGFydGljaXBhbnRXYXNtKGNvaW4sIHR4LCBzaWduZXJLZXljaGFpbiwgcm9vdFdhbGxldEtleXMsIHtcbiAgICByZXBsYXlQcm90ZWN0aW9uOiB7XG4gICAgICBwdWJsaWNLZXlzOiBnZXRSZXBsYXlQcm90ZWN0aW9uUHVia2V5cyhjb2luTmFtZSksXG4gICAgfSxcbiAgICBzaWduaW5nU3RlcDogcGFyYW1zLnNpZ25pbmdTdGVwLFxuICAgIHdhbGxldElkOiBwYXJhbXMud2FsbGV0SWQsXG4gICAgd3JpdGVTaWduZWRXaXRoOiBwYXJhbXMud3JpdGVTaWduZWRXaXRoLFxuICB9KTtcbiAgaWYgKGlzTGFzdFNpZ25hdHVyZSkge1xuICAgIGlmIChleHRyYWN0VHJhbnNhY3Rpb24pIHtcbiAgICAgIHNpZ25lZFBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShzaWduZWRQc2J0LmV4dHJhY3RUcmFuc2FjdGlvbigpLnRvQnl0ZXMoKSk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRQc2J0O1xuICB9XG4gIHJldHVybiBzaWduZWRQc2J0O1xufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import { AbstractUtxoCoin, ParseTransactionOptions } from '../abstractUtxoCoin';
2
+ import { AddressCodec } from './recipient';
2
3
  import { ParsedTransaction } from './types';
3
- export declare function parseTransaction<TNumber extends bigint | number>(coin: AbstractUtxoCoin, params: ParseTransactionOptions<TNumber>): Promise<ParsedTransaction<TNumber>>;
4
+ export declare function parseTransaction<TNumber extends bigint | number>(coin: AbstractUtxoCoin, params: ParseTransactionOptions<TNumber>, addressCodec?: AddressCodec): Promise<ParsedTransaction<TNumber>>;
4
5
  //# sourceMappingURL=parseTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/parseTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACpE,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAMrC"}
1
+ {"version":3,"file":"parseTransaction.d.ts","sourceRoot":"","sources":["../../../../src/transaction/parseTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAsB,gBAAgB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACpE,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,EACxC,YAAY,GAAE,YAAgC,GAC7C,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAMrC"}
@@ -37,12 +37,12 @@ exports.parseTransaction = parseTransaction;
37
37
  const descriptor_1 = require("../descriptor");
38
38
  const descriptor = __importStar(require("./descriptor"));
39
39
  const fixedScript = __importStar(require("./fixedScript"));
40
- async function parseTransaction(coin, params) {
40
+ async function parseTransaction(coin, params, addressCodec = coin.addressCodec) {
41
41
  if ((0, descriptor_1.isDescriptorWallet)(params.wallet)) {
42
- return descriptor.parseToAmountType(coin, params.wallet, params);
42
+ return descriptor.parseToAmountType(coin, params.wallet, params, addressCodec);
43
43
  }
44
44
  else {
45
- return fixedScript.parseTransaction(coin, params);
45
+ return fixedScript.parseTransaction(coin, params, addressCodec);
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0EsNENBU0M7QUFmRCw4Q0FBbUQ7QUFHbkQseURBQTJDO0FBQzNDLDJEQUE2QztBQUV0QyxLQUFLLFVBQVUsZ0JBQWdCLENBQ3BDLElBQXNCLEVBQ3RCLE1BQXdDO0lBRXhDLElBQUksSUFBQSwrQkFBa0IsRUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBpc0Rlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICcuLi9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHsgUGFyc2VkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCAqIGFzIGZpeGVkU2NyaXB0IGZyb20gJy4vZml4ZWRTY3JpcHQnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBpZiAoaXNEZXNjcmlwdG9yV2FsbGV0KHBhcmFtcy53YWxsZXQpKSB7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IucGFyc2VUb0Ftb3VudFR5cGUoY29pbiwgcGFyYW1zLndhbGxldCwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZml4ZWRTY3JpcHQucGFyc2VUcmFuc2FjdGlvbihjb2luLCBwYXJhbXMpO1xuICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsNENBVUM7QUFqQkQsOENBQW1EO0FBSW5ELHlEQUEyQztBQUMzQywyREFBNkM7QUFFdEMsS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxJQUFzQixFQUN0QixNQUF3QyxFQUN4QyxlQUE2QixJQUFJLENBQUMsWUFBWTtJQUU5QyxJQUFJLElBQUEsK0JBQWtCLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2pGLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNsRSxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBpc0Rlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICcuLi9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHsgQWRkcmVzc0NvZGVjIH0gZnJvbSAnLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgUGFyc2VkVHJhbnNhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmltcG9ydCAqIGFzIGZpeGVkU2NyaXB0IGZyb20gJy4vZml4ZWRTY3JpcHQnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPixcbiAgYWRkcmVzc0NvZGVjOiBBZGRyZXNzQ29kZWMgPSBjb2luLmFkZHJlc3NDb2RlY1xuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBpZiAoaXNEZXNjcmlwdG9yV2FsbGV0KHBhcmFtcy53YWxsZXQpKSB7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IucGFyc2VUb0Ftb3VudFR5cGUoY29pbiwgcGFyYW1zLndhbGxldCwgcGFyYW1zLCBhZGRyZXNzQ29kZWMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmaXhlZFNjcmlwdC5wYXJzZVRyYW5zYWN0aW9uKGNvaW4sIHBhcmFtcywgYWRkcmVzc0NvZGVjKTtcbiAgfVxufVxuIl19