@aztec/simulator 0.0.1-commit.4d3c002 → 0.0.1-commit.4d9804df

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 (359) hide show
  1. package/dest/client.d.ts +1 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +0 -2
  4. package/dest/private/acvm_wasm.d.ts +1 -1
  5. package/dest/private/acvm_wasm.d.ts.map +1 -1
  6. package/dest/private/acvm_wasm.js +3 -1
  7. package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
  8. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  9. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  10. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  11. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  13. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  14. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  16. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  17. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  18. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  19. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  20. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  21. package/dest/public/avm/testing/utils.d.ts +32 -0
  22. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  23. package/dest/public/avm/{fixtures → testing}/utils.js +4 -34
  24. package/dest/public/avm_simulator.d.ts +28 -0
  25. package/dest/public/avm_simulator.d.ts.map +1 -0
  26. package/dest/public/avm_simulator.js +4 -0
  27. package/dest/public/avm_simulator_pool.d.ts +45 -0
  28. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  29. package/dest/public/avm_simulator_pool.js +197 -0
  30. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  31. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  32. package/dest/public/cdb/generated/api_types.js +314 -0
  33. package/dest/public/cdb/generated/server.d.ts +26 -0
  34. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  35. package/dest/public/cdb/generated/server.js +135 -0
  36. package/dest/public/cdb_ipc_server.d.ts +33 -0
  37. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  38. package/dest/public/cdb_ipc_server.js +153 -0
  39. package/dest/public/fixtures/amm_test.js +2 -2
  40. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  41. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  42. package/dest/public/fixtures/bulk_test.js +33 -6
  43. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  44. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  45. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  46. package/dest/public/fixtures/index.d.ts +2 -4
  47. package/dest/public/fixtures/index.d.ts.map +1 -1
  48. package/dest/public/fixtures/index.js +1 -3
  49. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  50. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  51. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  52. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +11 -7
  53. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  54. package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
  55. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  56. package/dest/public/fixtures/token_test.js +3 -3
  57. package/dest/public/fixtures/utils.d.ts +1 -1
  58. package/dest/public/fixtures/utils.d.ts.map +1 -1
  59. package/dest/public/fixtures/utils.js +16 -15
  60. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
  61. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  62. package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
  63. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  64. package/dest/public/index.d.ts +5 -2
  65. package/dest/public/index.d.ts.map +1 -1
  66. package/dest/public/index.js +2 -1
  67. package/dest/public/public_db_sources.d.ts +5 -2
  68. package/dest/public/public_db_sources.d.ts.map +1 -1
  69. package/dest/public/public_db_sources.js +9 -3
  70. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  71. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  72. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  73. package/dest/public/public_processor/public_processor.d.ts +11 -6
  74. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  75. package/dest/public/public_processor/public_processor.js +67 -38
  76. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  77. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  78. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  79. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  80. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  81. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
  82. package/dest/public/public_tx_simulator/factories.d.ts +8 -8
  83. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  84. package/dest/public/public_tx_simulator/factories.js +8 -8
  85. package/dest/public/public_tx_simulator/index.d.ts +4 -6
  86. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/index.js +2 -4
  88. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -71
  89. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  90. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -318
  91. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  92. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  93. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  94. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
  95. package/dest/public/test_executor_metrics.d.ts +1 -6
  96. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  97. package/dest/public/test_executor_metrics.js +0 -22
  98. package/package.json +22 -18
  99. package/src/client.ts +0 -2
  100. package/src/private/acvm_wasm.ts +4 -1
  101. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  102. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  103. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  104. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  105. package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
  106. package/src/public/avm_simulator.ts +29 -0
  107. package/src/public/avm_simulator_pool.ts +226 -0
  108. package/src/public/cdb/generated/api_types.ts +457 -0
  109. package/src/public/cdb/generated/server.ts +109 -0
  110. package/src/public/cdb_ipc_server.ts +197 -0
  111. package/src/public/fixtures/amm_test.ts +2 -2
  112. package/src/public/fixtures/bulk_test.ts +31 -6
  113. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  114. package/src/public/fixtures/index.ts +1 -3
  115. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  116. package/src/public/fixtures/public_tx_simulation_tester.ts +41 -60
  117. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  118. package/src/public/fixtures/token_test.ts +3 -3
  119. package/src/public/fixtures/utils.ts +18 -20
  120. package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
  121. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  122. package/src/public/index.ts +7 -3
  123. package/src/public/public_db_sources.ts +12 -3
  124. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  125. package/src/public/public_processor/public_processor.ts +89 -46
  126. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  127. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
  128. package/src/public/public_tx_simulator/factories.ts +27 -10
  129. package/src/public/public_tx_simulator/index.ts +6 -5
  130. package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
  131. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  132. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
  133. package/src/public/test_executor_metrics.ts +0 -24
  134. package/dest/public/avm/avm_context.d.ts +0 -41
  135. package/dest/public/avm/avm_context.d.ts.map +0 -1
  136. package/dest/public/avm/avm_context.js +0 -44
  137. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  138. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  139. package/dest/public/avm/avm_contract_call_result.js +0 -54
  140. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  141. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  142. package/dest/public/avm/avm_execution_environment.js +0 -33
  143. package/dest/public/avm/avm_gas.d.ts +0 -44
  144. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  145. package/dest/public/avm/avm_gas.js +0 -195
  146. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  147. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  148. package/dest/public/avm/avm_machine_state.js +0 -110
  149. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  150. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  151. package/dest/public/avm/avm_memory_types.js +0 -354
  152. package/dest/public/avm/avm_simulator.d.ts +0 -41
  153. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  154. package/dest/public/avm/avm_simulator.js +0 -192
  155. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  156. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  157. package/dest/public/avm/avm_simulator_interface.js +0 -3
  158. package/dest/public/avm/calldata.d.ts +0 -51
  159. package/dest/public/avm/calldata.d.ts.map +0 -1
  160. package/dest/public/avm/calldata.js +0 -64
  161. package/dest/public/avm/errors.d.ts +0 -104
  162. package/dest/public/avm/errors.d.ts.map +0 -1
  163. package/dest/public/avm/errors.js +0 -141
  164. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  165. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  166. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  167. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  168. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  169. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  170. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  171. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  172. package/dest/public/avm/fixtures/initializers.js +0 -45
  173. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  174. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  175. package/dest/public/avm/index.d.ts +0 -2
  176. package/dest/public/avm/index.d.ts.map +0 -1
  177. package/dest/public/avm/index.js +0 -1
  178. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  179. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  180. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  181. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  182. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  183. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  184. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  185. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  186. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  187. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  188. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  189. package/dest/public/avm/opcodes/bitwise.js +0 -99
  190. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  191. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  192. package/dest/public/avm/opcodes/comparators.js +0 -43
  193. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  194. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  195. package/dest/public/avm/opcodes/contract.js +0 -65
  196. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  197. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  198. package/dest/public/avm/opcodes/control_flow.js +0 -107
  199. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  200. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  201. package/dest/public/avm/opcodes/conversion.js +0 -333
  202. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  203. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  204. package/dest/public/avm/opcodes/ec_add.js +0 -93
  205. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  206. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  207. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  208. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  209. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  210. package/dest/public/avm/opcodes/external_calls.js +0 -210
  211. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  212. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  213. package/dest/public/avm/opcodes/hashing.js +0 -119
  214. package/dest/public/avm/opcodes/index.d.ts +0 -16
  215. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  216. package/dest/public/avm/opcodes/index.js +0 -15
  217. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  218. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  219. package/dest/public/avm/opcodes/instruction.js +0 -95
  220. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  221. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  222. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  223. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  224. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  225. package/dest/public/avm/opcodes/memory.js +0 -257
  226. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  227. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  228. package/dest/public/avm/opcodes/misc.js +0 -73
  229. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  230. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  231. package/dest/public/avm/opcodes/storage.js +0 -78
  232. package/dest/public/avm/revert_reason.d.ts +0 -18
  233. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  234. package/dest/public/avm/revert_reason.js +0 -39
  235. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  236. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  237. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  238. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  239. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  240. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  241. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  242. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  243. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  244. package/dest/public/avm/test_utils.d.ts +0 -15
  245. package/dest/public/avm/test_utils.d.ts.map +0 -1
  246. package/dest/public/avm/test_utils.js +0 -44
  247. package/dest/public/debug_fn_name.d.ts +0 -18
  248. package/dest/public/debug_fn_name.d.ts.map +0 -1
  249. package/dest/public/debug_fn_name.js +0 -37
  250. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  251. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  252. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  253. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  254. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  255. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  256. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  257. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  258. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  259. package/dest/public/hinting_db_sources.d.ts +0 -80
  260. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  261. package/dest/public/hinting_db_sources.js +0 -356
  262. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
  263. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  264. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -99
  265. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  266. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  267. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  268. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  269. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  270. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  271. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  272. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  273. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  274. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  275. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  276. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  277. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  278. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  279. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -135
  280. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  281. package/dest/public/public_tx_simulator/public_tx_context.js +0 -298
  282. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  283. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  284. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  285. package/dest/public/side_effect_trace.d.ts +0 -87
  286. package/dest/public/side_effect_trace.d.ts.map +0 -1
  287. package/dest/public/side_effect_trace.js +0 -199
  288. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  289. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  290. package/dest/public/side_effect_trace_interface.js +0 -1
  291. package/dest/public/state_manager/index.d.ts +0 -2
  292. package/dest/public/state_manager/index.d.ts.map +0 -1
  293. package/dest/public/state_manager/index.js +0 -1
  294. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  295. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  296. package/dest/public/state_manager/nullifiers.js +0 -92
  297. package/dest/public/state_manager/public_storage.d.ts +0 -66
  298. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  299. package/dest/public/state_manager/public_storage.js +0 -145
  300. package/dest/public/state_manager/state_manager.d.ts +0 -170
  301. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  302. package/dest/public/state_manager/state_manager.js +0 -402
  303. package/src/public/avm/avm_context.ts +0 -61
  304. package/src/public/avm/avm_contract_call_result.ts +0 -69
  305. package/src/public/avm/avm_execution_environment.ts +0 -51
  306. package/src/public/avm/avm_gas.ts +0 -183
  307. package/src/public/avm/avm_machine_state.ts +0 -170
  308. package/src/public/avm/avm_memory_types.ts +0 -440
  309. package/src/public/avm/avm_simulator.ts +0 -279
  310. package/src/public/avm/avm_simulator_interface.ts +0 -8
  311. package/src/public/avm/calldata.ts +0 -101
  312. package/src/public/avm/errors.ts +0 -177
  313. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  314. package/src/public/avm/fixtures/initializers.ts +0 -103
  315. package/src/public/avm/index.ts +0 -1
  316. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  317. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  318. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  319. package/src/public/avm/opcodes/bitwise.ts +0 -113
  320. package/src/public/avm/opcodes/comparators.ts +0 -55
  321. package/src/public/avm/opcodes/contract.ts +0 -72
  322. package/src/public/avm/opcodes/control_flow.ts +0 -123
  323. package/src/public/avm/opcodes/conversion.ts +0 -104
  324. package/src/public/avm/opcodes/ec_add.ts +0 -105
  325. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  326. package/src/public/avm/opcodes/external_calls.ts +0 -262
  327. package/src/public/avm/opcodes/hashing.ts +0 -151
  328. package/src/public/avm/opcodes/index.ts +0 -15
  329. package/src/public/avm/opcodes/instruction.ts +0 -136
  330. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  331. package/src/public/avm/opcodes/memory.ts +0 -293
  332. package/src/public/avm/opcodes/misc.ts +0 -102
  333. package/src/public/avm/opcodes/storage.ts +0 -95
  334. package/src/public/avm/revert_reason.ts +0 -58
  335. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  336. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  337. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  338. package/src/public/avm/test_utils.ts +0 -64
  339. package/src/public/debug_fn_name.ts +0 -52
  340. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  341. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  342. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  343. package/src/public/hinting_db_sources.ts +0 -609
  344. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -125
  345. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  346. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  347. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  348. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  349. package/src/public/public_tx_simulator/public_tx_context.ts +0 -482
  350. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  351. package/src/public/side_effect_trace.ts +0 -293
  352. package/src/public/side_effect_trace_interface.ts +0 -28
  353. package/src/public/state_manager/index.ts +0 -1
  354. package/src/public/state_manager/nullifiers.ts +0 -103
  355. package/src/public/state_manager/public_storage.ts +0 -174
  356. package/src/public/state_manager/state_manager.ts +0 -569
  357. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  358. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  359. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -1,354 +0,0 @@
1
- import { MEM_TAG_FF, MEM_TAG_U1, MEM_TAG_U8, MEM_TAG_U16, MEM_TAG_U32, MEM_TAG_U64, MEM_TAG_U128 } from '@aztec/constants';
2
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
3
- import { Fr } from '@aztec/foundation/curves/bn254';
4
- import { createLogger } from '@aztec/foundation/log';
5
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { strict as assert } from 'assert';
7
- import { InvalidTagValueError, MemorySliceOutOfRangeError, TagCheckError } from './errors.js';
8
- /** MemoryValue gathers the common operations for all memory types. */ export class MemoryValue {
9
- getTag() {
10
- return TaggedMemory.getTag(this);
11
- }
12
- // To field
13
- toFr() {
14
- return new Fr(this.toBigInt());
15
- }
16
- toAztecAddress() {
17
- return new AztecAddress(this.toFr());
18
- }
19
- // To number. Throws if exceeds max safe int.
20
- toNumber() {
21
- return this.toFr().toNumber();
22
- }
23
- toString() {
24
- return `${this.constructor.name}(0x${this.toBigInt().toString(16)})`;
25
- }
26
- }
27
- /** IntegralValue gathers the common operations for all integral memory types. */ export class IntegralValue extends MemoryValue {
28
- }
29
- /**
30
- * This function creates a class for unsigned integers of a given number of bits.
31
- * In TypeScript terms, it's a class mixin.
32
- **/ function UnsignedIntegerClassFactory(bits) {
33
- return class NewUintClass extends IntegralValue {
34
- static bits = bits;
35
- static mod = 1n << BigInt(bits);
36
- static bitmask = this.mod - 1n;
37
- n;
38
- constructor(n){
39
- super();
40
- this.n = BigInt(n);
41
- assert(n >= 0n, `${this.constructor.name} cannot handle negative values: ${n}.`);
42
- assert(n < NewUintClass.mod, `Value ${n} is too large for ${this.constructor.name}.`);
43
- }
44
- build(n) {
45
- return new this.constructor.prototype.constructor(n);
46
- }
47
- add(rhs) {
48
- return this.build(this.n + rhs.n & NewUintClass.bitmask);
49
- }
50
- sub(rhs) {
51
- const res = this.n - rhs.n;
52
- return this.build(res >= 0 ? res : res + NewUintClass.mod);
53
- }
54
- mul(rhs) {
55
- return this.build(this.n * rhs.n & NewUintClass.bitmask);
56
- }
57
- div(rhs) {
58
- return this.build(this.n / rhs.n);
59
- }
60
- // No sign extension.
61
- shr(rhs) {
62
- // Note that this.n is >= 0 by class invariant.
63
- return this.build(this.n >> rhs.n);
64
- }
65
- shl(rhs) {
66
- const shiftAmount = rhs.n;
67
- const bitSize = BigInt(NewUintClass.bits);
68
- // Shifting by more than the bit size always results in 0
69
- if (shiftAmount >= bitSize) {
70
- return this.build(0n);
71
- }
72
- return this.build(this.n << shiftAmount & NewUintClass.bitmask);
73
- }
74
- and(rhs) {
75
- return this.build(this.n & rhs.n);
76
- }
77
- or(rhs) {
78
- return this.build(this.n | rhs.n);
79
- }
80
- xor(rhs) {
81
- return this.build(this.n ^ rhs.n);
82
- }
83
- not() {
84
- return this.build(~this.n & NewUintClass.bitmask);
85
- }
86
- equals(rhs) {
87
- return this.n === rhs.n;
88
- }
89
- lt(rhs) {
90
- return this.n < rhs.n;
91
- }
92
- toBigInt() {
93
- return this.n;
94
- }
95
- toBuffer() {
96
- if (bits < 8) {
97
- return toBufferBE(this.n, 1);
98
- }
99
- return toBufferBE(this.n, bits / 8);
100
- }
101
- };
102
- }
103
- // Now we can create the classes for each unsigned integer type.
104
- // We extend instead of just assigning so that the class has the right name.
105
- // Otherwise they are all called "NewUintClass".
106
- export class Uint1 extends UnsignedIntegerClassFactory(1) {
107
- }
108
- export class Uint8 extends UnsignedIntegerClassFactory(8) {
109
- }
110
- export class Uint16 extends UnsignedIntegerClassFactory(16) {
111
- }
112
- export class Uint32 extends UnsignedIntegerClassFactory(32) {
113
- }
114
- export class Uint64 extends UnsignedIntegerClassFactory(64) {
115
- }
116
- export class Uint128 extends UnsignedIntegerClassFactory(128) {
117
- }
118
- export class Field extends MemoryValue {
119
- static MODULUS = Fr.MODULUS;
120
- rep;
121
- constructor(v){
122
- super();
123
- this.rep = new Fr(v);
124
- }
125
- build(n) {
126
- return new Field(n);
127
- }
128
- add(rhs) {
129
- return new Field(this.rep.add(rhs.rep));
130
- }
131
- sub(rhs) {
132
- return new Field(this.rep.sub(rhs.rep));
133
- }
134
- mul(rhs) {
135
- return new Field(this.rep.mul(rhs.rep));
136
- }
137
- // Euclidean division.
138
- div(rhs) {
139
- return new Field(this.rep.ediv(rhs.rep));
140
- }
141
- // Field division.
142
- fdiv(rhs) {
143
- return new Field(this.rep.div(rhs.rep));
144
- }
145
- equals(rhs) {
146
- return this.rep.equals(rhs.rep);
147
- }
148
- lt(rhs) {
149
- return this.rep.lt(rhs.rep);
150
- }
151
- toBigInt() {
152
- return this.rep.toBigInt();
153
- }
154
- toBuffer() {
155
- return this.rep.toBuffer();
156
- }
157
- }
158
- export var TypeTag = /*#__PURE__*/ function(TypeTag) {
159
- TypeTag[TypeTag["FIELD"] = MEM_TAG_FF] = "FIELD";
160
- TypeTag[TypeTag["UINT1"] = MEM_TAG_U1] = "UINT1";
161
- TypeTag[TypeTag["UINT8"] = MEM_TAG_U8] = "UINT8";
162
- TypeTag[TypeTag["UINT16"] = MEM_TAG_U16] = "UINT16";
163
- TypeTag[TypeTag["UINT32"] = MEM_TAG_U32] = "UINT32";
164
- TypeTag[TypeTag["UINT64"] = MEM_TAG_U64] = "UINT64";
165
- TypeTag[TypeTag["UINT128"] = MEM_TAG_U128] = "UINT128";
166
- TypeTag[TypeTag["INVALID"] = MEM_TAG_U128 + 1] = "INVALID";
167
- return TypeTag;
168
- }({});
169
- export class TaggedMemory {
170
- static log = createLogger('simulator:avm:memory');
171
- // Whether to track and validate memory accesses for each instruction.
172
- static TRACK_MEMORY_ACCESSES = process.env.NODE_ENV === 'test';
173
- // Memory is modelled by a map with key type being number.
174
- // We however restrict the keys to be non-negative integers smaller than
175
- // MAX_MEMORY_SIZE.
176
- static MAX_MEMORY_SIZE = Number(1n << 32n);
177
- _mem;
178
- constructor(){
179
- this._mem = new Map();
180
- }
181
- getMaxMemorySize() {
182
- return TaggedMemory.MAX_MEMORY_SIZE;
183
- }
184
- get(offset) {
185
- return this.getAs(offset);
186
- }
187
- getAs(offset) {
188
- assert(Number.isInteger(offset) && offset < TaggedMemory.MAX_MEMORY_SIZE);
189
- const word = this._mem.get(offset);
190
- //TaggedMemory.log.trace(`Memory read: ${offset} -> ${word}`);
191
- if (word === undefined) {
192
- TaggedMemory.log.debug(`WARNING: Memory at offset ${offset} is undefined!`);
193
- return new Field(0);
194
- }
195
- return word;
196
- }
197
- getSlice(offset, size) {
198
- assert(Number.isInteger(offset) && Number.isInteger(size));
199
- if (offset + size > TaggedMemory.MAX_MEMORY_SIZE) {
200
- throw new MemorySliceOutOfRangeError(offset, size);
201
- }
202
- const slice = new Array(size);
203
- for(let i = 0; i < size; i++){
204
- slice[i] = this._mem.get(offset + i) ?? new Field(0);
205
- }
206
- TaggedMemory.log.trace(`getSlice(${offset}, ${size}) = ${slice}`);
207
- return slice;
208
- }
209
- getSliceAs(offset, size) {
210
- return this.getSlice(offset, size);
211
- }
212
- getSliceTags(offset, size) {
213
- return this.getSlice(offset, size).map(TaggedMemory.getTag);
214
- }
215
- set(offset, v) {
216
- assert(Number.isInteger(offset) && offset < TaggedMemory.MAX_MEMORY_SIZE);
217
- this._mem.set(offset, v);
218
- //TaggedMemory.log.trace(`Memory write: ${offset} <- ${v}`);
219
- }
220
- setSlice(offset, slice) {
221
- assert(Number.isInteger(offset));
222
- if (offset + slice.length > TaggedMemory.MAX_MEMORY_SIZE) {
223
- throw new MemorySliceOutOfRangeError(offset, slice.length);
224
- }
225
- slice.forEach((element, idx)=>{
226
- this._mem.set(offset + idx, element);
227
- });
228
- TaggedMemory.log.trace(`setSlice(${offset}, ${slice})`);
229
- }
230
- getTag(offset) {
231
- assert(Number.isInteger(offset) && offset < TaggedMemory.MAX_MEMORY_SIZE);
232
- return TaggedMemory.getTag(this._mem.get(offset));
233
- }
234
- /**
235
- * Check that the memory at the given offset matches the specified tag.
236
- */ checkTag(tag, offset) {
237
- const gotTag = this.getTag(offset);
238
- if (gotTag !== tag) {
239
- throw TagCheckError.forOffset(offset, TypeTag[gotTag], TypeTag[tag]);
240
- }
241
- }
242
- static isValidMemoryAddressTag(tag) {
243
- return tag === TypeTag.UINT32;
244
- }
245
- static checkIsIntegralTag(tag) {
246
- if (!INTEGRAL_TAGS.has(tag)) {
247
- throw TagCheckError.forTag(TypeTag[tag], 'integral');
248
- }
249
- }
250
- static checkIsValidTag(tagNumber) {
251
- if (!VALID_TAGS.has(tagNumber)) {
252
- throw new InvalidTagValueError(tagNumber);
253
- }
254
- }
255
- /**
256
- * Check tags for memory at all of the specified offsets.
257
- */ checkTags(tag, ...offsets) {
258
- for (const offset of offsets){
259
- this.checkTag(tag, offset);
260
- }
261
- }
262
- /**
263
- * Check that all tags at the given offsets are the same.
264
- */ checkTagsAreSame(offset0, offset1) {
265
- const tag0 = this.getTag(offset0);
266
- this.checkTag(tag0, offset1);
267
- }
268
- /**
269
- * Check tags for all memory in the specified range.
270
- */ checkTagsRange(tag, startOffset, size) {
271
- if (startOffset + size > TaggedMemory.MAX_MEMORY_SIZE) {
272
- throw new MemorySliceOutOfRangeError(startOffset, size);
273
- }
274
- for(let offset = startOffset; offset < startOffset + size; offset++){
275
- this.checkTag(tag, offset);
276
- }
277
- }
278
- static getTag(v) {
279
- if (v === undefined) {
280
- return TypeTag.FIELD; // uninitialized memory is Field(0)
281
- } else {
282
- return TAG_FOR_MEM_VAL.get(v.constructor.name) ?? TypeTag.INVALID;
283
- }
284
- }
285
- // Truncates the value to fit the type.
286
- static buildFromTagTruncating(v, tag) {
287
- v = BigInt(v);
288
- switch(tag){
289
- case TypeTag.FIELD:
290
- return new Field(v);
291
- case TypeTag.UINT1:
292
- return new Uint1(v & 1n);
293
- case TypeTag.UINT8:
294
- return new Uint8(v & (1n << 8n) - 1n);
295
- case TypeTag.UINT16:
296
- return new Uint16(v & (1n << 16n) - 1n);
297
- case TypeTag.UINT32:
298
- return new Uint32(v & (1n << 32n) - 1n);
299
- case TypeTag.UINT64:
300
- return new Uint64(v & (1n << 64n) - 1n);
301
- case TypeTag.UINT128:
302
- return new Uint128(v & (1n << 128n) - 1n);
303
- default:
304
- throw new InvalidTagValueError(tag);
305
- }
306
- }
307
- }
308
- const TAG_FOR_MEM_VAL = new Map([
309
- [
310
- 'Field',
311
- TypeTag.FIELD
312
- ],
313
- [
314
- 'Uint1',
315
- TypeTag.UINT1
316
- ],
317
- [
318
- 'Uint8',
319
- TypeTag.UINT8
320
- ],
321
- [
322
- 'Uint16',
323
- TypeTag.UINT16
324
- ],
325
- [
326
- 'Uint32',
327
- TypeTag.UINT32
328
- ],
329
- [
330
- 'Uint64',
331
- TypeTag.UINT64
332
- ],
333
- [
334
- 'Uint128',
335
- TypeTag.UINT128
336
- ]
337
- ]);
338
- const VALID_TAGS = new Set([
339
- TypeTag.FIELD,
340
- TypeTag.UINT1,
341
- TypeTag.UINT8,
342
- TypeTag.UINT16,
343
- TypeTag.UINT32,
344
- TypeTag.UINT64,
345
- TypeTag.UINT128
346
- ]);
347
- const INTEGRAL_TAGS = new Set([
348
- TypeTag.UINT1,
349
- TypeTag.UINT8,
350
- TypeTag.UINT16,
351
- TypeTag.UINT32,
352
- TypeTag.UINT64,
353
- TypeTag.UINT128
354
- ]);
@@ -1,41 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import type { PublicSimulatorConfig } from '@aztec/stdlib/avm';
3
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- import type { GlobalVariables } from '@aztec/stdlib/tx';
5
- import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
6
- import { AvmContext } from './avm_context.js';
7
- import { AvmContractCallResult } from './avm_contract_call_result.js';
8
- import type { Gas } from './avm_gas.js';
9
- import type { AvmSimulatorInterface } from './avm_simulator_interface.js';
10
- import { type CallData } from './calldata.js';
11
- import { type InstructionSet } from './serialization/bytecode_serialization.js';
12
- export declare class AvmSimulator implements AvmSimulatorInterface {
13
- private context;
14
- private instructionSet;
15
- private log;
16
- private bytecode;
17
- private opcodeTallies;
18
- private deserializedInstructionsCache;
19
- private tallyPrintFunction;
20
- private tallyInstructionFunction;
21
- constructor(context: AvmContext, instructionSet?: InstructionSet, enableTallying?: boolean);
22
- static build(context: AvmContext): Promise<AvmSimulator>;
23
- static create(stateManager: PublicPersistableStateManager, address: AztecAddress, sender: AztecAddress, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: CallData, allocatedGas: Gas, config: PublicSimulatorConfig): Promise<AvmSimulator>;
24
- /**
25
- * Fetch the bytecode and execute it in the current context.
26
- */
27
- execute(): Promise<AvmContractCallResult>;
28
- /**
29
- * Return the bytecode used for execution, if any.
30
- */
31
- getBytecode(): Buffer | undefined;
32
- /**
33
- * Executes the provided bytecode in the current context.
34
- * This method is useful for testing and debugging.
35
- */
36
- executeBytecode(bytecode: Buffer): Promise<AvmContractCallResult>;
37
- private handleFailureToRetrieveBytecode;
38
- private tallyInstruction;
39
- private printOpcodeTallies;
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUt4RCxPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFeEMsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQW1CLE1BQU0sZUFBZSxDQUFDO0FBSS9ELE9BQU8sRUFFTCxLQUFLLGNBQWMsRUFFcEIsTUFBTSwyQ0FBMkMsQ0FBQztBQU9uRCxxQkFBYSxZQUFhLFlBQVcscUJBQXFCO0lBYXRELE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLGNBQWM7SUFieEIsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsUUFBUSxDQUFxQjtJQUNyQyxPQUFPLENBQUMsYUFBYSxDQUF1QztJQUU1RCxPQUFPLENBQUMsNkJBQTZCLENBQWlEO0lBRXRGLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBWTtJQUN0QyxPQUFPLENBQUMsd0JBQXdCLENBQStCO0lBSS9ELFlBQ1UsT0FBTyxFQUFFLFVBQVUsRUFDbkIsY0FBYyxHQUFFLGNBQWdDLEVBQ3hELGNBQWMsVUFBUSxFQVd2QjtJQUlELE9BQW9CLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FNcEU7SUFFRCxPQUFvQixNQUFNLENBQ3hCLFlBQVksRUFBRSw2QkFBNkIsRUFDM0MsT0FBTyxFQUFFLFlBQVksRUFDckIsTUFBTSxFQUFFLFlBQVksRUFDcEIsY0FBYyxFQUFFLEVBQUUsRUFDbEIsT0FBTyxFQUFFLGVBQWUsRUFDeEIsWUFBWSxFQUFFLE9BQU8sRUFDckIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsWUFBWSxFQUFFLEdBQUcsRUFDakIsTUFBTSxFQUFFLHFCQUFxQix5QkFnQjlCO0lBRUQ7O09BRUc7SUFDVSxPQUFPLElBQUksT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBWXJEO0lBRUQ7O09BRUc7SUFDSSxXQUFXLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FFdkM7SUFFRDs7O09BR0c7SUFDVSxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0ErRzdFO1lBRWEsK0JBQStCO0lBdUI3QyxPQUFPLENBQUMsZ0JBQWdCO0lBUXhCLE9BQU8sQ0FBQyxrQkFBa0I7Q0FTM0IifQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,KAAK,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAI/D,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAOnD,qBAAa,YAAa,YAAW,qBAAqB;IAatD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAbxB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAE5D,OAAO,CAAC,6BAA6B,CAAiD;IAEtF,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA+B;IAI/D,YACU,OAAO,EAAE,UAAU,EACnB,cAAc,GAAE,cAAgC,EACxD,cAAc,UAAQ,EAWvB;IAID,OAAoB,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAMpE;IAED,OAAoB,MAAM,CACxB,YAAY,EAAE,6BAA6B,EAC3C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,qBAAqB,yBAgB9B;IAED;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAYrD;IAED;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEvC;IAED;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+G7E;YAEa,+BAA+B;IAuB7C,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -1,192 +0,0 @@
1
- import { Fr } from '@aztec/foundation/curves/bn254';
2
- import { createLogger } from '@aztec/foundation/log';
3
- import { Timer } from '@aztec/foundation/timer';
4
- import { strict as assert } from 'assert';
5
- import { CheckedPublicExecutionError } from '../public_errors.js';
6
- import { AvmContext } from './avm_context.js';
7
- import { AvmContractCallResult } from './avm_contract_call_result.js';
8
- import { AvmExecutionEnvironment } from './avm_execution_environment.js';
9
- import { AvmMachineState } from './avm_machine_state.js';
10
- import { ReturnDataArray } from './calldata.js';
11
- import { AvmRevertReason, InvalidProgramCounterError } from './errors.js';
12
- import { revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert } from './revert_reason.js';
13
- import { INSTRUCTION_SET, decodeInstructionFromBytecode } from './serialization/bytecode_serialization.js';
14
- export class AvmSimulator {
15
- context;
16
- instructionSet;
17
- log;
18
- bytecode;
19
- opcodeTallies;
20
- // maps pc to [instr, bytesRead]
21
- deserializedInstructionsCache;
22
- tallyPrintFunction;
23
- tallyInstructionFunction;
24
- // Test Purposes only: Logger will not have the proper function name. Use this constructor for testing purposes
25
- // only. Otherwise, use build() below.
26
- constructor(context, instructionSet = INSTRUCTION_SET, enableTallying = false){
27
- this.context = context;
28
- this.instructionSet = instructionSet;
29
- this.opcodeTallies = new Map();
30
- this.deserializedInstructionsCache = new Map();
31
- this.tallyPrintFunction = ()=>{};
32
- this.tallyInstructionFunction = (_b, _c)=>{};
33
- // This will be used by the CALL opcode to create a new simulator. It is required to
34
- // avoid a dependency cycle.
35
- context.provideSimulator = AvmSimulator.build;
36
- this.log = createLogger(`simulator:avm(calldata[0]: ${context.environment.calldata.read(0)})`);
37
- // Turn on tallying if explicitly enabled or if trace logging
38
- if (enableTallying || this.log.isLevelEnabled('trace')) {
39
- this.tallyPrintFunction = this.printOpcodeTallies;
40
- this.tallyInstructionFunction = this.tallyInstruction;
41
- }
42
- }
43
- // Factory to have a proper function name in the logger. Retrieving the name is asynchronous and
44
- // cannot be done as part of the constructor.
45
- static async build(context) {
46
- const simulator = new AvmSimulator(context);
47
- const fnName = await context.persistableState.getPublicFunctionDebugName(context.environment);
48
- simulator.log = createLogger(`simulator:avm(f:${fnName.slice(0, 128)})`);
49
- return simulator;
50
- }
51
- static async create(stateManager, address, sender, transactionFee, globals, isStaticCall, calldata, allocatedGas, config) {
52
- const avmExecutionEnv = new AvmExecutionEnvironment(address, sender, /*contractCallDepth=*/ Fr.zero(), transactionFee, globals, isStaticCall, calldata, config);
53
- const avmMachineState = new AvmMachineState(allocatedGas);
54
- const avmContext = new AvmContext(stateManager, avmExecutionEnv, avmMachineState);
55
- return await AvmSimulator.build(avmContext);
56
- }
57
- /**
58
- * Fetch the bytecode and execute it in the current context.
59
- */ async execute() {
60
- const bytecode = await this.context.persistableState.getBytecode(this.context.environment.address);
61
- // getBytecode returns undefined if bytecode is not found or if the limit of contract calls to unique class IDs is reached.
62
- // If it throws an error that reaches this point, it is a bug.
63
- if (!bytecode) {
64
- return await this.handleFailureToRetrieveBytecode(`No bytecode found. Contract is not deployed, or limit encountered for max calls to unique contract class IDs. Contract address: ${this.context.environment.address}. Reverting...`);
65
- }
66
- return await this.executeBytecode(bytecode);
67
- }
68
- /**
69
- * Return the bytecode used for execution, if any.
70
- */ getBytecode() {
71
- return this.bytecode;
72
- }
73
- /**
74
- * Executes the provided bytecode in the current context.
75
- * This method is useful for testing and debugging.
76
- */ async executeBytecode(bytecode) {
77
- const timer = new Timer();
78
- assert(bytecode.length > 0, "AVM simulator can't execute empty bytecode");
79
- this.bytecode = bytecode;
80
- let instructionName = 'NONE'; // This is used for logging purposes
81
- const { machineState } = this.context;
82
- const callStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
83
- try {
84
- // Execute instruction pointed to by the current program counter
85
- // continuing until the machine state signifies a halt
86
- while(!machineState.getHalted()){
87
- // Get the instruction from cache, or deserialize for the first time
88
- let cachedInstruction = this.deserializedInstructionsCache.get(machineState.pc);
89
- if (cachedInstruction === undefined) {
90
- cachedInstruction = decodeInstructionFromBytecode(bytecode, machineState.pc, this.instructionSet);
91
- this.deserializedInstructionsCache.set(machineState.pc, cachedInstruction);
92
- }
93
- const [instruction, bytesRead] = cachedInstruction;
94
- const instrStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
95
- if (this.log.isLevelEnabled('trace')) {
96
- // Skip this entirely to avoid toStringing etc if trace is not enabled
97
- this.log.trace(`[PC:${machineState.pc}] [IC:${machineState.instrCounter}] ${instruction.toString()} (gasLeft l2=${machineState.l2GasLeft} da=${machineState.daGasLeft})`);
98
- }
99
- machineState.nextPc = machineState.pc + bytesRead;
100
- instructionName = instruction.constructor.name;
101
- // Execute the instruction.
102
- // Normal returns and reverts will return normally here.
103
- // "Exceptional halts" will throw.
104
- await instruction.execute(this.context);
105
- if (!instruction.handlesPC()) {
106
- // Increment PC if the instruction doesn't handle it itself
107
- machineState.pc += bytesRead;
108
- }
109
- machineState.instrCounter++;
110
- // gas used by this instruction - used for profiling/tallying
111
- const gasUsed = {
112
- l2Gas: instrStartGas.l2Gas - machineState.l2GasLeft,
113
- daGas: instrStartGas.daGas - machineState.daGasLeft
114
- };
115
- this.tallyInstructionFunction(instruction.constructor.name, gasUsed);
116
- if (machineState.pc >= bytecode.length) {
117
- this.log.warn('Passed end of program');
118
- throw new InvalidProgramCounterError(machineState.pc, /*max=*/ bytecode.length - 1);
119
- }
120
- }
121
- const output = machineState.getOutput();
122
- const reverted = machineState.getReverted();
123
- const revertReason = reverted ? await revertReasonFromExplicitRevert(output.bestEffortReadAll(), this.context) : undefined;
124
- const results = new AvmContractCallResult(reverted, output, machineState.gasLeft, revertReason, machineState.instrCounter);
125
- this.log.debug(`Context execution results: ${results.toString()}`);
126
- const totalGasUsed = {
127
- l2Gas: callStartGas.l2Gas - machineState.l2GasLeft,
128
- daGas: callStartGas.daGas - machineState.daGasLeft
129
- };
130
- this.log.debug(`Executed ${machineState.instrCounter} instructions and consumed ${totalGasUsed.l2Gas} L2 Gas`);
131
- this.tallyPrintFunction();
132
- this.log.debug(`Core AVM simulation took ${timer.ms()}ms`);
133
- // Return results for processing by calling context
134
- return results;
135
- } catch (err) {
136
- this.log.info(`Exceptional halt (revert by something other than REVERT opcode) for instruction
137
- ${instructionName} at pc ${machineState.pc} and instruction counter ${machineState.instrCounter}`);
138
- if (!(err instanceof CheckedPublicExecutionError)) {
139
- this.log.error(`Unchecked/unknown error thrown by AVM. This is a bug. Error: ${err}`);
140
- throw err;
141
- }
142
- const revertReason = await revertReasonFromExceptionalHalt(err, this.context);
143
- // Exceptional halts consume all allocated gas
144
- const noGasLeft = {
145
- l2Gas: 0,
146
- daGas: 0
147
- };
148
- // Note: "exceptional halts" cannot return data, hence [].
149
- const results = new AvmContractCallResult(/*reverted=*/ true, /*output=*/ new ReturnDataArray([]), noGasLeft, revertReason, machineState.instrCounter);
150
- this.log.debug(`Context execution results: ${results.toString()}`);
151
- this.tallyPrintFunction();
152
- // Return results for processing by calling context
153
- return results;
154
- }
155
- }
156
- async handleFailureToRetrieveBytecode(message) {
157
- // revert, consuming all gas
158
- const { functionSelector, functionName } = await this.context.persistableState.getPublicFunctionSelectorAndName(this.context.environment);
159
- const revertReason = new AvmRevertReason(message, /*failingFunction=*/ {
160
- contractAddress: this.context.environment.address,
161
- functionSelector,
162
- functionName
163
- }, /*noirCallStack=*/ []);
164
- this.log.warn(message);
165
- return new AvmContractCallResult(/*reverted=*/ true, /*output=*/ new ReturnDataArray([]), /*gasLeft=*/ {
166
- l2Gas: 0,
167
- daGas: 0
168
- }, revertReason);
169
- }
170
- tallyInstruction(opcode, gasUsed) {
171
- const opcodeTally = this.opcodeTallies.get(opcode) || {
172
- count: 0,
173
- gas: {
174
- l2Gas: 0,
175
- daGas: 0
176
- }
177
- };
178
- opcodeTally.count++;
179
- opcodeTally.gas.l2Gas += gasUsed.l2Gas;
180
- opcodeTally.gas.daGas += gasUsed.daGas;
181
- this.opcodeTallies.set(opcode, opcodeTally);
182
- }
183
- printOpcodeTallies() {
184
- this.log.debug(`Printing tallies per opcode sorted by gas...`);
185
- // sort descending by L2 gas consumed
186
- const sortedOpcodes = Array.from(this.opcodeTallies.entries()).sort((a, b)=>b[1].gas.l2Gas - a[1].gas.l2Gas);
187
- for (const [opcode, tally] of sortedOpcodes){
188
- // NOTE: don't care to clutter the logs with DA gas for now
189
- this.log.debug(`${opcode} executed ${tally.count} times consuming a total of ${tally.gas.l2Gas} L2 gas`);
190
- }
191
- }
192
- }
@@ -1,9 +0,0 @@
1
- /**
2
- * Interface for AvmSimulator to break the circular dependency between avm_context.ts and avm_simulator.ts
3
- */
4
- export interface AvmSimulatorInterface {
5
- execute(): Promise<any>;
6
- executeBytecode(bytecode: Buffer): Promise<any>;
7
- getBytecode(): Buffer | undefined;
8
- }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvcl9pbnRlcmZhY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2F2bV9zaW11bGF0b3JfaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxXQUFXLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQztDQUNuQyJ9
@@ -1 +0,0 @@
1
- {"version":3,"file":"avm_simulator_interface.d.ts","sourceRoot":"","sources":["../../../src/public/avm/avm_simulator_interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACxB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,WAAW,IAAI,MAAM,GAAG,SAAS,CAAC;CACnC"}
@@ -1,3 +0,0 @@
1
- /**
2
- * Interface for AvmSimulator to break the circular dependency between avm_context.ts and avm_simulator.ts
3
- */ export { };
@@ -1,51 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/schemas';
2
- import { TaggedMemory } from './avm_memory_types.js';
3
- export interface LazyReader {
4
- bestEffortReadAll(readCap?: number): Fr[];
5
- readAll(): Fr[];
6
- read(idx: number): Fr | undefined;
7
- slice(start: number, end: number): Fr[];
8
- length(): number;
9
- }
10
- export declare class LazyReaderMemory implements LazyReader {
11
- private memory;
12
- private offset;
13
- private size;
14
- constructor(memory: TaggedMemory, offset: number, size: number);
15
- bestEffortReadAll(readCap?: number): Fr[];
16
- read(idx: number): Fr | undefined;
17
- slice(start: number, end: number): Fr[];
18
- readAll(): Fr[];
19
- length(): number;
20
- }
21
- export declare class LazyReaderArray implements LazyReader {
22
- private array;
23
- constructor(array: Fr[]);
24
- bestEffortReadAll(readCap?: number): Fr[];
25
- read(idx: number): Fr | undefined;
26
- slice(start: number, end: number): Fr[];
27
- readAll(): Fr[];
28
- length(): number;
29
- }
30
- declare const CallDataBrand: unique symbol;
31
- declare const ReturnDataBrand: unique symbol;
32
- export type CallData = LazyReader & {
33
- readonly [CallDataBrand]: true;
34
- };
35
- export type ReturnData = LazyReader & {
36
- readonly [ReturnDataBrand]: true;
37
- };
38
- export declare class CallDataArray extends LazyReaderArray implements CallData {
39
- readonly [CallDataBrand]: true;
40
- }
41
- export declare class CallDataMemory extends LazyReaderMemory implements CallData {
42
- readonly [CallDataBrand]: true;
43
- }
44
- export declare class ReturnDataArray extends LazyReaderArray implements ReturnData {
45
- readonly [ReturnDataBrand]: true;
46
- }
47
- export declare class ReturnDataMemory extends LazyReaderMemory implements ReturnData {
48
- readonly [ReturnDataBrand]: true;
49
- }
50
- export {};
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbGRhdGEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2NhbGxkYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRCxNQUFNLFdBQVcsVUFBVTtJQUN6QixpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDMUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4QyxNQUFNLElBQUksTUFBTSxDQUFDO0NBQ2xCO0FBRUQscUJBQWEsZ0JBQWlCLFlBQVcsVUFBVTtJQUUvQyxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLElBQUk7SUFIZCxZQUNVLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLE1BQU0sRUFDbEI7SUFFRyxpQkFBaUIsQ0FBQyxPQUFPLFNBQStCLEdBQUcsRUFBRSxFQUFFLENBR3JFO0lBRU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FLdkM7SUFFTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUk3QztJQUVNLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FHckI7SUFFTSxNQUFNLElBQUksTUFBTSxDQUV0QjtDQUNGO0FBRUQscUJBQWEsZUFBZ0IsWUFBVyxVQUFVO0lBQ3BDLE9BQU8sQ0FBQyxLQUFLO0lBQXpCLFlBQW9CLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBSTtJQUU1QixpQkFBaUIsQ0FBQyxPQUFPLFNBQStCLEdBQUcsRUFBRSxFQUFFLENBRXJFO0lBRU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FFdkM7SUFFTSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUU3QztJQUVNLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FFckI7SUFFTSxNQUFNLElBQUksTUFBTSxDQUV0QjtDQUNGO0FBR0QsT0FBTyxDQUFDLE1BQU0sYUFBYSxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzNDLE9BQU8sQ0FBQyxNQUFNLGVBQWUsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUU3QyxNQUFNLE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRztJQUNsQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUM7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sTUFBTSxVQUFVLEdBQUcsVUFBVSxHQUFHO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQztDQUNsQyxDQUFDO0FBRUYscUJBQWEsYUFBYyxTQUFRLGVBQWdCLFlBQVcsUUFBUTtJQUNwRSxTQUFpQixDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQztDQUN4QztBQUVELHFCQUFhLGNBQWUsU0FBUSxnQkFBaUIsWUFBVyxRQUFRO0lBQ3RFLFNBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDO0NBQ3hDO0FBRUQscUJBQWEsZUFBZ0IsU0FBUSxlQUFnQixZQUFXLFVBQVU7SUFDeEUsU0FBaUIsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLENBQUM7Q0FDMUM7QUFFRCxxQkFBYSxnQkFBaUIsU0FBUSxnQkFBaUIsWUFBVyxVQUFVO0lBQzFFLFNBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxDQUFDO0NBQzFDIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"calldata.d.ts","sourceRoot":"","sources":["../../../src/public/avm/calldata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKrD,MAAM,WAAW,UAAU;IACzB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;IAC1C,OAAO,IAAI,EAAE,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAClC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC;IACxC,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,UAAU;IAE/C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAHd,YACU,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAClB;IAEG,iBAAiB,CAAC,OAAO,SAA+B,GAAG,EAAE,EAAE,CAGrE;IAEM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAKvC;IAEM,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAI7C;IAEM,OAAO,IAAI,EAAE,EAAE,CAGrB;IAEM,MAAM,IAAI,MAAM,CAEtB;CACF;AAED,qBAAa,eAAgB,YAAW,UAAU;IACpC,OAAO,CAAC,KAAK;IAAzB,YAAoB,KAAK,EAAE,EAAE,EAAE,EAAI;IAE5B,iBAAiB,CAAC,OAAO,SAA+B,GAAG,EAAE,EAAE,CAErE;IAEM,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAEvC;IAEM,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,CAE7C;IAEM,OAAO,IAAI,EAAE,EAAE,CAErB;IAEM,MAAM,IAAI,MAAM,CAEtB;CACF;AAGD,OAAO,CAAC,MAAM,aAAa,EAAE,OAAO,MAAM,CAAC;AAC3C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAClC,CAAC;AAEF,qBAAa,aAAc,SAAQ,eAAgB,YAAW,QAAQ;IACpE,SAAiB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACxC;AAED,qBAAa,cAAe,SAAQ,gBAAiB,YAAW,QAAQ;IACtE,SAAiB,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;CACxC;AAED,qBAAa,eAAgB,SAAQ,eAAgB,YAAW,UAAU;IACxE,SAAiB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAC1C;AAED,qBAAa,gBAAiB,SAAQ,gBAAiB,YAAW,UAAU;IAC1E,SAAiB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;CAC1C"}