@bitgo-beta/sdk-coin-sol 7.6.4-beta.71 → 7.6.4-beta.710

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 (496) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/index.d.ts.map +1 -0
  4. package/dist/{src → cjs/src}/index.js +1 -1
  5. package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
  6. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  7. package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
  8. package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
  11. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +128 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +311 -0
  14. package/dist/{src → cjs/src}/lib/constants.d.ts +89 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +269 -0
  17. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  19. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  20. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
  22. package/dist/cjs/src/lib/iface.d.ts +526 -0
  23. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  24. package/dist/cjs/src/lib/iface.js +7 -0
  25. package/dist/{src → cjs/src}/lib/index.d.ts +5 -0
  26. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/index.js +93 -0
  28. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
  29. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  30. package/dist/cjs/src/lib/instructionParamsFactory.js +1220 -0
  31. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  33. package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
  34. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/keyPair.js +112 -0
  36. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  37. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  38. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  40. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  43. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  45. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  46. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
  47. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
  49. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  50. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
  52. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
  53. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  54. package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
  55. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +30 -0
  56. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  57. package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +205 -0
  58. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
  59. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
  61. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
  62. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
  63. package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
  64. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  65. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  66. package/dist/cjs/src/lib/solInstructionFactory.js +1094 -0
  67. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  68. package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
  69. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  71. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
  73. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
  75. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  77. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
  79. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  80. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  81. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  82. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  83. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  84. package/dist/cjs/src/lib/tokenExtensions.js +105 -0
  85. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  86. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  87. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  88. package/dist/{src → cjs/src}/lib/transaction.d.ts +22 -0
  89. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  90. package/dist/cjs/src/lib/transaction.js +661 -0
  91. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +9 -1
  92. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  93. package/dist/cjs/src/lib/transactionBuilder.js +388 -0
  94. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +14 -0
  95. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  96. package/dist/cjs/src/lib/transactionBuilderFactory.js +222 -0
  97. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  98. package/dist/cjs/src/lib/transferBuilder.js +81 -0
  99. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  100. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  101. package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
  102. package/dist/{src → cjs/src}/lib/utils.d.ts +5 -0
  103. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  104. package/dist/cjs/src/lib/utils.js +657 -0
  105. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  106. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  107. package/dist/cjs/src/register.d.ts +5 -0
  108. package/dist/cjs/src/register.d.ts.map +1 -0
  109. package/dist/cjs/src/register.js +29 -0
  110. package/dist/{src → cjs/src}/sol.d.ts +114 -3
  111. package/dist/cjs/src/sol.d.ts.map +1 -0
  112. package/dist/cjs/src/sol.js +1670 -0
  113. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  114. package/dist/cjs/src/solToken.d.ts.map +1 -0
  115. package/dist/cjs/src/solToken.js +79 -0
  116. package/dist/cjs/src/tsol.d.ts.map +1 -0
  117. package/dist/cjs/src/tsol.js +24 -0
  118. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  119. package/dist/cjs/test/fixtures/sol.js +1433 -0
  120. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  121. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  122. package/dist/cjs/test/resources/sol.js +320 -0
  123. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  124. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  126. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  128. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  130. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  132. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  134. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  135. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  136. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  137. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  138. package/dist/cjs/test/unit/keyPair.js +177 -0
  139. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  141. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  142. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  143. package/dist/cjs/test/unit/register.d.ts +2 -0
  144. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  145. package/dist/cjs/test/unit/register.js +65 -0
  146. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  147. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  148. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  149. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  150. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  151. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  152. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  153. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  154. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  155. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  156. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  157. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  158. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  159. package/dist/cjs/test/unit/sol.js +5038 -0
  160. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  162. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  163. package/dist/cjs/test/unit/solToken.js +37 -0
  164. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  165. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  166. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  167. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  168. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  169. package/dist/cjs/test/unit/tokenExtensions.js +58 -0
  170. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  171. package/dist/cjs/test/unit/transaction.js +1108 -0
  172. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  174. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  175. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  176. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  177. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  178. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  179. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  180. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  181. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
  182. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  183. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  184. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +144 -0
  185. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  186. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  187. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
  188. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  189. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  190. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  192. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  193. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  194. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  195. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  196. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  198. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  199. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  200. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  201. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  202. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  204. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  205. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  206. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  207. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  208. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  210. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  211. package/dist/cjs/test/unit/utils.js +628 -0
  212. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  213. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  214. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  215. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  216. package/dist/esm/index.d.ts +7 -0
  217. package/dist/esm/index.js +7 -0
  218. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  219. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  220. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  221. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  222. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  223. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  224. package/dist/esm/lib/confidentialTransferBuilder.d.ts +128 -0
  225. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  226. package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
  227. package/dist/esm/lib/constants.d.ts +227 -0
  228. package/dist/esm/lib/constants.d.ts.map +1 -0
  229. package/dist/esm/lib/constants.js +266 -0
  230. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  231. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  232. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  233. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  234. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  235. package/dist/esm/lib/iface.d.ts +526 -0
  236. package/dist/esm/lib/iface.d.ts.map +1 -0
  237. package/dist/esm/lib/iface.js +3 -0
  238. package/dist/esm/lib/index.d.ts +27 -0
  239. package/dist/esm/lib/index.d.ts.map +1 -0
  240. package/dist/esm/lib/index.js +27 -0
  241. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  242. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  243. package/dist/esm/lib/instructionParamsFactory.js +1212 -0
  244. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  245. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  246. package/dist/esm/lib/keyPair.d.ts +32 -0
  247. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  248. package/dist/esm/lib/keyPair.js +75 -0
  249. package/dist/esm/lib/messages/index.d.ts +2 -0
  250. package/dist/esm/lib/messages/index.js +2 -0
  251. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  252. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  253. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  254. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  255. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  256. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  257. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  258. package/dist/esm/lib/scaledUiAmount.js +108 -0
  259. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  260. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  261. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  262. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  263. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  264. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  265. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  266. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  267. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  268. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +30 -0
  269. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  270. package/dist/esm/lib/serialization/compileTransactionMessage.js +202 -0
  271. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  272. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  273. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  274. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  275. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  276. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  277. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  278. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  279. package/dist/esm/lib/solInstructionFactory.js +1088 -0
  280. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  281. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  282. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  283. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  284. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  285. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  286. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  287. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  288. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  289. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  290. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  291. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  292. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  293. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  294. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  295. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  296. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  297. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  298. package/dist/esm/lib/token2022Resolve.js +194 -0
  299. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  300. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  301. package/dist/esm/lib/tokenExtensions.js +99 -0
  302. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  303. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  304. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  305. package/dist/esm/lib/transaction.d.ts +125 -0
  306. package/dist/esm/lib/transaction.d.ts.map +1 -0
  307. package/dist/esm/lib/transaction.js +654 -0
  308. package/dist/esm/lib/transactionBuilder.d.ts +136 -0
  309. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  310. package/dist/esm/lib/transactionBuilder.js +381 -0
  311. package/dist/esm/lib/transactionBuilderFactory.d.ts +129 -0
  312. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  313. package/dist/esm/lib/transactionBuilderFactory.js +218 -0
  314. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  315. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  316. package/dist/esm/lib/transferBuilder.js +74 -0
  317. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  318. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  319. package/dist/esm/lib/transferBuilderV2.js +245 -0
  320. package/dist/esm/lib/utils.d.ts +205 -0
  321. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  322. package/dist/esm/lib/utils.js +619 -0
  323. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  324. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  325. package/dist/esm/register.d.ts +5 -0
  326. package/dist/esm/register.d.ts.map +1 -0
  327. package/dist/esm/register.js +24 -0
  328. package/dist/esm/sol.d.ts +351 -0
  329. package/dist/esm/sol.d.ts.map +1 -0
  330. package/dist/esm/sol.js +1629 -0
  331. package/dist/esm/solToken.d.ts +44 -0
  332. package/dist/esm/solToken.d.ts.map +1 -0
  333. package/dist/esm/solToken.js +75 -0
  334. package/dist/esm/tsol.d.ts +11 -0
  335. package/dist/esm/tsol.js +20 -0
  336. package/package.json +36 -16
  337. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  338. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  339. package/dist/src/config/token2022StaticConfig.js +0 -50
  340. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  341. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  342. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  343. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  344. package/dist/src/lib/closeAtaBuilder.js +0 -69
  345. package/dist/src/lib/constants.d.ts.map +0 -1
  346. package/dist/src/lib/constants.js +0 -171
  347. package/dist/src/lib/customInstructionBuilder.js +0 -289
  348. package/dist/src/lib/iface.d.ts +0 -244
  349. package/dist/src/lib/iface.d.ts.map +0 -1
  350. package/dist/src/lib/iface.js +0 -7
  351. package/dist/src/lib/index.d.ts.map +0 -1
  352. package/dist/src/lib/index.js +0 -77
  353. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  354. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  355. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  356. package/dist/src/lib/keyPair.d.ts.map +0 -1
  357. package/dist/src/lib/keyPair.js +0 -63
  358. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  359. package/dist/src/lib/solInstructionFactory.js +0 -572
  360. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  361. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  362. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  363. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  364. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  365. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  366. package/dist/src/lib/token2022Config.d.ts +0 -44
  367. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  368. package/dist/src/lib/token2022Config.js +0 -27
  369. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  370. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  371. package/dist/src/lib/transaction.d.ts.map +0 -1
  372. package/dist/src/lib/transaction.js +0 -595
  373. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  374. package/dist/src/lib/transactionBuilder.js +0 -380
  375. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  376. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  377. package/dist/src/lib/transferBuilder.js +0 -70
  378. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  379. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  380. package/dist/src/lib/transferBuilderV2.js +0 -210
  381. package/dist/src/lib/utils.js +0 -589
  382. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  383. package/dist/src/register.d.ts +0 -3
  384. package/dist/src/register.d.ts.map +0 -1
  385. package/dist/src/register.js +0 -15
  386. package/dist/src/sol.d.ts.map +0 -1
  387. package/dist/src/sol.js +0 -1324
  388. package/dist/src/solToken.d.ts.map +0 -1
  389. package/dist/src/solToken.js +0 -69
  390. package/dist/src/tsol.js +0 -24
  391. package/dist/test/fixtures/sol.js +0 -1433
  392. package/dist/test/resources/sol.d.ts.map +0 -1
  393. package/dist/test/resources/sol.js +0 -320
  394. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  395. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  396. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  397. package/dist/test/unit/getBuilderFactory.js +0 -10
  398. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  399. package/dist/test/unit/instructionParamsFactory.js +0 -412
  400. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  401. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  402. package/dist/test/unit/keyPair.js +0 -177
  403. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  404. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  405. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  406. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  407. package/dist/test/unit/sol.js +0 -3180
  408. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  409. package/dist/test/unit/solInstructionFactory.js +0 -454
  410. package/dist/test/unit/solToken.d.ts.map +0 -1
  411. package/dist/test/unit/solToken.js +0 -31
  412. package/dist/test/unit/transaction.d.ts.map +0 -1
  413. package/dist/test/unit/transaction.js +0 -983
  414. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  415. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  416. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  417. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  418. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  419. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  420. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  421. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  422. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  423. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  424. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  425. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  426. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  427. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  428. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  429. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  430. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  431. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  432. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  433. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  434. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  435. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  436. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  437. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  438. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  439. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  440. package/dist/test/unit/utils.js +0 -517
  441. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  442. package/dist/test/unit/versionedTransaction.js +0 -207
  443. package/dist/tsconfig.tsbuildinfo +0 -1
  444. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  445. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  446. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  447. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  448. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  449. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  450. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  451. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  452. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  453. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  454. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  455. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  456. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  457. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  458. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  459. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  460. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  461. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  462. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  463. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  464. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  465. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  466. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  467. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  468. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  469. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  470. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  471. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  472. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  473. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  474. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  475. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  476. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  477. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  478. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  479. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  480. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  481. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  482. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  483. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  484. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  485. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  486. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  487. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  488. /package/dist/{src → esm}/index.d.ts.map +0 -0
  489. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  490. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  491. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  492. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  493. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  494. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  495. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  496. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,188 @@
1
+ import bs58 from 'bs58';
2
+ import { PublicKey } from '@solana/web3.js';
3
+ import { BuildTransactionError } from '@bitgo-beta/sdk-core';
4
+ import { encodeConfigMaskAndValues, PRIORITY_FEE_BITS, COMPUTE_UNIT_LIMIT_BIT, LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT, HEAP_SIZE_BIT, } from './config';
5
+ import { encodeInstructions } from './instruction';
6
+ /**
7
+ * v1 (SIMD-0296/0385) transaction message wire encoder.
8
+ *
9
+ * Layout: [version: 0x81][header: 3 x u8][configMask: u32 LE][blockhash: 32]
10
+ * [numInstructions: u8][numStaticAccounts: u8]
11
+ * [staticAccounts: 32 x n][configValues: per mask]
12
+ * [instructionHeaders: 4 x n][instructionPayloads: per instruction]
13
+ */
14
+ function pushU8(buf, v) {
15
+ buf.push(v & 0xff);
16
+ }
17
+ function pushU32LE(buf, v) {
18
+ buf.push(v & 0xff, (v >>> 8) & 0xff, (v >>> 16) & 0xff, (v >>> 24) & 0xff);
19
+ }
20
+ function pushU64LE(buf, v) {
21
+ for (let i = 0; i < 8; i++) {
22
+ buf.push(Number((v >> BigInt(8 * i)) & 0xffn));
23
+ }
24
+ }
25
+ export function encodeV1Message(args) {
26
+ const { header, configMask, configValues, blockhash, staticAccounts, compiledInstructions } = args;
27
+ let blockhashBytes;
28
+ try {
29
+ blockhashBytes = bs58.decode(blockhash);
30
+ }
31
+ catch {
32
+ throw new BuildTransactionError('Invalid recent blockhash');
33
+ }
34
+ if (blockhashBytes.length !== 32) {
35
+ throw new BuildTransactionError('Invalid recent blockhash');
36
+ }
37
+ const buf = [];
38
+ pushU8(buf, 0x81); // version
39
+ pushU8(buf, header.numSignerAccounts);
40
+ pushU8(buf, header.numReadonlySignerAccounts);
41
+ pushU8(buf, header.numReadonlyNonSignerAccounts);
42
+ pushU32LE(buf, configMask);
43
+ for (const b of blockhashBytes)
44
+ pushU8(buf, b);
45
+ pushU8(buf, compiledInstructions.length);
46
+ pushU8(buf, staticAccounts.length);
47
+ for (const account of staticAccounts) {
48
+ for (const b of new PublicKey(account).toBytes())
49
+ pushU8(buf, b);
50
+ }
51
+ for (const value of configValues) {
52
+ if (value.kind === 'u64')
53
+ pushU64LE(buf, value.value);
54
+ else
55
+ pushU32LE(buf, value.value);
56
+ }
57
+ encodeInstructions(buf, compiledInstructions);
58
+ return new Uint8Array(buf);
59
+ }
60
+ export { encodeConfigMaskAndValues };
61
+ const V1_VERSION_PREFIX = 0x81;
62
+ const KNOWN_CONFIG_MASK = PRIORITY_FEE_BITS | COMPUTE_UNIT_LIMIT_BIT | LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT | HEAP_SIZE_BIT;
63
+ const MAX_ACCOUNTS = 64;
64
+ const MAX_INSTRUCTIONS = 64;
65
+ const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
66
+ const STATIC_ACCOUNT_BYTES = 32;
67
+ function readU8(b, o) {
68
+ return b[o];
69
+ }
70
+ function readU16LE(b, o) {
71
+ return b[o] | (b[o + 1] << 8);
72
+ }
73
+ function readU32LE(b, o) {
74
+ return (b[o] | (b[o + 1] << 8) | (b[o + 2] << 16) | (b[o + 3] << 24)) >>> 0;
75
+ }
76
+ function readU64LE(b, o) {
77
+ let v = 0n;
78
+ for (let i = 0; i < 8; i++) {
79
+ v |= BigInt(b[o + i]) << BigInt(8 * i);
80
+ }
81
+ return v;
82
+ }
83
+ function ensureAvailable(b, off, size) {
84
+ if (off + size > b.length) {
85
+ throw new BuildTransactionError('Invalid v1 message: truncated');
86
+ }
87
+ }
88
+ export function decodeV1Message(bytes) {
89
+ if (!bytes || bytes.length < 42) {
90
+ throw new BuildTransactionError('Invalid v1 message: too short');
91
+ }
92
+ let off = 0;
93
+ if (bytes[off++] !== V1_VERSION_PREFIX) {
94
+ throw new BuildTransactionError(`Invalid v1 version prefix: 0x${bytes[0].toString(16)}`);
95
+ }
96
+ const numSignerAccounts = readU8(bytes, off++);
97
+ const numReadonlySignerAccounts = readU8(bytes, off++);
98
+ const numReadonlyNonSignerAccounts = readU8(bytes, off++);
99
+ const configMask = readU32LE(bytes, off);
100
+ off += 4;
101
+ if ((configMask & ~KNOWN_CONFIG_MASK) !== 0) {
102
+ throw new BuildTransactionError(`Unknown config mask bits: ${(configMask & ~KNOWN_CONFIG_MASK).toString(2)}`);
103
+ }
104
+ const blockhash = bs58.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES));
105
+ off += STATIC_ACCOUNT_BYTES;
106
+ const numInstructions = readU8(bytes, off++);
107
+ const numStaticAccounts = readU8(bytes, off++);
108
+ if (numStaticAccounts > MAX_ACCOUNTS) {
109
+ throw new BuildTransactionError('Invalid v1 message: too many static accounts');
110
+ }
111
+ if (numInstructions > MAX_INSTRUCTIONS) {
112
+ throw new BuildTransactionError('Invalid v1 message: too many instructions');
113
+ }
114
+ if (numReadonlySignerAccounts > numSignerAccounts) {
115
+ throw new BuildTransactionError('Invalid v1 header: readonly signers exceed signers');
116
+ }
117
+ if (numSignerAccounts + numReadonlyNonSignerAccounts > numStaticAccounts) {
118
+ throw new BuildTransactionError('Invalid v1 header: signers + readonly non-signers exceed static accounts');
119
+ }
120
+ const staticAccounts = [];
121
+ for (let i = 0; i < numStaticAccounts; i++) {
122
+ ensureAvailable(bytes, off, STATIC_ACCOUNT_BYTES);
123
+ staticAccounts.push(bs58.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES)));
124
+ off += STATIC_ACCOUNT_BYTES;
125
+ }
126
+ const configValues = [];
127
+ if (configMask & PRIORITY_FEE_BITS) {
128
+ ensureAvailable(bytes, off, 8);
129
+ configValues.push({ kind: 'u64', value: readU64LE(bytes, off) });
130
+ off += 8;
131
+ }
132
+ if (configMask & COMPUTE_UNIT_LIMIT_BIT) {
133
+ ensureAvailable(bytes, off, 4);
134
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
135
+ off += 4;
136
+ }
137
+ if (configMask & LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT) {
138
+ ensureAvailable(bytes, off, 4);
139
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
140
+ off += 4;
141
+ }
142
+ if (configMask & HEAP_SIZE_BIT) {
143
+ ensureAvailable(bytes, off, 4);
144
+ configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
145
+ off += 4;
146
+ }
147
+ const headers = [];
148
+ for (let i = 0; i < numInstructions; i++) {
149
+ ensureAvailable(bytes, off, 4);
150
+ const programAddressIndex = readU8(bytes, off++);
151
+ const accountCount = readU8(bytes, off++);
152
+ const dataLength = readU16LE(bytes, off);
153
+ off += 2;
154
+ if (programAddressIndex >= numStaticAccounts) {
155
+ throw new BuildTransactionError('Invalid v1 instruction: program index out of range');
156
+ }
157
+ if (accountCount > MAX_ACCOUNTS_PER_INSTRUCTION) {
158
+ throw new BuildTransactionError('Invalid v1 instruction: too many accounts');
159
+ }
160
+ headers.push({ programAddressIndex, accountCount, dataLength });
161
+ }
162
+ const compiledInstructions = [];
163
+ for (const h of headers) {
164
+ ensureAvailable(bytes, off, h.accountCount);
165
+ const accountIndices = [];
166
+ for (let i = 0; i < h.accountCount; i++) {
167
+ const idx = readU8(bytes, off++);
168
+ if (idx >= numStaticAccounts) {
169
+ throw new BuildTransactionError('Invalid v1 instruction: account index out of range');
170
+ }
171
+ accountIndices.push(idx);
172
+ }
173
+ ensureAvailable(bytes, off, h.dataLength);
174
+ const data = bytes.slice(off, off + h.dataLength);
175
+ off += h.dataLength;
176
+ compiledInstructions.push({ programAddressIndex: h.programAddressIndex, accountIndices, data });
177
+ }
178
+ return {
179
+ header: { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts },
180
+ configMask,
181
+ configValues,
182
+ blockhash,
183
+ staticAccounts,
184
+ compiledInstructions,
185
+ byteLength: off,
186
+ };
187
+ }
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb2RlY3MvdjEvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFDTCx5QkFBeUIsRUFFekIsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixtQ0FBbUMsRUFDbkMsYUFBYSxHQUNkLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFeEU7Ozs7Ozs7R0FPRztBQUVILFNBQVMsTUFBTSxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3RDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLFNBQVMsQ0FBQyxHQUFhLEVBQUUsQ0FBUztJQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0s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Q3hGLENBQUM7WUFDRCxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRCxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRTtRQUN0RixVQUFVO1FBQ1YsWUFBWTtRQUNaLFNBQVM7UUFDVCxjQUFjO1FBQ2Qsb0JBQW9CO1FBQ3BCLFVBQVUsRUFBRSxHQUFHO0tBQ2hCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJzNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyxcbiAgQ29uZmlnVmFsdWUsXG4gIFBSSU9SSVRZX0ZFRV9CSVRTLFxuICBDT01QVVRFX1VOSVRfTElNSVRfQklULFxuICBMT0FERURfQUNDT1VOVFNfREFUQV9TSVpFX0xJTUlUX0JJVCxcbiAgSEVBUF9TSVpFX0JJVCxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgZW5jb2RlSW5zdHJ1Y3Rpb25zLCBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9pbnN0cnVjdGlvbic7XG5cbi8qKlxuICogdjEgKFNJTUQtMDI5Ni8wMzg1KSB0cmFuc2FjdGlvbiBtZXNzYWdlIHdpcmUgZW5jb2Rlci5cbiAqXG4gKiBMYXlvdXQ6IFt2ZXJzaW9uOiAweDgxXVtoZWFkZXI6IDMgeCB1OF1bY29uZmlnTWFzazogdTMyIExFXVtibG9ja2hhc2g6IDMyXVxuICogICBbbnVtSW5zdHJ1Y3Rpb25zOiB1OF1bbnVtU3RhdGljQWNjb3VudHM6IHU4XVxuICogICBbc3RhdGljQWNjb3VudHM6IDMyIHggbl1bY29uZmlnVmFsdWVzOiBwZXIgbWFza11cbiAqICAgW2luc3RydWN0aW9uSGVhZGVyczogNCB4IG5dW2luc3RydWN0aW9uUGF5bG9hZHM6IHBlciBpbnN0cnVjdGlvbl1cbiAqL1xuXG5mdW5jdGlvbiBwdXNoVTgoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmKTtcbn1cbmZ1bmN0aW9uIHB1c2hVMzJMRShidWY6IG51bWJlcltdLCB2OiBudW1iZXIpIHtcbiAgYnVmLnB1c2godiAmIDB4ZmYsICh2ID4+PiA4KSAmIDB4ZmYsICh2ID4+PiAxNikgJiAweGZmLCAodiA+Pj4gMjQpICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTY0TEUoYnVmOiBudW1iZXJbXSwgdjogYmlnaW50KSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgYnVmLnB1c2goTnVtYmVyKCh2ID4+IEJpZ0ludCg4ICogaSkpICYgMHhmZm4pKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBWMU1lc3NhZ2VIZWFkZXIgPSB7XG4gIG51bVNpZ25lckFjY291bnRzOiBudW1iZXI7XG4gIG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHM6IG51bWJlcjtcbiAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50czogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVYxTWVzc2FnZShhcmdzOiB7XG4gIGhlYWRlcjogVjFNZXNzYWdlSGVhZGVyO1xuICBjb25maWdNYXNrOiBudW1iZXI7XG4gIGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXTtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIHN0YXRpY0FjY291bnRzOiBzdHJpbmdbXTtcbiAgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXTtcbn0pOiBVaW50OEFycmF5IHtcbiAgY29uc3QgeyBoZWFkZXIsIGNvbmZpZ01hc2ssIGNvbmZpZ1ZhbHVlcywgYmxvY2toYXNoLCBzdGF0aWNBY2NvdW50cywgY29tcGlsZWRJbnN0cnVjdGlvbnMgfSA9IGFyZ3M7XG5cbiAgbGV0IGJsb2NraGFzaEJ5dGVzOiBVaW50OEFycmF5O1xuICB0cnkge1xuICAgIGJsb2NraGFzaEJ5dGVzID0gYnM1OC5kZWNvZGUoYmxvY2toYXNoKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByZWNlbnQgYmxvY2toYXNoJyk7XG4gIH1cbiAgaWYgKGJsb2NraGFzaEJ5dGVzLmxlbmd0aCAhPT0gMzIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHJlY2VudCBibG9ja2hhc2gnKTtcbiAgfVxuXG4gIGNvbnN0IGJ1ZjogbnVtYmVyW10gPSBbXTtcbiAgcHVzaFU4KGJ1ZiwgMHg4MSk7IC8vIHZlcnNpb25cbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVNpZ25lckFjY291bnRzKTtcbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMpO1xuICBwdXNoVTgoYnVmLCBoZWFkZXIubnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyk7XG4gIHB1c2hVMzJMRShidWYsIGNvbmZpZ01hc2spO1xuICBmb3IgKGNvbnN0IGIgb2YgYmxvY2toYXNoQnl0ZXMpIHB1c2hVOChidWYsIGIpO1xuICBwdXNoVTgoYnVmLCBjb21waWxlZEluc3RydWN0aW9ucy5sZW5ndGgpO1xuICBwdXNoVTgoYnVmLCBzdGF0aWNBY2NvdW50cy5sZW5ndGgpO1xuICBmb3IgKGNvbnN0IGFjY291bnQgb2Ygc3RhdGljQWNjb3VudHMpIHtcbiAgICBmb3IgKGNvbnN0IGIgb2YgbmV3IFB1YmxpY0tleShhY2NvdW50KS50b0J5dGVzKCkpIHB1c2hVOChidWYsIGIpO1xuICB9XG4gIGZvciAoY29uc3QgdmFsdWUgb2YgY29uZmlnVmFsdWVzKSB7XG4gICAgaWYgKHZhbHVlLmtpbmQgPT09ICd1NjQnKSBwdXNoVTY0TEUoYnVmLCB2YWx1ZS52YWx1ZSBhcyBiaWdpbnQpO1xuICAgIGVsc2UgcHVzaFUzMkxFKGJ1ZiwgdmFsdWUudmFsdWUgYXMgbnVtYmVyKTtcbiAgfVxuICBlbmNvZGVJbnN0cnVjdGlvbnMoYnVmLCBjb21waWxlZEluc3RydWN0aW9ucyk7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShidWYpO1xufVxuXG5leHBvcnQgeyBlbmNvZGVDb25maWdNYXNrQW5kVmFsdWVzIH07XG5cbmNvbnN0IFYxX1ZFUlNJT05fUFJFRklYID0gMHg4MTtcbmNvbnN0IEtOT1dOX0NPTkZJR19NQVNLID1cbiAgUFJJT1JJVFlfRkVFX0JJVFMgfCBDT01QVVRFX1VOSVRfTElNSVRfQklUIHwgTE9BREVEX0FDQ09VTlRTX0RBVEFfU0laRV9MSU1JVF9CSVQgfCBIRUFQX1NJWkVfQklUO1xuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfSU5TVFJVQ1RJT05TID0gNjQ7XG5jb25zdCBNQVhfQUNDT1VOVFNfUEVSX0lOU1RSVUNUSU9OID0gMjU1O1xuY29uc3QgU1RBVElDX0FDQ09VTlRfQllURVMgPSAzMjtcblxuZXhwb3J0IHR5cGUgVjFEZWNvZGVkTWVzc2FnZSA9IHtcbiAgaGVhZGVyOiBWMU1lc3NhZ2VIZWFkZXI7XG4gIGNvbmZpZ01hc2s6IG51bWJlcjtcbiAgY29uZmlnVmFsdWVzOiBDb25maWdWYWx1ZVtdO1xuICBibG9ja2hhc2g6IHN0cmluZztcbiAgc3RhdGljQWNjb3VudHM6IHN0cmluZ1tdO1xuICBjb21waWxlZEluc3RydWN0aW9uczogQ29tcGlsZWRJbnN0cnVjdGlvbltdO1xuICBieXRlTGVuZ3RoOiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiByZWFkVTgoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGJbb107XG59XG5mdW5jdGlvbiByZWFkVTE2TEUoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGJbb10gfCAoYltvICsgMV0gPDwgOCk7XG59XG5mdW5jdGlvbiByZWFkVTMyTEUoYjogVWludDhBcnJheSwgbzogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIChiW29dIHwgKGJbbyArIDFdIDw8IDgpIHwgKGJbbyArIDJdIDw8IDE2KSB8IChiW28gKyAzXSA8PCAyNCkpID4+PiAwO1xufVxuZnVuY3Rpb24gcmVhZFU2NExFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IGJpZ2ludCB7XG4gIGxldCB2ID0gMG47XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgdiB8PSBCaWdJbnQoYltvICsgaV0pIDw8IEJpZ0ludCg4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUF2YWlsYWJsZShiOiBVaW50OEFycmF5LCBvZmY6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogdm9pZCB7XG4gIGlmIChvZmYgKyBzaXplID4gYi5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRydW5jYXRlZCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVWMU1lc3NhZ2UoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBWMURlY29kZWRNZXNzYWdlIHtcbiAgaWYgKCFieXRlcyB8fCBieXRlcy5sZW5ndGggPCA0Mikge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIHNob3J0Jyk7XG4gIH1cbiAgbGV0IG9mZiA9IDA7XG4gIGlmIChieXRlc1tvZmYrK10gIT09IFYxX1ZFUlNJT05fUFJFRklYKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCB2MSB2ZXJzaW9uIHByZWZpeDogMHgke2J5dGVzWzBdLnRvU3RyaW5nKDE2KX1gKTtcbiAgfVxuICBjb25zdCBudW1TaWduZXJBY2NvdW50cyA9IHJlYWRVOChieXRlcywgb2ZmKyspO1xuICBjb25zdCBudW1SZWFkb25seVNpZ25lckFjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgY29uZmlnTWFzayA9IHJlYWRVMzJMRShieXRlcywgb2ZmKTtcbiAgb2ZmICs9IDQ7XG4gIGlmICgoY29uZmlnTWFzayAmIH5LTk9XTl9DT05GSUdfTUFTSykgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVbmtub3duIGNvbmZpZyBtYXNrIGJpdHM6ICR7KGNvbmZpZ01hc2sgJiB+S05PV05fQ09ORklHX01BU0spLnRvU3RyaW5nKDIpfWApO1xuICB9XG4gIGNvbnN0IGJsb2NraGFzaCA9IGJzNTguZW5jb2RlKGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgU1RBVElDX0FDQ09VTlRfQllURVMpKTtcbiAgb2ZmICs9IFNUQVRJQ19BQ0NPVU5UX0JZVEVTO1xuICBjb25zdCBudW1JbnN0cnVjdGlvbnMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgbnVtU3RhdGljQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgaWYgKG51bVN0YXRpY0FjY291bnRzID4gTUFYX0FDQ09VTlRTKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBtZXNzYWdlOiB0b28gbWFueSBzdGF0aWMgYWNjb3VudHMnKTtcbiAgfVxuICBpZiAobnVtSW5zdHJ1Y3Rpb25zID4gTUFYX0lOU1RSVUNUSU9OUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIG1hbnkgaW5zdHJ1Y3Rpb25zJyk7XG4gIH1cbiAgaWYgKG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMgPiBudW1TaWduZXJBY2NvdW50cykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaGVhZGVyOiByZWFkb25seSBzaWduZXJzIGV4Y2VlZCBzaWduZXJzJyk7XG4gIH1cbiAgaWYgKG51bVNpZ25lckFjY291bnRzICsgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyA+IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBoZWFkZXI6IHNpZ25lcnMgKyByZWFkb25seSBub24tc2lnbmVycyBleGNlZWQgc3RhdGljIGFjY291bnRzJyk7XG4gIH1cblxuICBjb25zdCBzdGF0aWNBY2NvdW50czogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1TdGF0aWNBY2NvdW50czsgaSsrKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKTtcbiAgICBzdGF0aWNBY2NvdW50cy5wdXNoKGJzNTguZW5jb2RlKGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgU1RBVElDX0FDQ09VTlRfQllURVMpKSk7XG4gICAgb2ZmICs9IFNUQVRJQ19BQ0NPVU5UX0JZVEVTO1xuICB9XG5cbiAgY29uc3QgY29uZmlnVmFsdWVzOiBDb25maWdWYWx1ZVtdID0gW107XG4gIGlmIChjb25maWdNYXNrICYgUFJJT1JJVFlfRkVFX0JJVFMpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgOCk7XG4gICAgY29uZmlnVmFsdWVzLnB1c2goeyBraW5kOiAndTY0JywgdmFsdWU6IHJlYWRVNjRMRShieXRlcywgb2ZmKSB9KTtcbiAgICBvZmYgKz0gODtcbiAgfVxuICBpZiAoY29uZmlnTWFzayAmIENPTVBVVEVfVU5JVF9MSU1JVF9CSVQpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgNCk7XG4gICAgY29uZmlnVmFsdWVzLnB1c2goeyBraW5kOiAndTMyJywgdmFsdWU6IHJlYWRVMzJMRShieXRlcywgb2ZmKSB9KTtcbiAgICBvZmYgKz0gNDtcbiAgfVxuICBpZiAoY29uZmlnTWFzayAmIExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBIRUFQX1NJWkVfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cblxuICBjb25zdCBoZWFkZXJzOiBBcnJheTx7IHByb2dyYW1BZGRyZXNzSW5kZXg6IG51bWJlcjsgYWNjb3VudENvdW50OiBudW1iZXI7IGRhdGFMZW5ndGg6IG51bWJlciB9PiA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUluc3RydWN0aW9uczsgaSsrKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzSW5kZXggPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICBjb25zdCBhY2NvdW50Q291bnQgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gcmVhZFUxNkxFKGJ5dGVzLCBvZmYpO1xuICAgIG9mZiArPSAyO1xuICAgIGlmIChwcm9ncmFtQWRkcmVzc0luZGV4ID49IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIGluc3RydWN0aW9uOiBwcm9ncmFtIGluZGV4IG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgICBpZiAoYWNjb3VudENvdW50ID4gTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTikge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogdG9vIG1hbnkgYWNjb3VudHMnKTtcbiAgICB9XG4gICAgaGVhZGVycy5wdXNoKHsgcHJvZ3JhbUFkZHJlc3NJbmRleCwgYWNjb3VudENvdW50LCBkYXRhTGVuZ3RoIH0pO1xuICB9XG5cbiAgY29uc3QgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXSA9IFtdO1xuICBmb3IgKGNvbnN0IGggb2YgaGVhZGVycykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBoLmFjY291bnRDb3VudCk7XG4gICAgY29uc3QgYWNjb3VudEluZGljZXM6IG51bWJlcltdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoLmFjY291bnRDb3VudDsgaSsrKSB7XG4gICAgICBjb25zdCBpZHggPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgICAgIGlmIChpZHggPj0gbnVtU3RhdGljQWNjb3VudHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogYWNjb3VudCBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgICAgIH1cbiAgICAgIGFjY291bnRJbmRpY2VzLnB1c2goaWR4KTtcbiAgICB9XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIGguZGF0YUxlbmd0aCk7XG4gICAgY29uc3QgZGF0YSA9IGJ5dGVzLnNsaWNlKG9mZiwgb2ZmICsgaC5kYXRhTGVuZ3RoKTtcbiAgICBvZmYgKz0gaC5kYXRhTGVuZ3RoO1xuICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zLnB1c2goeyBwcm9ncmFtQWRkcmVzc0luZGV4OiBoLnByb2dyYW1BZGRyZXNzSW5kZXgsIGFjY291bnRJbmRpY2VzLCBkYXRhIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBoZWFkZXI6IHsgbnVtU2lnbmVyQWNjb3VudHMsIG51bVJlYWRvbmx5U2lnbmVyQWNjb3VudHMsIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgfSxcbiAgICBjb25maWdNYXNrLFxuICAgIGNvbmZpZ1ZhbHVlcyxcbiAgICBibG9ja2hhc2gsXG4gICAgc3RhdGljQWNjb3VudHMsXG4gICAgY29tcGlsZWRJbnN0cnVjdGlvbnMsXG4gICAgYnl0ZUxlbmd0aDogb2ZmLFxuICB9O1xufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { PublicKey, TransactionInstruction } from '@solana/web3.js';
2
+ /** Supported Solana transaction versions. Only 1 (SIMD-0296/0385) is implemented. */
3
+ export type TransactionVersion = 0 | 1;
4
+ /**
5
+ * Configuration for a v1 transaction, mirroring the shared sdk-core type.
6
+ * All values are optional (null = unset); priorityFee is total lamports.
7
+ */
8
+ export interface TransactionConfig {
9
+ computeUnitLimit: number | null;
10
+ heapSize: number | null;
11
+ loadedAccountsDataSizeLimit: number | null;
12
+ priorityFee: number | null;
13
+ }
14
+ /**
15
+ * Compile a Solana transaction message and return its wire bytes.
16
+ *
17
+ * Version-aware: only `version: 1` (SIMD-0296/0385) is implemented; other
18
+ * versions throw a clear unsupported-version error until they are added.
19
+ *
20
+ * @param args - version, instructions, fee payer, recent blockhash, and config
21
+ * @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
22
+ */
23
+ export declare function compileTransactionMessage(args: {
24
+ version: TransactionVersion;
25
+ instructions: TransactionInstruction[];
26
+ feePayer: PublicKey;
27
+ recentBlockhash: string;
28
+ transactionConfig: TransactionConfig;
29
+ }): Uint8Array;
30
+ //# sourceMappingURL=compileTransactionMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compileTransactionMessage.d.ts","sourceRoot":"","sources":["../../../../src/lib/serialization/compileTransactionMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAKpE,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,2BAA2B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAoLD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC,GAAG,UAAU,CAqDb"}
@@ -0,0 +1,202 @@
1
+ import { BuildTransactionError } from '@bitgo-beta/sdk-core';
2
+ import { encodeV1Message } from './codecs/v1/message';
3
+ import { encodeConfigMaskAndValues } from './codecs/v1/config';
4
+ // AccountRole bit values (mirror @solana/instructions).
5
+ const READONLY = 0;
6
+ const WRITABLE = 1;
7
+ const READONLY_SIGNER = 2;
8
+ const WRITABLE_SIGNER = 3;
9
+ const COMPUTE_BUDGET_PROGRAM_ID = 'ComputeBudget111111111111111111111111111111';
10
+ const SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR = 2;
11
+ const SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR = 3;
12
+ const MICRO_LAMPORTS_PER_LAMPORT = 1000000;
13
+ const MAX_ACCOUNTS = 64;
14
+ const MAX_SIGNERS = 12;
15
+ const MAX_INSTRUCTIONS = 64;
16
+ const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
17
+ const isSigner = (role) => (role & READONLY_SIGNER) !== 0;
18
+ const isWritable = (role) => (role & WRITABLE) !== 0;
19
+ // Address ordering comparator matches @solana/addresses getAddressComparator.
20
+ const addressComparator = new Intl.Collator('en', {
21
+ caseFirst: 'lower',
22
+ ignorePunctuation: false,
23
+ localeMatcher: 'best fit',
24
+ numeric: false,
25
+ sensitivity: 'variant',
26
+ usage: 'sort',
27
+ }).compare;
28
+ function readU32LE(data, offset) {
29
+ return data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24);
30
+ }
31
+ function readU64LE(data, offset) {
32
+ let value = 0;
33
+ for (let i = 0; i < 8; i++) {
34
+ value += Number(data[offset + i]) * Math.pow(2, 8 * i);
35
+ }
36
+ return value;
37
+ }
38
+ /**
39
+ * Strip ComputeBudget instructions (SetComputeUnitLimit / SetComputeUnitPrice)
40
+ * and fold their values into the transaction config when still unset.
41
+ */
42
+ function stripComputeBudgetInstructions(instructions, transactionConfig) {
43
+ const filtered = [];
44
+ const config = { ...transactionConfig };
45
+ for (const instruction of instructions) {
46
+ const isComputeBudget = instruction.programId.toBase58() === COMPUTE_BUDGET_PROGRAM_ID;
47
+ const discriminator = instruction.data?.[0];
48
+ if (isComputeBudget && discriminator === SET_COMPUTE_UNIT_LIMIT_DISCRIMINATOR) {
49
+ if (config.computeUnitLimit === null) {
50
+ config.computeUnitLimit = readU32LE(instruction.data, 1);
51
+ }
52
+ continue;
53
+ }
54
+ if (isComputeBudget && discriminator === SET_COMPUTE_UNIT_PRICE_DISCRIMINATOR) {
55
+ if (config.priorityFee === null && config.computeUnitLimit !== null) {
56
+ const microLamports = readU64LE(instruction.data, 1);
57
+ config.priorityFee = Math.ceil((microLamports * config.computeUnitLimit) / MICRO_LAMPORTS_PER_LAMPORT);
58
+ }
59
+ continue;
60
+ }
61
+ filtered.push(instruction);
62
+ }
63
+ return { instructions: filtered, config };
64
+ }
65
+ /**
66
+ * Collect + order accounts exactly as @solana/transaction-messages does:
67
+ * fee payer first (WRITABLE_SIGNER), then static accounts sorted by
68
+ * (isSigner, isWritable, base58 collator). Duplicate addresses merge roles.
69
+ * Enforces the kit's invoked-program rules.
70
+ */
71
+ function collectOrderedAccounts(feePayer, instructions) {
72
+ const feePayerAddress = feePayer.toBase58();
73
+ const map = new Map();
74
+ const metaByAddress = new Map();
75
+ const invokedPrograms = new Set();
76
+ map.set(feePayerAddress, WRITABLE_SIGNER);
77
+ metaByAddress.set(feePayerAddress, { address: feePayerAddress, role: WRITABLE_SIGNER });
78
+ const upsert = (address, role, isInvokedProgram) => {
79
+ if (address === feePayerAddress) {
80
+ if (isInvokedProgram) {
81
+ throw new BuildTransactionError(`Invoked program ${address} cannot pay fees`);
82
+ }
83
+ }
84
+ if (isInvokedProgram && isWritable(role)) {
85
+ throw new BuildTransactionError(`Invoked program ${address} must not be writable`);
86
+ }
87
+ const current = map.get(address);
88
+ if (current !== undefined) {
89
+ const merged = (current | role);
90
+ if (isInvokedProgram && isWritable(merged)) {
91
+ throw new BuildTransactionError(`Invoked program ${address} must not be writable`);
92
+ }
93
+ map.set(address, merged);
94
+ metaByAddress.set(address, { address, role: merged });
95
+ }
96
+ else {
97
+ map.set(address, role);
98
+ metaByAddress.set(address, { address, role });
99
+ }
100
+ };
101
+ for (const instruction of instructions) {
102
+ const programAddress = instruction.programId.toBase58();
103
+ invokedPrograms.add(programAddress);
104
+ upsert(programAddress, READONLY, true);
105
+ for (const key of instruction.keys) {
106
+ upsert(key.pubkey.toBase58(), key.isSigner ? (key.isWritable ? WRITABLE_SIGNER : READONLY_SIGNER) : key.isWritable ? WRITABLE : READONLY, invokedPrograms.has(key.pubkey.toBase58()));
107
+ }
108
+ }
109
+ const ordered = [...metaByAddress.values()];
110
+ ordered.sort((a, b) => {
111
+ const aFee = a.address === feePayerAddress ? -1 : 0;
112
+ const bFee = b.address === feePayerAddress ? -1 : 0;
113
+ if (aFee !== bFee)
114
+ return aFee - bFee;
115
+ const aSigner = isSigner(a.role) ? -1 : 0;
116
+ const bSigner = isSigner(b.role) ? -1 : 0;
117
+ if (aSigner !== bSigner)
118
+ return aSigner - bSigner;
119
+ const aWritable = isWritable(a.role) ? -1 : 0;
120
+ const bWritable = isWritable(b.role) ? -1 : 0;
121
+ if (aWritable !== bWritable)
122
+ return aWritable - bWritable;
123
+ return addressComparator(a.address, b.address);
124
+ });
125
+ return ordered;
126
+ }
127
+ function computeHeader(orderedAccounts) {
128
+ let numSignerAccounts = 0;
129
+ let numReadonlySignerAccounts = 0;
130
+ let numReadonlyNonSignerAccounts = 0;
131
+ for (const account of orderedAccounts) {
132
+ if (isSigner(account.role)) {
133
+ numSignerAccounts++;
134
+ if (!isWritable(account.role)) {
135
+ numReadonlySignerAccounts++;
136
+ }
137
+ }
138
+ else if (!isWritable(account.role)) {
139
+ numReadonlyNonSignerAccounts++;
140
+ }
141
+ }
142
+ return { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts };
143
+ }
144
+ function compileInstructions(instructions, orderedAccounts) {
145
+ const accountIndex = new Map();
146
+ orderedAccounts.forEach((account, index) => accountIndex.set(account.address, index));
147
+ return instructions.map((instruction) => ({
148
+ programAddressIndex: accountIndex.get(instruction.programId.toBase58()),
149
+ accountIndices: instruction.keys.map((k) => accountIndex.get(k.pubkey.toBase58())),
150
+ data: instruction.data ?? new Uint8Array(),
151
+ }));
152
+ }
153
+ /**
154
+ * Compile a Solana transaction message and return its wire bytes.
155
+ *
156
+ * Version-aware: only `version: 1` (SIMD-0296/0385) is implemented; other
157
+ * versions throw a clear unsupported-version error until they are added.
158
+ *
159
+ * @param args - version, instructions, fee payer, recent blockhash, and config
160
+ * @returns the serialized message bytes (v1 starts with the 0x81 version prefix)
161
+ */
162
+ export function compileTransactionMessage(args) {
163
+ const { version, instructions, feePayer, recentBlockhash, transactionConfig } = args;
164
+ if (version !== 1) {
165
+ throw new BuildTransactionError(`Unsupported transaction version: ${version}. Only version 1 is implemented.`);
166
+ }
167
+ if (!instructions || instructions.length === 0) {
168
+ throw new BuildTransactionError('At least one instruction is required to compile a v1 transaction');
169
+ }
170
+ if (!transactionConfig) {
171
+ throw new BuildTransactionError('transactionConfig is required to compile a v1 transaction');
172
+ }
173
+ const { instructions: filteredInstructions, config } = stripComputeBudgetInstructions(instructions, transactionConfig);
174
+ const orderedAccounts = collectOrderedAccounts(feePayer, filteredInstructions);
175
+ if (orderedAccounts.length > MAX_ACCOUNTS) {
176
+ throw new BuildTransactionError(`Too many accounts in v1 transaction: ${orderedAccounts.length} (max ${MAX_ACCOUNTS})`);
177
+ }
178
+ const numSigners = orderedAccounts.filter((a) => isSigner(a.role)).length;
179
+ if (numSigners > MAX_SIGNERS) {
180
+ throw new BuildTransactionError(`Too many signers in v1 transaction: ${numSigners} (max ${MAX_SIGNERS})`);
181
+ }
182
+ if (filteredInstructions.length > MAX_INSTRUCTIONS) {
183
+ throw new BuildTransactionError(`Too many instructions in v1 transaction: ${filteredInstructions.length} (max ${MAX_INSTRUCTIONS})`);
184
+ }
185
+ for (let i = 0; i < filteredInstructions.length; i++) {
186
+ if (filteredInstructions[i].keys.length > MAX_ACCOUNTS_PER_INSTRUCTION) {
187
+ throw new BuildTransactionError(`Too many accounts in instruction ${i}: ${filteredInstructions[i].keys.length} (max ${MAX_ACCOUNTS_PER_INSTRUCTION})`);
188
+ }
189
+ }
190
+ const header = computeHeader(orderedAccounts);
191
+ const { mask, values } = encodeConfigMaskAndValues(config);
192
+ const compiledInstructions = compileInstructions(filteredInstructions, orderedAccounts);
193
+ return encodeV1Message({
194
+ header,
195
+ configMask: mask,
196
+ configValues: values,
197
+ blockhash: recentBlockhash,
198
+ staticAccounts: orderedAccounts.map((account) => account.address),
199
+ compiledInstructions,
200
+ });
201
+ }
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZVRyYW5zYWN0aW9uTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE9BQU8sRUFBRSxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFpQi9ELHdEQUF3RDtBQUN4RCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQ25CLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUMxQixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFMUIsTUFBTSx5QkFBeUIsR0FBRyw2Q0FBNkMsQ0FBQztBQUNoRixNQUFNLG9DQUFvQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLG9DQUFvQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLDBCQUEwQixHQUFHLE9BQVMsQ0FBQztBQUU3QyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDeEIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzVCLE1BQU0sNEJBQTRCLEdBQUcsR0FBRyxDQUFDO0FBRXpDLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0UsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUV0RSw4RUFBOEU7QUFDOUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO0lBQ2hELFNBQVMsRUFBRSxPQUFPO0lBQ2xCLGlCQUFpQixFQUFFLEtBQUs7SUFDeEIsYUFBYSxFQUFFLFVBQVU7SUFDekIsT0FBTyxFQUFFLEtBQUs7SUFDZCxXQUFXLEVBQUUsU0FBUztJQUN0QixLQUFLLEVBQUUsTUFBTTtDQUNkLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFJWCxTQUFTLFNBQVMsQ0FBQyxJQUFnQixFQUFFLE1BQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDdEcsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLElBQWdCLEVBQUUsTUFBYztJQUNqRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLDhCQUE4QixDQUNyQyxZQUFzQyxFQUN0QyxpQkFBb0M7SUFFcEMsTUFBTSxRQUFRLEdBQTZCLEVBQUUsQ0FBQztJQUM5QyxNQUFNLE1BQU0sR0FBc0IsRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFFM0QsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLHlCQUF5QixDQUFDO1FBQ3ZGLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU1QyxJQUFJLGVBQWUsSUFBSSxhQUFhLEtBQUssb0NBQW9DLEVBQUUsQ0FBQztZQUM5RSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxTQUFTO1FBQ1gsQ0FBQztRQUVELElBQUksZUFBZSxJQUFJLGFBQWEsS0FBSyxvQ0FBb0MsRUFBRSxDQUFDO1lBQzlFLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNwRSxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsTUFBTSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLDBCQUEwQixDQUFDLENBQUM7WUFDekcsQ0FBQztZQUNELFNBQVM7UUFDWCxDQUFDO1FBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxRQUFtQixFQUFFLFlBQXNDO0lBQ3pGLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUN0QyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztJQUNyRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUV4RixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQWUsRUFBRSxJQUFZLEVBQUUsZ0JBQXlCLEVBQUUsRUFBRTtRQUMxRSxJQUFJLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQztZQUNoQyxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxtQkFBbUIsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hGLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUkscUJBQXFCLENBQUMsbUJBQW1CLE9BQU8sdUJBQXVCLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQVcsQ0FBQztZQUMxQyxJQUFJLGdCQUFnQixJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLElBQUkscUJBQXFCLENBQUMsbUJBQW1CLE9BQU8sdUJBQXVCLENBQUMsQ0FBQztZQUNyRixDQUFDO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekIsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QixhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEQsZUFBZSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNwQyxNQUFNLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLENBQ0osR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFDckIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFDMUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQzNDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksSUFBSSxLQUFLLElBQUk7WUFBRSxPQUFPLElBQUksR0FBRyxJQUFJLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksT0FBTyxLQUFLLE9BQU87WUFBRSxPQUFPLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksU0FBUyxLQUFLLFNBQVM7WUFBRSxPQUFPLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDMUQsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxlQUE4QjtJQUNuRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztJQUMxQixJQUFJLHlCQUF5QixHQUFHLENBQUMsQ0FBQztJQUNsQyxJQUFJLDRCQUE0QixHQUFHLENBQUMsQ0FBQztJQUNyQyxLQUFLLE1BQU0sT0FBTyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDOUIseUJBQXlCLEVBQUUsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckMsNEJBQTRCLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSxDQUFDO0FBQ3hGLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUMxQixZQUFzQyxFQUN0QyxlQUE4QjtJQUU5QixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUMvQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFdEYsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBRTtRQUN4RSxjQUFjLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBRSxDQUFDO1FBQ25GLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLElBQUksVUFBVSxFQUFFO0tBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBTXpDO0lBQ0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQztJQUVyRixJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUkscUJBQXFCLENBQUMsb0NBQW9DLE9BQU8sa0NBQWtDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBQ0QsSUFBSSxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFDRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUkscUJBQXFCLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsTUFBTSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyw4QkFBOEIsQ0FDbkYsWUFBWSxFQUNaLGlCQUFpQixDQUNsQixDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDL0UsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLFlBQVksRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0Isd0NBQXdDLGVBQWUsQ0FBQyxNQUFNLFNBQVMsWUFBWSxHQUFHLENBQ3ZGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxJQUFJLFVBQVUsR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUkscUJBQXFCLENBQUMsdUNBQXVDLFVBQVUsU0FBUyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25ELE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0IsNENBQTRDLG9CQUFvQixDQUFDLE1BQU0sU0FBUyxnQkFBZ0IsR0FBRyxDQUNwRyxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztZQUN2RSxNQUFNLElBQUkscUJBQXFCLENBQzdCLG9DQUFvQyxDQUFDLEtBQUssb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sU0FBUyw0QkFBNEIsR0FBRyxDQUN0SCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRXhGLE9BQU8sZUFBZSxDQUFDO1FBQ3JCLE1BQU07UUFDTixVQUFVLEVBQUUsSUFBSTtRQUNoQixZQUFZLEVBQUUsTUFBTTtRQUNwQixTQUFTLEVBQUUsZUFBZTtRQUMxQixjQUFjLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNqRSxvQkFBb0I7S0FDckIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBlbmNvZGVWMU1lc3NhZ2UsIFYxTWVzc2FnZUhlYWRlciB9IGZyb20gJy4vY29kZWNzL3YxL21lc3NhZ2UnO1xuaW1wb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9IGZyb20gJy4vY29kZWNzL3YxL2NvbmZpZyc7XG5pbXBvcnQgeyBDb21waWxlZEluc3RydWN0aW9uIH0gZnJvbSAnLi9jb2RlY3MvdjEvaW5zdHJ1Y3Rpb24nO1xuXG4vKiogU3VwcG9ydGVkIFNvbGFuYSB0cmFuc2FjdGlvbiB2ZXJzaW9ucy4gT25seSAxIChTSU1ELTAyOTYvMDM4NSkgaXMgaW1wbGVtZW50ZWQuICovXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblZlcnNpb24gPSAwIHwgMTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHYxIHRyYW5zYWN0aW9uLCBtaXJyb3JpbmcgdGhlIHNoYXJlZCBzZGstY29yZSB0eXBlLlxuICogQWxsIHZhbHVlcyBhcmUgb3B0aW9uYWwgKG51bGwgPSB1bnNldCk7IHByaW9yaXR5RmVlIGlzIHRvdGFsIGxhbXBvcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uQ29uZmlnIHtcbiAgY29tcHV0ZVVuaXRMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgaGVhcFNpemU6IG51bWJlciB8IG51bGw7XG4gIGxvYWRlZEFjY291bnRzRGF0YVNpemVMaW1pdDogbnVtYmVyIHwgbnVsbDtcbiAgcHJpb3JpdHlGZWU6IG51bWJlciB8IG51bGw7IC8vIGxhbXBvcnRzICh0b3RhbClcbn1cblxuLy8gQWNjb3VudFJvbGUgYml0IHZhbHVlcyAobWlycm9yIEBzb2xhbmEvaW5zdHJ1Y3Rpb25zKS5cbmNvbnN0IFJFQURPTkxZID0gMDtcbmNvbnN0IFdSSVRBQkxFID0gMTtcbmNvbnN0IFJFQURPTkxZX1NJR05FUiA9IDI7XG5jb25zdCBXUklUQUJMRV9TSUdORVIgPSAzO1xuXG5jb25zdCBDT01QVVRFX0JVREdFVF9QUk9HUkFNX0lEID0gJ0NvbXB1dGVCdWRnZXQxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnO1xuY29uc3QgU0VUX0NPTVBVVEVfVU5JVF9MSU1JVF9ESVNDUklNSU5BVE9SID0gMjtcbmNvbnN0IFNFVF9DT01QVVRFX1VOSVRfUFJJQ0VfRElTQ1JJTUlOQVRPUiA9IDM7XG5jb25zdCBNSUNST19MQU1QT1JUU19QRVJfTEFNUE9SVCA9IDFfMDAwXzAwMDtcblxuY29uc3QgTUFYX0FDQ09VTlRTID0gNjQ7XG5jb25zdCBNQVhfU0lHTkVSUyA9IDEyO1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcblxuY29uc3QgaXNTaWduZXIgPSAocm9sZTogbnVtYmVyKTogYm9vbGVhbiA9PiAocm9sZSAmIFJFQURPTkxZX1NJR05FUikgIT09IDA7XG5jb25zdCBpc1dyaXRhYmxlID0gKHJvbGU6IG51bWJlcik6IGJvb2xlYW4gPT4gKHJvbGUgJiBXUklUQUJMRSkgIT09IDA7XG5cbi8vIEFkZHJlc3Mgb3JkZXJpbmcgY29tcGFyYXRvciBtYXRjaGVzIEBzb2xhbmEvYWRkcmVzc2VzIGdldEFkZHJlc3NDb21wYXJhdG9yLlxuY29uc3QgYWRkcmVzc0NvbXBhcmF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4nLCB7XG4gIGNhc2VGaXJzdDogJ2xvd2VyJyxcbiAgaWdub3JlUHVuY3R1YXRpb246IGZhbHNlLFxuICBsb2NhbGVNYXRjaGVyOiAnYmVzdCBmaXQnLFxuICBudW1lcmljOiBmYWxzZSxcbiAgc2Vuc2l0aXZpdHk6ICd2YXJpYW50JyxcbiAgdXNhZ2U6ICdzb3J0Jyxcbn0pLmNvbXBhcmU7XG5cbnR5cGUgQWNjb3VudE1ldGEgPSB7IGFkZHJlc3M6IHN0cmluZzsgcm9sZTogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHJlYWRVMzJMRShkYXRhOiBVaW50OEFycmF5LCBvZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBkYXRhW29mZnNldF0gfCAoZGF0YVtvZmZzZXQgKyAxXSA8PCA4KSB8IChkYXRhW29mZnNldCArIDJdIDw8IDE2KSB8IChkYXRhW29mZnNldCArIDNdIDw8IDI0KTtcbn1cblxuZnVuY3Rpb24gcmVhZFU2NExFKGRhdGE6IFVpbnQ4QXJyYXksIG9mZnNldDogbnVtYmVyKTogbnVtYmVyIHtcbiAgbGV0IHZhbHVlID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICB2YWx1ZSArPSBOdW1iZXIoZGF0YVtvZmZzZXQgKyBpXSkgKiBNYXRoLnBvdygyLCA4ICogaSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFN0cmlwIENvbXB1dGVCdWRnZXQgaW5zdHJ1Y3Rpb25zIChTZXRDb21wdXRlVW5pdExpbWl0IC8gU2V0Q29tcHV0ZVVuaXRQcmljZSlcbiAqIGFuZCBmb2xkIHRoZWlyIHZhbHVlcyBpbnRvIHRoZSB0cmFuc2FjdGlvbiBjb25maWcgd2hlbiBzdGlsbCB1bnNldC5cbiAqL1xuZnVuY3Rpb24gc3RyaXBDb21wdXRlQnVkZ2V0SW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnXG4pOiB7IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdOyBjb25maWc6IFRyYW5zYWN0aW9uQ29uZmlnIH0ge1xuICBjb25zdCBmaWx0ZXJlZDogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gIGNvbnN0IGNvbmZpZzogVHJhbnNhY3Rpb25Db25maWcgPSB7IC4uLnRyYW5zYWN0aW9uQ29uZmlnIH07XG5cbiAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICBjb25zdCBpc0NvbXB1dGVCdWRnZXQgPSBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9CYXNlNTgoKSA9PT0gQ09NUFVURV9CVURHRVRfUFJPR1JBTV9JRDtcbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gaW5zdHJ1Y3Rpb24uZGF0YT8uWzBdO1xuXG4gICAgaWYgKGlzQ29tcHV0ZUJ1ZGdldCAmJiBkaXNjcmltaW5hdG9yID09PSBTRVRfQ09NUFVURV9VTklUX0xJTUlUX0RJU0NSSU1JTkFUT1IpIHtcbiAgICAgIGlmIChjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9PT0gbnVsbCkge1xuICAgICAgICBjb25maWcuY29tcHV0ZVVuaXRMaW1pdCA9IHJlYWRVMzJMRShpbnN0cnVjdGlvbi5kYXRhLCAxKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc0NvbXB1dGVCdWRnZXQgJiYgZGlzY3JpbWluYXRvciA9PT0gU0VUX0NPTVBVVEVfVU5JVF9QUklDRV9ESVNDUklNSU5BVE9SKSB7XG4gICAgICBpZiAoY29uZmlnLnByaW9yaXR5RmVlID09PSBudWxsICYmIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1pY3JvTGFtcG9ydHMgPSByZWFkVTY0TEUoaW5zdHJ1Y3Rpb24uZGF0YSwgMSk7XG4gICAgICAgIGNvbmZpZy5wcmlvcml0eUZlZSA9IE1hdGguY2VpbCgobWljcm9MYW1wb3J0cyAqIGNvbmZpZy5jb21wdXRlVW5pdExpbWl0KSAvIE1JQ1JPX0xBTVBPUlRTX1BFUl9MQU1QT1JUKTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZpbHRlcmVkLnB1c2goaW5zdHJ1Y3Rpb24pO1xuICB9XG5cbiAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZCwgY29uZmlnIH07XG59XG5cbi8qKlxuICogQ29sbGVjdCArIG9yZGVyIGFjY291bnRzIGV4YWN0bHkgYXMgQHNvbGFuYS90cmFuc2FjdGlvbi1tZXNzYWdlcyBkb2VzOlxuICogZmVlIHBheWVyIGZpcnN0IChXUklUQUJMRV9TSUdORVIpLCB0aGVuIHN0YXRpYyBhY2NvdW50cyBzb3J0ZWQgYnlcbiAqIChpc1NpZ25lciwgaXNXcml0YWJsZSwgYmFzZTU4IGNvbGxhdG9yKS4gRHVwbGljYXRlIGFkZHJlc3NlcyBtZXJnZSByb2xlcy5cbiAqIEVuZm9yY2VzIHRoZSBraXQncyBpbnZva2VkLXByb2dyYW0gcnVsZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RPcmRlcmVkQWNjb3VudHMoZmVlUGF5ZXI6IFB1YmxpY0tleSwgaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBY2NvdW50TWV0YVtdIHtcbiAgY29uc3QgZmVlUGF5ZXJBZGRyZXNzID0gZmVlUGF5ZXIudG9CYXNlNTgoKTtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgbWV0YUJ5QWRkcmVzcyA9IG5ldyBNYXA8c3RyaW5nLCBBY2NvdW50TWV0YT4oKTtcbiAgY29uc3QgaW52b2tlZFByb2dyYW1zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgbWFwLnNldChmZWVQYXllckFkZHJlc3MsIFdSSVRBQkxFX1NJR05FUik7XG4gIG1ldGFCeUFkZHJlc3Muc2V0KGZlZVBheWVyQWRkcmVzcywgeyBhZGRyZXNzOiBmZWVQYXllckFkZHJlc3MsIHJvbGU6IFdSSVRBQkxFX1NJR05FUiB9KTtcblxuICBjb25zdCB1cHNlcnQgPSAoYWRkcmVzczogc3RyaW5nLCByb2xlOiBudW1iZXIsIGlzSW52b2tlZFByb2dyYW06IGJvb2xlYW4pID0+IHtcbiAgICBpZiAoYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzKSB7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZva2VkIHByb2dyYW0gJHthZGRyZXNzfSBjYW5ub3QgcGF5IGZlZXNgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzSW52b2tlZFByb2dyYW0gJiYgaXNXcml0YWJsZShyb2xlKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudCA9IG1hcC5nZXQoYWRkcmVzcyk7XG4gICAgaWYgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbWVyZ2VkID0gKGN1cnJlbnQgfCByb2xlKSBhcyBudW1iZXI7XG4gICAgICBpZiAoaXNJbnZva2VkUHJvZ3JhbSAmJiBpc1dyaXRhYmxlKG1lcmdlZCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52b2tlZCBwcm9ncmFtICR7YWRkcmVzc30gbXVzdCBub3QgYmUgd3JpdGFibGVgKTtcbiAgICAgIH1cbiAgICAgIG1hcC5zZXQoYWRkcmVzcywgbWVyZ2VkKTtcbiAgICAgIG1ldGFCeUFkZHJlc3Muc2V0KGFkZHJlc3MsIHsgYWRkcmVzcywgcm9sZTogbWVyZ2VkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXAuc2V0KGFkZHJlc3MsIHJvbGUpO1xuICAgICAgbWV0YUJ5QWRkcmVzcy5zZXQoYWRkcmVzcywgeyBhZGRyZXNzLCByb2xlIH0pO1xuICAgIH1cbiAgfTtcblxuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHByb2dyYW1BZGRyZXNzID0gaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgaW52b2tlZFByb2dyYW1zLmFkZChwcm9ncmFtQWRkcmVzcyk7XG4gICAgdXBzZXJ0KHByb2dyYW1BZGRyZXNzLCBSRUFET05MWSwgdHJ1ZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgaW5zdHJ1Y3Rpb24ua2V5cykge1xuICAgICAgdXBzZXJ0KFxuICAgICAgICBrZXkucHVia2V5LnRvQmFzZTU4KCksXG4gICAgICAgIGtleS5pc1NpZ25lciA/IChrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFX1NJR05FUiA6IFJFQURPTkxZX1NJR05FUikgOiBrZXkuaXNXcml0YWJsZSA/IFdSSVRBQkxFIDogUkVBRE9OTFksXG4gICAgICAgIGludm9rZWRQcm9ncmFtcy5oYXMoa2V5LnB1YmtleS50b0Jhc2U1OCgpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmRlcmVkID0gWy4uLm1ldGFCeUFkZHJlc3MudmFsdWVzKCldO1xuICBvcmRlcmVkLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBhRmVlID0gYS5hZGRyZXNzID09PSBmZWVQYXllckFkZHJlc3MgPyAtMSA6IDA7XG4gICAgY29uc3QgYkZlZSA9IGIuYWRkcmVzcyA9PT0gZmVlUGF5ZXJBZGRyZXNzID8gLTEgOiAwO1xuICAgIGlmIChhRmVlICE9PSBiRmVlKSByZXR1cm4gYUZlZSAtIGJGZWU7XG4gICAgY29uc3QgYVNpZ25lciA9IGlzU2lnbmVyKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYlNpZ25lciA9IGlzU2lnbmVyKGIucm9sZSkgPyAtMSA6IDA7XG4gICAgaWYgKGFTaWduZXIgIT09IGJTaWduZXIpIHJldHVybiBhU2lnbmVyIC0gYlNpZ25lcjtcbiAgICBjb25zdCBhV3JpdGFibGUgPSBpc1dyaXRhYmxlKGEucm9sZSkgPyAtMSA6IDA7XG4gICAgY29uc3QgYldyaXRhYmxlID0gaXNXcml0YWJsZShiLnJvbGUpID8gLTEgOiAwO1xuICAgIGlmIChhV3JpdGFibGUgIT09IGJXcml0YWJsZSkgcmV0dXJuIGFXcml0YWJsZSAtIGJXcml0YWJsZTtcbiAgICByZXR1cm4gYWRkcmVzc0NvbXBhcmF0b3IoYS5hZGRyZXNzLCBiLmFkZHJlc3MpO1xuICB9KTtcblxuICByZXR1cm4gb3JkZXJlZDtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHM6IEFjY291bnRNZXRhW10pOiBWMU1lc3NhZ2VIZWFkZXIge1xuICBsZXQgbnVtU2lnbmVyQWNjb3VudHMgPSAwO1xuICBsZXQgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IDA7XG4gIGxldCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gMDtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIG9yZGVyZWRBY2NvdW50cykge1xuICAgIGlmIChpc1NpZ25lcihhY2NvdW50LnJvbGUpKSB7XG4gICAgICBudW1TaWduZXJBY2NvdW50cysrO1xuICAgICAgaWYgKCFpc1dyaXRhYmxlKGFjY291bnQucm9sZSkpIHtcbiAgICAgICAgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cysrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWlzV3JpdGFibGUoYWNjb3VudC5yb2xlKSkge1xuICAgICAgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cysrO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBudW1TaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cywgbnVtUmVhZG9ubHlOb25TaWduZXJBY2NvdW50cyB9O1xufVxuXG5mdW5jdGlvbiBjb21waWxlSW5zdHJ1Y3Rpb25zKFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbiAgb3JkZXJlZEFjY291bnRzOiBBY2NvdW50TWV0YVtdXG4pOiBDb21waWxlZEluc3RydWN0aW9uW10ge1xuICBjb25zdCBhY2NvdW50SW5kZXggPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBvcmRlcmVkQWNjb3VudHMuZm9yRWFjaCgoYWNjb3VudCwgaW5kZXgpID0+IGFjY291bnRJbmRleC5zZXQoYWNjb3VudC5hZGRyZXNzLCBpbmRleCkpO1xuXG4gIHJldHVybiBpbnN0cnVjdGlvbnMubWFwKChpbnN0cnVjdGlvbikgPT4gKHtcbiAgICBwcm9ncmFtQWRkcmVzc0luZGV4OiBhY2NvdW50SW5kZXguZ2V0KGluc3RydWN0aW9uLnByb2dyYW1JZC50b0Jhc2U1OCgpKSEsXG4gICAgYWNjb3VudEluZGljZXM6IGluc3RydWN0aW9uLmtleXMubWFwKChrKSA9PiBhY2NvdW50SW5kZXguZ2V0KGsucHVia2V5LnRvQmFzZTU4KCkpISksXG4gICAgZGF0YTogaW5zdHJ1Y3Rpb24uZGF0YSA/PyBuZXcgVWludDhBcnJheSgpLFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29tcGlsZSBhIFNvbGFuYSB0cmFuc2FjdGlvbiBtZXNzYWdlIGFuZCByZXR1cm4gaXRzIHdpcmUgYnl0ZXMuXG4gKlxuICogVmVyc2lvbi1hd2FyZTogb25seSBgdmVyc2lvbjogMWAgKFNJTUQtMDI5Ni8wMzg1KSBpcyBpbXBsZW1lbnRlZDsgb3RoZXJcbiAqIHZlcnNpb25zIHRocm93IGEgY2xlYXIgdW5zdXBwb3J0ZWQtdmVyc2lvbiBlcnJvciB1bnRpbCB0aGV5IGFyZSBhZGRlZC5cbiAqXG4gKiBAcGFyYW0gYXJncyAtIHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlIHBheWVyLCByZWNlbnQgYmxvY2toYXNoLCBhbmQgY29uZmlnXG4gKiBAcmV0dXJucyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGJ5dGVzICh2MSBzdGFydHMgd2l0aCB0aGUgMHg4MSB2ZXJzaW9uIHByZWZpeClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2UoYXJnczoge1xuICB2ZXJzaW9uOiBUcmFuc2FjdGlvblZlcnNpb247XG4gIGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdO1xuICBmZWVQYXllcjogUHVibGljS2V5O1xuICByZWNlbnRCbG9ja2hhc2g6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25Db25maWc6IFRyYW5zYWN0aW9uQ29uZmlnO1xufSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCB7IHZlcnNpb24sIGluc3RydWN0aW9ucywgZmVlUGF5ZXIsIHJlY2VudEJsb2NraGFzaCwgdHJhbnNhY3Rpb25Db25maWcgfSA9IGFyZ3M7XG5cbiAgaWYgKHZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBVbnN1cHBvcnRlZCB0cmFuc2FjdGlvbiB2ZXJzaW9uOiAke3ZlcnNpb259LiBPbmx5IHZlcnNpb24gMSBpcyBpbXBsZW1lbnRlZC5gKTtcbiAgfVxuICBpZiAoIWluc3RydWN0aW9ucyB8fCBpbnN0cnVjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQXQgbGVhc3Qgb25lIGluc3RydWN0aW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgYSB2MSB0cmFuc2FjdGlvbicpO1xuICB9XG4gIGlmICghdHJhbnNhY3Rpb25Db25maWcpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbkNvbmZpZyBpcyByZXF1aXJlZCB0byBjb21waWxlIGEgdjEgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGNvbnN0IHsgaW5zdHJ1Y3Rpb25zOiBmaWx0ZXJlZEluc3RydWN0aW9ucywgY29uZmlnIH0gPSBzdHJpcENvbXB1dGVCdWRnZXRJbnN0cnVjdGlvbnMoXG4gICAgaW5zdHJ1Y3Rpb25zLFxuICAgIHRyYW5zYWN0aW9uQ29uZmlnXG4gICk7XG5cbiAgY29uc3Qgb3JkZXJlZEFjY291bnRzID0gY29sbGVjdE9yZGVyZWRBY2NvdW50cyhmZWVQYXllciwgZmlsdGVyZWRJbnN0cnVjdGlvbnMpO1xuICBpZiAob3JkZXJlZEFjY291bnRzLmxlbmd0aCA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gdjEgdHJhbnNhY3Rpb246ICR7b3JkZXJlZEFjY291bnRzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU30pYFxuICAgICk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVycyA9IG9yZGVyZWRBY2NvdW50cy5maWx0ZXIoKGEpID0+IGlzU2lnbmVyKGEucm9sZSkpLmxlbmd0aDtcbiAgaWYgKG51bVNpZ25lcnMgPiBNQVhfU0lHTkVSUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYFRvbyBtYW55IHNpZ25lcnMgaW4gdjEgdHJhbnNhY3Rpb246ICR7bnVtU2lnbmVyc30gKG1heCAke01BWF9TSUdORVJTfSlgKTtcbiAgfVxuICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoID4gTUFYX0lOU1RSVUNUSU9OUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgVG9vIG1hbnkgaW5zdHJ1Y3Rpb25zIGluIHYxIHRyYW5zYWN0aW9uOiAke2ZpbHRlcmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aH0gKG1heCAke01BWF9JTlNUUlVDVElPTlN9KWBcbiAgICApO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsdGVyZWRJbnN0cnVjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoZmlsdGVyZWRJbnN0cnVjdGlvbnNbaV0ua2V5cy5sZW5ndGggPiBNQVhfQUNDT1VOVFNfUEVSX0lOU1RSVUNUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgVG9vIG1hbnkgYWNjb3VudHMgaW4gaW5zdHJ1Y3Rpb24gJHtpfTogJHtmaWx0ZXJlZEluc3RydWN0aW9uc1tpXS5rZXlzLmxlbmd0aH0gKG1heCAke01BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT059KWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGVhZGVyID0gY29tcHV0ZUhlYWRlcihvcmRlcmVkQWNjb3VudHMpO1xuICBjb25zdCB7IG1hc2ssIHZhbHVlcyB9ID0gZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyhjb25maWcpO1xuICBjb25zdCBjb21waWxlZEluc3RydWN0aW9ucyA9IGNvbXBpbGVJbnN0cnVjdGlvbnMoZmlsdGVyZWRJbnN0cnVjdGlvbnMsIG9yZGVyZWRBY2NvdW50cyk7XG5cbiAgcmV0dXJuIGVuY29kZVYxTWVzc2FnZSh7XG4gICAgaGVhZGVyLFxuICAgIGNvbmZpZ01hc2s6IG1hc2ssXG4gICAgY29uZmlnVmFsdWVzOiB2YWx1ZXMsXG4gICAgYmxvY2toYXNoOiByZWNlbnRCbG9ja2hhc2gsXG4gICAgc3RhdGljQWNjb3VudHM6IG9yZGVyZWRBY2NvdW50cy5tYXAoKGFjY291bnQpID0+IGFjY291bnQuYWRkcmVzcyksXG4gICAgY29tcGlsZWRJbnN0cnVjdGlvbnMsXG4gIH0pO1xufVxuIl19
@@ -0,0 +1,9 @@
1
+ export type ParsedWireTransaction = {
2
+ messageBytes: Uint8Array;
3
+ signatures: Uint8Array[];
4
+ signerPublicKeys: string[];
5
+ };
6
+ export declare function parseWireTransaction(wireBytes: Uint8Array): ParsedWireTransaction;
7
+ export declare function verifyV1Signatures(messageBytes: Uint8Array, signatures: Uint8Array[], signerPublicKeys: string[]): void;
8
+ export declare function validateRawTransactionV1(wireBytes: Uint8Array): void;
9
+ //# sourceMappingURL=parseWireTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseWireTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/serialization/parseWireTransaction.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,qBAAqB,CAwCjF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,UAAU,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,IAAI,CAUN;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAGpE"}
@@ -0,0 +1,50 @@
1
+ import { BuildTransactionError } from '@bitgo-beta/sdk-core';
2
+ import nacl from 'tweetnacl';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ import { decodeV1Message } from './codecs/v1/message';
5
+ const SIGNATURE_BYTE_LENGTH = 64;
6
+ const V1_VERSION_PREFIX = 0x81;
7
+ const V1_TRANSACTION_SIZE_LIMIT = 4096;
8
+ export function parseWireTransaction(wireBytes) {
9
+ if (!wireBytes || wireBytes.length === 0) {
10
+ throw new BuildTransactionError('Invalid v1 transaction: empty');
11
+ }
12
+ if (wireBytes[0] !== V1_VERSION_PREFIX) {
13
+ throw new BuildTransactionError(`Invalid v1 transaction: expected version prefix 0x${V1_VERSION_PREFIX.toString(16)}, got 0x${wireBytes[0].toString(16)}`);
14
+ }
15
+ if (wireBytes.length < 42) {
16
+ throw new BuildTransactionError('Invalid v1 transaction: too short');
17
+ }
18
+ if (wireBytes.length > V1_TRANSACTION_SIZE_LIMIT) {
19
+ throw new BuildTransactionError(`Invalid v1 transaction: exceeds the ${V1_TRANSACTION_SIZE_LIMIT}-byte size limit: ${wireBytes.length} bytes`);
20
+ }
21
+ const decoded = decodeV1Message(wireBytes);
22
+ const messageLength = decoded.byteLength;
23
+ const numSignatures = decoded.header.numSignerAccounts;
24
+ const expectedSigBytes = numSignatures * SIGNATURE_BYTE_LENGTH;
25
+ if (wireBytes.length - messageLength !== expectedSigBytes) {
26
+ throw new BuildTransactionError(`Invalid v1 transaction: expected ${expectedSigBytes} signature bytes after message, got ${wireBytes.length - messageLength}`);
27
+ }
28
+ const messageBytes = wireBytes.slice(0, messageLength);
29
+ const signatures = [];
30
+ for (let i = 0; i < numSignatures; i++) {
31
+ signatures.push(wireBytes.slice(messageLength + i * SIGNATURE_BYTE_LENGTH, messageLength + (i + 1) * SIGNATURE_BYTE_LENGTH));
32
+ }
33
+ return { messageBytes, signatures, signerPublicKeys: decoded.staticAccounts.slice(0, numSignatures) };
34
+ }
35
+ export function verifyV1Signatures(messageBytes, signatures, signerPublicKeys) {
36
+ if (signatures.length !== signerPublicKeys.length) {
37
+ throw new BuildTransactionError('Signature count does not match signer count');
38
+ }
39
+ for (let i = 0; i < signatures.length; i++) {
40
+ const pubkey = new PublicKey(signerPublicKeys[i]).toBuffer();
41
+ if (!nacl.sign.detached.verify(messageBytes, signatures[i], pubkey)) {
42
+ throw new BuildTransactionError(`Signature verification failed for signer ${i}`);
43
+ }
44
+ }
45
+ }
46
+ export function validateRawTransactionV1(wireBytes) {
47
+ const { messageBytes, signatures, signerPublicKeys } = parseWireTransaction(wireBytes);
48
+ verifyV1Signatures(messageBytes, signatures, signerPublicKeys);
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXJlVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDL0IsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7QUFRdkMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLFNBQXFCO0lBQ3hELElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUkscUJBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUkscUJBQXFCLENBQzdCLHFEQUFxRCxpQkFBaUIsQ0FBQyxRQUFRLENBQzdFLEVBQUUsQ0FDSCxXQUFXLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLHFCQUFxQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0IsdUNBQXVDLHlCQUF5QixxQkFBcUIsU0FBUyxDQUFDLE1BQU0sUUFBUSxDQUM5RyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3pDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLEdBQUcscUJBQXFCLENBQUM7SUFFL0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLGFBQWEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFELE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0Isb0NBQW9DLGdCQUFnQix1Q0FDbEQsU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUNyQixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN2RCxNQUFNLFVBQVUsR0FBaUIsRUFBRSxDQUFDO0lBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2QyxVQUFVLENBQUMsSUFBSSxDQUNiLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxxQkFBcUIsRUFBRSxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FDNUcsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztBQUN4RyxDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxZQUF3QixFQUN4QixVQUF3QixFQUN4QixnQkFBMEI7SUFFMUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxJQUFJLHFCQUFxQixDQUFDLDRDQUE0QyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxTQUFxQjtJQUM1RCxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZGLGtCQUFrQixDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNqRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7IFB1YmxpY0tleSB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBkZWNvZGVWMU1lc3NhZ2UgfSBmcm9tICcuL2NvZGVjcy92MS9tZXNzYWdlJztcblxuY29uc3QgU0lHTkFUVVJFX0JZVEVfTEVOR1RIID0gNjQ7XG5jb25zdCBWMV9WRVJTSU9OX1BSRUZJWCA9IDB4ODE7XG5jb25zdCBWMV9UUkFOU0FDVElPTl9TSVpFX0xJTUlUID0gNDA5NjtcblxuZXhwb3J0IHR5cGUgUGFyc2VkV2lyZVRyYW5zYWN0aW9uID0ge1xuICBtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXk7XG4gIHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXTtcbiAgc2lnbmVyUHVibGljS2V5czogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VXaXJlVHJhbnNhY3Rpb24od2lyZUJ5dGVzOiBVaW50OEFycmF5KTogUGFyc2VkV2lyZVRyYW5zYWN0aW9uIHtcbiAgaWYgKCF3aXJlQnl0ZXMgfHwgd2lyZUJ5dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgdHJhbnNhY3Rpb246IGVtcHR5Jyk7XG4gIH1cbiAgaWYgKHdpcmVCeXRlc1swXSAhPT0gVjFfVkVSU0lPTl9QUkVGSVgpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgYEludmFsaWQgdjEgdHJhbnNhY3Rpb246IGV4cGVjdGVkIHZlcnNpb24gcHJlZml4IDB4JHtWMV9WRVJTSU9OX1BSRUZJWC50b1N0cmluZyhcbiAgICAgICAgMTZcbiAgICAgICl9LCBnb3QgMHgke3dpcmVCeXRlc1swXS50b1N0cmluZygxNil9YFxuICAgICk7XG4gIH1cbiAgaWYgKHdpcmVCeXRlcy5sZW5ndGggPCA0Mikge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgdHJhbnNhY3Rpb246IHRvbyBzaG9ydCcpO1xuICB9XG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoID4gVjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgSW52YWxpZCB2MSB0cmFuc2FjdGlvbjogZXhjZWVkcyB0aGUgJHtWMV9UUkFOU0FDVElPTl9TSVpFX0xJTUlUfS1ieXRlIHNpemUgbGltaXQ6ICR7d2lyZUJ5dGVzLmxlbmd0aH0gYnl0ZXNgXG4gICAgKTtcbiAgfVxuICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVjFNZXNzYWdlKHdpcmVCeXRlcyk7XG4gIGNvbnN0IG1lc3NhZ2VMZW5ndGggPSBkZWNvZGVkLmJ5dGVMZW5ndGg7XG4gIGNvbnN0IG51bVNpZ25hdHVyZXMgPSBkZWNvZGVkLmhlYWRlci5udW1TaWduZXJBY2NvdW50cztcbiAgY29uc3QgZXhwZWN0ZWRTaWdCeXRlcyA9IG51bVNpZ25hdHVyZXMgKiBTSUdOQVRVUkVfQllURV9MRU5HVEg7XG5cbiAgaWYgKHdpcmVCeXRlcy5sZW5ndGggLSBtZXNzYWdlTGVuZ3RoICE9PSBleHBlY3RlZFNpZ0J5dGVzKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBleHBlY3RlZCAke2V4cGVjdGVkU2lnQnl0ZXN9IHNpZ25hdHVyZSBieXRlcyBhZnRlciBtZXNzYWdlLCBnb3QgJHtcbiAgICAgICAgd2lyZUJ5dGVzLmxlbmd0aCAtIG1lc3NhZ2VMZW5ndGhcbiAgICAgIH1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2VCeXRlcyA9IHdpcmVCeXRlcy5zbGljZSgwLCBtZXNzYWdlTGVuZ3RoKTtcbiAgY29uc3Qgc2lnbmF0dXJlczogVWludDhBcnJheVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU2lnbmF0dXJlczsgaSsrKSB7XG4gICAgc2lnbmF0dXJlcy5wdXNoKFxuICAgICAgd2lyZUJ5dGVzLnNsaWNlKG1lc3NhZ2VMZW5ndGggKyBpICogU0lHTkFUVVJFX0JZVEVfTEVOR1RILCBtZXNzYWdlTGVuZ3RoICsgKGkgKyAxKSAqIFNJR05BVFVSRV9CWVRFX0xFTkdUSClcbiAgICApO1xuICB9XG4gIHJldHVybiB7IG1lc3NhZ2VCeXRlcywgc2lnbmF0dXJlcywgc2lnbmVyUHVibGljS2V5czogZGVjb2RlZC5zdGF0aWNBY2NvdW50cy5zbGljZSgwLCBudW1TaWduYXR1cmVzKSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VjFTaWduYXR1cmVzKFxuICBtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXksXG4gIHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXSxcbiAgc2lnbmVyUHVibGljS2V5czogc3RyaW5nW11cbik6IHZvaWQge1xuICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggIT09IHNpZ25lclB1YmxpY0tleXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU2lnbmF0dXJlIGNvdW50IGRvZXMgbm90IG1hdGNoIHNpZ25lciBjb3VudCcpO1xuICB9XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHB1YmtleSA9IG5ldyBQdWJsaWNLZXkoc2lnbmVyUHVibGljS2V5c1tpXSkudG9CdWZmZXIoKTtcbiAgICBpZiAoIW5hY2wuc2lnbi5kZXRhY2hlZC52ZXJpZnkobWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzW2ldLCBwdWJrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBmb3Igc2lnbmVyICR7aX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb25WMSh3aXJlQnl0ZXM6IFVpbnQ4QXJyYXkpOiB2b2lkIHtcbiAgY29uc3QgeyBtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXMgfSA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHdpcmVCeXRlcyk7XG4gIHZlcmlmeVYxU2lnbmF0dXJlcyhtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXMpO1xufVxuIl19
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Assemble the v1 wire format of a signed transaction.
3
+ *
4
+ * Unlike legacy and v0 transactions, where signatures are prefixed before the
5
+ * message, a v1 transaction places the message first and appends the signatures
6
+ * at the tail with no length prefix; the signature count is derived from the
7
+ * message header's numRequiredSignatures.
8
+ *
9
+ * @param messageBytes - The serialized v1 message bytes (starting with the 0x81 version prefix)
10
+ * @param signatures - The ed25519 signatures over the message bytes, one per required signer
11
+ * @returns The full v1 wire transaction bytes
12
+ */
13
+ export declare function serializeWireTransaction(messageBytes: Uint8Array, signatures: Uint8Array[]): Uint8Array;
14
+ //# sourceMappingURL=wire-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire-transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/serialization/wire-transaction.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,CA+CvG"}