From dcfc8e3e44b463c18b6379669121aa608f64783e Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Thu, 16 Jul 2026 22:48:28 -0300 Subject: [PATCH 01/10] feat: single variable-size InboxParity proof per checkpoint (A-1427) Replace the parity base (x4) + parity root fan-in with one variable-size InboxParity proof per checkpoint, S in {64, 256, 1024} (one VK per size; the prover proves the smallest rung >= the checkpoint's message count). The parity-root circuit is deleted; the checkpoint root keeps one parity verification, now accepting the 3-rung VK ladder. Net +1 VK. Two transitional decisions (dev-only, closed by the future Fast Inbox flip): - in_hash is kept in the parity public inputs as an unconstrained pass-through hint (the orchestrator supplies the true sha256 frontier root via computeInHashFromL1ToL2Messages), so L1's inHash == inbox.consume() check still passes with no L1 changes. The frontier tree is no longer built in circuit. - The block-root message sponge absorbs at the real message count while the L1-to-L2 tree insert stays a padded fixed subtree, decoupled via a new L1ToL2MessageBundle { messages, num_msgs, num_real_msgs } struct so the real count can be dropped later with minimal change. num_msgs is not otherwise pinned in-circuit; documented as a dev-mode gap backstopped by the L1 pending-chain header hash. Threads the single sized proof through the orchestrator, bb-prover, proving broker, and TS bindings, collapsing getBaseParityProof/getRootParityProof into getInboxParityProof and PARITY_BASE/PARITY_ROOT into one INBOX_PARITY request type. The UltraHonk parity benchmark and bb.js debug test move to InboxParity256. --- .../Nargo.template.toml | 5 +- .../crates/inbox-parity-1024/Nargo.toml | 8 + .../crates/inbox-parity-1024/src/main.nr | 5 + .../Nargo.toml | 2 +- .../crates/inbox-parity-256/src/main.nr | 5 + .../Nargo.toml | 2 +- .../crates/inbox-parity-64/src/main.nr | 5 + .../crates/parity-base/src/main.nr | 5 - .../crates/parity-root/src/main.nr | 5 - .../src/fixtures/vk_tree.nr | 14 +- .../src/abis/l1_to_l2_message_bundle.nr | 29 +++ .../crates/rollup-lib/src/abis/mod.nr | 2 + .../src/abis/parity_public_inputs.nr | 26 ++- .../block_root_empty_tx_first_rollup.nr | 13 +- .../src/block_root/block_root_first_rollup.nr | 15 +- .../block_root/block_root_msgs_only_rollup.nr | 22 +- .../src/block_root/block_root_rollup.nr | 15 +- .../block_root_single_tx_first_rollup.nr | 15 +- .../block_root/block_root_single_tx_rollup.nr | 15 +- .../block_rollup_public_inputs_composer.nr | 41 +++- .../block_root/tests/child_proof_vk_tests.nr | 4 +- .../rollup-lib/src/block_root/tests/mod.nr | 34 +-- .../src/block_root/tests/msgs_only_tests.nr | 9 +- .../checkpoint_root/checkpoint_root_rollup.nr | 10 +- .../checkpoint_root_single_block_rollup.nr | 10 +- ...heckpoint_rollup_public_inputs_composer.nr | 29 +-- .../src/checkpoint_root/components/mod.nr | 4 +- .../components/validate_inbox_parity.nr | 40 ++++ .../components/validate_parity_root.nr | 34 --- .../src/checkpoint_root/tests/mod.nr | 38 ++-- .../src/checkpoint_root/tests/parity_tests.nr | 64 ++++-- .../rollup-lib/src/inbox_rolling_hash.nr | 12 +- .../rollup-lib/src/parity/inbox_parity.nr | 63 ++++++ .../crates/rollup-lib/src/parity/mod.nr | 6 +- .../rollup-lib/src/parity/parity_base.nr | 66 ------ .../rollup-lib/src/parity/parity_root.nr | 127 ----------- .../src/parity/tests/inbox_parity_tests.nr | 135 +++++++++++ .../crates/rollup-lib/src/parity/tests/mod.nr | 3 +- .../src/parity/tests/parity_base_tests.nr | 99 -------- .../src/parity/tests/parity_root_tests.nr | 214 ------------------ .../src/tests/rollup_fixture_builder.nr | 3 +- .../crates/types/src/constants.nr | 33 ++- yarn-project/bb-prover/src/honk.ts | 6 +- .../bb-prover/src/prover/server/bb_prover.ts | 39 +--- .../bb-prover/src/test/delay_values.ts | 6 +- .../bb-prover/src/test/test_circuit_prover.ts | 43 +--- .../src/base_parity_inputs.test.ts | 58 ++--- .../ivc-integration/src/bb_js_debug.test.ts | 49 ++-- .../src/artifacts/server.ts | 17 +- .../src/artifacts/types.ts | 15 +- .../src/artifacts/vks/server.ts | 20 +- .../src/conversion/server.ts | 59 +++-- .../src/execution/server.ts | 64 +++--- .../src/scripts/generate_ts_from_abi.ts | 5 +- .../src/orchestrator/block-proving-state.ts | 36 +-- .../orchestrator/checkpoint-proving-state.ts | 113 ++++----- .../checkpoint-sub-tree-orchestrator.test.ts | 6 +- .../checkpoint-sub-tree-orchestrator.ts | 103 +++------ .../top-tree-orchestrator.test.ts | 4 +- .../src/orchestrator/top-tree-orchestrator.ts | 16 +- .../broker_prover_facade.test.ts | 54 ++--- .../proving_broker/broker_prover_facade.ts | 24 +- .../src/proving_broker/fixtures.ts | 2 +- .../src/proving_broker/proving_agent.test.ts | 40 ++-- .../src/proving_broker/proving_broker.test.ts | 176 +++++++------- .../src/proving_broker/proving_broker.ts | 6 +- .../proving_broker_agent_integration.test.ts | 14 +- ...oving_broker_agent_rpc_integration.test.ts | 4 +- .../broker_persisted_database.test.ts | 34 +-- .../proving_job_controller.test.ts | 12 +- .../proving_broker/proving_job_controller.ts | 8 +- .../src/test/bb_prover_full_rollup.test.ts | 2 +- .../src/test/bb_prover_parity.test.ts | 181 +++------------ .../src/test/epoch_proving_sim.test.ts | 39 +--- .../prover-client/src/test/mock_prover.ts | 14 +- .../src/test/proving_broker_testbench.test.ts | 3 +- .../regenerate_rollup_sample_inputs.test.ts | 2 +- .../prover-node/src/job/checkpoint-prover.ts | 8 +- .../stdlib/src/interfaces/proving-job.ts | 27 +-- .../src/interfaces/server_circuit_prover.ts | 22 +- yarn-project/stdlib/src/messaging/index.ts | 1 + .../src/messaging/l1_to_l2_message_bundle.ts | 70 ++++++ .../src/parity/inbox_parity_private_inputs.ts | 140 ++++++++++++ yarn-project/stdlib/src/parity/index.ts | 3 +- .../parity/parity_base_private_inputs.test.ts | 18 -- .../src/parity/parity_base_private_inputs.ts | 104 --------- .../stdlib/src/parity/parity_public_inputs.ts | 30 ++- .../parity/parity_root_private_inputs.test.ts | 18 -- .../src/parity/parity_root_private_inputs.ts | 64 ------ .../stdlib/src/proofs/proving_request_type.ts | 3 +- .../block_root_rollup_private_inputs.ts | 112 +++------ .../checkpoint_root_rollup_private_inputs.ts | 12 +- yarn-project/stdlib/src/stats/stats.ts | 5 +- yarn-project/stdlib/src/tests/factories.ts | 39 ++-- 94 files changed, 1341 insertions(+), 1895 deletions(-) create mode 100644 noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/Nargo.toml create mode 100644 noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/src/main.nr rename noir-projects/noir-protocol-circuits/crates/{parity-root => inbox-parity-256}/Nargo.toml (82%) create mode 100644 noir-projects/noir-protocol-circuits/crates/inbox-parity-256/src/main.nr rename noir-projects/noir-protocol-circuits/crates/{parity-base => inbox-parity-64}/Nargo.toml (83%) create mode 100644 noir-projects/noir-protocol-circuits/crates/inbox-parity-64/src/main.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/parity-base/src/main.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/parity-root/src/main.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_bundle.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_inbox_parity.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_parity_root.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/inbox_parity.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_base.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_root.nr create mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/inbox_parity_tests.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_base_tests.nr delete mode 100644 noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_root_tests.nr create mode 100644 yarn-project/stdlib/src/messaging/l1_to_l2_message_bundle.ts create mode 100644 yarn-project/stdlib/src/parity/inbox_parity_private_inputs.ts delete mode 100644 yarn-project/stdlib/src/parity/parity_base_private_inputs.test.ts delete mode 100644 yarn-project/stdlib/src/parity/parity_base_private_inputs.ts delete mode 100644 yarn-project/stdlib/src/parity/parity_root_private_inputs.test.ts delete mode 100644 yarn-project/stdlib/src/parity/parity_root_private_inputs.ts diff --git a/noir-projects/noir-protocol-circuits/Nargo.template.toml b/noir-projects/noir-protocol-circuits/Nargo.template.toml index 554193b55744..bed788a6a6af 100644 --- a/noir-projects/noir-protocol-circuits/Nargo.template.toml +++ b/noir-projects/noir-protocol-circuits/Nargo.template.toml @@ -8,8 +8,9 @@ members = [ "crates/types", "crates/protocol-test-utils", "crates/blob", - "crates/parity-base", - "crates/parity-root", + "crates/inbox-parity-64", + "crates/inbox-parity-256", + "crates/inbox-parity-1024", "crates/private-kernel-lib", "crates/private-kernel-init", "crates/private-kernel-init-2", diff --git a/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/Nargo.toml new file mode 100644 index 000000000000..0186b566d843 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/Nargo.toml @@ -0,0 +1,8 @@ +[package] +name = "inbox_parity_1024" +type = "bin" +authors = [""] +compiler_version = ">=0.18.0" + +[dependencies] +rollup_lib = { path = "../rollup-lib" } diff --git a/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/src/main.nr b/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/src/main.nr new file mode 100644 index 000000000000..4ab29c082f3e --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-1024/src/main.nr @@ -0,0 +1,5 @@ +use rollup_lib::parity::{inbox_parity, InboxParityPrivateInputs, ParityPublicInputs}; + +fn main(inputs: InboxParityPrivateInputs<1024>) -> pub ParityPublicInputs { + inbox_parity::execute(inputs) +} diff --git a/noir-projects/noir-protocol-circuits/crates/parity-root/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/inbox-parity-256/Nargo.toml similarity index 82% rename from noir-projects/noir-protocol-circuits/crates/parity-root/Nargo.toml rename to noir-projects/noir-protocol-circuits/crates/inbox-parity-256/Nargo.toml index 5ed4b0ad0143..02a1149ed59a 100644 --- a/noir-projects/noir-protocol-circuits/crates/parity-root/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-256/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "parity_root" +name = "inbox_parity_256" type = "bin" authors = [""] compiler_version = ">=0.18.0" diff --git a/noir-projects/noir-protocol-circuits/crates/inbox-parity-256/src/main.nr b/noir-projects/noir-protocol-circuits/crates/inbox-parity-256/src/main.nr new file mode 100644 index 000000000000..a9d07fab4cb8 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-256/src/main.nr @@ -0,0 +1,5 @@ +use rollup_lib::parity::{inbox_parity, InboxParityPrivateInputs, ParityPublicInputs}; + +fn main(inputs: InboxParityPrivateInputs<256>) -> pub ParityPublicInputs { + inbox_parity::execute(inputs) +} diff --git a/noir-projects/noir-protocol-circuits/crates/parity-base/Nargo.toml b/noir-projects/noir-protocol-circuits/crates/inbox-parity-64/Nargo.toml similarity index 83% rename from noir-projects/noir-protocol-circuits/crates/parity-base/Nargo.toml rename to noir-projects/noir-protocol-circuits/crates/inbox-parity-64/Nargo.toml index 8ca6ed0f8a73..f15275a8050a 100644 --- a/noir-projects/noir-protocol-circuits/crates/parity-base/Nargo.toml +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-64/Nargo.toml @@ -1,5 +1,5 @@ [package] -name = "parity_base" +name = "inbox_parity_64" type = "bin" authors = [""] compiler_version = ">=0.18.0" diff --git a/noir-projects/noir-protocol-circuits/crates/inbox-parity-64/src/main.nr b/noir-projects/noir-protocol-circuits/crates/inbox-parity-64/src/main.nr new file mode 100644 index 000000000000..437cadc80912 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/inbox-parity-64/src/main.nr @@ -0,0 +1,5 @@ +use rollup_lib::parity::{inbox_parity, InboxParityPrivateInputs, ParityPublicInputs}; + +fn main(inputs: InboxParityPrivateInputs<64>) -> pub ParityPublicInputs { + inbox_parity::execute(inputs) +} diff --git a/noir-projects/noir-protocol-circuits/crates/parity-base/src/main.nr b/noir-projects/noir-protocol-circuits/crates/parity-base/src/main.nr deleted file mode 100644 index f0e7e161db8d..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/parity-base/src/main.nr +++ /dev/null @@ -1,5 +0,0 @@ -use rollup_lib::parity::{parity_base, ParityBasePrivateInputs, ParityPublicInputs}; - -fn main(inputs: ParityBasePrivateInputs) -> pub ParityPublicInputs { - parity_base::execute(inputs) -} diff --git a/noir-projects/noir-protocol-circuits/crates/parity-root/src/main.nr b/noir-projects/noir-protocol-circuits/crates/parity-root/src/main.nr deleted file mode 100644 index 3cdbf50eb41f..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/parity-root/src/main.nr +++ /dev/null @@ -1,5 +0,0 @@ -use rollup_lib::parity::{parity_root, ParityPublicInputs, ParityRootPrivateInputs}; - -fn main(inputs: ParityRootPrivateInputs) -> pub ParityPublicInputs { - parity_root::execute(inputs) -} diff --git a/noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/vk_tree.nr b/noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/vk_tree.nr index fa3a29c542e9..34a8dc0f2168 100644 --- a/noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/vk_tree.nr +++ b/noir-projects/noir-protocol-circuits/crates/protocol-test-utils/src/fixtures/vk_tree.nr @@ -2,8 +2,9 @@ use crate::utils::pad_end; use types::{ constants::{ BLOCK_ROOT_MSGS_ONLY_ROLLUP_VK_INDEX, HIDING_KERNEL_TO_PUBLIC_VK_INDEX, - MEGA_KERNEL_VK_LENGTH_IN_FIELDS, PARITY_BASE_VK_INDEX, PARITY_ROOT_VK_INDEX, - PRIVATE_KERNEL_INIT_2_VK_INDEX, PRIVATE_KERNEL_INIT_3_VK_INDEX, + INBOX_PARITY_1024_VK_INDEX, INBOX_PARITY_256_VK_INDEX, INBOX_PARITY_64_VK_INDEX, + MEGA_KERNEL_VK_LENGTH_IN_FIELDS, PRIVATE_KERNEL_INIT_2_VK_INDEX, + PRIVATE_KERNEL_INIT_3_VK_INDEX, PRIVATE_KERNEL_INIT_4_VK_INDEX, PRIVATE_KERNEL_INIT_5_VK_INDEX, PRIVATE_KERNEL_INNER_2_VK_INDEX, PRIVATE_KERNEL_INNER_3_VK_INDEX, PRIVATE_KERNEL_INNER_4_VK_INDEX, PRIVATE_KERNEL_INNER_5_VK_INDEX, @@ -80,9 +81,12 @@ pub global VK_MERKLE_TREE: MerkleTree = { } // Honk - // Override some of the above with Honk Vks. - leaves[PARITY_BASE_VK_INDEX] = generate_fake_honk_vk_for_index(PARITY_BASE_VK_INDEX).hash; - leaves[PARITY_ROOT_VK_INDEX] = generate_fake_honk_vk_for_index(PARITY_ROOT_VK_INDEX).hash; + // The inbox parity ladder circuits are plain UltraHonk (not rollup-honk) and live past the reset range. + leaves[INBOX_PARITY_64_VK_INDEX] = generate_fake_honk_vk_for_index(INBOX_PARITY_64_VK_INDEX).hash; + leaves[INBOX_PARITY_256_VK_INDEX] = + generate_fake_honk_vk_for_index(INBOX_PARITY_256_VK_INDEX).hash; + leaves[INBOX_PARITY_1024_VK_INDEX] = + generate_fake_honk_vk_for_index(INBOX_PARITY_1024_VK_INDEX).hash; leaves[ROOT_ROLLUP_VK_INDEX] = generate_fake_honk_vk_for_index(ROOT_ROLLUP_VK_INDEX).hash; MerkleTree::new(leaves) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_bundle.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_bundle.nr new file mode 100644 index 000000000000..24b206855625 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/l1_to_l2_message_bundle.nr @@ -0,0 +1,29 @@ +use std::meta::derive; +use types::{ + constants::MAX_L1_TO_L2_MSGS_PER_BLOCK, + traits::{Deserialize, Empty, Serialize}, +}; + +/// A block's L1-to-L2 message bundle: the leaves it inserts into the L1-to-L2 message tree, plus the counts a block +/// root needs to append them and absorb them into the message sponge. +/// +/// It carries two counts on purpose. Transitionally the L1-to-L2 tree insert is a fixed padded subtree while the +/// message sponge (and the checkpoint's `InboxParity` proof) work at the real message count, so the two differ: +/// - `num_msgs` — leaves appended to the tree (the padded subtree size for a message-bearing block, 0 for an empty +/// one). +/// - `num_real_msgs` — real (non-padding) messages absorbed into the message sponge. +/// +/// Once the L1-to-L2 tree insert becomes real-count too (the Fast Inbox flip), `num_msgs == num_real_msgs` and +/// `num_real_msgs` is dropped, leaving this struct otherwise unchanged. +#[derive(Deserialize, Eq, Serialize)] +pub struct L1ToL2MessageBundle { + pub messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], + pub num_msgs: u32, + pub num_real_msgs: u32, +} + +impl Empty for L1ToL2MessageBundle { + fn empty() -> Self { + L1ToL2MessageBundle { messages: [0; MAX_L1_TO_L2_MSGS_PER_BLOCK], num_msgs: 0, num_real_msgs: 0 } + } +} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/mod.nr index 8dafa74a3584..6e154eb13358 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/mod.nr @@ -2,6 +2,7 @@ // `l1_to_l2_message_sponge` is declared first because the serde `#[derive(...)]` macro requires a field type's module // to be declared before any struct that embeds it (see the ordering note in `types/src/lib.nr`). mod l1_to_l2_message_sponge; +mod l1_to_l2_message_bundle; mod public_chonk_verifier_public_inputs; mod tx_rollup_public_inputs; mod block_rollup_public_inputs; @@ -11,6 +12,7 @@ mod root_rollup_public_inputs; pub use block_rollup_public_inputs::BlockRollupPublicInputs; pub use checkpoint_rollup_public_inputs::CheckpointRollupPublicInputs; +pub use l1_to_l2_message_bundle::L1ToL2MessageBundle; pub use l1_to_l2_message_sponge::L1ToL2MessageSponge; pub use parity_public_inputs::ParityPublicInputs; pub use public_chonk_verifier_public_inputs::PublicChonkVerifierPublicInputs; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/parity_public_inputs.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/parity_public_inputs.nr index 51325be936a7..a2260af3e24e 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/parity_public_inputs.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/abis/parity_public_inputs.nr @@ -3,21 +3,24 @@ use types::traits::{Deserialize, Empty, Serialize}; #[derive(Deserialize, Eq, Serialize)] pub struct ParityPublicInputs { - pub sha_root: Field, - pub converted_root: Field, - // Rolling hash of the Inbox message chain before absorbing this batch of messages. + // The L1 `in_hash`: the sha256 frontier root of the checkpoint's L1-to-L2 messages, checked on L1 against + // `inbox.consume()`. It is an UNCONSTRAINED pass-through: `InboxParity` echoes the value the prover supplies and + // does not recompute it from the messages (the frontier tree is gone from the parity body). Until the Fast Inbox + // flip moves the L1 anchor to the rolling hash, `in_hash` remains the authoritative L1 check, so the prover must + // supply the true frontier root; the in-circuit tie between it and the processed messages is deferred to the flip. + pub in_hash: Field, + // Rolling hash of the Inbox message chain before absorbing this checkpoint's messages. pub start_rolling_hash: Field, - // Rolling hash of the Inbox message chain after absorbing the `num_msgs` real messages in this batch. Each link is + // Rolling hash of the Inbox message chain after absorbing the `num_msgs` real messages. Each link is // `sha256ToField(prev || msg)`, matching the truncated-to-field sha256 the L1 Inbox accumulates. pub end_rolling_hash: Field, - // Poseidon2 message-bundle sponge before absorbing this batch of leaves. Threaded across the four base parity - // segments the same way as the rolling hash, so each segment's start equals the previous segment's end. + // Poseidon2 message-bundle sponge before this checkpoint's messages (empty at checkpoint start). pub start_sponge: L1ToL2MessageSponge, - // Message-bundle sponge after absorbing the full (padded) batch of leaves. Unlike the rolling hash, the sponge - // absorbs every leaf inserted into the L1-to-L2 tree, including padding zeros (AZIP-22 transitional asymmetry). The - // checkpoint root asserts this equals the sponge accumulated across the checkpoint's block roots. + // Message-bundle sponge after absorbing the `num_msgs` real messages. The checkpoint root asserts this equals the + // sponge accumulated across the checkpoint's block roots, tying the parity-committed message list to the leaves + // the blocks inserted into the L1-to-L2 tree. pub end_sponge: L1ToL2MessageSponge, - // Number of real (non-padding) messages absorbed into the rolling hash by this batch. + // Number of real (non-padding) messages absorbed into the rolling hash and the sponge. pub num_msgs: u32, pub vk_tree_root: Field, pub prover_id: Field, @@ -26,8 +29,7 @@ pub struct ParityPublicInputs { impl Empty for ParityPublicInputs { fn empty() -> Self { ParityPublicInputs { - sha_root: 0, - converted_root: 0, + in_hash: 0, start_rolling_hash: 0, end_rolling_hash: 0, start_sponge: L1ToL2MessageSponge::empty(), diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_empty_tx_first_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_empty_tx_first_rollup.nr index cc13386f2ec3..4e0ba02a4ee9 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_empty_tx_first_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_empty_tx_first_rollup.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge}, block_root::components::BlockRollupPublicInputsComposer, }; use types::{ @@ -7,7 +7,7 @@ use types::{ append_only_tree_snapshot::AppendOnlyTreeSnapshot, checkpoint_constant_data::CheckpointConstantData, state_reference::StateReference, }, - constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK}, + constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT}, }; pub struct BlockRootEmptyTxFirstRollupPrivateInputs { @@ -20,10 +20,8 @@ pub struct BlockRootEmptyTxFirstRollupPrivateInputs { // timestamp in the checkpoint root. pub(crate) timestamp: u64, - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Frontier hint for appending the bundle to the l1-to-l2 message tree (validated against `previous_state`). pub(crate) l1_to_l2_message_frontier_hint: [Field; L1_TO_L2_MSG_TREE_HEIGHT], // Hint for inserting the new block hash to the last archive. @@ -54,8 +52,7 @@ pub fn execute(inputs: BlockRootEmptyTxFirstRollupPrivateInputs) -> BlockRollupP true, inputs.previous_state.l1_to_l2_message_tree, L1ToL2MessageSponge::new(), - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .finish(inputs.new_archive_sibling_path) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_first_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_first_rollup.nr index 5a652b85109f..665f3cb37c5b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_first_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_first_rollup.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, block_root::components::{ BlockRollupPublicInputsComposer, validate_l1_to_l2_tree_snapshot_in_constants, validate_previous_rollups, @@ -8,8 +8,8 @@ use crate::{ use types::{ abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::{ - ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK, - PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PUBLIC_TX_BASE_ROLLUP_VK_INDEX, TX_MERGE_ROLLUP_VK_INDEX, + ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, + PUBLIC_TX_BASE_ROLLUP_VK_INDEX, TX_MERGE_ROLLUP_VK_INDEX, }, proof::proof_data::RollupHonkProofData, }; @@ -19,10 +19,8 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 3] = pub struct BlockRootFirstRollupPrivateInputs { pub(crate) previous_rollups: [RollupHonkProofData; 2], - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Hinted value the bundle is appended to. // This will be set to the `start_state` in the public inputs and validated in the checkpoint root circuit to // ensure it matches the l1-to-l2 tree snapshot in the header of the last block from the previous checkpoint. @@ -56,8 +54,7 @@ pub fn execute(inputs: BlockRootFirstRollupPrivateInputs) -> BlockRollupPublicIn true, inputs.previous_l1_to_l2, L1ToL2MessageSponge::new(), - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .get_new_l1_to_l2(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_msgs_only_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_msgs_only_rollup.nr index 9409d78877f0..becd18212ba4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_msgs_only_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_msgs_only_rollup.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge}, block_root::components::BlockRollupPublicInputsComposer, }; use types::{ @@ -8,7 +8,7 @@ use types::{ checkpoint_constant_data::CheckpointConstantData, state_reference::StateReference, }, blob_data::SpongeBlob, - constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK}, + constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT}, }; pub struct BlockRootMsgsOnlyRollupPrivateInputs { @@ -28,10 +28,8 @@ pub struct BlockRootMsgsOnlyRollupPrivateInputs { // block merge or checkpoint root circuit. pub(crate) start_msg_sponge: L1ToL2MessageSponge, - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Frontier hint for appending the bundle to the l1-to-l2 message tree (validated against `previous_state`). pub(crate) l1_to_l2_message_frontier_hint: [Field; L1_TO_L2_MSG_TREE_HEIGHT], // Hint for inserting the new block hash to the last archive. @@ -58,9 +56,12 @@ pub struct BlockRootMsgsOnlyRollupPrivateInputs { /// /// VkIndex: BLOCK_ROOT_MSGS_ONLY_ROLLUP_VK_INDEX pub fn execute(inputs: BlockRootMsgsOnlyRollupPrivateInputs) -> BlockRollupPublicInputs { - // A message-only block exists solely to insert L1-to-L2 messages, so it must carry at least one. This prevents a - // provable, fully-empty non-first filler block. - assert(inputs.num_msgs != 0, "A message-only block must insert at least one L1-to-L2 message"); + // A message-only block exists solely to insert L1-to-L2 messages, so it must carry at least one real message. This + // prevents a provable, fully-empty non-first filler block. + assert( + inputs.message_bundle.num_real_msgs != 0, + "A message-only block must insert at least one L1-to-L2 message", + ); BlockRollupPublicInputsComposer::new_from_no_rollups_with_start_sponge_blob( inputs.previous_archive, @@ -73,8 +74,7 @@ pub fn execute(inputs: BlockRootMsgsOnlyRollupPrivateInputs) -> BlockRollupPubli false, inputs.previous_state.l1_to_l2_message_tree, inputs.start_msg_sponge, - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .finish(inputs.new_archive_sibling_path) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup.nr index 3406c0962598..f396ff931b05 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_rollup.nr @@ -1,11 +1,11 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, block_root::components::{BlockRollupPublicInputsComposer, validate_previous_rollups}, }; use types::{ constants::{ - ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK, - PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PUBLIC_TX_BASE_ROLLUP_VK_INDEX, TX_MERGE_ROLLUP_VK_INDEX, + ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, + PUBLIC_TX_BASE_ROLLUP_VK_INDEX, TX_MERGE_ROLLUP_VK_INDEX, }, proof::proof_data::RollupHonkProofData, }; @@ -15,10 +15,8 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 3] = pub struct BlockRootRollupPrivateInputs { pub(crate) previous_rollups: [RollupHonkProofData; 2], - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Message sponge inherited from the previous block. Checked against the previous block's `end_msg_sponge` in the // block merge or checkpoint root circuit. pub(crate) start_msg_sponge: L1ToL2MessageSponge, @@ -55,8 +53,7 @@ pub fn execute(inputs: BlockRootRollupPrivateInputs) -> BlockRollupPublicInputs false, previous_l1_to_l2, inputs.start_msg_sponge, - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .finish(inputs.new_archive_sibling_path) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_first_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_first_rollup.nr index faf962fc3619..ff318e4b2eb5 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_first_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_first_rollup.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, block_root::components::{ BlockRollupPublicInputsComposer, validate_l1_to_l2_tree_snapshot_in_constants, validate_previous_rollups, @@ -8,8 +8,8 @@ use crate::{ use types::{ abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::{ - ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK, - PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PUBLIC_TX_BASE_ROLLUP_VK_INDEX, + ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, + PUBLIC_TX_BASE_ROLLUP_VK_INDEX, }, proof::proof_data::RollupHonkProofData, }; @@ -20,10 +20,8 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 2] = pub struct BlockRootSingleTxFirstRollupPrivateInputs { pub(crate) previous_rollup: RollupHonkProofData, - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Hinted value the bundle is appended to. // This will be set to the `start_state` in the public inputs and validated in the checkpoint root circuit to // ensure it matches the l1-to-l2 tree snapshot in the header of the last block from the previous checkpoint. @@ -57,8 +55,7 @@ pub fn execute(inputs: BlockRootSingleTxFirstRollupPrivateInputs) -> BlockRollup true, inputs.previous_l1_to_l2, L1ToL2MessageSponge::new(), - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .get_new_l1_to_l2(); diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_rollup.nr index 03a358558f47..d76c91d397bf 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/block_root_single_tx_rollup.nr @@ -1,11 +1,11 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, block_root::components::{BlockRollupPublicInputsComposer, validate_previous_rollups}, }; use types::{ constants::{ - ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK, - PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PUBLIC_TX_BASE_ROLLUP_VK_INDEX, + ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, + PUBLIC_TX_BASE_ROLLUP_VK_INDEX, }, proof::proof_data::RollupHonkProofData, }; @@ -16,10 +16,8 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 2] = pub struct BlockRootSingleTxRollupPrivateInputs { pub(crate) previous_rollup: RollupHonkProofData, - // L1-to-L2 messages inserted by this block, padded with zeros beyond `num_msgs`. - pub(crate) l1_to_l2_messages: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - // Number of real (non-padding) leaves in `l1_to_l2_messages`. - pub(crate) num_msgs: u32, + // L1-to-L2 message bundle inserted by this block. + pub(crate) message_bundle: L1ToL2MessageBundle, // Message sponge inherited from the previous block. Checked against the previous block's `end_msg_sponge` in the // block merge or checkpoint root circuit. pub(crate) start_msg_sponge: L1ToL2MessageSponge, @@ -54,8 +52,7 @@ pub fn execute(inputs: BlockRootSingleTxRollupPrivateInputs) -> BlockRollupPubli false, previous_l1_to_l2, inputs.start_msg_sponge, - inputs.l1_to_l2_messages, - inputs.num_msgs, + inputs.message_bundle, inputs.l1_to_l2_message_frontier_hint, ) .finish(inputs.new_archive_sibling_path) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_rollup_public_inputs_composer.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_rollup_public_inputs_composer.nr index 79f986f6f3a0..ed5c3c4d95f4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_rollup_public_inputs_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/components/block_rollup_public_inputs_composer.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, tx_merge::merge_tx_rollups, }; use types::{ @@ -9,9 +9,10 @@ use types::{ partial_state_reference::PartialStateReference, state_reference::StateReference, }, blob_data::SpongeBlob, - constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK}, + constants::{ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT}, merkle_tree::append_only_tree, traits::Hash, + utils::arrays::assert_trailing_zeros, }; pub struct BlockRollupPublicInputsComposer { @@ -135,38 +136,54 @@ impl BlockRollupPublicInputsComposer { Self::new_from_single_rollup(merged_rollup) } - /// Appends this block's L1-to-L2 message bundle to the tree and absorbs the same leaves into the message sponge. + /// Appends this block's L1-to-L2 message bundle to the tree and absorbs its real messages into the message sponge. /// /// `previous_l1_to_l2` is the tree snapshot this block builds on: for the first block it is the pre-insertion /// snapshot (hinted, and later checked against the previous checkpoint), for subsequent blocks it is the snapshot /// carried in the constants. `start_msg_sponge` is the sponge inherited from the previous block (empty for the - /// first block). Only `leaves[0..num_msgs]` are inserted and absorbed; the padding lanes must be zero. The sponge - /// absorbs exactly the leaves inserted into the tree, so the checkpoint root can recompute the same commitment. + /// first block). + /// + /// The tree append and the sponge absorb use different counts transitionally (see `L1ToL2MessageBundle`): the tree + /// inserts `bundle.num_msgs` leaves (a full padded subtree for a message-bearing block), while the sponge absorbs + /// only `bundle.num_real_msgs` real leaves so it matches the checkpoint's variable-size `InboxParity` proof. The + /// padding lanes past `num_real_msgs` must be zero. pub fn with_message_bundle( &mut self, is_first_block: bool, previous_l1_to_l2: AppendOnlyTreeSnapshot, start_msg_sponge: L1ToL2MessageSponge, - leaves: [Field; MAX_L1_TO_L2_MSGS_PER_BLOCK], - num_msgs: u32, + bundle: L1ToL2MessageBundle, frontier_hint: [Field; L1_TO_L2_MSG_TREE_HEIGHT], ) -> Self { self.is_first_block = is_first_block; self.previous_l1_to_l2 = previous_l1_to_l2; self.bundle_applied = true; + // Real messages occupy the leading lanes; everything past `num_real_msgs` is zero padding, including the + // padding that fills out the tree's fixed subtree insert. + assert_trailing_zeros(bundle.messages, bundle.num_real_msgs); + + // The sponge absorbs a prefix of what the tree inserts, so the real count can never exceed the insert count. + assert(bundle.num_real_msgs <= bundle.num_msgs, "more real messages than tree leaves"); + + // NOTE: `num_msgs` (the tree-insert count) is not otherwise pinned in-circuit — nothing here forces it to the + // padded subtree size. On the honest path the orchestrator sets it to `MAX_L1_TO_L2_MSGS_PER_BLOCK` for the + // first block and 0 otherwise, and the resulting `new_l1_to_l2` snapshot is what binds it (first-block variants + // check it against the tx-constants snapshot, ultimately the L1 pending-chain header hash). Like the + // unconstrained `in_hash`, a fully trustless binding is deferred to the Fast Inbox flip. + // Append the bundle to the l1-to-l2 message tree at its current (arbitrary) next-available index. - self.new_l1_to_l2 = append_only_tree::append_leaves_to_snapshot::( + self.new_l1_to_l2 = append_only_tree::append_leaves_to_snapshot::( previous_l1_to_l2, - leaves, - num_msgs, + bundle.messages, + bundle.num_msgs, frontier_hint, ); - // Absorb the same leaves into the message sponge, threading it from the previous block. + // Absorb the real leaves into the message sponge, threading it from the previous block. self.start_msg_sponge = start_msg_sponge; let mut end_msg_sponge = start_msg_sponge; - end_msg_sponge.absorb(leaves, num_msgs); + end_msg_sponge.absorb(bundle.messages, bundle.num_real_msgs); self.end_msg_sponge = end_msg_sponge; *self diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/child_proof_vk_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/child_proof_vk_tests.nr index c49e8ca432ad..3c72cab9126c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/child_proof_vk_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/child_proof_vk_tests.nr @@ -1,7 +1,7 @@ use super::TestBuilder; use protocol_test_utils::fixtures::vk_tree::{update_vk_hash, VK_MERKLE_TREE}; use types::constants::{ - BLOCK_ROOT_ROLLUP_VK_INDEX, PARITY_BASE_VK_INDEX, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, + BLOCK_ROOT_ROLLUP_VK_INDEX, INBOX_PARITY_64_VK_INDEX, PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PUBLIC_TX_BASE_ROLLUP_VK_INDEX, }; @@ -27,7 +27,7 @@ fn disallowed_right_rollup_vk_index__first_block() { fn disallowed_rollup_vk_index__first_single_tx_block() { let mut builder = TestBuilder::default(true, true); - builder.left_rollup_vk_index = PARITY_BASE_VK_INDEX; + builder.left_rollup_vk_index = INBOX_PARITY_64_VK_INDEX; builder.execute_and_fail(); } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/mod.nr index cc26b5fbaf3d..62ebcf5b2911 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/mod.nr @@ -6,7 +6,7 @@ mod msgs_only_tests; mod rollup_structure_tests; use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge, TxRollupPublicInputs}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge, TxRollupPublicInputs}, block_root::{ block_root_empty_tx_first_rollup::{self, BlockRootEmptyTxFirstRollupPrivateInputs}, block_root_first_rollup::{self, BlockRootFirstRollupPrivateInputs}, @@ -203,8 +203,7 @@ impl TestBuilder { RollupFixtureBuilder::make_proof_data(self.right_rollup, self.right_rollup_vk_index), ]; - let l1_to_l2_messages = self.l1_to_l2_messages; - let num_msgs = self.num_msgs; + let message_bundle = self.message_bundle(); let l1_to_l2_message_frontier_hint = self.l1_to_l2_message_frontier_hint; let new_archive_sibling_path = self.new_archive_sibling_path; @@ -220,8 +219,7 @@ impl TestBuilder { previous_state, constants: self.checkpoint_constants, timestamp: left.constants.global_variables.timestamp, - l1_to_l2_messages, - num_msgs, + message_bundle, l1_to_l2_message_frontier_hint, new_archive_sibling_path, }, @@ -230,8 +228,7 @@ impl TestBuilder { block_root_single_tx_first_rollup::execute( BlockRootSingleTxFirstRollupPrivateInputs { previous_rollup: previous_rollups[0], - l1_to_l2_messages, - num_msgs, + message_bundle, previous_l1_to_l2: self.previous_l1_to_l2, l1_to_l2_message_frontier_hint, new_archive_sibling_path, @@ -241,8 +238,7 @@ impl TestBuilder { block_root_first_rollup::execute( BlockRootFirstRollupPrivateInputs { previous_rollups, - l1_to_l2_messages, - num_msgs, + message_bundle, previous_l1_to_l2: self.previous_l1_to_l2, l1_to_l2_message_frontier_hint, new_archive_sibling_path, @@ -257,8 +253,7 @@ impl TestBuilder { RollupFixtureBuilder::make_proof_data(self.right_rollup, self.right_rollup_vk_index), ]; - let l1_to_l2_messages = self.l1_to_l2_messages; - let num_msgs = self.num_msgs; + let message_bundle = self.message_bundle(); let l1_to_l2_message_frontier_hint = self.l1_to_l2_message_frontier_hint; let start_msg_sponge = self.start_msg_sponge; let new_archive_sibling_path = self.new_archive_sibling_path; @@ -267,8 +262,7 @@ impl TestBuilder { block_root_single_tx_rollup::execute( BlockRootSingleTxRollupPrivateInputs { previous_rollup: previous_rollups[0], - l1_to_l2_messages, - num_msgs, + message_bundle, start_msg_sponge, l1_to_l2_message_frontier_hint, new_archive_sibling_path, @@ -278,8 +272,7 @@ impl TestBuilder { block_root_rollup::execute( BlockRootRollupPrivateInputs { previous_rollups, - l1_to_l2_messages, - num_msgs, + message_bundle, start_msg_sponge, l1_to_l2_message_frontier_hint, new_archive_sibling_path, @@ -288,6 +281,17 @@ impl TestBuilder { } } + // The block's message bundle. The unit-test fixture inserts exactly `num_msgs` real leaves into the tree, so the + // tree-insert count and the sponge real-count are equal here; the transitional gap between them (padded tree + // insert vs real-count sponge) is exercised by the orchestrator and full-rollup tests. + fn message_bundle(self) -> L1ToL2MessageBundle { + L1ToL2MessageBundle { + messages: self.l1_to_l2_messages, + num_msgs: self.num_msgs, + num_real_msgs: self.num_msgs, + } + } + pub fn assert_expected_public_inputs(self, pi: BlockRollupPublicInputs) { // The private inputs of the empty block root are also constructed from the left rollup. let left = self.left_rollup; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/msgs_only_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/msgs_only_tests.nr index 1fcaa77a8cfe..a1f92176146c 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/msgs_only_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/block_root/tests/msgs_only_tests.nr @@ -1,5 +1,5 @@ use crate::{ - abis::{BlockRollupPublicInputs, L1ToL2MessageSponge}, + abis::{BlockRollupPublicInputs, L1ToL2MessageBundle, L1ToL2MessageSponge}, block_root::block_root_msgs_only_rollup::{self, BlockRootMsgsOnlyRollupPrivateInputs}, tests::RollupFixtureBuilder, }; @@ -76,8 +76,11 @@ impl TestBuilder { timestamp: self.timestamp, start_sponge_blob: self.start_sponge_blob, start_msg_sponge: self.start_msg_sponge, - l1_to_l2_messages: self.l1_to_l2_messages, - num_msgs: self.num_msgs, + message_bundle: L1ToL2MessageBundle { + messages: self.l1_to_l2_messages, + num_msgs: self.num_msgs, + num_real_msgs: self.num_msgs, + }, l1_to_l2_message_frontier_hint: self.l1_to_l2_message_frontier_hint, new_archive_sibling_path: self.new_archive_sibling_path, } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_rollup.nr index c967c585c7e7..85bba060e697 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_rollup.nr @@ -1,7 +1,7 @@ use crate::{ abis::{BlockRollupPublicInputs, CheckpointRollupPublicInputs, ParityPublicInputs}, checkpoint_root::components::{ - CheckpointRollupPublicInputsComposer, CheckpointRootInputsValidator, validate_parity_root, + CheckpointRollupPublicInputsComposer, CheckpointRootInputsValidator, validate_inbox_parity, }, }; use blob::abis::{BlobAccumulator, BLSPoint, FinalBlobBatchingChallenges}; @@ -29,9 +29,9 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 7] = [ pub struct CheckpointRootRollupPrivateInputs { pub(crate) previous_rollups: [RollupHonkProofData; 2], - // Parity root proof over the checkpoint's L1-to-L2 messages. Moved here from the first block root (AZIP-22 Fast + // Inbox parity proof over the checkpoint's L1-to-L2 messages. One variable-size proof per checkpoint (AZIP-22 Fast // Inbox): the checkpoint root is the only circuit that sees the whole checkpoint's message commitments. - pub(crate) parity_root: UltraHonkProofData, + pub(crate) inbox_parity: UltraHonkProofData, pub(crate) hints: CheckpointRootRollupHints, } @@ -101,11 +101,11 @@ pub fn execute(inputs: CheckpointRootRollupPrivateInputs) -> CheckpointRollupPub let previous_rollups = inputs.previous_rollups.map(|rollup| rollup.public_inputs); let constants = previous_rollups[0].constants; - validate_parity_root(inputs.parity_root, constants.vk_tree_root, constants.prover_id); + validate_inbox_parity(inputs.inbox_parity, constants.vk_tree_root, constants.prover_id); CheckpointRollupPublicInputsComposer::new( previous_rollups, - inputs.parity_root.public_inputs, + inputs.inbox_parity.public_inputs, hints.previous_out_hash, hints.new_out_hash_sibling_path, hints.start_blob_accumulator, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_single_block_rollup.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_single_block_rollup.nr index 947eb6fb6b66..a042e565a2ad 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_single_block_rollup.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/checkpoint_root_single_block_rollup.nr @@ -3,7 +3,7 @@ use crate::{ checkpoint_root::{ checkpoint_root_rollup::CheckpointRootRollupHints, components::{ - CheckpointRollupPublicInputsComposer, CheckpointRootInputsValidator, validate_parity_root, + CheckpointRollupPublicInputsComposer, CheckpointRootInputsValidator, validate_inbox_parity, }, }, }; @@ -32,9 +32,9 @@ global ALLOWED_PREVIOUS_VK_INDICES: [u32; 4] = [ pub struct CheckpointRootSingleBlockRollupPrivateInputs { pub(crate) previous_rollup: RollupHonkProofData, - // Parity root proof over the checkpoint's L1-to-L2 messages. Moved here from the first block root (AZIP-22 Fast + // Inbox parity proof over the checkpoint's L1-to-L2 messages. One variable-size proof per checkpoint (AZIP-22 Fast // Inbox): the checkpoint root is the only circuit that sees the whole checkpoint's message commitments. - pub(crate) parity_root: UltraHonkProofData, + pub(crate) inbox_parity: UltraHonkProofData, pub(crate) hints: CheckpointRootRollupHints, } @@ -69,11 +69,11 @@ pub fn execute( .validate(); let constants = inputs.previous_rollup.public_inputs.constants; - validate_parity_root(inputs.parity_root, constants.vk_tree_root, constants.prover_id); + validate_inbox_parity(inputs.inbox_parity, constants.vk_tree_root, constants.prover_id); CheckpointRollupPublicInputsComposer::new( [inputs.previous_rollup.public_inputs], - inputs.parity_root.public_inputs, + inputs.inbox_parity.public_inputs, hints.previous_out_hash, hints.new_out_hash_sibling_path, hints.start_blob_accumulator, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/checkpoint_rollup_public_inputs_composer.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/checkpoint_rollup_public_inputs_composer.nr index 797242ede0f8..122df90c6bf8 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/checkpoint_rollup_public_inputs_composer.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/checkpoint_rollup_public_inputs_composer.nr @@ -21,7 +21,7 @@ use types::{ pub struct CheckpointRollupPublicInputsComposer { merged_rollup: BlockRollupPublicInputs, - // Public inputs of the parity root proof (verified by the caller). The checkpoint's `in_hash` and + // Public inputs of the inbox parity proof (verified by the caller). The checkpoint's `in_hash` and // `inbox_rolling_hash` are sourced from it, and its message sponge is checked against the blocks' accumulated one. parity: ParityPublicInputs, // The below are all hints: @@ -68,20 +68,20 @@ impl CheckpointRollupPublicInputsComposer { pub fn finish(self) -> CheckpointRollupPublicInputs { let merged_rollup = self.merged_rollup; - // The parity root sponge must start empty (the message sponge resets per checkpoint) and must equal the sponge - // accumulated across this checkpoint's block roots. Together with the leftmost block starting from the empty - // sponge (checked in the inputs validator) and the per-block continuity checks in the block merge circuit, this - // proves the blocks inserted exactly the parity-committed message list, in order — no leaf arrays cross the - // circuit boundary. + // The inbox parity sponge must start empty (the message sponge resets per checkpoint) and must equal the + // sponge accumulated across this checkpoint's block roots. Together with the leftmost block starting from the + // empty sponge (checked in the inputs validator) and the per-block continuity checks in the block merge + // circuit, this proves the blocks inserted exactly the parity-committed message list, in order — no leaf + // arrays cross the circuit boundary. assert_eq( self.parity.start_sponge, L1ToL2MessageSponge::empty(), - "The parity root message sponge must start empty", + "The inbox parity message sponge must start empty", ); assert_eq( merged_rollup.end_msg_sponge, self.parity.end_sponge, - "The blocks' message sponge does not match the parity root's message sponge", + "The blocks' message sponge does not match the inbox parity's message sponge", ); let constants = EpochConstantData { @@ -117,9 +117,9 @@ impl CheckpointRollupPublicInputsComposer { new_archive: merged_rollup.new_archive, previous_out_hash: self.previous_out_hash, new_out_hash, - // Sourced from the parity root (parity moved to the checkpoint root in AZIP-22 Fast Inbox), which commits - // to the same message list behind the L1-checked `in_hash`. Checkpoint merges assert continuity across - // checkpoints (`right.start == left.end`). + // Sourced from the inbox parity proof (parity moved to the checkpoint root in AZIP-22 Fast Inbox), which + // commits to the same message list behind the L1-checked `in_hash`. Checkpoint merges assert continuity + // across checkpoints (`right.start == left.end`). start_inbox_rolling_hash: self.parity.start_rolling_hash, end_inbox_rolling_hash: self.parity.end_rolling_hash, checkpoint_header_hashes, @@ -146,9 +146,10 @@ impl CheckpointRollupPublicInputsComposer { last_archive_root: merged_rollup.previous_archive.root, block_headers_hash: merged_rollup.block_headers_hash, blobs_hash: self.blobs_hash, - // `in_hash` (the sha256 frontier root, checked on L1) and `inbox_rolling_hash` are sourced from the parity - // root, which commits to the checkpoint's full L1-to-L2 message list. - in_hash: self.parity.sha_root, + // `in_hash` (the sha256 frontier root, checked on L1) and `inbox_rolling_hash` are sourced from the inbox + // parity proof. `in_hash` is an unconstrained pass-through there (see `ParityPublicInputs::in_hash`); it + // remains the authoritative L1 check until the Fast Inbox flip. + in_hash: self.parity.in_hash, inbox_rolling_hash: self.parity.end_rolling_hash, epoch_out_hash, slot_number: constants.slot_number, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/mod.nr index ce4ecbc05998..e665b4971813 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/mod.nr @@ -1,7 +1,7 @@ mod checkpoint_root_inputs_validator; mod checkpoint_rollup_public_inputs_composer; -mod validate_parity_root; +mod validate_inbox_parity; pub use checkpoint_rollup_public_inputs_composer::CheckpointRollupPublicInputsComposer; pub use checkpoint_root_inputs_validator::CheckpointRootInputsValidator; -pub use validate_parity_root::validate_parity_root; +pub use validate_inbox_parity::validate_inbox_parity; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_inbox_parity.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_inbox_parity.nr new file mode 100644 index 000000000000..858c613d8229 --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_inbox_parity.nr @@ -0,0 +1,40 @@ +use crate::abis::ParityPublicInputs; +use types::{ + constants::{INBOX_PARITY_1024_VK_INDEX, INBOX_PARITY_256_VK_INDEX, INBOX_PARITY_64_VK_INDEX}, + proof::proof_data::UltraHonkProofData, +}; + +/// Verify the checkpoint's `InboxParity` proof and vk, and check that its vk tree root and prover_id equal the ones in +/// the checkpoint's constants. The proof may be any rung of the size ladder, so the vk index is checked against the +/// allowed `{64, 256, 1024}` set rather than a single value. +pub fn validate_inbox_parity( + data: UltraHonkProofData, + vk_tree_root: Field, + prover_id: Field, +) { + if !::std::runtime::is_unconstrained() { + data.verify_proof(); + } + + // Check that the `vk_tree_root` in the public inputs matches the one in the checkpoint's constants, as it was used + // to verify the vk of the inbox parity proof. + assert_eq( + data.public_inputs.vk_tree_root, + vk_tree_root, + "The vk tree root of the inbox parity does not match the rollup's vk tree root", + ); + + // Check that the `prover_id` in the public inputs matches the one in the checkpoint's constants, preventing sybil + // attacks where the same prover submits an inbox parity proof under different identities. + assert_eq( + data.public_inputs.prover_id, + prover_id, + "The prover id of the inbox parity does not match the rollup's prover id", + ); + + // The proof may be any rung of the size ladder, so accept the whole `{64, 256, 1024}` vk-index set. + data.vk_data.validate_allowed_in_vk_tree( + vk_tree_root, + [INBOX_PARITY_64_VK_INDEX, INBOX_PARITY_256_VK_INDEX, INBOX_PARITY_1024_VK_INDEX], + ); +} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_parity_root.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_parity_root.nr deleted file mode 100644 index a74fbd5ebdd9..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/components/validate_parity_root.nr +++ /dev/null @@ -1,34 +0,0 @@ -use crate::abis::ParityPublicInputs; -use types::{constants::PARITY_ROOT_VK_INDEX, proof::proof_data::UltraHonkProofData}; - -/// Verify the parity root proof and vk, and check that its vk tree root and prover_id equal the ones in the -/// checkpoint's constants. -pub fn validate_parity_root( - data: UltraHonkProofData, - vk_tree_root: Field, - prover_id: Field, -) { - if !::std::runtime::is_unconstrained() { - data.verify_proof(); - } - - assert_eq(data.vk_data.leaf_index, PARITY_ROOT_VK_INDEX, "Incorrect vk index for parity root"); - - // Check that the `vk_tree_root` in the public inputs matches the one in the checkpoint's constants, as it was used - // to verify the vk of the base parity proofs. - assert_eq( - data.public_inputs.vk_tree_root, - vk_tree_root, - "The vk tree root of the parity root does not match the rollup's vk tree root", - ); - - // Check that the `prover_id` in the public inputs matches the one in the checkpoint's constants, preventing sybil - // attacks where the same prover submits a parity root proof under different identities. - assert_eq( - data.public_inputs.prover_id, - prover_id, - "The prover id of the parity root does not match the rollup's prover id", - ); - - data.vk_data.validate_in_vk_tree(vk_tree_root); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/mod.nr index 12712b7fda7c..38b92d5163e4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/mod.nr @@ -31,7 +31,7 @@ use types::{ BLOCK_MERGE_ROLLUP_VK_INDEX, BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP_VK_INDEX, BLOCK_ROOT_FIRST_ROLLUP_VK_INDEX, BLOCK_ROOT_MSGS_ONLY_ROLLUP_VK_INDEX, BLOCK_ROOT_ROLLUP_VK_INDEX, BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP_VK_INDEX, - BLOCK_ROOT_SINGLE_TX_ROLLUP_VK_INDEX, OUT_HASH_TREE_LEAF_COUNT, PARITY_ROOT_VK_INDEX, + BLOCK_ROOT_SINGLE_TX_ROLLUP_VK_INDEX, INBOX_PARITY_1024_VK_INDEX, OUT_HASH_TREE_LEAF_COUNT, }, merkle_tree::compute_sha_tree_root, traits::{Hash, Serialize}, @@ -50,8 +50,8 @@ struct TestBuilder { right_rollup: BlockRollupPublicInputs, right_rollup_vk_index: u32, is_single_block: bool, - parity_root: ParityPublicInputs, - parity_root_vk_index: u32, + inbox_parity: ParityPublicInputs, + inbox_parity_vk_index: u32, hints: CheckpointRootRollupHints, } @@ -191,10 +191,10 @@ impl TestBuilder { // Update the start state of the left rollup to match the state of the previous block. left_rollup.start_state = hints.previous_block_header.state; - // The parity root commits to the same checkpoint messages the block roots absorbed. Its message sponge (empty - // to the checkpoint's accumulated value) matches the blocks' merged sponge; its rolling hash / sha root feed - // the checkpoint header. Built at the base slot the block fixtures use for their sponge. - let parity_root = fixture_builder.get_parity_public_inputs(fixture_builder.start_slot_number); + // The InboxParity proof commits to the same checkpoint messages the block roots absorbed. Its message sponge + // (empty to the checkpoint's accumulated value) matches the blocks' merged sponge; its rolling hash and in_hash + // feed the checkpoint header. Built at the base slot the block fixtures use for their sponge. + let inbox_parity = fixture_builder.get_parity_public_inputs(fixture_builder.start_slot_number); Self { fixture_builder, @@ -202,8 +202,8 @@ impl TestBuilder { left_rollup_vk_index, right_rollup, right_rollup_vk_index, - parity_root, - parity_root_vk_index: PARITY_ROOT_VK_INDEX, + inbox_parity, + inbox_parity_vk_index: INBOX_PARITY_1024_VK_INDEX, hints, is_single_block, } @@ -270,8 +270,8 @@ impl TestBuilder { } pub fn execute(self) -> CheckpointRollupPublicInputs { - let parity_root = - RollupFixtureBuilder::make_proof_data(self.parity_root, self.parity_root_vk_index); + let inbox_parity = + RollupFixtureBuilder::make_proof_data(self.inbox_parity, self.inbox_parity_vk_index); if self.is_single_block { checkpoint_root_single_block_rollup::execute( @@ -280,7 +280,7 @@ impl TestBuilder { self.left_rollup, self.left_rollup_vk_index, ), - parity_root, + inbox_parity, hints: self.hints, }, ) @@ -297,7 +297,7 @@ impl TestBuilder { self.right_rollup_vk_index, ), ], - parity_root, + inbox_parity, hints: self.hints, }, ) @@ -357,10 +357,10 @@ impl TestBuilder { assert_eq(pi.new_archive, right.new_archive); assert(pi.previous_archive != pi.new_archive); - // The checkpoint's rolling-hash pair is sourced from the parity root (which commits to the checkpoint's full - // message list), not from the block rollups. - assert_eq(pi.start_inbox_rolling_hash, self.parity_root.start_rolling_hash); - assert_eq(pi.end_inbox_rolling_hash, self.parity_root.end_rolling_hash); + // The checkpoint's rolling-hash pair is sourced from the InboxParity proof (which commits to the checkpoint's + // full message list), not from the block rollups. + assert_eq(pi.start_inbox_rolling_hash, self.inbox_parity.start_rolling_hash); + assert_eq(pi.end_inbox_rolling_hash, self.inbox_parity.end_rolling_hash); // Safety: This is just for testing. Unconstrained to speed up the tests. let expected_checkpoint_header = unsafe { self.get_expected_checkpoint_header() }; @@ -445,8 +445,8 @@ impl TestBuilder { last_archive_root: left.previous_archive.root, block_headers_hash, blobs_hash: self.hints.blobs_hash, - in_hash: self.parity_root.sha_root, - inbox_rolling_hash: self.parity_root.end_rolling_hash, + in_hash: self.inbox_parity.in_hash, + inbox_rolling_hash: self.inbox_parity.end_rolling_hash, epoch_out_hash, slot_number: left.constants.slot_number, timestamp: right.timestamp, diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/parity_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/parity_tests.nr index 263784da458d..f2776107e8f4 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/parity_tests.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/checkpoint_root/tests/parity_tests.nr @@ -1,78 +1,96 @@ use super::TestBuilder; use protocol_test_utils::fixtures::vk_tree::{update_vk_hash, VK_MERKLE_TREE}; -use types::constants::CHECKPOINT_ROOT_ROLLUP_VK_INDEX; +use types::constants::{ + CHECKPOINT_ROOT_ROLLUP_VK_INDEX, INBOX_PARITY_256_VK_INDEX, INBOX_PARITY_64_VK_INDEX, +}; -// --- Parity root proof / vk --- +// --- Inbox parity proof / vk --- -#[test(should_fail_with = "Incorrect vk index for parity root")] -fn incorrect_parity_root_vk_index() { +// The checkpoint root accepts any rung of the inbox parity size ladder. The default builder uses the 1024 rung; here +// we exercise the other two to prove the whole allowed set is accepted. +#[test] +fn accepts_ladder_vk_index_64() { + let mut builder = TestBuilder::default(); + builder.inbox_parity_vk_index = INBOX_PARITY_64_VK_INDEX; + let _ = builder.execute_with_mock(); +} + +#[test] +fn accepts_ladder_vk_index_256_single_block() { + let mut builder = TestBuilder::default_single_block(); + builder.inbox_parity_vk_index = INBOX_PARITY_256_VK_INDEX; + let _ = builder.execute_with_mock(); +} + +#[test(should_fail_with = "Vk index not in allowed list")] +fn incorrect_inbox_parity_vk_index() { let mut builder = TestBuilder::default(); - builder.parity_root_vk_index = CHECKPOINT_ROOT_ROLLUP_VK_INDEX; + builder.inbox_parity_vk_index = CHECKPOINT_ROOT_ROLLUP_VK_INDEX; builder.execute_with_mock_and_fail(); } -#[test(should_fail_with = "Incorrect vk index for parity root")] -fn incorrect_parity_root_vk_index_single_block() { +#[test(should_fail_with = "Vk index not in allowed list")] +fn incorrect_inbox_parity_vk_index_single_block() { let mut builder = TestBuilder::default_single_block(); - builder.parity_root_vk_index = CHECKPOINT_ROOT_ROLLUP_VK_INDEX; + builder.inbox_parity_vk_index = CHECKPOINT_ROOT_ROLLUP_VK_INDEX; builder.execute_with_mock_and_fail(); } #[test(should_fail_with = "Membership check failed: vk hash not found in vk tree")] -fn parity_root_vk_not_in_vk_tree() { +fn inbox_parity_vk_not_in_vk_tree() { let mut builder = TestBuilder::default(); - // Update the parity root vk hash so that the old vk hash in the proof data is no longer in the vk tree. + // Update the inbox parity vk hash so that the old vk hash in the proof data is no longer in the vk tree. let mut new_vk_tree = VK_MERKLE_TREE; - update_vk_hash(&mut new_vk_tree, builder.parity_root_vk_index, 999); + update_vk_hash(&mut new_vk_tree, builder.inbox_parity_vk_index, 999); - builder.parity_root.vk_tree_root = new_vk_tree.get_root(); + builder.inbox_parity.vk_tree_root = new_vk_tree.get_root(); builder.left_rollup.constants.vk_tree_root = new_vk_tree.get_root(); builder.right_rollup.constants.vk_tree_root = new_vk_tree.get_root(); builder.execute_with_mock_and_fail(); } -#[test(should_fail_with = "The vk tree root of the parity root does not match the rollup's vk tree root")] +#[test(should_fail_with = "The vk tree root of the inbox parity does not match the rollup's vk tree root")] fn mismatched_vk_tree_root_from_parity() { let mut builder = TestBuilder::default(); - builder.parity_root.vk_tree_root += 1; + builder.inbox_parity.vk_tree_root += 1; builder.execute_with_mock_and_fail(); } -#[test(should_fail_with = "The prover id of the parity root does not match the rollup's prover id")] +#[test(should_fail_with = "The prover id of the inbox parity does not match the rollup's prover id")] fn mismatched_prover_id_from_parity() { let mut builder = TestBuilder::default(); - builder.parity_root.prover_id += 1; + builder.inbox_parity.prover_id += 1; builder.execute_with_mock_and_fail(); } // --- Message sponge --- -#[test(should_fail_with = "The parity root message sponge must start empty")] -fn parity_root_sponge_not_empty() { +#[test(should_fail_with = "The inbox parity message sponge must start empty")] +fn inbox_parity_sponge_not_empty() { let mut builder = TestBuilder::default(); - // The parity root's message sponge must reset per checkpoint (start empty). - builder.parity_root.start_sponge.num_absorbed += 1; + // The inbox parity's message sponge must reset per checkpoint (start empty). + builder.inbox_parity.start_sponge.num_absorbed += 1; builder.execute_with_mock_and_fail(); } -#[test(should_fail_with = "The blocks' message sponge does not match the parity root's message sponge")] +#[test(should_fail_with = "The blocks' message sponge does not match the inbox parity's message sponge")] fn blocks_sponge_mismatch_parity() { let mut builder = TestBuilder::default(); - // Break the equality between the blocks' accumulated sponge and the parity root's sponge. - builder.parity_root.end_sponge.num_absorbed += 1; + // Break the equality between the blocks' accumulated sponge and the inbox parity's sponge. + builder.inbox_parity.end_sponge.num_absorbed += 1; builder.execute_with_mock_and_fail(); } diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/inbox_rolling_hash.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/inbox_rolling_hash.nr index c106e466e3d6..661f898f7fb3 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/inbox_rolling_hash.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/inbox_rolling_hash.nr @@ -27,7 +27,7 @@ pub fn accumulate_inbox_rolling_hash( mod tests { use super::accumulate_inbox_rolling_hash; - use types::{constants::NUM_MSGS_PER_BASE_PARITY, hash::accumulate_sha256}; + use types::{constants::INBOX_PARITY_SIZE_MEDIUM, hash::accumulate_sha256}; #[test] fn empty_bundle_passes_start_through() { @@ -51,14 +51,14 @@ mod tests { } #[test] - fn base_parity_batch_matches_reference() { - // NUM_MSGS_PER_BASE_PARITY leaves valued 1..=256 from a zero start. - let mut leaves = [0; NUM_MSGS_PER_BASE_PARITY]; - for i in 0..NUM_MSGS_PER_BASE_PARITY { + fn batch_matches_reference() { + // 256 leaves valued 1..=256 from a zero start. + let mut leaves = [0; INBOX_PARITY_SIZE_MEDIUM]; + for i in 0..INBOX_PARITY_SIZE_MEDIUM { leaves[i] = (i + 1) as Field; } let expected = 0x00ea95b96f17b75be03525b35a2a1918b42f03ad8c00a437cf641751825f3992; - assert_eq(accumulate_inbox_rolling_hash(0, leaves, NUM_MSGS_PER_BASE_PARITY), expected); + assert_eq(accumulate_inbox_rolling_hash(0, leaves, INBOX_PARITY_SIZE_MEDIUM), expected); } #[test] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/inbox_parity.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/inbox_parity.nr new file mode 100644 index 000000000000..392a817e6acf --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/inbox_parity.nr @@ -0,0 +1,63 @@ +use crate::{ + abis::{L1ToL2MessageSponge, ParityPublicInputs}, + inbox_rolling_hash::accumulate_inbox_rolling_hash, +}; +use types::utils::arrays::assert_trailing_zeros; + +/// Private inputs for the `InboxParity` circuit, generic over the message-bundle size `S`. +/// +/// One `InboxParity` proof is produced per checkpoint. The prover picks the smallest ladder size `S ∈ {64, 256, 1024}` +/// with `S >= num_msgs`, so a checkpoint with few messages proves a small circuit. +pub struct InboxParityPrivateInputs { + // The checkpoint's L1-to-L2 message leaves, padded with zeros beyond `num_msgs`. + pub(crate) msgs: [Field; S], + // Number of real (non-padding) messages in `msgs`. + pub(crate) num_msgs: u32, + // Rolling hash of the Inbox chain before this checkpoint's messages (the previous checkpoint's end value; genesis + // is zero). + pub(crate) start_rolling_hash: Field, + // Message-bundle sponge before this checkpoint's messages (empty at checkpoint start). + pub(crate) start_sponge: L1ToL2MessageSponge, + // The L1 `in_hash` (sha256 frontier root of this checkpoint's messages), passed through UNCONSTRAINED to the + // public inputs. See `ParityPublicInputs::in_hash`: the frontier tree is gone from this body, so the prover + // supplies the value and the circuit does not recompute or bind it to `msgs`. + pub(crate) in_hash: Field, + pub(crate) vk_tree_root: Field, + pub(crate) prover_id: Field, +} + +/// The Inbox Parity circuit recomputes, for one checkpoint, the Inbox rolling-hash chain over the checkpoint's real +/// L1-to-L2 messages and absorbs the same real messages into the message-bundle sponge. It replaces the parity base + +/// parity root family with a single variable-size proof per checkpoint (AZIP-22 Fast Inbox / A-1376 topology). +/// +/// This circuit: +/// - Chains the `num_msgs` real messages into the rolling hash (two sha256 compressions per leaf) +/// - Absorbs the same real messages into the message sponge (real-count absorb; the checkpoint root asserts this +/// equals the sponge the block roots accumulate) +/// - Asserts the padding lanes past `num_msgs` are zero so they cannot silently enter either accumulator +/// - Passes `in_hash` through unconstrained (see `InboxParityPrivateInputs::in_hash`) +/// +/// The output feeds the Checkpoint Root circuits, which verify this proof against the `{64, 256, 1024}` VK ladder. +/// +/// VkIndex: INBOX_PARITY_{64,256,1024}_VK_INDEX +pub fn execute(inputs: InboxParityPrivateInputs) -> ParityPublicInputs { + // Guard the padding lanes so they can't silently enter either accumulator (`num_msgs <= S` is asserted here too). + assert_trailing_zeros(inputs.msgs, inputs.num_msgs); + + let end_rolling_hash = + accumulate_inbox_rolling_hash(inputs.start_rolling_hash, inputs.msgs, inputs.num_msgs); + + let mut end_sponge = inputs.start_sponge; + end_sponge.absorb(inputs.msgs, inputs.num_msgs); + + ParityPublicInputs { + in_hash: inputs.in_hash, + start_rolling_hash: inputs.start_rolling_hash, + end_rolling_hash, + start_sponge: inputs.start_sponge, + end_sponge, + num_msgs: inputs.num_msgs, + vk_tree_root: inputs.vk_tree_root, + prover_id: inputs.prover_id, + } +} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/mod.nr index 668a2cb50cf5..3fed3a63fef6 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/mod.nr @@ -1,7 +1,5 @@ -pub mod parity_base; -pub mod parity_root; +pub mod inbox_parity; mod tests; pub use crate::abis::ParityPublicInputs; -pub use parity_base::ParityBasePrivateInputs; -pub use parity_root::ParityRootPrivateInputs; +pub use inbox_parity::InboxParityPrivateInputs; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_base.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_base.nr deleted file mode 100644 index ec4bf90122fa..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_base.nr +++ /dev/null @@ -1,66 +0,0 @@ -use crate::{ - abis::{L1ToL2MessageSponge, ParityPublicInputs}, - inbox_rolling_hash::accumulate_inbox_rolling_hash, -}; -use types::{ - constants::NUM_MSGS_PER_BASE_PARITY, merkle_tree::MerkleTree, - utils::arrays::assert_trailing_zeros, -}; - -pub struct ParityBasePrivateInputs { - pub(crate) msgs: [Field; NUM_MSGS_PER_BASE_PARITY], - // Rolling hash of the Inbox message chain before absorbing this batch. The orchestrator threads it so that each - // base's start equals the previous base's end, keeping the chain continuous across the four base proofs. - pub(crate) start_rolling_hash: Field, - // Message-bundle sponge before absorbing this batch. Threaded across the four base proofs the same way as the - // rolling hash: each base's start equals the previous base's end, so the checkpoint's sponge chains continuously. - pub(crate) start_sponge: L1ToL2MessageSponge, - // Number of real (non-padding) messages in `msgs`. Only these are absorbed into the rolling hash; the merkle roots - // and the message sponge still absorb the full padded batch as before. - pub(crate) num_msgs: u32, - pub(crate) vk_tree_root: Field, - pub(crate) prover_id: Field, -} - -/// The Parity Base circuit processes a batch of L1-to-L2 messages and computes their merkle roots. -/// It is the first step in converting L1 messages from SHA256 format (used on L1) to Poseidon format -/// (used in Aztec's state trees). -/// -/// This circuit: -/// - Takes a fixed batch of L1-to-L2 messages as input -/// - Computes a SHA256 merkle tree root over the messages (for verification on L1) -/// - Computes a Poseidon merkle tree root over the same messages (for L2 state tree insertion) -/// - Outputs both roots along with the vk_tree_root for consistency verification -/// -/// The output feeds into the Parity Root circuit, which aggregates multiple Parity Base proofs to form the complete -/// L1-to-L2 message subtree for a checkpoint. -/// -/// VkIndex: PARITY_BASE_VK_INDEX -pub fn execute(inputs: ParityBasePrivateInputs) -> ParityPublicInputs { - // The merkle roots absorb the full padded batch (frontier-tree semantics unchanged), while the rolling hash chains - // only the real messages. Assert the padding lanes are zero so they can't silently contribute to either commitment. - assert_trailing_zeros(inputs.msgs, inputs.num_msgs); - - let sha_tree = MerkleTree::new_sha(inputs.msgs); - let poseidon_tree = MerkleTree::new(inputs.msgs); - - let end_rolling_hash = - accumulate_inbox_rolling_hash(inputs.start_rolling_hash, inputs.msgs, inputs.num_msgs); - - // The sponge absorbs the full padded batch (matching the leaves inserted into the L1-to-L2 tree by the block - // roots), so padding zeros enter the sponge even though they never enter the sha rolling chain. - let mut end_sponge = inputs.start_sponge; - end_sponge.absorb(inputs.msgs, NUM_MSGS_PER_BASE_PARITY); - - ParityPublicInputs { - sha_root: sha_tree.get_root(), - converted_root: poseidon_tree.get_root(), - start_rolling_hash: inputs.start_rolling_hash, - end_rolling_hash, - start_sponge: inputs.start_sponge, - end_sponge, - num_msgs: inputs.num_msgs, - vk_tree_root: inputs.vk_tree_root, - prover_id: inputs.prover_id, - } -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_root.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_root.nr deleted file mode 100644 index edd1786e32fa..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/parity_root.nr +++ /dev/null @@ -1,127 +0,0 @@ -use crate::abis::ParityPublicInputs; -use types::{ - constants::{NUM_BASE_PARITY_PER_ROOT_PARITY, PARITY_BASE_VK_INDEX}, - merkle_tree::MerkleTree, - proof::proof_data::UltraHonkProofData, -}; - -pub type ParityBaseProofData = UltraHonkProofData; - -pub struct ParityRootPrivateInputs { - pub(crate) children: [ParityBaseProofData; NUM_BASE_PARITY_PER_ROOT_PARITY], -} - -/// The Parity Root circuit aggregates multiple Parity Base proofs to form the complete L1-to-L2 message subtree for a -/// checkpoint. It combines the merkle roots from child circuits into final roots. -/// -/// This circuit: -/// - Verifies proofs from multiple Parity Base circuits (the children) -/// - Validates that all children use the same vk_tree_root -/// - Validates that all children use the same prover_id -/// - Validates that all children use the same verification key (consistent vk hash, index, and path) -/// - Validates the verification key exists in the vk tree -/// - Computes the final SHA256 merkle root by merging the children's SHA roots -/// - Computes the final Poseidon merkle root by merging the children's converted roots -/// -/// The output feeds into the Checkpoint Root circuits, where the `sha_root` becomes the checkpoint header `in_hash` -/// (verified against the value on L1), the `end_rolling_hash` becomes the checkpoint header `inbox_rolling_hash`, and -/// the `end_sponge` is asserted equal to the message sponge accumulated across the checkpoint's block roots. -/// -/// VkIndex: PARITY_ROOT_VK_INDEX -pub fn execute(inputs: ParityRootPrivateInputs) -> ParityPublicInputs { - let vk_tree_root = inputs.children[0].public_inputs.vk_tree_root; - for i in 1..NUM_BASE_PARITY_PER_ROOT_PARITY { - assert_eq( - inputs.children[i].public_inputs.vk_tree_root, - vk_tree_root, - "Inconsistent vk tree roots across parity base circuits", - ); - } - - let prover_id = inputs.children[0].public_inputs.prover_id; - for i in 1..NUM_BASE_PARITY_PER_ROOT_PARITY { - assert_eq( - inputs.children[i].public_inputs.prover_id, - prover_id, - "Inconsistent prover ids across parity base circuits", - ); - } - - verify_child_proofs(inputs); - - let mut sha_roots = [0; NUM_BASE_PARITY_PER_ROOT_PARITY]; - let mut converted_roots = [0; NUM_BASE_PARITY_PER_ROOT_PARITY]; - for i in 0..NUM_BASE_PARITY_PER_ROOT_PARITY { - sha_roots[i] = inputs.children[i].public_inputs.sha_root; - converted_roots[i] = inputs.children[i].public_inputs.converted_root; - } - - // Thread the rolling hash and the message sponge sequentially across the four base segments: each child must start - // from where the previous one ended. This keeps both chains chunked across the parallel base proofs while enforcing - // continuity. - let mut num_msgs = inputs.children[0].public_inputs.num_msgs; - for i in 1..NUM_BASE_PARITY_PER_ROOT_PARITY { - assert_eq( - inputs.children[i].public_inputs.start_rolling_hash, - inputs.children[i - 1].public_inputs.end_rolling_hash, - "Inconsistent rolling hash across parity base circuits", - ); - assert_eq( - inputs.children[i].public_inputs.start_sponge, - inputs.children[i - 1].public_inputs.end_sponge, - "Inconsistent message sponge across parity base circuits", - ); - num_msgs += inputs.children[i].public_inputs.num_msgs; - } - - let sha_tree = MerkleTree::new_sha(sha_roots); - let poseidon_tree = MerkleTree::new(converted_roots); - - ParityPublicInputs { - sha_root: sha_tree.get_root(), - converted_root: poseidon_tree.get_root(), - start_rolling_hash: inputs.children[0].public_inputs.start_rolling_hash, - end_rolling_hash: inputs.children[NUM_BASE_PARITY_PER_ROOT_PARITY - 1].public_inputs - .end_rolling_hash, - start_sponge: inputs.children[0].public_inputs.start_sponge, - end_sponge: inputs.children[NUM_BASE_PARITY_PER_ROOT_PARITY - 1].public_inputs.end_sponge, - num_msgs, - vk_tree_root, - prover_id, - } -} - -fn verify_child_proofs(inputs: ParityRootPrivateInputs) { - let vk_data = inputs.children[0].vk_data; - let vk_tree_root = inputs.children[0].public_inputs.vk_tree_root; - - inputs.children[0].verify_proof(); - - for i in 1..NUM_BASE_PARITY_PER_ROOT_PARITY { - inputs.children[i].verify_proof(); - - // No need to check `vk_data.vk.key` here, as it's verified in bb that it produces the given hash (`vk_data.vk.hash`). - // So we can ensure that all the keys are the same by asserting that their hashes are equal across all children. - assert_eq( - inputs.children[i].vk_data.vk.hash, - vk_data.vk.hash, - "Inconsistent vk hashes across parity base circuits", - ); - assert_eq( - inputs.children[i].vk_data.leaf_index, - vk_data.leaf_index, - "Inconsistent vk indices across parity base circuits", - ); - assert_eq( - inputs.children[i].vk_data.sibling_path, - vk_data.sibling_path, - "Inconsistent vk paths across parity base circuits", - ); - } - - assert_eq(vk_data.leaf_index, PARITY_BASE_VK_INDEX, "Incorrect vk index for parity base"); - - // Since the vk hashes and paths have been checked to be consistent across all children, - // it's sufficient to validate that one of them exists in the vk tree. - vk_data.validate_in_vk_tree(vk_tree_root); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/inbox_parity_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/inbox_parity_tests.nr new file mode 100644 index 000000000000..73f4565d9c6a --- /dev/null +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/inbox_parity_tests.nr @@ -0,0 +1,135 @@ +use crate::{ + abis::L1ToL2MessageSponge, + inbox_rolling_hash::accumulate_inbox_rolling_hash, + parity::inbox_parity::{self, InboxParityPrivateInputs}, +}; +use types::traits::Empty; + +global S: u32 = 64; + +#[test] +fn public_inputs_match_expected() { + let mut msgs = [0; S]; + for i in 0..S { + msgs[i] = i as Field; + } + let private_inputs = InboxParityPrivateInputs { + msgs, + num_msgs: S, + start_rolling_hash: 0, + start_sponge: L1ToL2MessageSponge::empty(), + in_hash: 0x1234, + vk_tree_root: 42, + prover_id: 7, + }; + let public_inputs = inbox_parity::execute(private_inputs); + + // `in_hash` is echoed through unconstrained. + assert_eq(public_inputs.in_hash, 0x1234); + assert_eq(public_inputs.vk_tree_root, 42); + assert_eq(public_inputs.prover_id, 7); + + // The rolling hash chains all real messages on top of the start value; the circuit echoes back its start/count. + assert_eq(public_inputs.start_rolling_hash, 0); + assert_eq(public_inputs.num_msgs, S); + assert_eq(public_inputs.end_rolling_hash, accumulate_inbox_rolling_hash(0, msgs, S)); + + // The sponge absorbs exactly the real messages (real-count), threading the start. + assert_eq(public_inputs.start_sponge, L1ToL2MessageSponge::empty()); + let mut expected_end_sponge = L1ToL2MessageSponge::empty(); + expected_end_sponge.absorb(msgs, S); + assert_eq(public_inputs.end_sponge, expected_end_sponge); +} + +#[test] +fn rolling_hash_and_sponge_ignore_padding_and_thread_start() { + // Only the first three lanes are real; the rest are zero padding. + let mut msgs = [0; S]; + msgs[0] = 11; + msgs[1] = 22; + msgs[2] = 33; + + let start = 0x2a; + let mut start_sponge = L1ToL2MessageSponge::new(); + start_sponge.absorb([7, 8], 2); + let private_inputs = InboxParityPrivateInputs { + msgs, + num_msgs: 3, + start_rolling_hash: start, + start_sponge, + in_hash: 0, + vk_tree_root: 42, + prover_id: 7, + }; + let public_inputs = inbox_parity::execute(private_inputs); + + assert_eq(public_inputs.start_rolling_hash, start); + assert_eq(public_inputs.num_msgs, 3); + assert_eq(public_inputs.end_rolling_hash, accumulate_inbox_rolling_hash(start, [11, 22, 33], 3)); + + // Both the rolling hash and the sponge see only the three real leaves (real-count absorb). + assert_eq(public_inputs.start_sponge, start_sponge); + let mut expected_end_sponge = start_sponge; + expected_end_sponge.absorb([11, 22, 33], 3); + assert_eq(public_inputs.end_sponge, expected_end_sponge); +} + +#[test] +fn sponge_matches_block_root_real_count_absorb() { + // The checkpoint root asserts InboxParity's end sponge equals the sponge the block roots accumulate. The block + // roots absorb the real messages (real-count) out of their padded bundle, so InboxParity must reach the same + // state absorbing the same real prefix out of a differently-sized (here smaller) array. + let mut msgs = [0; S]; + msgs[0] = 101; + msgs[1] = 202; + + let private_inputs = InboxParityPrivateInputs { + msgs, + num_msgs: 2, + start_rolling_hash: 0, + start_sponge: L1ToL2MessageSponge::empty(), + in_hash: 0, + vk_tree_root: 42, + prover_id: 7, + }; + let public_inputs = inbox_parity::execute(private_inputs); + + // A block root absorbing the same two real leaves out of its 1024-wide bundle reaches the same sponge. + let mut block_sponge = L1ToL2MessageSponge::empty(); + block_sponge.absorb([101, 202, 0, 0, 0], 2); + assert_eq(public_inputs.end_sponge, block_sponge); +} + +#[test(should_fail_with = "Found non-zero field after breakpoint")] +fn non_zero_padding_lane_fails() { + // Claim two real messages but leave a non-zero value in a padding lane. + let mut msgs = [0; S]; + msgs[0] = 11; + msgs[1] = 22; + msgs[5] = 999; + + let private_inputs = InboxParityPrivateInputs { + msgs, + num_msgs: 2, + start_rolling_hash: 0, + start_sponge: L1ToL2MessageSponge::empty(), + in_hash: 0, + vk_tree_root: 42, + prover_id: 7, + }; + let _ = inbox_parity::execute(private_inputs); +} + +#[test(should_fail_with = "in_len is greater than the input array len")] +fn num_msgs_greater_than_size_fails() { + let private_inputs = InboxParityPrivateInputs { + msgs: [0; S], + num_msgs: S + 1, + start_rolling_hash: 0, + start_sponge: L1ToL2MessageSponge::empty(), + in_hash: 0, + vk_tree_root: 42, + prover_id: 7, + }; + let _ = inbox_parity::execute(private_inputs); +} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/mod.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/mod.nr index 069b1e4a3565..417040122994 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/mod.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/mod.nr @@ -1,2 +1 @@ -mod parity_base_tests; -mod parity_root_tests; +mod inbox_parity_tests; diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_base_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_base_tests.nr deleted file mode 100644 index fe26f6b23f75..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_base_tests.nr +++ /dev/null @@ -1,99 +0,0 @@ -use crate::{ - abis::L1ToL2MessageSponge, inbox_rolling_hash::accumulate_inbox_rolling_hash, - parity::parity_base::{self, ParityBasePrivateInputs}, -}; -use types::{constants::NUM_MSGS_PER_BASE_PARITY, traits::Empty}; - -#[test] -fn public_inputs_match_expected() { - let mut msgs = [0; NUM_MSGS_PER_BASE_PARITY]; - for i in 0..NUM_MSGS_PER_BASE_PARITY { - msgs[i] = i as Field; - } - let private_inputs = ParityBasePrivateInputs { - msgs, - start_rolling_hash: 0, - start_sponge: L1ToL2MessageSponge::empty(), - num_msgs: NUM_MSGS_PER_BASE_PARITY, - vk_tree_root: 42, - prover_id: 7, - }; - let public_inputs = parity_base::execute(private_inputs); - - let expected_sha_root = 0x279d4d4dd5bcb9b1a4e742640588b917102f9f8bc97a6c95706ca4e7a8a76b; - let expected_converted_root = - 0x24425e91123ffa26018e970b92316101d503c5937f145d69569ac907d0bd36ec; - - assert_eq(public_inputs.sha_root, expected_sha_root); - assert_eq(public_inputs.converted_root, expected_converted_root); - assert_eq(public_inputs.vk_tree_root, 42); - assert_eq(public_inputs.prover_id, 7); - - // The rolling hash chains all real messages on top of the start value, and the base echoes back its start/count. - assert_eq(public_inputs.start_rolling_hash, 0); - assert_eq(public_inputs.num_msgs, NUM_MSGS_PER_BASE_PARITY); - assert_eq( - public_inputs.end_rolling_hash, - accumulate_inbox_rolling_hash(0, msgs, NUM_MSGS_PER_BASE_PARITY), - ); - - // The sponge absorbs the full padded batch (all lanes), so it echoes the start and ends on the same leaves. - assert_eq(public_inputs.start_sponge, L1ToL2MessageSponge::empty()); - let mut expected_end_sponge = L1ToL2MessageSponge::empty(); - expected_end_sponge.absorb(msgs, NUM_MSGS_PER_BASE_PARITY); - assert_eq(public_inputs.end_sponge, expected_end_sponge); -} - -#[test] -fn rolling_hash_ignores_padding_and_threads_start() { - // Only the first three lanes are real; the rest are zero padding. - let mut msgs = [0; NUM_MSGS_PER_BASE_PARITY]; - msgs[0] = 11; - msgs[1] = 22; - msgs[2] = 33; - - let start = 0x2a; - let mut start_sponge = L1ToL2MessageSponge::new(); - start_sponge.absorb([7, 8], 2); - let private_inputs = ParityBasePrivateInputs { - msgs, - start_rolling_hash: start, - start_sponge, - num_msgs: 3, - vk_tree_root: 42, - prover_id: 7, - }; - let public_inputs = parity_base::execute(private_inputs); - - assert_eq(public_inputs.start_rolling_hash, start); - assert_eq(public_inputs.num_msgs, 3); - assert_eq( - public_inputs.end_rolling_hash, - accumulate_inbox_rolling_hash(start, [11, 22, 33], 3), - ); - - // Unlike the rolling hash, the sponge absorbs the full padded batch (padding zeros included), threading the start. - assert_eq(public_inputs.start_sponge, start_sponge); - let mut expected_end_sponge = start_sponge; - expected_end_sponge.absorb(msgs, NUM_MSGS_PER_BASE_PARITY); - assert_eq(public_inputs.end_sponge, expected_end_sponge); -} - -#[test(should_fail_with = "Found non-zero field after breakpoint")] -fn non_zero_padding_lane_fails() { - // Claim two real messages but leave a non-zero value in a padding lane. - let mut msgs = [0; NUM_MSGS_PER_BASE_PARITY]; - msgs[0] = 11; - msgs[1] = 22; - msgs[5] = 999; - - let private_inputs = ParityBasePrivateInputs { - msgs, - start_rolling_hash: 0, - start_sponge: L1ToL2MessageSponge::empty(), - num_msgs: 2, - vk_tree_root: 42, - prover_id: 7, - }; - let _ = parity_base::execute(private_inputs); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_root_tests.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_root_tests.nr deleted file mode 100644 index 088aceeb2411..000000000000 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/parity/tests/parity_root_tests.nr +++ /dev/null @@ -1,214 +0,0 @@ -use crate::{ - abis::{L1ToL2MessageSponge, ParityPublicInputs}, - parity::parity_root::{self, ParityBaseProofData, ParityRootPrivateInputs}, -}; -use protocol_test_utils::{fixtures::vk_tree::{get_vk_data, vk_tree_root}, pad_end}; -use types::{ - constants::{ - NUM_BASE_PARITY_PER_ROOT_PARITY, PARITY_BASE_VK_INDEX, PARITY_ROOT_VK_INDEX, - ULTRA_VK_LENGTH_IN_FIELDS, - }, - proof::{proof_data::ProofData, vk_data::VkData}, - traits::Empty, -}; - -struct TestBuilder { - children: [ParityBaseProofData; NUM_BASE_PARITY_PER_ROOT_PARITY], -} - -impl TestBuilder { - pub fn new() -> Self { - let vk_data = get_vk_data(PARITY_BASE_VK_INDEX); - - // 31 byte test SHA roots - let children_sha_roots = [ - 0xb3a3fc1968999f2c2d798b900bdf0de41311be2a4d20496a7e792a521fc8ab, - 0x43f78e0ebc9633ce336a8c086064d898c32fb5d7d6011f5427459c0b8d14e9, - 0x024259b6404280addcc9319bc5a32c9a5d56af5c93b2f941fa326064fbe963, - 0x53042d820859d80c474d4694e03778f8dc0ac88fc1c3a97b4369c1096e904a, - ]; - - // Thread the rolling hash and the message sponge across the four base segments: each child's start equals the - // previous child's end. - let mut children = - [Self::make_proof_data(0, 0, 0, L1ToL2MessageSponge::empty(), L1ToL2MessageSponge::empty(), 0, vk_data); NUM_BASE_PARITY_PER_ROOT_PARITY]; - let mut start_rolling_hash = 100; - let mut start_sponge = L1ToL2MessageSponge::empty(); - for i in 0..NUM_BASE_PARITY_PER_ROOT_PARITY { - let end_rolling_hash = start_rolling_hash + 1000; - let mut end_sponge = start_sponge; - end_sponge.absorb([(i + 1) as Field, (i + 1) as Field * 7], 2); - children[i] = Self::make_proof_data( - children_sha_roots[i], - start_rolling_hash, - end_rolling_hash, - start_sponge, - end_sponge, - (i + 1) as u32, - vk_data, - ); - start_rolling_hash = end_rolling_hash; - start_sponge = end_sponge; - } - - Self { children } - } - - fn make_proof_data( - sha_root: Field, - start_rolling_hash: Field, - end_rolling_hash: Field, - start_sponge: L1ToL2MessageSponge, - end_sponge: L1ToL2MessageSponge, - num_msgs: u32, - vk_data: VkData, - ) -> ParityBaseProofData { - let public_inputs = ParityPublicInputs { - sha_root, - converted_root: 0, - start_rolling_hash, - end_rolling_hash, - start_sponge, - end_sponge, - num_msgs, - vk_tree_root, - prover_id: 42, - }; - - let value_offset = sha_root / 2; - ProofData { - public_inputs, - proof: pad_end( - [value_offset + 450343, value_offset + 27394, value_offset + 8003179], - ), - vk_data, - } - } - - pub fn execute(self) -> ParityPublicInputs { - let private_inputs = ParityRootPrivateInputs { children: self.children }; - parity_root::execute(private_inputs) - } -} - -#[test] -fn public_inputs_match_expected() { - let public_inputs = TestBuilder::new().execute(); - - let expected_sha_root = 0xa0c56543aa73140e5ca27231eee3107bd4e11d62164feb411d77c9d9b2da47; - let expected_converted_root = - 0x14e4b977b2203b70e6ee1c2456eb7114d090fe4b907f631eecd0919fed432e7d; - - assert_eq(public_inputs.sha_root, expected_sha_root); - assert_eq(public_inputs.converted_root, expected_converted_root); - assert_eq(public_inputs.vk_tree_root, vk_tree_root); - assert_eq(public_inputs.prover_id, 42); - - // Output start is the first child's start, output end is the last child's end, and counts are summed. - assert_eq(public_inputs.start_rolling_hash, 100); - assert_eq(public_inputs.end_rolling_hash, 100 + NUM_BASE_PARITY_PER_ROOT_PARITY as Field * 1000); - assert_eq(public_inputs.num_msgs, 1 + 2 + 3 + 4); - - // The message sponge threads the same way: output start is the first child's start (empty), output end is the last - // child's end. - assert_eq(public_inputs.start_sponge, L1ToL2MessageSponge::empty()); - let mut expected_end_sponge = L1ToL2MessageSponge::empty(); - for i in 0..NUM_BASE_PARITY_PER_ROOT_PARITY { - expected_end_sponge.absorb([(i + 1) as Field, (i + 1) as Field * 7], 2); - } - assert_eq(public_inputs.end_sponge, expected_end_sponge); -} - -#[test(should_fail_with = "Inconsistent rolling hash across parity base circuits")] -fn inconsistent_rolling_hash() { - let mut builder = TestBuilder::new(); - - // Break the chain continuity between the second and third child. - builder.children[2].public_inputs.start_rolling_hash += 1; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent message sponge across parity base circuits")] -fn inconsistent_message_sponge() { - let mut builder = TestBuilder::new(); - - // Break the sponge continuity between the second and third child. - builder.children[2].public_inputs.start_sponge.num_absorbed += 1; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent vk tree roots across parity base circuits")] -fn inconsistent_vk_tree_root() { - let mut builder = TestBuilder::new(); - - // Tweak the vk tree root of the second child. - builder.children[1].public_inputs.vk_tree_root += 1; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Membership check failed: vk hash not found in vk tree")] -fn incorrect_vk_tree_root() { - let mut builder = TestBuilder::new(); - - // Change the vk tree root of all children. - for i in 0..NUM_BASE_PARITY_PER_ROOT_PARITY { - builder.children[i].public_inputs.vk_tree_root += 1; - } - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent vk hashes across parity base circuits")] -fn inconsistent_vk_hashes() { - let mut builder = TestBuilder::new(); - - // Tweak the vk hash of the third child. - builder.children[2].vk_data.vk.hash += 1; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent vk indices across parity base circuits")] -fn inconsistent_vk_indices() { - let mut builder = TestBuilder::new(); - - // Change the vk leaf index of the last child to be the root parity index. - builder.children[3].vk_data.leaf_index = PARITY_ROOT_VK_INDEX; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent vk paths across parity base circuits")] -fn inconsistent_vk_paths() { - let mut builder = TestBuilder::new(); - - // Tweak the vk path of the first child. - builder.children[0].vk_data.sibling_path[0] += 1; - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Incorrect vk index for parity base")] -fn incorrect_vk_index() { - let mut builder = TestBuilder::new(); - - // Change the vk leaf index of all children to be the root parity index. - for i in 0..NUM_BASE_PARITY_PER_ROOT_PARITY { - builder.children[i].vk_data.leaf_index = PARITY_ROOT_VK_INDEX; - } - - let _ = builder.execute(); -} - -#[test(should_fail_with = "Inconsistent prover ids across parity base circuits")] -fn inconsistent_prover_ids() { - let mut builder = TestBuilder::new(); - - // Tweak the prover_id of the second child. - builder.children[1].public_inputs.prover_id += 1; - - let _ = builder.execute(); -} diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr index 7b38d6b1fb43..129c55ae4061 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr +++ b/noir-projects/noir-protocol-circuits/crates/rollup-lib/src/tests/rollup_fixture_builder.nr @@ -458,8 +458,7 @@ impl RollupFixtureBuilder { pub fn get_parity_public_inputs(self, slot_number: Field) -> ParityPublicInputs { ParityPublicInputs { - sha_root: slot_number * 85831493, - converted_root: self.get_l1_to_l2_message_subtree_root(slot_number), + in_hash: slot_number * 85831493, start_rolling_hash: self.get_inbox_rolling_hash(slot_number), end_rolling_hash: self.get_inbox_rolling_hash(slot_number + 1), // The message sponge resets per checkpoint, so it starts empty and ends at the checkpoint's accumulated diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index a2b2a6a41f28..5568ccbfc8c2 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -129,8 +129,8 @@ pub global CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP_VK_INDEX: u32 = 17; pub global CHECKPOINT_PADDING_ROLLUP_VK_INDEX: u32 = 18; pub global CHECKPOINT_MERGE_ROLLUP_VK_INDEX: u32 = 19; pub global ROOT_ROLLUP_VK_INDEX: u32 = 20; -pub global PARITY_BASE_VK_INDEX: u32 = 21; -pub global PARITY_ROOT_VK_INDEX: u32 = 22; +// VK indices 21 and 22 are intentionally unallocated: they were the parity base / parity root, replaced by the +// InboxParity size ladder (appended at 74-76 below, since the reset range 23-64 is reserved). // The three families below carve up the reset-family range (23-42). Each base is the VK index // of its family's first variant; subsequent variants occupy successive indices. Bases must // stay ascending; `validate_vk_in_vk_tree` depends on this ordering. @@ -156,6 +156,11 @@ pub global PRIVATE_KERNEL_INNER_5_VK_INDEX: u32 = 72; // The block-root variants at 10-14 are full; the non-first message-only block root is appended after the // multi-app kernel indices (65-72), since 43-64 are reserved for reset variants. pub global BLOCK_ROOT_MSGS_ONLY_ROLLUP_VK_INDEX: u32 = 73; +// The InboxParity size ladder: one VK per size, checked as an allowed set by the checkpoint root. Appended here +// (rather than reusing the freed 21/22) so the three sizes stay contiguous and read in order. +pub global INBOX_PARITY_64_VK_INDEX: u32 = 74; +pub global INBOX_PARITY_256_VK_INDEX: u32 = 75; +pub global INBOX_PARITY_1024_VK_INDEX: u32 = 76; // Maximum number of apps absorbed by a single private kernel iteration. pub global MAX_APPS_PER_KERNEL: u32 = 5; @@ -660,10 +665,16 @@ pub global ROOT_ROLLUP_PUBLIC_INPUTS_LENGTH: u32 = 1 /* previous_archive_root */ + MAX_CHECKPOINTS_PER_EPOCH * FEE_RECIPIENT_LENGTH /* fees */ + FINAL_BLOB_ACCUMULATOR_LENGTH /* blob_public_inputs */; -// Depends on the final number of messages per checkpoint. +// The InboxParity size ladder: one variable-size parity proof is produced per checkpoint, and the prover picks the +// smallest size >= the checkpoint's real message count. The largest rung equals the per-checkpoint message cap. +pub global INBOX_PARITY_SIZE_SMALL: u32 = 64; +pub global INBOX_PARITY_SIZE_MEDIUM: u32 = 256; +pub global INBOX_PARITY_SIZE_LARGE: u32 = 1024; + +// Fan-in of the sha256 `in_hash` frontier tree (NUM_BASE_PARITY_PER_ROOT_PARITY * NUM_MSGS_PER_BASE_PARITY == +// NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP). The circuits no longer build this tree, but the constants are still consumed +// by the generated Solidity `Constants` and the L1 `Parity.t.sol` test that checks the frontier-root construction. pub global NUM_MSGS_PER_BASE_PARITY: u32 = 256; -// pub global NUM_BASE_PARITY_PER_ROOT_PARITY: u32 = NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP / NUM_MSGS_PER_BASE_PARITY; -// FIX: Sadly, writing this as above causes a type error in type_conversion.ts. pub global NUM_BASE_PARITY_PER_ROOT_PARITY: u32 = 4; // Lengths of the different types of proofs in fields @@ -1427,9 +1438,9 @@ mod test { use crate::merkle_tree::root::compute_empty_sha_tree_root; use crate::traits::ToField; use super::{ - GLOBAL_INDEX_CONTRACT_MIN_REVERTIBLE_SIDE_EFFECT_COUNTER_OFFSET, MAX_ETH_ADDRESS_VALUE, - NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY, - NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, + GLOBAL_INDEX_CONTRACT_MIN_REVERTIBLE_SIDE_EFFECT_COUNTER_OFFSET, INBOX_PARITY_SIZE_LARGE, + MAX_ETH_ADDRESS_VALUE, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, + TOTAL_COUNTED_SIDE_EFFECTS_PER_CALL, }; #[test] @@ -1474,10 +1485,8 @@ mod test { #[test] fn parity_covers_all_l1_to_l2_msgs() { - assert_eq( - NUM_BASE_PARITY_PER_ROOT_PARITY * NUM_MSGS_PER_BASE_PARITY, - NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, - ); + // The largest InboxParity rung must be able to hold a full checkpoint's worth of messages. + assert_eq(INBOX_PARITY_SIZE_LARGE, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP); } #[test] diff --git a/yarn-project/bb-prover/src/honk.ts b/yarn-project/bb-prover/src/honk.ts index 552f7c79beab..6c8f4219a278 100644 --- a/yarn-project/bb-prover/src/honk.ts +++ b/yarn-project/bb-prover/src/honk.ts @@ -3,7 +3,11 @@ import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_starknet_honk' | 'ultra_rollup_honk'; const UltraKeccakHonkCircuits = ['RootRollupArtifact'] as const satisfies ServerProtocolArtifact[]; -const UltraHonkCircuits = ['ParityBaseArtifact', 'ParityRootArtifact'] as const satisfies ServerProtocolArtifact[]; +const UltraHonkCircuits = [ + 'InboxParity64Artifact', + 'InboxParity256Artifact', + 'InboxParity1024Artifact', +] as const satisfies ServerProtocolArtifact[]; export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number]; export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number]; diff --git a/yarn-project/bb-prover/src/prover/server/bb_prover.ts b/yarn-project/bb-prover/src/prover/server/bb_prover.ts index 815caf5730a2..ab4855b0f20f 100644 --- a/yarn-project/bb-prover/src/prover/server/bb_prover.ts +++ b/yarn-project/bb-prover/src/prover/server/bb_prover.ts @@ -33,10 +33,8 @@ import { convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, - convertParityBaseOutputsFromWitnessMap, - convertParityBasePrivateInputsToWitnessMap, - convertParityRootOutputsFromWitnessMap, - convertParityRootPrivateInputsToWitnessMap, + convertInboxParityOutputsFromWitnessMap, + convertInboxParityPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPublicChonkVerifierOutputsFromWitnessMap, @@ -48,6 +46,7 @@ import { convertTxMergeRollupOutputsFromWitnessMap, convertTxMergeRollupPrivateInputsToWitnessMap, getServerCircuitArtifact, + inboxParityArtifactForSize, } from '@aztec/noir-protocol-circuits-types/server'; import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks'; import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types'; @@ -60,7 +59,7 @@ import { type ServerCircuitProver, makePublicInputsAndRecursiveProof, } from '@aztec/stdlib/interfaces/server'; -import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import type { InboxParityPrivateInputs, ParityPublicInputs } from '@aztec/stdlib/parity'; import { Proof, RecursiveProof, makeRecursiveProofFromBinary } from '@aztec/stdlib/proofs'; import { BlockMergeRollupPrivateInputs, @@ -141,34 +140,16 @@ export class BBNativeRollupProver implements ServerCircuitProver { * @param inputs - Inputs to the circuit. * @returns The public inputs of the parity circuit. */ - @trackSpan('BBNativeRollupProver.getBaseParityProof', { [Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-base' }) - public getBaseParityProof( - inputs: ParityBasePrivateInputs, + @trackSpan('BBNativeRollupProver.getInboxParityProof', { [Attributes.PROTOCOL_CIRCUIT_NAME]: 'inbox-parity' }) + public getInboxParityProof( + inputs: InboxParityPrivateInputs, ): Promise> { return this.createRecursiveProofAndVerify( inputs, - 'ParityBaseArtifact', + inboxParityArtifactForSize(inputs.size), RECURSIVE_PROOF_LENGTH, - convertParityBasePrivateInputsToWitnessMap, - convertParityBaseOutputsFromWitnessMap, - ); - } - - /** - * Simulates the root parity circuit from its inputs. - * @param inputs - Inputs to the circuit. - * @returns The public inputs of the parity circuit. - */ - @trackSpan('BBNativeRollupProver.getRootParityProof', { [Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-root' }) - public getRootParityProof( - inputs: ParityRootPrivateInputs, - ): Promise> { - return this.createRecursiveProofAndVerify( - inputs, - 'ParityRootArtifact', - NESTED_RECURSIVE_PROOF_LENGTH, - convertParityRootPrivateInputsToWitnessMap, - convertParityRootOutputsFromWitnessMap, + convertInboxParityPrivateInputsToWitnessMap, + outputs => convertInboxParityOutputsFromWitnessMap(outputs, inputs.size), ); } diff --git a/yarn-project/bb-prover/src/test/delay_values.ts b/yarn-project/bb-prover/src/test/delay_values.ts index e5ff5832fb04..a7685e0676b7 100644 --- a/yarn-project/bb-prover/src/test/delay_values.ts +++ b/yarn-project/bb-prover/src/test/delay_values.ts @@ -2,8 +2,7 @@ import { ProvingRequestType } from '@aztec/stdlib/proofs'; export const WITGEN_DELAY_MS: Record = { [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 60, - [ProvingRequestType.PARITY_BASE]: 1_600, - [ProvingRequestType.PARITY_ROOT]: 40, + [ProvingRequestType.INBOX_PARITY]: 1_600, [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 45, [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 18, [ProvingRequestType.BLOCK_ROOT_MSGS_ONLY_ROLLUP]: 18, @@ -26,8 +25,7 @@ export const WITGEN_DELAY_MS: Record = { export const PROOF_DELAY_MS: Record = { [ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 16_300, - [ProvingRequestType.PARITY_BASE]: 15_300, - [ProvingRequestType.PARITY_ROOT]: 18_600, + [ProvingRequestType.INBOX_PARITY]: 15_300, [ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 17_400, [ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 4_500, [ProvingRequestType.BLOCK_ROOT_MSGS_ONLY_ROLLUP]: 4_500, diff --git a/yarn-project/bb-prover/src/test/test_circuit_prover.ts b/yarn-project/bb-prover/src/test/test_circuit_prover.ts index 1433598d67ca..17e9b22b642d 100644 --- a/yarn-project/bb-prover/src/test/test_circuit_prover.ts +++ b/yarn-project/bb-prover/src/test/test_circuit_prover.ts @@ -31,10 +31,8 @@ import { convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, - convertParityBaseOutputsFromWitnessMap, - convertParityBasePrivateInputsToWitnessMap, - convertParityRootOutputsFromWitnessMap, - convertParityRootPrivateInputsToWitnessMap, + convertInboxParityOutputsFromWitnessMap, + convertInboxParityPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap, @@ -45,6 +43,7 @@ import { convertTxMergeRollupPrivateInputsToWitnessMap, foreignCallHandler, getSimulatedServerCircuitArtifact, + inboxParityArtifactForSize, } from '@aztec/noir-protocol-circuits-types/server'; import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks'; import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types'; @@ -56,7 +55,7 @@ import { type ServerCircuitProver, makePublicInputsAndRecursiveProof, } from '@aztec/stdlib/interfaces/server'; -import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import type { InboxParityPrivateInputs, ParityPublicInputs } from '@aztec/stdlib/parity'; import { type Proof, ProvingRequestType, @@ -128,37 +127,17 @@ export class TestCircuitProver implements ServerCircuitProver { * @param inputs - Inputs to the circuit. * @returns The public inputs of the parity circuit. */ - @trackSpan('TestCircuitProver.getBaseParityProof') - public getBaseParityProof( - inputs: ParityBasePrivateInputs, + @trackSpan('TestCircuitProver.getInboxParityProof') + public getInboxParityProof( + inputs: InboxParityPrivateInputs, ): Promise> { - return this.applyDelay(ProvingRequestType.PARITY_BASE, () => + return this.applyDelay(ProvingRequestType.INBOX_PARITY, () => this.simulate( inputs, - 'ParityBaseArtifact', + inboxParityArtifactForSize(inputs.size), RECURSIVE_PROOF_LENGTH, - convertParityBasePrivateInputsToWitnessMap, - convertParityBaseOutputsFromWitnessMap, - ), - ); - } - - /** - * Simulates the root parity circuit from its inputs. - * @param inputs - Inputs to the circuit. - * @returns The public inputs of the parity circuit. - */ - @trackSpan('TestCircuitProver.getRootParityProof') - public getRootParityProof( - inputs: ParityRootPrivateInputs, - ): Promise> { - return this.applyDelay(ProvingRequestType.PARITY_ROOT, () => - this.simulate( - inputs, - 'ParityRootArtifact', - NESTED_RECURSIVE_PROOF_LENGTH, - convertParityRootPrivateInputsToWitnessMap, - convertParityRootOutputsFromWitnessMap, + convertInboxParityPrivateInputsToWitnessMap, + outputs => convertInboxParityOutputsFromWitnessMap(outputs, inputs.size), ), ); } diff --git a/yarn-project/ivc-integration/src/base_parity_inputs.test.ts b/yarn-project/ivc-integration/src/base_parity_inputs.test.ts index fd9913be338c..6b93ae5d59b3 100644 --- a/yarn-project/ivc-integration/src/base_parity_inputs.test.ts +++ b/yarn-project/ivc-integration/src/base_parity_inputs.test.ts @@ -1,60 +1,66 @@ /** - * Generates base parity circuit inputs (bytecode + witness) for UltraHonk benchmarks. + * Generates parity circuit inputs (bytecode + witness) for UltraHonk benchmarks. * Only runs when BASE_PARITY_BENCH_DIR env var is set by the UltraHonk benchmark input generator. * * Run with: BASE_PARITY_BENCH_DIR=./bench-out yarn workspace @aztec/ivc-integration test src/base_parity_inputs.test.ts + * + * The parity base/root circuits were replaced by the single variable-size InboxParity circuit (AZIP-22 Fast Inbox); + * this benchmark now targets the 256-message rung (`InboxParity256`), matching the old base-parity circuit's size. The + * output files keep their legacy `parity_base.json` / `witness.gz` names because `ci_benchmark_ultrahonk_circuits.sh` + * locates inputs as `${circuit_name}.json` with `circuit_name=parity_base`. */ -import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants'; +import { INBOX_PARITY_SIZE_MEDIUM } from '@aztec/constants'; import { Fr } from '@aztec/foundation/curves/bn254'; import { createLogger } from '@aztec/foundation/log'; import { Noir } from '@aztec/noir-noir_js'; import { ServerCircuitArtifacts } from '@aztec/noir-protocol-circuits-types/server'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; -import { L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; -import { ParityBasePrivateInputs } from '@aztec/stdlib/parity'; +import { L1ToL2MessageSponge, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging'; +import { InboxParityPrivateInputs } from '@aztec/stdlib/parity'; import { jest } from '@jest/globals'; import * as fs from 'fs/promises'; import * as path from 'path'; -const logger = createLogger('bench:base-parity'); +const logger = createLogger('bench:inbox-parity'); jest.setTimeout(120_000); -describe('Base Parity Benchmark Inputs', () => { - it('generates bytecode and witness files for base parity benchmarking', async () => { +describe('Inbox Parity Benchmark Inputs', () => { + it('generates bytecode and witness files for parity benchmarking', async () => { const outputDir = process.env.BASE_PARITY_BENCH_DIR; if (!outputDir) { - logger.info('Skipping base parity bench input generation (BASE_PARITY_BENCH_DIR not set)'); + logger.info('Skipping parity bench input generation (BASE_PARITY_BENCH_DIR not set)'); return; } - logger.info(`Generating base parity bench inputs to ${outputDir}`); + logger.info(`Generating parity bench inputs to ${outputDir}`); await fs.mkdir(outputDir, { recursive: true }); - // Generate random L1-to-L2 messages - logger.info(`Generating ${NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP} random L1-to-L2 messages...`); - const l1ToL2Messages = new Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(null).map(() => Fr.random()); + // Generate random L1-to-L2 messages that fill the 256-message rung. + logger.info(`Generating ${INBOX_PARITY_SIZE_MEDIUM} random L1-to-L2 messages...`); + const l1ToL2Messages = new Array(INBOX_PARITY_SIZE_MEDIUM).fill(null).map(() => Fr.random()); - // Create base parity inputs for the first slice + // Create InboxParity inputs (picks the 256 rung for 256 messages). const vkTreeRoot = getVKTreeRoot(); - const baseParityInputs = ParityBasePrivateInputs.fromSlice( + const inputs = InboxParityPrivateInputs.fromMessages( l1ToL2Messages, - 0, Fr.ZERO, L1ToL2MessageSponge.empty(), - NUM_MSGS_PER_BASE_PARITY, + computeInHashFromL1ToL2Messages(l1ToL2Messages), vkTreeRoot, Fr.random(), ); - logger.info('Created base parity inputs'); + logger.info('Created inbox parity inputs'); // Convert inputs to Noir format (inline the mapping since it's simple) - const startSponge = baseParityInputs.startSponge; + const startSponge = inputs.startSponge; const noirInputs = { - msgs: baseParityInputs.msgs.map(m => m.toString()), + msgs: inputs.messages.map(m => m.toString()), + // eslint-disable-next-line camelcase + num_msgs: inputs.numMessages, // eslint-disable-next-line camelcase - start_rolling_hash: baseParityInputs.startRollingHash.toString(), + start_rolling_hash: inputs.startRollingHash.toString(), // eslint-disable-next-line camelcase start_sponge: { sponge: { @@ -69,16 +75,16 @@ describe('Base Parity Benchmark Inputs', () => { num_absorbed: startSponge.numAbsorbed, }, // eslint-disable-next-line camelcase - num_msgs: baseParityInputs.numMsgs, + in_hash: inputs.inHash.toString(), // eslint-disable-next-line camelcase - vk_tree_root: baseParityInputs.vkTreeRoot.toString(), + vk_tree_root: inputs.vkTreeRoot.toString(), // eslint-disable-next-line camelcase - prover_id: baseParityInputs.proverId.toString(), + prover_id: inputs.proverId.toString(), }; logger.info('Converted inputs to Noir format'); // Get the circuit artifact - const artifact = ServerCircuitArtifacts.ParityBaseArtifact; + const artifact = ServerCircuitArtifacts.InboxParity256Artifact; // Execute the circuit with Noir to generate witness logger.info('Executing circuit with Noir to generate witness...'); @@ -86,7 +92,7 @@ describe('Base Parity Benchmark Inputs', () => { const { witness } = await program.execute({ inputs: noirInputs }); logger.info('Witness generated'); - // Save bytecode as JSON (bb expects the full JSON artifact) + // Save bytecode as JSON (bb expects the full JSON artifact). Filename is the harness's legacy contract. const bytecodeOutputPath = path.join(outputDir, 'parity_base.json'); await fs.writeFile(bytecodeOutputPath, JSON.stringify(artifact)); logger.info(`Wrote bytecode to ${bytecodeOutputPath}`); @@ -96,7 +102,7 @@ describe('Base Parity Benchmark Inputs', () => { await fs.writeFile(witnessOutputPath, witness); logger.info(`Wrote witness to ${witnessOutputPath}`); - logger.info('Base parity bench inputs generated successfully'); + logger.info('Inbox parity bench inputs generated successfully'); logger.info(`Output directory: ${outputDir}`); logger.info('Files:'); logger.info(` - ${bytecodeOutputPath} (circuit bytecode)`); diff --git a/yarn-project/ivc-integration/src/bb_js_debug.test.ts b/yarn-project/ivc-integration/src/bb_js_debug.test.ts index 46a0acab7872..f478e61dd182 100644 --- a/yarn-project/ivc-integration/src/bb_js_debug.test.ts +++ b/yarn-project/ivc-integration/src/bb_js_debug.test.ts @@ -6,14 +6,14 @@ */ import { BBJsInstance, type BBJsProofResult } from '@aztec/bb-prover'; import { DebugBBJsInstance } from '@aztec/bb-prover/debug'; -import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants'; +import { INBOX_PARITY_SIZE_MEDIUM } from '@aztec/constants'; import { Fr } from '@aztec/foundation/curves/bn254'; import { createLogger } from '@aztec/foundation/log'; import { Noir } from '@aztec/noir-noir_js'; import { ServerCircuitArtifacts } from '@aztec/noir-protocol-circuits-types/server'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; -import { L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; -import { ParityBasePrivateInputs } from '@aztec/stdlib/parity'; +import { L1ToL2MessageSponge, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging'; +import { InboxParityPrivateInputs } from '@aztec/stdlib/parity'; import { jest } from '@jest/globals'; import * as proc from 'child_process'; @@ -55,24 +55,25 @@ describe('BB.js Debug Wrapper', () => { // Create a temporary debug output directory debugDir = await fs.mkdtemp(path.join(process.env.BB_WORKING_DIRECTORY || '/tmp', 'bb-debug-test-')); - // Generate base parity inputs (same approach as base_parity_inputs.test.ts) - const l1ToL2Messages = new Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(null).map(() => Fr.random()); + // Generate inbox parity inputs (same approach as base_parity_inputs.test.ts) + const l1ToL2Messages = new Array(INBOX_PARITY_SIZE_MEDIUM).fill(null).map(() => Fr.random()); const vkTreeRoot = getVKTreeRoot(); - const baseParityInputs = ParityBasePrivateInputs.fromSlice( + const inboxParityInputs = InboxParityPrivateInputs.fromMessages( l1ToL2Messages, - 0, Fr.ZERO, L1ToL2MessageSponge.empty(), - NUM_MSGS_PER_BASE_PARITY, + computeInHashFromL1ToL2Messages(l1ToL2Messages), vkTreeRoot, Fr.random(), ); - const startSponge = baseParityInputs.startSponge; + const startSponge = inboxParityInputs.startSponge; const noirInputs = { - msgs: baseParityInputs.msgs.map(m => m.toString()), + msgs: inboxParityInputs.messages.map(m => m.toString()), // eslint-disable-next-line camelcase - start_rolling_hash: baseParityInputs.startRollingHash.toString(), + num_msgs: inboxParityInputs.numMessages, + // eslint-disable-next-line camelcase + start_rolling_hash: inboxParityInputs.startRollingHash.toString(), // eslint-disable-next-line camelcase start_sponge: { sponge: { @@ -87,14 +88,14 @@ describe('BB.js Debug Wrapper', () => { num_absorbed: startSponge.numAbsorbed, }, // eslint-disable-next-line camelcase - num_msgs: baseParityInputs.numMsgs, + in_hash: inboxParityInputs.inHash.toString(), // eslint-disable-next-line camelcase - vk_tree_root: baseParityInputs.vkTreeRoot.toString(), + vk_tree_root: inboxParityInputs.vkTreeRoot.toString(), // eslint-disable-next-line camelcase - prover_id: baseParityInputs.proverId.toString(), + prover_id: inboxParityInputs.proverId.toString(), }; - const artifact = ServerCircuitArtifacts.ParityBaseArtifact; + const artifact = ServerCircuitArtifacts.InboxParity256Artifact; // Execute circuit with Noir JS to generate witness logger.info('Generating witness via Noir JS...'); @@ -112,7 +113,7 @@ describe('BB.js Debug Wrapper', () => { const debug = new DebugBBJsInstance(raw, debugDir, BB_PATH, logger); try { - bbJsResult = await debug.generateProof('ParityBase', bytecode, vkBytes, witness, 'ultra_honk'); + bbJsResult = await debug.generateProof('InboxParity256', bytecode, vkBytes, witness, 'ultra_honk'); logger.info( `bb.js proof generated: ${bbJsResult.proofFields.length} proof fields, ${bbJsResult.publicInputFields.length} public input fields`, ); @@ -129,12 +130,12 @@ describe('BB.js Debug Wrapper', () => { }); it('writes correct debug files and command.sh', async () => { - const opDir = path.join(debugDir, 'ParityBase-001'); + const opDir = path.join(debugDir, 'InboxParity256-001'); // Check all expected files exist const files = await fs.readdir(opDir); - expect(files).toContain('ParityBase-bytecode.gz'); - expect(files).toContain('ParityBase-vk'); + expect(files).toContain('InboxParity256-bytecode.gz'); + expect(files).toContain('InboxParity256-vk'); expect(files).toContain('partial-witness.gz'); expect(files).toContain('proof'); expect(files).toContain('public_inputs'); @@ -153,15 +154,15 @@ describe('BB.js Debug Wrapper', () => { }); it('CLI bb prove reproduces the same proof as bb.js', async () => { - const opDir = path.join(debugDir, 'ParityBase-001'); + const opDir = path.join(debugDir, 'InboxParity256-001'); // Create a separate output directory for the CLI proof const cliOutputDir = path.join(debugDir, 'cli-prove-output'); await fs.mkdir(cliOutputDir, { recursive: true }); // Run the bb prove command using the same input files - const bytecodePath = path.join(opDir, 'ParityBase-bytecode.gz'); - const vkPath = path.join(opDir, 'ParityBase-vk'); + const bytecodePath = path.join(opDir, 'InboxParity256-bytecode.gz'); + const vkPath = path.join(opDir, 'InboxParity256-vk'); const witnessPath = path.join(opDir, 'partial-witness.gz'); const logFn = (msg: string) => logger.verbose(`bb-cli - ${msg}`); @@ -202,7 +203,7 @@ describe('BB.js Debug Wrapper', () => { }); it('CLI bb verify succeeds with debug output files', async () => { - const opDir = path.join(debugDir, 'ParityBase-001'); + const opDir = path.join(debugDir, 'InboxParity256-001'); // We need the VK produced by the prover (not the input VK). // The prove command writes a VK only with --write_vk. Instead, we write_vk separately @@ -212,7 +213,7 @@ describe('BB.js Debug Wrapper', () => { const vkDir = path.join(debugDir, 'cli-vk-output'); await fs.mkdir(vkDir, { recursive: true }); - const bytecodePath = path.join(opDir, 'ParityBase-bytecode.gz'); + const bytecodePath = path.join(opDir, 'InboxParity256-bytecode.gz'); // Generate VK via CLI const logFn = (msg: string) => logger.verbose(`bb-cli - ${msg}`); diff --git a/yarn-project/noir-protocol-circuits-types/src/artifacts/server.ts b/yarn-project/noir-protocol-circuits-types/src/artifacts/server.ts index 09e3ff25a296..b0e00e56b414 100644 --- a/yarn-project/noir-protocol-circuits-types/src/artifacts/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/artifacts/server.ts @@ -1,8 +1,9 @@ import type { NoirCompiledCircuit, NoirCompiledCircuitWithName } from '@aztec/stdlib/noir'; import PublicChonkVerifierJson from '../../artifacts/chonk_verifier_public.json' with { type: 'json' }; -import ParityBaseJson from '../../artifacts/parity_base.json' with { type: 'json' }; -import ParityRootJson from '../../artifacts/parity_root.json' with { type: 'json' }; +import InboxParity64Json from '../../artifacts/inbox_parity_64.json' with { type: 'json' }; +import InboxParity256Json from '../../artifacts/inbox_parity_256.json' with { type: 'json' }; +import InboxParity1024Json from '../../artifacts/inbox_parity_1024.json' with { type: 'json' }; import BlockMergeRollupJson from '../../artifacts/rollup_block_merge.json' with { type: 'json' }; import BlockRootRollupJson from '../../artifacts/rollup_block_root.json' with { type: 'json' }; import BlockRootFirstRollupJson from '../../artifacts/rollup_block_root_first.json' with { type: 'json' }; @@ -29,8 +30,9 @@ import TxMergeRollupJson from '../../artifacts/rollup_tx_merge.json' with { type import type { ServerProtocolArtifact } from './types.js'; export const ServerCircuitArtifacts: Record = { - ParityBaseArtifact: ParityBaseJson as NoirCompiledCircuit, - ParityRootArtifact: ParityRootJson as NoirCompiledCircuit, + InboxParity64Artifact: InboxParity64Json as NoirCompiledCircuit, + InboxParity256Artifact: InboxParity256Json as NoirCompiledCircuit, + InboxParity1024Artifact: InboxParity1024Json as NoirCompiledCircuit, PublicChonkVerifier: PublicChonkVerifierJson as NoirCompiledCircuit, PrivateTxBaseRollupArtifact: PrivateTxBaseRollupJson as NoirCompiledCircuit, PublicTxBaseRollupArtifact: PublicTxBaseRollupJson as NoirCompiledCircuit, @@ -50,8 +52,11 @@ export const ServerCircuitArtifacts: Record = { - ParityBaseArtifact: ParityBaseJson as NoirCompiledCircuit, - ParityRootArtifact: ParityRootJson as NoirCompiledCircuit, + // No separate simulated build for the inbox parity ladder: they verify no child proofs, so the constrained + // artifacts are used for simulation too. + InboxParity64Artifact: InboxParity64Json as NoirCompiledCircuit, + InboxParity256Artifact: InboxParity256Json as NoirCompiledCircuit, + InboxParity1024Artifact: InboxParity1024Json as NoirCompiledCircuit, PublicChonkVerifier: PublicChonkVerifierJson as NoirCompiledCircuit, PrivateTxBaseRollupArtifact: PrivateTxBaseRollupSimulatedJson as NoirCompiledCircuit, PublicTxBaseRollupArtifact: PublicTxBaseRollupSimulatedJson as NoirCompiledCircuit, diff --git a/yarn-project/noir-protocol-circuits-types/src/artifacts/types.ts b/yarn-project/noir-protocol-circuits-types/src/artifacts/types.ts index ebd4171b9d78..4c6f368d4913 100644 --- a/yarn-project/noir-protocol-circuits-types/src/artifacts/types.ts +++ b/yarn-project/noir-protocol-circuits-types/src/artifacts/types.ts @@ -27,8 +27,9 @@ export type ClientProtocolArtifact = // These are all circuits that should generate proofs with the `recursive` flag. export type ServerProtocolArtifact = - | 'ParityBaseArtifact' - | 'ParityRootArtifact' + | 'InboxParity64Artifact' + | 'InboxParity256Artifact' + | 'InboxParity1024Artifact' | 'PublicChonkVerifier' | 'PrivateTxBaseRollupArtifact' | 'PublicTxBaseRollupArtifact' @@ -60,10 +61,12 @@ export interface ArtifactProvider { export function mapProtocolArtifactNameToCircuitName(artifact: ProtocolArtifact): CircuitName { switch (artifact) { - case 'ParityBaseArtifact': - return 'parity-base'; - case 'ParityRootArtifact': - return 'parity-root'; + case 'InboxParity64Artifact': + return 'inbox-parity-64'; + case 'InboxParity256Artifact': + return 'inbox-parity-256'; + case 'InboxParity1024Artifact': + return 'inbox-parity-1024'; case 'PublicChonkVerifier': return 'chonk-verifier-public'; case 'PrivateTxBaseRollupArtifact': diff --git a/yarn-project/noir-protocol-circuits-types/src/artifacts/vks/server.ts b/yarn-project/noir-protocol-circuits-types/src/artifacts/vks/server.ts index d8fd37c0ac96..ff90aee7d674 100644 --- a/yarn-project/noir-protocol-circuits-types/src/artifacts/vks/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/artifacts/vks/server.ts @@ -12,8 +12,9 @@ import { CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP_VK_INDEX, HIDING_KERNEL_TO_PUBLIC_VK_INDEX, HIDING_KERNEL_TO_ROLLUP_VK_INDEX, - PARITY_BASE_VK_INDEX, - PARITY_ROOT_VK_INDEX, + INBOX_PARITY_64_VK_INDEX, + INBOX_PARITY_256_VK_INDEX, + INBOX_PARITY_1024_VK_INDEX, PRIVATE_KERNEL_INIT_2_VK_INDEX, PRIVATE_KERNEL_INIT_3_VK_INDEX, PRIVATE_KERNEL_INIT_4_VK_INDEX, @@ -33,8 +34,9 @@ import { import { VerificationKeyData } from '@aztec/stdlib/vks'; import PublicChonkVerifier from '../../../artifacts/chonk_verifier_public.json' with { type: 'json' }; -import ParityBase from '../../../artifacts/parity_base.json' with { type: 'json' }; -import ParityRoot from '../../../artifacts/parity_root.json' with { type: 'json' }; +import InboxParity64 from '../../../artifacts/inbox_parity_64.json' with { type: 'json' }; +import InboxParity256 from '../../../artifacts/inbox_parity_256.json' with { type: 'json' }; +import InboxParity1024 from '../../../artifacts/inbox_parity_1024.json' with { type: 'json' }; import BlockMergeRollup from '../../../artifacts/rollup_block_merge.json' with { type: 'json' }; import BlockRootRollup from '../../../artifacts/rollup_block_root.json' with { type: 'json' }; import BlockRootFirstRollup from '../../../artifacts/rollup_block_root_first.json' with { type: 'json' }; @@ -59,8 +61,9 @@ import { abiToVKData } from '../../utils/vk_json.js'; import type { ProtocolCircuitName, ServerProtocolCircuitName } from '../types.js'; export const ServerCircuitVks: Record = { - ParityBaseArtifact: abiToVKData(ParityBase), - ParityRootArtifact: abiToVKData(ParityRoot), + InboxParity64Artifact: abiToVKData(InboxParity64), + InboxParity256Artifact: abiToVKData(InboxParity256), + InboxParity1024Artifact: abiToVKData(InboxParity1024), PublicChonkVerifier: abiToVKData(PublicChonkVerifier), PrivateTxBaseRollupArtifact: abiToVKData(PrivateTxBaseRollup), PublicTxBaseRollupArtifact: abiToVKData(PublicTxBaseRollup), @@ -95,8 +98,9 @@ export const ProtocolCircuitVkIndexes: Record = { HidingKernelToRollup: HIDING_KERNEL_TO_ROLLUP_VK_INDEX, HidingKernelToPublic: HIDING_KERNEL_TO_PUBLIC_VK_INDEX, PublicChonkVerifier: PUBLIC_CHONK_VERIFIER_VK_INDEX, - ParityBaseArtifact: PARITY_BASE_VK_INDEX, - ParityRootArtifact: PARITY_ROOT_VK_INDEX, + InboxParity64Artifact: INBOX_PARITY_64_VK_INDEX, + InboxParity256Artifact: INBOX_PARITY_256_VK_INDEX, + InboxParity1024Artifact: INBOX_PARITY_1024_VK_INDEX, PrivateTxBaseRollupArtifact: PRIVATE_TX_BASE_ROLLUP_VK_INDEX, PublicTxBaseRollupArtifact: PUBLIC_TX_BASE_ROLLUP_VK_INDEX, TxMergeRollupArtifact: TX_MERGE_ROLLUP_VK_INDEX, diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index 14fe025e93a5..e8bddce5e8fa 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -32,8 +32,8 @@ import { PrivateToPublicKernelCircuitPublicInputs, } from '@aztec/stdlib/kernel'; import type { FlatPublicLogs } from '@aztec/stdlib/logs'; -import { L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; -import { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import { L1ToL2MessageBundle, L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; +import { InboxParityPrivateInputs, ParityPublicInputs } from '@aztec/stdlib/parity'; import type { ProofData, ProofDataForFixedVk, RecursiveProof } from '@aztec/stdlib/proofs'; import { BlockConstantData, @@ -95,9 +95,7 @@ import type { FixedLengthArray, L1ToL2MessageSponge as L1ToL2MessageSpongeNoir, Field as NoirField, - ParityBasePrivateInputs as ParityBasePrivateInputsNoir, ParityPublicInputs as ParityPublicInputsNoir, - ParityRootPrivateInputs as ParityRootPrivateInputsNoir, Poseidon2Sponge as Poseidon2SpongeNoir, PrivateToAvmAccumulatedDataArrayLengths as PrivateToAvmAccumulatedDataArrayLengthsNoir, PrivateToAvmAccumulatedData as PrivateToAvmAccumulatedDataNoir, @@ -482,8 +480,7 @@ export function mapAvmProofDataToNoir( function mapParityPublicInputsToNoir(parityPublicInputs: ParityPublicInputs): ParityPublicInputsNoir { return { - sha_root: mapFieldToNoir(parityPublicInputs.shaRoot), - converted_root: mapFieldToNoir(parityPublicInputs.convertedRoot), + in_hash: mapFieldToNoir(parityPublicInputs.inHash), start_rolling_hash: mapFieldToNoir(parityPublicInputs.startRollingHash), end_rolling_hash: mapFieldToNoir(parityPublicInputs.endRollingHash), start_sponge: mapL1ToL2MessageSpongeToNoir(parityPublicInputs.startSponge), @@ -522,8 +519,7 @@ export function mapRootRollupPublicInputsFromNoir( */ export function mapParityPublicInputsFromNoir(parityPublicInputs: ParityPublicInputsNoir): ParityPublicInputs { return new ParityPublicInputs( - mapFieldFromNoir(parityPublicInputs.sha_root), - mapFieldFromNoir(parityPublicInputs.converted_root), + mapFieldFromNoir(parityPublicInputs.in_hash), mapFieldFromNoir(parityPublicInputs.start_rolling_hash), mapFieldFromNoir(parityPublicInputs.end_rolling_hash), mapL1ToL2MessageSpongeFromNoir(parityPublicInputs.start_sponge), @@ -734,25 +730,20 @@ function mapTreeSnapshotDiffHintsToNoir(hints: TreeSnapshotDiffHints): TreeSnaps }; } -export function mapParityBasePrivateInputsToNoir(inputs: ParityBasePrivateInputs): ParityBasePrivateInputsNoir { +// Maps the size-generic InboxParity inputs to the Noir struct. The `messages` array length already equals the chosen +// ladder size, so the same object satisfies whichever size-specific artifact ABI is selected by `inputs.size`. +export function mapInboxParityPrivateInputsToNoir(inputs: InboxParityPrivateInputs) { return { - msgs: mapTuple(inputs.msgs, mapFieldToNoir), + msgs: mapFieldArrayToNoir(inputs.messages), + num_msgs: mapNumberToNoir(inputs.numMessages), start_rolling_hash: mapFieldToNoir(inputs.startRollingHash), start_sponge: mapL1ToL2MessageSpongeToNoir(inputs.startSponge), - num_msgs: mapNumberToNoir(inputs.numMsgs), + in_hash: mapFieldToNoir(inputs.inHash), vk_tree_root: mapFieldToNoir(inputs.vkTreeRoot), prover_id: mapFieldToNoir(inputs.proverId), }; } -export function mapParityRootPrivateInputsToNoir(inputs: ParityRootPrivateInputs): ParityRootPrivateInputsNoir { - return { - children: mapTuple(inputs.children, c => - mapProofDataToNoir(c, mapParityPublicInputsToNoir, ULTRA_VK_LENGTH_IN_FIELDS), - ), - }; -} - export function mapPublicChonkVerifierPrivateInputsToNoir( inputs: PublicChonkVerifierPrivateInputs, ): PublicChonkVerifierPrivateInputsNoir { @@ -838,6 +829,14 @@ export function mapRevertCodeToNoir(revertCode: RevertCode): NoirField { return mapFieldToNoir(revertCode.toField()); } +function mapL1ToL2MessageBundleToNoir(bundle: L1ToL2MessageBundle) { + return { + messages: mapFieldArrayToNoir(bundle.messages), + num_msgs: mapNumberToNoir(bundle.numMsgs), + num_real_msgs: mapNumberToNoir(bundle.numRealMsgs), + }; +} + export function mapBlockRootFirstRollupPrivateInputsToNoir( inputs: BlockRootFirstRollupPrivateInputs, ): BlockRootFirstRollupPrivateInputsNoir { @@ -846,8 +845,7 @@ export function mapBlockRootFirstRollupPrivateInputsToNoir( mapProofDataToNoir(inputs.previousRollups[0], mapTxRollupPublicInputsToNoir), mapProofDataToNoir(inputs.previousRollups[1], mapTxRollupPublicInputsToNoir), ], - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), previous_l1_to_l2: mapAppendOnlyTreeSnapshotToNoir(inputs.previousL1ToL2), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), @@ -859,8 +857,7 @@ export function mapBlockRootSingleTxFirstRollupPrivateInputsToNoir( ): BlockRootSingleTxFirstRollupPrivateInputsNoir { return { previous_rollup: mapProofDataToNoir(inputs.previousRollup, mapTxRollupPublicInputsToNoir), - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), previous_l1_to_l2: mapAppendOnlyTreeSnapshotToNoir(inputs.previousL1ToL2), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), @@ -875,8 +872,7 @@ export function mapBlockRootEmptyTxFirstRollupPrivateInputsToNoir( previous_state: mapStateReferenceToNoir(inputs.previousState), constants: mapCheckpointConstantDataToNoir(inputs.constants), timestamp: mapU64ToNoir(inputs.timestamp), - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), }; @@ -892,8 +888,7 @@ export function mapBlockRootMsgsOnlyRollupPrivateInputsToNoir( timestamp: mapU64ToNoir(inputs.timestamp), start_sponge_blob: mapSpongeBlobToNoir(inputs.startSpongeBlob), start_msg_sponge: mapL1ToL2MessageSpongeToNoir(inputs.startMsgSponge), - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), }; @@ -907,8 +902,7 @@ export function mapBlockRootRollupPrivateInputsToNoir( mapProofDataToNoir(inputs.previousRollups[0], mapTxRollupPublicInputsToNoir), mapProofDataToNoir(inputs.previousRollups[1], mapTxRollupPublicInputsToNoir), ], - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), start_msg_sponge: mapL1ToL2MessageSpongeToNoir(inputs.startMsgSponge), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), @@ -920,8 +914,7 @@ export function mapBlockRootSingleTxRollupPrivateInputsToNoir( ): BlockRootSingleTxRollupPrivateInputsNoir { return { previous_rollup: mapProofDataToNoir(inputs.previousRollup, mapTxRollupPublicInputsToNoir), - l1_to_l2_messages: mapFieldArrayToNoir(inputs.l1ToL2Messages), - num_msgs: mapNumberToNoir(inputs.numMsgs), + message_bundle: mapL1ToL2MessageBundleToNoir(inputs.messageBundle), start_msg_sponge: mapL1ToL2MessageSpongeToNoir(inputs.startMsgSponge), l1_to_l2_message_frontier_hint: mapTuple(inputs.l1ToL2MessageFrontierHint, mapFieldToNoir), new_archive_sibling_path: mapTuple(inputs.newArchiveSiblingPath, mapFieldToNoir), @@ -961,7 +954,7 @@ export function mapCheckpointRootRollupPrivateInputsToNoir( mapProofDataToNoir(inputs.previousRollups[0], mapBlockRollupPublicInputsToNoir), mapProofDataToNoir(inputs.previousRollups[1], mapBlockRollupPublicInputsToNoir), ], - parity_root: mapProofDataToNoir(inputs.parityRoot, mapParityPublicInputsToNoir, ULTRA_VK_LENGTH_IN_FIELDS), + inbox_parity: mapProofDataToNoir(inputs.inboxParity, mapParityPublicInputsToNoir, ULTRA_VK_LENGTH_IN_FIELDS), hints: mapCheckpointRootRollupHintsToNoir(inputs.hints), }; } @@ -971,7 +964,7 @@ export function mapCheckpointRootSingleBlockRollupPrivateInputsToNoir( ): CheckpointRootSingleBlockRollupPrivateInputsNoir { return { previous_rollup: mapProofDataToNoir(inputs.previousRollup, mapBlockRollupPublicInputsToNoir), - parity_root: mapProofDataToNoir(inputs.parityRoot, mapParityPublicInputsToNoir, ULTRA_VK_LENGTH_IN_FIELDS), + inbox_parity: mapProofDataToNoir(inputs.inboxParity, mapParityPublicInputsToNoir, ULTRA_VK_LENGTH_IN_FIELDS), hints: mapCheckpointRootRollupHintsToNoir(inputs.hints), }; } diff --git a/yarn-project/noir-protocol-circuits-types/src/execution/server.ts b/yarn-project/noir-protocol-circuits-types/src/execution/server.ts index e25e578cce5a..52197acfacbf 100644 --- a/yarn-project/noir-protocol-circuits-types/src/execution/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/execution/server.ts @@ -1,7 +1,8 @@ +import { INBOX_PARITY_SIZE_LARGE, INBOX_PARITY_SIZE_MEDIUM, INBOX_PARITY_SIZE_SMALL } from '@aztec/constants'; import { pushTestData } from '@aztec/foundation/testing'; import type { WitnessMap } from '@aztec/noir-acvm_js'; import { abiDecode, abiEncode } from '@aztec/noir-noirc_abi'; -import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import type { InboxParityPrivateInputs, ParityPublicInputs } from '@aztec/stdlib/parity'; import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, @@ -41,9 +42,8 @@ import { mapCheckpointRollupPublicInputsFromNoir, mapCheckpointRootRollupPrivateInputsToNoir, mapCheckpointRootSingleBlockRollupPrivateInputsToNoir, - mapParityBasePrivateInputsToNoir, + mapInboxParityPrivateInputsToNoir, mapParityPublicInputsFromNoir, - mapParityRootPrivateInputsToNoir, mapPrivateTxBaseRollupPrivateInputsToNoir, mapPublicChonkVerifierPrivateInputsToNoir, mapPublicChonkVerifierPublicInputsFromNoir, @@ -55,8 +55,7 @@ import { } from '../conversion/server.js'; import type { ChonkVerifierPublicReturnType, - ParityBaseReturnType, - ParityRootReturnType, + InboxParity64ReturnType, RollupBlockMergeReturnType, RollupBlockRootFirstEmptyTxReturnType, RollupBlockRootFirstReturnType, @@ -81,23 +80,29 @@ export { mapAvmCircuitPublicInputsToNoir } from '../conversion/server.js'; * @param inputs - The base parity inputs. * @returns The witness map */ -export function convertParityBasePrivateInputsToWitnessMap( - inputs: ParityBasePrivateInputs, +export function convertInboxParityPrivateInputsToWitnessMap( + inputs: InboxParityPrivateInputs, simulated = false, ): WitnessMap { - return convertPrivateInputsToWitnessMap('ParityBaseArtifact', mapParityBasePrivateInputsToNoir(inputs), simulated); + return convertPrivateInputsToWitnessMap( + inboxParityArtifactForSize(inputs.size), + mapInboxParityPrivateInputsToNoir(inputs), + simulated, + ); } -/** - * Converts the inputs of the root parity circuit into a witness map. - * @param inputs - The root parity inputs. - * @returns The witness map - */ -export function convertParityRootPrivateInputsToWitnessMap( - inputs: ParityRootPrivateInputs, - simulated = false, -): WitnessMap { - return convertPrivateInputsToWitnessMap('ParityRootArtifact', mapParityRootPrivateInputsToNoir(inputs), simulated); +/** Maps an InboxParity ladder size to its server artifact. */ +export function inboxParityArtifactForSize(size: number): ServerProtocolArtifact { + switch (size) { + case INBOX_PARITY_SIZE_SMALL: + return 'InboxParity64Artifact'; + case INBOX_PARITY_SIZE_MEDIUM: + return 'InboxParity256Artifact'; + case INBOX_PARITY_SIZE_LARGE: + return 'InboxParity1024Artifact'; + default: + throw new Error(`No InboxParity artifact for size ${size}`); + } } export function convertPublicChonkVerifierPrivateInputsToWitnessMap( @@ -471,18 +476,17 @@ export function convertRootRollupOutputsFromWitnessMap(outputs: WitnessMap, simu * @param outputs - The base parity outputs as a witness map. * @returns The public inputs. */ -export function convertParityBaseOutputsFromWitnessMap(outputs: WitnessMap, simulated = false): ParityPublicInputs { - const publicInputs = convertOutputsFromWitnessMap('ParityBaseArtifact', outputs, simulated); - return mapParityPublicInputsFromNoir(publicInputs); -} - -/** - * Converts the outputs of the root parity circuit from a witness map. - * @param outputs - The root parity outputs as a witness map. - * @returns The public inputs. - */ -export function convertParityRootOutputsFromWitnessMap(outputs: WitnessMap, simulated = false): ParityPublicInputs { - const publicInputs = convertOutputsFromWitnessMap('ParityRootArtifact', outputs, simulated); +export function convertInboxParityOutputsFromWitnessMap( + outputs: WitnessMap, + size: number, + simulated = false, +): ParityPublicInputs { + // Every ladder size shares the same `ParityPublicInputs` return ABI, so the decode is identical across sizes. + const publicInputs = convertOutputsFromWitnessMap( + inboxParityArtifactForSize(size), + outputs, + simulated, + ); return mapParityPublicInputsFromNoir(publicInputs); } diff --git a/yarn-project/noir-protocol-circuits-types/src/scripts/generate_ts_from_abi.ts b/yarn-project/noir-protocol-circuits-types/src/scripts/generate_ts_from_abi.ts index 48630c78f333..79a3ba4f4b00 100644 --- a/yarn-project/noir-protocol-circuits-types/src/scripts/generate_ts_from_abi.ts +++ b/yarn-project/noir-protocol-circuits-types/src/scripts/generate_ts_from_abi.ts @@ -8,8 +8,9 @@ import { promises as fs } from 'fs'; const log = createConsoleLogger('autogenerate'); const circuits = [ - 'parity_base', - 'parity_root', + 'inbox_parity_64', + 'inbox_parity_256', + 'inbox_parity_1024', 'private_kernel_init', 'private_kernel_init_2', 'private_kernel_init_3', diff --git a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts index 81cb4063dfb4..08bd5cd17c80 100644 --- a/yarn-project/prover-client/src/orchestrator/block-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/block-proving-state.ts @@ -12,6 +12,7 @@ import { Fr } from '@aztec/foundation/curves/bn254'; import type { Tuple } from '@aztec/foundation/serialize'; import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees'; import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server'; +import { L1ToL2MessageBundle } from '@aztec/stdlib/messaging'; import type { RollupHonkProofData } from '@aztec/stdlib/proofs'; import { BlockRollupPublicInputs, @@ -291,7 +292,7 @@ export class BlockProvingState { return this.#getFirstBlockRootRollupTypeAndInputs(previousRollups); } - const { leaves, numMsgs } = this.#getMessageBundle(); + const messageBundle = this.#getMessageBundle(); const frontierHint = this.#getFrontierHint(); const startMsgSponge = this.parentCheckpoint.getCheckpointMsgSponge(); @@ -301,8 +302,7 @@ export class BlockProvingState { rollupType: 'rollup-block-root-single-tx' satisfies CircuitName, inputs: new BlockRootSingleTxRollupPrivateInputs( leftRollup, - leaves, - numMsgs, + messageBundle, startMsgSponge, frontierHint, this.lastArchiveSiblingPath, @@ -313,8 +313,7 @@ export class BlockProvingState { rollupType: 'rollup-block-root' satisfies CircuitName, inputs: new BlockRootRollupPrivateInputs( [leftRollup, rightRollup], - leaves, - numMsgs, + messageBundle, startMsgSponge, frontierHint, this.lastArchiveSiblingPath, @@ -324,7 +323,7 @@ export class BlockProvingState { } #getFirstBlockRootRollupTypeAndInputs([leftRollup, rightRollup]: RollupHonkProofData[]) { - const { leaves, numMsgs } = this.#getMessageBundle(); + const messageBundle = this.#getMessageBundle(); const frontierHint = this.#getFrontierHint(); if (!leftRollup) { @@ -335,8 +334,7 @@ export class BlockProvingState { this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.timestamp, - leaves, - numMsgs, + messageBundle, frontierHint, this.lastArchiveSiblingPath, ), @@ -346,8 +344,7 @@ export class BlockProvingState { rollupType: 'rollup-block-root-first-single-tx' satisfies CircuitName, inputs: new BlockRootSingleTxFirstRollupPrivateInputs( leftRollup, - leaves, - numMsgs, + messageBundle, this.lastL1ToL2MessageTreeSnapshot, frontierHint, this.lastArchiveSiblingPath, @@ -358,8 +355,7 @@ export class BlockProvingState { rollupType: 'rollup-block-root-first' satisfies CircuitName, inputs: new BlockRootFirstRollupPrivateInputs( [leftRollup, rightRollup], - leaves, - numMsgs, + messageBundle, this.lastL1ToL2MessageTreeSnapshot, frontierHint, this.lastArchiveSiblingPath, @@ -370,15 +366,19 @@ export class BlockProvingState { /** * The message bundle this block appends. Transitionally the first block carries the whole checkpoint's messages - * padded to `MAX_L1_TO_L2_MSGS_PER_BLOCK` (`numMsgs` set to the cap so all leaves — including padding — reproduce - * today's aligned subtree insert); non-first blocks carry an empty bundle. + * padded to `MAX_L1_TO_L2_MSGS_PER_BLOCK` — inserted as a full aligned subtree into the L1-to-L2 tree (`numMsgs` = + * the cap), while only the real messages are absorbed into the message sponge (`numRealMsgs`, matching the + * checkpoint's InboxParity proof). Non-first blocks carry an empty bundle. */ - #getMessageBundle(): { leaves: Fr[]; numMsgs: number } { + #getMessageBundle(): L1ToL2MessageBundle { if (this.isFirstBlock) { - return { leaves: this.parentCheckpoint.getPaddedL1ToL2Messages(), numMsgs: MAX_L1_TO_L2_MSGS_PER_BLOCK }; + return new L1ToL2MessageBundle( + this.parentCheckpoint.getPaddedL1ToL2Messages(), + MAX_L1_TO_L2_MSGS_PER_BLOCK, + this.parentCheckpoint.getNumRealL1ToL2Messages(), + ); } - // Array.from (not padArrayEnd) keeps the type `Fr[]` — a padArrayEnd to the literal cap infers a deep tuple type. - return { leaves: Array.from({ length: MAX_L1_TO_L2_MSGS_PER_BLOCK }, () => Fr.ZERO), numMsgs: 0 }; + return L1ToL2MessageBundle.empty(); } /** diff --git a/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts b/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts index 092857db739c..3f2f61d90ae4 100644 --- a/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts @@ -4,17 +4,14 @@ import { type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_PROOF_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, - NUM_BASE_PARITY_PER_ROOT_PARITY, - NUM_MSGS_PER_BASE_PARITY, } from '@aztec/constants'; import { BlockNumber } from '@aztec/foundation/branded-types'; -import { padArrayEnd } from '@aztec/foundation/collection'; import { Fr } from '@aztec/foundation/curves/bn254'; -import { type Tuple, assertLength } from '@aztec/foundation/serialize'; +import type { Tuple } from '@aztec/foundation/serialize'; import { type TreeNodeLocation, UnbalancedTreeStore } from '@aztec/foundation/trees'; import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server'; -import { type L1ToL2MessageSponge, accumulateInboxRollingHash } from '@aztec/stdlib/messaging'; -import { ParityBasePrivateInputs, type ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import { L1ToL2MessageSponge, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging'; +import { InboxParityPrivateInputs, type ParityPublicInputs } from '@aztec/stdlib/parity'; import { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, CheckpointConstantData } from '@aztec/stdlib/rollup'; import type { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees'; import type { BlockHeader } from '@aztec/stdlib/tx'; @@ -27,11 +24,10 @@ export class CheckpointProvingState { private blockProofs: UnbalancedTreeStore< ProofState >; - // Parity proofs moved here from the per-block proving state: parity now gates the checkpoint root, not the first - // block root (AZIP-22 Fast Inbox). The parity root proof is surfaced as part of the sub-tree result. - private baseParityProofs: (ProofState | undefined)[] = - Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(() => undefined); - private rootParityProof: ProofState | undefined; + // The checkpoint's single InboxParity proof. Parity gates the checkpoint root, not the first block root (AZIP-22 + // Fast Inbox); a single variable-size proof per checkpoint replaces the former base + root parity fan-in. Surfaced + // as part of the sub-tree result. + private inboxParityProof: ProofState | undefined; private blocks: (BlockProvingState | undefined)[] = []; private error: string | undefined; public readonly firstBlockNumber: BlockNumber; @@ -44,7 +40,7 @@ export class CheckpointProvingState { private readonly lastArchiveSiblingPath: Tuple, private readonly l1ToL2Messages: Fr[], // Inbox rolling hash before this checkpoint's messages (the previous checkpoint's end value; genesis is zero). - // Threaded into the base parity circuits so the resulting checkpoint header rolling hash matches the proposer's. + // Threaded into the InboxParity circuit so the resulting checkpoint header rolling hash matches the proposer's. private readonly startInboxRollingHash: Fr, // The snapshot and sibling path before the new l1 to l2 message subtree is inserted. private readonly lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, @@ -58,13 +54,12 @@ export class CheckpointProvingState { Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH >, - // The checkpoint's messages padded to `MAX_L1_TO_L2_MSGS_PER_CHECKPOINT` (the first block's transitional bundle). + // The checkpoint's messages padded to `MAX_L1_TO_L2_MSGS_PER_CHECKPOINT` (the first block's transitional bundle, + // inserted as a full subtree into the L1-to-L2 tree). private readonly paddedL1ToL2Messages: Fr[], - // Message-bundle sponge threaded into each base parity circuit (base i starts from the sponge over the first - // i * NUM_MSGS_PER_BASE_PARITY padded leaves); `baseParityStartSponges[0]` is empty. - private readonly baseParityStartSponges: L1ToL2MessageSponge[], - // Message-bundle sponge over the whole (padded) checkpoint. Equals the parity root's end sponge and the sponge the - // block roots accumulate, so it is threaded into non-first block roots as their inherited `startMsgSponge`. + // Message-bundle sponge over the checkpoint's real messages (real-count absorb). Equals the InboxParity proof's + // end sponge and the sponge the block roots accumulate, so it is threaded into non-first block roots as their + // inherited `startMsgSponge`. private readonly checkpointMsgSponge: L1ToL2MessageSponge, public readonly epochNumber: number, /** Owner's liveness check. `verifyState()` returns false once this returns false. */ @@ -81,7 +76,12 @@ export class CheckpointProvingState { return this.paddedL1ToL2Messages; } - /** The message-bundle sponge over the whole (padded) checkpoint — inherited by non-first block roots. */ + /** Number of real (non-padding) L1-to-L2 messages in the checkpoint — the sponge/InboxParity real-count. */ + public getNumRealL1ToL2Messages(): number { + return this.l1ToL2Messages.length; + } + + /** The message-bundle sponge over the checkpoint's real messages (real-count absorb) — inherited by non-first block roots. */ public getCheckpointMsgSponge(): L1ToL2MessageSponge { return this.checkpointMsgSponge; } @@ -167,75 +167,38 @@ export class CheckpointProvingState { this.blockProofs.setNode(location, { provingOutput }); } - public getBaseParityInputs(baseParityIndex: number) { - const start = baseParityIndex * NUM_MSGS_PER_BASE_PARITY; - const realMessages = this.l1ToL2Messages.slice(start, start + NUM_MSGS_PER_BASE_PARITY); - const messages = padArrayEnd(realMessages, Fr.ZERO, NUM_MSGS_PER_BASE_PARITY); - // Thread the rolling hash: this base's start is the chain value after all real messages in earlier bases, so the - // four bases chain sequentially and the parity root ends at the checkpoint's rolling hash. Only real (non-padding) - // messages are absorbed, matching the proposer's `accumulateInboxRollingHash`. - const startRollingHash = accumulateInboxRollingHash( + // ---------------- inbox parity proof orchestration ---------------- + + /** + * Builds the checkpoint's single InboxParity input. The circuit is sized to the smallest ladder rung that fits the + * message count; the rolling hash starts from the previous checkpoint's end and the message sponge starts empty (it + * resets per checkpoint). `in_hash` (the L1 frontier root) is supplied as an unconstrained pass-through hint. + */ + public getInboxParityInputs(): InboxParityPrivateInputs { + return InboxParityPrivateInputs.fromMessages( + this.l1ToL2Messages, this.startInboxRollingHash, - this.l1ToL2Messages.slice(0, start), - ); - // Thread the message sponge: this base starts from the sponge over the first `start` padded leaves, and absorbs - // its full padded batch. Unlike the rolling hash, the sponge absorbs padding zeros too (transitional asymmetry). - return new ParityBasePrivateInputs( - messages, - startRollingHash, - this.baseParityStartSponges[baseParityIndex], - realMessages.length, + L1ToL2MessageSponge.empty(), + computeInHashFromL1ToL2Messages(this.l1ToL2Messages), this.constants.vkTreeRoot, this.constants.proverId, ); } - // ---------------- parity proof orchestration ---------------- - - public tryStartProvingBaseParity(index: number) { - if (this.baseParityProofs[index]?.isProving) { - return false; - } - this.baseParityProofs[index] = { isProving: true }; - return true; - } - - public setBaseParityProof(index: number, provingOutput: PublicInputsAndRecursiveProof) { - if (index >= NUM_BASE_PARITY_PER_ROOT_PARITY) { - throw new Error( - `Unable to set a base parity proof at index ${index}. Expected at most ${NUM_BASE_PARITY_PER_ROOT_PARITY} proofs.`, - ); - } - this.baseParityProofs[index] = { provingOutput }; - } - - public isReadyForRootParity() { - return this.baseParityProofs.every(p => !!p?.provingOutput); - } - - public tryStartProvingRootParity() { - if (this.rootParityProof?.isProving) { + public tryStartProvingInboxParity() { + if (this.inboxParityProof?.isProving) { return false; } - this.rootParityProof = { isProving: true }; + this.inboxParityProof = { isProving: true }; return true; } - public setRootParityProof(provingOutput: PublicInputsAndRecursiveProof) { - this.rootParityProof = { provingOutput }; + public setInboxParityProof(provingOutput: PublicInputsAndRecursiveProof) { + this.inboxParityProof = { provingOutput }; } - public getRootParityProof() { - return this.rootParityProof?.provingOutput; - } - - public getParityRootInputs() { - const baseParityProvingOutputs = this.baseParityProofs.filter(p => !!p?.provingOutput).map(p => p!.provingOutput!); - if (baseParityProvingOutputs.length !== this.baseParityProofs.length) { - throw new Error('At least one base parity is not ready.'); - } - const children = baseParityProvingOutputs.map(p => toProofData(p)); - return new ParityRootPrivateInputs(assertLength(children, NUM_BASE_PARITY_PER_ROOT_PARITY)); + public getInboxParityProof() { + return this.inboxParityProof?.provingOutput; } public getParentLocation(location: TreeNodeLocation) { diff --git a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.test.ts b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.test.ts index 21694c155323..41ada4e52c7b 100644 --- a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.test.ts +++ b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.test.ts @@ -72,8 +72,8 @@ describe('prover/orchestrator/checkpoint-sub-tree', () => { expect(result.blockProofOutputs[0].proof).toBeDefined(); // Parity moved to the checkpoint root (AZIP-22): the sub-tree proves it once per checkpoint and surfaces it for // the top tree to feed into the checkpoint root rollup. - expect(result.parityRootProof).toBeDefined(); - expect(result.parityRootProof.proof).toBeDefined(); + expect(result.inboxParityProof).toBeDefined(); + expect(result.inboxParityProof.proof).toBeDefined(); expect(result.previousArchiveSiblingPath).toBeDefined(); } finally { await subTree.stop(); @@ -116,7 +116,7 @@ describe('prover/orchestrator/checkpoint-sub-tree', () => { const result = await resultPromise; expect(result.blockProofOutputs).toHaveLength(2); // A single parity root proof covers the whole checkpoint, regardless of block count. - expect(result.parityRootProof).toBeDefined(); + expect(result.inboxParityProof).toBeDefined(); } finally { await subTree.stop(); } diff --git a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts index d5a688ef3ad9..0535ee3b609d 100644 --- a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts @@ -5,8 +5,6 @@ import { L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, MAX_L1_TO_L2_MSGS_PER_CHECKPOINT, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, - NUM_BASE_PARITY_PER_ROOT_PARITY, - NUM_MSGS_PER_BASE_PARITY, } from '@aztec/constants'; import { BlockNumber, type EpochNumber } from '@aztec/foundation/branded-types'; import { padArrayEnd } from '@aztec/foundation/collection'; @@ -84,10 +82,11 @@ export type SubTreeResult = { typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[]; /** - * The checkpoint's parity root proof. Parity moved from the first block root to the checkpoint root (AZIP-22 Fast - * Inbox), so the sub-tree proves it and hands it to the top tree, which feeds it into the checkpoint root rollup. + * The checkpoint's single InboxParity proof. Parity moved from the first block root to the checkpoint root (AZIP-22 + * Fast Inbox), so the sub-tree proves it and hands it to the top tree, which feeds it into the checkpoint root + * rollup. */ - parityRootProof: PublicInputsAndRecursiveProof; + inboxParityProof: PublicInputsAndRecursiveProof; previousArchiveSiblingPath: Tuple; }; @@ -529,20 +528,12 @@ export class CheckpointSubTreeOrchestrator extends ProvingScheduler { newL1ToL2MessageSubtreeRootSiblingPath, } = await this.updateL1ToL2MessageTree(l1ToL2Messages, db); - // Precompute the message-bundle sponges. The checkpoint's messages are padded to the per-checkpoint cap (the first - // block's transitional bundle); base parity `i` starts from the sponge over the first `i` chunks, and the whole - // padded sponge is inherited by non-first block roots. + // The first block inserts the whole checkpoint's messages as a full padded subtree into the L1-to-L2 tree, so keep + // the padded array for the block-root bundle. The message sponge, however, absorbs only the real messages + // (real-count), so it matches the checkpoint's single InboxParity proof; non-first block roots inherit this sponge. const paddedL1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, MAX_L1_TO_L2_MSGS_PER_CHECKPOINT); - const baseParityStartSponges: L1ToL2MessageSponge[] = []; - let runningSponge = L1ToL2MessageSponge.empty(); - for (let i = 0; i < NUM_BASE_PARITY_PER_ROOT_PARITY; i++) { - baseParityStartSponges.push(runningSponge.clone()); - runningSponge = runningSponge.clone(); - await runningSponge.absorb( - paddedL1ToL2Messages.slice(i * NUM_MSGS_PER_BASE_PARITY, (i + 1) * NUM_MSGS_PER_BASE_PARITY), - ); - } - const checkpointMsgSponge = runningSponge; + const checkpointMsgSponge = L1ToL2MessageSponge.empty(); + await checkpointMsgSponge.absorb(l1ToL2Messages); this.provingState = new CheckpointProvingState( /* index */ 0, @@ -557,17 +548,15 @@ export class CheckpointSubTreeOrchestrator extends ProvingScheduler { newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath, paddedL1ToL2Messages, - baseParityStartSponges, checkpointMsgSponge, Number(this.epochNumber), /* isAlive */ () => !this.cancelled, /* onReject */ reason => this.subTreeResult.reject(new Error(reason)), ); - // Parity now gates the checkpoint root (not the first block root), so prove it per checkpoint up front. - for (let i = 0; i < NUM_BASE_PARITY_PER_ROOT_PARITY; i++) { - this.enqueueBaseParityCircuit(this.provingState, i); - } + // Parity now gates the checkpoint root (not the first block root); prove the single sized InboxParity per + // checkpoint up front. + this.enqueueInboxParityCircuit(this.provingState); } // ---------------- private: per-block proof orchestration ---------------- @@ -811,65 +800,31 @@ export class CheckpointSubTreeOrchestrator extends ProvingScheduler { ); } - // Executes the base parity circuit. Enqueues the root parity circuit if all inputs are available. - private enqueueBaseParityCircuit(checkpointProvingState: CheckpointProvingState, baseParityIndex: number) { - if (!checkpointProvingState.verifyState()) { - this.logger.debug('Not running base parity. State no longer valid.'); - return; - } - - if (!checkpointProvingState.tryStartProvingBaseParity(baseParityIndex)) { - this.logger.warn(`Base parity ${baseParityIndex} already started.`); - return; - } - - const inputs = checkpointProvingState.getBaseParityInputs(baseParityIndex); - - this.deferredProving( - checkpointProvingState, - this.wrapCircuitCall( - 'getBaseParityProof', - signal => this.prover.getBaseParityProof(inputs, signal, checkpointProvingState.epochNumber), - { [Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-base' satisfies CircuitName }, - ), - provingOutput => { - checkpointProvingState.setBaseParityProof(baseParityIndex, provingOutput); - this.checkAndEnqueueRootParityCircuit(checkpointProvingState); - }, - ); - } - - private checkAndEnqueueRootParityCircuit(checkpointProvingState: CheckpointProvingState) { - if (!checkpointProvingState.isReadyForRootParity()) { - return; - } - this.enqueueRootParityCircuit(checkpointProvingState); - } - - // Runs the root parity circuit and stores the outputs. The parity root now feeds the checkpoint root (in the top - // tree), so completing it may resolve the sub-tree rather than a block root. - private enqueueRootParityCircuit(checkpointProvingState: CheckpointProvingState) { + // Runs the checkpoint's single InboxParity circuit and stores the output. The proof feeds the checkpoint root (in + // the top tree), so completing it may resolve the sub-tree rather than a block root. + private enqueueInboxParityCircuit(checkpointProvingState: CheckpointProvingState) { if (!checkpointProvingState.verifyState()) { - this.logger.debug('Not running root parity. State no longer valid.'); + this.logger.debug('Not running inbox parity. State no longer valid.'); return; } - if (!checkpointProvingState.tryStartProvingRootParity()) { - this.logger.debug('Root parity already started.'); + if (!checkpointProvingState.tryStartProvingInboxParity()) { + this.logger.debug('Inbox parity already started.'); return; } - const inputs = checkpointProvingState.getParityRootInputs(); + const inputs = checkpointProvingState.getInboxParityInputs(); + const circuitName = `inbox-parity-${inputs.size}` satisfies CircuitName; this.deferredProving( checkpointProvingState, this.wrapCircuitCall( - 'getRootParityProof', - signal => this.prover.getRootParityProof(inputs, signal, checkpointProvingState.epochNumber), - { [Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-root' satisfies CircuitName }, + 'getInboxParityProof', + signal => this.prover.getInboxParityProof(inputs, signal, checkpointProvingState.epochNumber), + { [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName }, ), result => { - checkpointProvingState.setRootParityProof(result); + checkpointProvingState.setInboxParityProof(result); this.checkAndEnqueueSubTreeResolution(checkpointProvingState); }, ); @@ -954,15 +909,15 @@ export class CheckpointSubTreeOrchestrator extends ProvingScheduler { // Block merge tree not fully resolved yet — retried as more block proofs land. return; } - // The parity root proof gates the sub-tree result too (it feeds the checkpoint root in the top tree). - const parityRootProof = provingState.getRootParityProof(); - if (!parityRootProof) { - // Parity not proven yet — retried when the root parity proof lands. + // The InboxParity proof gates the sub-tree result too (it feeds the checkpoint root in the top tree). + const inboxParityProof = provingState.getInboxParityProof(); + if (!inboxParityProof) { + // Parity not proven yet — retried when the inbox parity proof lands. return; } this.subTreeResult.resolve({ blockProofOutputs: nonEmpty, - parityRootProof, + inboxParityProof, previousArchiveSiblingPath: provingState.getLastArchiveSiblingPath(), }); } diff --git a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts index 121957399ff8..d1174460d0e6 100644 --- a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts +++ b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts @@ -87,7 +87,7 @@ describe('prover/orchestrator/top-tree', () => { const topTreeData: CheckpointTopTreeData = { blockProofs: Promise.resolve({ blockProofOutputs: result.blockProofOutputs, - parityRootProof: result.parityRootProof, + inboxParityProof: result.inboxParityProof, }), l2ToL1MsgsPerBlock: fixture.blocks.map(b => b.txs.map(tx => tx.txEffect.l2ToL1Msgs)), blobFields: fixture.checkpoint.toBlobFields(), @@ -258,7 +258,7 @@ describe('prover/orchestrator/top-tree', () => { // A malformed block proof makes toProofData (inside buildCheckpointRootInputs) throw. const badData = { ...topTreeData, - blockProofs: Promise.resolve({ blockProofOutputs: [{} as any], parityRootProof: {} as any }), + blockProofs: Promise.resolve({ blockProofOutputs: [{} as any], inboxParityProof: {} as any }), } as CheckpointTopTreeData; const topTree = new TopTreeOrchestrator(context.prover, EthAddress.ZERO, makeTestDeferredJobQueue()); diff --git a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts index c44cdffc7c61..62ef6a662d2f 100644 --- a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts @@ -49,7 +49,7 @@ export type CheckpointTopTreeData = { BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[]; - parityRootProof: PublicInputsAndRecursiveProof; + inboxParityProof: PublicInputsAndRecursiveProof; }>; /** L2-to-L1 messages per block in the checkpoint, used to compute the out hash. */ l2ToL1MsgsPerBlock: Fr[][][]; @@ -181,7 +181,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { this.state, checkpointIndex, subTreeProofs.blockProofOutputs, - subTreeProofs.parityRootProof, + subTreeProofs.inboxParityProof, cd, outHashHints[i], checkpointStartBlobs[i], @@ -231,12 +231,12 @@ export class TopTreeOrchestrator extends ProvingScheduler { BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[], - parityRootProof: PublicInputsAndRecursiveProof, + inboxParityProof: PublicInputsAndRecursiveProof, cd: CheckpointTopTreeData, outHashHint: OutHashHint, startBlobAccumulator: BatchedBlobAccumulator, ) { - void this.buildCheckpointRootInputs(blockProofs, parityRootProof, cd, outHashHint, startBlobAccumulator).then( + void this.buildCheckpointRootInputs(blockProofs, inboxParityProof, cd, outHashHint, startBlobAccumulator).then( inputs => { this.deferredProving( state, @@ -273,7 +273,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[], - parityRootProof: PublicInputsAndRecursiveProof, + inboxParityProof: PublicInputsAndRecursiveProof, cd: CheckpointTopTreeData, outHashHint: OutHashHint, startBlobAccumulator: BatchedBlobAccumulator, @@ -292,11 +292,11 @@ export class TopTreeOrchestrator extends ProvingScheduler { blobsHash, }); - const parityRoot = toProofData(parityRootProof); + const inboxParity = toProofData(inboxParityProof); const proofDatas = blockProofs.map(p => toProofData(p)); return proofDatas.length === 1 - ? new CheckpointRootSingleBlockRollupPrivateInputs(proofDatas[0], parityRoot, hints) - : new CheckpointRootRollupPrivateInputs([proofDatas[0], proofDatas[1]], parityRoot, hints); + ? new CheckpointRootSingleBlockRollupPrivateInputs(proofDatas[0], inboxParity, hints) + : new CheckpointRootRollupPrivateInputs([proofDatas[0], proofDatas[1]], inboxParity, hints); } // --- internal: top-tree proof orchestration (formerly TopTreeProvingScheduler) --- diff --git a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.test.ts b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.test.ts index c73b1789583a..ce8dd828fc29 100644 --- a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.test.ts +++ b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.test.ts @@ -4,7 +4,7 @@ import { promiseWithResolvers } from '@aztec/foundation/promise'; import { retryFastUntil } from '@aztec/foundation/retry'; import { type ProvingJobStatus, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server'; import { makeRecursiveProof } from '@aztec/stdlib/proofs'; -import { makeParityBasePrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; +import { makeInboxParityPrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; import { VerificationKeyData } from '@aztec/stdlib/vks'; import { jest } from '@jest/globals'; @@ -40,33 +40,33 @@ describe('BrokerCircuitProverFacade', () => { }); it('sends jobs to the broker', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); jest.spyOn(broker, 'enqueueProvingJob'); - jest.spyOn(prover, 'getBaseParityProof'); + jest.spyOn(prover, 'getInboxParityProof'); jest.spyOn(errorProofStore, 'saveProofInput'); - await expect(facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42))).resolves.toBeDefined(); + await expect(facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42))).resolves.toBeDefined(); expect(broker.enqueueProvingJob).toHaveBeenCalled(); - expect(prover.getBaseParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); + expect(prover.getInboxParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); expect(errorProofStore.saveProofInput).not.toHaveBeenCalled(); }); it('handles multiple calls for the same job', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); const promises: Promise[] = []; const resultPromise = promiseWithResolvers(); jest.spyOn(broker, 'enqueueProvingJob'); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValue(resultPromise.promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValue(resultPromise.promise); // send N identical proof requests const CALLS = 50; for (let i = 0; i < CALLS; i++) { - promises.push(facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42))); + promises.push(facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42))); } // now we have 50 promises all waiting on the same result @@ -83,11 +83,11 @@ describe('BrokerCircuitProverFacade', () => { // the broker will only have been told about one of the calls expect(broker.enqueueProvingJob).toHaveBeenCalledTimes(1); - expect(prover.getBaseParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); + expect(prover.getInboxParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); // enqueue another N requests for the same jobs for (let i = 0; i < CALLS; i++) { - promises.push(facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42))); + promises.push(facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42))); } await Promise.all(promises); @@ -95,7 +95,7 @@ describe('BrokerCircuitProverFacade', () => { // the broker will have received one new request expect(broker.enqueueProvingJob).toHaveBeenCalledTimes(2); // but no new jobs where created - expect(prover.getBaseParityProof).toHaveBeenCalledTimes(1); + expect(prover.getInboxParityProof).toHaveBeenCalledTimes(1); // and all requests will have been resolved with the same result for (const promise of promises) { @@ -104,23 +104,23 @@ describe('BrokerCircuitProverFacade', () => { }); it('handles proof errors', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); const promises: Promise[] = []; const resultPromise = promiseWithResolvers(); jest.spyOn(broker, 'enqueueProvingJob'); - const getBaseParityProofSpy = jest.spyOn(prover, 'getBaseParityProof').mockReturnValue(resultPromise.promise); + const getInboxParityProofSpy = jest.spyOn(prover, 'getInboxParityProof').mockReturnValue(resultPromise.promise); jest.spyOn(errorProofStore, 'saveProofInput'); // send N identical proof requests const CALLS = 50; for (let i = 0; i < CALLS; i++) { // wrap the error in a resolved promises so that we don't have unhandled rejections - promises.push(facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err }))); + promises.push(facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err }))); } - await retryFastUntil(() => getBaseParityProofSpy.mock.calls.length > 0, 'prover to be called'); + await retryFastUntil(() => getInboxParityProofSpy.mock.calls.length > 0, 'prover to be called'); resultPromise.reject(new Error('TEST ERROR')); @@ -129,11 +129,11 @@ describe('BrokerCircuitProverFacade', () => { // the broker should only have been called once expect(broker.enqueueProvingJob).toHaveBeenCalledTimes(1); - expect(prover.getBaseParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); + expect(prover.getInboxParityProof).toHaveBeenCalledWith(inputs, expect.anything(), EpochNumber(42)); // enqueue another N requests for the same jobs for (let i = 0; i < CALLS; i++) { - promises.push(facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err }))); + promises.push(facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err }))); } // and all 2 * N requests will have been resolved with the same result @@ -144,23 +144,23 @@ describe('BrokerCircuitProverFacade', () => { // the broker will have received one new request expect(broker.enqueueProvingJob).toHaveBeenCalledTimes(2); // but no new jobs where created - expect(prover.getBaseParityProof).toHaveBeenCalledTimes(1); + expect(prover.getInboxParityProof).toHaveBeenCalledTimes(1); // and the proof input will have been backed up expect(errorProofStore.saveProofInput).toHaveBeenCalled(); }); it('handles aborts', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); const resultPromise = promiseWithResolvers(); jest.spyOn(broker, 'enqueueProvingJob'); - const getBaseParityProofSpy = jest.spyOn(prover, 'getBaseParityProof').mockReturnValue(resultPromise.promise); + const getInboxParityProofSpy = jest.spyOn(prover, 'getInboxParityProof').mockReturnValue(resultPromise.promise); jest.spyOn(errorProofStore, 'saveProofInput'); - const promise = facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err })); + const promise = facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err })); - await retryFastUntil(() => getBaseParityProofSpy.mock.calls.length > 0, 'prover to be called'); + await retryFastUntil(() => getInboxParityProofSpy.mock.calls.length > 0, 'prover to be called'); controller.abort(); @@ -169,14 +169,14 @@ describe('BrokerCircuitProverFacade', () => { }); it('rejects jobs when the facade is stopped', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); const resultPromise = promiseWithResolvers(); jest.spyOn(broker, 'enqueueProvingJob'); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValue(resultPromise.promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValue(resultPromise.promise); - const promise = facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err })); + const promise = facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42)).catch(err => ({ err })); await facade.stop(); @@ -185,13 +185,13 @@ describe('BrokerCircuitProverFacade', () => { // Regression test for #13166 it('handles stopping while sending a proof to the broker', async () => { - const inputs = makeParityBasePrivateInputs(); + const inputs = makeInboxParityPrivateInputs(); const controller = new AbortController(); // make sure the job hangs on waiting for the broker const enqueueJobPromise = promiseWithResolvers(); const enqueueProvingJobSpy = jest.spyOn(broker, 'enqueueProvingJob').mockReturnValue(enqueueJobPromise.promise); - const promise = facade.getBaseParityProof(inputs, controller.signal, EpochNumber(42)); + const promise = facade.getInboxParityProof(inputs, controller.signal, EpochNumber(42)); // now stop the facade after giving it time, which will trigger a rejection await retryFastUntil(() => enqueueProvingJobSpy.mock.calls.length > 0, 'broker to be called'); diff --git a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts index 921eda16106d..02f909cdb100 100644 --- a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts +++ b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts @@ -22,7 +22,7 @@ import { type ServerCircuitProver, makeProvingJobId, } from '@aztec/stdlib/interfaces/server'; -import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import type { InboxParityPrivateInputs, ParityPublicInputs } from '@aztec/stdlib/parity'; import { ProvingRequestType, RecursiveProof } from '@aztec/stdlib/proofs'; import type { BlockMergeRollupPrivateInputs, @@ -407,14 +407,14 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver { ); } - getBaseParityProof( - inputs: ParityBasePrivateInputs, + getInboxParityProof( + inputs: InboxParityPrivateInputs, signal?: AbortSignal, epochNumber?: EpochNumber, ): Promise> { return this.enqueueJob( - this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber), - ProvingRequestType.PARITY_BASE, + this.generateId(ProvingRequestType.INBOX_PARITY, inputs, epochNumber), + ProvingRequestType.INBOX_PARITY, inputs, epochNumber, signal, @@ -479,20 +479,6 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver { ); } - getRootParityProof( - inputs: ParityRootPrivateInputs, - signal?: AbortSignal, - epochNumber?: EpochNumber, - ): Promise> { - return this.enqueueJob( - this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber), - ProvingRequestType.PARITY_ROOT, - inputs, - epochNumber, - signal, - ); - } - getBlockRootFirstRollupProof( input: BlockRootFirstRollupPrivateInputs, signal?: AbortSignal, diff --git a/yarn-project/prover-client/src/proving_broker/fixtures.ts b/yarn-project/prover-client/src/proving_broker/fixtures.ts index ac1a5e3ddc89..9dea2a5c70dd 100644 --- a/yarn-project/prover-client/src/proving_broker/fixtures.ts +++ b/yarn-project/prover-client/src/proving_broker/fixtures.ts @@ -6,7 +6,7 @@ import { ProvingRequestType } from '@aztec/stdlib/proofs'; export function makeRandomProvingJobId(epochNumber?: EpochNumber): ProvingJobId { return makeProvingJobId( epochNumber ?? EpochNumber(1), - ProvingRequestType.PARITY_BASE, + ProvingRequestType.INBOX_PARITY, randomBytes(8).toString('hex'), ); } diff --git a/yarn-project/prover-client/src/proving_broker/proving_agent.test.ts b/yarn-project/prover-client/src/proving_broker/proving_agent.test.ts index d366982152d3..9403d7793dc2 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_agent.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_agent.test.ts @@ -15,7 +15,7 @@ import { } from '@aztec/stdlib/interfaces/server'; import type { ParityPublicInputs } from '@aztec/stdlib/parity'; import { ProvingRequestType, makeRecursiveProof } from '@aztec/stdlib/proofs'; -import { makeParityBasePrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; +import { makeInboxParityPrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; import { VerificationKeyData } from '@aztec/stdlib/vks'; import { jest } from '@jest/globals'; @@ -49,7 +49,7 @@ describe('ProvingAgent', () => { saveProofOutput: jest.fn(() => Promise.resolve('' as ProofUri)), }; - allowList = [ProvingRequestType.PARITY_BASE]; + allowList = [ProvingRequestType.INBOX_PARITY]; agent = new ProvingAgent(jobSource, proofDB, prover, allowList, agentPollIntervalMs); }); @@ -59,7 +59,7 @@ describe('ProvingAgent', () => { it('polls for jobs passing the permitted list of proofs', () => { agent.start(); - expect(jobSource.getProvingJob).toHaveBeenCalledWith({ allowList: [ProvingRequestType.PARITY_BASE] }); + expect(jobSource.getProvingJob).toHaveBeenCalledWith({ allowList: [ProvingRequestType.INBOX_PARITY] }); }); it('only takes a single job from the source at a time', async () => { @@ -68,7 +68,7 @@ describe('ProvingAgent', () => { // simulate the proof taking a long time const { promise, resolve } = promiseWithResolvers>(); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValueOnce(promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValueOnce(promise); const { job, time, inputs } = makeBaseParityJob(); jobSource.getProvingJob.mockResolvedValueOnce({ job, time }); @@ -103,7 +103,7 @@ describe('ProvingAgent', () => { const { job, time, inputs } = makeBaseParityJob(); const result = makeBaseParityResult(); - jest.spyOn(prover, 'getBaseParityProof').mockResolvedValueOnce(result); + jest.spyOn(prover, 'getInboxParityProof').mockResolvedValueOnce(result); jobSource.getProvingJob.mockResolvedValueOnce({ job, time }); proofDB.getProofInput.mockResolvedValueOnce(inputs); @@ -118,7 +118,7 @@ describe('ProvingAgent', () => { it('reports errors to the job source', async () => { const { job, time, inputs } = makeBaseParityJob(); - jest.spyOn(prover, 'getBaseParityProof').mockRejectedValueOnce(new Error('test error')); + jest.spyOn(prover, 'getInboxParityProof').mockRejectedValueOnce(new Error('test error')); jobSource.getProvingJob.mockResolvedValueOnce({ job, time }); proofDB.getProofInput.mockResolvedValueOnce(inputs); @@ -133,7 +133,7 @@ describe('ProvingAgent', () => { it('sets the retry flag on when reporting an error', async () => { const { job, time, inputs } = makeBaseParityJob(); const err = new ProvingError('test error', undefined, true); - jest.spyOn(prover, 'getBaseParityProof').mockRejectedValueOnce(err); + jest.spyOn(prover, 'getInboxParityProof').mockRejectedValueOnce(err); jobSource.getProvingJob.mockResolvedValueOnce({ job, time }); proofDB.getProofInput.mockResolvedValueOnce(inputs); @@ -149,7 +149,7 @@ describe('ProvingAgent', () => { const { job, time, inputs } = makeBaseParityJob(); const { promise, resolve } = promiseWithResolvers>(); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValueOnce(promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValueOnce(promise); jobSource.getProvingJob.mockResolvedValueOnce({ job, time }); proofDB.getProofInput.mockResolvedValueOnce(inputs); @@ -157,12 +157,12 @@ describe('ProvingAgent', () => { await jest.advanceTimersByTimeAsync(agentPollIntervalMs); expect(jobSource.reportProvingJobProgress).toHaveBeenCalledWith(job.id, time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }); await jest.advanceTimersByTimeAsync(agentPollIntervalMs); expect(jobSource.reportProvingJobProgress).toHaveBeenCalledWith(job.id, time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }); resolve(makeBaseParityResult()); @@ -175,7 +175,7 @@ describe('ProvingAgent', () => { promiseWithResolvers>(); // simulate a long running proving job that can be aborted - jest.spyOn(prover, 'getBaseParityProof').mockImplementationOnce((_, signal) => { + jest.spyOn(prover, 'getInboxParityProof').mockImplementationOnce((_, signal) => { signal?.addEventListener('abort', () => { firstProof.reject(new AbortError('test abort')); firstProofAborted = true; @@ -191,7 +191,7 @@ describe('ProvingAgent', () => { await jest.advanceTimersByTimeAsync(agentPollIntervalMs); expect(jobSource.reportProvingJobProgress).toHaveBeenCalledTimes(1); expect(jobSource.reportProvingJobProgress).toHaveBeenCalledWith(firstJob.job.id, firstJob.time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }); await jest.advanceTimersByTimeAsync(agentPollIntervalMs); @@ -205,21 +205,21 @@ describe('ProvingAgent', () => { const secondProof = promiseWithResolvers>(); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValueOnce(secondProof.promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValueOnce(secondProof.promise); jobSource.reportProvingJobProgress.mockResolvedValueOnce(secondJobResponse); await jest.advanceTimersByTimeAsync(agentPollIntervalMs); expect(jobSource.reportProvingJobProgress).toHaveBeenCalledTimes(4); expect(jobSource.reportProvingJobProgress).toHaveBeenNthCalledWith(3, firstJob.job.id, firstJob.time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }); expect(jobSource.reportProvingJobProgress).toHaveBeenNthCalledWith( 4, secondJobResponse.job.id, secondJobResponse.time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }, ); expect(firstProofAborted).toBe(true); @@ -231,7 +231,7 @@ describe('ProvingAgent', () => { secondJobResponse.job.id, secondJobResponse.time, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }, ); }); @@ -241,7 +241,7 @@ describe('ProvingAgent', () => { const job2 = makeBaseParityJob(); jest - .spyOn(prover, 'getBaseParityProof') + .spyOn(prover, 'getInboxParityProof') .mockResolvedValueOnce(makeBaseParityResult()) .mockResolvedValueOnce(makeBaseParityResult()); @@ -265,7 +265,7 @@ describe('ProvingAgent', () => { const job2 = makeBaseParityJob(); jest - .spyOn(prover, 'getBaseParityProof') + .spyOn(prover, 'getInboxParityProof') .mockRejectedValueOnce(new Error('test error')) .mockResolvedValueOnce(makeBaseParityResult()); @@ -297,11 +297,11 @@ describe('ProvingAgent', () => { function makeBaseParityJob(): { job: ProvingJob; time: number; inputs: ProvingJobInputs } { const time = jest.now(); - const inputs: ProvingJobInputs = { type: ProvingRequestType.PARITY_BASE, inputs: makeParityBasePrivateInputs() }; + const inputs: ProvingJobInputs = { type: ProvingRequestType.INBOX_PARITY, inputs: makeInboxParityPrivateInputs() }; const job: ProvingJob = { id: randomBytes(8).toString('hex') as ProvingJobId, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: randomBytes(8).toString('hex') as ProofUri, }; diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts index b2a2b5ebda39..8faf165bcce7 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts @@ -83,7 +83,7 @@ describe.each([ await broker.enqueueProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); expect(await broker.getProvingJobStatus(id)).toEqual({ status: 'in-queue' }); @@ -105,7 +105,7 @@ describe.each([ const enqueueStatus = await broker.enqueueProvingJob({ id, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); expect(enqueueStatus).toEqual({ status: 'not-found' }); @@ -125,7 +125,7 @@ describe.each([ it('ignores duplicate jobs', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -139,7 +139,7 @@ describe.each([ it('reports correct status when enqueuing repeat jobs', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -172,14 +172,14 @@ describe.each([ await broker.enqueueProvingJob({ id, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); await expect( broker.enqueueProvingJob({ id, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ).rejects.toThrow('Duplicate proving job ID'); @@ -195,7 +195,7 @@ describe.each([ await broker.enqueueProvingJob({ id, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); await assertJobStatus(id, 'in-queue'); @@ -209,7 +209,7 @@ describe.each([ await broker.enqueueProvingJob({ id, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); await assertJobStatus(id, 'in-queue'); @@ -350,7 +350,7 @@ describe.each([ it('returns job result if successful', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -366,7 +366,7 @@ describe.each([ it('returns job error if failed', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -382,7 +382,7 @@ describe.each([ it('correctly returns job status for concurrent writes', async () => { const job = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(0), inputsUri: makeInputsUri(), }; @@ -394,7 +394,7 @@ describe.each([ promises.push( broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(0), inputsUri: makeInputsUri(), }), @@ -403,7 +403,7 @@ describe.each([ promises.push( broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(0), inputsUri: makeInputsUri(), }), @@ -420,21 +420,21 @@ describe.each([ describe('Consumer API', () => { it('returns undefined if no jobs are available', async () => { - const provingJob = await broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] }); + const provingJob = await broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] }); expect(provingJob).toBeUndefined(); }); it('returns jobs in priority order', async () => { const provingJob1: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; const provingJob2: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }; @@ -442,13 +442,13 @@ describe.each([ await broker.enqueueProvingJob(provingJob2); await broker.enqueueProvingJob(provingJob1); - await getAndAssertNextJobId(provingJob1.id, ProvingRequestType.PARITY_BASE); + await getAndAssertNextJobId(provingJob1.id, ProvingRequestType.INBOX_PARITY); }); it('returns undefined if no jobs are available for the given allowList', async () => { await broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -462,7 +462,7 @@ describe.each([ const baseParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: baseParity1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -486,19 +486,19 @@ describe.each([ const rootParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: rootParity1, - type: ProvingRequestType.PARITY_ROOT, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); - await getAndAssertNextJobId(baseParity1, ProvingRequestType.PARITY_BASE); + await getAndAssertNextJobId(baseParity1, ProvingRequestType.INBOX_PARITY); }); it('returns the most important job if it is in the allowList', async () => { const baseParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: baseParity1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -522,16 +522,16 @@ describe.each([ const rootParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: rootParity1, - type: ProvingRequestType.PARITY_ROOT, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await getAndAssertNextJobId( baseRollup1, - ProvingRequestType.PARITY_BASE, + ProvingRequestType.INBOX_PARITY, ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, - ProvingRequestType.PARITY_ROOT, + ProvingRequestType.INBOX_PARITY, ); }); @@ -562,7 +562,7 @@ describe.each([ const baseParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: baseParity1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -586,7 +586,7 @@ describe.each([ const rootParity1 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: rootParity1, - type: ProvingRequestType.PARITY_ROOT, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -598,7 +598,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -608,12 +608,12 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await expect( - broker.reportProvingJobSuccess(id, 'result' as ProofUri, { allowList: [ProvingRequestType.PARITY_BASE] }), + broker.reportProvingJobSuccess(id, 'result' as ProofUri, { allowList: [ProvingRequestType.INBOX_PARITY] }), ).resolves.toEqual({ job: expect.objectContaining({ id: id2 }), time: expect.any(Number) }); }); @@ -621,7 +621,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -631,12 +631,12 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await expect( - broker.reportProvingJobError(id, 'result' as ProofUri, false, { allowList: [ProvingRequestType.PARITY_BASE] }), + broker.reportProvingJobError(id, 'result' as ProofUri, false, { allowList: [ProvingRequestType.INBOX_PARITY] }), ).resolves.toEqual({ job: expect.objectContaining({ id: id2 }), time: expect.any(Number) }); }); @@ -644,7 +644,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -654,12 +654,12 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await expect( - broker.reportProvingJobError(id, 'result' as ProofUri, true, { allowList: [ProvingRequestType.PARITY_BASE] }), + broker.reportProvingJobError(id, 'result' as ProofUri, true, { allowList: [ProvingRequestType.INBOX_PARITY] }), ).resolves.toEqual({ job: expect.objectContaining({ id: id2 }), time: expect.any(Number) }); }); @@ -667,7 +667,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -679,12 +679,12 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await expect( - broker.reportProvingJobProgress(id, now(), { allowList: [ProvingRequestType.PARITY_BASE] }), + broker.reportProvingJobProgress(id, now(), { allowList: [ProvingRequestType.INBOX_PARITY] }), ).resolves.toEqual({ job: expect.objectContaining({ id: id2 }), time: expect.any(Number) }); }); @@ -693,14 +693,14 @@ describe.each([ // this test simulates the broker crashing and when it comes back online it has two agents working the same job const job1: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; const job2: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }; @@ -709,7 +709,7 @@ describe.each([ await broker.enqueueProvingJob(job2); const { job: firstAgentJob, time: firstAgentStartedAt } = (await broker.getProvingJob({ - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }))!; expect(firstAgentJob).toEqual(job1); @@ -718,7 +718,7 @@ describe.each([ await sleep(jobTimeoutMs / 2); await expect( broker.reportProvingJobProgress(job1.id, firstAgentStartedAt, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }), ).resolves.toBeUndefined(); @@ -734,7 +734,7 @@ describe.each([ await assertJobStatus(job1.id, 'in-queue'); const { job: secondAgentJob, time: secondAgentStartedAt } = (await broker.getProvingJob({ - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }))!; // should be the same job! @@ -745,14 +745,14 @@ describe.each([ // and it should take over the job from the second agent await expect( broker.reportProvingJobProgress(job1.id, firstAgentStartedAt, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }), ).resolves.toBeUndefined(); // second agent should get a new job now await expect( broker.reportProvingJobProgress(job1.id, secondAgentStartedAt, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }), ).resolves.toEqual({ job: job2, time: expect.any(Number) }); }); @@ -762,14 +762,14 @@ describe.each([ // this test simulates the broker crashing and when it comes back online it has two agents working the same job const job1: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; const job2: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }; @@ -778,7 +778,7 @@ describe.each([ await broker.enqueueProvingJob(job2); const { job: firstAgentJob, time: firstAgentStartedAt } = (await broker.getProvingJob({ - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }))!; expect(firstAgentJob).toEqual(job1); @@ -799,12 +799,12 @@ describe.each([ // and it should take over the job from the second agent await expect( broker.reportProvingJobProgress(job1.id, firstAgentStartedAt, { - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }), ).resolves.toBeUndefined(); const { job: secondAgentJob } = (await broker.getProvingJob({ - allowList: [ProvingRequestType.PARITY_BASE], + allowList: [ProvingRequestType.INBOX_PARITY], }))!; // should be the same job! @@ -818,14 +818,14 @@ describe.each([ // this test simulates the broker crashing and when it comes back online it has two agents working the same job const job1: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; const job2: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }; @@ -862,13 +862,13 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }); @@ -891,13 +891,13 @@ describe.each([ const id2 = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); await broker.enqueueProvingJob({ id: id2, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(2), inputsUri: makeInputsUri(), }); @@ -929,14 +929,14 @@ describe.each([ const provingJob1: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; const provingJob2: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -979,7 +979,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -993,7 +993,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1011,7 +1011,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1033,7 +1033,7 @@ describe.each([ // epoch has advanced await broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(10), inputsUri: makeInputsUri(), }); @@ -1047,7 +1047,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1071,7 +1071,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1082,7 +1082,7 @@ describe.each([ // Advance the epoch height so epoch 1 becomes stale (oldestEpochToKeep = 3 - 1 = 2) await broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(3), inputsUri: makeInputsUri(), }); @@ -1099,7 +1099,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1137,7 +1137,7 @@ describe.each([ it('retries jobs', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -1156,7 +1156,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1178,7 +1178,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1196,7 +1196,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1215,7 +1215,7 @@ describe.each([ // advance the epoch height await broker.enqueueProvingJob({ id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(3), inputsUri: makeInputsUri(), }); @@ -1243,7 +1243,7 @@ describe.each([ await database.addProvingJob({ id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1261,10 +1261,10 @@ describe.each([ await expect(broker.getProvingJobStatus(id1)).resolves.toEqual({ status: 'in-queue' }); await expect(broker.getProvingJobStatus(id2)).resolves.toEqual({ status: 'in-queue' }); - await expect(broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] })).resolves.toEqual({ + await expect(broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] })).resolves.toEqual({ job: { id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: expect.any(String), }, @@ -1294,7 +1294,7 @@ describe.each([ await database.addProvingJob({ id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1328,7 +1328,7 @@ describe.each([ await database.addProvingJob({ id: id1, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1353,7 +1353,7 @@ describe.each([ await broker.start(); const job: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -1372,7 +1372,7 @@ describe.each([ await expect( broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }), @@ -1385,7 +1385,7 @@ describe.each([ const job: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -1404,7 +1404,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1420,7 +1420,7 @@ describe.each([ await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1437,7 +1437,7 @@ describe.each([ const id = makeRandomProvingJobId(); await broker.enqueueProvingJob({ id, - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }); @@ -1484,7 +1484,7 @@ describe.each([ await broker.enqueueProvingJob({ id: id1, epochNumber: EpochNumber(1), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: '' as ProofUri, }); await broker.reportProvingJobSuccess(id1, '' as ProofUri); @@ -1493,7 +1493,7 @@ describe.each([ await broker.enqueueProvingJob({ id: id2, epochNumber: EpochNumber(2), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: '' as ProofUri, }); await broker.reportProvingJobSuccess(id2, '' as ProofUri); @@ -1507,7 +1507,7 @@ describe.each([ await broker.enqueueProvingJob({ id: id3, epochNumber: EpochNumber(3), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: '' as ProofUri, }); @@ -1521,7 +1521,7 @@ describe.each([ await broker.enqueueProvingJob({ id: id4, epochNumber: EpochNumber(4), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: '' as ProofUri, }); @@ -1536,7 +1536,7 @@ describe.each([ await broker.enqueueProvingJob({ id: id5, epochNumber: EpochNumber(5), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: '' as ProofUri, }); diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker.ts b/yarn-project/prover-client/src/proving_broker/proving_broker.ts index 3de09ebc4565..c15a0da446c0 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker.ts @@ -66,8 +66,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Pr [ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: new PriorityMemoryQueue(provingJobComparator), [ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: new PriorityMemoryQueue(provingJobComparator), - [ProvingRequestType.PARITY_BASE]: new PriorityMemoryQueue(provingJobComparator), - [ProvingRequestType.PARITY_ROOT]: new PriorityMemoryQueue(provingJobComparator), + [ProvingRequestType.INBOX_PARITY]: new PriorityMemoryQueue(provingJobComparator), }; // holds a copy of the database in memory in order to quickly fulfill requests @@ -820,6 +819,5 @@ export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, ProvingRequestType.PUBLIC_VM, ProvingRequestType.PUBLIC_CHONK_VERIFIER, - ProvingRequestType.PARITY_ROOT, - ProvingRequestType.PARITY_BASE, + ProvingRequestType.INBOX_PARITY, ]; diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker_agent_integration.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker_agent_integration.test.ts index e52e3791c04c..f023de614806 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker_agent_integration.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker_agent_integration.test.ts @@ -6,7 +6,7 @@ import { promiseWithResolvers } from '@aztec/foundation/promise'; import { sleep } from '@aztec/foundation/sleep'; import { ProvingJob, makeProvingJobId } from '@aztec/stdlib/interfaces/server'; import { ProvingRequestType } from '@aztec/stdlib/proofs'; -import { makeParityBasePrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; +import { makeInboxParityPrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; import { jest } from '@jest/globals'; @@ -63,9 +63,9 @@ describe('ProvingBroker <-> ProvingAgent integration', () => { const duplicateJobs: string[] = []; - jest.spyOn(prover, 'getBaseParityProof').mockImplementation((inputs, signal) => { + jest.spyOn(prover, 'getInboxParityProof').mockImplementation((inputs, signal) => { const inputsHash = sha256(inputs.toBuffer()); - const id = makeProvingJobId(EpochNumber(0), ProvingRequestType.PARITY_BASE, inputsHash.toString('hex')); + const id = makeProvingJobId(EpochNumber(0), ProvingRequestType.INBOX_PARITY, inputsHash.toString('hex')); // job was given to two agents if (deferreds[id]) { duplicateJobs.push(id); @@ -78,17 +78,17 @@ describe('ProvingBroker <-> ProvingAgent integration', () => { const enqueueRandomJob = async () => { while (true) { - const inputs = makeParityBasePrivateInputs(randomInt(Number.MAX_SAFE_INTEGER)); + const inputs = makeInboxParityPrivateInputs(randomInt(Number.MAX_SAFE_INTEGER)); const inputsHash = sha256(inputs.toBuffer()); - const id = makeProvingJobId(EpochNumber(0), ProvingRequestType.PARITY_BASE, inputsHash.toString('hex')); + const id = makeProvingJobId(EpochNumber(0), ProvingRequestType.INBOX_PARITY, inputsHash.toString('hex')); if (jobs[id]) { continue; } jobs[id] = { id, - type: ProvingRequestType.PARITY_BASE, - inputsUri: await store.saveProofInput(id, ProvingRequestType.PARITY_BASE, inputs), + type: ProvingRequestType.INBOX_PARITY, + inputsUri: await store.saveProofInput(id, ProvingRequestType.INBOX_PARITY, inputs), epochNumber: EpochNumber(0), }; await broker.enqueueProvingJob(jobs[id]); diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker_agent_rpc_integration.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker_agent_rpc_integration.test.ts index e71eebaf0f8b..d8b2a9ae4600 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker_agent_rpc_integration.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker_agent_rpc_integration.test.ts @@ -38,14 +38,14 @@ describe('ProvingBroker RPC', () => { const inputsUri = isSmall ? makeInputsUri() : (randomBytes(2000).toString('hex') as ProofUri); const job: ProvingJob = { id: makeRandomProvingJobId(EpochNumber(1)), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri, epochNumber: EpochNumber(1), }; await client.enqueueProvingJob(job); - const retrievedJob = await client.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] }); + const retrievedJob = await client.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] }); expect(retrievedJob?.job.id).toBe(job.id); expect(retrievedJob?.job.inputsUri).toBe(inputsUri); } finally { diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts index 3cd951fcc6db..429ea784ab0b 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts @@ -52,7 +52,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ).resolves.not.toThrow(); @@ -66,7 +66,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ).resolves.not.toThrow(); @@ -79,7 +79,7 @@ describe('ProvingBrokerPersistedDatabase', () => { await db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); await expect(db.setProvingJobResult(id, 'Proof' as ProofUri)).resolves.not.toThrow(); @@ -91,7 +91,7 @@ describe('ProvingBrokerPersistedDatabase', () => { await db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); @@ -108,7 +108,7 @@ describe('ProvingBrokerPersistedDatabase', () => { await db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); @@ -121,7 +121,7 @@ describe('ProvingBrokerPersistedDatabase', () => { await db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); @@ -163,7 +163,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ).resolves.not.toThrow(); @@ -181,7 +181,7 @@ describe('ProvingBrokerPersistedDatabase', () => { const job: ProvingJob = { id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }; await db.addProvingJob(job); @@ -211,7 +211,7 @@ describe('ProvingBrokerPersistedDatabase', () => { await db.addProvingJob({ id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }); epochs.push(startEpoch + i); @@ -228,7 +228,7 @@ describe('ProvingBrokerPersistedDatabase', () => { const job: ProvingJob = { id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }; await db.addProvingJob(job); @@ -273,7 +273,7 @@ describe('ProvingBrokerPersistedDatabase', () => { const job: ProvingJob = { id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }; await db.addProvingJob(job); @@ -313,7 +313,7 @@ describe('ProvingBrokerPersistedDatabase', () => { const job: ProvingJob = { id, epochNumber: EpochNumber(startEpoch + i), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }; await db.addProvingJob(job); @@ -378,7 +378,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ); @@ -405,7 +405,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id: makeRandomProvingJobId(EpochNumber(42)), epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ); @@ -413,7 +413,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id: makeRandomProvingJobId(EpochNumber(42)), epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ); @@ -421,7 +421,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id: makeRandomProvingJobId(EpochNumber(42)), epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ); @@ -439,7 +439,7 @@ describe('ProvingBrokerPersistedDatabase', () => { db.addProvingJob({ id: makeRandomProvingJobId(EpochNumber(42)), epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }), ); diff --git a/yarn-project/prover-client/src/proving_broker/proving_job_controller.test.ts b/yarn-project/prover-client/src/proving_broker/proving_job_controller.test.ts index 3b48fe70226f..a4e4d944b35d 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_job_controller.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_job_controller.test.ts @@ -5,7 +5,7 @@ import { promiseWithResolvers } from '@aztec/foundation/promise'; import { sleep } from '@aztec/foundation/sleep'; import { type ProvingJobId, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server'; import { ProvingRequestType, makeRecursiveProof } from '@aztec/stdlib/proofs'; -import { makeParityBasePrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; +import { makeInboxParityPrivateInputs, makeParityPublicInputs } from '@aztec/stdlib/testing'; import { VerificationKeyData } from '@aztec/stdlib/vks'; import { jest } from '@jest/globals'; @@ -24,8 +24,8 @@ describe('ProvingJobController', () => { controller = new ProvingJobController( '1' as ProvingJobId, { - type: ProvingRequestType.PARITY_BASE, - inputs: makeParityBasePrivateInputs(), + type: ProvingRequestType.INBOX_PARITY, + inputs: makeInboxParityPrivateInputs(), }, EpochNumber(0), 42, @@ -63,7 +63,7 @@ describe('ProvingJobController', () => { makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk(), ); - jest.spyOn(prover, 'getBaseParityProof').mockResolvedValueOnce(resp); + jest.spyOn(prover, 'getInboxParityProof').mockResolvedValueOnce(resp); controller.start(); await sleep(1); // give promises a chance to complete @@ -73,7 +73,7 @@ describe('ProvingJobController', () => { it('calls onComplete with the error', async () => { const err = new Error('test error'); - jest.spyOn(prover, 'getBaseParityProof').mockRejectedValueOnce(err); + jest.spyOn(prover, 'getInboxParityProof').mockRejectedValueOnce(err); controller.start(); await sleep(1); @@ -95,7 +95,7 @@ describe('ProvingJobController', () => { it('calls onComplete if abort is called but result is masked', async () => { const { promise, resolve } = promiseWithResolvers(); - jest.spyOn(prover, 'getBaseParityProof').mockReturnValueOnce(promise); + jest.spyOn(prover, 'getInboxParityProof').mockReturnValueOnce(promise); controller.start(); diff --git a/yarn-project/prover-client/src/proving_broker/proving_job_controller.ts b/yarn-project/prover-client/src/proving_broker/proving_job_controller.ts index f9517cb227fd..74f3e41bfa43 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_job_controller.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_job_controller.ts @@ -198,12 +198,8 @@ export class ProvingJobController { return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber); } - case ProvingRequestType.PARITY_BASE: { - return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber); - } - - case ProvingRequestType.PARITY_ROOT: { - return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber); + case ProvingRequestType.INBOX_PARITY: { + return await this.circuitProver.getInboxParityProof(inputs, signal, this.epochNumber); } default: { diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index 716d1dd97014..bfbad4b2ff03 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -105,7 +105,7 @@ describe('prover/bb_prover/full-rollup', () => { topTreeData.push({ blockProofs: subTree .getSubTreeResult() - .then(r => ({ blockProofOutputs: r.blockProofOutputs, parityRootProof: r.parityRootProof })), + .then(r => ({ blockProofOutputs: r.blockProofOutputs, inboxParityProof: r.inboxParityProof })), l2ToL1MsgsPerBlock: blocks.map(b => b.txs.map(tx => tx.txEffect.l2ToL1Msgs)), blobFields: checkpoint.toBlobFields(), previousBlockHeader, diff --git a/yarn-project/prover-client/src/test/bb_prover_parity.test.ts b/yarn-project/prover-client/src/test/bb_prover_parity.test.ts index efa1724029a1..3116317db60d 100644 --- a/yarn-project/prover-client/src/test/bb_prover_parity.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_parity.test.ts @@ -1,28 +1,24 @@ import { BBNativeRollupProver, type BBProverConfig } from '@aztec/bb-prover'; -import { - NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, - NUM_BASE_PARITY_PER_ROOT_PARITY, - NUM_MSGS_PER_BASE_PARITY, - PARITY_BASE_VK_INDEX, - RECURSIVE_PROOF_LENGTH, -} from '@aztec/constants'; -import { makeTuple } from '@aztec/foundation/array'; import { parseBooleanEnv } from '@aztec/foundation/config'; -import { randomBytes } from '@aztec/foundation/crypto/random'; import { Fr } from '@aztec/foundation/curves/bn254'; import { createLogger } from '@aztec/foundation/log'; +import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server'; import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; -import { L1ToL2MessageSponge, accumulateInboxRollingHash } from '@aztec/stdlib/messaging'; -import { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; -import { makeRecursiveProof } from '@aztec/stdlib/proofs'; -import { VerificationKeyData } from '@aztec/stdlib/vks'; +import { L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; +import { INBOX_PARITY_SIZES, InboxParityPrivateInputs, type InboxParitySize } from '@aztec/stdlib/parity'; import { TestContext } from '../mocks/test_context.js'; -import { toProofData } from '../orchestrator/block-building-helpers.js'; const logger = createLogger('prover-client:test:bb-prover-parity'); +// Maps a ladder size to its server artifact name, mirroring the bb-prover's own selection. +const artifactForSize: Record = { + 64: 'InboxParity64Artifact', + 256: 'InboxParity256Artifact', + 1024: 'InboxParity1024Artifact', +}; + describe('prover/bb_prover/parity', () => { const FAKE_PROOFS = parseBooleanEnv(process.env.FAKE_PROOFS); @@ -31,7 +27,7 @@ describe('prover/bb_prover/parity', () => { beforeAll(async () => { const buildProver = async (bbConfig: BBProverConfig) => { - bbConfig.circuitFilter = ['ParityBaseArtifact', 'ParityRootArtifact']; + bbConfig.circuitFilter = Object.values(artifactForSize); bbProver = await BBNativeRollupProver.new(bbConfig); return bbProver; }; @@ -45,146 +41,33 @@ describe('prover/bb_prover/parity', () => { await context.cleanup(); }); - it( - 'proves the parity circuits', - async () => { - const l1ToL2Messages = new Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(null).map(() => Fr.random()); + // One InboxParity proof per checkpoint, sized to the smallest ladder rung that fits. Prove and verify each rung. + it.each(INBOX_PARITY_SIZES)( + 'proves and verifies the inbox parity circuit at size %i', + async size => { + // Fill the rung with real messages so `numMessages === size` (the largest circuit for that rung). + const messages = Array.from({ length: size }, () => Fr.random()); const proverId = Fr.random(); - // Thread the message sponge across the four base segments (base i starts from the sponge over the first i chunks). - const baseStartSponges: L1ToL2MessageSponge[] = []; - let runningSponge = L1ToL2MessageSponge.empty(); - for (let i = 0; i < NUM_BASE_PARITY_PER_ROOT_PARITY; i++) { - baseStartSponges.push(runningSponge.clone()); - runningSponge = runningSponge.clone(); - await runningSponge.absorb( - l1ToL2Messages.slice(i * NUM_MSGS_PER_BASE_PARITY, (i + 1) * NUM_MSGS_PER_BASE_PARITY), - ); - } - const baseParityInputs = makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, i => - ParityBasePrivateInputs.fromSlice( - l1ToL2Messages, - i, - accumulateInboxRollingHash(Fr.ZERO, l1ToL2Messages.slice(0, i * NUM_MSGS_PER_BASE_PARITY)), - baseStartSponges[i], - NUM_MSGS_PER_BASE_PARITY, - getVKTreeRoot(), - proverId, - ), - ); - - // Generate the base parity proofs - const baseParityProofsAndPublicInputs = await Promise.all( - baseParityInputs.map(baseInputs => context.prover.getBaseParityProof(baseInputs)), + const inHash = Fr.random(); + + const inputs = InboxParityPrivateInputs.fromMessages( + messages, + Fr.ZERO, + L1ToL2MessageSponge.empty(), + inHash, + getVKTreeRoot(), + proverId, ); + expect(inputs.size).toBe(size); - const rootInputs = makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, i => { - const inputs = baseParityProofsAndPublicInputs[i]; - return toProofData(inputs); - }); + const output = await context.prover.getInboxParityProof(inputs); - // These could differ if artifacts generated by `generate_vk_json.js` are not consistent with what we do, - // which would cause the root parity proof to fail, because the proof of VK root inclusion would not match the key in the proof. - expect(ServerCircuitVks.ParityBaseArtifact.keyAsFields.hash).toEqual(rootInputs[0].vkData.vk.keyAsFields.hash); + const artifact = artifactForSize[size as InboxParitySize]; + // Sanity: the VK the proof was generated against is the one in the vk tree for this rung. + expect(ServerCircuitVks[artifact].keyAsFields.hash).toEqual(output.verificationKey.keyAsFields.hash); - // Verify the base parity proofs if (bbProver) { - await expect( - Promise.all( - baseParityProofsAndPublicInputs.map(input => - bbProver!.verifyProof('ParityBaseArtifact', input.proof.binaryProof), - ), - ), - ).resolves.not.toThrow(); - } - - // Now generate the root parity proof - const rootParityInputs = new ParityRootPrivateInputs(rootInputs); - const rootOutput = await context.prover.getRootParityProof(rootParityInputs); - - // We only test validity and negative proofs with actual proofs enabled - if (!bbProver) { - return; - } - - // Verify the root parity proof - await expect(bbProver.verifyProof('ParityRootArtifact', rootOutput.proof.binaryProof)).resolves.not.toThrow(); - - // Now test for negative cases. We will try and generate 3 invalid proofs. - // One where a single child has an invalid proof - // One where a child has incorrect public inputs - // One where a child has an invalid verification key - // In each case either the proof should fail to generate or verify - - const validVk = rootParityInputs.children[0].vkData.vk; - const validPublicInputs = rootParityInputs.children[0].publicInputs; - const validProof = rootParityInputs.children[0].proof; - - const defectiveProofInput = toProofData({ - inputs: validPublicInputs, - proof: makeRecursiveProof(RECURSIVE_PROOF_LENGTH, 0x500), - verificationKey: validVk, - }); - - const shaRoot = randomBytes(32); - shaRoot[0] = 0; - - const defectivePublicInputs = toProofData({ - inputs: new ParityPublicInputs( - Fr.fromBuffer(shaRoot), - Fr.random(), - Fr.random(), - Fr.random(), - L1ToL2MessageSponge.empty(), - L1ToL2MessageSponge.empty(), - 0, - getVKTreeRoot(), - proverId, - ), - proof: validProof, - verificationKey: validVk, - }); - - const defectiveVerificationKey = toProofData( - { - inputs: validPublicInputs, - proof: validProof, - verificationKey: VerificationKeyData.makeFakeHonk(), - }, - PARITY_BASE_VK_INDEX, - ); - - const tupleWithDefectiveProof = makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, (i: number) => { - if (i == 0) { - return defectiveProofInput; - } - return rootParityInputs.children[i]; - }); - - const tupleWithDefectiveInputs = makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, (i: number) => { - if (i == 0) { - return defectivePublicInputs; - } - return rootParityInputs.children[i]; - }); - - const tupleWithDefectiveVK = makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, (i: number) => { - if (i == 0) { - return defectiveVerificationKey; - } - return rootParityInputs.children[i]; - }); - - // Check the invalid VK scenario with an invalid witness assertion - await expect( - context.prover.getRootParityProof(new ParityRootPrivateInputs(tupleWithDefectiveVK)), - ).rejects.toThrow('Failed to generate witness'); - - for (const t of [tupleWithDefectiveProof, tupleWithDefectiveInputs]) { - await expect(async () => { - const result = await context.prover.getRootParityProof(new ParityRootPrivateInputs(t)); - await bbProver!.verifyProof('ParityRootArtifact', result.proof.binaryProof); - fail('Proof should not be generated and verified'); - }).rejects.toThrow(/Failed to generate proof|Failed to verify proof/); + await expect(bbProver.verifyProof(artifact, output.proof.binaryProof)).resolves.not.toThrow(); } }, FAKE_PROOFS ? undefined : 600_000, diff --git a/yarn-project/prover-client/src/test/epoch_proving_sim.test.ts b/yarn-project/prover-client/src/test/epoch_proving_sim.test.ts index a83b8ced6935..2954b2e5fa3b 100644 --- a/yarn-project/prover-client/src/test/epoch_proving_sim.test.ts +++ b/yarn-project/prover-client/src/test/epoch_proving_sim.test.ts @@ -1,5 +1,4 @@ import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from '@aztec/bb-prover/test'; -import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants'; import { insertIntoSortedArray } from '@aztec/foundation/array'; import { times } from '@aztec/foundation/collection'; import { ProvingRequestType } from '@aztec/stdlib/proofs'; @@ -25,8 +24,7 @@ const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, ProvingRequestType.PUBLIC_VM, ProvingRequestType.PUBLIC_CHONK_VERIFIER, - ProvingRequestType.PARITY_ROOT, - ProvingRequestType.PARITY_BASE, // Lowest priority + ProvingRequestType.INBOX_PARITY, // Lowest priority ]; // Job represents a proving task with its hierarchical context @@ -66,9 +64,8 @@ type TestConfig = { // State tracking for dependency resolution type SimState = { - // Parity tracking (per checkpoint, first block only) - baseParityComplete: Map; - rootParityComplete: Map; + // Parity tracking: one InboxParity proof per checkpoint, gating the first block root. + inboxParityComplete: Map; // Public tx dependency tracking (aggregate per block) // Key format: "checkpoint-block" @@ -243,8 +240,7 @@ function getBlockTxCount(block: Block): { privateTxs: number; publicTxs: number; function initializeState(checkpoints: Checkpoint[]): SimState { const state: SimState = { - baseParityComplete: new Map(), - rootParityComplete: new Map(), + inboxParityComplete: new Map(), vmComplete: new Map(), chonkComplete: new Map(), publicBaseEnqueued: new Map(), @@ -267,8 +263,7 @@ function initializeState(checkpoints: Checkpoint[]): SimState { for (let cp = 1; cp <= checkpoints.length; cp++) { const blocks = checkpoints[cp - 1]; state.blocksPerCheckpoint.set(cp, blocks.length); - state.baseParityComplete.set(cp, 0); - state.rootParityComplete.set(cp, false); + state.inboxParityComplete.set(cp, false); state.blockRootComplete.set(cp, false); state.checkpointRootComplete.set(cp, false); @@ -300,10 +295,8 @@ function fillQueue(queues: Queues, checkpoints: Checkpoint[]): void { for (let cp = 1; cp <= checkpoints.length; cp++) { const blocks = checkpoints[cp - 1]; - // assume every checkpoint includes cross-chain messages - queues[ProvingRequestType.PARITY_BASE].push( - ...times(NUM_BASE_PARITY_PER_ROOT_PARITY, () => createJob(cp, 1, ProvingRequestType.PARITY_BASE)), - ); + // assume every checkpoint includes cross-chain messages: one InboxParity proof per checkpoint + queues[ProvingRequestType.INBOX_PARITY].push(createJob(cp, 1, ProvingRequestType.INBOX_PARITY)); for (let b = 1; b <= blocks.length; b++) { const block = blocks[b - 1]; @@ -335,18 +328,8 @@ function enqueueDependentJobs(job: Job, state: SimState, queues: Queues, checkpo const key = blockKey(checkpoint, block); switch (type) { - case ProvingRequestType.PARITY_BASE: { - const count = (state.baseParityComplete.get(checkpoint) ?? 0) + 1; - state.baseParityComplete.set(checkpoint, count); - - if (count === NUM_BASE_PARITY_PER_ROOT_PARITY) { - queues[ProvingRequestType.PARITY_ROOT].push(createJob(checkpoint, 1, ProvingRequestType.PARITY_ROOT)); - } - break; - } - - case ProvingRequestType.PARITY_ROOT: { - state.rootParityComplete.set(checkpoint, true); + case ProvingRequestType.INBOX_PARITY: { + state.inboxParityComplete.set(checkpoint, true); tryEnqueueBlockRoot(checkpoint, 1, state, queues); break; } @@ -523,8 +506,8 @@ function tryEnqueueBlockRoot(checkpoint: number, blk: number, state: SimState, q return; } - // First block also needs root parity - if (isFirst && !state.rootParityComplete.get(checkpoint)) { + // First block also needs the checkpoint's InboxParity proof + if (isFirst && !state.inboxParityComplete.get(checkpoint)) { return; } diff --git a/yarn-project/prover-client/src/test/mock_prover.ts b/yarn-project/prover-client/src/test/mock_prover.ts index 2257b9d8f4c9..8ce26fcf99f4 100644 --- a/yarn-project/prover-client/src/test/mock_prover.ts +++ b/yarn-project/prover-client/src/test/mock_prover.ts @@ -15,7 +15,7 @@ import { type ServerCircuitProver, makePublicInputsAndRecursiveProof, } from '@aztec/stdlib/interfaces/server'; -import type { ParityBasePrivateInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity'; +import type { InboxParityPrivateInputs } from '@aztec/stdlib/parity'; import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs'; import type { BlockMergeRollupPrivateInputs, @@ -108,7 +108,7 @@ export class MockProver implements ServerCircuitProver { return Promise.resolve(makeEmptyRecursiveProof(AVM_V2_PROOF_LENGTH_IN_FIELDS)); } - getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number) { + getInboxParityProof(_inputs: InboxParityPrivateInputs, _signal?: AbortSignal, _epochNumber?: number) { return Promise.resolve( makePublicInputsAndRecursiveProof( makeParityPublicInputs(), @@ -118,16 +118,6 @@ export class MockProver implements ServerCircuitProver { ); } - getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number) { - return Promise.resolve( - makePublicInputsAndRecursiveProof( - makeParityPublicInputs(), - makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), - VerificationKeyData.makeFakeHonk(), - ), - ); - } - getPublicChonkVerifierProof( _inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, diff --git a/yarn-project/prover-client/src/test/proving_broker_testbench.test.ts b/yarn-project/prover-client/src/test/proving_broker_testbench.test.ts index 67bff56cdb43..d50aac8f3ef2 100644 --- a/yarn-project/prover-client/src/test/proving_broker_testbench.test.ts +++ b/yarn-project/prover-client/src/test/proving_broker_testbench.test.ts @@ -164,8 +164,7 @@ function getProofCounts( counts[priorityIndex(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP)] = numCheckpoints; } - counts[priorityIndex(ProvingRequestType.PARITY_BASE)] = numCheckpoints * 4; - counts[priorityIndex(ProvingRequestType.PARITY_ROOT)] = numCheckpoints; + counts[priorityIndex(ProvingRequestType.INBOX_PARITY)] = numCheckpoints; if (numBlocksPerCheckpoint > 2) { counts[priorityIndex(ProvingRequestType.BLOCK_MERGE_ROLLUP)] = (numBlocksPerCheckpoint - 2) * numCheckpoints; diff --git a/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts b/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts index 5171214b5a9c..af2766e2e9bc 100644 --- a/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts +++ b/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts @@ -156,7 +156,7 @@ describeOrSkip('prover/regenerate-rollup-sample-inputs', () => { topTreeData.push({ blockProofs: subTree .getSubTreeResult() - .then(r => ({ blockProofOutputs: r.blockProofOutputs, parityRootProof: r.parityRootProof })), + .then(r => ({ blockProofOutputs: r.blockProofOutputs, inboxParityProof: r.inboxParityProof })), l2ToL1MsgsPerBlock: blocks.map(b => b.txs.map(tx => tx.txEffect.l2ToL1Msgs)), blobFields: checkpoint.toBlobFields(), previousBlockHeader, diff --git a/yarn-project/prover-node/src/job/checkpoint-prover.ts b/yarn-project/prover-node/src/job/checkpoint-prover.ts index c2804966c321..3e393a05a33e 100644 --- a/yarn-project/prover-node/src/job/checkpoint-prover.ts +++ b/yarn-project/prover-node/src/job/checkpoint-prover.ts @@ -58,10 +58,10 @@ export type CheckpointProverTestHooks = { }; /** - * The proofs a checkpoint's sub-tree hands to the top tree: the per-block rollup proofs plus the checkpoint's parity - * root proof (parity moved from the first block root to the checkpoint root in AZIP-22 Fast Inbox). + * The proofs a checkpoint's sub-tree hands to the top tree: the per-block rollup proofs plus the checkpoint's single + * variable-size InboxParity proof (parity moved from the first block root to the checkpoint root in AZIP-22 Fast Inbox). */ -export type CheckpointSubTreeProofs = Pick; +export type CheckpointSubTreeProofs = Pick; /** Inputs that fully describe a checkpoint at register time. */ export type CheckpointProverArgs = { @@ -314,7 +314,7 @@ export class CheckpointProver { this.deps.metrics.recordCheckpointProving(checkpointTimer.ms()); this.blockProofs.resolve({ blockProofOutputs: result.blockProofOutputs, - parityRootProof: result.parityRootProof, + inboxParityProof: result.inboxParityProof, }); }, err => this.failBlockProofs(err instanceof Error ? err : new Error(String(err))), diff --git a/yarn-project/stdlib/src/interfaces/proving-job.ts b/yarn-project/stdlib/src/interfaces/proving-job.ts index 349ed4642e57..b7e31df2f5b3 100644 --- a/yarn-project/stdlib/src/interfaces/proving-job.ts +++ b/yarn-project/stdlib/src/interfaces/proving-job.ts @@ -11,9 +11,8 @@ import { z } from 'zod'; import { AvmCircuitInputs } from '../avm/avm.js'; import { AvmProvingRequestSchema } from '../avm/avm_proving_request.js'; -import { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js'; +import { InboxParityPrivateInputs } from '../parity/inbox_parity_private_inputs.js'; import { ParityPublicInputs } from '../parity/parity_public_inputs.js'; -import { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js'; import { ProvingRequestType } from '../proofs/proving_request_type.js'; import { RecursiveProof } from '../proofs/recursive_proof.js'; import { BlockMergeRollupPrivateInputs } from '../rollup/block_merge_rollup_private_inputs.js'; @@ -82,8 +81,7 @@ export function makePublicInputsAndRecursiveProof; export type ProvingJobResultsMap = { @@ -396,11 +387,7 @@ export type ProvingJobResultsMap = { typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >; [ProvingRequestType.ROOT_ROLLUP]: PublicInputsAndRecursiveProof; - [ProvingRequestType.PARITY_BASE]: PublicInputsAndRecursiveProof; - [ProvingRequestType.PARITY_ROOT]: PublicInputsAndRecursiveProof< - ParityPublicInputs, - typeof NESTED_RECURSIVE_PROOF_LENGTH - >; + [ProvingRequestType.INBOX_PARITY]: PublicInputsAndRecursiveProof; }; export type ProvingRequestResultFor = { type: T; result: ProvingJobResultsMap[T] }; diff --git a/yarn-project/stdlib/src/interfaces/server_circuit_prover.ts b/yarn-project/stdlib/src/interfaces/server_circuit_prover.ts index 5503be50be64..48b4514b7f6b 100644 --- a/yarn-project/stdlib/src/interfaces/server_circuit_prover.ts +++ b/yarn-project/stdlib/src/interfaces/server_circuit_prover.ts @@ -6,9 +6,8 @@ import type { } from '@aztec/constants'; import type { AvmCircuitInputs } from '../avm/avm.js'; -import type { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js'; +import type { InboxParityPrivateInputs } from '../parity/inbox_parity_private_inputs.js'; import type { ParityPublicInputs } from '../parity/parity_public_inputs.js'; -import type { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js'; import type { RecursiveProof } from '../proofs/recursive_proof.js'; import type { BlockMergeRollupPrivateInputs } from '../rollup/block_merge_rollup_private_inputs.js'; import type { BlockRollupPublicInputs } from '../rollup/block_rollup_public_inputs.js'; @@ -43,25 +42,16 @@ import type { PublicInputsAndRecursiveProof } from './proving-job.js'; */ export interface ServerCircuitProver { /** - * Creates a proof for the given input. - * @param input - Input to the circuit. + * Creates the checkpoint's single InboxParity proof. The circuit variant (ladder size) is selected from + * `inputs.size`. + * @param inputs - Input to the circuit. */ - getBaseParityProof( - inputs: ParityBasePrivateInputs, + getInboxParityProof( + inputs: InboxParityPrivateInputs, signal?: AbortSignal, epochNumber?: number, ): Promise>; - /** - * Creates a proof for the given input. - * @param input - Input to the circuit. - */ - getRootParityProof( - inputs: ParityRootPrivateInputs, - signal?: AbortSignal, - epochNumber?: number, - ): Promise>; - getPublicChonkVerifierProof( inputs: PublicChonkVerifierPrivateInputs, signal?: AbortSignal, diff --git a/yarn-project/stdlib/src/messaging/index.ts b/yarn-project/stdlib/src/messaging/index.ts index f2e858d61da9..8728940e405a 100644 --- a/yarn-project/stdlib/src/messaging/index.ts +++ b/yarn-project/stdlib/src/messaging/index.ts @@ -2,6 +2,7 @@ export * from './append_l1_to_l2_messages.js'; export * from './in_hash.js'; export * from './inbox_leaf.js'; export * from './inbox_rolling_hash.js'; +export * from './l1_to_l2_message_bundle.js'; export * from './l1_to_l2_message_sponge.js'; export * from './l1_to_l2_message.js'; export * from './l1_to_l2_message_source.js'; diff --git a/yarn-project/stdlib/src/messaging/l1_to_l2_message_bundle.ts b/yarn-project/stdlib/src/messaging/l1_to_l2_message_bundle.ts new file mode 100644 index 000000000000..a35c4c1c9e7c --- /dev/null +++ b/yarn-project/stdlib/src/messaging/l1_to_l2_message_bundle.ts @@ -0,0 +1,70 @@ +import { MAX_L1_TO_L2_MSGS_PER_BLOCK } from '@aztec/constants'; +import { padArrayEnd } from '@aztec/foundation/collection'; +import { Fr } from '@aztec/foundation/curves/bn254'; +import { bufferSchemaFor } from '@aztec/foundation/schemas'; +import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; +import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; + +/** + * A block's L1-to-L2 message bundle: the leaves it inserts into the L1-to-L2 message tree plus the two counts a block + * root needs — one for the (transitionally padded) tree insert, one for the real-count sponge absorb. See the Noir + * `L1ToL2MessageBundle`. Once the tree insert becomes real-count too, `numMsgs === numRealMsgs` and `numRealMsgs` is + * dropped. + */ +export class L1ToL2MessageBundle { + constructor( + /** The message leaves, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. Kept as a plain array (not a tuple) + * to avoid TS's deep-instantiation limit on the 1024-lane type. */ + public readonly messages: Fr[], + /** Number of leaves inserted into the L1-to-L2 message tree (the padded subtree size, or 0 for an empty block). */ + public readonly numMsgs: number, + /** Number of real (non-padding) messages absorbed into the message sponge. */ + public readonly numRealMsgs: number, + ) {} + + /** An empty bundle: no leaves inserted, nothing absorbed. */ + static empty(): L1ToL2MessageBundle { + return new L1ToL2MessageBundle( + Array.from({ length: MAX_L1_TO_L2_MSGS_PER_BLOCK }, () => Fr.ZERO), + 0, + 0, + ); + } + + toBuffer() { + return serializeToBuffer(this.messages, this.numMsgs, this.numRealMsgs); + } + + toString() { + return bufferToHex(this.toBuffer()); + } + + static fromBuffer(buffer: Buffer | BufferReader) { + const reader = BufferReader.asReader(buffer); + // Array.from (not readArray with the literal cap) keeps the type `Fr[]` and avoids TS's deep-tuple instantiation. + const messages = Array.from({ length: MAX_L1_TO_L2_MSGS_PER_BLOCK }, () => Fr.fromBuffer(reader)); + return new L1ToL2MessageBundle(messages, reader.readNumber(), reader.readNumber()); + } + + static fromString(str: string) { + return L1ToL2MessageBundle.fromBuffer(hexToBuffer(str)); + } + + toJSON() { + return this.toBuffer(); + } + + static get schema() { + return bufferSchemaFor(L1ToL2MessageBundle); + } +} + +/** Pads `messages` to a full subtree and wraps it into a bundle whose tree-insert count is the padded subtree size. */ +export function makeL1ToL2MessageBundle(messages: Fr[]): L1ToL2MessageBundle { + // Explicit `` keeps the result `Fr[]`; padding to the literal cap would otherwise infer a deep tuple. + return new L1ToL2MessageBundle( + padArrayEnd(messages, Fr.ZERO, MAX_L1_TO_L2_MSGS_PER_BLOCK), + MAX_L1_TO_L2_MSGS_PER_BLOCK, + messages.length, + ); +} diff --git a/yarn-project/stdlib/src/parity/inbox_parity_private_inputs.ts b/yarn-project/stdlib/src/parity/inbox_parity_private_inputs.ts new file mode 100644 index 000000000000..70639ab9fa16 --- /dev/null +++ b/yarn-project/stdlib/src/parity/inbox_parity_private_inputs.ts @@ -0,0 +1,140 @@ +import { INBOX_PARITY_SIZE_LARGE, INBOX_PARITY_SIZE_MEDIUM, INBOX_PARITY_SIZE_SMALL } from '@aztec/constants'; +import { padArrayEnd } from '@aztec/foundation/collection'; +import { Fr } from '@aztec/foundation/curves/bn254'; +import { bufferSchemaFor } from '@aztec/foundation/schemas'; +import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize'; +import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; + +import { L1ToL2MessageSponge } from '../messaging/l1_to_l2_message_sponge.js'; + +/** The InboxParity size ladder, ascending. One VK per size; the prover proves the smallest that fits. */ +export const INBOX_PARITY_SIZES = [INBOX_PARITY_SIZE_SMALL, INBOX_PARITY_SIZE_MEDIUM, INBOX_PARITY_SIZE_LARGE] as const; + +/** A valid InboxParity ladder size. */ +export type InboxParitySize = (typeof INBOX_PARITY_SIZES)[number]; + +/** + * Picks the smallest ladder size that can hold `numMessages` messages. + * @throws if `numMessages` exceeds the largest rung. + */ +export function pickInboxParitySize(numMessages: number): InboxParitySize { + const size = INBOX_PARITY_SIZES.find(s => numMessages <= s); + if (size === undefined) { + throw new Error( + `Cannot fit ${numMessages} L1-to-L2 messages into any InboxParity size (max ${INBOX_PARITY_SIZE_LARGE})`, + ); + } + return size; +} + +/** + * Private inputs for one `InboxParity` proof (S = `size`). The prover produces exactly one per checkpoint, sized + * by the checkpoint's message count via {@link pickInboxParitySize}. + */ +export class InboxParityPrivateInputs { + constructor( + /** Ladder size S: the length of `messages` and the circuit variant to prove ({@link INBOX_PARITY_SIZES}). */ + public readonly size: InboxParitySize, + /** The checkpoint's L1-to-L2 messages, padded with zeros to `size`; the first `numMessages` are real. */ + public readonly messages: Fr[], + /** Number of real (non-padding) messages in `messages`. */ + public readonly numMessages: number, + /** Inbox rolling hash before this checkpoint's messages (the previous checkpoint's end; genesis is zero). */ + public readonly startRollingHash: Fr, + /** Message-bundle sponge before this checkpoint's messages (empty at checkpoint start). */ + public readonly startSponge: L1ToL2MessageSponge, + /** The L1 `in_hash` (sha256 frontier root), passed through unconstrained by the circuit. */ + public readonly inHash: Fr, + /** Root of the VK tree. */ + public readonly vkTreeRoot: Fr, + /** Prover identity committed to by the circuit, for sybil protection. */ + public readonly proverId: Fr, + ) { + if (messages.length !== size) { + throw new Error(`InboxParity messages length (${messages.length}) must equal size (${size})`); + } + } + + /** + * Builds the inputs from a checkpoint's real messages, sizing the circuit by the message count and padding the + * message array out to that size. + */ + static fromMessages( + messages: Fr[], + startRollingHash: Fr, + startSponge: L1ToL2MessageSponge, + inHash: Fr, + vkTreeRoot: Fr, + proverId: Fr, + ): InboxParityPrivateInputs { + const size = pickInboxParitySize(messages.length); + // Explicit `` keeps the result `Fr[]`; padding to the union-literal `size` would infer a deep tuple. + return new InboxParityPrivateInputs( + size, + padArrayEnd(messages, Fr.ZERO, size), + messages.length, + startRollingHash, + startSponge, + inHash, + vkTreeRoot, + proverId, + ); + } + + /** Serializes the inputs to a buffer. */ + toBuffer() { + return serializeToBuffer( + new Fr(this.size), + this.messages, + new Fr(this.numMessages), + this.startRollingHash, + this.startSponge, + this.inHash, + this.vkTreeRoot, + this.proverId, + ); + } + + /** Serializes the inputs to a hex string. */ + toString() { + return bufferToHex(this.toBuffer()); + } + + /** + * Deserializes the inputs from a buffer. + * @param buffer - The buffer to deserialize from. + */ + static fromBuffer(buffer: Buffer | BufferReader) { + const reader = BufferReader.asReader(buffer); + const size = Fr.fromBuffer(reader).toNumber() as InboxParitySize; + // Array.from keeps the type `Fr[]`; readArray with the union-literal `size` would infer a deep tuple. + const messages = Array.from({ length: size }, () => Fr.fromBuffer(reader)); + return new InboxParityPrivateInputs( + size, + messages, + Fr.fromBuffer(reader).toNumber(), + Fr.fromBuffer(reader), + reader.readObject(L1ToL2MessageSponge), + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + Fr.fromBuffer(reader), + ); + } + + /** + * Deserializes the inputs from a hex string. + * @param str - The hex string to deserialize from. + */ + static fromString(str: string) { + return InboxParityPrivateInputs.fromBuffer(hexToBuffer(str)); + } + + /** Returns a buffer representation for JSON serialization. */ + toJSON() { + return this.toBuffer(); + } + + static get schema() { + return bufferSchemaFor(InboxParityPrivateInputs); + } +} diff --git a/yarn-project/stdlib/src/parity/index.ts b/yarn-project/stdlib/src/parity/index.ts index c527165dbcb3..0a043655c73e 100644 --- a/yarn-project/stdlib/src/parity/index.ts +++ b/yarn-project/stdlib/src/parity/index.ts @@ -1,3 +1,2 @@ -export * from './parity_base_private_inputs.js'; +export * from './inbox_parity_private_inputs.js'; export * from './parity_public_inputs.js'; -export * from './parity_root_private_inputs.js'; diff --git a/yarn-project/stdlib/src/parity/parity_base_private_inputs.test.ts b/yarn-project/stdlib/src/parity/parity_base_private_inputs.test.ts deleted file mode 100644 index a0f6954e5967..000000000000 --- a/yarn-project/stdlib/src/parity/parity_base_private_inputs.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { makeParityBasePrivateInputs } from '../tests/factories.js'; -import { ParityBasePrivateInputs } from './parity_base_private_inputs.js'; - -describe('ParityBasePrivateInputs', () => { - it(`serializes a ParityBasePrivateInputs to buffer and deserializes it back`, () => { - const expected = makeParityBasePrivateInputs(); - const buffer = expected.toBuffer(); - const res = ParityBasePrivateInputs.fromBuffer(buffer); - expect(res).toEqual(expected); - }); - - it(`serializes a ParityBasePrivateInputs to hex string and deserializes it back`, () => { - const expected = makeParityBasePrivateInputs(); - const str = expected.toString(); - const res = ParityBasePrivateInputs.fromString(str); - expect(res).toEqual(expected); - }); -}); diff --git a/yarn-project/stdlib/src/parity/parity_base_private_inputs.ts b/yarn-project/stdlib/src/parity/parity_base_private_inputs.ts deleted file mode 100644 index 8f3c3b3ca2ef..000000000000 --- a/yarn-project/stdlib/src/parity/parity_base_private_inputs.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants'; -import { Fr } from '@aztec/foundation/curves/bn254'; -import { bufferSchemaFor } from '@aztec/foundation/schemas'; -import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; -import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; - -import { L1ToL2MessageSponge } from '../messaging/l1_to_l2_message_sponge.js'; - -export class ParityBasePrivateInputs { - constructor( - /** Aggregated proof of all the parity circuit iterations. */ - public readonly msgs: Tuple, - /** Inbox rolling hash before absorbing this base's real messages (threaded from the previous base's end). */ - public readonly startRollingHash: Fr, - /** Message-bundle sponge before absorbing this base's leaves (threaded from the previous base's end). */ - public readonly startSponge: L1ToL2MessageSponge, - /** Number of real (non-padding) messages in `msgs`. */ - public readonly numMsgs: number, - /** Root of the VK tree */ - public readonly vkTreeRoot: Fr, - /** Prover identity committed to by the circuit, for sybil protection. */ - public readonly proverId: Fr, - ) {} - - public static fromSlice( - array: Fr[], - index: number, - startRollingHash: Fr, - startSponge: L1ToL2MessageSponge, - numMsgs: number, - vkTreeRoot: Fr, - proverId: Fr, - ): ParityBasePrivateInputs { - // Can't use Tuple due to length - if (array.length !== NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP) { - throw new Error( - `Msgs array length must be NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP=${NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP}`, - ); - } - const start = index * NUM_MSGS_PER_BASE_PARITY; - const end = start + NUM_MSGS_PER_BASE_PARITY; - const msgs = array.slice(start, end); - return new ParityBasePrivateInputs( - msgs as Tuple, - startRollingHash, - startSponge, - numMsgs, - vkTreeRoot, - proverId, - ); - } - - /** Serializes the inputs to a buffer. */ - toBuffer() { - return serializeToBuffer( - this.msgs, - this.startRollingHash, - this.startSponge, - new Fr(this.numMsgs), - this.vkTreeRoot, - this.proverId, - ); - } - - /** Serializes the inputs to a hex string. */ - toString() { - return bufferToHex(this.toBuffer()); - } - - /** - * Deserializes the inputs from a buffer. - * @param buffer - The buffer to deserialize from. - */ - static fromBuffer(buffer: Buffer | BufferReader) { - const reader = BufferReader.asReader(buffer); - return new ParityBasePrivateInputs( - reader.readArray(NUM_MSGS_PER_BASE_PARITY, Fr), - Fr.fromBuffer(reader), - reader.readObject(L1ToL2MessageSponge), - Fr.fromBuffer(reader).toNumber(), - Fr.fromBuffer(reader), - Fr.fromBuffer(reader), - ); - } - - /** - * Deserializes the inputs from a hex string. - * @param str - The hex string to deserialize from. - * @returns - The deserialized inputs. - */ - static fromString(str: string) { - return ParityBasePrivateInputs.fromBuffer(hexToBuffer(str)); - } - - /** Returns a buffer representation for JSON serialization. */ - toJSON() { - return this.toBuffer(); - } - - /** Creates an instance from a hex string. */ - static get schema() { - return bufferSchemaFor(ParityBasePrivateInputs); - } -} diff --git a/yarn-project/stdlib/src/parity/parity_public_inputs.ts b/yarn-project/stdlib/src/parity/parity_public_inputs.ts index ca38d76eda92..40a9d12b48fd 100644 --- a/yarn-project/stdlib/src/parity/parity_public_inputs.ts +++ b/yarn-project/stdlib/src/parity/parity_public_inputs.ts @@ -8,27 +8,28 @@ import { L1ToL2MessageSponge } from '../messaging/l1_to_l2_message_sponge.js'; export class ParityPublicInputs { constructor( - /** Root of the SHA256 tree. */ - public shaRoot: Fr, - /** Root of the converted tree. */ - public convertedRoot: Fr, - /** Inbox rolling hash before absorbing this batch of messages. */ + /** + * The L1 `in_hash` (sha256 frontier root of the checkpoint's messages). Unconstrained pass-through: InboxParity + * echoes the value the prover supplies; it stays the authoritative L1 check until the Fast Inbox flip. + */ + public inHash: Fr, + /** Inbox rolling hash before absorbing this checkpoint's messages. */ public startRollingHash: Fr, - /** Inbox rolling hash after absorbing the `numMsgs` real messages in this batch. */ + /** Inbox rolling hash after absorbing the `numMsgs` real messages. */ public endRollingHash: Fr, - /** Message-bundle sponge before absorbing this batch of leaves. */ + /** Message-bundle sponge before absorbing this checkpoint's messages (empty at checkpoint start). */ public startSponge: L1ToL2MessageSponge, - /** Message-bundle sponge after absorbing the full (padded) batch of leaves. */ + /** Message-bundle sponge after absorbing the `numMsgs` real messages. */ public endSponge: L1ToL2MessageSponge, - /** Number of real (non-padding) messages absorbed into the rolling hash by this batch. */ + /** Number of real (non-padding) messages absorbed into the rolling hash and the sponge. */ public numMsgs: number, /** Root of the VK tree */ public vkTreeRoot: Fr, /** Prover identity committed to by the circuit, for sybil protection. */ public proverId: Fr, ) { - if (shaRoot.toBuffer()[0] != 0) { - throw new Error(`shaRoot buffer must be 31 bytes. Got 32 bytes`); + if (inHash.toBuffer()[0] != 0) { + throw new Error(`inHash buffer must be 31 bytes. Got 32 bytes`); } } @@ -38,8 +39,7 @@ export class ParityPublicInputs { */ toBuffer() { return serializeToBuffer( - this.shaRoot, - this.convertedRoot, + this.inHash, this.startRollingHash, this.endRollingHash, this.startSponge, @@ -79,8 +79,7 @@ export class ParityPublicInputs { */ static getFields(fields: FieldsOf) { return [ - fields.shaRoot, - fields.convertedRoot, + fields.inHash, fields.startRollingHash, fields.endRollingHash, fields.startSponge, @@ -102,7 +101,6 @@ export class ParityPublicInputs { reader.readObject(Fr), reader.readObject(Fr), reader.readObject(Fr), - reader.readObject(Fr), reader.readObject(L1ToL2MessageSponge), reader.readObject(L1ToL2MessageSponge), Fr.fromBuffer(reader).toNumber(), diff --git a/yarn-project/stdlib/src/parity/parity_root_private_inputs.test.ts b/yarn-project/stdlib/src/parity/parity_root_private_inputs.test.ts deleted file mode 100644 index 649e816c950e..000000000000 --- a/yarn-project/stdlib/src/parity/parity_root_private_inputs.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { makeParityRootPrivateInputs } from '../tests/factories.js'; -import { ParityRootPrivateInputs } from './parity_root_private_inputs.js'; - -describe('ParityRootPrivateInputs', () => { - it(`serializes a ParityRootPrivateInputs to buffer and deserializes it back`, () => { - const expected = makeParityRootPrivateInputs(); - const buffer = expected.toBuffer(); - const res = ParityRootPrivateInputs.fromBuffer(buffer); - expect(res).toEqual(expected); - }); - - it(`serializes a ParityRootPrivateInputs to hex string and deserializes it back`, () => { - const expected = makeParityRootPrivateInputs(); - const str = expected.toString(); - const res = ParityRootPrivateInputs.fromString(str); - expect(res).toEqual(expected); - }); -}); diff --git a/yarn-project/stdlib/src/parity/parity_root_private_inputs.ts b/yarn-project/stdlib/src/parity/parity_root_private_inputs.ts deleted file mode 100644 index 157eb5204a10..000000000000 --- a/yarn-project/stdlib/src/parity/parity_root_private_inputs.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants'; -import { makeTuple } from '@aztec/foundation/array'; -import { bufferSchemaFor } from '@aztec/foundation/schemas'; -import { BufferReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize'; -import { bufferToHex, hexToBuffer } from '@aztec/foundation/string'; - -import { ProofData, type UltraHonkProofData } from '../proofs/proof_data.js'; -import { ParityPublicInputs } from './parity_public_inputs.js'; - -export type ParityBaseProofData = UltraHonkProofData; - -export class ParityRootPrivateInputs { - constructor( - /** Public inputs of the parity base circuits and their proofs and vk data. */ - public readonly children: Tuple, - ) {} - - /** - * Serializes the inputs to a buffer. - * @returns The inputs serialized to a buffer. - */ - toBuffer() { - return serializeToBuffer(this.children); - } - - /** - * Serializes the inputs to a hex string. - * @returns The instance serialized to a hex string. - */ - toString() { - return bufferToHex(this.toBuffer()); - } - - /** - * Deserializes the inputs from a buffer. - * @param buffer - The buffer to deserialize from. - * @returns A new ParityRootPrivateInputs instance. - */ - static fromBuffer(buffer: Buffer | BufferReader) { - const reader = BufferReader.asReader(buffer); - return new ParityRootPrivateInputs( - makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, () => ProofData.fromBuffer(reader, ParityPublicInputs)), - ); - } - - /** - * Deserializes the inputs from a hex string. - * @param str - A hex string to deserialize from. - * @returns A new ParityRootPrivateInputs instance. - */ - static fromString(str: string) { - return ParityRootPrivateInputs.fromBuffer(hexToBuffer(str)); - } - - /** Returns a buffer representation for JSON serialization. */ - toJSON() { - return this.toBuffer(); - } - - /** Creates an instance from a hex string. */ - static get schema() { - return bufferSchemaFor(ParityRootPrivateInputs); - } -} diff --git a/yarn-project/stdlib/src/proofs/proving_request_type.ts b/yarn-project/stdlib/src/proofs/proving_request_type.ts index 43f3d7147c31..8ea73232fa1b 100644 --- a/yarn-project/stdlib/src/proofs/proving_request_type.ts +++ b/yarn-project/stdlib/src/proofs/proving_request_type.ts @@ -18,6 +18,5 @@ export enum ProvingRequestType { CHECKPOINT_MERGE_ROLLUP, ROOT_ROLLUP, - PARITY_BASE, - PARITY_ROOT, + INBOX_PARITY, } diff --git a/yarn-project/stdlib/src/rollup/block_root_rollup_private_inputs.ts b/yarn-project/stdlib/src/rollup/block_root_rollup_private_inputs.ts index 7723a0402bef..fc75394f4959 100644 --- a/yarn-project/stdlib/src/rollup/block_root_rollup_private_inputs.ts +++ b/yarn-project/stdlib/src/rollup/block_root_rollup_private_inputs.ts @@ -1,10 +1,11 @@ import { SpongeBlob } from '@aztec/blob-lib/types'; -import { ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, MAX_L1_TO_L2_MSGS_PER_BLOCK } from '@aztec/constants'; +import { ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants'; import { Fr } from '@aztec/foundation/curves/bn254'; import { bufferSchemaFor } from '@aztec/foundation/schemas'; import { BufferReader, type Tuple, bigintToUInt64BE, serializeToBuffer } from '@aztec/foundation/serialize'; import type { FieldsOf } from '@aztec/foundation/types'; +import { L1ToL2MessageBundle } from '../messaging/l1_to_l2_message_bundle.js'; import { L1ToL2MessageSponge } from '../messaging/l1_to_l2_message_sponge.js'; import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js'; import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js'; @@ -13,13 +14,6 @@ import type { UInt64 } from '../types/shared.js'; import { CheckpointConstantData } from './checkpoint_constant_data.js'; import { TxRollupPublicInputs } from './tx_rollup_public_inputs.js'; -// The full-height (36) frontier hint the block root uses to append its message bundle. Tuple stays within TS's -// instantiation-depth limits; the 1024-lane message array is kept as a plain `Fr[]` (padded by the caller) to avoid -// the excessively-deep tuple type. -function readL1ToL2Messages(reader: BufferReader): Fr[] { - return Array.from({ length: MAX_L1_TO_L2_MSGS_PER_BLOCK }, () => Fr.fromBuffer(reader)); -} - export class BlockRootFirstRollupPrivateInputs { constructor( /** @@ -27,13 +21,9 @@ export class BlockRootFirstRollupPrivateInputs { */ public previousRollups: [RollupHonkProofData, RollupHonkProofData], /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. - */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. + * L1-to-L2 message bundle inserted by this block. */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * The l1 to l2 message tree snapshot immediately before this block. */ @@ -55,8 +45,7 @@ export class BlockRootFirstRollupPrivateInputs { static getFields(fields: FieldsOf) { return [ fields.previousRollups, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.previousL1ToL2, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, @@ -66,8 +55,7 @@ export class BlockRootFirstRollupPrivateInputs { toBuffer() { return serializeToBuffer( this.previousRollups, - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.previousL1ToL2, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, @@ -78,8 +66,7 @@ export class BlockRootFirstRollupPrivateInputs { const reader = BufferReader.asReader(buffer); return new BlockRootFirstRollupPrivateInputs( [ProofData.fromBuffer(reader, TxRollupPublicInputs), ProofData.fromBuffer(reader, TxRollupPublicInputs)], - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), AppendOnlyTreeSnapshot.fromBuffer(reader), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), @@ -102,13 +89,9 @@ export class BlockRootSingleTxFirstRollupPrivateInputs { */ public previousRollup: RollupHonkProofData, /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. + * L1-to-L2 message bundle inserted by this block. */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. - */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * The l1 to l2 message tree snapshot immediately before this block. */ @@ -132,8 +115,7 @@ export class BlockRootSingleTxFirstRollupPrivateInputs { static getFields(fields: FieldsOf) { return [ fields.previousRollup, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.previousL1ToL2, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, @@ -143,8 +125,7 @@ export class BlockRootSingleTxFirstRollupPrivateInputs { toBuffer() { return serializeToBuffer( this.previousRollup, - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.previousL1ToL2, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, @@ -155,8 +136,7 @@ export class BlockRootSingleTxFirstRollupPrivateInputs { const reader = BufferReader.asReader(buffer); return new BlockRootSingleTxFirstRollupPrivateInputs( ProofData.fromBuffer(reader, TxRollupPublicInputs), - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), AppendOnlyTreeSnapshot.fromBuffer(reader), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), @@ -191,13 +171,9 @@ export class BlockRootEmptyTxFirstRollupPrivateInputs { */ public timestamp: UInt64, /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. - */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. + * L1-to-L2 message bundle inserted by this block. */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * Frontier hint for appending the message bundle to the previous state's l1 to l2 message tree. */ @@ -218,8 +194,7 @@ export class BlockRootEmptyTxFirstRollupPrivateInputs { fields.previousState, fields.constants, fields.timestamp, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, ] as const; @@ -231,8 +206,7 @@ export class BlockRootEmptyTxFirstRollupPrivateInputs { this.previousState, this.constants, bigintToUInt64BE(this.timestamp), - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, ); @@ -245,8 +219,7 @@ export class BlockRootEmptyTxFirstRollupPrivateInputs { StateReference.fromBuffer(reader), CheckpointConstantData.fromBuffer(reader), reader.readUInt64(), - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), ); @@ -288,13 +261,9 @@ export class BlockRootMsgsOnlyRollupPrivateInputs { */ public startMsgSponge: L1ToL2MessageSponge, /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. - */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. + * L1-to-L2 message bundle inserted by this block. */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * Frontier hint for appending the message bundle to the previous state's l1 to l2 message tree. */ @@ -317,8 +286,7 @@ export class BlockRootMsgsOnlyRollupPrivateInputs { fields.timestamp, fields.startSpongeBlob, fields.startMsgSponge, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, ] as const; @@ -332,8 +300,7 @@ export class BlockRootMsgsOnlyRollupPrivateInputs { bigintToUInt64BE(this.timestamp), this.startSpongeBlob, this.startMsgSponge, - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, ); @@ -348,8 +315,7 @@ export class BlockRootMsgsOnlyRollupPrivateInputs { reader.readUInt64(), reader.readObject(SpongeBlob), reader.readObject(L1ToL2MessageSponge), - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), ); @@ -371,13 +337,9 @@ export class BlockRootRollupPrivateInputs { */ public previousRollups: [RollupHonkProofData, RollupHonkProofData], /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. + * L1-to-L2 message bundle inserted by this block. */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. - */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * Message sponge inherited from the previous block (checked against its `endMsgSponge` in the merge/checkpoint root). */ @@ -399,8 +361,7 @@ export class BlockRootRollupPrivateInputs { static getFields(fields: FieldsOf) { return [ fields.previousRollups, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.startMsgSponge, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, @@ -410,8 +371,7 @@ export class BlockRootRollupPrivateInputs { toBuffer() { return serializeToBuffer( this.previousRollups, - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.startMsgSponge, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, @@ -422,8 +382,7 @@ export class BlockRootRollupPrivateInputs { const reader = BufferReader.asReader(buffer); return new BlockRootRollupPrivateInputs( [ProofData.fromBuffer(reader, TxRollupPublicInputs), ProofData.fromBuffer(reader, TxRollupPublicInputs)], - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), reader.readObject(L1ToL2MessageSponge), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), @@ -446,13 +405,9 @@ export class BlockRootSingleTxRollupPrivateInputs { */ public previousRollup: RollupHonkProofData, /** - * L1-to-L2 messages inserted by this block, padded with zeros to `MAX_L1_TO_L2_MSGS_PER_BLOCK`. - */ - public l1ToL2Messages: Fr[], - /** - * Number of real (non-padding) leaves in `l1ToL2Messages`. + * L1-to-L2 message bundle inserted by this block. */ - public numMsgs: number, + public messageBundle: L1ToL2MessageBundle, /** * Message sponge inherited from the previous block (checked against its `endMsgSponge` in the merge/checkpoint root). */ @@ -474,8 +429,7 @@ export class BlockRootSingleTxRollupPrivateInputs { static getFields(fields: FieldsOf) { return [ fields.previousRollup, - fields.l1ToL2Messages, - fields.numMsgs, + fields.messageBundle, fields.startMsgSponge, fields.l1ToL2MessageFrontierHint, fields.newArchiveSiblingPath, @@ -485,8 +439,7 @@ export class BlockRootSingleTxRollupPrivateInputs { toBuffer() { return serializeToBuffer( this.previousRollup, - this.l1ToL2Messages, - this.numMsgs, + this.messageBundle, this.startMsgSponge, this.l1ToL2MessageFrontierHint, this.newArchiveSiblingPath, @@ -497,8 +450,7 @@ export class BlockRootSingleTxRollupPrivateInputs { const reader = BufferReader.asReader(buffer); return new BlockRootSingleTxRollupPrivateInputs( ProofData.fromBuffer(reader, TxRollupPublicInputs), - readL1ToL2Messages(reader), - reader.readNumber(), + reader.readObject(L1ToL2MessageBundle), reader.readObject(L1ToL2MessageSponge), reader.readArray(L1_TO_L2_MSG_TREE_HEIGHT, Fr), reader.readArray(ARCHIVE_HEIGHT, Fr), diff --git a/yarn-project/stdlib/src/rollup/checkpoint_root_rollup_private_inputs.ts b/yarn-project/stdlib/src/rollup/checkpoint_root_rollup_private_inputs.ts index dbd5aaeb1153..7838c30ee375 100644 --- a/yarn-project/stdlib/src/rollup/checkpoint_root_rollup_private_inputs.ts +++ b/yarn-project/stdlib/src/rollup/checkpoint_root_rollup_private_inputs.ts @@ -119,10 +119,10 @@ export class CheckpointRootRollupPrivateInputs { RollupHonkProofData, ], /** - * Parity root proof over the checkpoint's L1-to-L2 messages (AZIP-22 Fast Inbox): it commits to the same message + * Inbox parity proof over the checkpoint's L1-to-L2 messages (AZIP-22 Fast Inbox): it commits to the same message * list behind the L1-checked `inHash`, and its message sponge is checked against the blocks' accumulated one. */ - public parityRoot: UltraHonkProofData, + public inboxParity: UltraHonkProofData, public hints: CheckpointRootRollupHints, ) {} @@ -131,7 +131,7 @@ export class CheckpointRootRollupPrivateInputs { } static getFields(fields: FieldsOf) { - return [fields.previousRollups, fields.parityRoot, fields.hints] as const; + return [fields.previousRollups, fields.inboxParity, fields.hints] as const; } toBuffer() { @@ -168,10 +168,10 @@ export class CheckpointRootSingleBlockRollupPrivateInputs { constructor( public previousRollup: RollupHonkProofData, /** - * Parity root proof over the checkpoint's L1-to-L2 messages (AZIP-22 Fast Inbox): it commits to the same message + * Inbox parity proof over the checkpoint's L1-to-L2 messages (AZIP-22 Fast Inbox): it commits to the same message * list behind the L1-checked `inHash`, and its message sponge is checked against the block's accumulated one. */ - public parityRoot: UltraHonkProofData, + public inboxParity: UltraHonkProofData, public hints: CheckpointRootRollupHints, ) {} @@ -182,7 +182,7 @@ export class CheckpointRootSingleBlockRollupPrivateInputs { } static getFields(fields: FieldsOf) { - return [fields.previousRollup, fields.parityRoot, fields.hints] as const; + return [fields.previousRollup, fields.inboxParity, fields.hints] as const; } toBuffer() { diff --git a/yarn-project/stdlib/src/stats/stats.ts b/yarn-project/stdlib/src/stats/stats.ts index dd8cccab16e0..a1816ec6e966 100644 --- a/yarn-project/stdlib/src/stats/stats.ts +++ b/yarn-project/stdlib/src/stats/stats.ts @@ -101,8 +101,9 @@ export type ClientCircuitName = | 'app-circuit'; export type ServerCircuitName = - | 'parity-base' - | 'parity-root' + | 'inbox-parity-64' + | 'inbox-parity-256' + | 'inbox-parity-1024' | 'chonk-verifier-public' | 'rollup-tx-base-private' | 'rollup-tx-base-public' diff --git a/yarn-project/stdlib/src/tests/factories.ts b/yarn-project/stdlib/src/tests/factories.ts index 4a5620ae9676..bf854379ad9c 100644 --- a/yarn-project/stdlib/src/tests/factories.ts +++ b/yarn-project/stdlib/src/tests/factories.ts @@ -9,6 +9,7 @@ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, CHONK_PROOF_LENGTH, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, + INBOX_PARITY_SIZE_SMALL, L1_TO_L2_MSG_TREE_HEIGHT, MAX_CHECKPOINTS_PER_EPOCH, MAX_CONTRACT_CLASS_LOGS_PER_TX, @@ -36,8 +37,6 @@ import { NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, - NUM_BASE_PARITY_PER_ROOT_PARITY, - NUM_MSGS_PER_BASE_PARITY, PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DATA_TREE_HEIGHT, RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, @@ -130,11 +129,11 @@ import { ContractClassLog, ContractClassLogFields } from '../logs/index.js'; import type { LogResult } from '../logs/log_result.js'; import { PrivateLog } from '../logs/private_log.js'; import { FlatPublicLogs, PublicLog } from '../logs/public_log.js'; +import { L1ToL2MessageBundle } from '../messaging/l1_to_l2_message_bundle.js'; import { L1ToL2MessageSponge } from '../messaging/l1_to_l2_message_sponge.js'; import { CountedL2ToL1Message, L2ToL1Message, ScopedL2ToL1Message } from '../messaging/l2_to_l1_message.js'; -import { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js'; +import { InboxParityPrivateInputs } from '../parity/inbox_parity_private_inputs.js'; import { ParityPublicInputs } from '../parity/parity_public_inputs.js'; -import { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js'; import { ProofData, ProofDataForFixedVk } from '../proofs/index.js'; import { Proof } from '../proofs/proof.js'; import { makeRecursiveProof } from '../proofs/recursive_proof.js'; @@ -800,7 +799,7 @@ export function makeBlockRollupPublicInputs(seed = 0): BlockRollupPublicInputs { } export function makeL1ToL2MessageSponge(seed = 0): L1ToL2MessageSponge { - return new L1ToL2MessageSponge(makeSpongeBlob(seed).sponge, seed % (NUM_MSGS_PER_BASE_PARITY + 1)); + return new L1ToL2MessageSponge(makeSpongeBlob(seed).sponge, seed % (INBOX_PARITY_SIZE_SMALL + 1)); } export function makeCheckpointRollupPublicInputs(seed = 0) { @@ -823,7 +822,6 @@ export function makeCheckpointRollupPublicInputs(seed = 0) { export function makeParityPublicInputs(seed = 0): ParityPublicInputs { return new ParityPublicInputs( new Fr(BigInt(seed + 0x200)), - new Fr(BigInt(seed + 0x300)), new Fr(BigInt(seed + 0x400)), new Fr(BigInt(seed + 0x500)), makeL1ToL2MessageSponge(seed + 0x550), @@ -834,23 +832,22 @@ export function makeParityPublicInputs(seed = 0): ParityPublicInputs { ); } -export function makeParityBasePrivateInputs(seed = 0): ParityBasePrivateInputs { - return new ParityBasePrivateInputs( - makeTuple(NUM_MSGS_PER_BASE_PARITY, fr, seed + 0x3000), +export function makeInboxParityPrivateInputs(seed = 0): InboxParityPrivateInputs { + const size = INBOX_PARITY_SIZE_SMALL; + const numMsgs = seed % (size + 1); + const messages = Array.from({ length: size }, (_, i) => (i < numMsgs ? fr(i + seed + 0x3000) : Fr.ZERO)); + return new InboxParityPrivateInputs( + size, + messages, + numMsgs, new Fr(seed + 0x3500), makeL1ToL2MessageSponge(seed + 0x3800), - seed % (NUM_MSGS_PER_BASE_PARITY + 1), + new Fr(seed + 0x3900), new Fr(seed + 0x4000), new Fr(seed + 0x5000), ); } -export function makeParityRootPrivateInputs(seed = 0) { - return new ParityRootPrivateInputs( - makeTuple(NUM_BASE_PARITY_PER_ROOT_PARITY, () => makeProofData(seed, makeParityPublicInputs)), - ); -} - /** * Makes root rollup public inputs. * @param seed - The seed to use for generating the root rollup public inputs. @@ -969,8 +966,11 @@ export function makeTxMergeRollupPrivateInputs(seed = 0): TxMergeRollupPrivateIn export function makeBlockRootFirstRollupPrivateInputs(seed = 0) { return new BlockRootFirstRollupPrivateInputs( [makeProofData(seed + 0x1000, makeTxRollupPublicInputs), makeProofData(seed + 0x2000, makeTxRollupPublicInputs)], - makeArray(MAX_L1_TO_L2_MSGS_PER_BLOCK, fr, seed + 0x2500), - MAX_L1_TO_L2_MSGS_PER_BLOCK, + new L1ToL2MessageBundle( + makeArray(MAX_L1_TO_L2_MSGS_PER_BLOCK, fr, seed + 0x2500), + MAX_L1_TO_L2_MSGS_PER_BLOCK, + MAX_L1_TO_L2_MSGS_PER_BLOCK, + ), makeAppendOnlyTreeSnapshot(seed + 0x3000), makeSiblingPath(seed + 0x4000, L1_TO_L2_MSG_TREE_HEIGHT), makeSiblingPath(seed + 0x5000, ARCHIVE_HEIGHT), @@ -980,8 +980,7 @@ export function makeBlockRootFirstRollupPrivateInputs(seed = 0) { export function makeBlockRootSingleTxRollupPrivateInputs(seed = 0) { return new BlockRootSingleTxRollupPrivateInputs( makeProofData(seed + 0x1000, makeTxRollupPublicInputs), - makeArray(MAX_L1_TO_L2_MSGS_PER_BLOCK, fr, seed + 0x2500), - 0, + new L1ToL2MessageBundle(makeArray(MAX_L1_TO_L2_MSGS_PER_BLOCK, fr, seed + 0x2500), 0, 0), makeL1ToL2MessageSponge(seed + 0x3000), makeSiblingPath(seed + 0x4000, L1_TO_L2_MSG_TREE_HEIGHT), makeSiblingPath(seed + 0x5000, ARCHIVE_HEIGHT), From 40245b07a22ebb29fd6e7384caf0a0151a1b8539 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Thu, 16 Jul 2026 23:37:42 -0300 Subject: [PATCH 02/10] fix: drop unused NESTED_RECURSIVE_PROOF_LENGTH imports orphaned by the parity method merge Deleting getRootParityProof removed the last uses of NESTED_RECURSIVE_PROOF_LENGTH in mock_prover.ts and broker_prover_facade.ts; @typescript-eslint/no-unused-vars is error-level so yarn lint would fail. Also corrects two 'base parity' JSDoc lines to 'inbox parity'. --- .../noir-protocol-circuits-types/src/execution/server.ts | 8 ++++---- .../src/proving_broker/broker_prover_facade.ts | 1 - yarn-project/prover-client/src/test/mock_prover.ts | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/yarn-project/noir-protocol-circuits-types/src/execution/server.ts b/yarn-project/noir-protocol-circuits-types/src/execution/server.ts index 52197acfacbf..b30e84876ebf 100644 --- a/yarn-project/noir-protocol-circuits-types/src/execution/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/execution/server.ts @@ -76,8 +76,8 @@ import type { DecodedInputs } from '../utils/decoded_inputs.js'; export { mapAvmCircuitPublicInputsToNoir } from '../conversion/server.js'; /** - * Converts the inputs of the base parity circuit into a witness map. - * @param inputs - The base parity inputs. + * Converts the inputs of the inbox parity circuit into a witness map. + * @param inputs - The inbox parity inputs. * @returns The witness map */ export function convertInboxParityPrivateInputsToWitnessMap( @@ -472,8 +472,8 @@ export function convertRootRollupOutputsFromWitnessMap(outputs: WitnessMap, simu } /** - * Converts the outputs of the base parity circuit from a witness map. - * @param outputs - The base parity outputs as a witness map. + * Converts the outputs of the inbox parity circuit from a witness map. + * @param outputs - The inbox parity outputs as a witness map. * @returns The public inputs. */ export function convertInboxParityOutputsFromWitnessMap( diff --git a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts index 02f909cdb100..3aa04785f558 100644 --- a/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts +++ b/yarn-project/prover-client/src/proving_broker/broker_prover_facade.ts @@ -1,6 +1,5 @@ import type { AVM_V2_PROOF_LENGTH_IN_FIELDS, - NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, } from '@aztec/constants'; diff --git a/yarn-project/prover-client/src/test/mock_prover.ts b/yarn-project/prover-client/src/test/mock_prover.ts index 8ce26fcf99f4..59b9d4c5a7c1 100644 --- a/yarn-project/prover-client/src/test/mock_prover.ts +++ b/yarn-project/prover-client/src/test/mock_prover.ts @@ -1,6 +1,5 @@ import { AVM_V2_PROOF_LENGTH_IN_FIELDS, - NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH, } from '@aztec/constants'; From fe87c0ca456cf06618187a21d23e5b8328f03d6d Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Thu, 16 Jul 2026 23:54:00 -0300 Subject: [PATCH 03/10] fix: map L1ToL2MessageBundle messages to a fixed-length Noir array The generated L1ToL2MessageBundle.messages type is a fixed-length (1024) array, but the bundle's messages field is a plain Fr[], so mapFieldArrayToNoir inferred length `number` and tsc rejected it (TS2322) at the six block-root mapper call sites. Pass MAX_L1_TO_L2_MSGS_PER_BLOCK explicitly to produce the fixed length. --- .../noir-protocol-circuits-types/src/conversion/server.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts index e8bddce5e8fa..4a2f7e6dc541 100644 --- a/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts +++ b/yarn-project/noir-protocol-circuits-types/src/conversion/server.ts @@ -12,6 +12,7 @@ import { CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, FLAT_PUBLIC_LOGS_PAYLOAD_LENGTH, MAX_CHECKPOINTS_PER_EPOCH, + MAX_L1_TO_L2_MSGS_PER_BLOCK, type NULLIFIER_TREE_HEIGHT, ULTRA_VK_LENGTH_IN_FIELDS, } from '@aztec/constants'; @@ -831,7 +832,9 @@ export function mapRevertCodeToNoir(revertCode: RevertCode): NoirField { function mapL1ToL2MessageBundleToNoir(bundle: L1ToL2MessageBundle) { return { - messages: mapFieldArrayToNoir(bundle.messages), + // `messages` is a plain `Fr[]` (padded to the cap) rather than a fixed tuple, so pass the length explicitly to + // get the fixed-length `FixedLengthArray` the generated `L1ToL2MessageBundle.messages` type requires. + messages: mapFieldArrayToNoir(bundle.messages, MAX_L1_TO_L2_MSGS_PER_BLOCK), num_msgs: mapNumberToNoir(bundle.numMsgs), num_real_msgs: mapNumberToNoir(bundle.numRealMsgs), }; From 7104e092d7792d88e520be91fe992115a253785b Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Fri, 17 Jul 2026 00:08:51 -0300 Subject: [PATCH 04/10] fix: use top-level import type in checkpoint-proving-state Removing the value constants (NUM_BASE_PARITY_PER_ROOT_PARITY, NUM_MSGS_PER_BASE_PARITY) left an @aztec/constants import whose members are all inline-type, which @typescript-eslint/no-import-type-side-effects rejects. Convert to import type. --- .../src/orchestrator/checkpoint-proving-state.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts b/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts index 3f2f61d90ae4..9af153046a78 100644 --- a/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts +++ b/yarn-project/prover-client/src/orchestrator/checkpoint-proving-state.ts @@ -1,9 +1,9 @@ import { SpongeBlob } from '@aztec/blob-lib'; -import { - type ARCHIVE_HEIGHT, - type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, - type NESTED_RECURSIVE_PROOF_LENGTH, - type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, +import type { + ARCHIVE_HEIGHT, + L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, + NESTED_RECURSIVE_PROOF_LENGTH, + NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, } from '@aztec/constants'; import { BlockNumber } from '@aztec/foundation/branded-types'; import { Fr } from '@aztec/foundation/curves/bn254'; From adaf3a20b8c170c83a9c251567a186326dd78eb5 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Fri, 17 Jul 2026 01:21:01 -0300 Subject: [PATCH 05/10] fix: feed a valid sha-truncated inHash in bb_prover_parity test ParityPublicInputs requires inHash to be a 31-byte (top-byte-zero) sha frontier root; the InboxParity circuit passes in_hash through unconstrained, so a raw Fr.random() input reappears in the output and fails the constructor check. Compute inHash from the messages instead. --- .../prover-client/src/test/bb_prover_parity.test.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/yarn-project/prover-client/src/test/bb_prover_parity.test.ts b/yarn-project/prover-client/src/test/bb_prover_parity.test.ts index 3116317db60d..fbb920407ead 100644 --- a/yarn-project/prover-client/src/test/bb_prover_parity.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_parity.test.ts @@ -5,7 +5,7 @@ import { createLogger } from '@aztec/foundation/log'; import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server'; import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; -import { L1ToL2MessageSponge } from '@aztec/stdlib/messaging'; +import { L1ToL2MessageSponge, computeInHashFromL1ToL2Messages } from '@aztec/stdlib/messaging'; import { INBOX_PARITY_SIZES, InboxParityPrivateInputs, type InboxParitySize } from '@aztec/stdlib/parity'; import { TestContext } from '../mocks/test_context.js'; @@ -48,7 +48,9 @@ describe('prover/bb_prover/parity', () => { // Fill the rung with real messages so `numMessages === size` (the largest circuit for that rung). const messages = Array.from({ length: size }, () => Fr.random()); const proverId = Fr.random(); - const inHash = Fr.random(); + // The in_hash is a sha256 frontier root (top byte zeroed to fit the field), which `ParityPublicInputs` enforces; + // compute it from the messages rather than using a raw random field. + const inHash = computeInHashFromL1ToL2Messages(messages); const inputs = InboxParityPrivateInputs.fromMessages( messages, From 5831c6b8093266356452c7969ddd86f92afc160d Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Fri, 17 Jul 2026 17:03:42 -0300 Subject: [PATCH 06/10] chore(fast-inbox): regenerate checkpoint-root sample inputs for inbox_parity (A-1427) --- .../Prover.toml | 537 ++++++------ .../crates/rollup-checkpoint-root/Prover.toml | 777 +++++++++--------- 2 files changed, 656 insertions(+), 658 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root-single-block/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root-single-block/Prover.toml index 92a2a11a0c14..5db72505752d 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root-single-block/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root-single-block/Prover.toml @@ -484,7 +484,7 @@ proof = [ [inputs.previous_rollup.public_inputs] timestamp = "0x0000000000000000000000000000000000000000000000000000000000000186" - block_headers_hash = "0x1ef26586a51a44301a0996d235a06afd274f22bcda552d34db39b6eaec6b95f2" + block_headers_hash = "0x208a3cb0fe159e10bedc972a94e90162968d3f9a85ebdb04152766132c98f584" is_first_block = true out_hash = "0x00746f2611b7b24448263e846ba73bf1861fc6e68dbc605414405a520957a902" accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -493,8 +493,8 @@ proof = [ [inputs.previous_rollup.public_inputs.constants] chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" version = "0x0000000000000000000000000000000000000000000000000000000000000000" - vk_tree_root = "0x21cd94941458effa5bf748eb3839418d3deb6bdcd2c04148ca733561265326a5" - protocol_contracts_hash = "0x0a1f22b72996215e178699fff463a6ca5e3c7d5ffe66e183490eb766ec1c83ae" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" + protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" slot_number = "0x000000000000000000000000000000000000000000000000000000000000000f" @@ -513,7 +513,7 @@ proof = [ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000001" [inputs.previous_rollup.public_inputs.new_archive] - root = "0x046fb3e3937d8fe32eabae9d4658ef26f142bff7471c22d38f0022dc4701e96f" + root = "0x2add6cae011a2faa69aa2bc34c04687c5fbeaae52aea0f903adb94762d03971f" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.previous_rollup.public_inputs.start_state.l1_to_l2_message_tree] @@ -576,10 +576,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x1e1c597744057b88e39a9780ed087c39b1fc42864e05ef03a59ebd9e96b70b00" ] state = [ - "0x07aa9c9235649258fde22f501f5924334f83da46eee7b3475fe0201ce7e467bc", - "0x066bc9f6f0abacc35b86f3563ae99661126281863f1af219c64944d00106f2f4", - "0x02cb2d6f4dc0fedcaf1bd4b4097a20c8d0e4efc642035f96e8f8e221fdb0da9c", - "0x0869a6c59bb3741ad2e89e9dcc7b29301d98755950a1e801171189a3333bf4af" + "0x06084df33e0811da8ace72d79c2824a36d6bec3651ccb23d13f6ae9962295300", + "0x214def13bbb6728a31cbd5abedd397e1a966d1e61b08dd2c4543e25b6c01fa23", + "0x174a927fc7f8d5a40b9d9b76056de635aa0b3e63c245508278b2acf001b4043b", + "0x11f525d74163bc4b0a390db4e5066a1d641776946a8c3642c9c3467ed5d26656" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -623,13 +623,13 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollup.vk_data] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000a" sibling_path = [ - "0x2ce400d5cea2dc3231b12ddf2e90aa9df5994e656b5c607a1766e18c88981791", - "0x2bcbfd2ace3467d92572d8c6f115a6f14527c97c7a0e1a08d20ca37c956dc021", - "0x1aa2c311f1d6eea148dd66af34720e2fe4ba1da63ff651b63936c6bc06d426bf", - "0x2d425e446b233c409ab688f27e6a8d41e20b06b8b769f68be61d032ba6cba44a", - "0x1a713453d218bb2fc34986e0392f018dc66cd5828df84413c10055d3c4ad7d24", - "0x187a7b8872d1297bc15f7171f32c36e5e60b53c4145ef62b1899c04fd7220fdf", - "0x2ccaede67145021b6b586f45936dfbdacb151c3e362621c3598ffd60e95b02a0" + "0x21b05869a0933a9cc299b7ef0465dff532b164271541fe768f96c81a9a0ef271", + "0x27bb42fdafee24ce9055d6a52cd49d943c577b8f98284557d76900b540761ce3", + "0x196cbe2980734bc5d21b53464a1d00c06dad0febdec75822d79d6933dff40579", + "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", + "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollup.vk_data.vk] @@ -637,122 +637,122 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000015", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x00000000000000000000000000000079dab4ab42318551968c75cda92b7a3602", - "0x000000000000000000000000000000000008c1a2ba74fe2ab3aba1d302fa3a90", - "0x00000000000000000000000000000034d8e044910c7d05a181ed583cfeb566b1", - "0x00000000000000000000000000000000001451406c9cda269469cfcc9ed665a1", - "0x000000000000000000000000000000693586c6615cee20730ccf30ae13aea410", - "0x00000000000000000000000000000000000e22eae336aa00dcc9ebb72cd54272", - "0x000000000000000000000000000000fb965826d5f9a18a80e61d2ed6cdd158d5", - "0x00000000000000000000000000000000002dd8087579d42525c0426a25acc635", - "0x000000000000000000000000000000a7a39ddffd77cdc15be679299124388373", - "0x00000000000000000000000000000000000b35a10516f015e5c54fb0372dd98b", - "0x000000000000000000000000000000f6cf3445cca92b326c70eaa8c67966dea0", - "0x0000000000000000000000000000000000200ee523c2005ee77a8bc9a6903af3", - "0x000000000000000000000000000000c84dc8d4f6b987dfa7ab2dce38ba809e63", - "0x00000000000000000000000000000000000ce37484999c54eee927809197793f", - "0x000000000000000000000000000000f20265a6d363bbd9cbcb121555e21c1e57", - "0x00000000000000000000000000000000002eb2db4f2d8ca9aa76e9b4371c6a36", - "0x0000000000000000000000000000006b072eb1aa0efcc86fb69506cac9ca22fe", - "0x000000000000000000000000000000000001ae64d75965cd9c0aa21c4d486a01", - "0x000000000000000000000000000000ec84c3ccc415bbe3a6c4f940fdc5908fa7", - "0x00000000000000000000000000000000000ec8ba765480f60787f0464fc64e4d", - "0x000000000000000000000000000000537a35da99cf56d59580191b86de838240", - "0x000000000000000000000000000000000029e113cc7fe08a3fb034e302802f68", - "0x000000000000000000000000000000531334acbc5dd226c7077196f950d79619", - "0x00000000000000000000000000000000000adeb917a13e619c4f7fba6e9588aa", - "0x00000000000000000000000000000013e4441cf7e4a6a389a39dc21c24275be2", - "0x0000000000000000000000000000000000017aab51c397a2d57778ebe5022782", - "0x00000000000000000000000000000009adaeede4203a41f991031ec50f09bb98", - "0x00000000000000000000000000000000002c9fa3c370cbb1f1bc9128d27307d8", - "0x00000000000000000000000000000084c91d0858dd12114f3b239ff2aef9b06b", - "0x000000000000000000000000000000000018dada2d96a801a79c9db21e8beae3", - "0x000000000000000000000000000000e39105b49d9c7b8a4688a56fac94e9af13", - "0x000000000000000000000000000000000028a37b11742c655efb4025be1d3df3", - "0x00000000000000000000000000000016a898b332fe1651872fda3dff07e3740c", - "0x0000000000000000000000000000000000142efc6842d18ce5385d82771d0e38", - "0x0000000000000000000000000000007c74489df9e707ab81f0a17649be05f216", - "0x00000000000000000000000000000000002591cd50ae6724ed1f391b30dd7fb3", - "0x000000000000000000000000000000d162980304fa1148cd43f301ec9a0f8a5c", - "0x00000000000000000000000000000000002d1414a5b2e94449954371c2253987", - "0x000000000000000000000000000000419af71b3c489e39bf3f072ee1a16efd58", - "0x00000000000000000000000000000000000174ca0cddaf9bff2e5d3a5604405c", - "0x0000000000000000000000000000004fa499bd5602b4e1e108dc806f68b9c37e", - "0x000000000000000000000000000000000003da67199b7a58c3e37c5b59e860d6", - "0x0000000000000000000000000000000db26987d81035b8e8ed3ed9d4325e5eee", - "0x00000000000000000000000000000000002437bb2e3a307cd6e29cbf13e718d0", - "0x00000000000000000000000000000039b5889bb0293821381f244fd3ee9ef9d5", - "0x0000000000000000000000000000000000239a7bf5f6f993c74eeffb878875dc", - "0x000000000000000000000000000000c40aa7e04fccc54a36c5090873235ccc79", - "0x000000000000000000000000000000000025a9dd3cf3d713768af5f00f6664c2", - "0x000000000000000000000000000000ae93bc385b1b616301e8572ef0a680ef67", - "0x00000000000000000000000000000000000976baaf45ab770d22f59798465446", - "0x0000000000000000000000000000009e2dc58588880a36db393964b8dedc0061", - "0x0000000000000000000000000000000000237ee0538b747ffb74bf7999e2b981", - "0x0000000000000000000000000000002190f23af418b3134423ed049c0413a708", - "0x00000000000000000000000000000000000cfdb143d7f4b79709e18eb687d4cc", - "0x0000000000000000000000000000005363f5c7f19c745c8ce9a1adf717d119c5", - "0x00000000000000000000000000000000001673825d427589be8fb5afc0ff8d5b", - "0x000000000000000000000000000000c8a5fb01e9591918b64a2b31b72810ca15", - "0x0000000000000000000000000000000000267057b375ce1e8be05afbc4b4ede1", - "0x000000000000000000000000000000fb83196058d2289d54ac0b9c7c74f71e59", - "0x00000000000000000000000000000000001bd5feee5d463869c791e3d9ebc901", - "0x0000000000000000000000000000005bfdcf5f9e438df3386f3f4c428711f680", - "0x00000000000000000000000000000000002f2d6534afc93a07d9f9f29808df69", - "0x000000000000000000000000000000f5eea9efd1b96726430fbb6984898e6141", - "0x0000000000000000000000000000000000022dd9c9a3c37048bc618ff8bc33f7", - "0x0000000000000000000000000000000bc4910c0229f5b686288b0ed718bbf54e", - "0x00000000000000000000000000000000002cacabb452b57706fc5a9d73ce7fc3", - "0x000000000000000000000000000000dcdee06ff6d134115fec71b8a59420da3e", - "0x00000000000000000000000000000000000ff86c72bbdf0d1723431d3d93a881", - "0x000000000000000000000000000000d95d30c75b2282e12897b3f4197793800c", - "0x000000000000000000000000000000000012e6dede1ecd364bd2b59e86b67398", - "0x000000000000000000000000000000aea00037cd201418b6997bbc59e3765897", - "0x0000000000000000000000000000000000279e5e0c80fa6363921b4fe45b595c", - "0x0000000000000000000000000000002d8c84b011b75d207e79cd5241c0dead49", - "0x000000000000000000000000000000000011027ce550f19801d376aa2c32a999", - "0x00000000000000000000000000000077d5b4bb378991d1a24dc254ff3afe9776", - "0x00000000000000000000000000000000002ad5101b54df2715d3f9678f135f70", - "0x000000000000000000000000000000d8d076825de1a1993d84506e5fb809d514", - "0x00000000000000000000000000000000001d5a6c406b11e9c10d62235b8be738", - "0x00000000000000000000000000000037bbb24c535a00c87158eb6071a7795bee", - "0x0000000000000000000000000000000000281c450c2bf5fd89b668e95d01bcba", - "0x000000000000000000000000000000fffd506e21286be7fb2071bca3b6b057b0", - "0x00000000000000000000000000000000000671c9d2f7a9a4eeb2377e7189673a", - "0x0000000000000000000000000000002734d26521b70e760bfdeaace098529bf6", - "0x000000000000000000000000000000000002ae50f77eb073e476758792bda14f", - "0x000000000000000000000000000000ec7be0fbc1672891b06528641d04eceed5", - "0x00000000000000000000000000000000001f6dbb332d569ed1b888ce70d000fd", - "0x0000000000000000000000000000005099c9cfb9472cd372cc6ae3c5ee0b6946", - "0x00000000000000000000000000000000001586887c7cd18a72be4b56c1ee9e24", - "0x000000000000000000000000000000d60718906a8b40ce8145eb1afad8d4e2ff", - "0x00000000000000000000000000000000001fee4e29f71995c1bfc805fa7a3cda", - "0x000000000000000000000000000000adf0b56f6dcc8eb96150e3f31f1c0f7ee9", - "0x000000000000000000000000000000000013169d7dad39434f7fd664af605b18", - "0x0000000000000000000000000000007f60a72fd00dc880c3cf2b55550ed1e02c", - "0x00000000000000000000000000000000002f949f3fdca40206be9b13c69994fd", - "0x0000000000000000000000000000002c90f8dbbc86cbb491dd3bbbf774a93d6d", - "0x000000000000000000000000000000000026a7754d95bb00a3787da4f9acdfad", - "0x0000000000000000000000000000006b6bb428d9de0e2aae45ac7b667c1db491", - "0x00000000000000000000000000000000001dc127e020246e3463e235afb6b176", - "0x000000000000000000000000000000d516e495baeedc69f1efded0bcdb9b43fd", - "0x00000000000000000000000000000000001f404505c45ea1e1164b8a25d7463f", - "0x000000000000000000000000000000ea463d787019bce57596592c85cc50425a", - "0x000000000000000000000000000000000005ad5d922ca02e1b6c075a039fc218", - "0x0000000000000000000000000000003fc1b0cd587a6bff7ed39a300f0ce6892a", - "0x0000000000000000000000000000000000221332a5619ac719e70000bbf649ff", + "0x000000000000000000000000000000cf2a702e96bbbe5ac008f4f277c0d250eb", + "0x0000000000000000000000000000000000087ce4ee48dbfc015f06c1763c5239", + "0x0000000000000000000000000000008d42b724c37a913d7a5b994f4572740667", + "0x000000000000000000000000000000000023692a05ae3b76053633b3abf15253", + "0x000000000000000000000000000000255a61af1e11c2c00b732ecaa94329afdc", + "0x0000000000000000000000000000000000149df684fde38bdbfd676709893e92", + "0x000000000000000000000000000000d16e3f9132ca3344573770664919ca4068", + "0x00000000000000000000000000000000000ea348d7e01672556a386a149b8af8", + "0x00000000000000000000000000000080932903a97d817d697469cc4510c0b08c", + "0x00000000000000000000000000000000002d13575951a6dcce130eb32afc2e5c", + "0x000000000000000000000000000000d0111922d2459ad2180439139df2808f38", + "0x00000000000000000000000000000000000562a09897d6293cf85c879c37be00", + "0x000000000000000000000000000000412fc6f0e8f7adc114758e1785c709a67d", + "0x00000000000000000000000000000000000830b377f541c4310cde030b08cb91", + "0x000000000000000000000000000000fad5ecf349c6da3768be1b4282e3175d71", + "0x00000000000000000000000000000000001a0f8ca1f4ee77941f2e565da1a842", + "0x000000000000000000000000000000c4add37f10869cc94bb788aba7e40fa21a", + "0x00000000000000000000000000000000002c356385e26d3bced3606c9d634582", + "0x000000000000000000000000000000545a771e3a661ad0fe7516f8e3854b8b39", + "0x00000000000000000000000000000000002f607cf7edda4d345540d886b7b66d", + "0x0000000000000000000000000000009f98165c9f39940ee67940b105d09744e7", + "0x00000000000000000000000000000000002c73b9681021ee2103c7df20a985bd", + "0x000000000000000000000000000000dbfb3dbcfde7ac15bd841b876b31c00890", + "0x0000000000000000000000000000000000039f091ed585acfc694f23411ba5f4", + "0x00000000000000000000000000000048fe71f72808e64e21b630d5be985cb3c0", + "0x000000000000000000000000000000000014ccc7c54c5859ce789122703c09b7", + "0x00000000000000000000000000000093090e40108dad3330fb1163bdf2f9df36", + "0x00000000000000000000000000000000001b44a0bd7343f7e3c029e145a7a0f0", + "0x00000000000000000000000000000019064d6e42cbc110b2aff67863843f99a1", + "0x00000000000000000000000000000000001b47532036f3cc7da9869c441839be", + "0x00000000000000000000000000000057593add48ed37f0ae51949f9cefbf5ef6", + "0x00000000000000000000000000000000001ac725f39f2914f584e0ed3d0838a1", "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", - "0x0000000000000000000000000000003eb107d05477ef4d5ea316c534287cefa7", - "0x00000000000000000000000000000000001ec119b93bc74f6edc75d035e7723a", - "0x0000000000000000000000000000003e1f5cab1d844cf463d94f241d14256e80", - "0x000000000000000000000000000000000009f3f1115b8251171b18d077da1ee0" + "0x000000000000000000000000000000c24be3d5a24525e2b89ba9b0babaffc702", + "0x00000000000000000000000000000000002d75bac4aa7c28af5bf7e0a12a0f16", + "0x000000000000000000000000000000dd0483861422f1312c0850e56d5b93154a", + "0x000000000000000000000000000000000010558511f18b937ff5b2c2acd7ccf6", + "0x00000000000000000000000000000013e4441cf7e4a6a389a39dc21c24275be2", + "0x0000000000000000000000000000000000017aab51c397a2d57778ebe5022782", + "0x00000000000000000000000000000009adaeede4203a41f991031ec50f09bb98", + "0x00000000000000000000000000000000002c9fa3c370cbb1f1bc9128d27307d8", + "0x00000000000000000000000000000086f83dd5fa9178c3c683137ef6a3018c50", + "0x00000000000000000000000000000000000af8d38dc8b77bda3980c013658848", + "0x0000000000000000000000000000007307ee1df3133617f2e5a4d2bbb01f449f", + "0x00000000000000000000000000000000002e27ed3b0658fb9d44ebdb9e459679", + "0x00000000000000000000000000000037ec6f22980fbc5a795d816788a7c7fd87", + "0x000000000000000000000000000000000022973f4a5a82fd556aad37856af147", + "0x000000000000000000000000000000f6f48a91dac1f229b2b35e0fe3ef98abfb", + "0x000000000000000000000000000000000011b923ec095c6746d167d68a4b20e8", + "0x0000000000000000000000000000002d4825c2a902a49bad97fcf3510dea717e", + "0x00000000000000000000000000000000000a00b7e38d47dba44d1fa8d9e462d8", + "0x000000000000000000000000000000f14f2adda7c6729037603c11f6df57543b", + "0x00000000000000000000000000000000000bd236e34f1859cda4709a1895cdab", + "0x000000000000000000000000000000d3678bafd3a8f024c9373604ff3b9445e5", + "0x00000000000000000000000000000000002e41d5db4cb0fc20648504962c7e38", + "0x0000000000000000000000000000004ea6f803bdb1c654c7a3e38c2fc5747710", + "0x000000000000000000000000000000000012b2e307e4788fa75f5058585d1ba3", + "0x0000000000000000000000000000000aa62cd5ebf2ffdc52b78a3af8c439f083", + "0x000000000000000000000000000000000022e7f907354ae7ba479b2e162c2f69", + "0x0000000000000000000000000000002256de9ae3b3221dbadac5f8d7631bcb68", + "0x0000000000000000000000000000000000273453a329260d2302e4baea571bb0", + "0x0000000000000000000000000000001072d6d97a037355322cbcabe2fc386b6b", + "0x000000000000000000000000000000000024ad92d8eda5a97f51b847d96673de", + "0x000000000000000000000000000000d705cada5f49e0755ab5b25ae8b501ff1f", + "0x0000000000000000000000000000000000270554cc3a8a0a56751faa58835d58", + "0x00000000000000000000000000000009d082bb9fafab35b8e098aa12fbf59093", + "0x00000000000000000000000000000000000bcb7d6ca8b742b94b04f746c70db6", + "0x000000000000000000000000000000c77841ac534683173fc6b72068c8708c88", + "0x000000000000000000000000000000000027d93e6ccd49d0ad6fa7ce35a03831", + "0x0000000000000000000000000000007b8e5c440597cbb56a42b07032440282a3", + "0x0000000000000000000000000000000000263647505c66c8cd3939647d017fe2", + "0x00000000000000000000000000000007c0a9c4740001c2ab9708028921855ef3", + "0x00000000000000000000000000000000000cc3457d166e82882d5dfcd0851142", + "0x00000000000000000000000000000087f58fb22b0bf7c42ff4f6dbfe162b013b", + "0x000000000000000000000000000000000000933150f50b442408b5dfe1f3e0c7", + "0x000000000000000000000000000000c7a66235a171e2811d14e67fd0c3b5b956", + "0x000000000000000000000000000000000021a2a5436d34619b6d7e81bdd15cac", + "0x0000000000000000000000000000000e28a0630f5700ff16e99f46eae3403971", + "0x00000000000000000000000000000000000d16f238376b89d95c1f68dcae0454", + "0x0000000000000000000000000000007382cad6b54f2fb22f975d76efb0b81c49", + "0x000000000000000000000000000000000002e9b460093f90928ee18be9539629", + "0x000000000000000000000000000000c5e2e1eba84593c3974b0dba435b9d8f21", + "0x00000000000000000000000000000000000a1153cbb033dc5e2442c57cd4b5ac", + "0x000000000000000000000000000000128b93832bb99e1fc30eb659bb1f12de10", + "0x000000000000000000000000000000000014f6f3b35434f2ec365e5af8f5a48b", + "0x00000000000000000000000000000065273bd1933d4a63b541cc5354fd5d4373", + "0x00000000000000000000000000000000001caebff6fffa1d592accd502bdb7fb", + "0x000000000000000000000000000000b8dd3bd4a4cd0be01872d571f052dc46d6", + "0x00000000000000000000000000000000001aa7e1f4391a8bd527a8acf40043b0", + "0x0000000000000000000000000000006e5bf0f133423c77a7087658f993d00385", + "0x000000000000000000000000000000000017b27b225edc7df32ba6cc84b51cb2", + "0x00000000000000000000000000000036eb980311730f58f612deb101f9412df5", + "0x0000000000000000000000000000000000000e2664d7371b1b9364965876b56b", + "0x000000000000000000000000000000f9c31157b034c0997d71ccea0d28786c1c", + "0x00000000000000000000000000000000000a8006c31672351b08357625f0a471", + "0x000000000000000000000000000000f375c71b6d5cdb28f19b1ba2114ddb6983", + "0x000000000000000000000000000000000006a3614fa0dcaab2e8cf7fadd6687d", + "0x0000000000000000000000000000003d0d74919860ea101002fb3f240d206037", + "0x0000000000000000000000000000000000292827151f406fa7fc8c7af0ddb945", + "0x000000000000000000000000000000e4b984d5524e3603b6be2d74151c4d5726", + "0x00000000000000000000000000000000001bd0e811be863de0320210450fce89", + "0x000000000000000000000000000000ff5983ab316e997a671309660721bca669", + "0x0000000000000000000000000000000000155c3a8f63cafaeb9e98021d6f9427", + "0x00000000000000000000000000000015412a7441c03ad14362c7294bb6ef0509", + "0x00000000000000000000000000000000001513442f916c36196b3b24f5754fc5", + "0x000000000000000000000000000000755c5d5d06aec5cee2dd5c0e42f4dbdefa", + "0x00000000000000000000000000000000002551ff5c72c19fcabc8e6333a439a9", + "0x000000000000000000000000000000737d53ea6c25fe68fefe463a6d34fe8060", + "0x000000000000000000000000000000000027cfa68801ec744a103dbf2ed5fd1c" ] - hash = "0x0bfffaacc0ace22638ea88b1222faf3cdc201fe0b8a9be25c963a8a8558af231" + hash = "0x0e32b8d6a50ee381d8f7b95ec25454fbe007b2ebecf6c32b5e6179847e9cd080" -[inputs.parity_root] +[inputs.inbox_parity] proof = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", @@ -1166,19 +1166,18 @@ proof = [ "0x000000000000000000000000000000000000000000000000000000000000019a" ] - [inputs.parity_root.public_inputs] - sha_root = "0x00aa91330eafec1db9b1ca2e1733b213a28bfde0499aca2506acc8c00aae7ba3" - converted_root = "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d" + [inputs.inbox_parity.public_inputs] + in_hash = "0x00aa91330eafec1db9b1ca2e1733b213a28bfde0499aca2506acc8c00aae7ba3" start_rolling_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" end_rolling_hash = "0x005b0c15d0f641e148adfec120a12eadbf8343e009d350aa593b6d78dbae9568" num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" - vk_tree_root = "0x21cd94941458effa5bf748eb3839418d3deb6bdcd2c04148ca733561265326a5" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.parity_root.public_inputs.start_sponge] + [inputs.inbox_parity.public_inputs.start_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.parity_root.public_inputs.start_sponge.sponge] + [inputs.inbox_parity.public_inputs.start_sponge.sponge] cache = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1193,10 +1192,10 @@ proof = [ cache_size = "0x0000000000000000000000000000000000000000000000000000000000000000" squeeze_mode = false - [inputs.parity_root.public_inputs.end_sponge] + [inputs.inbox_parity.public_inputs.end_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000400" - [inputs.parity_root.public_inputs.end_sponge.sponge] + [inputs.inbox_parity.public_inputs.end_sponge.sponge] cache = [ "0x00000000000000000000000000000000000000000000000000000000000009db", "0x00000000000000000000000000000000000000000000000000000000000009d9", @@ -1211,137 +1210,137 @@ proof = [ cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false - [inputs.parity_root.vk_data] - leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000016" + [inputs.inbox_parity.vk_data] + leaf_index = "0x000000000000000000000000000000000000000000000000000000000000004c" sibling_path = [ - "0x2232a08163cdece776b52f4e83935659e922a56096b3e3282b416cc3900e2c5d", - "0x219f2964b7428a78bbc43f6eafcfaaec7d7e97e24030b9d827674e63997843da", - "0x1644c5396c5bae2a881b3b66fc2f0ac7e6f28ebe3dbeede644d6cc1692b3f2c8", - "0x20738d93e695096c6290e7c275252b87c3fc8a419bd4d9991368484bcbd446a7", - "0x2ea23c9cbeafe466f3725ea750741efad48745849cf61628cb3cd0e6156c6246", - "0x187a7b8872d1297bc15f7171f32c36e5e60b53c4145ef62b1899c04fd7220fdf", - "0x2ccaede67145021b6b586f45936dfbdacb151c3e362621c3598ffd60e95b02a0" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x19f1a0c09db4cd026f686e9c8fb45501a9fefb4eb1b4c6c328a51343a0094eeb", + "0x00f0288e12c8d2cfc9a3367452f5cde532eb491b48a9973413f76776f21078d7", + "0x0a1d41f1f9a82ceedcca0a62137d817577e4ff56a352e1fcd6757134719f67df", + "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", + "0x1434e6e2d5db1053ab8a3be58704509c799ee17e109c77f441f7bf1755400249", + "0x1b82d88b0126f67d4dd805387fb3904a609c9926c1c9f3d4af2d35f6699dd2a8" ] - [inputs.parity_root.vk_data.vk] + [inputs.inbox_parity.vk_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000022", "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x000000000000000000000000000000e6555ce9d2ff0425d8225ac1acffda90c8", - "0x000000000000000000000000000000000007232913ee2a0a700d9beea95e6a8b", - "0x000000000000000000000000000000864565901183926e0fa3af90665de020c3", - "0x0000000000000000000000000000000000075c1943d529628111e6fef8d1f621", - "0x0000000000000000000000000000002c37d5e97d9c1b7b25a81b2fd220ec5c07", - "0x00000000000000000000000000000000002991b551bf293dcc07a5e2ae8f1ce6", - "0x000000000000000000000000000000982dd79bdb2fe38bf3ef687480faea26c4", - "0x000000000000000000000000000000000007058d5c60125e897c9d240dc90c35", - "0x000000000000000000000000000000649cf2584ebd3c40994e0736b85affce19", - "0x0000000000000000000000000000000000043b116dbaea584b1819ac2a8d81f2", - "0x000000000000000000000000000000d587bfc4d08f449fe3d5545dd97784208a", - "0x00000000000000000000000000000000001156b8fd13ec84f54ce55669949b88", - "0x0000000000000000000000000000000f1578b4dfe305f2ab7fa83e8ce9841cf7", - "0x00000000000000000000000000000000001ae848fe9d7c70a82bc2130e3064bc", - "0x000000000000000000000000000000a527f6cd93c76f12f247317195d3889637", - "0x000000000000000000000000000000000008e18f1a2de83f830272a9296b7c53", - "0x0000000000000000000000000000005fb9a2ced16e73e0930ecbd8a1b84ebb93", - "0x000000000000000000000000000000000016254886668acd27ac79e2e07c9086", - "0x000000000000000000000000000000c2bfc42dd99eadfa8ad72750d82e185e97", - "0x0000000000000000000000000000000000014d4de4615fdab99078db5bd03622", - "0x000000000000000000000000000000b6dcf36aade509b3e14d030a3af7e3ef21", - "0x00000000000000000000000000000000001f2d620714581940dc87cfaa01a6ac", - "0x0000000000000000000000000000003073dd35723793fd9f753c3522ccfa8aa6", - "0x00000000000000000000000000000000002a9375d41cd350db39b2e4b2f70a8c", - "0x000000000000000000000000000000afe82998fe273ae1f72b85bd531a55a3d8", - "0x000000000000000000000000000000000000ef59f9f6294bebc9efde4007ee44", - "0x0000000000000000000000000000003f67a2eb12485f4adc99062de9153b4fd9", - "0x000000000000000000000000000000000022b799691d6815df364fea9ce78434", - "0x000000000000000000000000000000b85c87583ea9986e1c603df6406d1986c3", - "0x0000000000000000000000000000000000088022933467474bbbd147ce2d09f2", - "0x00000000000000000000000000000045e62752ace57f1c87c34be658309fdec1", - "0x000000000000000000000000000000000004c7207c9f34ccec575a0f8d80ae63", - "0x0000000000000000000000000000001366b0129ddaa35e0b823c73b40b1ce27a", - "0x00000000000000000000000000000000002e49e8876e2fc10e8040f1728ce61a", - "0x00000000000000000000000000000004cfdfba2f54b65bc88585669ed42a2f35", - "0x00000000000000000000000000000000002872cc8bebabf139cdda0ed0663e85", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000015a750309a93db60459bcc7c30bf555279", - "0x00000000000000000000000000000000000c7279f4c2b3cba68125274a31a286", - "0x000000000000000000000000000000557bdaa820100dc626b1c51d37c9e3f4bb", - "0x00000000000000000000000000000000001ea1094926cff3c4c7322a770d40de", - "0x0000000000000000000000000000008386dc3f48c643a4dd233ff8b04bab0884", - "0x000000000000000000000000000000000012e62f7cd00aba93e3c0d63ff315b9", - "0x0000000000000000000000000000007d8e61ee96ed76563c1b8d0d7a404306e6", - "0x00000000000000000000000000000000000d9a4b8e36ef65240a2474e5d1b4c9", - "0x00000000000000000000000000000023d348796b28c5c04ae5f273c222fe96a8", - "0x0000000000000000000000000000000000230ec5f3b173df81a1ca028ad39936", - "0x00000000000000000000000000000096d96efd22d432879e8e6986a0796b3db7", - "0x00000000000000000000000000000000000cb27a832ca1a4d3910b174d9bd505", - "0x000000000000000000000000000000242cbeb71d7525891b2f73536d7c9029a8", - "0x00000000000000000000000000000000000f118f3902fa251724ab418696a0fd", - "0x0000000000000000000000000000000c747a26db36d322be9f19d4713c2e0319", - "0x00000000000000000000000000000000002386f2a1978d5eb12091b0cb4a84b1", - "0x000000000000000000000000000000e49539821f642e85b714fce0ae9eade2ff", - "0x000000000000000000000000000000000014bf86bc264e071790c5861696e810", - "0x0000000000000000000000000000001aec230b12d35a377ba5fc19c324b8e0f4", - "0x00000000000000000000000000000000002fc3721cc9d30a7a2b8667d8d77695", - "0x000000000000000000000000000000b9378a6a9cfc58333f9bf69b09df8ddeb2", - "0x00000000000000000000000000000000002cf26b1d9ab156d970211f24110887", - "0x000000000000000000000000000000cd1f67a2dda433ed5aef39afa6bde07a0c", - "0x00000000000000000000000000000000001bdb0b7fb580386e9a65387ee9a2f0", - "0x000000000000000000000000000000162fce1512cf27555119e9eb6be016ae6f", - "0x0000000000000000000000000000000000219ad705e5e9c4b5e8a873e6277687", - "0x000000000000000000000000000000534fc72815a3917362e2b198cfbc05b55c", - "0x00000000000000000000000000000000002475b9723f6b95b018954bad031b6d", - "0x000000000000000000000000000000da7f713dee3e0ada3f8298813741a93d1c", - "0x00000000000000000000000000000000000d70ab42ed02ad092b4fba2510fd01", - "0x00000000000000000000000000000031a43207c9abd482565fa25a310673b44b", - "0x00000000000000000000000000000000002d990b9b116c2c3f8cc07cec41f66f", - "0x000000000000000000000000000000eeab945307244cdad79966153f94eda446", - "0x00000000000000000000000000000000000b8e5789090f3e45a46b4d66bb2105", - "0x00000000000000000000000000000001c0dd952d930ab73b3542c01fa6ceb054", - "0x0000000000000000000000000000000000057e3ef739be1b18ee041e1df8b955", - "0x000000000000000000000000000000cc10a3766c5dae0f0e4604ebedce91de80", - "0x0000000000000000000000000000000000233a33a86e1e517f02cb8474b05944", - "0x000000000000000000000000000000aed1f153fe534d0863a2737c3da7117f38", - "0x0000000000000000000000000000000000302fbfd3e31925b85e94e37f8b899e", - "0x0000000000000000000000000000005b2161e319fa7bbad667bf76e0e7a46095", - "0x0000000000000000000000000000000000126478d0202a02054534182c9a1a2d", - "0x00000000000000000000000000000035a1f95916b4d48f275fabb52ba66cb11f", - "0x00000000000000000000000000000000002d002c1cfabfca75249a7e03510c16", - "0x000000000000000000000000000000ee110ff40a1d175d904e72e72a18c44b54", - "0x000000000000000000000000000000000001f3f5e602ff22aeae660b831874e5", - "0x000000000000000000000000000000e95f100ff2e7ba47ebd27cb76e8a5b022c", - "0x000000000000000000000000000000000016d722151f8995ebd938daff37ddfb", - "0x0000000000000000000000000000003084e48d703661f4dd3408bfeabdbc8d10", - "0x000000000000000000000000000000000000a41e983b26a4f6f1b54ac3cd06d4", - "0x000000000000000000000000000000f3f45567145e069d1f5a45894190fa3b69", - "0x000000000000000000000000000000000002ecfa46d5ed7a4590e4f2b9e51144", - "0x000000000000000000000000000000e1828b40eeb99ca090390f18802f84954b", - "0x00000000000000000000000000000000000a85ffb4f1e1b93f2f26d6b0e6b07b", - "0x000000000000000000000000000000036e3dfdee2967c143e075448e84f7c7f2", - "0x00000000000000000000000000000000001e53390e107b7ec1d2e4be2e7f9dff", - "0x000000000000000000000000000000335da2eabf61fe815bed48a42e96d5c666", - "0x00000000000000000000000000000000002d543183e0f8f3256889d2336a4932", - "0x000000000000000000000000000000af589bb9f1f72936c8271605f2a7ced655", - "0x00000000000000000000000000000000001523271aa6180969655e064601c2db", - "0x000000000000000000000000000000b8bc5823968906e102c6c14ca17bbc7ef4", - "0x00000000000000000000000000000000000868487cba0921565a4ed82196a4dc", - "0x0000000000000000000000000000002ec7b8c47313f5b39533ac8e7777adf487", - "0x00000000000000000000000000000000000b354658da6cc00930f33a45449545", + "0x000000000000000000000000000000328d1319c69d7e686b6ec27f5f8826f1d6", + "0x00000000000000000000000000000000001e5129f05687a0605e92998f362d22", + "0x00000000000000000000000000000016b8afcbfa53d116a63aa18f1305ac5354", + "0x0000000000000000000000000000000000010bb457863dd919b09ffa619278ec", + "0x0000000000000000000000000000000bc57f7730a7234dee675e439d79fdd3ff", + "0x00000000000000000000000000000000000eb3ccd01c8f9bcb569c3678b3bdd4", + "0x000000000000000000000000000000309d4a9ff9c28c81b3ab1ead81e118545a", + "0x000000000000000000000000000000000019e58c2c3d369fb0b5bd0ada5f1a52", + "0x00000000000000000000000000000032511092a06981ce1ac5cb12e6af8810db", + "0x00000000000000000000000000000000002184fb8c96926d717ac8356ef56911", + "0x0000000000000000000000000000000052f31cffba27db7a7697c73a687e798d", + "0x00000000000000000000000000000000000420a44a90550abe8a82948de4c5f5", + "0x000000000000000000000000000000552eb5ce6a1e83ee06636caea6a2505787", + "0x00000000000000000000000000000000001d68e034086c3bfc28287b93be153e", + "0x000000000000000000000000000000e6789f820241265c4a2ceb157cccda0a4f", + "0x00000000000000000000000000000000000ca13ea50c9c14bc0832b16a61e90e", + "0x000000000000000000000000000000407894f08a1839457acf02116214c13436", + "0x000000000000000000000000000000000014e7040f723b2fe2de9060a293d816", + "0x00000000000000000000000000000042387d2cd2b2664d10817060395f5f97d4", + "0x00000000000000000000000000000000000ff13eba3ce3e42ab168a243b27d82", + "0x000000000000000000000000000000e53814528e6d1e7d412387fca7d1f9b594", + "0x00000000000000000000000000000000002be14788e85833b10834b6e4d85ceb", + "0x00000000000000000000000000000034e2888e67d5cffdfb595c8e56b8595e63", + "0x0000000000000000000000000000000000209f3e0bd3ef2b680f2cd7b1e84e51", + "0x000000000000000000000000000000563cc437ecb7156ef5d87468328aaa0cb3", + "0x000000000000000000000000000000000001b5b362f9444dbfeed4f11bacd017", + "0x000000000000000000000000000000ffcf05ed417b3a4bdbe76a5da459d6c82a", + "0x00000000000000000000000000000000002b1da7f6e4bc380b6e35ca49bf5527", + "0x0000000000000000000000000000004dbda1adb8188198a8dcd576d6acd48378", + "0x000000000000000000000000000000000026b09aac709f7c50590491fe646cb6", + "0x0000000000000000000000000000009558d6fd4bdb0435ba53846c8074a6bf71", + "0x00000000000000000000000000000000002d71445044ebbba09bee463d922b78", "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", - "0x000000000000000000000000000000c31d2e09cd21e410458b05009cbe8d0748", - "0x00000000000000000000000000000000001801fad1d430c4f4be985b26989946", - "0x000000000000000000000000000000ad859142deed3648b2aec3e6b618816c65", - "0x0000000000000000000000000000000000098e8e5a844110f9e6dc2a6ec721b5" + "0x0000000000000000000000000000007d31a1e637b282aecf3a21d0476e5ada2a", + "0x00000000000000000000000000000000000cb87f762b2b5e3f3883b73c1c8454", + "0x000000000000000000000000000000cc0ebf25502a79d92048e99b1f7bf6089a", + "0x000000000000000000000000000000000016200201ae31e2f019b766d6c6c77e", + "0x000000000000000000000000000000ece2ccc928bd0ce9dad4362e0ff8dd69cc", + "0x000000000000000000000000000000000022dc4262de0af1432a4df6b5c0d828", + "0x0000000000000000000000000000001bb52239fb6b68a03690884696453f7725", + "0x000000000000000000000000000000000009f7e8a07b29e1c775b23a666e1d51", + "0x00000000000000000000000000000087250a49d7a2c5e95c5cf96504c7afe932", + "0x00000000000000000000000000000000000be81f5f1e1a7a527d5ab9003aa9c6", + "0x0000000000000000000000000000007fd067241c9169a4c2d51ef5223f04145e", + "0x00000000000000000000000000000000000d62eec848241712d7a74b8a1b3c68", + "0x000000000000000000000000000000a8d2ca5f177c36c219084d36dddc000f83", + "0x00000000000000000000000000000000001cce6c20320da7875f350cf454cc22", + "0x0000000000000000000000000000001eae7070788b005571d12b3a540f96b382", + "0x000000000000000000000000000000000021075b87b825a098dea41fae4a52fc", + "0x00000000000000000000000000000009274d8a5dec6a4606f65d940398c4e84c", + "0x0000000000000000000000000000000000190ebd25195a9d0cc42aa520e32ca0", + "0x000000000000000000000000000000e4f823322afa50800d949ffeca1021b50f", + "0x0000000000000000000000000000000000180fd2df09a5c926d14d683ff7247e", + "0x000000000000000000000000000000f75f78af4ca6ab2b4d1d83ae42d23e6d42", + "0x0000000000000000000000000000000000052b59b0a3c352babfb2ca6fb2dc8b", + "0x000000000000000000000000000000bd2d6785d2f1f1fec8f475ddccefceec78", + "0x0000000000000000000000000000000000096d66f46432fc32317fb12bacbcb2", + "0x000000000000000000000000000000dc325a89c22b0408722be1f1c5785b1f4b", + "0x000000000000000000000000000000000019f69034db6803fd0bf6f717619077", + "0x0000000000000000000000000000002d7bd40a64f03f767a30f2e7fd018d5735", + "0x0000000000000000000000000000000000050d320c00614ec4c19f654d58cece", + "0x00000000000000000000000000000059676dcd87d84ba8724c46dc79d49f47a6", + "0x000000000000000000000000000000000017a1143cf04ef8e3e9a529f1b92770", + "0x000000000000000000000000000000a05aa46f97d4a0f1023bffcb1f77c1438b", + "0x00000000000000000000000000000000000b774fd8023d4876e999b647f05fef", + "0x000000000000000000000000000000a7b4b961805216a888251d68b551356964", + "0x0000000000000000000000000000000000123279dcabc48834b49734e9f2f8a0", + "0x0000000000000000000000000000001a3c5a4221ec46340509ea8b178cecdc08", + "0x0000000000000000000000000000000000288992bc430086e55d9d6cc5ce77ce", + "0x0000000000000000000000000000005409c9549e8beb1965faae93bcbe434daa", + "0x00000000000000000000000000000000002a0890a51aaa4b9f60aabb5bc60542", + "0x000000000000000000000000000000760859693aaf8991a597733a545ab431e6", + "0x00000000000000000000000000000000000f1c39c02aa1b7c229ec9b3eefc391", + "0x0000000000000000000000000000008b2b03962494b503a8ce86b3c232ea87cf", + "0x00000000000000000000000000000000003033c259bfdda849212c239228ee4a", + "0x00000000000000000000000000000030b30a8f93a50fcbc679a3d1168b294587", + "0x00000000000000000000000000000000001c39c0deb6b2b49105998bd64ff7ff", + "0x000000000000000000000000000000a6fa737b040db783952bd5cbdbc6ff0341", + "0x00000000000000000000000000000000002012e88d5d376500aba5240d8f37d4", + "0x000000000000000000000000000000993bb0aca115f36461afada9182663d04a", + "0x000000000000000000000000000000000016a501a6bd071fe93ec57bc01d09e9", + "0x0000000000000000000000000000008e99d84006eec3937117cd3dc54bf467bc", + "0x000000000000000000000000000000000026741ba7278d491cc4ef5f808fd3ed", + "0x00000000000000000000000000000059fd0a6d5caab12a3204ec2f3bb03ea273", + "0x00000000000000000000000000000000000c06a10d5a1f39c0d1ff01a8fedd52", + "0x00000000000000000000000000000087db338a273ef894bdee1298de59c7b9fc", + "0x000000000000000000000000000000000001bda0babe63bfbe1cc8170c26af48", + "0x00000000000000000000000000000076523a3d16889ef1b595d6ee771a54e4ba", + "0x00000000000000000000000000000000002ea89ff682b4d2427dd4ab430382ae", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000f93f9b3c3ccb03b1d0f59150699f9fa3f9", + "0x00000000000000000000000000000000001ae9fc694057698cfd927a9afe43fb", + "0x0000000000000000000000000000004baef7faea08dc749d788a4c6c9bbe29d2", + "0x00000000000000000000000000000000002cc1f10d4638983f558eecdc6ba39f", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000c2e566a842af127bb2863b28e5c9834dd", + "0x0000000000000000000000000000000000123326d1f3e3f1e6439701c2e4c376", + "0x0000000000000000000000000000001e726d0681305bc36d34999bc9848337c2", + "0x00000000000000000000000000000000001298212e7f4c6f496d44b34cf49805", + "0x000000000000000000000000000000d1ed1e54ab019bd2ca96095e6025ba414f", + "0x000000000000000000000000000000000019227b7d43eb104ef0e6acf3b0f41a", + "0x0000000000000000000000000000006692c1a1cfad8e8fac36fb92129878159f", + "0x00000000000000000000000000000000002e861c2b1aa417701f37425baa8d21" ] - hash = "0x247bc17e8f5aa0195134ff3bcb1e538964dde7724cfabf9e3054cf8f1eb7f5c0" + hash = "0x09c1c633e0ec0baf5833b43503da14c2cbceaa66180315b0cab7fa5177337e0e" [inputs.hints] previous_archive_sibling_path = [ @@ -1385,7 +1384,7 @@ new_out_hash_sibling_path = [ ] blobs_fields = [ "0x00000000009c70751800400040000800010040040000000000000000000004cd", - "0x0e871ae3dcb0fffea3861d77f73d5fbaaeeea7be5e44deb03a620bbf7abd3da5", + "0x1a462c05a8b08f5c70c3063ad33091f56c6849867cf9c3c3e82d58337f90fd90", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000b7d1b100", "0x00000000000000000000000000000000000000000000000000000000b7d1b101", @@ -2614,7 +2613,7 @@ blobs_fields = [ "0x00000000000000000000000000000000000000000000000000000000b7d1b44d", "0x00000000000000000000000000000000000000000000000000000000b7d1b44e", "0x00000000009c707518004000400008004000400400000000000000000000054b", - "0x13154711be36a3116515456951aff54c8af45e785eb5c9a8751f0ad66c529d59", + "0x29fc1f0e1f52e308ad45f4965a98d29c1ab694295234af02c93d1cb9c5def714", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000b7e5c000", "0x00000000000000000000000000000000000000000000000000000000b7e5c001", @@ -25961,7 +25960,7 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x001633cf117ffe40ada7501fb386c9685928fa38c7afb3cdd995e246d343cd26" +blobs_hash = "0x00db8109241a08a13a0d293ca0e8207199fdd6df64e0530c6e272802c3a33710" [inputs.hints.previous_block_header] sponge_blob_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -26048,13 +26047,13 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 ] [inputs.hints.final_blob_challenges] - z = "0x058efcffe9a6e9bad4fa111125c6c551bc591763ec8f82f544b00c121ed96772" + z = "0x2e80beacb53a9662ec507db7bc19d1f8758840646d814571fdb617f696b20708" [inputs.hints.final_blob_challenges.gamma] limbs = [ - "0x5b6f7f97684d6dbb89cf54400c3f78", - "0x2f1bcc10ffd47f0441cf0eb6b6560b", - "0x1b37" + "0xc535576609c4d6fcbf3ef94644b75e", + "0x42c4943e4bacf827454f282cab9652", + "0x132e" ] [[inputs.hints.blob_commitments]] @@ -26062,18 +26061,18 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.hints.blob_commitments.x] limbs = [ - "0x29014e784075cc2bdcffcdd1547f96", - "0xfa8fe87a202189634fbfddc1f2671b", - "0x4d6c91edb591280465dd2295f317c2", - "0x016442" + "0x4dba477e3f05aa581d83376f6f1a61", + "0xec80c39f7dcc68824280aa23b93ebc", + "0xec06d27c70fbab1135a72fc1f776a7", + "0x0b3e0d" ] [inputs.hints.blob_commitments.y] limbs = [ - "0x098aee9c7644342f665ea25ee6b704", - "0x292e462582e51ac0263e55ee43d2f8", - "0x1edcc6843e97b577e45748f9acd815", - "0x0f22a8" + "0x4e8000f58faaadee26545f5da82d9f", + "0x8f4970c5f75c2f731f90e29e5a4f16", + "0x01541d2e75e3837911bf397eccba63", + "0x075771" ] [[inputs.hints.blob_commitments]] diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root/Prover.toml index ecb24baed847..a52fbdb30b24 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-checkpoint-root/Prover.toml @@ -484,7 +484,7 @@ proof = [ [inputs.previous_rollups.public_inputs] timestamp = "0x0000000000000000000000000000000000000000000000000000000000000186" - block_headers_hash = "0x08c5275d4e5dc441e08b60f9119ff56fa68e6c272581e6b5b1d957d6dc886628" + block_headers_hash = "0x2a848bd23c9096b0e392d4a218ae4026355790bb2acea3cc385f56d21cb2b90b" is_first_block = true out_hash = "0x00746f2611b7b24448263e846ba73bf1861fc6e68dbc605414405a520957a902" accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -493,8 +493,8 @@ proof = [ [inputs.previous_rollups.public_inputs.constants] chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" version = "0x0000000000000000000000000000000000000000000000000000000000000000" - vk_tree_root = "0x21cd94941458effa5bf748eb3839418d3deb6bdcd2c04148ca733561265326a5" - protocol_contracts_hash = "0x0a1f22b72996215e178699fff463a6ca5e3c7d5ffe66e183490eb766ec1c83ae" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" + protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" slot_number = "0x000000000000000000000000000000000000000000000000000000000000000f" @@ -513,7 +513,7 @@ proof = [ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000001" [inputs.previous_rollups.public_inputs.new_archive] - root = "0x25d517225f0f8bd739dd1fda514be0d6e6566c091b69c067ae0a339b586f87ca" + root = "0x117aeecc54e82e86461b9fdcf0a0b047ec63a08ecbf4701f5e0898efafa79b29" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000003" [inputs.previous_rollups.public_inputs.start_state.l1_to_l2_message_tree] @@ -576,10 +576,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x2326bf220c6839c1856478f0c082f0c5883b2baed0bc222a1fa5e1244184c82b" ] state = [ - "0x20dd63a6579867a60428c48bee502633fa2b8978bb17d6a6b950714505def8a6", - "0x11d5f7cc6c52edc467782a1cbf6f5697662f1afcf75852bfc3b0418ebd03befd", - "0x15fa9fb2deb7229a19d7442b430b65dbc05ccedb42b24232e78453fc9818de78", - "0x2d7cd94b6677cd74ca7a0dacb843fe341b1256caa1f9f778e6a1f5e3049c3959" + "0x135c92350c7353b08f2cb63fded7ce4c854c495584ef333288940d669ce6a599", + "0x21b216cea5b04aad8cdf1f5d9722403e9c7bc282a3a779e4ffe3f1de6c993da9", + "0x21ab5208b30e3512fa415157976f94403dbbfad370f532e03abcbfb2d8b0ac61", + "0x19b5e475d9036a98cc36422f737a08e3eb651f24b19706f6a11087216ddf4a0b" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -623,13 +623,13 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollups.vk_data] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000f" sibling_path = [ - "0x0a40d8fb2fc541cc0b9b3febc6c4631e553ca477585110a465fa0629f5a8bb84", - "0x2c50d94eb3d3c79b66ad48965e0e7f91c1d97d6b80d8d687509ec1f05fd908a7", - "0x02b27c0449df8c15133807ecced497a18bd8da3cdc65a840c68163925e93f908", - "0x2d425e446b233c409ab688f27e6a8d41e20b06b8b769f68be61d032ba6cba44a", - "0x1a713453d218bb2fc34986e0392f018dc66cd5828df84413c10055d3c4ad7d24", - "0x187a7b8872d1297bc15f7171f32c36e5e60b53c4145ef62b1899c04fd7220fdf", - "0x2ccaede67145021b6b586f45936dfbdacb151c3e362621c3598ffd60e95b02a0" + "0x155cff86f825326297a0cab7be11b73de2f60861977b08a76395b27b53212633", + "0x2d7f66d8c425cb437f6ffa40846cb4973f850fb874bf2590bb58aa28730171bd", + "0x1b222531f0055fae25fdfaf1f505d1659b8279dcd4d0f333ca8905cc8aa9661d", + "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", + "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -637,120 +637,120 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000015", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x00000000000000000000000000000067035bbcfea09e62a21e7005bb9e38da9c", - "0x000000000000000000000000000000000024cf8c5073fe7d0d7973dffe5ecaf4", - "0x000000000000000000000000000000e0e8df2059e32d58268fa1afd596c96777", - "0x0000000000000000000000000000000000060924ab3df498bb24f841f8592042", - "0x0000000000000000000000000000001cfc6a0341f686322627c292dadf577f47", - "0x00000000000000000000000000000000000a7843f8be16c1d471f4167280753e", - "0x000000000000000000000000000000cc0817fa382ac3b1031a7f6ef45f28fd82", - "0x00000000000000000000000000000000001453032f6d4d23d467ad9eac42a101", - "0x000000000000000000000000000000c25d51b91f8e0a5c950412a9197a6bb328", - "0x000000000000000000000000000000000007fb85e0134b32ad693fed8e332c26", - "0x000000000000000000000000000000b636b68ed3e4c74a324e618610b226d445", - "0x00000000000000000000000000000000000c867d3b88967ded888e72cea6c81b", - "0x00000000000000000000000000000005aca299438cb90ed55ca65433c913a4e9", - "0x00000000000000000000000000000000001f2b65eaff07b3b202e388e8dfb876", - "0x0000000000000000000000000000000304d0707cf5da3e89f6866caac2bc24b5", - "0x00000000000000000000000000000000001a4c4de424a09ec3f171cacbbc5428", - "0x000000000000000000000000000000a0db5b9a58694e3c17f36750ca08a05b41", - "0x00000000000000000000000000000000001884c180ca73b4e1f78c0afaa46445", - "0x0000000000000000000000000000005ca6c3a09f767843200a2ae22bca191d7b", - "0x000000000000000000000000000000000027e4167a699b132ec8ea35c5414a8d", - "0x00000000000000000000000000000054f5f591df1d72a6a94c7fa15007f9bff3", - "0x000000000000000000000000000000000017974932b1569e92a93cd89b9dd478", - "0x000000000000000000000000000000a35379eed4fd2754314710a91942e48f29", - "0x00000000000000000000000000000000000081c0a46cff3acdcad44db241ae70", - "0x00000000000000000000000000000013e4441cf7e4a6a389a39dc21c24275be2", - "0x0000000000000000000000000000000000017aab51c397a2d57778ebe5022782", - "0x00000000000000000000000000000009adaeede4203a41f991031ec50f09bb98", - "0x00000000000000000000000000000000002c9fa3c370cbb1f1bc9128d27307d8", - "0x00000000000000000000000000000027ee54c884a394200c4e39ee182f59a2a8", - "0x000000000000000000000000000000000012943b9f6c5414251d53702f2d12f9", - "0x000000000000000000000000000000ed86096961807e92f98a9034ed613f6d08", - "0x00000000000000000000000000000000000214f9e80e9143c5ed431861940d3c", - "0x000000000000000000000000000000477e7e54f74ff7013eb2f57efff29652fe", - "0x00000000000000000000000000000000002a90e6696bdefeb2b9605fe51d6c72", - "0x000000000000000000000000000000c59fd0fcc5d9761b91619b8583bef82726", - "0x00000000000000000000000000000000002a3c6f4b525762d28f0e9ec7036158", - "0x000000000000000000000000000000711bf6368ea8e2cfdedfca13424ebb4b2f", - "0x000000000000000000000000000000000004228db59569fcf65c3660450eb97d", - "0x0000000000000000000000000000001f7c013360a32c4663cf9c47add80e17e5", - "0x0000000000000000000000000000000000074065f6a7a5996190cc58f4096100", - "0x00000000000000000000000000000058f26a3d31b7d8050c23bf8fea1da961b3", - "0x00000000000000000000000000000000001b72229315ce42d568cb9087944218", - "0x00000000000000000000000000000061288fc79ca6ca9cb9544ad15e81cdb42c", - "0x00000000000000000000000000000000001b23db4fef7a9e30251b039267fec8", - "0x00000000000000000000000000000036d75db307ce16394734d7f21c9166e664", - "0x00000000000000000000000000000000001040788efbf0920fd3b164d9390c15", - "0x0000000000000000000000000000001e69c9587257bd2625f18708e6ab07775e", - "0x000000000000000000000000000000000004ff17c543ca4b5592aaa916648d88", - "0x0000000000000000000000000000002a3bda1bc29750fa2ce456de9560e695c6", - "0x00000000000000000000000000000000002161dc258336de70f50156e6e24762", - "0x0000000000000000000000000000004670ec95d33993bde24a66b47ac2e0a125", - "0x000000000000000000000000000000000013b536c9a9e9617d93bce96ed322f9", - "0x0000000000000000000000000000000552351d9f300779015c34bdce2493ff50", - "0x00000000000000000000000000000000002b00841bdf21efd1fc32417e6269c4", - "0x000000000000000000000000000000b9b308f8c76ad114a75bd3eb86c395b3b1", - "0x00000000000000000000000000000000002d280bb4ae10ba090eb75f093fc0c6", - "0x0000000000000000000000000000004d637331c72218d33bc2deb72b79cba5fb", - "0x00000000000000000000000000000000001c1cf547751e4743cd6968fc6f218c", - "0x00000000000000000000000000000031855d48de20f0be4ee132bc002a5c2357", - "0x00000000000000000000000000000000002ba995e7aeb366d5c5ac797be375ac", - "0x000000000000000000000000000000ed1420d32f11d75802b9c2077f99e54145", - "0x000000000000000000000000000000000012a5ecb61f3587c86a797f7fb4a631", - "0x000000000000000000000000000000c44f1e5fc23a00fddb8bc832f35de52639", - "0x00000000000000000000000000000000002da88c34be95b760119a8b208263bc", - "0x00000000000000000000000000000090c750da02fc704e79e19ec1d95d8891e6", - "0x000000000000000000000000000000000015b04c093392dc51017101b928677c", - "0x000000000000000000000000000000a064d5eb7ddc9f8628d846f9070d19e4e1", - "0x00000000000000000000000000000000002f1b05f5c3beb4e2a92de265e81ebf", - "0x000000000000000000000000000000506f1fe64780e8444659850574789edd66", - "0x000000000000000000000000000000000017f5cf078a0c42f03503e4b40e07aa", - "0x00000000000000000000000000000016af8093e9d04578e01c9aa57d225d88d9", - "0x0000000000000000000000000000000000169d3f23eca77a5acb63a787809c20", - "0x000000000000000000000000000000d0acca1b19e28d136b27307f72f63f172f", - "0x000000000000000000000000000000000019e21b31f2ed7144a804bf3eeb0f3c", - "0x0000000000000000000000000000007c2f610a2917756ef12612e24927be8ceb", - "0x000000000000000000000000000000000022816bd80bb6b350632837bde37ab5", - "0x000000000000000000000000000000bc218948d13a65a4b5a54514b1fec5132f", - "0x000000000000000000000000000000000001041b34413815a5f0c3fc2c490870", - "0x000000000000000000000000000000315d5ac5e5fde6317264a46e0632b8303b", - "0x000000000000000000000000000000000006f07718c6314d40b8faa599f6c8f8", - "0x000000000000000000000000000000076e8d9a1d5d2cc619adad38db39e96eec", - "0x000000000000000000000000000000000027341423495376dff06d295800b74f", - "0x000000000000000000000000000000e35a43c0479d113b829320243124fbbf09", - "0x000000000000000000000000000000000018ec2f7d810e7960211ba254e89e9a", - "0x000000000000000000000000000000ed7b8425373c948224e661e469c8e2fcc3", - "0x000000000000000000000000000000000010c97bcb18b2f4a00a0fe5b3b61031", - "0x00000000000000000000000000000042bc16f173a987aff7dad4d4536d48b54b", - "0x000000000000000000000000000000000009c0b80af9affbf27d5c9a443d1899", - "0x000000000000000000000000000000d60718906a8b40ce8145eb1afad8d4e2ff", - "0x00000000000000000000000000000000001fee4e29f71995c1bfc805fa7a3cda", - "0x000000000000000000000000000000adf0b56f6dcc8eb96150e3f31f1c0f7ee9", - "0x000000000000000000000000000000000013169d7dad39434f7fd664af605b18", - "0x0000000000000000000000000000007f60a72fd00dc880c3cf2b55550ed1e02c", - "0x00000000000000000000000000000000002f949f3fdca40206be9b13c69994fd", - "0x0000000000000000000000000000002c90f8dbbc86cbb491dd3bbbf774a93d6d", - "0x000000000000000000000000000000000026a7754d95bb00a3787da4f9acdfad", - "0x0000000000000000000000000000006b6bb428d9de0e2aae45ac7b667c1db491", - "0x00000000000000000000000000000000001dc127e020246e3463e235afb6b176", - "0x000000000000000000000000000000d516e495baeedc69f1efded0bcdb9b43fd", - "0x00000000000000000000000000000000001f404505c45ea1e1164b8a25d7463f", - "0x000000000000000000000000000000ea463d787019bce57596592c85cc50425a", - "0x000000000000000000000000000000000005ad5d922ca02e1b6c075a039fc218", - "0x0000000000000000000000000000003fc1b0cd587a6bff7ed39a300f0ce6892a", - "0x0000000000000000000000000000000000221332a5619ac719e70000bbf649ff", + "0x000000000000000000000000000000f1e7ddcc14d1a5d954b81215388a0d348d", + "0x00000000000000000000000000000000000a5caa9ffe2cd5d44288655960fbb9", + "0x00000000000000000000000000000039722eedf301c4f0a8efd6f2a5b349af4c", + "0x000000000000000000000000000000000002fc484866ff4729771b06d59730d3", + "0x0000000000000000000000000000000a13bcac0492974dedf395a6af8eea80d3", + "0x00000000000000000000000000000000002addf6796f866bdc0ed3be86404372", + "0x0000000000000000000000000000005eb92f69d61631d10b47a8e07e15ba655f", + "0x00000000000000000000000000000000001443b0b67361085f625a568644b015", + "0x000000000000000000000000000000a74214365af1b6d41319c9dd8382e9a8f0", + "0x00000000000000000000000000000000002f76e511e2c969dbc5eecb7f670071", + "0x0000000000000000000000000000000001504b38af9f0066a9d2bfbfa02b3b08", + "0x00000000000000000000000000000000000d73b83290e156de6a240fd3ae1b2b", + "0x0000000000000000000000000000006abfb3e6bd55642eb7ed0c7197cfa7a3dd", + "0x0000000000000000000000000000000000076f4d5cfa5c8088106a0c7a9cfa90", + "0x0000000000000000000000000000000709f2356dab09214b4171d4f1d3323326", + "0x00000000000000000000000000000000000b14f0f3f64d7e357a45f0276a1ea9", + "0x0000000000000000000000000000003babe5a95fdd4610840a724bd2ed3828e1", + "0x0000000000000000000000000000000000201cdfdb5a5bc4703457f89df55f98", + "0x000000000000000000000000000000b3fac9da70ad5fa3860ec0ce960f8981d9", + "0x000000000000000000000000000000000010b10135960c565c5349d5f789b5b1", + "0x000000000000000000000000000000c305056fc5f0a60230121d87f8a5d5cb8a", + "0x000000000000000000000000000000000029325cbe3d90e4f70ea17d72e0c4fd", + "0x0000000000000000000000000000009083c259c2a18982a69f48b80acd80bcc4", + "0x00000000000000000000000000000000000218a1611680626e6a316d0b789c69", + "0x0000000000000000000000000000001e8f0c3e04a78ba2ed7ab06f3bbc7715f5", + "0x000000000000000000000000000000000027cbd768f12d7c17b58c80509d62f5", + "0x0000000000000000000000000000003923892efe2dc2fa020857749ce62d5439", + "0x000000000000000000000000000000000014395b407fc85c60a3250accf76758", + "0x0000000000000000000000000000006edff51b3196ff338accb863e273712472", + "0x0000000000000000000000000000000000179cd05231571e8a1f63d1c48674d1", + "0x000000000000000000000000000000195985990189ea39cf9537a33353284b57", + "0x000000000000000000000000000000000005b499926e55583ec9d33533a4293e", "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", - "0x0000000000000000000000000000003364bafac35b1ff1e87ef6b3a103ff7873", - "0x000000000000000000000000000000000002920fcb7e57225cc03d1fc884a77a", - "0x0000000000000000000000000000003e2f9274eed4520edd85a73f8a713f419b", - "0x00000000000000000000000000000000002968fccdfffabaa2d5e86c3ace1cd0" + "0x0000000000000000000000000000002972a9e49d9e5f60a10ee805ff2615663d", + "0x00000000000000000000000000000000002970fe8086600390dee3b98f7d940c", + "0x000000000000000000000000000000bfb1312cbda593e8f4c5473b47d35e3ff2", + "0x00000000000000000000000000000000000766be596296788b2e61417586c808", + "0x00000000000000000000000000000013e4441cf7e4a6a389a39dc21c24275be2", + "0x0000000000000000000000000000000000017aab51c397a2d57778ebe5022782", + "0x00000000000000000000000000000009adaeede4203a41f991031ec50f09bb98", + "0x00000000000000000000000000000000002c9fa3c370cbb1f1bc9128d27307d8", + "0x00000000000000000000000000000086f83dd5fa9178c3c683137ef6a3018c50", + "0x00000000000000000000000000000000000af8d38dc8b77bda3980c013658848", + "0x0000000000000000000000000000007307ee1df3133617f2e5a4d2bbb01f449f", + "0x00000000000000000000000000000000002e27ed3b0658fb9d44ebdb9e459679", + "0x00000000000000000000000000000037ec6f22980fbc5a795d816788a7c7fd87", + "0x000000000000000000000000000000000022973f4a5a82fd556aad37856af147", + "0x000000000000000000000000000000f6f48a91dac1f229b2b35e0fe3ef98abfb", + "0x000000000000000000000000000000000011b923ec095c6746d167d68a4b20e8", + "0x0000000000000000000000000000002d4825c2a902a49bad97fcf3510dea717e", + "0x00000000000000000000000000000000000a00b7e38d47dba44d1fa8d9e462d8", + "0x000000000000000000000000000000f14f2adda7c6729037603c11f6df57543b", + "0x00000000000000000000000000000000000bd236e34f1859cda4709a1895cdab", + "0x000000000000000000000000000000d3678bafd3a8f024c9373604ff3b9445e5", + "0x00000000000000000000000000000000002e41d5db4cb0fc20648504962c7e38", + "0x0000000000000000000000000000004ea6f803bdb1c654c7a3e38c2fc5747710", + "0x000000000000000000000000000000000012b2e307e4788fa75f5058585d1ba3", + "0x00000000000000000000000000000040e8f553b98122828b8a5bb679e7deb97a", + "0x00000000000000000000000000000000000a216b89977ad13bdff479764a27ca", + "0x000000000000000000000000000000933e4f2e04d2cded7e8cd136f18fcc4091", + "0x000000000000000000000000000000000015fcaee6b450c9e8fe7c6f82f7935e", + "0x00000000000000000000000000000000fef9ed223e1c4b1878f1382bb011d550", + "0x00000000000000000000000000000000002375a63f44311595e11cb13f5283f1", + "0x000000000000000000000000000000a7c977ccaf50e4d717c7ae36304af0dc66", + "0x0000000000000000000000000000000000010920abd2eae86f85d82ad9f88492", + "0x000000000000000000000000000000ef0a0674e70bb44ff728d53f5dbfabf7c1", + "0x00000000000000000000000000000000000d68a4ddf4aec05a29640ad1d40ee4", + "0x0000000000000000000000000000007123314f83f27f4833a0048b091d5d62b6", + "0x00000000000000000000000000000000000a8fd7bbc8ee63940f2baf92b53fd5", + "0x000000000000000000000000000000be04b6d97a1a16de66c8bae98cf95e37cc", + "0x000000000000000000000000000000000006849ce9eea56fb180865427034d54", + "0x0000000000000000000000000000002af94cb2b8ffa891913cb9840112bf0418", + "0x000000000000000000000000000000000021996f6ad0f8bb920691927dbcd592", + "0x000000000000000000000000000000fa6286fbf6c493e14b6486f0cb3b76251a", + "0x0000000000000000000000000000000000152c8222ea71be700b89cff2af9bcd", + "0x00000000000000000000000000000067aa0c105df79de2b889a044ecbf3d8d79", + "0x0000000000000000000000000000000000038fb4352d33ac89eeb1cfc441a140", + "0x000000000000000000000000000000b7cc4690c5191469ed4ce6ff94de732ec3", + "0x00000000000000000000000000000000001f533df11d1b8dd79d8af4331d0e65", + "0x000000000000000000000000000000ed3b9d0cc168e1dfdad7343c19a8ca5151", + "0x0000000000000000000000000000000000102355cb5d373d6ad337357a29a49d", + "0x000000000000000000000000000000f72372e068b952b940f0bed9060022b6be", + "0x00000000000000000000000000000000002baec2a144a6d761036c92a80f2b7d", + "0x000000000000000000000000000000cbb74d3007ba42781996344e39eed8ca92", + "0x00000000000000000000000000000000002ead419fd4671a2c55d8e213322757", + "0x0000000000000000000000000000004f1f9b46d63bb7d3f29fef23cdee865eb0", + "0x000000000000000000000000000000000015d453b35cb523095da1bdd087d788", + "0x000000000000000000000000000000f0038d9a9acf1b4f08fd384f73555d992a", + "0x00000000000000000000000000000000002a5916ff6f77368f00e27ffae348a2", + "0x0000000000000000000000000000001fbc7da3e43c92cd5c222c0a5110b583b5", + "0x000000000000000000000000000000000030227502aa8cdfa15452130b05f9e2", + "0x000000000000000000000000000000fbdfd671d0c02ccc7810114ab1d8df3aef", + "0x00000000000000000000000000000000000fee77f7a266bf78678dfb0fb1e9e1", + "0x000000000000000000000000000000e5bd9eec079f9b0c23a7104b5bc61ea63e", + "0x0000000000000000000000000000000000109cd00aae63694c002f41acbb96d7", + "0x0000000000000000000000000000003ee0abb01d4fa17976ba3efe665d72a2e1", + "0x000000000000000000000000000000000000ac0ec029786d7f8944e44270ef4d", + "0x0000000000000000000000000000009a3ae255b2f19a6238782945786d4028ce", + "0x00000000000000000000000000000000002cc7abdf9c27d92fc1ee2cda14a9ba", + "0x00000000000000000000000000000022460d28d93b778fbaf0e4387b1d4671e0", + "0x000000000000000000000000000000000019a8a6bb2563af3217ece000438b61", + "0x000000000000000000000000000000f6684177813b0420369158fb008ca9ed1c", + "0x00000000000000000000000000000000000335080eeedd367f988668e4788b54", + "0x0000000000000000000000000000003545c0cf9e10b59daab4c71d89c37d978b", + "0x00000000000000000000000000000000002106dfd562685db66b6fe3c5e9573b", + "0x000000000000000000000000000000eb65d6937a511f480f7f5d7ac805a2f7e2", + "0x0000000000000000000000000000000000069c9fe9f50c777128416ab06b27eb", + "0x000000000000000000000000000000577ea815b0fdf5fc38c60443f1010ea404", + "0x00000000000000000000000000000000000721a9a9517860e45c200bc7b5656b" ] - hash = "0x234a1affbbad1ed91d19c156a1213eefd906ba765ff77021fe12993713bd467e" + hash = "0x227ea6d4336f178d19a6c3a96a9c67886365943c547eba8bc3264352c58d49b5" [[inputs.previous_rollups]] proof = [ @@ -1238,7 +1238,7 @@ proof = [ [inputs.previous_rollups.public_inputs] timestamp = "0x0000000000000000000000000000000000000000000000000000000000000186" - block_headers_hash = "0x1847dd4d8ee630b226ffb96f58bd82e8d51f2145d6ac9d21d127d2c0eb9c1dc5" + block_headers_hash = "0x08e15c28fca76a1965118974159f01d5b290d2239e693ecb1b2b0eca054572c3" is_first_block = false out_hash = "0x00fab7a43a18caf54d1e3dd82cf6d3def175265507c701576b015603f4dd1b44" accumulated_fees = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1247,8 +1247,8 @@ proof = [ [inputs.previous_rollups.public_inputs.constants] chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" version = "0x0000000000000000000000000000000000000000000000000000000000000000" - vk_tree_root = "0x21cd94941458effa5bf748eb3839418d3deb6bdcd2c04148ca733561265326a5" - protocol_contracts_hash = "0x0a1f22b72996215e178699fff463a6ca5e3c7d5ffe66e183490eb766ec1c83ae" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" + protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" slot_number = "0x000000000000000000000000000000000000000000000000000000000000000f" @@ -1263,11 +1263,11 @@ proof = [ fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollups.public_inputs.previous_archive] - root = "0x25d517225f0f8bd739dd1fda514be0d6e6566c091b69c067ae0a339b586f87ca" + root = "0x117aeecc54e82e86461b9fdcf0a0b047ec63a08ecbf4701f5e0898efafa79b29" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000003" [inputs.previous_rollups.public_inputs.new_archive] - root = "0x2423415116b4929c2d7bdb2f17475e7a212bab3569becf5134144d949083f4ea" + root = "0x0f3332b2d40b13dff5cfa371f988c6ded2734b4b97f43c80a38544d93010ffde" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000004" [inputs.previous_rollups.public_inputs.start_state.l1_to_l2_message_tree] @@ -1312,10 +1312,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x2326bf220c6839c1856478f0c082f0c5883b2baed0bc222a1fa5e1244184c82b" ] state = [ - "0x20dd63a6579867a60428c48bee502633fa2b8978bb17d6a6b950714505def8a6", - "0x11d5f7cc6c52edc467782a1cbf6f5697662f1afcf75852bfc3b0418ebd03befd", - "0x15fa9fb2deb7229a19d7442b430b65dbc05ccedb42b24232e78453fc9818de78", - "0x2d7cd94b6677cd74ca7a0dacb843fe341b1256caa1f9f778e6a1f5e3049c3959" + "0x135c92350c7353b08f2cb63fded7ce4c854c495584ef333288940d669ce6a599", + "0x21b216cea5b04aad8cdf1f5d9722403e9c7bc282a3a779e4ffe3f1de6c993da9", + "0x21ab5208b30e3512fa415157976f94403dbbfad370f532e03abcbfb2d8b0ac61", + "0x19b5e475d9036a98cc36422f737a08e3eb651f24b19706f6a11087216ddf4a0b" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1330,10 +1330,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x191d19a6ad2b7bba03d122035938544f5e65de24aeaa436cd5e4d977bd014505" ] state = [ - "0x17ff6946f937ac741bc40c9b70d14d3f7d3b7168a09fba49a8f5c21baaf70653", - "0x08337df0eb76da0e5169c32b20dbbac004db88aca0d30b80f7887b7fa3fcb13d", - "0x0b00dcea8264e015e5eb67d22ef00ef94756b2b78a939ae6391c4634e4201d6f", - "0x0c0848683e332d9f0cfacb138143987f915d08861c6c222b9ed3be603fe8db4c" + "0x0f42af7cb1e7c7a5d9eeb002031ab4bfaa2183df21df8aea26e3e2d6e7ddf1ef", + "0x1a5e05c937c6eb8d395e6f103856fb500ec79c64f7d97d62f5ec997006fd683b", + "0x2ca50979d5bf53faeb621122da601850801d726ee944594a1425177b3512f5e8", + "0x2682a4ee5971b4125a3696db1324f45575d863b85a866b32d05a5ceaa42c2351" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -1377,13 +1377,13 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.previous_rollups.vk_data] leaf_index = "0x000000000000000000000000000000000000000000000000000000000000000e" sibling_path = [ - "0x234a1affbbad1ed91d19c156a1213eefd906ba765ff77021fe12993713bd467e", - "0x2c50d94eb3d3c79b66ad48965e0e7f91c1d97d6b80d8d687509ec1f05fd908a7", - "0x02b27c0449df8c15133807ecced497a18bd8da3cdc65a840c68163925e93f908", - "0x2d425e446b233c409ab688f27e6a8d41e20b06b8b769f68be61d032ba6cba44a", - "0x1a713453d218bb2fc34986e0392f018dc66cd5828df84413c10055d3c4ad7d24", - "0x187a7b8872d1297bc15f7171f32c36e5e60b53c4145ef62b1899c04fd7220fdf", - "0x2ccaede67145021b6b586f45936dfbdacb151c3e362621c3598ffd60e95b02a0" + "0x227ea6d4336f178d19a6c3a96a9c67886365943c547eba8bc3264352c58d49b5", + "0x2d7f66d8c425cb437f6ffa40846cb4973f850fb874bf2590bb58aa28730171bd", + "0x1b222531f0055fae25fdfaf1f505d1659b8279dcd4d0f333ca8905cc8aa9661d", + "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", + "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -1391,94 +1391,46 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000014", "0x000000000000000000000000000000000000000000000000000000000000005a", "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x000000000000000000000000000000ff4574b1227251dfcacb2b1cdeed2603a5", - "0x0000000000000000000000000000000000222f418fed55fe010e2723697e1021", - "0x000000000000000000000000000000254feb031e35bd30fcf3686fd6faddd206", - "0x00000000000000000000000000000000000ba1a34ed5d42f1a21c5a52d9e90c0", - "0x000000000000000000000000000000e118157f90e615e8b4c444cab7c33f6e3c", - "0x00000000000000000000000000000000000afef4eb2cb22347a56993e55469b8", - "0x000000000000000000000000000000a38693cfd4142021710e86c17fdbdcbd69", - "0x00000000000000000000000000000000001dc2b2414aa1381f6ac979a1afbb1d", - "0x000000000000000000000000000000127ad45c1ad20664e3e0a295ffd1ed5c79", - "0x0000000000000000000000000000000000268ff210a6ae44151e22594dfa269e", - "0x0000000000000000000000000000001a584a1a6c51a01d8023f6dfb901b1af2e", - "0x0000000000000000000000000000000000070d0b4337db22fe09dcb1fbf8000d", - "0x000000000000000000000000000000f2a18597020020d2f118b79687921c9828", - "0x00000000000000000000000000000000000764b6bbb22dfead6bd98b038666af", - "0x000000000000000000000000000000a73aa96f7a696edf98e8688f626704d82b", - "0x0000000000000000000000000000000000238a95d5770b7bb0d57f8d8dcf3d50", - "0x000000000000000000000000000000769f6f412b91a402ace2e2ae5c64fdaaea", - "0x00000000000000000000000000000000000729cdc86fd7c2d54d2c005fc8da9c", - "0x0000000000000000000000000000006a87bb25b31e29eca5da23f5bf5b92a7ff", - "0x00000000000000000000000000000000002c51d35e7454a247cb8771c2c3e9fe", - "0x000000000000000000000000000000e30ed03e9911efef084c53f3c35e8f63fc", - "0x0000000000000000000000000000000000171836f4370875467b733b028e3595", - "0x000000000000000000000000000000300ddd2e4fdd5f1a499edcccea116e9805", - "0x000000000000000000000000000000000004c5e1b8266307c27cf24378919ed1", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000000000cd984dac2e1d13365d9b929aa7116a4be3", - "0x0000000000000000000000000000000000024e666f741dd221d25579e5ebedd1", - "0x000000000000000000000000000000a3518dfe05586c1715bd6777c11f1bb094", - "0x00000000000000000000000000000000001c60329dd65cffc68e5ed52a1b8e4c", - "0x000000000000000000000000000000d6e022490802db56aee0ce03b62dbe7558", - "0x0000000000000000000000000000000000004dbb462842fc03bb9207a68909be", - "0x00000000000000000000000000000060f432f86a6e25ef80a1a105d02af8b11a", - "0x00000000000000000000000000000000001576d3165664d2ae2fe124c2fa8c36", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000510359caf6759daa96ba145e49edd7b53", - "0x00000000000000000000000000000000001160ea7e6acd5070159b5a719b68e1", - "0x000000000000000000000000000000870b7ef96e9ed4ed322b357611712f7821", - "0x00000000000000000000000000000000002b61b69da9f3961363a845365d70f0", - "0x0000000000000000000000000000008cbf79e824623353244aab5f790e992f12", - "0x0000000000000000000000000000000000184748bc300b017268945c5b75cb17", - "0x000000000000000000000000000000b10e7398241322d1dc50fcff8fa422cd72", - "0x00000000000000000000000000000000002b2203eece068ca0c3e432e9475bda", - "0x00000000000000000000000000000078b23340284716c316807ce3fbb9381100", - "0x00000000000000000000000000000000000dfcb9fdb059e25709922011e763da", - "0x000000000000000000000000000000682e97a021cf246cb07730c05f115a15f7", - "0x000000000000000000000000000000000006d7f886730d6284ef616e698ce9b5", - "0x000000000000000000000000000000b493b6aeded29ae39a8a8cf37be9b06f56", - "0x000000000000000000000000000000000021debaec4ca18d2e367b7798849c12", - "0x000000000000000000000000000000f0961bb1e9dc4808d5599315aed5e378b3", - "0x00000000000000000000000000000000000480bda077c2dff37f7391769f0b31", - "0x000000000000000000000000000000fe67bca465f478068eee31f7f3040da4dd", - "0x00000000000000000000000000000000001e4616dcaac6ec288998766fdb3bd2", - "0x00000000000000000000000000000079343abbbbd8b68a48f7158d262c5aed34", - "0x000000000000000000000000000000000028c32d2170f9be04a28a9330cf357b", - "0x000000000000000000000000000000b909a149f6c1d43b57f2294a04c06b24ee", - "0x000000000000000000000000000000000006089105f210191e5df1886f1f9302", - "0x0000000000000000000000000000000a2c393d72c6a5eb6cd4eebe4af81047b0", - "0x00000000000000000000000000000000001452dc66f26377684d2cc7659b1aca", - "0x00000000000000000000000000000038a9f03481239a0f43e1d8e857e8b17917", - "0x000000000000000000000000000000000000aaf6e93a230cd6d3d63daf13248b", - "0x0000000000000000000000000000006f6cbbf68fb6d911cd26538f02a788a9ed", - "0x000000000000000000000000000000000008c74d1802b908bba672fb86cdbaff", - "0x00000000000000000000000000000099710cd72aac361ff9ee58bb0da55f0106", - "0x0000000000000000000000000000000000177ad0a12f12c8737ecf44d30560f8", - "0x0000000000000000000000000000009c6f1b7e67171bfdfc00690205dbb8f9a0", - "0x0000000000000000000000000000000000254a0583283aec3b040d48b11449c7", - "0x0000000000000000000000000000001e3d9a29da606e87c2a215e39f0724683b", - "0x000000000000000000000000000000000020e5099d9ca8c722ea29532fcedb55", - "0x000000000000000000000000000000cfd353364f888cf7ee2e46c851ea5fdf1c", - "0x0000000000000000000000000000000000303ff98371cf89a0652970477d717c", - "0x000000000000000000000000000000604d2bbb7678fbd283ee2d1390b71ff74e", - "0x00000000000000000000000000000000001c802555a4fb9d3311ba62e1017301", - "0x000000000000000000000000000000889c5511d7d48961f6d777b2e225cd113b", - "0x0000000000000000000000000000000000219f03b84fae3708a9d0786d093c18", - "0x00000000000000000000000000000036bf2618bd6a98969e5f2d5e3060929112", - "0x000000000000000000000000000000000006b4e85d4be40abd02526a84e5001d", - "0x000000000000000000000000000000eae2fc2f2607048dcedb51ed379eac0b1d", - "0x00000000000000000000000000000000000c64c8a5ee9037024d0b511f97593d", - "0x000000000000000000000000000000788e901ccccc684136577114d7be220c49", - "0x000000000000000000000000000000000008cf820a32310ad229832ed67aeddf", - "0x00000000000000000000000000000099aba7761e71e351671554cd90f682cfaf", - "0x000000000000000000000000000000000006fb4043b506b634f073a3cac2346e", + "0x00000000000000000000000000000044d68e54f0f94f1cf395e7c7d4ed02b238", + "0x0000000000000000000000000000000000002ee96658546b0c543a5d430da998", + "0x000000000000000000000000000000564bc81720dc91120507a2def4491092cf", + "0x00000000000000000000000000000000002b2ec3dd36d022598f954229813967", + "0x0000000000000000000000000000004c06d035cf278f725500dcaade0de71ed4", + "0x0000000000000000000000000000000000032fe14547859827d72d2c0f43dc38", + "0x00000000000000000000000000000085a9efc398f8a8294803bfde3a1a474627", + "0x0000000000000000000000000000000000303acbcbc42d96acc341e53f525066", + "0x000000000000000000000000000000eacadf1e4fc9cf94b000c78570648f94a9", + "0x000000000000000000000000000000000017da175a88d4cc504f36571d6be0a7", + "0x000000000000000000000000000000f2fda41446f354477c821611b285421c8e", + "0x0000000000000000000000000000000000260a965a88b462bcced56bf6974d08", + "0x000000000000000000000000000000397b2137b0b270d0c2cc4d18b1384f166c", + "0x00000000000000000000000000000000001d5c0b36d8d0781c8991f03d446edb", + "0x000000000000000000000000000000aac9770ef26858570cf042edfe012b444e", + "0x00000000000000000000000000000000000d6f6187315353550fbe644e24b050", + "0x000000000000000000000000000000abd46071b17c397827d4e1ba0307d8cba1", + "0x000000000000000000000000000000000025e627dd9efd18cf1e565ade13621d", + "0x000000000000000000000000000000c7258d6820665a198ec8086e66545e470b", + "0x0000000000000000000000000000000000077dd961b194280cb7691c6d04c274", + "0x00000000000000000000000000000080286d8d49511ab44d99b69d1846c4bd27", + "0x000000000000000000000000000000000011fdc84cd60154742436498a764fc5", + "0x00000000000000000000000000000008132d24e4e5c83672627ee152da55c750", + "0x00000000000000000000000000000000000931a4104f2d70e9767e3cccd132eb", + "0x000000000000000000000000000000116cadf3b52f0509d339b6f7a5e7e7aabd", + "0x00000000000000000000000000000000000e354128a095b2ed068d7de6f665a3", + "0x00000000000000000000000000000011bc19c825f982c113c7acf7bb8ed94524", + "0x000000000000000000000000000000000024ab57f9717b66d505f8beb6a4e587", + "0x0000000000000000000000000000006a9879d743a9607b726b0e202a51c1313d", + "0x000000000000000000000000000000000009aa5187256b95db33b5af499ea13b", + "0x00000000000000000000000000000061b783d2d113c3cb6faaaf0abf0544087b", + "0x00000000000000000000000000000000002d7f93fc44d38067aef8ea4fd80484", + "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", + "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", + "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", + "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", + "0x00000000000000000000000000000084be7f5e9e18b50c67dcef8b8fa9ee4804", + "0x000000000000000000000000000000000002513625a2968a87c51c5d88d11b0e", + "0x000000000000000000000000000000af0e6c84b6c2045f8ceb8466fdb3500569", + "0x000000000000000000000000000000000004bb378792157bab68a4726e120730", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1495,18 +1447,66 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", - "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", - "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", - "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", - "0x000000000000000000000000000000b7706573ae35aae380eb81dd17c191254b", - "0x0000000000000000000000000000000000069a27efdadc54de4abe0a5375c701", - "0x00000000000000000000000000000046a5d1aeed6e4379e7d5bf09b713bacb61", - "0x000000000000000000000000000000000013dd4801aa5f436a77fb7c25f3bff1" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000880a0402b902666144d253148f5c57cfd9", + "0x000000000000000000000000000000000023e13a3496037798a5d94d990be193", + "0x00000000000000000000000000000035d8436db6d3f7dbb6ebeb8f647e4b31c6", + "0x00000000000000000000000000000000002fcd4fe87263a6b3eb740c5b09c338", + "0x0000000000000000000000000000004ed3932a39727815356f22ab5a818c828b", + "0x0000000000000000000000000000000000048e5e0ff760b7dfa818c8e76a159e", + "0x000000000000000000000000000000f75ac7ec3cf99410a896d519b4359991a0", + "0x000000000000000000000000000000000014b426d7b923a1e51e00e628ea33eb", + "0x000000000000000000000000000000680c477df52676af3092564e4f2ef70929", + "0x000000000000000000000000000000000012f4671a00ae0f41d93803ba204d24", + "0x0000000000000000000000000000007671a32b47ce15f4207123d6e7c3477339", + "0x00000000000000000000000000000000002cedcbbe89dd1934fa5cced41d2687", + "0x000000000000000000000000000000266171c09327444ee5f3597e883a4b8928", + "0x000000000000000000000000000000000019b3fb66fc967a6f98739b83e26cc3", + "0x0000000000000000000000000000003cee5735f126691f6c4c78b3dbce71ede3", + "0x000000000000000000000000000000000002d6ca762270d9072249a18a7d88e9", + "0x000000000000000000000000000000579304c1a087a3552906fbdf3cc4f72752", + "0x00000000000000000000000000000000000eeb615cafcf06fbe8ca6cadbaad98", + "0x000000000000000000000000000000a1a6b7c0bac457137c03cf055f94148781", + "0x0000000000000000000000000000000000035bb62ee5abdf2533bf141abb0e2b", + "0x000000000000000000000000000000dbed5e4ce4be4fd8619920d659dc2cb92c", + "0x0000000000000000000000000000000000170738f7a38c19f59b34d0652c3312", + "0x0000000000000000000000000000002d44fd0b8149195da9fd52b5d2f83673b4", + "0x0000000000000000000000000000000000069435e483e40881efa4c937cd29e8", + "0x000000000000000000000000000000b28afc8d3b1be86930695e0148ca85bc19", + "0x0000000000000000000000000000000000150dc4a8714c625277cb5b93410416", + "0x000000000000000000000000000000512d57cc0bcd0e7c1f83c340d40570a9ef", + "0x00000000000000000000000000000000001be751db469d4180270183c2d153df", + "0x000000000000000000000000000000465eb6490fba4495211f2eefc95f8dd390", + "0x00000000000000000000000000000000000345b78970b204243c9feef0116304", + "0x000000000000000000000000000000325d0e1cf9804d81e201efdbf0e0534f80", + "0x00000000000000000000000000000000000001b079dc34ce57c60bbcab5fbc6f", + "0x0000000000000000000000000000002f737349acd708f652d1395ec24e6bae8f", + "0x000000000000000000000000000000000016ff6e92a36cc3ead49533122e1875", + "0x00000000000000000000000000000006e089e19422ac6b65abb0c2ca3b23ad20", + "0x000000000000000000000000000000000025d99a605ea8b014cf35e28fa731fd", + "0x000000000000000000000000000000de64891268c56114f4aadcd05c2a60fc30", + "0x00000000000000000000000000000000002f9f6ba3fe20f8dfd3b3332ae43134", + "0x000000000000000000000000000000304ac112a4aa9ec4b19d06384ae94dea4d", + "0x000000000000000000000000000000000023e45ccd742de1c766eb8364927490", + "0x0000000000000000000000000000000124b733669c1d8f4dbfbd7307add42403", + "0x00000000000000000000000000000000000e24f7e09ce59b0f82db30a2508360", + "0x0000000000000000000000000000005d17b2c9ce75d650a711716697123f791e", + "0x000000000000000000000000000000000004e9209e259427de68f42ad700a207", + "0x000000000000000000000000000000b96183042f35312491e5a812d6e16309ed", + "0x000000000000000000000000000000000029bc95d76242598f3c1af447b04433", + "0x000000000000000000000000000000574664dd37ab985fc5bcb6ebe808b154a9", + "0x00000000000000000000000000000000000d6772a2fbb94e932537ce081dd558", + "0x000000000000000000000000000000920371aad6c0d93f30e172a027c4744641", + "0x00000000000000000000000000000000002b8b52dcd59061cef70ef70cc2b91b", + "0x00000000000000000000000000000055ec30e15b0e2b24f395f538cdc7a6ae02", + "0x00000000000000000000000000000000001ea971f73c04c47683c62e6553b6d7" ] - hash = "0x0a40d8fb2fc541cc0b9b3febc6c4631e553ca477585110a465fa0629f5a8bb84" + hash = "0x155cff86f825326297a0cab7be11b73de2f60861977b08a76395b27b53212633" -[inputs.parity_root] +[inputs.inbox_parity] proof = [ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", @@ -1920,19 +1920,18 @@ proof = [ "0x000000000000000000000000000000000000000000000000000000000000019a" ] - [inputs.parity_root.public_inputs] - sha_root = "0x00aa91330eafec1db9b1ca2e1733b213a28bfde0499aca2506acc8c00aae7ba3" - converted_root = "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d" + [inputs.inbox_parity.public_inputs] + in_hash = "0x00aa91330eafec1db9b1ca2e1733b213a28bfde0499aca2506acc8c00aae7ba3" start_rolling_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" end_rolling_hash = "0x005b0c15d0f641e148adfec120a12eadbf8343e009d350aa593b6d78dbae9568" num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" - vk_tree_root = "0x21cd94941458effa5bf748eb3839418d3deb6bdcd2c04148ca733561265326a5" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.parity_root.public_inputs.start_sponge] + [inputs.inbox_parity.public_inputs.start_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000000" - [inputs.parity_root.public_inputs.start_sponge.sponge] + [inputs.inbox_parity.public_inputs.start_sponge.sponge] cache = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1947,10 +1946,10 @@ proof = [ cache_size = "0x0000000000000000000000000000000000000000000000000000000000000000" squeeze_mode = false - [inputs.parity_root.public_inputs.end_sponge] + [inputs.inbox_parity.public_inputs.end_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000400" - [inputs.parity_root.public_inputs.end_sponge.sponge] + [inputs.inbox_parity.public_inputs.end_sponge.sponge] cache = [ "0x00000000000000000000000000000000000000000000000000000000000009db", "0x00000000000000000000000000000000000000000000000000000000000009d9", @@ -1965,137 +1964,137 @@ proof = [ cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false - [inputs.parity_root.vk_data] - leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000016" + [inputs.inbox_parity.vk_data] + leaf_index = "0x000000000000000000000000000000000000000000000000000000000000004c" sibling_path = [ - "0x2232a08163cdece776b52f4e83935659e922a56096b3e3282b416cc3900e2c5d", - "0x219f2964b7428a78bbc43f6eafcfaaec7d7e97e24030b9d827674e63997843da", - "0x1644c5396c5bae2a881b3b66fc2f0ac7e6f28ebe3dbeede644d6cc1692b3f2c8", - "0x20738d93e695096c6290e7c275252b87c3fc8a419bd4d9991368484bcbd446a7", - "0x2ea23c9cbeafe466f3725ea750741efad48745849cf61628cb3cd0e6156c6246", - "0x187a7b8872d1297bc15f7171f32c36e5e60b53c4145ef62b1899c04fd7220fdf", - "0x2ccaede67145021b6b586f45936dfbdacb151c3e362621c3598ffd60e95b02a0" + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x19f1a0c09db4cd026f686e9c8fb45501a9fefb4eb1b4c6c328a51343a0094eeb", + "0x00f0288e12c8d2cfc9a3367452f5cde532eb491b48a9973413f76776f21078d7", + "0x0a1d41f1f9a82ceedcca0a62137d817577e4ff56a352e1fcd6757134719f67df", + "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", + "0x1434e6e2d5db1053ab8a3be58704509c799ee17e109c77f441f7bf1755400249", + "0x1b82d88b0126f67d4dd805387fb3904a609c9926c1c9f3d4af2d35f6699dd2a8" ] - [inputs.parity_root.vk_data.vk] + [inputs.inbox_parity.vk_data.vk] key = [ - "0x0000000000000000000000000000000000000000000000000000000000000016", - "0x0000000000000000000000000000000000000000000000000000000000000023", + "0x0000000000000000000000000000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000022", "0x0000000000000000000000000000000000000000000000000000000000000005", - "0x000000000000000000000000000000e6555ce9d2ff0425d8225ac1acffda90c8", - "0x000000000000000000000000000000000007232913ee2a0a700d9beea95e6a8b", - "0x000000000000000000000000000000864565901183926e0fa3af90665de020c3", - "0x0000000000000000000000000000000000075c1943d529628111e6fef8d1f621", - "0x0000000000000000000000000000002c37d5e97d9c1b7b25a81b2fd220ec5c07", - "0x00000000000000000000000000000000002991b551bf293dcc07a5e2ae8f1ce6", - "0x000000000000000000000000000000982dd79bdb2fe38bf3ef687480faea26c4", - "0x000000000000000000000000000000000007058d5c60125e897c9d240dc90c35", - "0x000000000000000000000000000000649cf2584ebd3c40994e0736b85affce19", - "0x0000000000000000000000000000000000043b116dbaea584b1819ac2a8d81f2", - "0x000000000000000000000000000000d587bfc4d08f449fe3d5545dd97784208a", - "0x00000000000000000000000000000000001156b8fd13ec84f54ce55669949b88", - "0x0000000000000000000000000000000f1578b4dfe305f2ab7fa83e8ce9841cf7", - "0x00000000000000000000000000000000001ae848fe9d7c70a82bc2130e3064bc", - "0x000000000000000000000000000000a527f6cd93c76f12f247317195d3889637", - "0x000000000000000000000000000000000008e18f1a2de83f830272a9296b7c53", - "0x0000000000000000000000000000005fb9a2ced16e73e0930ecbd8a1b84ebb93", - "0x000000000000000000000000000000000016254886668acd27ac79e2e07c9086", - "0x000000000000000000000000000000c2bfc42dd99eadfa8ad72750d82e185e97", - "0x0000000000000000000000000000000000014d4de4615fdab99078db5bd03622", - "0x000000000000000000000000000000b6dcf36aade509b3e14d030a3af7e3ef21", - "0x00000000000000000000000000000000001f2d620714581940dc87cfaa01a6ac", - "0x0000000000000000000000000000003073dd35723793fd9f753c3522ccfa8aa6", - "0x00000000000000000000000000000000002a9375d41cd350db39b2e4b2f70a8c", - "0x000000000000000000000000000000afe82998fe273ae1f72b85bd531a55a3d8", - "0x000000000000000000000000000000000000ef59f9f6294bebc9efde4007ee44", - "0x0000000000000000000000000000003f67a2eb12485f4adc99062de9153b4fd9", - "0x000000000000000000000000000000000022b799691d6815df364fea9ce78434", - "0x000000000000000000000000000000b85c87583ea9986e1c603df6406d1986c3", - "0x0000000000000000000000000000000000088022933467474bbbd147ce2d09f2", - "0x00000000000000000000000000000045e62752ace57f1c87c34be658309fdec1", - "0x000000000000000000000000000000000004c7207c9f34ccec575a0f8d80ae63", - "0x0000000000000000000000000000001366b0129ddaa35e0b823c73b40b1ce27a", - "0x00000000000000000000000000000000002e49e8876e2fc10e8040f1728ce61a", - "0x00000000000000000000000000000004cfdfba2f54b65bc88585669ed42a2f35", - "0x00000000000000000000000000000000002872cc8bebabf139cdda0ed0663e85", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000015a750309a93db60459bcc7c30bf555279", - "0x00000000000000000000000000000000000c7279f4c2b3cba68125274a31a286", - "0x000000000000000000000000000000557bdaa820100dc626b1c51d37c9e3f4bb", - "0x00000000000000000000000000000000001ea1094926cff3c4c7322a770d40de", - "0x0000000000000000000000000000008386dc3f48c643a4dd233ff8b04bab0884", - "0x000000000000000000000000000000000012e62f7cd00aba93e3c0d63ff315b9", - "0x0000000000000000000000000000007d8e61ee96ed76563c1b8d0d7a404306e6", - "0x00000000000000000000000000000000000d9a4b8e36ef65240a2474e5d1b4c9", - "0x00000000000000000000000000000023d348796b28c5c04ae5f273c222fe96a8", - "0x0000000000000000000000000000000000230ec5f3b173df81a1ca028ad39936", - "0x00000000000000000000000000000096d96efd22d432879e8e6986a0796b3db7", - "0x00000000000000000000000000000000000cb27a832ca1a4d3910b174d9bd505", - "0x000000000000000000000000000000242cbeb71d7525891b2f73536d7c9029a8", - "0x00000000000000000000000000000000000f118f3902fa251724ab418696a0fd", - "0x0000000000000000000000000000000c747a26db36d322be9f19d4713c2e0319", - "0x00000000000000000000000000000000002386f2a1978d5eb12091b0cb4a84b1", - "0x000000000000000000000000000000e49539821f642e85b714fce0ae9eade2ff", - "0x000000000000000000000000000000000014bf86bc264e071790c5861696e810", - "0x0000000000000000000000000000001aec230b12d35a377ba5fc19c324b8e0f4", - "0x00000000000000000000000000000000002fc3721cc9d30a7a2b8667d8d77695", - "0x000000000000000000000000000000b9378a6a9cfc58333f9bf69b09df8ddeb2", - "0x00000000000000000000000000000000002cf26b1d9ab156d970211f24110887", - "0x000000000000000000000000000000cd1f67a2dda433ed5aef39afa6bde07a0c", - "0x00000000000000000000000000000000001bdb0b7fb580386e9a65387ee9a2f0", - "0x000000000000000000000000000000162fce1512cf27555119e9eb6be016ae6f", - "0x0000000000000000000000000000000000219ad705e5e9c4b5e8a873e6277687", - "0x000000000000000000000000000000534fc72815a3917362e2b198cfbc05b55c", - "0x00000000000000000000000000000000002475b9723f6b95b018954bad031b6d", - "0x000000000000000000000000000000da7f713dee3e0ada3f8298813741a93d1c", - "0x00000000000000000000000000000000000d70ab42ed02ad092b4fba2510fd01", - "0x00000000000000000000000000000031a43207c9abd482565fa25a310673b44b", - "0x00000000000000000000000000000000002d990b9b116c2c3f8cc07cec41f66f", - "0x000000000000000000000000000000eeab945307244cdad79966153f94eda446", - "0x00000000000000000000000000000000000b8e5789090f3e45a46b4d66bb2105", - "0x00000000000000000000000000000001c0dd952d930ab73b3542c01fa6ceb054", - "0x0000000000000000000000000000000000057e3ef739be1b18ee041e1df8b955", - "0x000000000000000000000000000000cc10a3766c5dae0f0e4604ebedce91de80", - "0x0000000000000000000000000000000000233a33a86e1e517f02cb8474b05944", - "0x000000000000000000000000000000aed1f153fe534d0863a2737c3da7117f38", - "0x0000000000000000000000000000000000302fbfd3e31925b85e94e37f8b899e", - "0x0000000000000000000000000000005b2161e319fa7bbad667bf76e0e7a46095", - "0x0000000000000000000000000000000000126478d0202a02054534182c9a1a2d", - "0x00000000000000000000000000000035a1f95916b4d48f275fabb52ba66cb11f", - "0x00000000000000000000000000000000002d002c1cfabfca75249a7e03510c16", - "0x000000000000000000000000000000ee110ff40a1d175d904e72e72a18c44b54", - "0x000000000000000000000000000000000001f3f5e602ff22aeae660b831874e5", - "0x000000000000000000000000000000e95f100ff2e7ba47ebd27cb76e8a5b022c", - "0x000000000000000000000000000000000016d722151f8995ebd938daff37ddfb", - "0x0000000000000000000000000000003084e48d703661f4dd3408bfeabdbc8d10", - "0x000000000000000000000000000000000000a41e983b26a4f6f1b54ac3cd06d4", - "0x000000000000000000000000000000f3f45567145e069d1f5a45894190fa3b69", - "0x000000000000000000000000000000000002ecfa46d5ed7a4590e4f2b9e51144", - "0x000000000000000000000000000000e1828b40eeb99ca090390f18802f84954b", - "0x00000000000000000000000000000000000a85ffb4f1e1b93f2f26d6b0e6b07b", - "0x000000000000000000000000000000036e3dfdee2967c143e075448e84f7c7f2", - "0x00000000000000000000000000000000001e53390e107b7ec1d2e4be2e7f9dff", - "0x000000000000000000000000000000335da2eabf61fe815bed48a42e96d5c666", - "0x00000000000000000000000000000000002d543183e0f8f3256889d2336a4932", - "0x000000000000000000000000000000af589bb9f1f72936c8271605f2a7ced655", - "0x00000000000000000000000000000000001523271aa6180969655e064601c2db", - "0x000000000000000000000000000000b8bc5823968906e102c6c14ca17bbc7ef4", - "0x00000000000000000000000000000000000868487cba0921565a4ed82196a4dc", - "0x0000000000000000000000000000002ec7b8c47313f5b39533ac8e7777adf487", - "0x00000000000000000000000000000000000b354658da6cc00930f33a45449545", + "0x000000000000000000000000000000328d1319c69d7e686b6ec27f5f8826f1d6", + "0x00000000000000000000000000000000001e5129f05687a0605e92998f362d22", + "0x00000000000000000000000000000016b8afcbfa53d116a63aa18f1305ac5354", + "0x0000000000000000000000000000000000010bb457863dd919b09ffa619278ec", + "0x0000000000000000000000000000000bc57f7730a7234dee675e439d79fdd3ff", + "0x00000000000000000000000000000000000eb3ccd01c8f9bcb569c3678b3bdd4", + "0x000000000000000000000000000000309d4a9ff9c28c81b3ab1ead81e118545a", + "0x000000000000000000000000000000000019e58c2c3d369fb0b5bd0ada5f1a52", + "0x00000000000000000000000000000032511092a06981ce1ac5cb12e6af8810db", + "0x00000000000000000000000000000000002184fb8c96926d717ac8356ef56911", + "0x0000000000000000000000000000000052f31cffba27db7a7697c73a687e798d", + "0x00000000000000000000000000000000000420a44a90550abe8a82948de4c5f5", + "0x000000000000000000000000000000552eb5ce6a1e83ee06636caea6a2505787", + "0x00000000000000000000000000000000001d68e034086c3bfc28287b93be153e", + "0x000000000000000000000000000000e6789f820241265c4a2ceb157cccda0a4f", + "0x00000000000000000000000000000000000ca13ea50c9c14bc0832b16a61e90e", + "0x000000000000000000000000000000407894f08a1839457acf02116214c13436", + "0x000000000000000000000000000000000014e7040f723b2fe2de9060a293d816", + "0x00000000000000000000000000000042387d2cd2b2664d10817060395f5f97d4", + "0x00000000000000000000000000000000000ff13eba3ce3e42ab168a243b27d82", + "0x000000000000000000000000000000e53814528e6d1e7d412387fca7d1f9b594", + "0x00000000000000000000000000000000002be14788e85833b10834b6e4d85ceb", + "0x00000000000000000000000000000034e2888e67d5cffdfb595c8e56b8595e63", + "0x0000000000000000000000000000000000209f3e0bd3ef2b680f2cd7b1e84e51", + "0x000000000000000000000000000000563cc437ecb7156ef5d87468328aaa0cb3", + "0x000000000000000000000000000000000001b5b362f9444dbfeed4f11bacd017", + "0x000000000000000000000000000000ffcf05ed417b3a4bdbe76a5da459d6c82a", + "0x00000000000000000000000000000000002b1da7f6e4bc380b6e35ca49bf5527", + "0x0000000000000000000000000000004dbda1adb8188198a8dcd576d6acd48378", + "0x000000000000000000000000000000000026b09aac709f7c50590491fe646cb6", + "0x0000000000000000000000000000009558d6fd4bdb0435ba53846c8074a6bf71", + "0x00000000000000000000000000000000002d71445044ebbba09bee463d922b78", "0x0000000000000000000000000000001eee81b23a887f299049b14c11e98460d6", "0x00000000000000000000000000000000002a56ce41f6b0be13b9c26747621b82", "0x000000000000000000000000000000d5827d6338c78656c0d12ca1aea6ef2c7c", "0x00000000000000000000000000000000001aa98f2de3ddda547d8f6de4e725de", - "0x000000000000000000000000000000c31d2e09cd21e410458b05009cbe8d0748", - "0x00000000000000000000000000000000001801fad1d430c4f4be985b26989946", - "0x000000000000000000000000000000ad859142deed3648b2aec3e6b618816c65", - "0x0000000000000000000000000000000000098e8e5a844110f9e6dc2a6ec721b5" + "0x0000000000000000000000000000007d31a1e637b282aecf3a21d0476e5ada2a", + "0x00000000000000000000000000000000000cb87f762b2b5e3f3883b73c1c8454", + "0x000000000000000000000000000000cc0ebf25502a79d92048e99b1f7bf6089a", + "0x000000000000000000000000000000000016200201ae31e2f019b766d6c6c77e", + "0x000000000000000000000000000000ece2ccc928bd0ce9dad4362e0ff8dd69cc", + "0x000000000000000000000000000000000022dc4262de0af1432a4df6b5c0d828", + "0x0000000000000000000000000000001bb52239fb6b68a03690884696453f7725", + "0x000000000000000000000000000000000009f7e8a07b29e1c775b23a666e1d51", + "0x00000000000000000000000000000087250a49d7a2c5e95c5cf96504c7afe932", + "0x00000000000000000000000000000000000be81f5f1e1a7a527d5ab9003aa9c6", + "0x0000000000000000000000000000007fd067241c9169a4c2d51ef5223f04145e", + "0x00000000000000000000000000000000000d62eec848241712d7a74b8a1b3c68", + "0x000000000000000000000000000000a8d2ca5f177c36c219084d36dddc000f83", + "0x00000000000000000000000000000000001cce6c20320da7875f350cf454cc22", + "0x0000000000000000000000000000001eae7070788b005571d12b3a540f96b382", + "0x000000000000000000000000000000000021075b87b825a098dea41fae4a52fc", + "0x00000000000000000000000000000009274d8a5dec6a4606f65d940398c4e84c", + "0x0000000000000000000000000000000000190ebd25195a9d0cc42aa520e32ca0", + "0x000000000000000000000000000000e4f823322afa50800d949ffeca1021b50f", + "0x0000000000000000000000000000000000180fd2df09a5c926d14d683ff7247e", + "0x000000000000000000000000000000f75f78af4ca6ab2b4d1d83ae42d23e6d42", + "0x0000000000000000000000000000000000052b59b0a3c352babfb2ca6fb2dc8b", + "0x000000000000000000000000000000bd2d6785d2f1f1fec8f475ddccefceec78", + "0x0000000000000000000000000000000000096d66f46432fc32317fb12bacbcb2", + "0x000000000000000000000000000000dc325a89c22b0408722be1f1c5785b1f4b", + "0x000000000000000000000000000000000019f69034db6803fd0bf6f717619077", + "0x0000000000000000000000000000002d7bd40a64f03f767a30f2e7fd018d5735", + "0x0000000000000000000000000000000000050d320c00614ec4c19f654d58cece", + "0x00000000000000000000000000000059676dcd87d84ba8724c46dc79d49f47a6", + "0x000000000000000000000000000000000017a1143cf04ef8e3e9a529f1b92770", + "0x000000000000000000000000000000a05aa46f97d4a0f1023bffcb1f77c1438b", + "0x00000000000000000000000000000000000b774fd8023d4876e999b647f05fef", + "0x000000000000000000000000000000a7b4b961805216a888251d68b551356964", + "0x0000000000000000000000000000000000123279dcabc48834b49734e9f2f8a0", + "0x0000000000000000000000000000001a3c5a4221ec46340509ea8b178cecdc08", + "0x0000000000000000000000000000000000288992bc430086e55d9d6cc5ce77ce", + "0x0000000000000000000000000000005409c9549e8beb1965faae93bcbe434daa", + "0x00000000000000000000000000000000002a0890a51aaa4b9f60aabb5bc60542", + "0x000000000000000000000000000000760859693aaf8991a597733a545ab431e6", + "0x00000000000000000000000000000000000f1c39c02aa1b7c229ec9b3eefc391", + "0x0000000000000000000000000000008b2b03962494b503a8ce86b3c232ea87cf", + "0x00000000000000000000000000000000003033c259bfdda849212c239228ee4a", + "0x00000000000000000000000000000030b30a8f93a50fcbc679a3d1168b294587", + "0x00000000000000000000000000000000001c39c0deb6b2b49105998bd64ff7ff", + "0x000000000000000000000000000000a6fa737b040db783952bd5cbdbc6ff0341", + "0x00000000000000000000000000000000002012e88d5d376500aba5240d8f37d4", + "0x000000000000000000000000000000993bb0aca115f36461afada9182663d04a", + "0x000000000000000000000000000000000016a501a6bd071fe93ec57bc01d09e9", + "0x0000000000000000000000000000008e99d84006eec3937117cd3dc54bf467bc", + "0x000000000000000000000000000000000026741ba7278d491cc4ef5f808fd3ed", + "0x00000000000000000000000000000059fd0a6d5caab12a3204ec2f3bb03ea273", + "0x00000000000000000000000000000000000c06a10d5a1f39c0d1ff01a8fedd52", + "0x00000000000000000000000000000087db338a273ef894bdee1298de59c7b9fc", + "0x000000000000000000000000000000000001bda0babe63bfbe1cc8170c26af48", + "0x00000000000000000000000000000076523a3d16889ef1b595d6ee771a54e4ba", + "0x00000000000000000000000000000000002ea89ff682b4d2427dd4ab430382ae", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000f93f9b3c3ccb03b1d0f59150699f9fa3f9", + "0x00000000000000000000000000000000001ae9fc694057698cfd927a9afe43fb", + "0x0000000000000000000000000000004baef7faea08dc749d788a4c6c9bbe29d2", + "0x00000000000000000000000000000000002cc1f10d4638983f558eecdc6ba39f", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000c2e566a842af127bb2863b28e5c9834dd", + "0x0000000000000000000000000000000000123326d1f3e3f1e6439701c2e4c376", + "0x0000000000000000000000000000001e726d0681305bc36d34999bc9848337c2", + "0x00000000000000000000000000000000001298212e7f4c6f496d44b34cf49805", + "0x000000000000000000000000000000d1ed1e54ab019bd2ca96095e6025ba414f", + "0x000000000000000000000000000000000019227b7d43eb104ef0e6acf3b0f41a", + "0x0000000000000000000000000000006692c1a1cfad8e8fac36fb92129878159f", + "0x00000000000000000000000000000000002e861c2b1aa417701f37425baa8d21" ] - hash = "0x247bc17e8f5aa0195134ff3bcb1e538964dde7724cfabf9e3054cf8f1eb7f5c0" + hash = "0x09c1c633e0ec0baf5833b43503da14c2cbceaa66180315b0cab7fa5177337e0e" [inputs.hints] previous_archive_sibling_path = [ @@ -2139,7 +2138,7 @@ new_out_hash_sibling_path = [ ] blobs_fields = [ "0x00000000009c70751800400040000800010040040000000000000000000004cd", - "0x0c62201127224706fa59ac45e4791fb9151b46e0f02659f7ee6c289c4e421886", + "0x12006d5090806e6de43332aee6e593838e5321616a8cc843ec86db537d17e604", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000b7d1b100", "0x00000000000000000000000000000000000000000000000000000000b7d1b101", @@ -3375,7 +3374,7 @@ blobs_fields = [ "0x1a90881964e28a92a419f1d8361c14ac147b6f9175c04fdf57dadf0d7ba781c9", "0x18d6aae3ab4a271abd590cb98267825b70de1e9e5c339356e94ea5fc7feba64b", "0x00000000009c707518004000400008004000400400000000000000000000054b", - "0x0a8d383f540396242a791b6ae5b7630fd104efd47ea2f7565f3c7f46f95be355", + "0x0295fcaed5e8f00ce18060ee92f418c30fe51949e1633c3bddb26b92c02abc0a", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000b7e5c000", "0x00000000000000000000000000000000000000000000000000000000b7e5c001", @@ -4731,12 +4730,12 @@ blobs_fields = [ "0x00000000000000000000000000000000000000000000000000000000b7e5c34e", "0x0000000000000000000000000000eb8dcdbf0000000000000186000000020001", "0x00000000000000000040000000000200000000010000000000bf000000000000", - "0x189ad25ea09777fb1b3d798259ce6a871022d8ff9f0ee907defe19a196ef7319", + "0x2d84822e545f3f6e16012e854f9327cee518281ec5f6925ae461d64328e692ee", "0x2326bf220c6839c1856478f0c082f0c5883b2baed0bc222a1fa5e1244184c82b", "0x1e1c597744057b88e39a9780ed087c39b1fc42864e05ef03a59ebd9e96b70b00", "0x2306af8b455a9cbf87331182183be8c0759fd5e1a4f606cea8a9e24efa461759", "0x00000000009c70751800400040000800010040040000000000000000000004cd", - "0x1914294e29770dbc43589000de8400e08b33a8170e74d64d6abdb5f2b5e007ba", + "0x2b65ddafdb085933096aeaa74c3f45700c87829e8ab6d184bd2b2df846d7bb7a", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x00000000000000000000000000000000000000000000000000000000b7f9d100", "0x00000000000000000000000000000000000000000000000000000000b7f9d101", @@ -5966,7 +5965,7 @@ blobs_fields = [ "0x00000000000000000000000000000000000000000000000000000000b7f9d44e", "0x0000000000000000000000000000eb8dcdbf0000000000000186000000030001", "0x00000000000000000040000000000300000000014000000000bf00000006b6c0", - "0x25d517225f0f8bd739dd1fda514be0d6e6566c091b69c067ae0a339b586f87ca", + "0x117aeecc54e82e86461b9fdcf0a0b047ec63a08ecbf4701f5e0898efafa79b29", "0x144f9224dee4aac6eddc5d988e7c6965528d2e08db91cf58989655a68fbfcc52", "0x191d19a6ad2b7bba03d122035938544f5e65de24aeaa436cd5e4d977bd014505", "0x2306af8b455a9cbf87331182183be8c0759fd5e1a4f606cea8a9e24efa461759", @@ -26715,7 +26714,7 @@ blobs_fields = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000" ] -blobs_hash = "0x00b5f229e8932137be3622861b4ad36b65b6a271cec1b16764004ee16e14e40d" +blobs_hash = "0x00fbc72e348d1a0f41eab7e69d6a4f8051802d738a62d973eb5bb42ea0c67a6f" [inputs.hints.previous_block_header] sponge_blob_hash = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -26802,13 +26801,13 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 ] [inputs.hints.final_blob_challenges] - z = "0x1a690bb7daf9f4488ad655f4e88ab28a73706e569d2a2a7de44e0bc4aa4afdc6" + z = "0x0db46f47c4d63a98f56b9c264991bff648af4cc854f0c6a5a76b6b86df761456" [inputs.hints.final_blob_challenges.gamma] limbs = [ - "0x33bea83ec6627514c4a86f7c50b73e", - "0x503cf4010b29ce62d785cf776b08da", - "0x16e5" + "0xf6f83cd40c1844dfdaa13808d1d506", + "0x042c3c6ecf32884c61359405f0b61d", + "0x2d10" ] [[inputs.hints.blob_commitments]] @@ -26816,18 +26815,18 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 [inputs.hints.blob_commitments.x] limbs = [ - "0x959abc8eb1c274e300e7a92bc33d69", - "0x856c5bcf31bb8f0046678aba4d0464", - "0xf0a8ca8c16046d039418561e056bb8", - "0x178b04" + "0xcf3fb7c37aa14710885d9b8c4de015", + "0x7801b514d4ea9f906b8ae1aeaee5af", + "0xc749fd4844e7c1330673bf9559f92a", + "0x08d02a" ] [inputs.hints.blob_commitments.y] limbs = [ - "0x78d4e0e3a955138b8e009fb2d9a8a4", - "0xe1945a74e2760057ef467d770db1d7", - "0x84e83b3948628b9b06b6fa70595897", - "0x0b29ff" + "0x7cd018f82b696940e5b7705dfcf238", + "0xf1129e6150a606de408fcec4a83a94", + "0x4f909208f9a2dc50c645d87b13c692", + "0x137c8f" ] [[inputs.hints.blob_commitments]] From 7a8a603b19c23c4608aedfae6915fb732ed67fd6 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Sun, 19 Jul 2026 13:35:43 -0300 Subject: [PATCH 07/10] chore(fast-inbox): regenerate block-root sample inputs for the message_bundle input shape (A-1427) The inbox-parity branch reshapes the block-root private inputs around message_bundle; carry the sample inputs generated at this state so nargo execute passes for the five block-root crates. --- .../Prover.toml | 223 +- .../Prover.toml | 2075 ++++++++-------- .../rollup-block-root-first/Prover.toml | 2101 ++++++++-------- .../rollup-block-root-single-tx/Prover.toml | 2147 ++++++++-------- .../crates/rollup-block-root/Prover.toml | 2173 +++++++++-------- 5 files changed, 4367 insertions(+), 4352 deletions(-) diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-empty-tx/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-empty-tx/Prover.toml index 7116cee1e511..b2bc95dd4c40 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-empty-tx/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-empty-tx/Prover.toml @@ -1,6 +1,116 @@ [inputs] timestamp = "0x0000000000000000000000000000000000000000000000000000000000000186" -l1_to_l2_messages = [ +l1_to_l2_message_frontier_hint = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0d04c63f36bd168215c9b09a227c7e8d3ad48e2f11b8202fd07c524bd30ee88f", + "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", + "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", + "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", + "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", + "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", + "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", + "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", + "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", + "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", + "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", + "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", + "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", + "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", + "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", + "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", + "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", + "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", + "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", + "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", + "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", + "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", + "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", + "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", + "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", + "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" +] +new_archive_sibling_path = [ + "0x03f4c32538d42652fb32a5cb2aee4307443fe38382028580e7aa46e43182df55", + "0x19f1a0c09db4cd026f686e9c8fb45501a9fefb4eb1b4c6c328a51343a0094eeb", + "0x14e4b977b2203b70e6ee1c2456eb7114d090fe4b907f631eecd0919fed432e7d", + "0x30105bad22ddcc508b739b7c9ad87a561c569ff5cb0098a853c1c4ac21b7a037", + "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", + "0x1434e6e2d5db1053ab8a3be58704509c799ee17e109c77f441f7bf1755400249", + "0x119f56a2e8423a7feaab49b9b5dcbadec0648dfa4096b61b6774ea33ae29dc7f", + "0x221cf368938c74e4fced9dfb2a8e37cd8a6c57d21385c249f0b5c2412341287f", + "0x2c5214dfc4d70d2619fce2a7e02ddcf380576dca42b66c9215c7d8d1ec154116", + "0x13abc9bba431e6930c169f5daeb60aedbb27d7618c7ff88b3b4ec1c6de1d6bb8", + "0x0d04c63f36bd168215c9b09a227c7e8d3ad48e2f11b8202fd07c524bd30ee88f", + "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", + "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", + "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", + "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", + "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", + "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", + "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", + "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", + "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", + "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", + "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", + "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", + "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", + "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", + "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", + "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", + "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", + "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", + "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c" +] + + [inputs.previous_archive] + root = "0x0fb2945d3438d906d88a216364dbfe9760e96001343468610e01d18182d493d0" + next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000001" + +[inputs.previous_state.l1_to_l2_message_tree] +root = "0x0fef6d80d31109ddb56d6b3f607cbc9c0af0bff3ea0d43e8f278983c64c11f7a" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + +[inputs.previous_state.partial.note_hash_tree] +root = "0x2590f2aab19dd791700b4a43d3f52bb88ef2409a3731da8e848663559202e4c6" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" + +[inputs.previous_state.partial.nullifier_tree] +root = "0x18935581a8ed73d08ffd00386fba55ba6c89f3ab848a76b8fedfa9034cee0454" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" + +[inputs.previous_state.partial.public_data_tree] +root = "0x1a90881964e28a92a419f1d8361c14ac147b6f9175c04fdf57dadf0d7ba781c9" +next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" + + [inputs.constants] + chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" + version = "0x0000000000000000000000000000000000000000000000000000000000000000" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" + protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" + prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" + slot_number = "0x000000000000000000000000000000000000000000000000000000000000000f" + + [inputs.constants.coinbase] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.constants.fee_recipient] + inner = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.constants.gas_fees] + fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + + [inputs.message_bundle] + messages = [ "0x00000000000000000000000000000000000000000000000000000000000005dc", "0x00000000000000000000000000000000000000000000000000000000000005dd", "0x00000000000000000000000000000000000000000000000000000000000005de", @@ -1026,112 +1136,5 @@ l1_to_l2_messages = [ "0x00000000000000000000000000000000000000000000000000000000000009da", "0x00000000000000000000000000000000000000000000000000000000000009db" ] -num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" -l1_to_l2_message_frontier_hint = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0d04c63f36bd168215c9b09a227c7e8d3ad48e2f11b8202fd07c524bd30ee88f", - "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", - "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", - "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", - "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", - "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", - "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", - "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", - "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", - "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", - "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", - "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", - "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", - "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", - "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", - "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", - "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", - "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", - "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", - "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", - "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", - "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", - "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", - "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", - "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", - "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" -] -new_archive_sibling_path = [ - "0x03f4c32538d42652fb32a5cb2aee4307443fe38382028580e7aa46e43182df55", - "0x19f1a0c09db4cd026f686e9c8fb45501a9fefb4eb1b4c6c328a51343a0094eeb", - "0x14e4b977b2203b70e6ee1c2456eb7114d090fe4b907f631eecd0919fed432e7d", - "0x30105bad22ddcc508b739b7c9ad87a561c569ff5cb0098a853c1c4ac21b7a037", - "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", - "0x1434e6e2d5db1053ab8a3be58704509c799ee17e109c77f441f7bf1755400249", - "0x119f56a2e8423a7feaab49b9b5dcbadec0648dfa4096b61b6774ea33ae29dc7f", - "0x221cf368938c74e4fced9dfb2a8e37cd8a6c57d21385c249f0b5c2412341287f", - "0x2c5214dfc4d70d2619fce2a7e02ddcf380576dca42b66c9215c7d8d1ec154116", - "0x13abc9bba431e6930c169f5daeb60aedbb27d7618c7ff88b3b4ec1c6de1d6bb8", - "0x0d04c63f36bd168215c9b09a227c7e8d3ad48e2f11b8202fd07c524bd30ee88f", - "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", - "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", - "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", - "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", - "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", - "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", - "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", - "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", - "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", - "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", - "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", - "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", - "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", - "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", - "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", - "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", - "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", - "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", - "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c" -] - - [inputs.previous_archive] - root = "0x0fb2945d3438d906d88a216364dbfe9760e96001343468610e01d18182d493d0" - next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000001" - -[inputs.previous_state.l1_to_l2_message_tree] -root = "0x0fef6d80d31109ddb56d6b3f607cbc9c0af0bff3ea0d43e8f278983c64c11f7a" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" - -[inputs.previous_state.partial.note_hash_tree] -root = "0x2590f2aab19dd791700b4a43d3f52bb88ef2409a3731da8e848663559202e4c6" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000000" - -[inputs.previous_state.partial.nullifier_tree] -root = "0x18935581a8ed73d08ffd00386fba55ba6c89f3ab848a76b8fedfa9034cee0454" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" - -[inputs.previous_state.partial.public_data_tree] -root = "0x1a90881964e28a92a419f1d8361c14ac147b6f9175c04fdf57dadf0d7ba781c9" -next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000080" - - [inputs.constants] - chain_id = "0x0000000000000000000000000000000000000000000000000000000000000000" - version = "0x0000000000000000000000000000000000000000000000000000000000000000" - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" - protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" - prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" - slot_number = "0x000000000000000000000000000000000000000000000000000000000000000f" - - [inputs.constants.coinbase] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.constants.fee_recipient] - inner = "0x0000000000000000000000000000000000000000000000000000000000000000" - - [inputs.constants.gas_fees] - fee_per_da_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" - fee_per_l2_gas = "0x0000000000000000000000000000000000000000000000000000000000000000" + num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" + num_real_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-single-tx/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-single-tx/Prover.toml index d10e7de603e3..00d469d40a2b 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-single-tx/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first-single-tx/Prover.toml @@ -1,1031 +1,4 @@ [inputs] -l1_to_l2_messages = [ - "0x00000000000000000000000000000000000000000000000000000000000005dc", - "0x00000000000000000000000000000000000000000000000000000000000005dd", - "0x00000000000000000000000000000000000000000000000000000000000005de", - "0x00000000000000000000000000000000000000000000000000000000000005df", - "0x00000000000000000000000000000000000000000000000000000000000005e0", - "0x00000000000000000000000000000000000000000000000000000000000005e1", - "0x00000000000000000000000000000000000000000000000000000000000005e2", - "0x00000000000000000000000000000000000000000000000000000000000005e3", - "0x00000000000000000000000000000000000000000000000000000000000005e4", - "0x00000000000000000000000000000000000000000000000000000000000005e5", - "0x00000000000000000000000000000000000000000000000000000000000005e6", - "0x00000000000000000000000000000000000000000000000000000000000005e7", - "0x00000000000000000000000000000000000000000000000000000000000005e8", - "0x00000000000000000000000000000000000000000000000000000000000005e9", - "0x00000000000000000000000000000000000000000000000000000000000005ea", - "0x00000000000000000000000000000000000000000000000000000000000005eb", - "0x00000000000000000000000000000000000000000000000000000000000005ec", - "0x00000000000000000000000000000000000000000000000000000000000005ed", - "0x00000000000000000000000000000000000000000000000000000000000005ee", - "0x00000000000000000000000000000000000000000000000000000000000005ef", - "0x00000000000000000000000000000000000000000000000000000000000005f0", - "0x00000000000000000000000000000000000000000000000000000000000005f1", - "0x00000000000000000000000000000000000000000000000000000000000005f2", - "0x00000000000000000000000000000000000000000000000000000000000005f3", - "0x00000000000000000000000000000000000000000000000000000000000005f4", - "0x00000000000000000000000000000000000000000000000000000000000005f5", - "0x00000000000000000000000000000000000000000000000000000000000005f6", - "0x00000000000000000000000000000000000000000000000000000000000005f7", - "0x00000000000000000000000000000000000000000000000000000000000005f8", - "0x00000000000000000000000000000000000000000000000000000000000005f9", - "0x00000000000000000000000000000000000000000000000000000000000005fa", - "0x00000000000000000000000000000000000000000000000000000000000005fb", - "0x00000000000000000000000000000000000000000000000000000000000005fc", - "0x00000000000000000000000000000000000000000000000000000000000005fd", - "0x00000000000000000000000000000000000000000000000000000000000005fe", - "0x00000000000000000000000000000000000000000000000000000000000005ff", - "0x0000000000000000000000000000000000000000000000000000000000000600", - "0x0000000000000000000000000000000000000000000000000000000000000601", - "0x0000000000000000000000000000000000000000000000000000000000000602", - "0x0000000000000000000000000000000000000000000000000000000000000603", - "0x0000000000000000000000000000000000000000000000000000000000000604", - "0x0000000000000000000000000000000000000000000000000000000000000605", - "0x0000000000000000000000000000000000000000000000000000000000000606", - "0x0000000000000000000000000000000000000000000000000000000000000607", - "0x0000000000000000000000000000000000000000000000000000000000000608", - "0x0000000000000000000000000000000000000000000000000000000000000609", - "0x000000000000000000000000000000000000000000000000000000000000060a", - "0x000000000000000000000000000000000000000000000000000000000000060b", - "0x000000000000000000000000000000000000000000000000000000000000060c", - "0x000000000000000000000000000000000000000000000000000000000000060d", - "0x000000000000000000000000000000000000000000000000000000000000060e", - "0x000000000000000000000000000000000000000000000000000000000000060f", - "0x0000000000000000000000000000000000000000000000000000000000000610", - "0x0000000000000000000000000000000000000000000000000000000000000611", - "0x0000000000000000000000000000000000000000000000000000000000000612", - "0x0000000000000000000000000000000000000000000000000000000000000613", - "0x0000000000000000000000000000000000000000000000000000000000000614", - "0x0000000000000000000000000000000000000000000000000000000000000615", - "0x0000000000000000000000000000000000000000000000000000000000000616", - "0x0000000000000000000000000000000000000000000000000000000000000617", - "0x0000000000000000000000000000000000000000000000000000000000000618", - "0x0000000000000000000000000000000000000000000000000000000000000619", - "0x000000000000000000000000000000000000000000000000000000000000061a", - "0x000000000000000000000000000000000000000000000000000000000000061b", - "0x000000000000000000000000000000000000000000000000000000000000061c", - "0x000000000000000000000000000000000000000000000000000000000000061d", - "0x000000000000000000000000000000000000000000000000000000000000061e", - "0x000000000000000000000000000000000000000000000000000000000000061f", - "0x0000000000000000000000000000000000000000000000000000000000000620", - "0x0000000000000000000000000000000000000000000000000000000000000621", - "0x0000000000000000000000000000000000000000000000000000000000000622", - "0x0000000000000000000000000000000000000000000000000000000000000623", - "0x0000000000000000000000000000000000000000000000000000000000000624", - "0x0000000000000000000000000000000000000000000000000000000000000625", - "0x0000000000000000000000000000000000000000000000000000000000000626", - "0x0000000000000000000000000000000000000000000000000000000000000627", - "0x0000000000000000000000000000000000000000000000000000000000000628", - "0x0000000000000000000000000000000000000000000000000000000000000629", - "0x000000000000000000000000000000000000000000000000000000000000062a", - "0x000000000000000000000000000000000000000000000000000000000000062b", - "0x000000000000000000000000000000000000000000000000000000000000062c", - "0x000000000000000000000000000000000000000000000000000000000000062d", - "0x000000000000000000000000000000000000000000000000000000000000062e", - "0x000000000000000000000000000000000000000000000000000000000000062f", - "0x0000000000000000000000000000000000000000000000000000000000000630", - "0x0000000000000000000000000000000000000000000000000000000000000631", - "0x0000000000000000000000000000000000000000000000000000000000000632", - "0x0000000000000000000000000000000000000000000000000000000000000633", - "0x0000000000000000000000000000000000000000000000000000000000000634", - "0x0000000000000000000000000000000000000000000000000000000000000635", - "0x0000000000000000000000000000000000000000000000000000000000000636", - "0x0000000000000000000000000000000000000000000000000000000000000637", - "0x0000000000000000000000000000000000000000000000000000000000000638", - "0x0000000000000000000000000000000000000000000000000000000000000639", - "0x000000000000000000000000000000000000000000000000000000000000063a", - "0x000000000000000000000000000000000000000000000000000000000000063b", - "0x000000000000000000000000000000000000000000000000000000000000063c", - "0x000000000000000000000000000000000000000000000000000000000000063d", - "0x000000000000000000000000000000000000000000000000000000000000063e", - "0x000000000000000000000000000000000000000000000000000000000000063f", - "0x0000000000000000000000000000000000000000000000000000000000000640", - "0x0000000000000000000000000000000000000000000000000000000000000641", - "0x0000000000000000000000000000000000000000000000000000000000000642", - "0x0000000000000000000000000000000000000000000000000000000000000643", - "0x0000000000000000000000000000000000000000000000000000000000000644", - "0x0000000000000000000000000000000000000000000000000000000000000645", - "0x0000000000000000000000000000000000000000000000000000000000000646", - "0x0000000000000000000000000000000000000000000000000000000000000647", - "0x0000000000000000000000000000000000000000000000000000000000000648", - "0x0000000000000000000000000000000000000000000000000000000000000649", - "0x000000000000000000000000000000000000000000000000000000000000064a", - "0x000000000000000000000000000000000000000000000000000000000000064b", - "0x000000000000000000000000000000000000000000000000000000000000064c", - "0x000000000000000000000000000000000000000000000000000000000000064d", - "0x000000000000000000000000000000000000000000000000000000000000064e", - "0x000000000000000000000000000000000000000000000000000000000000064f", - "0x0000000000000000000000000000000000000000000000000000000000000650", - "0x0000000000000000000000000000000000000000000000000000000000000651", - "0x0000000000000000000000000000000000000000000000000000000000000652", - "0x0000000000000000000000000000000000000000000000000000000000000653", - "0x0000000000000000000000000000000000000000000000000000000000000654", - "0x0000000000000000000000000000000000000000000000000000000000000655", - "0x0000000000000000000000000000000000000000000000000000000000000656", - "0x0000000000000000000000000000000000000000000000000000000000000657", - "0x0000000000000000000000000000000000000000000000000000000000000658", - "0x0000000000000000000000000000000000000000000000000000000000000659", - "0x000000000000000000000000000000000000000000000000000000000000065a", - "0x000000000000000000000000000000000000000000000000000000000000065b", - "0x000000000000000000000000000000000000000000000000000000000000065c", - "0x000000000000000000000000000000000000000000000000000000000000065d", - "0x000000000000000000000000000000000000000000000000000000000000065e", - "0x000000000000000000000000000000000000000000000000000000000000065f", - "0x0000000000000000000000000000000000000000000000000000000000000660", - "0x0000000000000000000000000000000000000000000000000000000000000661", - "0x0000000000000000000000000000000000000000000000000000000000000662", - "0x0000000000000000000000000000000000000000000000000000000000000663", - "0x0000000000000000000000000000000000000000000000000000000000000664", - "0x0000000000000000000000000000000000000000000000000000000000000665", - "0x0000000000000000000000000000000000000000000000000000000000000666", - "0x0000000000000000000000000000000000000000000000000000000000000667", - "0x0000000000000000000000000000000000000000000000000000000000000668", - "0x0000000000000000000000000000000000000000000000000000000000000669", - "0x000000000000000000000000000000000000000000000000000000000000066a", - "0x000000000000000000000000000000000000000000000000000000000000066b", - "0x000000000000000000000000000000000000000000000000000000000000066c", - "0x000000000000000000000000000000000000000000000000000000000000066d", - "0x000000000000000000000000000000000000000000000000000000000000066e", - "0x000000000000000000000000000000000000000000000000000000000000066f", - "0x0000000000000000000000000000000000000000000000000000000000000670", - "0x0000000000000000000000000000000000000000000000000000000000000671", - "0x0000000000000000000000000000000000000000000000000000000000000672", - "0x0000000000000000000000000000000000000000000000000000000000000673", - "0x0000000000000000000000000000000000000000000000000000000000000674", - "0x0000000000000000000000000000000000000000000000000000000000000675", - "0x0000000000000000000000000000000000000000000000000000000000000676", - "0x0000000000000000000000000000000000000000000000000000000000000677", - "0x0000000000000000000000000000000000000000000000000000000000000678", - "0x0000000000000000000000000000000000000000000000000000000000000679", - "0x000000000000000000000000000000000000000000000000000000000000067a", - "0x000000000000000000000000000000000000000000000000000000000000067b", - "0x000000000000000000000000000000000000000000000000000000000000067c", - "0x000000000000000000000000000000000000000000000000000000000000067d", - "0x000000000000000000000000000000000000000000000000000000000000067e", - "0x000000000000000000000000000000000000000000000000000000000000067f", - "0x0000000000000000000000000000000000000000000000000000000000000680", - "0x0000000000000000000000000000000000000000000000000000000000000681", - "0x0000000000000000000000000000000000000000000000000000000000000682", - "0x0000000000000000000000000000000000000000000000000000000000000683", - "0x0000000000000000000000000000000000000000000000000000000000000684", - "0x0000000000000000000000000000000000000000000000000000000000000685", - "0x0000000000000000000000000000000000000000000000000000000000000686", - "0x0000000000000000000000000000000000000000000000000000000000000687", - "0x0000000000000000000000000000000000000000000000000000000000000688", - "0x0000000000000000000000000000000000000000000000000000000000000689", - "0x000000000000000000000000000000000000000000000000000000000000068a", - "0x000000000000000000000000000000000000000000000000000000000000068b", - "0x000000000000000000000000000000000000000000000000000000000000068c", - "0x000000000000000000000000000000000000000000000000000000000000068d", - "0x000000000000000000000000000000000000000000000000000000000000068e", - "0x000000000000000000000000000000000000000000000000000000000000068f", - "0x0000000000000000000000000000000000000000000000000000000000000690", - "0x0000000000000000000000000000000000000000000000000000000000000691", - "0x0000000000000000000000000000000000000000000000000000000000000692", - "0x0000000000000000000000000000000000000000000000000000000000000693", - "0x0000000000000000000000000000000000000000000000000000000000000694", - "0x0000000000000000000000000000000000000000000000000000000000000695", - "0x0000000000000000000000000000000000000000000000000000000000000696", - "0x0000000000000000000000000000000000000000000000000000000000000697", - "0x0000000000000000000000000000000000000000000000000000000000000698", - "0x0000000000000000000000000000000000000000000000000000000000000699", - "0x000000000000000000000000000000000000000000000000000000000000069a", - "0x000000000000000000000000000000000000000000000000000000000000069b", - "0x000000000000000000000000000000000000000000000000000000000000069c", - "0x000000000000000000000000000000000000000000000000000000000000069d", - "0x000000000000000000000000000000000000000000000000000000000000069e", - "0x000000000000000000000000000000000000000000000000000000000000069f", - "0x00000000000000000000000000000000000000000000000000000000000006a0", - "0x00000000000000000000000000000000000000000000000000000000000006a1", - "0x00000000000000000000000000000000000000000000000000000000000006a2", - "0x00000000000000000000000000000000000000000000000000000000000006a3", - "0x00000000000000000000000000000000000000000000000000000000000006a4", - "0x00000000000000000000000000000000000000000000000000000000000006a5", - "0x00000000000000000000000000000000000000000000000000000000000006a6", - "0x00000000000000000000000000000000000000000000000000000000000006a7", - "0x00000000000000000000000000000000000000000000000000000000000006a8", - "0x00000000000000000000000000000000000000000000000000000000000006a9", - "0x00000000000000000000000000000000000000000000000000000000000006aa", - "0x00000000000000000000000000000000000000000000000000000000000006ab", - "0x00000000000000000000000000000000000000000000000000000000000006ac", - "0x00000000000000000000000000000000000000000000000000000000000006ad", - "0x00000000000000000000000000000000000000000000000000000000000006ae", - "0x00000000000000000000000000000000000000000000000000000000000006af", - "0x00000000000000000000000000000000000000000000000000000000000006b0", - "0x00000000000000000000000000000000000000000000000000000000000006b1", - "0x00000000000000000000000000000000000000000000000000000000000006b2", - "0x00000000000000000000000000000000000000000000000000000000000006b3", - "0x00000000000000000000000000000000000000000000000000000000000006b4", - "0x00000000000000000000000000000000000000000000000000000000000006b5", - "0x00000000000000000000000000000000000000000000000000000000000006b6", - "0x00000000000000000000000000000000000000000000000000000000000006b7", - "0x00000000000000000000000000000000000000000000000000000000000006b8", - "0x00000000000000000000000000000000000000000000000000000000000006b9", - "0x00000000000000000000000000000000000000000000000000000000000006ba", - "0x00000000000000000000000000000000000000000000000000000000000006bb", - "0x00000000000000000000000000000000000000000000000000000000000006bc", - "0x00000000000000000000000000000000000000000000000000000000000006bd", - "0x00000000000000000000000000000000000000000000000000000000000006be", - "0x00000000000000000000000000000000000000000000000000000000000006bf", - "0x00000000000000000000000000000000000000000000000000000000000006c0", - "0x00000000000000000000000000000000000000000000000000000000000006c1", - "0x00000000000000000000000000000000000000000000000000000000000006c2", - "0x00000000000000000000000000000000000000000000000000000000000006c3", - "0x00000000000000000000000000000000000000000000000000000000000006c4", - "0x00000000000000000000000000000000000000000000000000000000000006c5", - "0x00000000000000000000000000000000000000000000000000000000000006c6", - "0x00000000000000000000000000000000000000000000000000000000000006c7", - "0x00000000000000000000000000000000000000000000000000000000000006c8", - "0x00000000000000000000000000000000000000000000000000000000000006c9", - "0x00000000000000000000000000000000000000000000000000000000000006ca", - "0x00000000000000000000000000000000000000000000000000000000000006cb", - "0x00000000000000000000000000000000000000000000000000000000000006cc", - "0x00000000000000000000000000000000000000000000000000000000000006cd", - "0x00000000000000000000000000000000000000000000000000000000000006ce", - "0x00000000000000000000000000000000000000000000000000000000000006cf", - "0x00000000000000000000000000000000000000000000000000000000000006d0", - "0x00000000000000000000000000000000000000000000000000000000000006d1", - "0x00000000000000000000000000000000000000000000000000000000000006d2", - "0x00000000000000000000000000000000000000000000000000000000000006d3", - "0x00000000000000000000000000000000000000000000000000000000000006d4", - "0x00000000000000000000000000000000000000000000000000000000000006d5", - "0x00000000000000000000000000000000000000000000000000000000000006d6", - "0x00000000000000000000000000000000000000000000000000000000000006d7", - "0x00000000000000000000000000000000000000000000000000000000000006d8", - "0x00000000000000000000000000000000000000000000000000000000000006d9", - "0x00000000000000000000000000000000000000000000000000000000000006da", - "0x00000000000000000000000000000000000000000000000000000000000006db", - "0x00000000000000000000000000000000000000000000000000000000000006dc", - "0x00000000000000000000000000000000000000000000000000000000000006dd", - "0x00000000000000000000000000000000000000000000000000000000000006de", - "0x00000000000000000000000000000000000000000000000000000000000006df", - "0x00000000000000000000000000000000000000000000000000000000000006e0", - "0x00000000000000000000000000000000000000000000000000000000000006e1", - "0x00000000000000000000000000000000000000000000000000000000000006e2", - "0x00000000000000000000000000000000000000000000000000000000000006e3", - "0x00000000000000000000000000000000000000000000000000000000000006e4", - "0x00000000000000000000000000000000000000000000000000000000000006e5", - "0x00000000000000000000000000000000000000000000000000000000000006e6", - "0x00000000000000000000000000000000000000000000000000000000000006e7", - "0x00000000000000000000000000000000000000000000000000000000000006e8", - "0x00000000000000000000000000000000000000000000000000000000000006e9", - "0x00000000000000000000000000000000000000000000000000000000000006ea", - "0x00000000000000000000000000000000000000000000000000000000000006eb", - "0x00000000000000000000000000000000000000000000000000000000000006ec", - "0x00000000000000000000000000000000000000000000000000000000000006ed", - "0x00000000000000000000000000000000000000000000000000000000000006ee", - "0x00000000000000000000000000000000000000000000000000000000000006ef", - "0x00000000000000000000000000000000000000000000000000000000000006f0", - "0x00000000000000000000000000000000000000000000000000000000000006f1", - "0x00000000000000000000000000000000000000000000000000000000000006f2", - "0x00000000000000000000000000000000000000000000000000000000000006f3", - "0x00000000000000000000000000000000000000000000000000000000000006f4", - "0x00000000000000000000000000000000000000000000000000000000000006f5", - "0x00000000000000000000000000000000000000000000000000000000000006f6", - "0x00000000000000000000000000000000000000000000000000000000000006f7", - "0x00000000000000000000000000000000000000000000000000000000000006f8", - "0x00000000000000000000000000000000000000000000000000000000000006f9", - "0x00000000000000000000000000000000000000000000000000000000000006fa", - "0x00000000000000000000000000000000000000000000000000000000000006fb", - "0x00000000000000000000000000000000000000000000000000000000000006fc", - "0x00000000000000000000000000000000000000000000000000000000000006fd", - "0x00000000000000000000000000000000000000000000000000000000000006fe", - "0x00000000000000000000000000000000000000000000000000000000000006ff", - "0x0000000000000000000000000000000000000000000000000000000000000700", - "0x0000000000000000000000000000000000000000000000000000000000000701", - "0x0000000000000000000000000000000000000000000000000000000000000702", - "0x0000000000000000000000000000000000000000000000000000000000000703", - "0x0000000000000000000000000000000000000000000000000000000000000704", - "0x0000000000000000000000000000000000000000000000000000000000000705", - "0x0000000000000000000000000000000000000000000000000000000000000706", - "0x0000000000000000000000000000000000000000000000000000000000000707", - "0x0000000000000000000000000000000000000000000000000000000000000708", - "0x0000000000000000000000000000000000000000000000000000000000000709", - "0x000000000000000000000000000000000000000000000000000000000000070a", - "0x000000000000000000000000000000000000000000000000000000000000070b", - "0x000000000000000000000000000000000000000000000000000000000000070c", - "0x000000000000000000000000000000000000000000000000000000000000070d", - "0x000000000000000000000000000000000000000000000000000000000000070e", - "0x000000000000000000000000000000000000000000000000000000000000070f", - "0x0000000000000000000000000000000000000000000000000000000000000710", - "0x0000000000000000000000000000000000000000000000000000000000000711", - "0x0000000000000000000000000000000000000000000000000000000000000712", - "0x0000000000000000000000000000000000000000000000000000000000000713", - "0x0000000000000000000000000000000000000000000000000000000000000714", - "0x0000000000000000000000000000000000000000000000000000000000000715", - "0x0000000000000000000000000000000000000000000000000000000000000716", - "0x0000000000000000000000000000000000000000000000000000000000000717", - "0x0000000000000000000000000000000000000000000000000000000000000718", - "0x0000000000000000000000000000000000000000000000000000000000000719", - "0x000000000000000000000000000000000000000000000000000000000000071a", - "0x000000000000000000000000000000000000000000000000000000000000071b", - "0x000000000000000000000000000000000000000000000000000000000000071c", - "0x000000000000000000000000000000000000000000000000000000000000071d", - "0x000000000000000000000000000000000000000000000000000000000000071e", - "0x000000000000000000000000000000000000000000000000000000000000071f", - "0x0000000000000000000000000000000000000000000000000000000000000720", - "0x0000000000000000000000000000000000000000000000000000000000000721", - "0x0000000000000000000000000000000000000000000000000000000000000722", - "0x0000000000000000000000000000000000000000000000000000000000000723", - "0x0000000000000000000000000000000000000000000000000000000000000724", - "0x0000000000000000000000000000000000000000000000000000000000000725", - "0x0000000000000000000000000000000000000000000000000000000000000726", - "0x0000000000000000000000000000000000000000000000000000000000000727", - "0x0000000000000000000000000000000000000000000000000000000000000728", - "0x0000000000000000000000000000000000000000000000000000000000000729", - "0x000000000000000000000000000000000000000000000000000000000000072a", - "0x000000000000000000000000000000000000000000000000000000000000072b", - "0x000000000000000000000000000000000000000000000000000000000000072c", - "0x000000000000000000000000000000000000000000000000000000000000072d", - "0x000000000000000000000000000000000000000000000000000000000000072e", - "0x000000000000000000000000000000000000000000000000000000000000072f", - "0x0000000000000000000000000000000000000000000000000000000000000730", - "0x0000000000000000000000000000000000000000000000000000000000000731", - "0x0000000000000000000000000000000000000000000000000000000000000732", - "0x0000000000000000000000000000000000000000000000000000000000000733", - "0x0000000000000000000000000000000000000000000000000000000000000734", - "0x0000000000000000000000000000000000000000000000000000000000000735", - "0x0000000000000000000000000000000000000000000000000000000000000736", - "0x0000000000000000000000000000000000000000000000000000000000000737", - "0x0000000000000000000000000000000000000000000000000000000000000738", - "0x0000000000000000000000000000000000000000000000000000000000000739", - "0x000000000000000000000000000000000000000000000000000000000000073a", - "0x000000000000000000000000000000000000000000000000000000000000073b", - "0x000000000000000000000000000000000000000000000000000000000000073c", - "0x000000000000000000000000000000000000000000000000000000000000073d", - "0x000000000000000000000000000000000000000000000000000000000000073e", - "0x000000000000000000000000000000000000000000000000000000000000073f", - "0x0000000000000000000000000000000000000000000000000000000000000740", - "0x0000000000000000000000000000000000000000000000000000000000000741", - "0x0000000000000000000000000000000000000000000000000000000000000742", - "0x0000000000000000000000000000000000000000000000000000000000000743", - "0x0000000000000000000000000000000000000000000000000000000000000744", - "0x0000000000000000000000000000000000000000000000000000000000000745", - "0x0000000000000000000000000000000000000000000000000000000000000746", - "0x0000000000000000000000000000000000000000000000000000000000000747", - "0x0000000000000000000000000000000000000000000000000000000000000748", - "0x0000000000000000000000000000000000000000000000000000000000000749", - "0x000000000000000000000000000000000000000000000000000000000000074a", - "0x000000000000000000000000000000000000000000000000000000000000074b", - "0x000000000000000000000000000000000000000000000000000000000000074c", - "0x000000000000000000000000000000000000000000000000000000000000074d", - "0x000000000000000000000000000000000000000000000000000000000000074e", - "0x000000000000000000000000000000000000000000000000000000000000074f", - "0x0000000000000000000000000000000000000000000000000000000000000750", - "0x0000000000000000000000000000000000000000000000000000000000000751", - "0x0000000000000000000000000000000000000000000000000000000000000752", - "0x0000000000000000000000000000000000000000000000000000000000000753", - "0x0000000000000000000000000000000000000000000000000000000000000754", - "0x0000000000000000000000000000000000000000000000000000000000000755", - "0x0000000000000000000000000000000000000000000000000000000000000756", - "0x0000000000000000000000000000000000000000000000000000000000000757", - "0x0000000000000000000000000000000000000000000000000000000000000758", - "0x0000000000000000000000000000000000000000000000000000000000000759", - "0x000000000000000000000000000000000000000000000000000000000000075a", - "0x000000000000000000000000000000000000000000000000000000000000075b", - "0x000000000000000000000000000000000000000000000000000000000000075c", - "0x000000000000000000000000000000000000000000000000000000000000075d", - "0x000000000000000000000000000000000000000000000000000000000000075e", - "0x000000000000000000000000000000000000000000000000000000000000075f", - "0x0000000000000000000000000000000000000000000000000000000000000760", - "0x0000000000000000000000000000000000000000000000000000000000000761", - "0x0000000000000000000000000000000000000000000000000000000000000762", - "0x0000000000000000000000000000000000000000000000000000000000000763", - "0x0000000000000000000000000000000000000000000000000000000000000764", - "0x0000000000000000000000000000000000000000000000000000000000000765", - "0x0000000000000000000000000000000000000000000000000000000000000766", - "0x0000000000000000000000000000000000000000000000000000000000000767", - "0x0000000000000000000000000000000000000000000000000000000000000768", - "0x0000000000000000000000000000000000000000000000000000000000000769", - "0x000000000000000000000000000000000000000000000000000000000000076a", - "0x000000000000000000000000000000000000000000000000000000000000076b", - "0x000000000000000000000000000000000000000000000000000000000000076c", - "0x000000000000000000000000000000000000000000000000000000000000076d", - "0x000000000000000000000000000000000000000000000000000000000000076e", - "0x000000000000000000000000000000000000000000000000000000000000076f", - "0x0000000000000000000000000000000000000000000000000000000000000770", - "0x0000000000000000000000000000000000000000000000000000000000000771", - "0x0000000000000000000000000000000000000000000000000000000000000772", - "0x0000000000000000000000000000000000000000000000000000000000000773", - "0x0000000000000000000000000000000000000000000000000000000000000774", - "0x0000000000000000000000000000000000000000000000000000000000000775", - "0x0000000000000000000000000000000000000000000000000000000000000776", - "0x0000000000000000000000000000000000000000000000000000000000000777", - "0x0000000000000000000000000000000000000000000000000000000000000778", - "0x0000000000000000000000000000000000000000000000000000000000000779", - "0x000000000000000000000000000000000000000000000000000000000000077a", - "0x000000000000000000000000000000000000000000000000000000000000077b", - "0x000000000000000000000000000000000000000000000000000000000000077c", - "0x000000000000000000000000000000000000000000000000000000000000077d", - "0x000000000000000000000000000000000000000000000000000000000000077e", - "0x000000000000000000000000000000000000000000000000000000000000077f", - "0x0000000000000000000000000000000000000000000000000000000000000780", - "0x0000000000000000000000000000000000000000000000000000000000000781", - "0x0000000000000000000000000000000000000000000000000000000000000782", - "0x0000000000000000000000000000000000000000000000000000000000000783", - "0x0000000000000000000000000000000000000000000000000000000000000784", - "0x0000000000000000000000000000000000000000000000000000000000000785", - "0x0000000000000000000000000000000000000000000000000000000000000786", - "0x0000000000000000000000000000000000000000000000000000000000000787", - "0x0000000000000000000000000000000000000000000000000000000000000788", - "0x0000000000000000000000000000000000000000000000000000000000000789", - "0x000000000000000000000000000000000000000000000000000000000000078a", - "0x000000000000000000000000000000000000000000000000000000000000078b", - "0x000000000000000000000000000000000000000000000000000000000000078c", - "0x000000000000000000000000000000000000000000000000000000000000078d", - "0x000000000000000000000000000000000000000000000000000000000000078e", - "0x000000000000000000000000000000000000000000000000000000000000078f", - "0x0000000000000000000000000000000000000000000000000000000000000790", - "0x0000000000000000000000000000000000000000000000000000000000000791", - "0x0000000000000000000000000000000000000000000000000000000000000792", - "0x0000000000000000000000000000000000000000000000000000000000000793", - "0x0000000000000000000000000000000000000000000000000000000000000794", - "0x0000000000000000000000000000000000000000000000000000000000000795", - "0x0000000000000000000000000000000000000000000000000000000000000796", - "0x0000000000000000000000000000000000000000000000000000000000000797", - "0x0000000000000000000000000000000000000000000000000000000000000798", - "0x0000000000000000000000000000000000000000000000000000000000000799", - "0x000000000000000000000000000000000000000000000000000000000000079a", - "0x000000000000000000000000000000000000000000000000000000000000079b", - "0x000000000000000000000000000000000000000000000000000000000000079c", - "0x000000000000000000000000000000000000000000000000000000000000079d", - "0x000000000000000000000000000000000000000000000000000000000000079e", - "0x000000000000000000000000000000000000000000000000000000000000079f", - "0x00000000000000000000000000000000000000000000000000000000000007a0", - "0x00000000000000000000000000000000000000000000000000000000000007a1", - "0x00000000000000000000000000000000000000000000000000000000000007a2", - "0x00000000000000000000000000000000000000000000000000000000000007a3", - "0x00000000000000000000000000000000000000000000000000000000000007a4", - "0x00000000000000000000000000000000000000000000000000000000000007a5", - "0x00000000000000000000000000000000000000000000000000000000000007a6", - "0x00000000000000000000000000000000000000000000000000000000000007a7", - "0x00000000000000000000000000000000000000000000000000000000000007a8", - "0x00000000000000000000000000000000000000000000000000000000000007a9", - "0x00000000000000000000000000000000000000000000000000000000000007aa", - "0x00000000000000000000000000000000000000000000000000000000000007ab", - "0x00000000000000000000000000000000000000000000000000000000000007ac", - "0x00000000000000000000000000000000000000000000000000000000000007ad", - "0x00000000000000000000000000000000000000000000000000000000000007ae", - "0x00000000000000000000000000000000000000000000000000000000000007af", - "0x00000000000000000000000000000000000000000000000000000000000007b0", - "0x00000000000000000000000000000000000000000000000000000000000007b1", - "0x00000000000000000000000000000000000000000000000000000000000007b2", - "0x00000000000000000000000000000000000000000000000000000000000007b3", - "0x00000000000000000000000000000000000000000000000000000000000007b4", - "0x00000000000000000000000000000000000000000000000000000000000007b5", - "0x00000000000000000000000000000000000000000000000000000000000007b6", - "0x00000000000000000000000000000000000000000000000000000000000007b7", - "0x00000000000000000000000000000000000000000000000000000000000007b8", - "0x00000000000000000000000000000000000000000000000000000000000007b9", - "0x00000000000000000000000000000000000000000000000000000000000007ba", - "0x00000000000000000000000000000000000000000000000000000000000007bb", - "0x00000000000000000000000000000000000000000000000000000000000007bc", - "0x00000000000000000000000000000000000000000000000000000000000007bd", - "0x00000000000000000000000000000000000000000000000000000000000007be", - "0x00000000000000000000000000000000000000000000000000000000000007bf", - "0x00000000000000000000000000000000000000000000000000000000000007c0", - "0x00000000000000000000000000000000000000000000000000000000000007c1", - "0x00000000000000000000000000000000000000000000000000000000000007c2", - "0x00000000000000000000000000000000000000000000000000000000000007c3", - "0x00000000000000000000000000000000000000000000000000000000000007c4", - "0x00000000000000000000000000000000000000000000000000000000000007c5", - "0x00000000000000000000000000000000000000000000000000000000000007c6", - "0x00000000000000000000000000000000000000000000000000000000000007c7", - "0x00000000000000000000000000000000000000000000000000000000000007c8", - "0x00000000000000000000000000000000000000000000000000000000000007c9", - "0x00000000000000000000000000000000000000000000000000000000000007ca", - "0x00000000000000000000000000000000000000000000000000000000000007cb", - "0x00000000000000000000000000000000000000000000000000000000000007cc", - "0x00000000000000000000000000000000000000000000000000000000000007cd", - "0x00000000000000000000000000000000000000000000000000000000000007ce", - "0x00000000000000000000000000000000000000000000000000000000000007cf", - "0x00000000000000000000000000000000000000000000000000000000000007d0", - "0x00000000000000000000000000000000000000000000000000000000000007d1", - "0x00000000000000000000000000000000000000000000000000000000000007d2", - "0x00000000000000000000000000000000000000000000000000000000000007d3", - "0x00000000000000000000000000000000000000000000000000000000000007d4", - "0x00000000000000000000000000000000000000000000000000000000000007d5", - "0x00000000000000000000000000000000000000000000000000000000000007d6", - "0x00000000000000000000000000000000000000000000000000000000000007d7", - "0x00000000000000000000000000000000000000000000000000000000000007d8", - "0x00000000000000000000000000000000000000000000000000000000000007d9", - "0x00000000000000000000000000000000000000000000000000000000000007da", - "0x00000000000000000000000000000000000000000000000000000000000007db", - "0x00000000000000000000000000000000000000000000000000000000000007dc", - "0x00000000000000000000000000000000000000000000000000000000000007dd", - "0x00000000000000000000000000000000000000000000000000000000000007de", - "0x00000000000000000000000000000000000000000000000000000000000007df", - "0x00000000000000000000000000000000000000000000000000000000000007e0", - "0x00000000000000000000000000000000000000000000000000000000000007e1", - "0x00000000000000000000000000000000000000000000000000000000000007e2", - "0x00000000000000000000000000000000000000000000000000000000000007e3", - "0x00000000000000000000000000000000000000000000000000000000000007e4", - "0x00000000000000000000000000000000000000000000000000000000000007e5", - "0x00000000000000000000000000000000000000000000000000000000000007e6", - "0x00000000000000000000000000000000000000000000000000000000000007e7", - "0x00000000000000000000000000000000000000000000000000000000000007e8", - "0x00000000000000000000000000000000000000000000000000000000000007e9", - "0x00000000000000000000000000000000000000000000000000000000000007ea", - "0x00000000000000000000000000000000000000000000000000000000000007eb", - "0x00000000000000000000000000000000000000000000000000000000000007ec", - "0x00000000000000000000000000000000000000000000000000000000000007ed", - "0x00000000000000000000000000000000000000000000000000000000000007ee", - "0x00000000000000000000000000000000000000000000000000000000000007ef", - "0x00000000000000000000000000000000000000000000000000000000000007f0", - "0x00000000000000000000000000000000000000000000000000000000000007f1", - "0x00000000000000000000000000000000000000000000000000000000000007f2", - "0x00000000000000000000000000000000000000000000000000000000000007f3", - "0x00000000000000000000000000000000000000000000000000000000000007f4", - "0x00000000000000000000000000000000000000000000000000000000000007f5", - "0x00000000000000000000000000000000000000000000000000000000000007f6", - "0x00000000000000000000000000000000000000000000000000000000000007f7", - "0x00000000000000000000000000000000000000000000000000000000000007f8", - "0x00000000000000000000000000000000000000000000000000000000000007f9", - "0x00000000000000000000000000000000000000000000000000000000000007fa", - "0x00000000000000000000000000000000000000000000000000000000000007fb", - "0x00000000000000000000000000000000000000000000000000000000000007fc", - "0x00000000000000000000000000000000000000000000000000000000000007fd", - "0x00000000000000000000000000000000000000000000000000000000000007fe", - "0x00000000000000000000000000000000000000000000000000000000000007ff", - "0x0000000000000000000000000000000000000000000000000000000000000800", - "0x0000000000000000000000000000000000000000000000000000000000000801", - "0x0000000000000000000000000000000000000000000000000000000000000802", - "0x0000000000000000000000000000000000000000000000000000000000000803", - "0x0000000000000000000000000000000000000000000000000000000000000804", - "0x0000000000000000000000000000000000000000000000000000000000000805", - "0x0000000000000000000000000000000000000000000000000000000000000806", - "0x0000000000000000000000000000000000000000000000000000000000000807", - "0x0000000000000000000000000000000000000000000000000000000000000808", - "0x0000000000000000000000000000000000000000000000000000000000000809", - "0x000000000000000000000000000000000000000000000000000000000000080a", - "0x000000000000000000000000000000000000000000000000000000000000080b", - "0x000000000000000000000000000000000000000000000000000000000000080c", - "0x000000000000000000000000000000000000000000000000000000000000080d", - "0x000000000000000000000000000000000000000000000000000000000000080e", - "0x000000000000000000000000000000000000000000000000000000000000080f", - "0x0000000000000000000000000000000000000000000000000000000000000810", - "0x0000000000000000000000000000000000000000000000000000000000000811", - "0x0000000000000000000000000000000000000000000000000000000000000812", - "0x0000000000000000000000000000000000000000000000000000000000000813", - "0x0000000000000000000000000000000000000000000000000000000000000814", - "0x0000000000000000000000000000000000000000000000000000000000000815", - "0x0000000000000000000000000000000000000000000000000000000000000816", - "0x0000000000000000000000000000000000000000000000000000000000000817", - "0x0000000000000000000000000000000000000000000000000000000000000818", - "0x0000000000000000000000000000000000000000000000000000000000000819", - "0x000000000000000000000000000000000000000000000000000000000000081a", - "0x000000000000000000000000000000000000000000000000000000000000081b", - "0x000000000000000000000000000000000000000000000000000000000000081c", - "0x000000000000000000000000000000000000000000000000000000000000081d", - "0x000000000000000000000000000000000000000000000000000000000000081e", - "0x000000000000000000000000000000000000000000000000000000000000081f", - "0x0000000000000000000000000000000000000000000000000000000000000820", - "0x0000000000000000000000000000000000000000000000000000000000000821", - "0x0000000000000000000000000000000000000000000000000000000000000822", - "0x0000000000000000000000000000000000000000000000000000000000000823", - "0x0000000000000000000000000000000000000000000000000000000000000824", - "0x0000000000000000000000000000000000000000000000000000000000000825", - "0x0000000000000000000000000000000000000000000000000000000000000826", - "0x0000000000000000000000000000000000000000000000000000000000000827", - "0x0000000000000000000000000000000000000000000000000000000000000828", - "0x0000000000000000000000000000000000000000000000000000000000000829", - "0x000000000000000000000000000000000000000000000000000000000000082a", - "0x000000000000000000000000000000000000000000000000000000000000082b", - "0x000000000000000000000000000000000000000000000000000000000000082c", - "0x000000000000000000000000000000000000000000000000000000000000082d", - "0x000000000000000000000000000000000000000000000000000000000000082e", - "0x000000000000000000000000000000000000000000000000000000000000082f", - "0x0000000000000000000000000000000000000000000000000000000000000830", - "0x0000000000000000000000000000000000000000000000000000000000000831", - "0x0000000000000000000000000000000000000000000000000000000000000832", - "0x0000000000000000000000000000000000000000000000000000000000000833", - "0x0000000000000000000000000000000000000000000000000000000000000834", - "0x0000000000000000000000000000000000000000000000000000000000000835", - "0x0000000000000000000000000000000000000000000000000000000000000836", - "0x0000000000000000000000000000000000000000000000000000000000000837", - "0x0000000000000000000000000000000000000000000000000000000000000838", - "0x0000000000000000000000000000000000000000000000000000000000000839", - "0x000000000000000000000000000000000000000000000000000000000000083a", - "0x000000000000000000000000000000000000000000000000000000000000083b", - "0x000000000000000000000000000000000000000000000000000000000000083c", - "0x000000000000000000000000000000000000000000000000000000000000083d", - "0x000000000000000000000000000000000000000000000000000000000000083e", - "0x000000000000000000000000000000000000000000000000000000000000083f", - "0x0000000000000000000000000000000000000000000000000000000000000840", - "0x0000000000000000000000000000000000000000000000000000000000000841", - "0x0000000000000000000000000000000000000000000000000000000000000842", - "0x0000000000000000000000000000000000000000000000000000000000000843", - "0x0000000000000000000000000000000000000000000000000000000000000844", - "0x0000000000000000000000000000000000000000000000000000000000000845", - "0x0000000000000000000000000000000000000000000000000000000000000846", - "0x0000000000000000000000000000000000000000000000000000000000000847", - "0x0000000000000000000000000000000000000000000000000000000000000848", - "0x0000000000000000000000000000000000000000000000000000000000000849", - "0x000000000000000000000000000000000000000000000000000000000000084a", - "0x000000000000000000000000000000000000000000000000000000000000084b", - "0x000000000000000000000000000000000000000000000000000000000000084c", - "0x000000000000000000000000000000000000000000000000000000000000084d", - "0x000000000000000000000000000000000000000000000000000000000000084e", - "0x000000000000000000000000000000000000000000000000000000000000084f", - "0x0000000000000000000000000000000000000000000000000000000000000850", - "0x0000000000000000000000000000000000000000000000000000000000000851", - "0x0000000000000000000000000000000000000000000000000000000000000852", - "0x0000000000000000000000000000000000000000000000000000000000000853", - "0x0000000000000000000000000000000000000000000000000000000000000854", - "0x0000000000000000000000000000000000000000000000000000000000000855", - "0x0000000000000000000000000000000000000000000000000000000000000856", - "0x0000000000000000000000000000000000000000000000000000000000000857", - "0x0000000000000000000000000000000000000000000000000000000000000858", - "0x0000000000000000000000000000000000000000000000000000000000000859", - "0x000000000000000000000000000000000000000000000000000000000000085a", - "0x000000000000000000000000000000000000000000000000000000000000085b", - "0x000000000000000000000000000000000000000000000000000000000000085c", - "0x000000000000000000000000000000000000000000000000000000000000085d", - "0x000000000000000000000000000000000000000000000000000000000000085e", - "0x000000000000000000000000000000000000000000000000000000000000085f", - "0x0000000000000000000000000000000000000000000000000000000000000860", - "0x0000000000000000000000000000000000000000000000000000000000000861", - "0x0000000000000000000000000000000000000000000000000000000000000862", - "0x0000000000000000000000000000000000000000000000000000000000000863", - "0x0000000000000000000000000000000000000000000000000000000000000864", - "0x0000000000000000000000000000000000000000000000000000000000000865", - "0x0000000000000000000000000000000000000000000000000000000000000866", - "0x0000000000000000000000000000000000000000000000000000000000000867", - "0x0000000000000000000000000000000000000000000000000000000000000868", - "0x0000000000000000000000000000000000000000000000000000000000000869", - "0x000000000000000000000000000000000000000000000000000000000000086a", - "0x000000000000000000000000000000000000000000000000000000000000086b", - "0x000000000000000000000000000000000000000000000000000000000000086c", - "0x000000000000000000000000000000000000000000000000000000000000086d", - "0x000000000000000000000000000000000000000000000000000000000000086e", - "0x000000000000000000000000000000000000000000000000000000000000086f", - "0x0000000000000000000000000000000000000000000000000000000000000870", - "0x0000000000000000000000000000000000000000000000000000000000000871", - "0x0000000000000000000000000000000000000000000000000000000000000872", - "0x0000000000000000000000000000000000000000000000000000000000000873", - "0x0000000000000000000000000000000000000000000000000000000000000874", - "0x0000000000000000000000000000000000000000000000000000000000000875", - "0x0000000000000000000000000000000000000000000000000000000000000876", - "0x0000000000000000000000000000000000000000000000000000000000000877", - "0x0000000000000000000000000000000000000000000000000000000000000878", - "0x0000000000000000000000000000000000000000000000000000000000000879", - "0x000000000000000000000000000000000000000000000000000000000000087a", - "0x000000000000000000000000000000000000000000000000000000000000087b", - "0x000000000000000000000000000000000000000000000000000000000000087c", - "0x000000000000000000000000000000000000000000000000000000000000087d", - "0x000000000000000000000000000000000000000000000000000000000000087e", - "0x000000000000000000000000000000000000000000000000000000000000087f", - "0x0000000000000000000000000000000000000000000000000000000000000880", - "0x0000000000000000000000000000000000000000000000000000000000000881", - "0x0000000000000000000000000000000000000000000000000000000000000882", - "0x0000000000000000000000000000000000000000000000000000000000000883", - "0x0000000000000000000000000000000000000000000000000000000000000884", - "0x0000000000000000000000000000000000000000000000000000000000000885", - "0x0000000000000000000000000000000000000000000000000000000000000886", - "0x0000000000000000000000000000000000000000000000000000000000000887", - "0x0000000000000000000000000000000000000000000000000000000000000888", - "0x0000000000000000000000000000000000000000000000000000000000000889", - "0x000000000000000000000000000000000000000000000000000000000000088a", - "0x000000000000000000000000000000000000000000000000000000000000088b", - "0x000000000000000000000000000000000000000000000000000000000000088c", - "0x000000000000000000000000000000000000000000000000000000000000088d", - "0x000000000000000000000000000000000000000000000000000000000000088e", - "0x000000000000000000000000000000000000000000000000000000000000088f", - "0x0000000000000000000000000000000000000000000000000000000000000890", - "0x0000000000000000000000000000000000000000000000000000000000000891", - "0x0000000000000000000000000000000000000000000000000000000000000892", - "0x0000000000000000000000000000000000000000000000000000000000000893", - "0x0000000000000000000000000000000000000000000000000000000000000894", - "0x0000000000000000000000000000000000000000000000000000000000000895", - "0x0000000000000000000000000000000000000000000000000000000000000896", - "0x0000000000000000000000000000000000000000000000000000000000000897", - "0x0000000000000000000000000000000000000000000000000000000000000898", - "0x0000000000000000000000000000000000000000000000000000000000000899", - "0x000000000000000000000000000000000000000000000000000000000000089a", - "0x000000000000000000000000000000000000000000000000000000000000089b", - "0x000000000000000000000000000000000000000000000000000000000000089c", - "0x000000000000000000000000000000000000000000000000000000000000089d", - "0x000000000000000000000000000000000000000000000000000000000000089e", - "0x000000000000000000000000000000000000000000000000000000000000089f", - "0x00000000000000000000000000000000000000000000000000000000000008a0", - "0x00000000000000000000000000000000000000000000000000000000000008a1", - "0x00000000000000000000000000000000000000000000000000000000000008a2", - "0x00000000000000000000000000000000000000000000000000000000000008a3", - "0x00000000000000000000000000000000000000000000000000000000000008a4", - "0x00000000000000000000000000000000000000000000000000000000000008a5", - "0x00000000000000000000000000000000000000000000000000000000000008a6", - "0x00000000000000000000000000000000000000000000000000000000000008a7", - "0x00000000000000000000000000000000000000000000000000000000000008a8", - "0x00000000000000000000000000000000000000000000000000000000000008a9", - "0x00000000000000000000000000000000000000000000000000000000000008aa", - "0x00000000000000000000000000000000000000000000000000000000000008ab", - "0x00000000000000000000000000000000000000000000000000000000000008ac", - "0x00000000000000000000000000000000000000000000000000000000000008ad", - "0x00000000000000000000000000000000000000000000000000000000000008ae", - "0x00000000000000000000000000000000000000000000000000000000000008af", - "0x00000000000000000000000000000000000000000000000000000000000008b0", - "0x00000000000000000000000000000000000000000000000000000000000008b1", - "0x00000000000000000000000000000000000000000000000000000000000008b2", - "0x00000000000000000000000000000000000000000000000000000000000008b3", - "0x00000000000000000000000000000000000000000000000000000000000008b4", - "0x00000000000000000000000000000000000000000000000000000000000008b5", - "0x00000000000000000000000000000000000000000000000000000000000008b6", - "0x00000000000000000000000000000000000000000000000000000000000008b7", - "0x00000000000000000000000000000000000000000000000000000000000008b8", - "0x00000000000000000000000000000000000000000000000000000000000008b9", - "0x00000000000000000000000000000000000000000000000000000000000008ba", - "0x00000000000000000000000000000000000000000000000000000000000008bb", - "0x00000000000000000000000000000000000000000000000000000000000008bc", - "0x00000000000000000000000000000000000000000000000000000000000008bd", - "0x00000000000000000000000000000000000000000000000000000000000008be", - "0x00000000000000000000000000000000000000000000000000000000000008bf", - "0x00000000000000000000000000000000000000000000000000000000000008c0", - "0x00000000000000000000000000000000000000000000000000000000000008c1", - "0x00000000000000000000000000000000000000000000000000000000000008c2", - "0x00000000000000000000000000000000000000000000000000000000000008c3", - "0x00000000000000000000000000000000000000000000000000000000000008c4", - "0x00000000000000000000000000000000000000000000000000000000000008c5", - "0x00000000000000000000000000000000000000000000000000000000000008c6", - "0x00000000000000000000000000000000000000000000000000000000000008c7", - "0x00000000000000000000000000000000000000000000000000000000000008c8", - "0x00000000000000000000000000000000000000000000000000000000000008c9", - "0x00000000000000000000000000000000000000000000000000000000000008ca", - "0x00000000000000000000000000000000000000000000000000000000000008cb", - "0x00000000000000000000000000000000000000000000000000000000000008cc", - "0x00000000000000000000000000000000000000000000000000000000000008cd", - "0x00000000000000000000000000000000000000000000000000000000000008ce", - "0x00000000000000000000000000000000000000000000000000000000000008cf", - "0x00000000000000000000000000000000000000000000000000000000000008d0", - "0x00000000000000000000000000000000000000000000000000000000000008d1", - "0x00000000000000000000000000000000000000000000000000000000000008d2", - "0x00000000000000000000000000000000000000000000000000000000000008d3", - "0x00000000000000000000000000000000000000000000000000000000000008d4", - "0x00000000000000000000000000000000000000000000000000000000000008d5", - "0x00000000000000000000000000000000000000000000000000000000000008d6", - "0x00000000000000000000000000000000000000000000000000000000000008d7", - "0x00000000000000000000000000000000000000000000000000000000000008d8", - "0x00000000000000000000000000000000000000000000000000000000000008d9", - "0x00000000000000000000000000000000000000000000000000000000000008da", - "0x00000000000000000000000000000000000000000000000000000000000008db", - "0x00000000000000000000000000000000000000000000000000000000000008dc", - "0x00000000000000000000000000000000000000000000000000000000000008dd", - "0x00000000000000000000000000000000000000000000000000000000000008de", - "0x00000000000000000000000000000000000000000000000000000000000008df", - "0x00000000000000000000000000000000000000000000000000000000000008e0", - "0x00000000000000000000000000000000000000000000000000000000000008e1", - "0x00000000000000000000000000000000000000000000000000000000000008e2", - "0x00000000000000000000000000000000000000000000000000000000000008e3", - "0x00000000000000000000000000000000000000000000000000000000000008e4", - "0x00000000000000000000000000000000000000000000000000000000000008e5", - "0x00000000000000000000000000000000000000000000000000000000000008e6", - "0x00000000000000000000000000000000000000000000000000000000000008e7", - "0x00000000000000000000000000000000000000000000000000000000000008e8", - "0x00000000000000000000000000000000000000000000000000000000000008e9", - "0x00000000000000000000000000000000000000000000000000000000000008ea", - "0x00000000000000000000000000000000000000000000000000000000000008eb", - "0x00000000000000000000000000000000000000000000000000000000000008ec", - "0x00000000000000000000000000000000000000000000000000000000000008ed", - "0x00000000000000000000000000000000000000000000000000000000000008ee", - "0x00000000000000000000000000000000000000000000000000000000000008ef", - "0x00000000000000000000000000000000000000000000000000000000000008f0", - "0x00000000000000000000000000000000000000000000000000000000000008f1", - "0x00000000000000000000000000000000000000000000000000000000000008f2", - "0x00000000000000000000000000000000000000000000000000000000000008f3", - "0x00000000000000000000000000000000000000000000000000000000000008f4", - "0x00000000000000000000000000000000000000000000000000000000000008f5", - "0x00000000000000000000000000000000000000000000000000000000000008f6", - "0x00000000000000000000000000000000000000000000000000000000000008f7", - "0x00000000000000000000000000000000000000000000000000000000000008f8", - "0x00000000000000000000000000000000000000000000000000000000000008f9", - "0x00000000000000000000000000000000000000000000000000000000000008fa", - "0x00000000000000000000000000000000000000000000000000000000000008fb", - "0x00000000000000000000000000000000000000000000000000000000000008fc", - "0x00000000000000000000000000000000000000000000000000000000000008fd", - "0x00000000000000000000000000000000000000000000000000000000000008fe", - "0x00000000000000000000000000000000000000000000000000000000000008ff", - "0x0000000000000000000000000000000000000000000000000000000000000900", - "0x0000000000000000000000000000000000000000000000000000000000000901", - "0x0000000000000000000000000000000000000000000000000000000000000902", - "0x0000000000000000000000000000000000000000000000000000000000000903", - "0x0000000000000000000000000000000000000000000000000000000000000904", - "0x0000000000000000000000000000000000000000000000000000000000000905", - "0x0000000000000000000000000000000000000000000000000000000000000906", - "0x0000000000000000000000000000000000000000000000000000000000000907", - "0x0000000000000000000000000000000000000000000000000000000000000908", - "0x0000000000000000000000000000000000000000000000000000000000000909", - "0x000000000000000000000000000000000000000000000000000000000000090a", - "0x000000000000000000000000000000000000000000000000000000000000090b", - "0x000000000000000000000000000000000000000000000000000000000000090c", - "0x000000000000000000000000000000000000000000000000000000000000090d", - "0x000000000000000000000000000000000000000000000000000000000000090e", - "0x000000000000000000000000000000000000000000000000000000000000090f", - "0x0000000000000000000000000000000000000000000000000000000000000910", - "0x0000000000000000000000000000000000000000000000000000000000000911", - "0x0000000000000000000000000000000000000000000000000000000000000912", - "0x0000000000000000000000000000000000000000000000000000000000000913", - "0x0000000000000000000000000000000000000000000000000000000000000914", - "0x0000000000000000000000000000000000000000000000000000000000000915", - "0x0000000000000000000000000000000000000000000000000000000000000916", - "0x0000000000000000000000000000000000000000000000000000000000000917", - "0x0000000000000000000000000000000000000000000000000000000000000918", - "0x0000000000000000000000000000000000000000000000000000000000000919", - "0x000000000000000000000000000000000000000000000000000000000000091a", - "0x000000000000000000000000000000000000000000000000000000000000091b", - "0x000000000000000000000000000000000000000000000000000000000000091c", - "0x000000000000000000000000000000000000000000000000000000000000091d", - "0x000000000000000000000000000000000000000000000000000000000000091e", - "0x000000000000000000000000000000000000000000000000000000000000091f", - "0x0000000000000000000000000000000000000000000000000000000000000920", - "0x0000000000000000000000000000000000000000000000000000000000000921", - "0x0000000000000000000000000000000000000000000000000000000000000922", - "0x0000000000000000000000000000000000000000000000000000000000000923", - "0x0000000000000000000000000000000000000000000000000000000000000924", - "0x0000000000000000000000000000000000000000000000000000000000000925", - "0x0000000000000000000000000000000000000000000000000000000000000926", - "0x0000000000000000000000000000000000000000000000000000000000000927", - "0x0000000000000000000000000000000000000000000000000000000000000928", - "0x0000000000000000000000000000000000000000000000000000000000000929", - "0x000000000000000000000000000000000000000000000000000000000000092a", - "0x000000000000000000000000000000000000000000000000000000000000092b", - "0x000000000000000000000000000000000000000000000000000000000000092c", - "0x000000000000000000000000000000000000000000000000000000000000092d", - "0x000000000000000000000000000000000000000000000000000000000000092e", - "0x000000000000000000000000000000000000000000000000000000000000092f", - "0x0000000000000000000000000000000000000000000000000000000000000930", - "0x0000000000000000000000000000000000000000000000000000000000000931", - "0x0000000000000000000000000000000000000000000000000000000000000932", - "0x0000000000000000000000000000000000000000000000000000000000000933", - "0x0000000000000000000000000000000000000000000000000000000000000934", - "0x0000000000000000000000000000000000000000000000000000000000000935", - "0x0000000000000000000000000000000000000000000000000000000000000936", - "0x0000000000000000000000000000000000000000000000000000000000000937", - "0x0000000000000000000000000000000000000000000000000000000000000938", - "0x0000000000000000000000000000000000000000000000000000000000000939", - "0x000000000000000000000000000000000000000000000000000000000000093a", - "0x000000000000000000000000000000000000000000000000000000000000093b", - "0x000000000000000000000000000000000000000000000000000000000000093c", - "0x000000000000000000000000000000000000000000000000000000000000093d", - "0x000000000000000000000000000000000000000000000000000000000000093e", - "0x000000000000000000000000000000000000000000000000000000000000093f", - "0x0000000000000000000000000000000000000000000000000000000000000940", - "0x0000000000000000000000000000000000000000000000000000000000000941", - "0x0000000000000000000000000000000000000000000000000000000000000942", - "0x0000000000000000000000000000000000000000000000000000000000000943", - "0x0000000000000000000000000000000000000000000000000000000000000944", - "0x0000000000000000000000000000000000000000000000000000000000000945", - "0x0000000000000000000000000000000000000000000000000000000000000946", - "0x0000000000000000000000000000000000000000000000000000000000000947", - "0x0000000000000000000000000000000000000000000000000000000000000948", - "0x0000000000000000000000000000000000000000000000000000000000000949", - "0x000000000000000000000000000000000000000000000000000000000000094a", - "0x000000000000000000000000000000000000000000000000000000000000094b", - "0x000000000000000000000000000000000000000000000000000000000000094c", - "0x000000000000000000000000000000000000000000000000000000000000094d", - "0x000000000000000000000000000000000000000000000000000000000000094e", - "0x000000000000000000000000000000000000000000000000000000000000094f", - "0x0000000000000000000000000000000000000000000000000000000000000950", - "0x0000000000000000000000000000000000000000000000000000000000000951", - "0x0000000000000000000000000000000000000000000000000000000000000952", - "0x0000000000000000000000000000000000000000000000000000000000000953", - "0x0000000000000000000000000000000000000000000000000000000000000954", - "0x0000000000000000000000000000000000000000000000000000000000000955", - "0x0000000000000000000000000000000000000000000000000000000000000956", - "0x0000000000000000000000000000000000000000000000000000000000000957", - "0x0000000000000000000000000000000000000000000000000000000000000958", - "0x0000000000000000000000000000000000000000000000000000000000000959", - "0x000000000000000000000000000000000000000000000000000000000000095a", - "0x000000000000000000000000000000000000000000000000000000000000095b", - "0x000000000000000000000000000000000000000000000000000000000000095c", - "0x000000000000000000000000000000000000000000000000000000000000095d", - "0x000000000000000000000000000000000000000000000000000000000000095e", - "0x000000000000000000000000000000000000000000000000000000000000095f", - "0x0000000000000000000000000000000000000000000000000000000000000960", - "0x0000000000000000000000000000000000000000000000000000000000000961", - "0x0000000000000000000000000000000000000000000000000000000000000962", - "0x0000000000000000000000000000000000000000000000000000000000000963", - "0x0000000000000000000000000000000000000000000000000000000000000964", - "0x0000000000000000000000000000000000000000000000000000000000000965", - "0x0000000000000000000000000000000000000000000000000000000000000966", - "0x0000000000000000000000000000000000000000000000000000000000000967", - "0x0000000000000000000000000000000000000000000000000000000000000968", - "0x0000000000000000000000000000000000000000000000000000000000000969", - "0x000000000000000000000000000000000000000000000000000000000000096a", - "0x000000000000000000000000000000000000000000000000000000000000096b", - "0x000000000000000000000000000000000000000000000000000000000000096c", - "0x000000000000000000000000000000000000000000000000000000000000096d", - "0x000000000000000000000000000000000000000000000000000000000000096e", - "0x000000000000000000000000000000000000000000000000000000000000096f", - "0x0000000000000000000000000000000000000000000000000000000000000970", - "0x0000000000000000000000000000000000000000000000000000000000000971", - "0x0000000000000000000000000000000000000000000000000000000000000972", - "0x0000000000000000000000000000000000000000000000000000000000000973", - "0x0000000000000000000000000000000000000000000000000000000000000974", - "0x0000000000000000000000000000000000000000000000000000000000000975", - "0x0000000000000000000000000000000000000000000000000000000000000976", - "0x0000000000000000000000000000000000000000000000000000000000000977", - "0x0000000000000000000000000000000000000000000000000000000000000978", - "0x0000000000000000000000000000000000000000000000000000000000000979", - "0x000000000000000000000000000000000000000000000000000000000000097a", - "0x000000000000000000000000000000000000000000000000000000000000097b", - "0x000000000000000000000000000000000000000000000000000000000000097c", - "0x000000000000000000000000000000000000000000000000000000000000097d", - "0x000000000000000000000000000000000000000000000000000000000000097e", - "0x000000000000000000000000000000000000000000000000000000000000097f", - "0x0000000000000000000000000000000000000000000000000000000000000980", - "0x0000000000000000000000000000000000000000000000000000000000000981", - "0x0000000000000000000000000000000000000000000000000000000000000982", - "0x0000000000000000000000000000000000000000000000000000000000000983", - "0x0000000000000000000000000000000000000000000000000000000000000984", - "0x0000000000000000000000000000000000000000000000000000000000000985", - "0x0000000000000000000000000000000000000000000000000000000000000986", - "0x0000000000000000000000000000000000000000000000000000000000000987", - "0x0000000000000000000000000000000000000000000000000000000000000988", - "0x0000000000000000000000000000000000000000000000000000000000000989", - "0x000000000000000000000000000000000000000000000000000000000000098a", - "0x000000000000000000000000000000000000000000000000000000000000098b", - "0x000000000000000000000000000000000000000000000000000000000000098c", - "0x000000000000000000000000000000000000000000000000000000000000098d", - "0x000000000000000000000000000000000000000000000000000000000000098e", - "0x000000000000000000000000000000000000000000000000000000000000098f", - "0x0000000000000000000000000000000000000000000000000000000000000990", - "0x0000000000000000000000000000000000000000000000000000000000000991", - "0x0000000000000000000000000000000000000000000000000000000000000992", - "0x0000000000000000000000000000000000000000000000000000000000000993", - "0x0000000000000000000000000000000000000000000000000000000000000994", - "0x0000000000000000000000000000000000000000000000000000000000000995", - "0x0000000000000000000000000000000000000000000000000000000000000996", - "0x0000000000000000000000000000000000000000000000000000000000000997", - "0x0000000000000000000000000000000000000000000000000000000000000998", - "0x0000000000000000000000000000000000000000000000000000000000000999", - "0x000000000000000000000000000000000000000000000000000000000000099a", - "0x000000000000000000000000000000000000000000000000000000000000099b", - "0x000000000000000000000000000000000000000000000000000000000000099c", - "0x000000000000000000000000000000000000000000000000000000000000099d", - "0x000000000000000000000000000000000000000000000000000000000000099e", - "0x000000000000000000000000000000000000000000000000000000000000099f", - "0x00000000000000000000000000000000000000000000000000000000000009a0", - "0x00000000000000000000000000000000000000000000000000000000000009a1", - "0x00000000000000000000000000000000000000000000000000000000000009a2", - "0x00000000000000000000000000000000000000000000000000000000000009a3", - "0x00000000000000000000000000000000000000000000000000000000000009a4", - "0x00000000000000000000000000000000000000000000000000000000000009a5", - "0x00000000000000000000000000000000000000000000000000000000000009a6", - "0x00000000000000000000000000000000000000000000000000000000000009a7", - "0x00000000000000000000000000000000000000000000000000000000000009a8", - "0x00000000000000000000000000000000000000000000000000000000000009a9", - "0x00000000000000000000000000000000000000000000000000000000000009aa", - "0x00000000000000000000000000000000000000000000000000000000000009ab", - "0x00000000000000000000000000000000000000000000000000000000000009ac", - "0x00000000000000000000000000000000000000000000000000000000000009ad", - "0x00000000000000000000000000000000000000000000000000000000000009ae", - "0x00000000000000000000000000000000000000000000000000000000000009af", - "0x00000000000000000000000000000000000000000000000000000000000009b0", - "0x00000000000000000000000000000000000000000000000000000000000009b1", - "0x00000000000000000000000000000000000000000000000000000000000009b2", - "0x00000000000000000000000000000000000000000000000000000000000009b3", - "0x00000000000000000000000000000000000000000000000000000000000009b4", - "0x00000000000000000000000000000000000000000000000000000000000009b5", - "0x00000000000000000000000000000000000000000000000000000000000009b6", - "0x00000000000000000000000000000000000000000000000000000000000009b7", - "0x00000000000000000000000000000000000000000000000000000000000009b8", - "0x00000000000000000000000000000000000000000000000000000000000009b9", - "0x00000000000000000000000000000000000000000000000000000000000009ba", - "0x00000000000000000000000000000000000000000000000000000000000009bb", - "0x00000000000000000000000000000000000000000000000000000000000009bc", - "0x00000000000000000000000000000000000000000000000000000000000009bd", - "0x00000000000000000000000000000000000000000000000000000000000009be", - "0x00000000000000000000000000000000000000000000000000000000000009bf", - "0x00000000000000000000000000000000000000000000000000000000000009c0", - "0x00000000000000000000000000000000000000000000000000000000000009c1", - "0x00000000000000000000000000000000000000000000000000000000000009c2", - "0x00000000000000000000000000000000000000000000000000000000000009c3", - "0x00000000000000000000000000000000000000000000000000000000000009c4", - "0x00000000000000000000000000000000000000000000000000000000000009c5", - "0x00000000000000000000000000000000000000000000000000000000000009c6", - "0x00000000000000000000000000000000000000000000000000000000000009c7", - "0x00000000000000000000000000000000000000000000000000000000000009c8", - "0x00000000000000000000000000000000000000000000000000000000000009c9", - "0x00000000000000000000000000000000000000000000000000000000000009ca", - "0x00000000000000000000000000000000000000000000000000000000000009cb", - "0x00000000000000000000000000000000000000000000000000000000000009cc", - "0x00000000000000000000000000000000000000000000000000000000000009cd", - "0x00000000000000000000000000000000000000000000000000000000000009ce", - "0x00000000000000000000000000000000000000000000000000000000000009cf", - "0x00000000000000000000000000000000000000000000000000000000000009d0", - "0x00000000000000000000000000000000000000000000000000000000000009d1", - "0x00000000000000000000000000000000000000000000000000000000000009d2", - "0x00000000000000000000000000000000000000000000000000000000000009d3", - "0x00000000000000000000000000000000000000000000000000000000000009d4", - "0x00000000000000000000000000000000000000000000000000000000000009d5", - "0x00000000000000000000000000000000000000000000000000000000000009d6", - "0x00000000000000000000000000000000000000000000000000000000000009d7", - "0x00000000000000000000000000000000000000000000000000000000000009d8", - "0x00000000000000000000000000000000000000000000000000000000000009d9", - "0x00000000000000000000000000000000000000000000000000000000000009da", - "0x00000000000000000000000000000000000000000000000000000000000009db" -] -num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" l1_to_l2_message_frontier_hint = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1588,7 +561,7 @@ new_archive_sibling_path = [ accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000006b6c0" [inputs.previous_rollup.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1669,10 +642,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7d1b44c" ] state = [ - "0x0189949c0a7787a27f25666b056cf05fe689873d89fb0341cbd4ec071ddb2fa8", - "0x1a14453a78f02fcbb8d08e506dfcf02ddfa9b68a5df3a6781b9a01f9f9ba23a4", - "0x2aef24b35d536f6b192637a731bb8c17b3c4c0d499ec7157f5d6fbf24814d167", - "0x06f5195267e44fc8a82cf65549ec3faa4567d5412c05fdc400417ee3d922952f" + "0x152c3ca571fdac98b841ce024a71e95386cf9e12fc75f332e758ec2bbb8abedd", + "0x2b95018fadbe3202af295aba0c2c9bee5fbf974c125ad1df07aac938788075f1", + "0x23f43785270be64381f8aed6a97343880dd65c46edee94cc788f7b233a775aac", + "0x27a409da6f771f48f0170b366f7a66e88ef0416365e20c3d573969923a724b98" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1683,10 +656,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x1fc39d0a428c8536dbca551ea79848acf67d89d090fd8c643c7d90f2e8f32340", "0x12ce5a49a1ceca53ada7bee003f929bbd65abaa74e8072a81f304c2c96c44e31", "0x2dd71474f7775d87b6c2986ace5f654686583f0970d7400b1ccf8096dad131b5", - "0x17256307ffa28861c90e498de359cc71e3e87d316e2a719bd42073f7b2e93920", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x0aca02f69b05a42958d30ced7da19a9e135e0c83b75e72ae5f7e2bec714a418f", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollup.vk_data.vk] @@ -1807,7 +780,1037 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x000000000000000000000000000000497578c03ad3935905cf61ca910c7331f5", "0x0000000000000000000000000000000000002398ed1decdb3cfc47f7457c1174" ] - hash = "0x080a62f938a5f53f13c6f7f76c406722d810698e6354fed4f4e52ae528e124f5" + hash = "0x080a62f938a5f53f13c6f7f76c406722d810698e6354fed4f4e52ae528e124f5" + + [inputs.message_bundle] + messages = [ + "0x00000000000000000000000000000000000000000000000000000000000005dc", + "0x00000000000000000000000000000000000000000000000000000000000005dd", + "0x00000000000000000000000000000000000000000000000000000000000005de", + "0x00000000000000000000000000000000000000000000000000000000000005df", + "0x00000000000000000000000000000000000000000000000000000000000005e0", + "0x00000000000000000000000000000000000000000000000000000000000005e1", + "0x00000000000000000000000000000000000000000000000000000000000005e2", + "0x00000000000000000000000000000000000000000000000000000000000005e3", + "0x00000000000000000000000000000000000000000000000000000000000005e4", + "0x00000000000000000000000000000000000000000000000000000000000005e5", + "0x00000000000000000000000000000000000000000000000000000000000005e6", + "0x00000000000000000000000000000000000000000000000000000000000005e7", + "0x00000000000000000000000000000000000000000000000000000000000005e8", + "0x00000000000000000000000000000000000000000000000000000000000005e9", + "0x00000000000000000000000000000000000000000000000000000000000005ea", + "0x00000000000000000000000000000000000000000000000000000000000005eb", + "0x00000000000000000000000000000000000000000000000000000000000005ec", + "0x00000000000000000000000000000000000000000000000000000000000005ed", + "0x00000000000000000000000000000000000000000000000000000000000005ee", + "0x00000000000000000000000000000000000000000000000000000000000005ef", + "0x00000000000000000000000000000000000000000000000000000000000005f0", + "0x00000000000000000000000000000000000000000000000000000000000005f1", + "0x00000000000000000000000000000000000000000000000000000000000005f2", + "0x00000000000000000000000000000000000000000000000000000000000005f3", + "0x00000000000000000000000000000000000000000000000000000000000005f4", + "0x00000000000000000000000000000000000000000000000000000000000005f5", + "0x00000000000000000000000000000000000000000000000000000000000005f6", + "0x00000000000000000000000000000000000000000000000000000000000005f7", + "0x00000000000000000000000000000000000000000000000000000000000005f8", + "0x00000000000000000000000000000000000000000000000000000000000005f9", + "0x00000000000000000000000000000000000000000000000000000000000005fa", + "0x00000000000000000000000000000000000000000000000000000000000005fb", + "0x00000000000000000000000000000000000000000000000000000000000005fc", + "0x00000000000000000000000000000000000000000000000000000000000005fd", + "0x00000000000000000000000000000000000000000000000000000000000005fe", + "0x00000000000000000000000000000000000000000000000000000000000005ff", + "0x0000000000000000000000000000000000000000000000000000000000000600", + "0x0000000000000000000000000000000000000000000000000000000000000601", + "0x0000000000000000000000000000000000000000000000000000000000000602", + "0x0000000000000000000000000000000000000000000000000000000000000603", + "0x0000000000000000000000000000000000000000000000000000000000000604", + "0x0000000000000000000000000000000000000000000000000000000000000605", + "0x0000000000000000000000000000000000000000000000000000000000000606", + "0x0000000000000000000000000000000000000000000000000000000000000607", + "0x0000000000000000000000000000000000000000000000000000000000000608", + "0x0000000000000000000000000000000000000000000000000000000000000609", + "0x000000000000000000000000000000000000000000000000000000000000060a", + "0x000000000000000000000000000000000000000000000000000000000000060b", + "0x000000000000000000000000000000000000000000000000000000000000060c", + "0x000000000000000000000000000000000000000000000000000000000000060d", + "0x000000000000000000000000000000000000000000000000000000000000060e", + "0x000000000000000000000000000000000000000000000000000000000000060f", + "0x0000000000000000000000000000000000000000000000000000000000000610", + "0x0000000000000000000000000000000000000000000000000000000000000611", + "0x0000000000000000000000000000000000000000000000000000000000000612", + "0x0000000000000000000000000000000000000000000000000000000000000613", + "0x0000000000000000000000000000000000000000000000000000000000000614", + "0x0000000000000000000000000000000000000000000000000000000000000615", + "0x0000000000000000000000000000000000000000000000000000000000000616", + "0x0000000000000000000000000000000000000000000000000000000000000617", + "0x0000000000000000000000000000000000000000000000000000000000000618", + "0x0000000000000000000000000000000000000000000000000000000000000619", + "0x000000000000000000000000000000000000000000000000000000000000061a", + "0x000000000000000000000000000000000000000000000000000000000000061b", + "0x000000000000000000000000000000000000000000000000000000000000061c", + "0x000000000000000000000000000000000000000000000000000000000000061d", + "0x000000000000000000000000000000000000000000000000000000000000061e", + "0x000000000000000000000000000000000000000000000000000000000000061f", + "0x0000000000000000000000000000000000000000000000000000000000000620", + "0x0000000000000000000000000000000000000000000000000000000000000621", + "0x0000000000000000000000000000000000000000000000000000000000000622", + "0x0000000000000000000000000000000000000000000000000000000000000623", + "0x0000000000000000000000000000000000000000000000000000000000000624", + "0x0000000000000000000000000000000000000000000000000000000000000625", + "0x0000000000000000000000000000000000000000000000000000000000000626", + "0x0000000000000000000000000000000000000000000000000000000000000627", + "0x0000000000000000000000000000000000000000000000000000000000000628", + "0x0000000000000000000000000000000000000000000000000000000000000629", + "0x000000000000000000000000000000000000000000000000000000000000062a", + "0x000000000000000000000000000000000000000000000000000000000000062b", + "0x000000000000000000000000000000000000000000000000000000000000062c", + "0x000000000000000000000000000000000000000000000000000000000000062d", + "0x000000000000000000000000000000000000000000000000000000000000062e", + "0x000000000000000000000000000000000000000000000000000000000000062f", + "0x0000000000000000000000000000000000000000000000000000000000000630", + "0x0000000000000000000000000000000000000000000000000000000000000631", + "0x0000000000000000000000000000000000000000000000000000000000000632", + "0x0000000000000000000000000000000000000000000000000000000000000633", + "0x0000000000000000000000000000000000000000000000000000000000000634", + "0x0000000000000000000000000000000000000000000000000000000000000635", + "0x0000000000000000000000000000000000000000000000000000000000000636", + "0x0000000000000000000000000000000000000000000000000000000000000637", + "0x0000000000000000000000000000000000000000000000000000000000000638", + "0x0000000000000000000000000000000000000000000000000000000000000639", + "0x000000000000000000000000000000000000000000000000000000000000063a", + "0x000000000000000000000000000000000000000000000000000000000000063b", + "0x000000000000000000000000000000000000000000000000000000000000063c", + "0x000000000000000000000000000000000000000000000000000000000000063d", + "0x000000000000000000000000000000000000000000000000000000000000063e", + "0x000000000000000000000000000000000000000000000000000000000000063f", + "0x0000000000000000000000000000000000000000000000000000000000000640", + "0x0000000000000000000000000000000000000000000000000000000000000641", + "0x0000000000000000000000000000000000000000000000000000000000000642", + "0x0000000000000000000000000000000000000000000000000000000000000643", + "0x0000000000000000000000000000000000000000000000000000000000000644", + "0x0000000000000000000000000000000000000000000000000000000000000645", + "0x0000000000000000000000000000000000000000000000000000000000000646", + "0x0000000000000000000000000000000000000000000000000000000000000647", + "0x0000000000000000000000000000000000000000000000000000000000000648", + "0x0000000000000000000000000000000000000000000000000000000000000649", + "0x000000000000000000000000000000000000000000000000000000000000064a", + "0x000000000000000000000000000000000000000000000000000000000000064b", + "0x000000000000000000000000000000000000000000000000000000000000064c", + "0x000000000000000000000000000000000000000000000000000000000000064d", + "0x000000000000000000000000000000000000000000000000000000000000064e", + "0x000000000000000000000000000000000000000000000000000000000000064f", + "0x0000000000000000000000000000000000000000000000000000000000000650", + "0x0000000000000000000000000000000000000000000000000000000000000651", + "0x0000000000000000000000000000000000000000000000000000000000000652", + "0x0000000000000000000000000000000000000000000000000000000000000653", + "0x0000000000000000000000000000000000000000000000000000000000000654", + "0x0000000000000000000000000000000000000000000000000000000000000655", + "0x0000000000000000000000000000000000000000000000000000000000000656", + "0x0000000000000000000000000000000000000000000000000000000000000657", + "0x0000000000000000000000000000000000000000000000000000000000000658", + "0x0000000000000000000000000000000000000000000000000000000000000659", + "0x000000000000000000000000000000000000000000000000000000000000065a", + "0x000000000000000000000000000000000000000000000000000000000000065b", + "0x000000000000000000000000000000000000000000000000000000000000065c", + "0x000000000000000000000000000000000000000000000000000000000000065d", + "0x000000000000000000000000000000000000000000000000000000000000065e", + "0x000000000000000000000000000000000000000000000000000000000000065f", + "0x0000000000000000000000000000000000000000000000000000000000000660", + "0x0000000000000000000000000000000000000000000000000000000000000661", + "0x0000000000000000000000000000000000000000000000000000000000000662", + "0x0000000000000000000000000000000000000000000000000000000000000663", + "0x0000000000000000000000000000000000000000000000000000000000000664", + "0x0000000000000000000000000000000000000000000000000000000000000665", + "0x0000000000000000000000000000000000000000000000000000000000000666", + "0x0000000000000000000000000000000000000000000000000000000000000667", + "0x0000000000000000000000000000000000000000000000000000000000000668", + "0x0000000000000000000000000000000000000000000000000000000000000669", + "0x000000000000000000000000000000000000000000000000000000000000066a", + "0x000000000000000000000000000000000000000000000000000000000000066b", + "0x000000000000000000000000000000000000000000000000000000000000066c", + "0x000000000000000000000000000000000000000000000000000000000000066d", + "0x000000000000000000000000000000000000000000000000000000000000066e", + "0x000000000000000000000000000000000000000000000000000000000000066f", + "0x0000000000000000000000000000000000000000000000000000000000000670", + "0x0000000000000000000000000000000000000000000000000000000000000671", + "0x0000000000000000000000000000000000000000000000000000000000000672", + "0x0000000000000000000000000000000000000000000000000000000000000673", + "0x0000000000000000000000000000000000000000000000000000000000000674", + "0x0000000000000000000000000000000000000000000000000000000000000675", + "0x0000000000000000000000000000000000000000000000000000000000000676", + "0x0000000000000000000000000000000000000000000000000000000000000677", + "0x0000000000000000000000000000000000000000000000000000000000000678", + "0x0000000000000000000000000000000000000000000000000000000000000679", + "0x000000000000000000000000000000000000000000000000000000000000067a", + "0x000000000000000000000000000000000000000000000000000000000000067b", + "0x000000000000000000000000000000000000000000000000000000000000067c", + "0x000000000000000000000000000000000000000000000000000000000000067d", + "0x000000000000000000000000000000000000000000000000000000000000067e", + "0x000000000000000000000000000000000000000000000000000000000000067f", + "0x0000000000000000000000000000000000000000000000000000000000000680", + "0x0000000000000000000000000000000000000000000000000000000000000681", + "0x0000000000000000000000000000000000000000000000000000000000000682", + "0x0000000000000000000000000000000000000000000000000000000000000683", + "0x0000000000000000000000000000000000000000000000000000000000000684", + "0x0000000000000000000000000000000000000000000000000000000000000685", + "0x0000000000000000000000000000000000000000000000000000000000000686", + "0x0000000000000000000000000000000000000000000000000000000000000687", + "0x0000000000000000000000000000000000000000000000000000000000000688", + "0x0000000000000000000000000000000000000000000000000000000000000689", + "0x000000000000000000000000000000000000000000000000000000000000068a", + "0x000000000000000000000000000000000000000000000000000000000000068b", + "0x000000000000000000000000000000000000000000000000000000000000068c", + "0x000000000000000000000000000000000000000000000000000000000000068d", + "0x000000000000000000000000000000000000000000000000000000000000068e", + "0x000000000000000000000000000000000000000000000000000000000000068f", + "0x0000000000000000000000000000000000000000000000000000000000000690", + "0x0000000000000000000000000000000000000000000000000000000000000691", + "0x0000000000000000000000000000000000000000000000000000000000000692", + "0x0000000000000000000000000000000000000000000000000000000000000693", + "0x0000000000000000000000000000000000000000000000000000000000000694", + "0x0000000000000000000000000000000000000000000000000000000000000695", + "0x0000000000000000000000000000000000000000000000000000000000000696", + "0x0000000000000000000000000000000000000000000000000000000000000697", + "0x0000000000000000000000000000000000000000000000000000000000000698", + "0x0000000000000000000000000000000000000000000000000000000000000699", + "0x000000000000000000000000000000000000000000000000000000000000069a", + "0x000000000000000000000000000000000000000000000000000000000000069b", + "0x000000000000000000000000000000000000000000000000000000000000069c", + "0x000000000000000000000000000000000000000000000000000000000000069d", + "0x000000000000000000000000000000000000000000000000000000000000069e", + "0x000000000000000000000000000000000000000000000000000000000000069f", + "0x00000000000000000000000000000000000000000000000000000000000006a0", + "0x00000000000000000000000000000000000000000000000000000000000006a1", + "0x00000000000000000000000000000000000000000000000000000000000006a2", + "0x00000000000000000000000000000000000000000000000000000000000006a3", + "0x00000000000000000000000000000000000000000000000000000000000006a4", + "0x00000000000000000000000000000000000000000000000000000000000006a5", + "0x00000000000000000000000000000000000000000000000000000000000006a6", + "0x00000000000000000000000000000000000000000000000000000000000006a7", + "0x00000000000000000000000000000000000000000000000000000000000006a8", + "0x00000000000000000000000000000000000000000000000000000000000006a9", + "0x00000000000000000000000000000000000000000000000000000000000006aa", + "0x00000000000000000000000000000000000000000000000000000000000006ab", + "0x00000000000000000000000000000000000000000000000000000000000006ac", + "0x00000000000000000000000000000000000000000000000000000000000006ad", + "0x00000000000000000000000000000000000000000000000000000000000006ae", + "0x00000000000000000000000000000000000000000000000000000000000006af", + "0x00000000000000000000000000000000000000000000000000000000000006b0", + "0x00000000000000000000000000000000000000000000000000000000000006b1", + "0x00000000000000000000000000000000000000000000000000000000000006b2", + "0x00000000000000000000000000000000000000000000000000000000000006b3", + "0x00000000000000000000000000000000000000000000000000000000000006b4", + "0x00000000000000000000000000000000000000000000000000000000000006b5", + "0x00000000000000000000000000000000000000000000000000000000000006b6", + "0x00000000000000000000000000000000000000000000000000000000000006b7", + "0x00000000000000000000000000000000000000000000000000000000000006b8", + "0x00000000000000000000000000000000000000000000000000000000000006b9", + "0x00000000000000000000000000000000000000000000000000000000000006ba", + "0x00000000000000000000000000000000000000000000000000000000000006bb", + "0x00000000000000000000000000000000000000000000000000000000000006bc", + "0x00000000000000000000000000000000000000000000000000000000000006bd", + "0x00000000000000000000000000000000000000000000000000000000000006be", + "0x00000000000000000000000000000000000000000000000000000000000006bf", + "0x00000000000000000000000000000000000000000000000000000000000006c0", + "0x00000000000000000000000000000000000000000000000000000000000006c1", + "0x00000000000000000000000000000000000000000000000000000000000006c2", + "0x00000000000000000000000000000000000000000000000000000000000006c3", + "0x00000000000000000000000000000000000000000000000000000000000006c4", + "0x00000000000000000000000000000000000000000000000000000000000006c5", + "0x00000000000000000000000000000000000000000000000000000000000006c6", + "0x00000000000000000000000000000000000000000000000000000000000006c7", + "0x00000000000000000000000000000000000000000000000000000000000006c8", + "0x00000000000000000000000000000000000000000000000000000000000006c9", + "0x00000000000000000000000000000000000000000000000000000000000006ca", + "0x00000000000000000000000000000000000000000000000000000000000006cb", + "0x00000000000000000000000000000000000000000000000000000000000006cc", + "0x00000000000000000000000000000000000000000000000000000000000006cd", + "0x00000000000000000000000000000000000000000000000000000000000006ce", + "0x00000000000000000000000000000000000000000000000000000000000006cf", + "0x00000000000000000000000000000000000000000000000000000000000006d0", + "0x00000000000000000000000000000000000000000000000000000000000006d1", + "0x00000000000000000000000000000000000000000000000000000000000006d2", + "0x00000000000000000000000000000000000000000000000000000000000006d3", + "0x00000000000000000000000000000000000000000000000000000000000006d4", + "0x00000000000000000000000000000000000000000000000000000000000006d5", + "0x00000000000000000000000000000000000000000000000000000000000006d6", + "0x00000000000000000000000000000000000000000000000000000000000006d7", + "0x00000000000000000000000000000000000000000000000000000000000006d8", + "0x00000000000000000000000000000000000000000000000000000000000006d9", + "0x00000000000000000000000000000000000000000000000000000000000006da", + "0x00000000000000000000000000000000000000000000000000000000000006db", + "0x00000000000000000000000000000000000000000000000000000000000006dc", + "0x00000000000000000000000000000000000000000000000000000000000006dd", + "0x00000000000000000000000000000000000000000000000000000000000006de", + "0x00000000000000000000000000000000000000000000000000000000000006df", + "0x00000000000000000000000000000000000000000000000000000000000006e0", + "0x00000000000000000000000000000000000000000000000000000000000006e1", + "0x00000000000000000000000000000000000000000000000000000000000006e2", + "0x00000000000000000000000000000000000000000000000000000000000006e3", + "0x00000000000000000000000000000000000000000000000000000000000006e4", + "0x00000000000000000000000000000000000000000000000000000000000006e5", + "0x00000000000000000000000000000000000000000000000000000000000006e6", + "0x00000000000000000000000000000000000000000000000000000000000006e7", + "0x00000000000000000000000000000000000000000000000000000000000006e8", + "0x00000000000000000000000000000000000000000000000000000000000006e9", + "0x00000000000000000000000000000000000000000000000000000000000006ea", + "0x00000000000000000000000000000000000000000000000000000000000006eb", + "0x00000000000000000000000000000000000000000000000000000000000006ec", + "0x00000000000000000000000000000000000000000000000000000000000006ed", + "0x00000000000000000000000000000000000000000000000000000000000006ee", + "0x00000000000000000000000000000000000000000000000000000000000006ef", + "0x00000000000000000000000000000000000000000000000000000000000006f0", + "0x00000000000000000000000000000000000000000000000000000000000006f1", + "0x00000000000000000000000000000000000000000000000000000000000006f2", + "0x00000000000000000000000000000000000000000000000000000000000006f3", + "0x00000000000000000000000000000000000000000000000000000000000006f4", + "0x00000000000000000000000000000000000000000000000000000000000006f5", + "0x00000000000000000000000000000000000000000000000000000000000006f6", + "0x00000000000000000000000000000000000000000000000000000000000006f7", + "0x00000000000000000000000000000000000000000000000000000000000006f8", + "0x00000000000000000000000000000000000000000000000000000000000006f9", + "0x00000000000000000000000000000000000000000000000000000000000006fa", + "0x00000000000000000000000000000000000000000000000000000000000006fb", + "0x00000000000000000000000000000000000000000000000000000000000006fc", + "0x00000000000000000000000000000000000000000000000000000000000006fd", + "0x00000000000000000000000000000000000000000000000000000000000006fe", + "0x00000000000000000000000000000000000000000000000000000000000006ff", + "0x0000000000000000000000000000000000000000000000000000000000000700", + "0x0000000000000000000000000000000000000000000000000000000000000701", + "0x0000000000000000000000000000000000000000000000000000000000000702", + "0x0000000000000000000000000000000000000000000000000000000000000703", + "0x0000000000000000000000000000000000000000000000000000000000000704", + "0x0000000000000000000000000000000000000000000000000000000000000705", + "0x0000000000000000000000000000000000000000000000000000000000000706", + "0x0000000000000000000000000000000000000000000000000000000000000707", + "0x0000000000000000000000000000000000000000000000000000000000000708", + "0x0000000000000000000000000000000000000000000000000000000000000709", + "0x000000000000000000000000000000000000000000000000000000000000070a", + "0x000000000000000000000000000000000000000000000000000000000000070b", + "0x000000000000000000000000000000000000000000000000000000000000070c", + "0x000000000000000000000000000000000000000000000000000000000000070d", + "0x000000000000000000000000000000000000000000000000000000000000070e", + "0x000000000000000000000000000000000000000000000000000000000000070f", + "0x0000000000000000000000000000000000000000000000000000000000000710", + "0x0000000000000000000000000000000000000000000000000000000000000711", + "0x0000000000000000000000000000000000000000000000000000000000000712", + "0x0000000000000000000000000000000000000000000000000000000000000713", + "0x0000000000000000000000000000000000000000000000000000000000000714", + "0x0000000000000000000000000000000000000000000000000000000000000715", + "0x0000000000000000000000000000000000000000000000000000000000000716", + "0x0000000000000000000000000000000000000000000000000000000000000717", + "0x0000000000000000000000000000000000000000000000000000000000000718", + "0x0000000000000000000000000000000000000000000000000000000000000719", + "0x000000000000000000000000000000000000000000000000000000000000071a", + "0x000000000000000000000000000000000000000000000000000000000000071b", + "0x000000000000000000000000000000000000000000000000000000000000071c", + "0x000000000000000000000000000000000000000000000000000000000000071d", + "0x000000000000000000000000000000000000000000000000000000000000071e", + "0x000000000000000000000000000000000000000000000000000000000000071f", + "0x0000000000000000000000000000000000000000000000000000000000000720", + "0x0000000000000000000000000000000000000000000000000000000000000721", + "0x0000000000000000000000000000000000000000000000000000000000000722", + "0x0000000000000000000000000000000000000000000000000000000000000723", + "0x0000000000000000000000000000000000000000000000000000000000000724", + "0x0000000000000000000000000000000000000000000000000000000000000725", + "0x0000000000000000000000000000000000000000000000000000000000000726", + "0x0000000000000000000000000000000000000000000000000000000000000727", + "0x0000000000000000000000000000000000000000000000000000000000000728", + "0x0000000000000000000000000000000000000000000000000000000000000729", + "0x000000000000000000000000000000000000000000000000000000000000072a", + "0x000000000000000000000000000000000000000000000000000000000000072b", + "0x000000000000000000000000000000000000000000000000000000000000072c", + "0x000000000000000000000000000000000000000000000000000000000000072d", + "0x000000000000000000000000000000000000000000000000000000000000072e", + "0x000000000000000000000000000000000000000000000000000000000000072f", + "0x0000000000000000000000000000000000000000000000000000000000000730", + "0x0000000000000000000000000000000000000000000000000000000000000731", + "0x0000000000000000000000000000000000000000000000000000000000000732", + "0x0000000000000000000000000000000000000000000000000000000000000733", + "0x0000000000000000000000000000000000000000000000000000000000000734", + "0x0000000000000000000000000000000000000000000000000000000000000735", + "0x0000000000000000000000000000000000000000000000000000000000000736", + "0x0000000000000000000000000000000000000000000000000000000000000737", + "0x0000000000000000000000000000000000000000000000000000000000000738", + "0x0000000000000000000000000000000000000000000000000000000000000739", + "0x000000000000000000000000000000000000000000000000000000000000073a", + "0x000000000000000000000000000000000000000000000000000000000000073b", + "0x000000000000000000000000000000000000000000000000000000000000073c", + "0x000000000000000000000000000000000000000000000000000000000000073d", + "0x000000000000000000000000000000000000000000000000000000000000073e", + "0x000000000000000000000000000000000000000000000000000000000000073f", + "0x0000000000000000000000000000000000000000000000000000000000000740", + "0x0000000000000000000000000000000000000000000000000000000000000741", + "0x0000000000000000000000000000000000000000000000000000000000000742", + "0x0000000000000000000000000000000000000000000000000000000000000743", + "0x0000000000000000000000000000000000000000000000000000000000000744", + "0x0000000000000000000000000000000000000000000000000000000000000745", + "0x0000000000000000000000000000000000000000000000000000000000000746", + "0x0000000000000000000000000000000000000000000000000000000000000747", + "0x0000000000000000000000000000000000000000000000000000000000000748", + "0x0000000000000000000000000000000000000000000000000000000000000749", + "0x000000000000000000000000000000000000000000000000000000000000074a", + "0x000000000000000000000000000000000000000000000000000000000000074b", + "0x000000000000000000000000000000000000000000000000000000000000074c", + "0x000000000000000000000000000000000000000000000000000000000000074d", + "0x000000000000000000000000000000000000000000000000000000000000074e", + "0x000000000000000000000000000000000000000000000000000000000000074f", + "0x0000000000000000000000000000000000000000000000000000000000000750", + "0x0000000000000000000000000000000000000000000000000000000000000751", + "0x0000000000000000000000000000000000000000000000000000000000000752", + "0x0000000000000000000000000000000000000000000000000000000000000753", + "0x0000000000000000000000000000000000000000000000000000000000000754", + "0x0000000000000000000000000000000000000000000000000000000000000755", + "0x0000000000000000000000000000000000000000000000000000000000000756", + "0x0000000000000000000000000000000000000000000000000000000000000757", + "0x0000000000000000000000000000000000000000000000000000000000000758", + "0x0000000000000000000000000000000000000000000000000000000000000759", + "0x000000000000000000000000000000000000000000000000000000000000075a", + "0x000000000000000000000000000000000000000000000000000000000000075b", + "0x000000000000000000000000000000000000000000000000000000000000075c", + "0x000000000000000000000000000000000000000000000000000000000000075d", + "0x000000000000000000000000000000000000000000000000000000000000075e", + "0x000000000000000000000000000000000000000000000000000000000000075f", + "0x0000000000000000000000000000000000000000000000000000000000000760", + "0x0000000000000000000000000000000000000000000000000000000000000761", + "0x0000000000000000000000000000000000000000000000000000000000000762", + "0x0000000000000000000000000000000000000000000000000000000000000763", + "0x0000000000000000000000000000000000000000000000000000000000000764", + "0x0000000000000000000000000000000000000000000000000000000000000765", + "0x0000000000000000000000000000000000000000000000000000000000000766", + "0x0000000000000000000000000000000000000000000000000000000000000767", + "0x0000000000000000000000000000000000000000000000000000000000000768", + "0x0000000000000000000000000000000000000000000000000000000000000769", + "0x000000000000000000000000000000000000000000000000000000000000076a", + "0x000000000000000000000000000000000000000000000000000000000000076b", + "0x000000000000000000000000000000000000000000000000000000000000076c", + "0x000000000000000000000000000000000000000000000000000000000000076d", + "0x000000000000000000000000000000000000000000000000000000000000076e", + "0x000000000000000000000000000000000000000000000000000000000000076f", + "0x0000000000000000000000000000000000000000000000000000000000000770", + "0x0000000000000000000000000000000000000000000000000000000000000771", + "0x0000000000000000000000000000000000000000000000000000000000000772", + "0x0000000000000000000000000000000000000000000000000000000000000773", + "0x0000000000000000000000000000000000000000000000000000000000000774", + "0x0000000000000000000000000000000000000000000000000000000000000775", + "0x0000000000000000000000000000000000000000000000000000000000000776", + "0x0000000000000000000000000000000000000000000000000000000000000777", + "0x0000000000000000000000000000000000000000000000000000000000000778", + "0x0000000000000000000000000000000000000000000000000000000000000779", + "0x000000000000000000000000000000000000000000000000000000000000077a", + "0x000000000000000000000000000000000000000000000000000000000000077b", + "0x000000000000000000000000000000000000000000000000000000000000077c", + "0x000000000000000000000000000000000000000000000000000000000000077d", + "0x000000000000000000000000000000000000000000000000000000000000077e", + "0x000000000000000000000000000000000000000000000000000000000000077f", + "0x0000000000000000000000000000000000000000000000000000000000000780", + "0x0000000000000000000000000000000000000000000000000000000000000781", + "0x0000000000000000000000000000000000000000000000000000000000000782", + "0x0000000000000000000000000000000000000000000000000000000000000783", + "0x0000000000000000000000000000000000000000000000000000000000000784", + "0x0000000000000000000000000000000000000000000000000000000000000785", + "0x0000000000000000000000000000000000000000000000000000000000000786", + "0x0000000000000000000000000000000000000000000000000000000000000787", + "0x0000000000000000000000000000000000000000000000000000000000000788", + "0x0000000000000000000000000000000000000000000000000000000000000789", + "0x000000000000000000000000000000000000000000000000000000000000078a", + "0x000000000000000000000000000000000000000000000000000000000000078b", + "0x000000000000000000000000000000000000000000000000000000000000078c", + "0x000000000000000000000000000000000000000000000000000000000000078d", + "0x000000000000000000000000000000000000000000000000000000000000078e", + "0x000000000000000000000000000000000000000000000000000000000000078f", + "0x0000000000000000000000000000000000000000000000000000000000000790", + "0x0000000000000000000000000000000000000000000000000000000000000791", + "0x0000000000000000000000000000000000000000000000000000000000000792", + "0x0000000000000000000000000000000000000000000000000000000000000793", + "0x0000000000000000000000000000000000000000000000000000000000000794", + "0x0000000000000000000000000000000000000000000000000000000000000795", + "0x0000000000000000000000000000000000000000000000000000000000000796", + "0x0000000000000000000000000000000000000000000000000000000000000797", + "0x0000000000000000000000000000000000000000000000000000000000000798", + "0x0000000000000000000000000000000000000000000000000000000000000799", + "0x000000000000000000000000000000000000000000000000000000000000079a", + "0x000000000000000000000000000000000000000000000000000000000000079b", + "0x000000000000000000000000000000000000000000000000000000000000079c", + "0x000000000000000000000000000000000000000000000000000000000000079d", + "0x000000000000000000000000000000000000000000000000000000000000079e", + "0x000000000000000000000000000000000000000000000000000000000000079f", + "0x00000000000000000000000000000000000000000000000000000000000007a0", + "0x00000000000000000000000000000000000000000000000000000000000007a1", + "0x00000000000000000000000000000000000000000000000000000000000007a2", + "0x00000000000000000000000000000000000000000000000000000000000007a3", + "0x00000000000000000000000000000000000000000000000000000000000007a4", + "0x00000000000000000000000000000000000000000000000000000000000007a5", + "0x00000000000000000000000000000000000000000000000000000000000007a6", + "0x00000000000000000000000000000000000000000000000000000000000007a7", + "0x00000000000000000000000000000000000000000000000000000000000007a8", + "0x00000000000000000000000000000000000000000000000000000000000007a9", + "0x00000000000000000000000000000000000000000000000000000000000007aa", + "0x00000000000000000000000000000000000000000000000000000000000007ab", + "0x00000000000000000000000000000000000000000000000000000000000007ac", + "0x00000000000000000000000000000000000000000000000000000000000007ad", + "0x00000000000000000000000000000000000000000000000000000000000007ae", + "0x00000000000000000000000000000000000000000000000000000000000007af", + "0x00000000000000000000000000000000000000000000000000000000000007b0", + "0x00000000000000000000000000000000000000000000000000000000000007b1", + "0x00000000000000000000000000000000000000000000000000000000000007b2", + "0x00000000000000000000000000000000000000000000000000000000000007b3", + "0x00000000000000000000000000000000000000000000000000000000000007b4", + "0x00000000000000000000000000000000000000000000000000000000000007b5", + "0x00000000000000000000000000000000000000000000000000000000000007b6", + "0x00000000000000000000000000000000000000000000000000000000000007b7", + "0x00000000000000000000000000000000000000000000000000000000000007b8", + "0x00000000000000000000000000000000000000000000000000000000000007b9", + "0x00000000000000000000000000000000000000000000000000000000000007ba", + "0x00000000000000000000000000000000000000000000000000000000000007bb", + "0x00000000000000000000000000000000000000000000000000000000000007bc", + "0x00000000000000000000000000000000000000000000000000000000000007bd", + "0x00000000000000000000000000000000000000000000000000000000000007be", + "0x00000000000000000000000000000000000000000000000000000000000007bf", + "0x00000000000000000000000000000000000000000000000000000000000007c0", + "0x00000000000000000000000000000000000000000000000000000000000007c1", + "0x00000000000000000000000000000000000000000000000000000000000007c2", + "0x00000000000000000000000000000000000000000000000000000000000007c3", + "0x00000000000000000000000000000000000000000000000000000000000007c4", + "0x00000000000000000000000000000000000000000000000000000000000007c5", + "0x00000000000000000000000000000000000000000000000000000000000007c6", + "0x00000000000000000000000000000000000000000000000000000000000007c7", + "0x00000000000000000000000000000000000000000000000000000000000007c8", + "0x00000000000000000000000000000000000000000000000000000000000007c9", + "0x00000000000000000000000000000000000000000000000000000000000007ca", + "0x00000000000000000000000000000000000000000000000000000000000007cb", + "0x00000000000000000000000000000000000000000000000000000000000007cc", + "0x00000000000000000000000000000000000000000000000000000000000007cd", + "0x00000000000000000000000000000000000000000000000000000000000007ce", + "0x00000000000000000000000000000000000000000000000000000000000007cf", + "0x00000000000000000000000000000000000000000000000000000000000007d0", + "0x00000000000000000000000000000000000000000000000000000000000007d1", + "0x00000000000000000000000000000000000000000000000000000000000007d2", + "0x00000000000000000000000000000000000000000000000000000000000007d3", + "0x00000000000000000000000000000000000000000000000000000000000007d4", + "0x00000000000000000000000000000000000000000000000000000000000007d5", + "0x00000000000000000000000000000000000000000000000000000000000007d6", + "0x00000000000000000000000000000000000000000000000000000000000007d7", + "0x00000000000000000000000000000000000000000000000000000000000007d8", + "0x00000000000000000000000000000000000000000000000000000000000007d9", + "0x00000000000000000000000000000000000000000000000000000000000007da", + "0x00000000000000000000000000000000000000000000000000000000000007db", + "0x00000000000000000000000000000000000000000000000000000000000007dc", + "0x00000000000000000000000000000000000000000000000000000000000007dd", + "0x00000000000000000000000000000000000000000000000000000000000007de", + "0x00000000000000000000000000000000000000000000000000000000000007df", + "0x00000000000000000000000000000000000000000000000000000000000007e0", + "0x00000000000000000000000000000000000000000000000000000000000007e1", + "0x00000000000000000000000000000000000000000000000000000000000007e2", + "0x00000000000000000000000000000000000000000000000000000000000007e3", + "0x00000000000000000000000000000000000000000000000000000000000007e4", + "0x00000000000000000000000000000000000000000000000000000000000007e5", + "0x00000000000000000000000000000000000000000000000000000000000007e6", + "0x00000000000000000000000000000000000000000000000000000000000007e7", + "0x00000000000000000000000000000000000000000000000000000000000007e8", + "0x00000000000000000000000000000000000000000000000000000000000007e9", + "0x00000000000000000000000000000000000000000000000000000000000007ea", + "0x00000000000000000000000000000000000000000000000000000000000007eb", + "0x00000000000000000000000000000000000000000000000000000000000007ec", + "0x00000000000000000000000000000000000000000000000000000000000007ed", + "0x00000000000000000000000000000000000000000000000000000000000007ee", + "0x00000000000000000000000000000000000000000000000000000000000007ef", + "0x00000000000000000000000000000000000000000000000000000000000007f0", + "0x00000000000000000000000000000000000000000000000000000000000007f1", + "0x00000000000000000000000000000000000000000000000000000000000007f2", + "0x00000000000000000000000000000000000000000000000000000000000007f3", + "0x00000000000000000000000000000000000000000000000000000000000007f4", + "0x00000000000000000000000000000000000000000000000000000000000007f5", + "0x00000000000000000000000000000000000000000000000000000000000007f6", + "0x00000000000000000000000000000000000000000000000000000000000007f7", + "0x00000000000000000000000000000000000000000000000000000000000007f8", + "0x00000000000000000000000000000000000000000000000000000000000007f9", + "0x00000000000000000000000000000000000000000000000000000000000007fa", + "0x00000000000000000000000000000000000000000000000000000000000007fb", + "0x00000000000000000000000000000000000000000000000000000000000007fc", + "0x00000000000000000000000000000000000000000000000000000000000007fd", + "0x00000000000000000000000000000000000000000000000000000000000007fe", + "0x00000000000000000000000000000000000000000000000000000000000007ff", + "0x0000000000000000000000000000000000000000000000000000000000000800", + "0x0000000000000000000000000000000000000000000000000000000000000801", + "0x0000000000000000000000000000000000000000000000000000000000000802", + "0x0000000000000000000000000000000000000000000000000000000000000803", + "0x0000000000000000000000000000000000000000000000000000000000000804", + "0x0000000000000000000000000000000000000000000000000000000000000805", + "0x0000000000000000000000000000000000000000000000000000000000000806", + "0x0000000000000000000000000000000000000000000000000000000000000807", + "0x0000000000000000000000000000000000000000000000000000000000000808", + "0x0000000000000000000000000000000000000000000000000000000000000809", + "0x000000000000000000000000000000000000000000000000000000000000080a", + "0x000000000000000000000000000000000000000000000000000000000000080b", + "0x000000000000000000000000000000000000000000000000000000000000080c", + "0x000000000000000000000000000000000000000000000000000000000000080d", + "0x000000000000000000000000000000000000000000000000000000000000080e", + "0x000000000000000000000000000000000000000000000000000000000000080f", + "0x0000000000000000000000000000000000000000000000000000000000000810", + "0x0000000000000000000000000000000000000000000000000000000000000811", + "0x0000000000000000000000000000000000000000000000000000000000000812", + "0x0000000000000000000000000000000000000000000000000000000000000813", + "0x0000000000000000000000000000000000000000000000000000000000000814", + "0x0000000000000000000000000000000000000000000000000000000000000815", + "0x0000000000000000000000000000000000000000000000000000000000000816", + "0x0000000000000000000000000000000000000000000000000000000000000817", + "0x0000000000000000000000000000000000000000000000000000000000000818", + "0x0000000000000000000000000000000000000000000000000000000000000819", + "0x000000000000000000000000000000000000000000000000000000000000081a", + "0x000000000000000000000000000000000000000000000000000000000000081b", + "0x000000000000000000000000000000000000000000000000000000000000081c", + "0x000000000000000000000000000000000000000000000000000000000000081d", + "0x000000000000000000000000000000000000000000000000000000000000081e", + "0x000000000000000000000000000000000000000000000000000000000000081f", + "0x0000000000000000000000000000000000000000000000000000000000000820", + "0x0000000000000000000000000000000000000000000000000000000000000821", + "0x0000000000000000000000000000000000000000000000000000000000000822", + "0x0000000000000000000000000000000000000000000000000000000000000823", + "0x0000000000000000000000000000000000000000000000000000000000000824", + "0x0000000000000000000000000000000000000000000000000000000000000825", + "0x0000000000000000000000000000000000000000000000000000000000000826", + "0x0000000000000000000000000000000000000000000000000000000000000827", + "0x0000000000000000000000000000000000000000000000000000000000000828", + "0x0000000000000000000000000000000000000000000000000000000000000829", + "0x000000000000000000000000000000000000000000000000000000000000082a", + "0x000000000000000000000000000000000000000000000000000000000000082b", + "0x000000000000000000000000000000000000000000000000000000000000082c", + "0x000000000000000000000000000000000000000000000000000000000000082d", + "0x000000000000000000000000000000000000000000000000000000000000082e", + "0x000000000000000000000000000000000000000000000000000000000000082f", + "0x0000000000000000000000000000000000000000000000000000000000000830", + "0x0000000000000000000000000000000000000000000000000000000000000831", + "0x0000000000000000000000000000000000000000000000000000000000000832", + "0x0000000000000000000000000000000000000000000000000000000000000833", + "0x0000000000000000000000000000000000000000000000000000000000000834", + "0x0000000000000000000000000000000000000000000000000000000000000835", + "0x0000000000000000000000000000000000000000000000000000000000000836", + "0x0000000000000000000000000000000000000000000000000000000000000837", + "0x0000000000000000000000000000000000000000000000000000000000000838", + "0x0000000000000000000000000000000000000000000000000000000000000839", + "0x000000000000000000000000000000000000000000000000000000000000083a", + "0x000000000000000000000000000000000000000000000000000000000000083b", + "0x000000000000000000000000000000000000000000000000000000000000083c", + "0x000000000000000000000000000000000000000000000000000000000000083d", + "0x000000000000000000000000000000000000000000000000000000000000083e", + "0x000000000000000000000000000000000000000000000000000000000000083f", + "0x0000000000000000000000000000000000000000000000000000000000000840", + "0x0000000000000000000000000000000000000000000000000000000000000841", + "0x0000000000000000000000000000000000000000000000000000000000000842", + "0x0000000000000000000000000000000000000000000000000000000000000843", + "0x0000000000000000000000000000000000000000000000000000000000000844", + "0x0000000000000000000000000000000000000000000000000000000000000845", + "0x0000000000000000000000000000000000000000000000000000000000000846", + "0x0000000000000000000000000000000000000000000000000000000000000847", + "0x0000000000000000000000000000000000000000000000000000000000000848", + "0x0000000000000000000000000000000000000000000000000000000000000849", + "0x000000000000000000000000000000000000000000000000000000000000084a", + "0x000000000000000000000000000000000000000000000000000000000000084b", + "0x000000000000000000000000000000000000000000000000000000000000084c", + "0x000000000000000000000000000000000000000000000000000000000000084d", + "0x000000000000000000000000000000000000000000000000000000000000084e", + "0x000000000000000000000000000000000000000000000000000000000000084f", + "0x0000000000000000000000000000000000000000000000000000000000000850", + "0x0000000000000000000000000000000000000000000000000000000000000851", + "0x0000000000000000000000000000000000000000000000000000000000000852", + "0x0000000000000000000000000000000000000000000000000000000000000853", + "0x0000000000000000000000000000000000000000000000000000000000000854", + "0x0000000000000000000000000000000000000000000000000000000000000855", + "0x0000000000000000000000000000000000000000000000000000000000000856", + "0x0000000000000000000000000000000000000000000000000000000000000857", + "0x0000000000000000000000000000000000000000000000000000000000000858", + "0x0000000000000000000000000000000000000000000000000000000000000859", + "0x000000000000000000000000000000000000000000000000000000000000085a", + "0x000000000000000000000000000000000000000000000000000000000000085b", + "0x000000000000000000000000000000000000000000000000000000000000085c", + "0x000000000000000000000000000000000000000000000000000000000000085d", + "0x000000000000000000000000000000000000000000000000000000000000085e", + "0x000000000000000000000000000000000000000000000000000000000000085f", + "0x0000000000000000000000000000000000000000000000000000000000000860", + "0x0000000000000000000000000000000000000000000000000000000000000861", + "0x0000000000000000000000000000000000000000000000000000000000000862", + "0x0000000000000000000000000000000000000000000000000000000000000863", + "0x0000000000000000000000000000000000000000000000000000000000000864", + "0x0000000000000000000000000000000000000000000000000000000000000865", + "0x0000000000000000000000000000000000000000000000000000000000000866", + "0x0000000000000000000000000000000000000000000000000000000000000867", + "0x0000000000000000000000000000000000000000000000000000000000000868", + "0x0000000000000000000000000000000000000000000000000000000000000869", + "0x000000000000000000000000000000000000000000000000000000000000086a", + "0x000000000000000000000000000000000000000000000000000000000000086b", + "0x000000000000000000000000000000000000000000000000000000000000086c", + "0x000000000000000000000000000000000000000000000000000000000000086d", + "0x000000000000000000000000000000000000000000000000000000000000086e", + "0x000000000000000000000000000000000000000000000000000000000000086f", + "0x0000000000000000000000000000000000000000000000000000000000000870", + "0x0000000000000000000000000000000000000000000000000000000000000871", + "0x0000000000000000000000000000000000000000000000000000000000000872", + "0x0000000000000000000000000000000000000000000000000000000000000873", + "0x0000000000000000000000000000000000000000000000000000000000000874", + "0x0000000000000000000000000000000000000000000000000000000000000875", + "0x0000000000000000000000000000000000000000000000000000000000000876", + "0x0000000000000000000000000000000000000000000000000000000000000877", + "0x0000000000000000000000000000000000000000000000000000000000000878", + "0x0000000000000000000000000000000000000000000000000000000000000879", + "0x000000000000000000000000000000000000000000000000000000000000087a", + "0x000000000000000000000000000000000000000000000000000000000000087b", + "0x000000000000000000000000000000000000000000000000000000000000087c", + "0x000000000000000000000000000000000000000000000000000000000000087d", + "0x000000000000000000000000000000000000000000000000000000000000087e", + "0x000000000000000000000000000000000000000000000000000000000000087f", + "0x0000000000000000000000000000000000000000000000000000000000000880", + "0x0000000000000000000000000000000000000000000000000000000000000881", + "0x0000000000000000000000000000000000000000000000000000000000000882", + "0x0000000000000000000000000000000000000000000000000000000000000883", + "0x0000000000000000000000000000000000000000000000000000000000000884", + "0x0000000000000000000000000000000000000000000000000000000000000885", + "0x0000000000000000000000000000000000000000000000000000000000000886", + "0x0000000000000000000000000000000000000000000000000000000000000887", + "0x0000000000000000000000000000000000000000000000000000000000000888", + "0x0000000000000000000000000000000000000000000000000000000000000889", + "0x000000000000000000000000000000000000000000000000000000000000088a", + "0x000000000000000000000000000000000000000000000000000000000000088b", + "0x000000000000000000000000000000000000000000000000000000000000088c", + "0x000000000000000000000000000000000000000000000000000000000000088d", + "0x000000000000000000000000000000000000000000000000000000000000088e", + "0x000000000000000000000000000000000000000000000000000000000000088f", + "0x0000000000000000000000000000000000000000000000000000000000000890", + "0x0000000000000000000000000000000000000000000000000000000000000891", + "0x0000000000000000000000000000000000000000000000000000000000000892", + "0x0000000000000000000000000000000000000000000000000000000000000893", + "0x0000000000000000000000000000000000000000000000000000000000000894", + "0x0000000000000000000000000000000000000000000000000000000000000895", + "0x0000000000000000000000000000000000000000000000000000000000000896", + "0x0000000000000000000000000000000000000000000000000000000000000897", + "0x0000000000000000000000000000000000000000000000000000000000000898", + "0x0000000000000000000000000000000000000000000000000000000000000899", + "0x000000000000000000000000000000000000000000000000000000000000089a", + "0x000000000000000000000000000000000000000000000000000000000000089b", + "0x000000000000000000000000000000000000000000000000000000000000089c", + "0x000000000000000000000000000000000000000000000000000000000000089d", + "0x000000000000000000000000000000000000000000000000000000000000089e", + "0x000000000000000000000000000000000000000000000000000000000000089f", + "0x00000000000000000000000000000000000000000000000000000000000008a0", + "0x00000000000000000000000000000000000000000000000000000000000008a1", + "0x00000000000000000000000000000000000000000000000000000000000008a2", + "0x00000000000000000000000000000000000000000000000000000000000008a3", + "0x00000000000000000000000000000000000000000000000000000000000008a4", + "0x00000000000000000000000000000000000000000000000000000000000008a5", + "0x00000000000000000000000000000000000000000000000000000000000008a6", + "0x00000000000000000000000000000000000000000000000000000000000008a7", + "0x00000000000000000000000000000000000000000000000000000000000008a8", + "0x00000000000000000000000000000000000000000000000000000000000008a9", + "0x00000000000000000000000000000000000000000000000000000000000008aa", + "0x00000000000000000000000000000000000000000000000000000000000008ab", + "0x00000000000000000000000000000000000000000000000000000000000008ac", + "0x00000000000000000000000000000000000000000000000000000000000008ad", + "0x00000000000000000000000000000000000000000000000000000000000008ae", + "0x00000000000000000000000000000000000000000000000000000000000008af", + "0x00000000000000000000000000000000000000000000000000000000000008b0", + "0x00000000000000000000000000000000000000000000000000000000000008b1", + "0x00000000000000000000000000000000000000000000000000000000000008b2", + "0x00000000000000000000000000000000000000000000000000000000000008b3", + "0x00000000000000000000000000000000000000000000000000000000000008b4", + "0x00000000000000000000000000000000000000000000000000000000000008b5", + "0x00000000000000000000000000000000000000000000000000000000000008b6", + "0x00000000000000000000000000000000000000000000000000000000000008b7", + "0x00000000000000000000000000000000000000000000000000000000000008b8", + "0x00000000000000000000000000000000000000000000000000000000000008b9", + "0x00000000000000000000000000000000000000000000000000000000000008ba", + "0x00000000000000000000000000000000000000000000000000000000000008bb", + "0x00000000000000000000000000000000000000000000000000000000000008bc", + "0x00000000000000000000000000000000000000000000000000000000000008bd", + "0x00000000000000000000000000000000000000000000000000000000000008be", + "0x00000000000000000000000000000000000000000000000000000000000008bf", + "0x00000000000000000000000000000000000000000000000000000000000008c0", + "0x00000000000000000000000000000000000000000000000000000000000008c1", + "0x00000000000000000000000000000000000000000000000000000000000008c2", + "0x00000000000000000000000000000000000000000000000000000000000008c3", + "0x00000000000000000000000000000000000000000000000000000000000008c4", + "0x00000000000000000000000000000000000000000000000000000000000008c5", + "0x00000000000000000000000000000000000000000000000000000000000008c6", + "0x00000000000000000000000000000000000000000000000000000000000008c7", + "0x00000000000000000000000000000000000000000000000000000000000008c8", + "0x00000000000000000000000000000000000000000000000000000000000008c9", + "0x00000000000000000000000000000000000000000000000000000000000008ca", + "0x00000000000000000000000000000000000000000000000000000000000008cb", + "0x00000000000000000000000000000000000000000000000000000000000008cc", + "0x00000000000000000000000000000000000000000000000000000000000008cd", + "0x00000000000000000000000000000000000000000000000000000000000008ce", + "0x00000000000000000000000000000000000000000000000000000000000008cf", + "0x00000000000000000000000000000000000000000000000000000000000008d0", + "0x00000000000000000000000000000000000000000000000000000000000008d1", + "0x00000000000000000000000000000000000000000000000000000000000008d2", + "0x00000000000000000000000000000000000000000000000000000000000008d3", + "0x00000000000000000000000000000000000000000000000000000000000008d4", + "0x00000000000000000000000000000000000000000000000000000000000008d5", + "0x00000000000000000000000000000000000000000000000000000000000008d6", + "0x00000000000000000000000000000000000000000000000000000000000008d7", + "0x00000000000000000000000000000000000000000000000000000000000008d8", + "0x00000000000000000000000000000000000000000000000000000000000008d9", + "0x00000000000000000000000000000000000000000000000000000000000008da", + "0x00000000000000000000000000000000000000000000000000000000000008db", + "0x00000000000000000000000000000000000000000000000000000000000008dc", + "0x00000000000000000000000000000000000000000000000000000000000008dd", + "0x00000000000000000000000000000000000000000000000000000000000008de", + "0x00000000000000000000000000000000000000000000000000000000000008df", + "0x00000000000000000000000000000000000000000000000000000000000008e0", + "0x00000000000000000000000000000000000000000000000000000000000008e1", + "0x00000000000000000000000000000000000000000000000000000000000008e2", + "0x00000000000000000000000000000000000000000000000000000000000008e3", + "0x00000000000000000000000000000000000000000000000000000000000008e4", + "0x00000000000000000000000000000000000000000000000000000000000008e5", + "0x00000000000000000000000000000000000000000000000000000000000008e6", + "0x00000000000000000000000000000000000000000000000000000000000008e7", + "0x00000000000000000000000000000000000000000000000000000000000008e8", + "0x00000000000000000000000000000000000000000000000000000000000008e9", + "0x00000000000000000000000000000000000000000000000000000000000008ea", + "0x00000000000000000000000000000000000000000000000000000000000008eb", + "0x00000000000000000000000000000000000000000000000000000000000008ec", + "0x00000000000000000000000000000000000000000000000000000000000008ed", + "0x00000000000000000000000000000000000000000000000000000000000008ee", + "0x00000000000000000000000000000000000000000000000000000000000008ef", + "0x00000000000000000000000000000000000000000000000000000000000008f0", + "0x00000000000000000000000000000000000000000000000000000000000008f1", + "0x00000000000000000000000000000000000000000000000000000000000008f2", + "0x00000000000000000000000000000000000000000000000000000000000008f3", + "0x00000000000000000000000000000000000000000000000000000000000008f4", + "0x00000000000000000000000000000000000000000000000000000000000008f5", + "0x00000000000000000000000000000000000000000000000000000000000008f6", + "0x00000000000000000000000000000000000000000000000000000000000008f7", + "0x00000000000000000000000000000000000000000000000000000000000008f8", + "0x00000000000000000000000000000000000000000000000000000000000008f9", + "0x00000000000000000000000000000000000000000000000000000000000008fa", + "0x00000000000000000000000000000000000000000000000000000000000008fb", + "0x00000000000000000000000000000000000000000000000000000000000008fc", + "0x00000000000000000000000000000000000000000000000000000000000008fd", + "0x00000000000000000000000000000000000000000000000000000000000008fe", + "0x00000000000000000000000000000000000000000000000000000000000008ff", + "0x0000000000000000000000000000000000000000000000000000000000000900", + "0x0000000000000000000000000000000000000000000000000000000000000901", + "0x0000000000000000000000000000000000000000000000000000000000000902", + "0x0000000000000000000000000000000000000000000000000000000000000903", + "0x0000000000000000000000000000000000000000000000000000000000000904", + "0x0000000000000000000000000000000000000000000000000000000000000905", + "0x0000000000000000000000000000000000000000000000000000000000000906", + "0x0000000000000000000000000000000000000000000000000000000000000907", + "0x0000000000000000000000000000000000000000000000000000000000000908", + "0x0000000000000000000000000000000000000000000000000000000000000909", + "0x000000000000000000000000000000000000000000000000000000000000090a", + "0x000000000000000000000000000000000000000000000000000000000000090b", + "0x000000000000000000000000000000000000000000000000000000000000090c", + "0x000000000000000000000000000000000000000000000000000000000000090d", + "0x000000000000000000000000000000000000000000000000000000000000090e", + "0x000000000000000000000000000000000000000000000000000000000000090f", + "0x0000000000000000000000000000000000000000000000000000000000000910", + "0x0000000000000000000000000000000000000000000000000000000000000911", + "0x0000000000000000000000000000000000000000000000000000000000000912", + "0x0000000000000000000000000000000000000000000000000000000000000913", + "0x0000000000000000000000000000000000000000000000000000000000000914", + "0x0000000000000000000000000000000000000000000000000000000000000915", + "0x0000000000000000000000000000000000000000000000000000000000000916", + "0x0000000000000000000000000000000000000000000000000000000000000917", + "0x0000000000000000000000000000000000000000000000000000000000000918", + "0x0000000000000000000000000000000000000000000000000000000000000919", + "0x000000000000000000000000000000000000000000000000000000000000091a", + "0x000000000000000000000000000000000000000000000000000000000000091b", + "0x000000000000000000000000000000000000000000000000000000000000091c", + "0x000000000000000000000000000000000000000000000000000000000000091d", + "0x000000000000000000000000000000000000000000000000000000000000091e", + "0x000000000000000000000000000000000000000000000000000000000000091f", + "0x0000000000000000000000000000000000000000000000000000000000000920", + "0x0000000000000000000000000000000000000000000000000000000000000921", + "0x0000000000000000000000000000000000000000000000000000000000000922", + "0x0000000000000000000000000000000000000000000000000000000000000923", + "0x0000000000000000000000000000000000000000000000000000000000000924", + "0x0000000000000000000000000000000000000000000000000000000000000925", + "0x0000000000000000000000000000000000000000000000000000000000000926", + "0x0000000000000000000000000000000000000000000000000000000000000927", + "0x0000000000000000000000000000000000000000000000000000000000000928", + "0x0000000000000000000000000000000000000000000000000000000000000929", + "0x000000000000000000000000000000000000000000000000000000000000092a", + "0x000000000000000000000000000000000000000000000000000000000000092b", + "0x000000000000000000000000000000000000000000000000000000000000092c", + "0x000000000000000000000000000000000000000000000000000000000000092d", + "0x000000000000000000000000000000000000000000000000000000000000092e", + "0x000000000000000000000000000000000000000000000000000000000000092f", + "0x0000000000000000000000000000000000000000000000000000000000000930", + "0x0000000000000000000000000000000000000000000000000000000000000931", + "0x0000000000000000000000000000000000000000000000000000000000000932", + "0x0000000000000000000000000000000000000000000000000000000000000933", + "0x0000000000000000000000000000000000000000000000000000000000000934", + "0x0000000000000000000000000000000000000000000000000000000000000935", + "0x0000000000000000000000000000000000000000000000000000000000000936", + "0x0000000000000000000000000000000000000000000000000000000000000937", + "0x0000000000000000000000000000000000000000000000000000000000000938", + "0x0000000000000000000000000000000000000000000000000000000000000939", + "0x000000000000000000000000000000000000000000000000000000000000093a", + "0x000000000000000000000000000000000000000000000000000000000000093b", + "0x000000000000000000000000000000000000000000000000000000000000093c", + "0x000000000000000000000000000000000000000000000000000000000000093d", + "0x000000000000000000000000000000000000000000000000000000000000093e", + "0x000000000000000000000000000000000000000000000000000000000000093f", + "0x0000000000000000000000000000000000000000000000000000000000000940", + "0x0000000000000000000000000000000000000000000000000000000000000941", + "0x0000000000000000000000000000000000000000000000000000000000000942", + "0x0000000000000000000000000000000000000000000000000000000000000943", + "0x0000000000000000000000000000000000000000000000000000000000000944", + "0x0000000000000000000000000000000000000000000000000000000000000945", + "0x0000000000000000000000000000000000000000000000000000000000000946", + "0x0000000000000000000000000000000000000000000000000000000000000947", + "0x0000000000000000000000000000000000000000000000000000000000000948", + "0x0000000000000000000000000000000000000000000000000000000000000949", + "0x000000000000000000000000000000000000000000000000000000000000094a", + "0x000000000000000000000000000000000000000000000000000000000000094b", + "0x000000000000000000000000000000000000000000000000000000000000094c", + "0x000000000000000000000000000000000000000000000000000000000000094d", + "0x000000000000000000000000000000000000000000000000000000000000094e", + "0x000000000000000000000000000000000000000000000000000000000000094f", + "0x0000000000000000000000000000000000000000000000000000000000000950", + "0x0000000000000000000000000000000000000000000000000000000000000951", + "0x0000000000000000000000000000000000000000000000000000000000000952", + "0x0000000000000000000000000000000000000000000000000000000000000953", + "0x0000000000000000000000000000000000000000000000000000000000000954", + "0x0000000000000000000000000000000000000000000000000000000000000955", + "0x0000000000000000000000000000000000000000000000000000000000000956", + "0x0000000000000000000000000000000000000000000000000000000000000957", + "0x0000000000000000000000000000000000000000000000000000000000000958", + "0x0000000000000000000000000000000000000000000000000000000000000959", + "0x000000000000000000000000000000000000000000000000000000000000095a", + "0x000000000000000000000000000000000000000000000000000000000000095b", + "0x000000000000000000000000000000000000000000000000000000000000095c", + "0x000000000000000000000000000000000000000000000000000000000000095d", + "0x000000000000000000000000000000000000000000000000000000000000095e", + "0x000000000000000000000000000000000000000000000000000000000000095f", + "0x0000000000000000000000000000000000000000000000000000000000000960", + "0x0000000000000000000000000000000000000000000000000000000000000961", + "0x0000000000000000000000000000000000000000000000000000000000000962", + "0x0000000000000000000000000000000000000000000000000000000000000963", + "0x0000000000000000000000000000000000000000000000000000000000000964", + "0x0000000000000000000000000000000000000000000000000000000000000965", + "0x0000000000000000000000000000000000000000000000000000000000000966", + "0x0000000000000000000000000000000000000000000000000000000000000967", + "0x0000000000000000000000000000000000000000000000000000000000000968", + "0x0000000000000000000000000000000000000000000000000000000000000969", + "0x000000000000000000000000000000000000000000000000000000000000096a", + "0x000000000000000000000000000000000000000000000000000000000000096b", + "0x000000000000000000000000000000000000000000000000000000000000096c", + "0x000000000000000000000000000000000000000000000000000000000000096d", + "0x000000000000000000000000000000000000000000000000000000000000096e", + "0x000000000000000000000000000000000000000000000000000000000000096f", + "0x0000000000000000000000000000000000000000000000000000000000000970", + "0x0000000000000000000000000000000000000000000000000000000000000971", + "0x0000000000000000000000000000000000000000000000000000000000000972", + "0x0000000000000000000000000000000000000000000000000000000000000973", + "0x0000000000000000000000000000000000000000000000000000000000000974", + "0x0000000000000000000000000000000000000000000000000000000000000975", + "0x0000000000000000000000000000000000000000000000000000000000000976", + "0x0000000000000000000000000000000000000000000000000000000000000977", + "0x0000000000000000000000000000000000000000000000000000000000000978", + "0x0000000000000000000000000000000000000000000000000000000000000979", + "0x000000000000000000000000000000000000000000000000000000000000097a", + "0x000000000000000000000000000000000000000000000000000000000000097b", + "0x000000000000000000000000000000000000000000000000000000000000097c", + "0x000000000000000000000000000000000000000000000000000000000000097d", + "0x000000000000000000000000000000000000000000000000000000000000097e", + "0x000000000000000000000000000000000000000000000000000000000000097f", + "0x0000000000000000000000000000000000000000000000000000000000000980", + "0x0000000000000000000000000000000000000000000000000000000000000981", + "0x0000000000000000000000000000000000000000000000000000000000000982", + "0x0000000000000000000000000000000000000000000000000000000000000983", + "0x0000000000000000000000000000000000000000000000000000000000000984", + "0x0000000000000000000000000000000000000000000000000000000000000985", + "0x0000000000000000000000000000000000000000000000000000000000000986", + "0x0000000000000000000000000000000000000000000000000000000000000987", + "0x0000000000000000000000000000000000000000000000000000000000000988", + "0x0000000000000000000000000000000000000000000000000000000000000989", + "0x000000000000000000000000000000000000000000000000000000000000098a", + "0x000000000000000000000000000000000000000000000000000000000000098b", + "0x000000000000000000000000000000000000000000000000000000000000098c", + "0x000000000000000000000000000000000000000000000000000000000000098d", + "0x000000000000000000000000000000000000000000000000000000000000098e", + "0x000000000000000000000000000000000000000000000000000000000000098f", + "0x0000000000000000000000000000000000000000000000000000000000000990", + "0x0000000000000000000000000000000000000000000000000000000000000991", + "0x0000000000000000000000000000000000000000000000000000000000000992", + "0x0000000000000000000000000000000000000000000000000000000000000993", + "0x0000000000000000000000000000000000000000000000000000000000000994", + "0x0000000000000000000000000000000000000000000000000000000000000995", + "0x0000000000000000000000000000000000000000000000000000000000000996", + "0x0000000000000000000000000000000000000000000000000000000000000997", + "0x0000000000000000000000000000000000000000000000000000000000000998", + "0x0000000000000000000000000000000000000000000000000000000000000999", + "0x000000000000000000000000000000000000000000000000000000000000099a", + "0x000000000000000000000000000000000000000000000000000000000000099b", + "0x000000000000000000000000000000000000000000000000000000000000099c", + "0x000000000000000000000000000000000000000000000000000000000000099d", + "0x000000000000000000000000000000000000000000000000000000000000099e", + "0x000000000000000000000000000000000000000000000000000000000000099f", + "0x00000000000000000000000000000000000000000000000000000000000009a0", + "0x00000000000000000000000000000000000000000000000000000000000009a1", + "0x00000000000000000000000000000000000000000000000000000000000009a2", + "0x00000000000000000000000000000000000000000000000000000000000009a3", + "0x00000000000000000000000000000000000000000000000000000000000009a4", + "0x00000000000000000000000000000000000000000000000000000000000009a5", + "0x00000000000000000000000000000000000000000000000000000000000009a6", + "0x00000000000000000000000000000000000000000000000000000000000009a7", + "0x00000000000000000000000000000000000000000000000000000000000009a8", + "0x00000000000000000000000000000000000000000000000000000000000009a9", + "0x00000000000000000000000000000000000000000000000000000000000009aa", + "0x00000000000000000000000000000000000000000000000000000000000009ab", + "0x00000000000000000000000000000000000000000000000000000000000009ac", + "0x00000000000000000000000000000000000000000000000000000000000009ad", + "0x00000000000000000000000000000000000000000000000000000000000009ae", + "0x00000000000000000000000000000000000000000000000000000000000009af", + "0x00000000000000000000000000000000000000000000000000000000000009b0", + "0x00000000000000000000000000000000000000000000000000000000000009b1", + "0x00000000000000000000000000000000000000000000000000000000000009b2", + "0x00000000000000000000000000000000000000000000000000000000000009b3", + "0x00000000000000000000000000000000000000000000000000000000000009b4", + "0x00000000000000000000000000000000000000000000000000000000000009b5", + "0x00000000000000000000000000000000000000000000000000000000000009b6", + "0x00000000000000000000000000000000000000000000000000000000000009b7", + "0x00000000000000000000000000000000000000000000000000000000000009b8", + "0x00000000000000000000000000000000000000000000000000000000000009b9", + "0x00000000000000000000000000000000000000000000000000000000000009ba", + "0x00000000000000000000000000000000000000000000000000000000000009bb", + "0x00000000000000000000000000000000000000000000000000000000000009bc", + "0x00000000000000000000000000000000000000000000000000000000000009bd", + "0x00000000000000000000000000000000000000000000000000000000000009be", + "0x00000000000000000000000000000000000000000000000000000000000009bf", + "0x00000000000000000000000000000000000000000000000000000000000009c0", + "0x00000000000000000000000000000000000000000000000000000000000009c1", + "0x00000000000000000000000000000000000000000000000000000000000009c2", + "0x00000000000000000000000000000000000000000000000000000000000009c3", + "0x00000000000000000000000000000000000000000000000000000000000009c4", + "0x00000000000000000000000000000000000000000000000000000000000009c5", + "0x00000000000000000000000000000000000000000000000000000000000009c6", + "0x00000000000000000000000000000000000000000000000000000000000009c7", + "0x00000000000000000000000000000000000000000000000000000000000009c8", + "0x00000000000000000000000000000000000000000000000000000000000009c9", + "0x00000000000000000000000000000000000000000000000000000000000009ca", + "0x00000000000000000000000000000000000000000000000000000000000009cb", + "0x00000000000000000000000000000000000000000000000000000000000009cc", + "0x00000000000000000000000000000000000000000000000000000000000009cd", + "0x00000000000000000000000000000000000000000000000000000000000009ce", + "0x00000000000000000000000000000000000000000000000000000000000009cf", + "0x00000000000000000000000000000000000000000000000000000000000009d0", + "0x00000000000000000000000000000000000000000000000000000000000009d1", + "0x00000000000000000000000000000000000000000000000000000000000009d2", + "0x00000000000000000000000000000000000000000000000000000000000009d3", + "0x00000000000000000000000000000000000000000000000000000000000009d4", + "0x00000000000000000000000000000000000000000000000000000000000009d5", + "0x00000000000000000000000000000000000000000000000000000000000009d6", + "0x00000000000000000000000000000000000000000000000000000000000009d7", + "0x00000000000000000000000000000000000000000000000000000000000009d8", + "0x00000000000000000000000000000000000000000000000000000000000009d9", + "0x00000000000000000000000000000000000000000000000000000000000009da", + "0x00000000000000000000000000000000000000000000000000000000000009db" +] + num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" + num_real_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.previous_l1_to_l2] root = "0x0fef6d80d31109ddb56d6b3f607cbc9c0af0bff3ea0d43e8f278983c64c11f7a" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first/Prover.toml index aadf47009383..e5606c54742f 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-first/Prover.toml @@ -1,1031 +1,4 @@ [inputs] -l1_to_l2_messages = [ - "0x00000000000000000000000000000000000000000000000000000000000005dc", - "0x00000000000000000000000000000000000000000000000000000000000005dd", - "0x00000000000000000000000000000000000000000000000000000000000005de", - "0x00000000000000000000000000000000000000000000000000000000000005df", - "0x00000000000000000000000000000000000000000000000000000000000005e0", - "0x00000000000000000000000000000000000000000000000000000000000005e1", - "0x00000000000000000000000000000000000000000000000000000000000005e2", - "0x00000000000000000000000000000000000000000000000000000000000005e3", - "0x00000000000000000000000000000000000000000000000000000000000005e4", - "0x00000000000000000000000000000000000000000000000000000000000005e5", - "0x00000000000000000000000000000000000000000000000000000000000005e6", - "0x00000000000000000000000000000000000000000000000000000000000005e7", - "0x00000000000000000000000000000000000000000000000000000000000005e8", - "0x00000000000000000000000000000000000000000000000000000000000005e9", - "0x00000000000000000000000000000000000000000000000000000000000005ea", - "0x00000000000000000000000000000000000000000000000000000000000005eb", - "0x00000000000000000000000000000000000000000000000000000000000005ec", - "0x00000000000000000000000000000000000000000000000000000000000005ed", - "0x00000000000000000000000000000000000000000000000000000000000005ee", - "0x00000000000000000000000000000000000000000000000000000000000005ef", - "0x00000000000000000000000000000000000000000000000000000000000005f0", - "0x00000000000000000000000000000000000000000000000000000000000005f1", - "0x00000000000000000000000000000000000000000000000000000000000005f2", - "0x00000000000000000000000000000000000000000000000000000000000005f3", - "0x00000000000000000000000000000000000000000000000000000000000005f4", - "0x00000000000000000000000000000000000000000000000000000000000005f5", - "0x00000000000000000000000000000000000000000000000000000000000005f6", - "0x00000000000000000000000000000000000000000000000000000000000005f7", - "0x00000000000000000000000000000000000000000000000000000000000005f8", - "0x00000000000000000000000000000000000000000000000000000000000005f9", - "0x00000000000000000000000000000000000000000000000000000000000005fa", - "0x00000000000000000000000000000000000000000000000000000000000005fb", - "0x00000000000000000000000000000000000000000000000000000000000005fc", - "0x00000000000000000000000000000000000000000000000000000000000005fd", - "0x00000000000000000000000000000000000000000000000000000000000005fe", - "0x00000000000000000000000000000000000000000000000000000000000005ff", - "0x0000000000000000000000000000000000000000000000000000000000000600", - "0x0000000000000000000000000000000000000000000000000000000000000601", - "0x0000000000000000000000000000000000000000000000000000000000000602", - "0x0000000000000000000000000000000000000000000000000000000000000603", - "0x0000000000000000000000000000000000000000000000000000000000000604", - "0x0000000000000000000000000000000000000000000000000000000000000605", - "0x0000000000000000000000000000000000000000000000000000000000000606", - "0x0000000000000000000000000000000000000000000000000000000000000607", - "0x0000000000000000000000000000000000000000000000000000000000000608", - "0x0000000000000000000000000000000000000000000000000000000000000609", - "0x000000000000000000000000000000000000000000000000000000000000060a", - "0x000000000000000000000000000000000000000000000000000000000000060b", - "0x000000000000000000000000000000000000000000000000000000000000060c", - "0x000000000000000000000000000000000000000000000000000000000000060d", - "0x000000000000000000000000000000000000000000000000000000000000060e", - "0x000000000000000000000000000000000000000000000000000000000000060f", - "0x0000000000000000000000000000000000000000000000000000000000000610", - "0x0000000000000000000000000000000000000000000000000000000000000611", - "0x0000000000000000000000000000000000000000000000000000000000000612", - "0x0000000000000000000000000000000000000000000000000000000000000613", - "0x0000000000000000000000000000000000000000000000000000000000000614", - "0x0000000000000000000000000000000000000000000000000000000000000615", - "0x0000000000000000000000000000000000000000000000000000000000000616", - "0x0000000000000000000000000000000000000000000000000000000000000617", - "0x0000000000000000000000000000000000000000000000000000000000000618", - "0x0000000000000000000000000000000000000000000000000000000000000619", - "0x000000000000000000000000000000000000000000000000000000000000061a", - "0x000000000000000000000000000000000000000000000000000000000000061b", - "0x000000000000000000000000000000000000000000000000000000000000061c", - "0x000000000000000000000000000000000000000000000000000000000000061d", - "0x000000000000000000000000000000000000000000000000000000000000061e", - "0x000000000000000000000000000000000000000000000000000000000000061f", - "0x0000000000000000000000000000000000000000000000000000000000000620", - "0x0000000000000000000000000000000000000000000000000000000000000621", - "0x0000000000000000000000000000000000000000000000000000000000000622", - "0x0000000000000000000000000000000000000000000000000000000000000623", - "0x0000000000000000000000000000000000000000000000000000000000000624", - "0x0000000000000000000000000000000000000000000000000000000000000625", - "0x0000000000000000000000000000000000000000000000000000000000000626", - "0x0000000000000000000000000000000000000000000000000000000000000627", - "0x0000000000000000000000000000000000000000000000000000000000000628", - "0x0000000000000000000000000000000000000000000000000000000000000629", - "0x000000000000000000000000000000000000000000000000000000000000062a", - "0x000000000000000000000000000000000000000000000000000000000000062b", - "0x000000000000000000000000000000000000000000000000000000000000062c", - "0x000000000000000000000000000000000000000000000000000000000000062d", - "0x000000000000000000000000000000000000000000000000000000000000062e", - "0x000000000000000000000000000000000000000000000000000000000000062f", - "0x0000000000000000000000000000000000000000000000000000000000000630", - "0x0000000000000000000000000000000000000000000000000000000000000631", - "0x0000000000000000000000000000000000000000000000000000000000000632", - "0x0000000000000000000000000000000000000000000000000000000000000633", - "0x0000000000000000000000000000000000000000000000000000000000000634", - "0x0000000000000000000000000000000000000000000000000000000000000635", - "0x0000000000000000000000000000000000000000000000000000000000000636", - "0x0000000000000000000000000000000000000000000000000000000000000637", - "0x0000000000000000000000000000000000000000000000000000000000000638", - "0x0000000000000000000000000000000000000000000000000000000000000639", - "0x000000000000000000000000000000000000000000000000000000000000063a", - "0x000000000000000000000000000000000000000000000000000000000000063b", - "0x000000000000000000000000000000000000000000000000000000000000063c", - "0x000000000000000000000000000000000000000000000000000000000000063d", - "0x000000000000000000000000000000000000000000000000000000000000063e", - "0x000000000000000000000000000000000000000000000000000000000000063f", - "0x0000000000000000000000000000000000000000000000000000000000000640", - "0x0000000000000000000000000000000000000000000000000000000000000641", - "0x0000000000000000000000000000000000000000000000000000000000000642", - "0x0000000000000000000000000000000000000000000000000000000000000643", - "0x0000000000000000000000000000000000000000000000000000000000000644", - "0x0000000000000000000000000000000000000000000000000000000000000645", - "0x0000000000000000000000000000000000000000000000000000000000000646", - "0x0000000000000000000000000000000000000000000000000000000000000647", - "0x0000000000000000000000000000000000000000000000000000000000000648", - "0x0000000000000000000000000000000000000000000000000000000000000649", - "0x000000000000000000000000000000000000000000000000000000000000064a", - "0x000000000000000000000000000000000000000000000000000000000000064b", - "0x000000000000000000000000000000000000000000000000000000000000064c", - "0x000000000000000000000000000000000000000000000000000000000000064d", - "0x000000000000000000000000000000000000000000000000000000000000064e", - "0x000000000000000000000000000000000000000000000000000000000000064f", - "0x0000000000000000000000000000000000000000000000000000000000000650", - "0x0000000000000000000000000000000000000000000000000000000000000651", - "0x0000000000000000000000000000000000000000000000000000000000000652", - "0x0000000000000000000000000000000000000000000000000000000000000653", - "0x0000000000000000000000000000000000000000000000000000000000000654", - "0x0000000000000000000000000000000000000000000000000000000000000655", - "0x0000000000000000000000000000000000000000000000000000000000000656", - "0x0000000000000000000000000000000000000000000000000000000000000657", - "0x0000000000000000000000000000000000000000000000000000000000000658", - "0x0000000000000000000000000000000000000000000000000000000000000659", - "0x000000000000000000000000000000000000000000000000000000000000065a", - "0x000000000000000000000000000000000000000000000000000000000000065b", - "0x000000000000000000000000000000000000000000000000000000000000065c", - "0x000000000000000000000000000000000000000000000000000000000000065d", - "0x000000000000000000000000000000000000000000000000000000000000065e", - "0x000000000000000000000000000000000000000000000000000000000000065f", - "0x0000000000000000000000000000000000000000000000000000000000000660", - "0x0000000000000000000000000000000000000000000000000000000000000661", - "0x0000000000000000000000000000000000000000000000000000000000000662", - "0x0000000000000000000000000000000000000000000000000000000000000663", - "0x0000000000000000000000000000000000000000000000000000000000000664", - "0x0000000000000000000000000000000000000000000000000000000000000665", - "0x0000000000000000000000000000000000000000000000000000000000000666", - "0x0000000000000000000000000000000000000000000000000000000000000667", - "0x0000000000000000000000000000000000000000000000000000000000000668", - "0x0000000000000000000000000000000000000000000000000000000000000669", - "0x000000000000000000000000000000000000000000000000000000000000066a", - "0x000000000000000000000000000000000000000000000000000000000000066b", - "0x000000000000000000000000000000000000000000000000000000000000066c", - "0x000000000000000000000000000000000000000000000000000000000000066d", - "0x000000000000000000000000000000000000000000000000000000000000066e", - "0x000000000000000000000000000000000000000000000000000000000000066f", - "0x0000000000000000000000000000000000000000000000000000000000000670", - "0x0000000000000000000000000000000000000000000000000000000000000671", - "0x0000000000000000000000000000000000000000000000000000000000000672", - "0x0000000000000000000000000000000000000000000000000000000000000673", - "0x0000000000000000000000000000000000000000000000000000000000000674", - "0x0000000000000000000000000000000000000000000000000000000000000675", - "0x0000000000000000000000000000000000000000000000000000000000000676", - "0x0000000000000000000000000000000000000000000000000000000000000677", - "0x0000000000000000000000000000000000000000000000000000000000000678", - "0x0000000000000000000000000000000000000000000000000000000000000679", - "0x000000000000000000000000000000000000000000000000000000000000067a", - "0x000000000000000000000000000000000000000000000000000000000000067b", - "0x000000000000000000000000000000000000000000000000000000000000067c", - "0x000000000000000000000000000000000000000000000000000000000000067d", - "0x000000000000000000000000000000000000000000000000000000000000067e", - "0x000000000000000000000000000000000000000000000000000000000000067f", - "0x0000000000000000000000000000000000000000000000000000000000000680", - "0x0000000000000000000000000000000000000000000000000000000000000681", - "0x0000000000000000000000000000000000000000000000000000000000000682", - "0x0000000000000000000000000000000000000000000000000000000000000683", - "0x0000000000000000000000000000000000000000000000000000000000000684", - "0x0000000000000000000000000000000000000000000000000000000000000685", - "0x0000000000000000000000000000000000000000000000000000000000000686", - "0x0000000000000000000000000000000000000000000000000000000000000687", - "0x0000000000000000000000000000000000000000000000000000000000000688", - "0x0000000000000000000000000000000000000000000000000000000000000689", - "0x000000000000000000000000000000000000000000000000000000000000068a", - "0x000000000000000000000000000000000000000000000000000000000000068b", - "0x000000000000000000000000000000000000000000000000000000000000068c", - "0x000000000000000000000000000000000000000000000000000000000000068d", - "0x000000000000000000000000000000000000000000000000000000000000068e", - "0x000000000000000000000000000000000000000000000000000000000000068f", - "0x0000000000000000000000000000000000000000000000000000000000000690", - "0x0000000000000000000000000000000000000000000000000000000000000691", - "0x0000000000000000000000000000000000000000000000000000000000000692", - "0x0000000000000000000000000000000000000000000000000000000000000693", - "0x0000000000000000000000000000000000000000000000000000000000000694", - "0x0000000000000000000000000000000000000000000000000000000000000695", - "0x0000000000000000000000000000000000000000000000000000000000000696", - "0x0000000000000000000000000000000000000000000000000000000000000697", - "0x0000000000000000000000000000000000000000000000000000000000000698", - "0x0000000000000000000000000000000000000000000000000000000000000699", - "0x000000000000000000000000000000000000000000000000000000000000069a", - "0x000000000000000000000000000000000000000000000000000000000000069b", - "0x000000000000000000000000000000000000000000000000000000000000069c", - "0x000000000000000000000000000000000000000000000000000000000000069d", - "0x000000000000000000000000000000000000000000000000000000000000069e", - "0x000000000000000000000000000000000000000000000000000000000000069f", - "0x00000000000000000000000000000000000000000000000000000000000006a0", - "0x00000000000000000000000000000000000000000000000000000000000006a1", - "0x00000000000000000000000000000000000000000000000000000000000006a2", - "0x00000000000000000000000000000000000000000000000000000000000006a3", - "0x00000000000000000000000000000000000000000000000000000000000006a4", - "0x00000000000000000000000000000000000000000000000000000000000006a5", - "0x00000000000000000000000000000000000000000000000000000000000006a6", - "0x00000000000000000000000000000000000000000000000000000000000006a7", - "0x00000000000000000000000000000000000000000000000000000000000006a8", - "0x00000000000000000000000000000000000000000000000000000000000006a9", - "0x00000000000000000000000000000000000000000000000000000000000006aa", - "0x00000000000000000000000000000000000000000000000000000000000006ab", - "0x00000000000000000000000000000000000000000000000000000000000006ac", - "0x00000000000000000000000000000000000000000000000000000000000006ad", - "0x00000000000000000000000000000000000000000000000000000000000006ae", - "0x00000000000000000000000000000000000000000000000000000000000006af", - "0x00000000000000000000000000000000000000000000000000000000000006b0", - "0x00000000000000000000000000000000000000000000000000000000000006b1", - "0x00000000000000000000000000000000000000000000000000000000000006b2", - "0x00000000000000000000000000000000000000000000000000000000000006b3", - "0x00000000000000000000000000000000000000000000000000000000000006b4", - "0x00000000000000000000000000000000000000000000000000000000000006b5", - "0x00000000000000000000000000000000000000000000000000000000000006b6", - "0x00000000000000000000000000000000000000000000000000000000000006b7", - "0x00000000000000000000000000000000000000000000000000000000000006b8", - "0x00000000000000000000000000000000000000000000000000000000000006b9", - "0x00000000000000000000000000000000000000000000000000000000000006ba", - "0x00000000000000000000000000000000000000000000000000000000000006bb", - "0x00000000000000000000000000000000000000000000000000000000000006bc", - "0x00000000000000000000000000000000000000000000000000000000000006bd", - "0x00000000000000000000000000000000000000000000000000000000000006be", - "0x00000000000000000000000000000000000000000000000000000000000006bf", - "0x00000000000000000000000000000000000000000000000000000000000006c0", - "0x00000000000000000000000000000000000000000000000000000000000006c1", - "0x00000000000000000000000000000000000000000000000000000000000006c2", - "0x00000000000000000000000000000000000000000000000000000000000006c3", - "0x00000000000000000000000000000000000000000000000000000000000006c4", - "0x00000000000000000000000000000000000000000000000000000000000006c5", - "0x00000000000000000000000000000000000000000000000000000000000006c6", - "0x00000000000000000000000000000000000000000000000000000000000006c7", - "0x00000000000000000000000000000000000000000000000000000000000006c8", - "0x00000000000000000000000000000000000000000000000000000000000006c9", - "0x00000000000000000000000000000000000000000000000000000000000006ca", - "0x00000000000000000000000000000000000000000000000000000000000006cb", - "0x00000000000000000000000000000000000000000000000000000000000006cc", - "0x00000000000000000000000000000000000000000000000000000000000006cd", - "0x00000000000000000000000000000000000000000000000000000000000006ce", - "0x00000000000000000000000000000000000000000000000000000000000006cf", - "0x00000000000000000000000000000000000000000000000000000000000006d0", - "0x00000000000000000000000000000000000000000000000000000000000006d1", - "0x00000000000000000000000000000000000000000000000000000000000006d2", - "0x00000000000000000000000000000000000000000000000000000000000006d3", - "0x00000000000000000000000000000000000000000000000000000000000006d4", - "0x00000000000000000000000000000000000000000000000000000000000006d5", - "0x00000000000000000000000000000000000000000000000000000000000006d6", - "0x00000000000000000000000000000000000000000000000000000000000006d7", - "0x00000000000000000000000000000000000000000000000000000000000006d8", - "0x00000000000000000000000000000000000000000000000000000000000006d9", - "0x00000000000000000000000000000000000000000000000000000000000006da", - "0x00000000000000000000000000000000000000000000000000000000000006db", - "0x00000000000000000000000000000000000000000000000000000000000006dc", - "0x00000000000000000000000000000000000000000000000000000000000006dd", - "0x00000000000000000000000000000000000000000000000000000000000006de", - "0x00000000000000000000000000000000000000000000000000000000000006df", - "0x00000000000000000000000000000000000000000000000000000000000006e0", - "0x00000000000000000000000000000000000000000000000000000000000006e1", - "0x00000000000000000000000000000000000000000000000000000000000006e2", - "0x00000000000000000000000000000000000000000000000000000000000006e3", - "0x00000000000000000000000000000000000000000000000000000000000006e4", - "0x00000000000000000000000000000000000000000000000000000000000006e5", - "0x00000000000000000000000000000000000000000000000000000000000006e6", - "0x00000000000000000000000000000000000000000000000000000000000006e7", - "0x00000000000000000000000000000000000000000000000000000000000006e8", - "0x00000000000000000000000000000000000000000000000000000000000006e9", - "0x00000000000000000000000000000000000000000000000000000000000006ea", - "0x00000000000000000000000000000000000000000000000000000000000006eb", - "0x00000000000000000000000000000000000000000000000000000000000006ec", - "0x00000000000000000000000000000000000000000000000000000000000006ed", - "0x00000000000000000000000000000000000000000000000000000000000006ee", - "0x00000000000000000000000000000000000000000000000000000000000006ef", - "0x00000000000000000000000000000000000000000000000000000000000006f0", - "0x00000000000000000000000000000000000000000000000000000000000006f1", - "0x00000000000000000000000000000000000000000000000000000000000006f2", - "0x00000000000000000000000000000000000000000000000000000000000006f3", - "0x00000000000000000000000000000000000000000000000000000000000006f4", - "0x00000000000000000000000000000000000000000000000000000000000006f5", - "0x00000000000000000000000000000000000000000000000000000000000006f6", - "0x00000000000000000000000000000000000000000000000000000000000006f7", - "0x00000000000000000000000000000000000000000000000000000000000006f8", - "0x00000000000000000000000000000000000000000000000000000000000006f9", - "0x00000000000000000000000000000000000000000000000000000000000006fa", - "0x00000000000000000000000000000000000000000000000000000000000006fb", - "0x00000000000000000000000000000000000000000000000000000000000006fc", - "0x00000000000000000000000000000000000000000000000000000000000006fd", - "0x00000000000000000000000000000000000000000000000000000000000006fe", - "0x00000000000000000000000000000000000000000000000000000000000006ff", - "0x0000000000000000000000000000000000000000000000000000000000000700", - "0x0000000000000000000000000000000000000000000000000000000000000701", - "0x0000000000000000000000000000000000000000000000000000000000000702", - "0x0000000000000000000000000000000000000000000000000000000000000703", - "0x0000000000000000000000000000000000000000000000000000000000000704", - "0x0000000000000000000000000000000000000000000000000000000000000705", - "0x0000000000000000000000000000000000000000000000000000000000000706", - "0x0000000000000000000000000000000000000000000000000000000000000707", - "0x0000000000000000000000000000000000000000000000000000000000000708", - "0x0000000000000000000000000000000000000000000000000000000000000709", - "0x000000000000000000000000000000000000000000000000000000000000070a", - "0x000000000000000000000000000000000000000000000000000000000000070b", - "0x000000000000000000000000000000000000000000000000000000000000070c", - "0x000000000000000000000000000000000000000000000000000000000000070d", - "0x000000000000000000000000000000000000000000000000000000000000070e", - "0x000000000000000000000000000000000000000000000000000000000000070f", - "0x0000000000000000000000000000000000000000000000000000000000000710", - "0x0000000000000000000000000000000000000000000000000000000000000711", - "0x0000000000000000000000000000000000000000000000000000000000000712", - "0x0000000000000000000000000000000000000000000000000000000000000713", - "0x0000000000000000000000000000000000000000000000000000000000000714", - "0x0000000000000000000000000000000000000000000000000000000000000715", - "0x0000000000000000000000000000000000000000000000000000000000000716", - "0x0000000000000000000000000000000000000000000000000000000000000717", - "0x0000000000000000000000000000000000000000000000000000000000000718", - "0x0000000000000000000000000000000000000000000000000000000000000719", - "0x000000000000000000000000000000000000000000000000000000000000071a", - "0x000000000000000000000000000000000000000000000000000000000000071b", - "0x000000000000000000000000000000000000000000000000000000000000071c", - "0x000000000000000000000000000000000000000000000000000000000000071d", - "0x000000000000000000000000000000000000000000000000000000000000071e", - "0x000000000000000000000000000000000000000000000000000000000000071f", - "0x0000000000000000000000000000000000000000000000000000000000000720", - "0x0000000000000000000000000000000000000000000000000000000000000721", - "0x0000000000000000000000000000000000000000000000000000000000000722", - "0x0000000000000000000000000000000000000000000000000000000000000723", - "0x0000000000000000000000000000000000000000000000000000000000000724", - "0x0000000000000000000000000000000000000000000000000000000000000725", - "0x0000000000000000000000000000000000000000000000000000000000000726", - "0x0000000000000000000000000000000000000000000000000000000000000727", - "0x0000000000000000000000000000000000000000000000000000000000000728", - "0x0000000000000000000000000000000000000000000000000000000000000729", - "0x000000000000000000000000000000000000000000000000000000000000072a", - "0x000000000000000000000000000000000000000000000000000000000000072b", - "0x000000000000000000000000000000000000000000000000000000000000072c", - "0x000000000000000000000000000000000000000000000000000000000000072d", - "0x000000000000000000000000000000000000000000000000000000000000072e", - "0x000000000000000000000000000000000000000000000000000000000000072f", - "0x0000000000000000000000000000000000000000000000000000000000000730", - "0x0000000000000000000000000000000000000000000000000000000000000731", - "0x0000000000000000000000000000000000000000000000000000000000000732", - "0x0000000000000000000000000000000000000000000000000000000000000733", - "0x0000000000000000000000000000000000000000000000000000000000000734", - "0x0000000000000000000000000000000000000000000000000000000000000735", - "0x0000000000000000000000000000000000000000000000000000000000000736", - "0x0000000000000000000000000000000000000000000000000000000000000737", - "0x0000000000000000000000000000000000000000000000000000000000000738", - "0x0000000000000000000000000000000000000000000000000000000000000739", - "0x000000000000000000000000000000000000000000000000000000000000073a", - "0x000000000000000000000000000000000000000000000000000000000000073b", - "0x000000000000000000000000000000000000000000000000000000000000073c", - "0x000000000000000000000000000000000000000000000000000000000000073d", - "0x000000000000000000000000000000000000000000000000000000000000073e", - "0x000000000000000000000000000000000000000000000000000000000000073f", - "0x0000000000000000000000000000000000000000000000000000000000000740", - "0x0000000000000000000000000000000000000000000000000000000000000741", - "0x0000000000000000000000000000000000000000000000000000000000000742", - "0x0000000000000000000000000000000000000000000000000000000000000743", - "0x0000000000000000000000000000000000000000000000000000000000000744", - "0x0000000000000000000000000000000000000000000000000000000000000745", - "0x0000000000000000000000000000000000000000000000000000000000000746", - "0x0000000000000000000000000000000000000000000000000000000000000747", - "0x0000000000000000000000000000000000000000000000000000000000000748", - "0x0000000000000000000000000000000000000000000000000000000000000749", - "0x000000000000000000000000000000000000000000000000000000000000074a", - "0x000000000000000000000000000000000000000000000000000000000000074b", - "0x000000000000000000000000000000000000000000000000000000000000074c", - "0x000000000000000000000000000000000000000000000000000000000000074d", - "0x000000000000000000000000000000000000000000000000000000000000074e", - "0x000000000000000000000000000000000000000000000000000000000000074f", - "0x0000000000000000000000000000000000000000000000000000000000000750", - "0x0000000000000000000000000000000000000000000000000000000000000751", - "0x0000000000000000000000000000000000000000000000000000000000000752", - "0x0000000000000000000000000000000000000000000000000000000000000753", - "0x0000000000000000000000000000000000000000000000000000000000000754", - "0x0000000000000000000000000000000000000000000000000000000000000755", - "0x0000000000000000000000000000000000000000000000000000000000000756", - "0x0000000000000000000000000000000000000000000000000000000000000757", - "0x0000000000000000000000000000000000000000000000000000000000000758", - "0x0000000000000000000000000000000000000000000000000000000000000759", - "0x000000000000000000000000000000000000000000000000000000000000075a", - "0x000000000000000000000000000000000000000000000000000000000000075b", - "0x000000000000000000000000000000000000000000000000000000000000075c", - "0x000000000000000000000000000000000000000000000000000000000000075d", - "0x000000000000000000000000000000000000000000000000000000000000075e", - "0x000000000000000000000000000000000000000000000000000000000000075f", - "0x0000000000000000000000000000000000000000000000000000000000000760", - "0x0000000000000000000000000000000000000000000000000000000000000761", - "0x0000000000000000000000000000000000000000000000000000000000000762", - "0x0000000000000000000000000000000000000000000000000000000000000763", - "0x0000000000000000000000000000000000000000000000000000000000000764", - "0x0000000000000000000000000000000000000000000000000000000000000765", - "0x0000000000000000000000000000000000000000000000000000000000000766", - "0x0000000000000000000000000000000000000000000000000000000000000767", - "0x0000000000000000000000000000000000000000000000000000000000000768", - "0x0000000000000000000000000000000000000000000000000000000000000769", - "0x000000000000000000000000000000000000000000000000000000000000076a", - "0x000000000000000000000000000000000000000000000000000000000000076b", - "0x000000000000000000000000000000000000000000000000000000000000076c", - "0x000000000000000000000000000000000000000000000000000000000000076d", - "0x000000000000000000000000000000000000000000000000000000000000076e", - "0x000000000000000000000000000000000000000000000000000000000000076f", - "0x0000000000000000000000000000000000000000000000000000000000000770", - "0x0000000000000000000000000000000000000000000000000000000000000771", - "0x0000000000000000000000000000000000000000000000000000000000000772", - "0x0000000000000000000000000000000000000000000000000000000000000773", - "0x0000000000000000000000000000000000000000000000000000000000000774", - "0x0000000000000000000000000000000000000000000000000000000000000775", - "0x0000000000000000000000000000000000000000000000000000000000000776", - "0x0000000000000000000000000000000000000000000000000000000000000777", - "0x0000000000000000000000000000000000000000000000000000000000000778", - "0x0000000000000000000000000000000000000000000000000000000000000779", - "0x000000000000000000000000000000000000000000000000000000000000077a", - "0x000000000000000000000000000000000000000000000000000000000000077b", - "0x000000000000000000000000000000000000000000000000000000000000077c", - "0x000000000000000000000000000000000000000000000000000000000000077d", - "0x000000000000000000000000000000000000000000000000000000000000077e", - "0x000000000000000000000000000000000000000000000000000000000000077f", - "0x0000000000000000000000000000000000000000000000000000000000000780", - "0x0000000000000000000000000000000000000000000000000000000000000781", - "0x0000000000000000000000000000000000000000000000000000000000000782", - "0x0000000000000000000000000000000000000000000000000000000000000783", - "0x0000000000000000000000000000000000000000000000000000000000000784", - "0x0000000000000000000000000000000000000000000000000000000000000785", - "0x0000000000000000000000000000000000000000000000000000000000000786", - "0x0000000000000000000000000000000000000000000000000000000000000787", - "0x0000000000000000000000000000000000000000000000000000000000000788", - "0x0000000000000000000000000000000000000000000000000000000000000789", - "0x000000000000000000000000000000000000000000000000000000000000078a", - "0x000000000000000000000000000000000000000000000000000000000000078b", - "0x000000000000000000000000000000000000000000000000000000000000078c", - "0x000000000000000000000000000000000000000000000000000000000000078d", - "0x000000000000000000000000000000000000000000000000000000000000078e", - "0x000000000000000000000000000000000000000000000000000000000000078f", - "0x0000000000000000000000000000000000000000000000000000000000000790", - "0x0000000000000000000000000000000000000000000000000000000000000791", - "0x0000000000000000000000000000000000000000000000000000000000000792", - "0x0000000000000000000000000000000000000000000000000000000000000793", - "0x0000000000000000000000000000000000000000000000000000000000000794", - "0x0000000000000000000000000000000000000000000000000000000000000795", - "0x0000000000000000000000000000000000000000000000000000000000000796", - "0x0000000000000000000000000000000000000000000000000000000000000797", - "0x0000000000000000000000000000000000000000000000000000000000000798", - "0x0000000000000000000000000000000000000000000000000000000000000799", - "0x000000000000000000000000000000000000000000000000000000000000079a", - "0x000000000000000000000000000000000000000000000000000000000000079b", - "0x000000000000000000000000000000000000000000000000000000000000079c", - "0x000000000000000000000000000000000000000000000000000000000000079d", - "0x000000000000000000000000000000000000000000000000000000000000079e", - "0x000000000000000000000000000000000000000000000000000000000000079f", - "0x00000000000000000000000000000000000000000000000000000000000007a0", - "0x00000000000000000000000000000000000000000000000000000000000007a1", - "0x00000000000000000000000000000000000000000000000000000000000007a2", - "0x00000000000000000000000000000000000000000000000000000000000007a3", - "0x00000000000000000000000000000000000000000000000000000000000007a4", - "0x00000000000000000000000000000000000000000000000000000000000007a5", - "0x00000000000000000000000000000000000000000000000000000000000007a6", - "0x00000000000000000000000000000000000000000000000000000000000007a7", - "0x00000000000000000000000000000000000000000000000000000000000007a8", - "0x00000000000000000000000000000000000000000000000000000000000007a9", - "0x00000000000000000000000000000000000000000000000000000000000007aa", - "0x00000000000000000000000000000000000000000000000000000000000007ab", - "0x00000000000000000000000000000000000000000000000000000000000007ac", - "0x00000000000000000000000000000000000000000000000000000000000007ad", - "0x00000000000000000000000000000000000000000000000000000000000007ae", - "0x00000000000000000000000000000000000000000000000000000000000007af", - "0x00000000000000000000000000000000000000000000000000000000000007b0", - "0x00000000000000000000000000000000000000000000000000000000000007b1", - "0x00000000000000000000000000000000000000000000000000000000000007b2", - "0x00000000000000000000000000000000000000000000000000000000000007b3", - "0x00000000000000000000000000000000000000000000000000000000000007b4", - "0x00000000000000000000000000000000000000000000000000000000000007b5", - "0x00000000000000000000000000000000000000000000000000000000000007b6", - "0x00000000000000000000000000000000000000000000000000000000000007b7", - "0x00000000000000000000000000000000000000000000000000000000000007b8", - "0x00000000000000000000000000000000000000000000000000000000000007b9", - "0x00000000000000000000000000000000000000000000000000000000000007ba", - "0x00000000000000000000000000000000000000000000000000000000000007bb", - "0x00000000000000000000000000000000000000000000000000000000000007bc", - "0x00000000000000000000000000000000000000000000000000000000000007bd", - "0x00000000000000000000000000000000000000000000000000000000000007be", - "0x00000000000000000000000000000000000000000000000000000000000007bf", - "0x00000000000000000000000000000000000000000000000000000000000007c0", - "0x00000000000000000000000000000000000000000000000000000000000007c1", - "0x00000000000000000000000000000000000000000000000000000000000007c2", - "0x00000000000000000000000000000000000000000000000000000000000007c3", - "0x00000000000000000000000000000000000000000000000000000000000007c4", - "0x00000000000000000000000000000000000000000000000000000000000007c5", - "0x00000000000000000000000000000000000000000000000000000000000007c6", - "0x00000000000000000000000000000000000000000000000000000000000007c7", - "0x00000000000000000000000000000000000000000000000000000000000007c8", - "0x00000000000000000000000000000000000000000000000000000000000007c9", - "0x00000000000000000000000000000000000000000000000000000000000007ca", - "0x00000000000000000000000000000000000000000000000000000000000007cb", - "0x00000000000000000000000000000000000000000000000000000000000007cc", - "0x00000000000000000000000000000000000000000000000000000000000007cd", - "0x00000000000000000000000000000000000000000000000000000000000007ce", - "0x00000000000000000000000000000000000000000000000000000000000007cf", - "0x00000000000000000000000000000000000000000000000000000000000007d0", - "0x00000000000000000000000000000000000000000000000000000000000007d1", - "0x00000000000000000000000000000000000000000000000000000000000007d2", - "0x00000000000000000000000000000000000000000000000000000000000007d3", - "0x00000000000000000000000000000000000000000000000000000000000007d4", - "0x00000000000000000000000000000000000000000000000000000000000007d5", - "0x00000000000000000000000000000000000000000000000000000000000007d6", - "0x00000000000000000000000000000000000000000000000000000000000007d7", - "0x00000000000000000000000000000000000000000000000000000000000007d8", - "0x00000000000000000000000000000000000000000000000000000000000007d9", - "0x00000000000000000000000000000000000000000000000000000000000007da", - "0x00000000000000000000000000000000000000000000000000000000000007db", - "0x00000000000000000000000000000000000000000000000000000000000007dc", - "0x00000000000000000000000000000000000000000000000000000000000007dd", - "0x00000000000000000000000000000000000000000000000000000000000007de", - "0x00000000000000000000000000000000000000000000000000000000000007df", - "0x00000000000000000000000000000000000000000000000000000000000007e0", - "0x00000000000000000000000000000000000000000000000000000000000007e1", - "0x00000000000000000000000000000000000000000000000000000000000007e2", - "0x00000000000000000000000000000000000000000000000000000000000007e3", - "0x00000000000000000000000000000000000000000000000000000000000007e4", - "0x00000000000000000000000000000000000000000000000000000000000007e5", - "0x00000000000000000000000000000000000000000000000000000000000007e6", - "0x00000000000000000000000000000000000000000000000000000000000007e7", - "0x00000000000000000000000000000000000000000000000000000000000007e8", - "0x00000000000000000000000000000000000000000000000000000000000007e9", - "0x00000000000000000000000000000000000000000000000000000000000007ea", - "0x00000000000000000000000000000000000000000000000000000000000007eb", - "0x00000000000000000000000000000000000000000000000000000000000007ec", - "0x00000000000000000000000000000000000000000000000000000000000007ed", - "0x00000000000000000000000000000000000000000000000000000000000007ee", - "0x00000000000000000000000000000000000000000000000000000000000007ef", - "0x00000000000000000000000000000000000000000000000000000000000007f0", - "0x00000000000000000000000000000000000000000000000000000000000007f1", - "0x00000000000000000000000000000000000000000000000000000000000007f2", - "0x00000000000000000000000000000000000000000000000000000000000007f3", - "0x00000000000000000000000000000000000000000000000000000000000007f4", - "0x00000000000000000000000000000000000000000000000000000000000007f5", - "0x00000000000000000000000000000000000000000000000000000000000007f6", - "0x00000000000000000000000000000000000000000000000000000000000007f7", - "0x00000000000000000000000000000000000000000000000000000000000007f8", - "0x00000000000000000000000000000000000000000000000000000000000007f9", - "0x00000000000000000000000000000000000000000000000000000000000007fa", - "0x00000000000000000000000000000000000000000000000000000000000007fb", - "0x00000000000000000000000000000000000000000000000000000000000007fc", - "0x00000000000000000000000000000000000000000000000000000000000007fd", - "0x00000000000000000000000000000000000000000000000000000000000007fe", - "0x00000000000000000000000000000000000000000000000000000000000007ff", - "0x0000000000000000000000000000000000000000000000000000000000000800", - "0x0000000000000000000000000000000000000000000000000000000000000801", - "0x0000000000000000000000000000000000000000000000000000000000000802", - "0x0000000000000000000000000000000000000000000000000000000000000803", - "0x0000000000000000000000000000000000000000000000000000000000000804", - "0x0000000000000000000000000000000000000000000000000000000000000805", - "0x0000000000000000000000000000000000000000000000000000000000000806", - "0x0000000000000000000000000000000000000000000000000000000000000807", - "0x0000000000000000000000000000000000000000000000000000000000000808", - "0x0000000000000000000000000000000000000000000000000000000000000809", - "0x000000000000000000000000000000000000000000000000000000000000080a", - "0x000000000000000000000000000000000000000000000000000000000000080b", - "0x000000000000000000000000000000000000000000000000000000000000080c", - "0x000000000000000000000000000000000000000000000000000000000000080d", - "0x000000000000000000000000000000000000000000000000000000000000080e", - "0x000000000000000000000000000000000000000000000000000000000000080f", - "0x0000000000000000000000000000000000000000000000000000000000000810", - "0x0000000000000000000000000000000000000000000000000000000000000811", - "0x0000000000000000000000000000000000000000000000000000000000000812", - "0x0000000000000000000000000000000000000000000000000000000000000813", - "0x0000000000000000000000000000000000000000000000000000000000000814", - "0x0000000000000000000000000000000000000000000000000000000000000815", - "0x0000000000000000000000000000000000000000000000000000000000000816", - "0x0000000000000000000000000000000000000000000000000000000000000817", - "0x0000000000000000000000000000000000000000000000000000000000000818", - "0x0000000000000000000000000000000000000000000000000000000000000819", - "0x000000000000000000000000000000000000000000000000000000000000081a", - "0x000000000000000000000000000000000000000000000000000000000000081b", - "0x000000000000000000000000000000000000000000000000000000000000081c", - "0x000000000000000000000000000000000000000000000000000000000000081d", - "0x000000000000000000000000000000000000000000000000000000000000081e", - "0x000000000000000000000000000000000000000000000000000000000000081f", - "0x0000000000000000000000000000000000000000000000000000000000000820", - "0x0000000000000000000000000000000000000000000000000000000000000821", - "0x0000000000000000000000000000000000000000000000000000000000000822", - "0x0000000000000000000000000000000000000000000000000000000000000823", - "0x0000000000000000000000000000000000000000000000000000000000000824", - "0x0000000000000000000000000000000000000000000000000000000000000825", - "0x0000000000000000000000000000000000000000000000000000000000000826", - "0x0000000000000000000000000000000000000000000000000000000000000827", - "0x0000000000000000000000000000000000000000000000000000000000000828", - "0x0000000000000000000000000000000000000000000000000000000000000829", - "0x000000000000000000000000000000000000000000000000000000000000082a", - "0x000000000000000000000000000000000000000000000000000000000000082b", - "0x000000000000000000000000000000000000000000000000000000000000082c", - "0x000000000000000000000000000000000000000000000000000000000000082d", - "0x000000000000000000000000000000000000000000000000000000000000082e", - "0x000000000000000000000000000000000000000000000000000000000000082f", - "0x0000000000000000000000000000000000000000000000000000000000000830", - "0x0000000000000000000000000000000000000000000000000000000000000831", - "0x0000000000000000000000000000000000000000000000000000000000000832", - "0x0000000000000000000000000000000000000000000000000000000000000833", - "0x0000000000000000000000000000000000000000000000000000000000000834", - "0x0000000000000000000000000000000000000000000000000000000000000835", - "0x0000000000000000000000000000000000000000000000000000000000000836", - "0x0000000000000000000000000000000000000000000000000000000000000837", - "0x0000000000000000000000000000000000000000000000000000000000000838", - "0x0000000000000000000000000000000000000000000000000000000000000839", - "0x000000000000000000000000000000000000000000000000000000000000083a", - "0x000000000000000000000000000000000000000000000000000000000000083b", - "0x000000000000000000000000000000000000000000000000000000000000083c", - "0x000000000000000000000000000000000000000000000000000000000000083d", - "0x000000000000000000000000000000000000000000000000000000000000083e", - "0x000000000000000000000000000000000000000000000000000000000000083f", - "0x0000000000000000000000000000000000000000000000000000000000000840", - "0x0000000000000000000000000000000000000000000000000000000000000841", - "0x0000000000000000000000000000000000000000000000000000000000000842", - "0x0000000000000000000000000000000000000000000000000000000000000843", - "0x0000000000000000000000000000000000000000000000000000000000000844", - "0x0000000000000000000000000000000000000000000000000000000000000845", - "0x0000000000000000000000000000000000000000000000000000000000000846", - "0x0000000000000000000000000000000000000000000000000000000000000847", - "0x0000000000000000000000000000000000000000000000000000000000000848", - "0x0000000000000000000000000000000000000000000000000000000000000849", - "0x000000000000000000000000000000000000000000000000000000000000084a", - "0x000000000000000000000000000000000000000000000000000000000000084b", - "0x000000000000000000000000000000000000000000000000000000000000084c", - "0x000000000000000000000000000000000000000000000000000000000000084d", - "0x000000000000000000000000000000000000000000000000000000000000084e", - "0x000000000000000000000000000000000000000000000000000000000000084f", - "0x0000000000000000000000000000000000000000000000000000000000000850", - "0x0000000000000000000000000000000000000000000000000000000000000851", - "0x0000000000000000000000000000000000000000000000000000000000000852", - "0x0000000000000000000000000000000000000000000000000000000000000853", - "0x0000000000000000000000000000000000000000000000000000000000000854", - "0x0000000000000000000000000000000000000000000000000000000000000855", - "0x0000000000000000000000000000000000000000000000000000000000000856", - "0x0000000000000000000000000000000000000000000000000000000000000857", - "0x0000000000000000000000000000000000000000000000000000000000000858", - "0x0000000000000000000000000000000000000000000000000000000000000859", - "0x000000000000000000000000000000000000000000000000000000000000085a", - "0x000000000000000000000000000000000000000000000000000000000000085b", - "0x000000000000000000000000000000000000000000000000000000000000085c", - "0x000000000000000000000000000000000000000000000000000000000000085d", - "0x000000000000000000000000000000000000000000000000000000000000085e", - "0x000000000000000000000000000000000000000000000000000000000000085f", - "0x0000000000000000000000000000000000000000000000000000000000000860", - "0x0000000000000000000000000000000000000000000000000000000000000861", - "0x0000000000000000000000000000000000000000000000000000000000000862", - "0x0000000000000000000000000000000000000000000000000000000000000863", - "0x0000000000000000000000000000000000000000000000000000000000000864", - "0x0000000000000000000000000000000000000000000000000000000000000865", - "0x0000000000000000000000000000000000000000000000000000000000000866", - "0x0000000000000000000000000000000000000000000000000000000000000867", - "0x0000000000000000000000000000000000000000000000000000000000000868", - "0x0000000000000000000000000000000000000000000000000000000000000869", - "0x000000000000000000000000000000000000000000000000000000000000086a", - "0x000000000000000000000000000000000000000000000000000000000000086b", - "0x000000000000000000000000000000000000000000000000000000000000086c", - "0x000000000000000000000000000000000000000000000000000000000000086d", - "0x000000000000000000000000000000000000000000000000000000000000086e", - "0x000000000000000000000000000000000000000000000000000000000000086f", - "0x0000000000000000000000000000000000000000000000000000000000000870", - "0x0000000000000000000000000000000000000000000000000000000000000871", - "0x0000000000000000000000000000000000000000000000000000000000000872", - "0x0000000000000000000000000000000000000000000000000000000000000873", - "0x0000000000000000000000000000000000000000000000000000000000000874", - "0x0000000000000000000000000000000000000000000000000000000000000875", - "0x0000000000000000000000000000000000000000000000000000000000000876", - "0x0000000000000000000000000000000000000000000000000000000000000877", - "0x0000000000000000000000000000000000000000000000000000000000000878", - "0x0000000000000000000000000000000000000000000000000000000000000879", - "0x000000000000000000000000000000000000000000000000000000000000087a", - "0x000000000000000000000000000000000000000000000000000000000000087b", - "0x000000000000000000000000000000000000000000000000000000000000087c", - "0x000000000000000000000000000000000000000000000000000000000000087d", - "0x000000000000000000000000000000000000000000000000000000000000087e", - "0x000000000000000000000000000000000000000000000000000000000000087f", - "0x0000000000000000000000000000000000000000000000000000000000000880", - "0x0000000000000000000000000000000000000000000000000000000000000881", - "0x0000000000000000000000000000000000000000000000000000000000000882", - "0x0000000000000000000000000000000000000000000000000000000000000883", - "0x0000000000000000000000000000000000000000000000000000000000000884", - "0x0000000000000000000000000000000000000000000000000000000000000885", - "0x0000000000000000000000000000000000000000000000000000000000000886", - "0x0000000000000000000000000000000000000000000000000000000000000887", - "0x0000000000000000000000000000000000000000000000000000000000000888", - "0x0000000000000000000000000000000000000000000000000000000000000889", - "0x000000000000000000000000000000000000000000000000000000000000088a", - "0x000000000000000000000000000000000000000000000000000000000000088b", - "0x000000000000000000000000000000000000000000000000000000000000088c", - "0x000000000000000000000000000000000000000000000000000000000000088d", - "0x000000000000000000000000000000000000000000000000000000000000088e", - "0x000000000000000000000000000000000000000000000000000000000000088f", - "0x0000000000000000000000000000000000000000000000000000000000000890", - "0x0000000000000000000000000000000000000000000000000000000000000891", - "0x0000000000000000000000000000000000000000000000000000000000000892", - "0x0000000000000000000000000000000000000000000000000000000000000893", - "0x0000000000000000000000000000000000000000000000000000000000000894", - "0x0000000000000000000000000000000000000000000000000000000000000895", - "0x0000000000000000000000000000000000000000000000000000000000000896", - "0x0000000000000000000000000000000000000000000000000000000000000897", - "0x0000000000000000000000000000000000000000000000000000000000000898", - "0x0000000000000000000000000000000000000000000000000000000000000899", - "0x000000000000000000000000000000000000000000000000000000000000089a", - "0x000000000000000000000000000000000000000000000000000000000000089b", - "0x000000000000000000000000000000000000000000000000000000000000089c", - "0x000000000000000000000000000000000000000000000000000000000000089d", - "0x000000000000000000000000000000000000000000000000000000000000089e", - "0x000000000000000000000000000000000000000000000000000000000000089f", - "0x00000000000000000000000000000000000000000000000000000000000008a0", - "0x00000000000000000000000000000000000000000000000000000000000008a1", - "0x00000000000000000000000000000000000000000000000000000000000008a2", - "0x00000000000000000000000000000000000000000000000000000000000008a3", - "0x00000000000000000000000000000000000000000000000000000000000008a4", - "0x00000000000000000000000000000000000000000000000000000000000008a5", - "0x00000000000000000000000000000000000000000000000000000000000008a6", - "0x00000000000000000000000000000000000000000000000000000000000008a7", - "0x00000000000000000000000000000000000000000000000000000000000008a8", - "0x00000000000000000000000000000000000000000000000000000000000008a9", - "0x00000000000000000000000000000000000000000000000000000000000008aa", - "0x00000000000000000000000000000000000000000000000000000000000008ab", - "0x00000000000000000000000000000000000000000000000000000000000008ac", - "0x00000000000000000000000000000000000000000000000000000000000008ad", - "0x00000000000000000000000000000000000000000000000000000000000008ae", - "0x00000000000000000000000000000000000000000000000000000000000008af", - "0x00000000000000000000000000000000000000000000000000000000000008b0", - "0x00000000000000000000000000000000000000000000000000000000000008b1", - "0x00000000000000000000000000000000000000000000000000000000000008b2", - "0x00000000000000000000000000000000000000000000000000000000000008b3", - "0x00000000000000000000000000000000000000000000000000000000000008b4", - "0x00000000000000000000000000000000000000000000000000000000000008b5", - "0x00000000000000000000000000000000000000000000000000000000000008b6", - "0x00000000000000000000000000000000000000000000000000000000000008b7", - "0x00000000000000000000000000000000000000000000000000000000000008b8", - "0x00000000000000000000000000000000000000000000000000000000000008b9", - "0x00000000000000000000000000000000000000000000000000000000000008ba", - "0x00000000000000000000000000000000000000000000000000000000000008bb", - "0x00000000000000000000000000000000000000000000000000000000000008bc", - "0x00000000000000000000000000000000000000000000000000000000000008bd", - "0x00000000000000000000000000000000000000000000000000000000000008be", - "0x00000000000000000000000000000000000000000000000000000000000008bf", - "0x00000000000000000000000000000000000000000000000000000000000008c0", - "0x00000000000000000000000000000000000000000000000000000000000008c1", - "0x00000000000000000000000000000000000000000000000000000000000008c2", - "0x00000000000000000000000000000000000000000000000000000000000008c3", - "0x00000000000000000000000000000000000000000000000000000000000008c4", - "0x00000000000000000000000000000000000000000000000000000000000008c5", - "0x00000000000000000000000000000000000000000000000000000000000008c6", - "0x00000000000000000000000000000000000000000000000000000000000008c7", - "0x00000000000000000000000000000000000000000000000000000000000008c8", - "0x00000000000000000000000000000000000000000000000000000000000008c9", - "0x00000000000000000000000000000000000000000000000000000000000008ca", - "0x00000000000000000000000000000000000000000000000000000000000008cb", - "0x00000000000000000000000000000000000000000000000000000000000008cc", - "0x00000000000000000000000000000000000000000000000000000000000008cd", - "0x00000000000000000000000000000000000000000000000000000000000008ce", - "0x00000000000000000000000000000000000000000000000000000000000008cf", - "0x00000000000000000000000000000000000000000000000000000000000008d0", - "0x00000000000000000000000000000000000000000000000000000000000008d1", - "0x00000000000000000000000000000000000000000000000000000000000008d2", - "0x00000000000000000000000000000000000000000000000000000000000008d3", - "0x00000000000000000000000000000000000000000000000000000000000008d4", - "0x00000000000000000000000000000000000000000000000000000000000008d5", - "0x00000000000000000000000000000000000000000000000000000000000008d6", - "0x00000000000000000000000000000000000000000000000000000000000008d7", - "0x00000000000000000000000000000000000000000000000000000000000008d8", - "0x00000000000000000000000000000000000000000000000000000000000008d9", - "0x00000000000000000000000000000000000000000000000000000000000008da", - "0x00000000000000000000000000000000000000000000000000000000000008db", - "0x00000000000000000000000000000000000000000000000000000000000008dc", - "0x00000000000000000000000000000000000000000000000000000000000008dd", - "0x00000000000000000000000000000000000000000000000000000000000008de", - "0x00000000000000000000000000000000000000000000000000000000000008df", - "0x00000000000000000000000000000000000000000000000000000000000008e0", - "0x00000000000000000000000000000000000000000000000000000000000008e1", - "0x00000000000000000000000000000000000000000000000000000000000008e2", - "0x00000000000000000000000000000000000000000000000000000000000008e3", - "0x00000000000000000000000000000000000000000000000000000000000008e4", - "0x00000000000000000000000000000000000000000000000000000000000008e5", - "0x00000000000000000000000000000000000000000000000000000000000008e6", - "0x00000000000000000000000000000000000000000000000000000000000008e7", - "0x00000000000000000000000000000000000000000000000000000000000008e8", - "0x00000000000000000000000000000000000000000000000000000000000008e9", - "0x00000000000000000000000000000000000000000000000000000000000008ea", - "0x00000000000000000000000000000000000000000000000000000000000008eb", - "0x00000000000000000000000000000000000000000000000000000000000008ec", - "0x00000000000000000000000000000000000000000000000000000000000008ed", - "0x00000000000000000000000000000000000000000000000000000000000008ee", - "0x00000000000000000000000000000000000000000000000000000000000008ef", - "0x00000000000000000000000000000000000000000000000000000000000008f0", - "0x00000000000000000000000000000000000000000000000000000000000008f1", - "0x00000000000000000000000000000000000000000000000000000000000008f2", - "0x00000000000000000000000000000000000000000000000000000000000008f3", - "0x00000000000000000000000000000000000000000000000000000000000008f4", - "0x00000000000000000000000000000000000000000000000000000000000008f5", - "0x00000000000000000000000000000000000000000000000000000000000008f6", - "0x00000000000000000000000000000000000000000000000000000000000008f7", - "0x00000000000000000000000000000000000000000000000000000000000008f8", - "0x00000000000000000000000000000000000000000000000000000000000008f9", - "0x00000000000000000000000000000000000000000000000000000000000008fa", - "0x00000000000000000000000000000000000000000000000000000000000008fb", - "0x00000000000000000000000000000000000000000000000000000000000008fc", - "0x00000000000000000000000000000000000000000000000000000000000008fd", - "0x00000000000000000000000000000000000000000000000000000000000008fe", - "0x00000000000000000000000000000000000000000000000000000000000008ff", - "0x0000000000000000000000000000000000000000000000000000000000000900", - "0x0000000000000000000000000000000000000000000000000000000000000901", - "0x0000000000000000000000000000000000000000000000000000000000000902", - "0x0000000000000000000000000000000000000000000000000000000000000903", - "0x0000000000000000000000000000000000000000000000000000000000000904", - "0x0000000000000000000000000000000000000000000000000000000000000905", - "0x0000000000000000000000000000000000000000000000000000000000000906", - "0x0000000000000000000000000000000000000000000000000000000000000907", - "0x0000000000000000000000000000000000000000000000000000000000000908", - "0x0000000000000000000000000000000000000000000000000000000000000909", - "0x000000000000000000000000000000000000000000000000000000000000090a", - "0x000000000000000000000000000000000000000000000000000000000000090b", - "0x000000000000000000000000000000000000000000000000000000000000090c", - "0x000000000000000000000000000000000000000000000000000000000000090d", - "0x000000000000000000000000000000000000000000000000000000000000090e", - "0x000000000000000000000000000000000000000000000000000000000000090f", - "0x0000000000000000000000000000000000000000000000000000000000000910", - "0x0000000000000000000000000000000000000000000000000000000000000911", - "0x0000000000000000000000000000000000000000000000000000000000000912", - "0x0000000000000000000000000000000000000000000000000000000000000913", - "0x0000000000000000000000000000000000000000000000000000000000000914", - "0x0000000000000000000000000000000000000000000000000000000000000915", - "0x0000000000000000000000000000000000000000000000000000000000000916", - "0x0000000000000000000000000000000000000000000000000000000000000917", - "0x0000000000000000000000000000000000000000000000000000000000000918", - "0x0000000000000000000000000000000000000000000000000000000000000919", - "0x000000000000000000000000000000000000000000000000000000000000091a", - "0x000000000000000000000000000000000000000000000000000000000000091b", - "0x000000000000000000000000000000000000000000000000000000000000091c", - "0x000000000000000000000000000000000000000000000000000000000000091d", - "0x000000000000000000000000000000000000000000000000000000000000091e", - "0x000000000000000000000000000000000000000000000000000000000000091f", - "0x0000000000000000000000000000000000000000000000000000000000000920", - "0x0000000000000000000000000000000000000000000000000000000000000921", - "0x0000000000000000000000000000000000000000000000000000000000000922", - "0x0000000000000000000000000000000000000000000000000000000000000923", - "0x0000000000000000000000000000000000000000000000000000000000000924", - "0x0000000000000000000000000000000000000000000000000000000000000925", - "0x0000000000000000000000000000000000000000000000000000000000000926", - "0x0000000000000000000000000000000000000000000000000000000000000927", - "0x0000000000000000000000000000000000000000000000000000000000000928", - "0x0000000000000000000000000000000000000000000000000000000000000929", - "0x000000000000000000000000000000000000000000000000000000000000092a", - "0x000000000000000000000000000000000000000000000000000000000000092b", - "0x000000000000000000000000000000000000000000000000000000000000092c", - "0x000000000000000000000000000000000000000000000000000000000000092d", - "0x000000000000000000000000000000000000000000000000000000000000092e", - "0x000000000000000000000000000000000000000000000000000000000000092f", - "0x0000000000000000000000000000000000000000000000000000000000000930", - "0x0000000000000000000000000000000000000000000000000000000000000931", - "0x0000000000000000000000000000000000000000000000000000000000000932", - "0x0000000000000000000000000000000000000000000000000000000000000933", - "0x0000000000000000000000000000000000000000000000000000000000000934", - "0x0000000000000000000000000000000000000000000000000000000000000935", - "0x0000000000000000000000000000000000000000000000000000000000000936", - "0x0000000000000000000000000000000000000000000000000000000000000937", - "0x0000000000000000000000000000000000000000000000000000000000000938", - "0x0000000000000000000000000000000000000000000000000000000000000939", - "0x000000000000000000000000000000000000000000000000000000000000093a", - "0x000000000000000000000000000000000000000000000000000000000000093b", - "0x000000000000000000000000000000000000000000000000000000000000093c", - "0x000000000000000000000000000000000000000000000000000000000000093d", - "0x000000000000000000000000000000000000000000000000000000000000093e", - "0x000000000000000000000000000000000000000000000000000000000000093f", - "0x0000000000000000000000000000000000000000000000000000000000000940", - "0x0000000000000000000000000000000000000000000000000000000000000941", - "0x0000000000000000000000000000000000000000000000000000000000000942", - "0x0000000000000000000000000000000000000000000000000000000000000943", - "0x0000000000000000000000000000000000000000000000000000000000000944", - "0x0000000000000000000000000000000000000000000000000000000000000945", - "0x0000000000000000000000000000000000000000000000000000000000000946", - "0x0000000000000000000000000000000000000000000000000000000000000947", - "0x0000000000000000000000000000000000000000000000000000000000000948", - "0x0000000000000000000000000000000000000000000000000000000000000949", - "0x000000000000000000000000000000000000000000000000000000000000094a", - "0x000000000000000000000000000000000000000000000000000000000000094b", - "0x000000000000000000000000000000000000000000000000000000000000094c", - "0x000000000000000000000000000000000000000000000000000000000000094d", - "0x000000000000000000000000000000000000000000000000000000000000094e", - "0x000000000000000000000000000000000000000000000000000000000000094f", - "0x0000000000000000000000000000000000000000000000000000000000000950", - "0x0000000000000000000000000000000000000000000000000000000000000951", - "0x0000000000000000000000000000000000000000000000000000000000000952", - "0x0000000000000000000000000000000000000000000000000000000000000953", - "0x0000000000000000000000000000000000000000000000000000000000000954", - "0x0000000000000000000000000000000000000000000000000000000000000955", - "0x0000000000000000000000000000000000000000000000000000000000000956", - "0x0000000000000000000000000000000000000000000000000000000000000957", - "0x0000000000000000000000000000000000000000000000000000000000000958", - "0x0000000000000000000000000000000000000000000000000000000000000959", - "0x000000000000000000000000000000000000000000000000000000000000095a", - "0x000000000000000000000000000000000000000000000000000000000000095b", - "0x000000000000000000000000000000000000000000000000000000000000095c", - "0x000000000000000000000000000000000000000000000000000000000000095d", - "0x000000000000000000000000000000000000000000000000000000000000095e", - "0x000000000000000000000000000000000000000000000000000000000000095f", - "0x0000000000000000000000000000000000000000000000000000000000000960", - "0x0000000000000000000000000000000000000000000000000000000000000961", - "0x0000000000000000000000000000000000000000000000000000000000000962", - "0x0000000000000000000000000000000000000000000000000000000000000963", - "0x0000000000000000000000000000000000000000000000000000000000000964", - "0x0000000000000000000000000000000000000000000000000000000000000965", - "0x0000000000000000000000000000000000000000000000000000000000000966", - "0x0000000000000000000000000000000000000000000000000000000000000967", - "0x0000000000000000000000000000000000000000000000000000000000000968", - "0x0000000000000000000000000000000000000000000000000000000000000969", - "0x000000000000000000000000000000000000000000000000000000000000096a", - "0x000000000000000000000000000000000000000000000000000000000000096b", - "0x000000000000000000000000000000000000000000000000000000000000096c", - "0x000000000000000000000000000000000000000000000000000000000000096d", - "0x000000000000000000000000000000000000000000000000000000000000096e", - "0x000000000000000000000000000000000000000000000000000000000000096f", - "0x0000000000000000000000000000000000000000000000000000000000000970", - "0x0000000000000000000000000000000000000000000000000000000000000971", - "0x0000000000000000000000000000000000000000000000000000000000000972", - "0x0000000000000000000000000000000000000000000000000000000000000973", - "0x0000000000000000000000000000000000000000000000000000000000000974", - "0x0000000000000000000000000000000000000000000000000000000000000975", - "0x0000000000000000000000000000000000000000000000000000000000000976", - "0x0000000000000000000000000000000000000000000000000000000000000977", - "0x0000000000000000000000000000000000000000000000000000000000000978", - "0x0000000000000000000000000000000000000000000000000000000000000979", - "0x000000000000000000000000000000000000000000000000000000000000097a", - "0x000000000000000000000000000000000000000000000000000000000000097b", - "0x000000000000000000000000000000000000000000000000000000000000097c", - "0x000000000000000000000000000000000000000000000000000000000000097d", - "0x000000000000000000000000000000000000000000000000000000000000097e", - "0x000000000000000000000000000000000000000000000000000000000000097f", - "0x0000000000000000000000000000000000000000000000000000000000000980", - "0x0000000000000000000000000000000000000000000000000000000000000981", - "0x0000000000000000000000000000000000000000000000000000000000000982", - "0x0000000000000000000000000000000000000000000000000000000000000983", - "0x0000000000000000000000000000000000000000000000000000000000000984", - "0x0000000000000000000000000000000000000000000000000000000000000985", - "0x0000000000000000000000000000000000000000000000000000000000000986", - "0x0000000000000000000000000000000000000000000000000000000000000987", - "0x0000000000000000000000000000000000000000000000000000000000000988", - "0x0000000000000000000000000000000000000000000000000000000000000989", - "0x000000000000000000000000000000000000000000000000000000000000098a", - "0x000000000000000000000000000000000000000000000000000000000000098b", - "0x000000000000000000000000000000000000000000000000000000000000098c", - "0x000000000000000000000000000000000000000000000000000000000000098d", - "0x000000000000000000000000000000000000000000000000000000000000098e", - "0x000000000000000000000000000000000000000000000000000000000000098f", - "0x0000000000000000000000000000000000000000000000000000000000000990", - "0x0000000000000000000000000000000000000000000000000000000000000991", - "0x0000000000000000000000000000000000000000000000000000000000000992", - "0x0000000000000000000000000000000000000000000000000000000000000993", - "0x0000000000000000000000000000000000000000000000000000000000000994", - "0x0000000000000000000000000000000000000000000000000000000000000995", - "0x0000000000000000000000000000000000000000000000000000000000000996", - "0x0000000000000000000000000000000000000000000000000000000000000997", - "0x0000000000000000000000000000000000000000000000000000000000000998", - "0x0000000000000000000000000000000000000000000000000000000000000999", - "0x000000000000000000000000000000000000000000000000000000000000099a", - "0x000000000000000000000000000000000000000000000000000000000000099b", - "0x000000000000000000000000000000000000000000000000000000000000099c", - "0x000000000000000000000000000000000000000000000000000000000000099d", - "0x000000000000000000000000000000000000000000000000000000000000099e", - "0x000000000000000000000000000000000000000000000000000000000000099f", - "0x00000000000000000000000000000000000000000000000000000000000009a0", - "0x00000000000000000000000000000000000000000000000000000000000009a1", - "0x00000000000000000000000000000000000000000000000000000000000009a2", - "0x00000000000000000000000000000000000000000000000000000000000009a3", - "0x00000000000000000000000000000000000000000000000000000000000009a4", - "0x00000000000000000000000000000000000000000000000000000000000009a5", - "0x00000000000000000000000000000000000000000000000000000000000009a6", - "0x00000000000000000000000000000000000000000000000000000000000009a7", - "0x00000000000000000000000000000000000000000000000000000000000009a8", - "0x00000000000000000000000000000000000000000000000000000000000009a9", - "0x00000000000000000000000000000000000000000000000000000000000009aa", - "0x00000000000000000000000000000000000000000000000000000000000009ab", - "0x00000000000000000000000000000000000000000000000000000000000009ac", - "0x00000000000000000000000000000000000000000000000000000000000009ad", - "0x00000000000000000000000000000000000000000000000000000000000009ae", - "0x00000000000000000000000000000000000000000000000000000000000009af", - "0x00000000000000000000000000000000000000000000000000000000000009b0", - "0x00000000000000000000000000000000000000000000000000000000000009b1", - "0x00000000000000000000000000000000000000000000000000000000000009b2", - "0x00000000000000000000000000000000000000000000000000000000000009b3", - "0x00000000000000000000000000000000000000000000000000000000000009b4", - "0x00000000000000000000000000000000000000000000000000000000000009b5", - "0x00000000000000000000000000000000000000000000000000000000000009b6", - "0x00000000000000000000000000000000000000000000000000000000000009b7", - "0x00000000000000000000000000000000000000000000000000000000000009b8", - "0x00000000000000000000000000000000000000000000000000000000000009b9", - "0x00000000000000000000000000000000000000000000000000000000000009ba", - "0x00000000000000000000000000000000000000000000000000000000000009bb", - "0x00000000000000000000000000000000000000000000000000000000000009bc", - "0x00000000000000000000000000000000000000000000000000000000000009bd", - "0x00000000000000000000000000000000000000000000000000000000000009be", - "0x00000000000000000000000000000000000000000000000000000000000009bf", - "0x00000000000000000000000000000000000000000000000000000000000009c0", - "0x00000000000000000000000000000000000000000000000000000000000009c1", - "0x00000000000000000000000000000000000000000000000000000000000009c2", - "0x00000000000000000000000000000000000000000000000000000000000009c3", - "0x00000000000000000000000000000000000000000000000000000000000009c4", - "0x00000000000000000000000000000000000000000000000000000000000009c5", - "0x00000000000000000000000000000000000000000000000000000000000009c6", - "0x00000000000000000000000000000000000000000000000000000000000009c7", - "0x00000000000000000000000000000000000000000000000000000000000009c8", - "0x00000000000000000000000000000000000000000000000000000000000009c9", - "0x00000000000000000000000000000000000000000000000000000000000009ca", - "0x00000000000000000000000000000000000000000000000000000000000009cb", - "0x00000000000000000000000000000000000000000000000000000000000009cc", - "0x00000000000000000000000000000000000000000000000000000000000009cd", - "0x00000000000000000000000000000000000000000000000000000000000009ce", - "0x00000000000000000000000000000000000000000000000000000000000009cf", - "0x00000000000000000000000000000000000000000000000000000000000009d0", - "0x00000000000000000000000000000000000000000000000000000000000009d1", - "0x00000000000000000000000000000000000000000000000000000000000009d2", - "0x00000000000000000000000000000000000000000000000000000000000009d3", - "0x00000000000000000000000000000000000000000000000000000000000009d4", - "0x00000000000000000000000000000000000000000000000000000000000009d5", - "0x00000000000000000000000000000000000000000000000000000000000009d6", - "0x00000000000000000000000000000000000000000000000000000000000009d7", - "0x00000000000000000000000000000000000000000000000000000000000009d8", - "0x00000000000000000000000000000000000000000000000000000000000009d9", - "0x00000000000000000000000000000000000000000000000000000000000009da", - "0x00000000000000000000000000000000000000000000000000000000000009db" -] -num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" l1_to_l2_message_frontier_hint = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -1588,7 +561,7 @@ new_archive_sibling_path = [ accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000006b6c0" [inputs.previous_rollups.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -1669,10 +642,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7d1b44c" ] state = [ - "0x0fdf91447a260eb71d219f0fbef9c05b34cf8abea066a11a4a129590b815e9b0", - "0x1996504675ed6a55d4be1c0d5f6ef844d395544d142cf4b8b7b92c92abd7bed4", - "0x1fca89433e8c1e921edde2912bbccd1b396e58761de00727e50b735c24dce633", - "0x10dcc4baf7de8a2c3305755a9e4d89fbd87b907df5e070d9faf99c784d627cdb" + "0x04aaabffb7f35f45dea8e9b68dd48ee04d95e0edd37d79f6f21dbe83f838f018", + "0x258263cc3cf0e87edfb02817e9f7d9dbc1e826b2b3e5b473bc4661e683c698b0", + "0x0d2302e54e05898b7b0659dc607042b33f5d94d6cfaff90d6464952675d81ecc", + "0x272a09845b81d4c6da506c4c7ae326ff16683d03d128a319ed2457249ee1f191" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1683,10 +656,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x1fc39d0a428c8536dbca551ea79848acf67d89d090fd8c643c7d90f2e8f32340", "0x12ce5a49a1ceca53ada7bee003f929bbd65abaa74e8072a81f304c2c96c44e31", "0x2dd71474f7775d87b6c2986ace5f654686583f0970d7400b1ccf8096dad131b5", - "0x17256307ffa28861c90e498de359cc71e3e87d316e2a719bd42073f7b2e93920", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x0aca02f69b05a42958d30ced7da19a9e135e0c83b75e72ae5f7e2bec714a418f", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -2300,7 +1273,7 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollups.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" @@ -2363,10 +1336,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7d1b44c" ] state = [ - "0x0fdf91447a260eb71d219f0fbef9c05b34cf8abea066a11a4a129590b815e9b0", - "0x1996504675ed6a55d4be1c0d5f6ef844d395544d142cf4b8b7b92c92abd7bed4", - "0x1fca89433e8c1e921edde2912bbccd1b396e58761de00727e50b735c24dce633", - "0x10dcc4baf7de8a2c3305755a9e4d89fbd87b907df5e070d9faf99c784d627cdb" + "0x04aaabffb7f35f45dea8e9b68dd48ee04d95e0edd37d79f6f21dbe83f838f018", + "0x258263cc3cf0e87edfb02817e9f7d9dbc1e826b2b3e5b473bc4661e683c698b0", + "0x0d2302e54e05898b7b0659dc607042b33f5d94d6cfaff90d6464952675d81ecc", + "0x272a09845b81d4c6da506c4c7ae326ff16683d03d128a319ed2457249ee1f191" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -2381,10 +1354,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7e5c34d" ] state = [ - "0x25b33ad5b817c6930bac8e51faa4285fc9f58d4e748e2ee62eae3d1d400d1538", - "0x056c2c8030fe27f7155cebb1d02174dca2cbaaf59cd2b653031bd0992783499d", - "0x09c5e94142627ae41408ca8fed120532c877e55ffca8f7463701873b74f28dc6", - "0x1adee9436b0413fb3f2b6fd48fa88b6609d51230eba69c2052bf6e31a533cfb5" + "0x13449344a1e851eb9122ed82ff8fbf021f2e74d74bac4f360f0964c9b5216673", + "0x0d63e47877339d61d174600690b717a4bab73e17a72a9cacef740ad257ad4908", + "0x075e35308cabf2299ccd38d2f5957b30ee819ae7a04dca5cfdbaac40d88c16b8", + "0x2a429fa7f6cfbf48c22feb2f318aaff592c330dc1abc521ec0966efe53cf536d" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -2393,12 +1366,12 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ "0x10b6730f1d1e9c6bf8d7c4b42b64b40d2603e3ae6ddbd464c3d8fcfb9e06e6d4", - "0x1a5178a6436a988639331aefded549ea480e3e62ff511a364166a09a815f7af4", - "0x0b4116638a39fd2590691ceb5faa8aa94d951f4f24da141f7ac2f2ab943ac8f6", + "0x014ffec160e37b6cb713c1a4e6e7058964dde1733e6734520ed72f72fd262919", + "0x196cbe2980734bc5d21b53464a1d00c06dad0febdec75822d79d6933dff40579", "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -2519,7 +1492,1037 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000003ba1cc971819aacf0bcb421bd3aead9f0c", "0x00000000000000000000000000000000000366f6e08da4f6c87b3393784388b0" ] - hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + + [inputs.message_bundle] + messages = [ + "0x00000000000000000000000000000000000000000000000000000000000005dc", + "0x00000000000000000000000000000000000000000000000000000000000005dd", + "0x00000000000000000000000000000000000000000000000000000000000005de", + "0x00000000000000000000000000000000000000000000000000000000000005df", + "0x00000000000000000000000000000000000000000000000000000000000005e0", + "0x00000000000000000000000000000000000000000000000000000000000005e1", + "0x00000000000000000000000000000000000000000000000000000000000005e2", + "0x00000000000000000000000000000000000000000000000000000000000005e3", + "0x00000000000000000000000000000000000000000000000000000000000005e4", + "0x00000000000000000000000000000000000000000000000000000000000005e5", + "0x00000000000000000000000000000000000000000000000000000000000005e6", + "0x00000000000000000000000000000000000000000000000000000000000005e7", + "0x00000000000000000000000000000000000000000000000000000000000005e8", + "0x00000000000000000000000000000000000000000000000000000000000005e9", + "0x00000000000000000000000000000000000000000000000000000000000005ea", + "0x00000000000000000000000000000000000000000000000000000000000005eb", + "0x00000000000000000000000000000000000000000000000000000000000005ec", + "0x00000000000000000000000000000000000000000000000000000000000005ed", + "0x00000000000000000000000000000000000000000000000000000000000005ee", + "0x00000000000000000000000000000000000000000000000000000000000005ef", + "0x00000000000000000000000000000000000000000000000000000000000005f0", + "0x00000000000000000000000000000000000000000000000000000000000005f1", + "0x00000000000000000000000000000000000000000000000000000000000005f2", + "0x00000000000000000000000000000000000000000000000000000000000005f3", + "0x00000000000000000000000000000000000000000000000000000000000005f4", + "0x00000000000000000000000000000000000000000000000000000000000005f5", + "0x00000000000000000000000000000000000000000000000000000000000005f6", + "0x00000000000000000000000000000000000000000000000000000000000005f7", + "0x00000000000000000000000000000000000000000000000000000000000005f8", + "0x00000000000000000000000000000000000000000000000000000000000005f9", + "0x00000000000000000000000000000000000000000000000000000000000005fa", + "0x00000000000000000000000000000000000000000000000000000000000005fb", + "0x00000000000000000000000000000000000000000000000000000000000005fc", + "0x00000000000000000000000000000000000000000000000000000000000005fd", + "0x00000000000000000000000000000000000000000000000000000000000005fe", + "0x00000000000000000000000000000000000000000000000000000000000005ff", + "0x0000000000000000000000000000000000000000000000000000000000000600", + "0x0000000000000000000000000000000000000000000000000000000000000601", + "0x0000000000000000000000000000000000000000000000000000000000000602", + "0x0000000000000000000000000000000000000000000000000000000000000603", + "0x0000000000000000000000000000000000000000000000000000000000000604", + "0x0000000000000000000000000000000000000000000000000000000000000605", + "0x0000000000000000000000000000000000000000000000000000000000000606", + "0x0000000000000000000000000000000000000000000000000000000000000607", + "0x0000000000000000000000000000000000000000000000000000000000000608", + "0x0000000000000000000000000000000000000000000000000000000000000609", + "0x000000000000000000000000000000000000000000000000000000000000060a", + "0x000000000000000000000000000000000000000000000000000000000000060b", + "0x000000000000000000000000000000000000000000000000000000000000060c", + "0x000000000000000000000000000000000000000000000000000000000000060d", + "0x000000000000000000000000000000000000000000000000000000000000060e", + "0x000000000000000000000000000000000000000000000000000000000000060f", + "0x0000000000000000000000000000000000000000000000000000000000000610", + "0x0000000000000000000000000000000000000000000000000000000000000611", + "0x0000000000000000000000000000000000000000000000000000000000000612", + "0x0000000000000000000000000000000000000000000000000000000000000613", + "0x0000000000000000000000000000000000000000000000000000000000000614", + "0x0000000000000000000000000000000000000000000000000000000000000615", + "0x0000000000000000000000000000000000000000000000000000000000000616", + "0x0000000000000000000000000000000000000000000000000000000000000617", + "0x0000000000000000000000000000000000000000000000000000000000000618", + "0x0000000000000000000000000000000000000000000000000000000000000619", + "0x000000000000000000000000000000000000000000000000000000000000061a", + "0x000000000000000000000000000000000000000000000000000000000000061b", + "0x000000000000000000000000000000000000000000000000000000000000061c", + "0x000000000000000000000000000000000000000000000000000000000000061d", + "0x000000000000000000000000000000000000000000000000000000000000061e", + "0x000000000000000000000000000000000000000000000000000000000000061f", + "0x0000000000000000000000000000000000000000000000000000000000000620", + "0x0000000000000000000000000000000000000000000000000000000000000621", + "0x0000000000000000000000000000000000000000000000000000000000000622", + "0x0000000000000000000000000000000000000000000000000000000000000623", + "0x0000000000000000000000000000000000000000000000000000000000000624", + "0x0000000000000000000000000000000000000000000000000000000000000625", + "0x0000000000000000000000000000000000000000000000000000000000000626", + "0x0000000000000000000000000000000000000000000000000000000000000627", + "0x0000000000000000000000000000000000000000000000000000000000000628", + "0x0000000000000000000000000000000000000000000000000000000000000629", + "0x000000000000000000000000000000000000000000000000000000000000062a", + "0x000000000000000000000000000000000000000000000000000000000000062b", + "0x000000000000000000000000000000000000000000000000000000000000062c", + "0x000000000000000000000000000000000000000000000000000000000000062d", + "0x000000000000000000000000000000000000000000000000000000000000062e", + "0x000000000000000000000000000000000000000000000000000000000000062f", + "0x0000000000000000000000000000000000000000000000000000000000000630", + "0x0000000000000000000000000000000000000000000000000000000000000631", + "0x0000000000000000000000000000000000000000000000000000000000000632", + "0x0000000000000000000000000000000000000000000000000000000000000633", + "0x0000000000000000000000000000000000000000000000000000000000000634", + "0x0000000000000000000000000000000000000000000000000000000000000635", + "0x0000000000000000000000000000000000000000000000000000000000000636", + "0x0000000000000000000000000000000000000000000000000000000000000637", + "0x0000000000000000000000000000000000000000000000000000000000000638", + "0x0000000000000000000000000000000000000000000000000000000000000639", + "0x000000000000000000000000000000000000000000000000000000000000063a", + "0x000000000000000000000000000000000000000000000000000000000000063b", + "0x000000000000000000000000000000000000000000000000000000000000063c", + "0x000000000000000000000000000000000000000000000000000000000000063d", + "0x000000000000000000000000000000000000000000000000000000000000063e", + "0x000000000000000000000000000000000000000000000000000000000000063f", + "0x0000000000000000000000000000000000000000000000000000000000000640", + "0x0000000000000000000000000000000000000000000000000000000000000641", + "0x0000000000000000000000000000000000000000000000000000000000000642", + "0x0000000000000000000000000000000000000000000000000000000000000643", + "0x0000000000000000000000000000000000000000000000000000000000000644", + "0x0000000000000000000000000000000000000000000000000000000000000645", + "0x0000000000000000000000000000000000000000000000000000000000000646", + "0x0000000000000000000000000000000000000000000000000000000000000647", + "0x0000000000000000000000000000000000000000000000000000000000000648", + "0x0000000000000000000000000000000000000000000000000000000000000649", + "0x000000000000000000000000000000000000000000000000000000000000064a", + "0x000000000000000000000000000000000000000000000000000000000000064b", + "0x000000000000000000000000000000000000000000000000000000000000064c", + "0x000000000000000000000000000000000000000000000000000000000000064d", + "0x000000000000000000000000000000000000000000000000000000000000064e", + "0x000000000000000000000000000000000000000000000000000000000000064f", + "0x0000000000000000000000000000000000000000000000000000000000000650", + "0x0000000000000000000000000000000000000000000000000000000000000651", + "0x0000000000000000000000000000000000000000000000000000000000000652", + "0x0000000000000000000000000000000000000000000000000000000000000653", + "0x0000000000000000000000000000000000000000000000000000000000000654", + "0x0000000000000000000000000000000000000000000000000000000000000655", + "0x0000000000000000000000000000000000000000000000000000000000000656", + "0x0000000000000000000000000000000000000000000000000000000000000657", + "0x0000000000000000000000000000000000000000000000000000000000000658", + "0x0000000000000000000000000000000000000000000000000000000000000659", + "0x000000000000000000000000000000000000000000000000000000000000065a", + "0x000000000000000000000000000000000000000000000000000000000000065b", + "0x000000000000000000000000000000000000000000000000000000000000065c", + "0x000000000000000000000000000000000000000000000000000000000000065d", + "0x000000000000000000000000000000000000000000000000000000000000065e", + "0x000000000000000000000000000000000000000000000000000000000000065f", + "0x0000000000000000000000000000000000000000000000000000000000000660", + "0x0000000000000000000000000000000000000000000000000000000000000661", + "0x0000000000000000000000000000000000000000000000000000000000000662", + "0x0000000000000000000000000000000000000000000000000000000000000663", + "0x0000000000000000000000000000000000000000000000000000000000000664", + "0x0000000000000000000000000000000000000000000000000000000000000665", + "0x0000000000000000000000000000000000000000000000000000000000000666", + "0x0000000000000000000000000000000000000000000000000000000000000667", + "0x0000000000000000000000000000000000000000000000000000000000000668", + "0x0000000000000000000000000000000000000000000000000000000000000669", + "0x000000000000000000000000000000000000000000000000000000000000066a", + "0x000000000000000000000000000000000000000000000000000000000000066b", + "0x000000000000000000000000000000000000000000000000000000000000066c", + "0x000000000000000000000000000000000000000000000000000000000000066d", + "0x000000000000000000000000000000000000000000000000000000000000066e", + "0x000000000000000000000000000000000000000000000000000000000000066f", + "0x0000000000000000000000000000000000000000000000000000000000000670", + "0x0000000000000000000000000000000000000000000000000000000000000671", + "0x0000000000000000000000000000000000000000000000000000000000000672", + "0x0000000000000000000000000000000000000000000000000000000000000673", + "0x0000000000000000000000000000000000000000000000000000000000000674", + "0x0000000000000000000000000000000000000000000000000000000000000675", + "0x0000000000000000000000000000000000000000000000000000000000000676", + "0x0000000000000000000000000000000000000000000000000000000000000677", + "0x0000000000000000000000000000000000000000000000000000000000000678", + "0x0000000000000000000000000000000000000000000000000000000000000679", + "0x000000000000000000000000000000000000000000000000000000000000067a", + "0x000000000000000000000000000000000000000000000000000000000000067b", + "0x000000000000000000000000000000000000000000000000000000000000067c", + "0x000000000000000000000000000000000000000000000000000000000000067d", + "0x000000000000000000000000000000000000000000000000000000000000067e", + "0x000000000000000000000000000000000000000000000000000000000000067f", + "0x0000000000000000000000000000000000000000000000000000000000000680", + "0x0000000000000000000000000000000000000000000000000000000000000681", + "0x0000000000000000000000000000000000000000000000000000000000000682", + "0x0000000000000000000000000000000000000000000000000000000000000683", + "0x0000000000000000000000000000000000000000000000000000000000000684", + "0x0000000000000000000000000000000000000000000000000000000000000685", + "0x0000000000000000000000000000000000000000000000000000000000000686", + "0x0000000000000000000000000000000000000000000000000000000000000687", + "0x0000000000000000000000000000000000000000000000000000000000000688", + "0x0000000000000000000000000000000000000000000000000000000000000689", + "0x000000000000000000000000000000000000000000000000000000000000068a", + "0x000000000000000000000000000000000000000000000000000000000000068b", + "0x000000000000000000000000000000000000000000000000000000000000068c", + "0x000000000000000000000000000000000000000000000000000000000000068d", + "0x000000000000000000000000000000000000000000000000000000000000068e", + "0x000000000000000000000000000000000000000000000000000000000000068f", + "0x0000000000000000000000000000000000000000000000000000000000000690", + "0x0000000000000000000000000000000000000000000000000000000000000691", + "0x0000000000000000000000000000000000000000000000000000000000000692", + "0x0000000000000000000000000000000000000000000000000000000000000693", + "0x0000000000000000000000000000000000000000000000000000000000000694", + "0x0000000000000000000000000000000000000000000000000000000000000695", + "0x0000000000000000000000000000000000000000000000000000000000000696", + "0x0000000000000000000000000000000000000000000000000000000000000697", + "0x0000000000000000000000000000000000000000000000000000000000000698", + "0x0000000000000000000000000000000000000000000000000000000000000699", + "0x000000000000000000000000000000000000000000000000000000000000069a", + "0x000000000000000000000000000000000000000000000000000000000000069b", + "0x000000000000000000000000000000000000000000000000000000000000069c", + "0x000000000000000000000000000000000000000000000000000000000000069d", + "0x000000000000000000000000000000000000000000000000000000000000069e", + "0x000000000000000000000000000000000000000000000000000000000000069f", + "0x00000000000000000000000000000000000000000000000000000000000006a0", + "0x00000000000000000000000000000000000000000000000000000000000006a1", + "0x00000000000000000000000000000000000000000000000000000000000006a2", + "0x00000000000000000000000000000000000000000000000000000000000006a3", + "0x00000000000000000000000000000000000000000000000000000000000006a4", + "0x00000000000000000000000000000000000000000000000000000000000006a5", + "0x00000000000000000000000000000000000000000000000000000000000006a6", + "0x00000000000000000000000000000000000000000000000000000000000006a7", + "0x00000000000000000000000000000000000000000000000000000000000006a8", + "0x00000000000000000000000000000000000000000000000000000000000006a9", + "0x00000000000000000000000000000000000000000000000000000000000006aa", + "0x00000000000000000000000000000000000000000000000000000000000006ab", + "0x00000000000000000000000000000000000000000000000000000000000006ac", + "0x00000000000000000000000000000000000000000000000000000000000006ad", + "0x00000000000000000000000000000000000000000000000000000000000006ae", + "0x00000000000000000000000000000000000000000000000000000000000006af", + "0x00000000000000000000000000000000000000000000000000000000000006b0", + "0x00000000000000000000000000000000000000000000000000000000000006b1", + "0x00000000000000000000000000000000000000000000000000000000000006b2", + "0x00000000000000000000000000000000000000000000000000000000000006b3", + "0x00000000000000000000000000000000000000000000000000000000000006b4", + "0x00000000000000000000000000000000000000000000000000000000000006b5", + "0x00000000000000000000000000000000000000000000000000000000000006b6", + "0x00000000000000000000000000000000000000000000000000000000000006b7", + "0x00000000000000000000000000000000000000000000000000000000000006b8", + "0x00000000000000000000000000000000000000000000000000000000000006b9", + "0x00000000000000000000000000000000000000000000000000000000000006ba", + "0x00000000000000000000000000000000000000000000000000000000000006bb", + "0x00000000000000000000000000000000000000000000000000000000000006bc", + "0x00000000000000000000000000000000000000000000000000000000000006bd", + "0x00000000000000000000000000000000000000000000000000000000000006be", + "0x00000000000000000000000000000000000000000000000000000000000006bf", + "0x00000000000000000000000000000000000000000000000000000000000006c0", + "0x00000000000000000000000000000000000000000000000000000000000006c1", + "0x00000000000000000000000000000000000000000000000000000000000006c2", + "0x00000000000000000000000000000000000000000000000000000000000006c3", + "0x00000000000000000000000000000000000000000000000000000000000006c4", + "0x00000000000000000000000000000000000000000000000000000000000006c5", + "0x00000000000000000000000000000000000000000000000000000000000006c6", + "0x00000000000000000000000000000000000000000000000000000000000006c7", + "0x00000000000000000000000000000000000000000000000000000000000006c8", + "0x00000000000000000000000000000000000000000000000000000000000006c9", + "0x00000000000000000000000000000000000000000000000000000000000006ca", + "0x00000000000000000000000000000000000000000000000000000000000006cb", + "0x00000000000000000000000000000000000000000000000000000000000006cc", + "0x00000000000000000000000000000000000000000000000000000000000006cd", + "0x00000000000000000000000000000000000000000000000000000000000006ce", + "0x00000000000000000000000000000000000000000000000000000000000006cf", + "0x00000000000000000000000000000000000000000000000000000000000006d0", + "0x00000000000000000000000000000000000000000000000000000000000006d1", + "0x00000000000000000000000000000000000000000000000000000000000006d2", + "0x00000000000000000000000000000000000000000000000000000000000006d3", + "0x00000000000000000000000000000000000000000000000000000000000006d4", + "0x00000000000000000000000000000000000000000000000000000000000006d5", + "0x00000000000000000000000000000000000000000000000000000000000006d6", + "0x00000000000000000000000000000000000000000000000000000000000006d7", + "0x00000000000000000000000000000000000000000000000000000000000006d8", + "0x00000000000000000000000000000000000000000000000000000000000006d9", + "0x00000000000000000000000000000000000000000000000000000000000006da", + "0x00000000000000000000000000000000000000000000000000000000000006db", + "0x00000000000000000000000000000000000000000000000000000000000006dc", + "0x00000000000000000000000000000000000000000000000000000000000006dd", + "0x00000000000000000000000000000000000000000000000000000000000006de", + "0x00000000000000000000000000000000000000000000000000000000000006df", + "0x00000000000000000000000000000000000000000000000000000000000006e0", + "0x00000000000000000000000000000000000000000000000000000000000006e1", + "0x00000000000000000000000000000000000000000000000000000000000006e2", + "0x00000000000000000000000000000000000000000000000000000000000006e3", + "0x00000000000000000000000000000000000000000000000000000000000006e4", + "0x00000000000000000000000000000000000000000000000000000000000006e5", + "0x00000000000000000000000000000000000000000000000000000000000006e6", + "0x00000000000000000000000000000000000000000000000000000000000006e7", + "0x00000000000000000000000000000000000000000000000000000000000006e8", + "0x00000000000000000000000000000000000000000000000000000000000006e9", + "0x00000000000000000000000000000000000000000000000000000000000006ea", + "0x00000000000000000000000000000000000000000000000000000000000006eb", + "0x00000000000000000000000000000000000000000000000000000000000006ec", + "0x00000000000000000000000000000000000000000000000000000000000006ed", + "0x00000000000000000000000000000000000000000000000000000000000006ee", + "0x00000000000000000000000000000000000000000000000000000000000006ef", + "0x00000000000000000000000000000000000000000000000000000000000006f0", + "0x00000000000000000000000000000000000000000000000000000000000006f1", + "0x00000000000000000000000000000000000000000000000000000000000006f2", + "0x00000000000000000000000000000000000000000000000000000000000006f3", + "0x00000000000000000000000000000000000000000000000000000000000006f4", + "0x00000000000000000000000000000000000000000000000000000000000006f5", + "0x00000000000000000000000000000000000000000000000000000000000006f6", + "0x00000000000000000000000000000000000000000000000000000000000006f7", + "0x00000000000000000000000000000000000000000000000000000000000006f8", + "0x00000000000000000000000000000000000000000000000000000000000006f9", + "0x00000000000000000000000000000000000000000000000000000000000006fa", + "0x00000000000000000000000000000000000000000000000000000000000006fb", + "0x00000000000000000000000000000000000000000000000000000000000006fc", + "0x00000000000000000000000000000000000000000000000000000000000006fd", + "0x00000000000000000000000000000000000000000000000000000000000006fe", + "0x00000000000000000000000000000000000000000000000000000000000006ff", + "0x0000000000000000000000000000000000000000000000000000000000000700", + "0x0000000000000000000000000000000000000000000000000000000000000701", + "0x0000000000000000000000000000000000000000000000000000000000000702", + "0x0000000000000000000000000000000000000000000000000000000000000703", + "0x0000000000000000000000000000000000000000000000000000000000000704", + "0x0000000000000000000000000000000000000000000000000000000000000705", + "0x0000000000000000000000000000000000000000000000000000000000000706", + "0x0000000000000000000000000000000000000000000000000000000000000707", + "0x0000000000000000000000000000000000000000000000000000000000000708", + "0x0000000000000000000000000000000000000000000000000000000000000709", + "0x000000000000000000000000000000000000000000000000000000000000070a", + "0x000000000000000000000000000000000000000000000000000000000000070b", + "0x000000000000000000000000000000000000000000000000000000000000070c", + "0x000000000000000000000000000000000000000000000000000000000000070d", + "0x000000000000000000000000000000000000000000000000000000000000070e", + "0x000000000000000000000000000000000000000000000000000000000000070f", + "0x0000000000000000000000000000000000000000000000000000000000000710", + "0x0000000000000000000000000000000000000000000000000000000000000711", + "0x0000000000000000000000000000000000000000000000000000000000000712", + "0x0000000000000000000000000000000000000000000000000000000000000713", + "0x0000000000000000000000000000000000000000000000000000000000000714", + "0x0000000000000000000000000000000000000000000000000000000000000715", + "0x0000000000000000000000000000000000000000000000000000000000000716", + "0x0000000000000000000000000000000000000000000000000000000000000717", + "0x0000000000000000000000000000000000000000000000000000000000000718", + "0x0000000000000000000000000000000000000000000000000000000000000719", + "0x000000000000000000000000000000000000000000000000000000000000071a", + "0x000000000000000000000000000000000000000000000000000000000000071b", + "0x000000000000000000000000000000000000000000000000000000000000071c", + "0x000000000000000000000000000000000000000000000000000000000000071d", + "0x000000000000000000000000000000000000000000000000000000000000071e", + "0x000000000000000000000000000000000000000000000000000000000000071f", + "0x0000000000000000000000000000000000000000000000000000000000000720", + "0x0000000000000000000000000000000000000000000000000000000000000721", + "0x0000000000000000000000000000000000000000000000000000000000000722", + "0x0000000000000000000000000000000000000000000000000000000000000723", + "0x0000000000000000000000000000000000000000000000000000000000000724", + "0x0000000000000000000000000000000000000000000000000000000000000725", + "0x0000000000000000000000000000000000000000000000000000000000000726", + "0x0000000000000000000000000000000000000000000000000000000000000727", + "0x0000000000000000000000000000000000000000000000000000000000000728", + "0x0000000000000000000000000000000000000000000000000000000000000729", + "0x000000000000000000000000000000000000000000000000000000000000072a", + "0x000000000000000000000000000000000000000000000000000000000000072b", + "0x000000000000000000000000000000000000000000000000000000000000072c", + "0x000000000000000000000000000000000000000000000000000000000000072d", + "0x000000000000000000000000000000000000000000000000000000000000072e", + "0x000000000000000000000000000000000000000000000000000000000000072f", + "0x0000000000000000000000000000000000000000000000000000000000000730", + "0x0000000000000000000000000000000000000000000000000000000000000731", + "0x0000000000000000000000000000000000000000000000000000000000000732", + "0x0000000000000000000000000000000000000000000000000000000000000733", + "0x0000000000000000000000000000000000000000000000000000000000000734", + "0x0000000000000000000000000000000000000000000000000000000000000735", + "0x0000000000000000000000000000000000000000000000000000000000000736", + "0x0000000000000000000000000000000000000000000000000000000000000737", + "0x0000000000000000000000000000000000000000000000000000000000000738", + "0x0000000000000000000000000000000000000000000000000000000000000739", + "0x000000000000000000000000000000000000000000000000000000000000073a", + "0x000000000000000000000000000000000000000000000000000000000000073b", + "0x000000000000000000000000000000000000000000000000000000000000073c", + "0x000000000000000000000000000000000000000000000000000000000000073d", + "0x000000000000000000000000000000000000000000000000000000000000073e", + "0x000000000000000000000000000000000000000000000000000000000000073f", + "0x0000000000000000000000000000000000000000000000000000000000000740", + "0x0000000000000000000000000000000000000000000000000000000000000741", + "0x0000000000000000000000000000000000000000000000000000000000000742", + "0x0000000000000000000000000000000000000000000000000000000000000743", + "0x0000000000000000000000000000000000000000000000000000000000000744", + "0x0000000000000000000000000000000000000000000000000000000000000745", + "0x0000000000000000000000000000000000000000000000000000000000000746", + "0x0000000000000000000000000000000000000000000000000000000000000747", + "0x0000000000000000000000000000000000000000000000000000000000000748", + "0x0000000000000000000000000000000000000000000000000000000000000749", + "0x000000000000000000000000000000000000000000000000000000000000074a", + "0x000000000000000000000000000000000000000000000000000000000000074b", + "0x000000000000000000000000000000000000000000000000000000000000074c", + "0x000000000000000000000000000000000000000000000000000000000000074d", + "0x000000000000000000000000000000000000000000000000000000000000074e", + "0x000000000000000000000000000000000000000000000000000000000000074f", + "0x0000000000000000000000000000000000000000000000000000000000000750", + "0x0000000000000000000000000000000000000000000000000000000000000751", + "0x0000000000000000000000000000000000000000000000000000000000000752", + "0x0000000000000000000000000000000000000000000000000000000000000753", + "0x0000000000000000000000000000000000000000000000000000000000000754", + "0x0000000000000000000000000000000000000000000000000000000000000755", + "0x0000000000000000000000000000000000000000000000000000000000000756", + "0x0000000000000000000000000000000000000000000000000000000000000757", + "0x0000000000000000000000000000000000000000000000000000000000000758", + "0x0000000000000000000000000000000000000000000000000000000000000759", + "0x000000000000000000000000000000000000000000000000000000000000075a", + "0x000000000000000000000000000000000000000000000000000000000000075b", + "0x000000000000000000000000000000000000000000000000000000000000075c", + "0x000000000000000000000000000000000000000000000000000000000000075d", + "0x000000000000000000000000000000000000000000000000000000000000075e", + "0x000000000000000000000000000000000000000000000000000000000000075f", + "0x0000000000000000000000000000000000000000000000000000000000000760", + "0x0000000000000000000000000000000000000000000000000000000000000761", + "0x0000000000000000000000000000000000000000000000000000000000000762", + "0x0000000000000000000000000000000000000000000000000000000000000763", + "0x0000000000000000000000000000000000000000000000000000000000000764", + "0x0000000000000000000000000000000000000000000000000000000000000765", + "0x0000000000000000000000000000000000000000000000000000000000000766", + "0x0000000000000000000000000000000000000000000000000000000000000767", + "0x0000000000000000000000000000000000000000000000000000000000000768", + "0x0000000000000000000000000000000000000000000000000000000000000769", + "0x000000000000000000000000000000000000000000000000000000000000076a", + "0x000000000000000000000000000000000000000000000000000000000000076b", + "0x000000000000000000000000000000000000000000000000000000000000076c", + "0x000000000000000000000000000000000000000000000000000000000000076d", + "0x000000000000000000000000000000000000000000000000000000000000076e", + "0x000000000000000000000000000000000000000000000000000000000000076f", + "0x0000000000000000000000000000000000000000000000000000000000000770", + "0x0000000000000000000000000000000000000000000000000000000000000771", + "0x0000000000000000000000000000000000000000000000000000000000000772", + "0x0000000000000000000000000000000000000000000000000000000000000773", + "0x0000000000000000000000000000000000000000000000000000000000000774", + "0x0000000000000000000000000000000000000000000000000000000000000775", + "0x0000000000000000000000000000000000000000000000000000000000000776", + "0x0000000000000000000000000000000000000000000000000000000000000777", + "0x0000000000000000000000000000000000000000000000000000000000000778", + "0x0000000000000000000000000000000000000000000000000000000000000779", + "0x000000000000000000000000000000000000000000000000000000000000077a", + "0x000000000000000000000000000000000000000000000000000000000000077b", + "0x000000000000000000000000000000000000000000000000000000000000077c", + "0x000000000000000000000000000000000000000000000000000000000000077d", + "0x000000000000000000000000000000000000000000000000000000000000077e", + "0x000000000000000000000000000000000000000000000000000000000000077f", + "0x0000000000000000000000000000000000000000000000000000000000000780", + "0x0000000000000000000000000000000000000000000000000000000000000781", + "0x0000000000000000000000000000000000000000000000000000000000000782", + "0x0000000000000000000000000000000000000000000000000000000000000783", + "0x0000000000000000000000000000000000000000000000000000000000000784", + "0x0000000000000000000000000000000000000000000000000000000000000785", + "0x0000000000000000000000000000000000000000000000000000000000000786", + "0x0000000000000000000000000000000000000000000000000000000000000787", + "0x0000000000000000000000000000000000000000000000000000000000000788", + "0x0000000000000000000000000000000000000000000000000000000000000789", + "0x000000000000000000000000000000000000000000000000000000000000078a", + "0x000000000000000000000000000000000000000000000000000000000000078b", + "0x000000000000000000000000000000000000000000000000000000000000078c", + "0x000000000000000000000000000000000000000000000000000000000000078d", + "0x000000000000000000000000000000000000000000000000000000000000078e", + "0x000000000000000000000000000000000000000000000000000000000000078f", + "0x0000000000000000000000000000000000000000000000000000000000000790", + "0x0000000000000000000000000000000000000000000000000000000000000791", + "0x0000000000000000000000000000000000000000000000000000000000000792", + "0x0000000000000000000000000000000000000000000000000000000000000793", + "0x0000000000000000000000000000000000000000000000000000000000000794", + "0x0000000000000000000000000000000000000000000000000000000000000795", + "0x0000000000000000000000000000000000000000000000000000000000000796", + "0x0000000000000000000000000000000000000000000000000000000000000797", + "0x0000000000000000000000000000000000000000000000000000000000000798", + "0x0000000000000000000000000000000000000000000000000000000000000799", + "0x000000000000000000000000000000000000000000000000000000000000079a", + "0x000000000000000000000000000000000000000000000000000000000000079b", + "0x000000000000000000000000000000000000000000000000000000000000079c", + "0x000000000000000000000000000000000000000000000000000000000000079d", + "0x000000000000000000000000000000000000000000000000000000000000079e", + "0x000000000000000000000000000000000000000000000000000000000000079f", + "0x00000000000000000000000000000000000000000000000000000000000007a0", + "0x00000000000000000000000000000000000000000000000000000000000007a1", + "0x00000000000000000000000000000000000000000000000000000000000007a2", + "0x00000000000000000000000000000000000000000000000000000000000007a3", + "0x00000000000000000000000000000000000000000000000000000000000007a4", + "0x00000000000000000000000000000000000000000000000000000000000007a5", + "0x00000000000000000000000000000000000000000000000000000000000007a6", + "0x00000000000000000000000000000000000000000000000000000000000007a7", + "0x00000000000000000000000000000000000000000000000000000000000007a8", + "0x00000000000000000000000000000000000000000000000000000000000007a9", + "0x00000000000000000000000000000000000000000000000000000000000007aa", + "0x00000000000000000000000000000000000000000000000000000000000007ab", + "0x00000000000000000000000000000000000000000000000000000000000007ac", + "0x00000000000000000000000000000000000000000000000000000000000007ad", + "0x00000000000000000000000000000000000000000000000000000000000007ae", + "0x00000000000000000000000000000000000000000000000000000000000007af", + "0x00000000000000000000000000000000000000000000000000000000000007b0", + "0x00000000000000000000000000000000000000000000000000000000000007b1", + "0x00000000000000000000000000000000000000000000000000000000000007b2", + "0x00000000000000000000000000000000000000000000000000000000000007b3", + "0x00000000000000000000000000000000000000000000000000000000000007b4", + "0x00000000000000000000000000000000000000000000000000000000000007b5", + "0x00000000000000000000000000000000000000000000000000000000000007b6", + "0x00000000000000000000000000000000000000000000000000000000000007b7", + "0x00000000000000000000000000000000000000000000000000000000000007b8", + "0x00000000000000000000000000000000000000000000000000000000000007b9", + "0x00000000000000000000000000000000000000000000000000000000000007ba", + "0x00000000000000000000000000000000000000000000000000000000000007bb", + "0x00000000000000000000000000000000000000000000000000000000000007bc", + "0x00000000000000000000000000000000000000000000000000000000000007bd", + "0x00000000000000000000000000000000000000000000000000000000000007be", + "0x00000000000000000000000000000000000000000000000000000000000007bf", + "0x00000000000000000000000000000000000000000000000000000000000007c0", + "0x00000000000000000000000000000000000000000000000000000000000007c1", + "0x00000000000000000000000000000000000000000000000000000000000007c2", + "0x00000000000000000000000000000000000000000000000000000000000007c3", + "0x00000000000000000000000000000000000000000000000000000000000007c4", + "0x00000000000000000000000000000000000000000000000000000000000007c5", + "0x00000000000000000000000000000000000000000000000000000000000007c6", + "0x00000000000000000000000000000000000000000000000000000000000007c7", + "0x00000000000000000000000000000000000000000000000000000000000007c8", + "0x00000000000000000000000000000000000000000000000000000000000007c9", + "0x00000000000000000000000000000000000000000000000000000000000007ca", + "0x00000000000000000000000000000000000000000000000000000000000007cb", + "0x00000000000000000000000000000000000000000000000000000000000007cc", + "0x00000000000000000000000000000000000000000000000000000000000007cd", + "0x00000000000000000000000000000000000000000000000000000000000007ce", + "0x00000000000000000000000000000000000000000000000000000000000007cf", + "0x00000000000000000000000000000000000000000000000000000000000007d0", + "0x00000000000000000000000000000000000000000000000000000000000007d1", + "0x00000000000000000000000000000000000000000000000000000000000007d2", + "0x00000000000000000000000000000000000000000000000000000000000007d3", + "0x00000000000000000000000000000000000000000000000000000000000007d4", + "0x00000000000000000000000000000000000000000000000000000000000007d5", + "0x00000000000000000000000000000000000000000000000000000000000007d6", + "0x00000000000000000000000000000000000000000000000000000000000007d7", + "0x00000000000000000000000000000000000000000000000000000000000007d8", + "0x00000000000000000000000000000000000000000000000000000000000007d9", + "0x00000000000000000000000000000000000000000000000000000000000007da", + "0x00000000000000000000000000000000000000000000000000000000000007db", + "0x00000000000000000000000000000000000000000000000000000000000007dc", + "0x00000000000000000000000000000000000000000000000000000000000007dd", + "0x00000000000000000000000000000000000000000000000000000000000007de", + "0x00000000000000000000000000000000000000000000000000000000000007df", + "0x00000000000000000000000000000000000000000000000000000000000007e0", + "0x00000000000000000000000000000000000000000000000000000000000007e1", + "0x00000000000000000000000000000000000000000000000000000000000007e2", + "0x00000000000000000000000000000000000000000000000000000000000007e3", + "0x00000000000000000000000000000000000000000000000000000000000007e4", + "0x00000000000000000000000000000000000000000000000000000000000007e5", + "0x00000000000000000000000000000000000000000000000000000000000007e6", + "0x00000000000000000000000000000000000000000000000000000000000007e7", + "0x00000000000000000000000000000000000000000000000000000000000007e8", + "0x00000000000000000000000000000000000000000000000000000000000007e9", + "0x00000000000000000000000000000000000000000000000000000000000007ea", + "0x00000000000000000000000000000000000000000000000000000000000007eb", + "0x00000000000000000000000000000000000000000000000000000000000007ec", + "0x00000000000000000000000000000000000000000000000000000000000007ed", + "0x00000000000000000000000000000000000000000000000000000000000007ee", + "0x00000000000000000000000000000000000000000000000000000000000007ef", + "0x00000000000000000000000000000000000000000000000000000000000007f0", + "0x00000000000000000000000000000000000000000000000000000000000007f1", + "0x00000000000000000000000000000000000000000000000000000000000007f2", + "0x00000000000000000000000000000000000000000000000000000000000007f3", + "0x00000000000000000000000000000000000000000000000000000000000007f4", + "0x00000000000000000000000000000000000000000000000000000000000007f5", + "0x00000000000000000000000000000000000000000000000000000000000007f6", + "0x00000000000000000000000000000000000000000000000000000000000007f7", + "0x00000000000000000000000000000000000000000000000000000000000007f8", + "0x00000000000000000000000000000000000000000000000000000000000007f9", + "0x00000000000000000000000000000000000000000000000000000000000007fa", + "0x00000000000000000000000000000000000000000000000000000000000007fb", + "0x00000000000000000000000000000000000000000000000000000000000007fc", + "0x00000000000000000000000000000000000000000000000000000000000007fd", + "0x00000000000000000000000000000000000000000000000000000000000007fe", + "0x00000000000000000000000000000000000000000000000000000000000007ff", + "0x0000000000000000000000000000000000000000000000000000000000000800", + "0x0000000000000000000000000000000000000000000000000000000000000801", + "0x0000000000000000000000000000000000000000000000000000000000000802", + "0x0000000000000000000000000000000000000000000000000000000000000803", + "0x0000000000000000000000000000000000000000000000000000000000000804", + "0x0000000000000000000000000000000000000000000000000000000000000805", + "0x0000000000000000000000000000000000000000000000000000000000000806", + "0x0000000000000000000000000000000000000000000000000000000000000807", + "0x0000000000000000000000000000000000000000000000000000000000000808", + "0x0000000000000000000000000000000000000000000000000000000000000809", + "0x000000000000000000000000000000000000000000000000000000000000080a", + "0x000000000000000000000000000000000000000000000000000000000000080b", + "0x000000000000000000000000000000000000000000000000000000000000080c", + "0x000000000000000000000000000000000000000000000000000000000000080d", + "0x000000000000000000000000000000000000000000000000000000000000080e", + "0x000000000000000000000000000000000000000000000000000000000000080f", + "0x0000000000000000000000000000000000000000000000000000000000000810", + "0x0000000000000000000000000000000000000000000000000000000000000811", + "0x0000000000000000000000000000000000000000000000000000000000000812", + "0x0000000000000000000000000000000000000000000000000000000000000813", + "0x0000000000000000000000000000000000000000000000000000000000000814", + "0x0000000000000000000000000000000000000000000000000000000000000815", + "0x0000000000000000000000000000000000000000000000000000000000000816", + "0x0000000000000000000000000000000000000000000000000000000000000817", + "0x0000000000000000000000000000000000000000000000000000000000000818", + "0x0000000000000000000000000000000000000000000000000000000000000819", + "0x000000000000000000000000000000000000000000000000000000000000081a", + "0x000000000000000000000000000000000000000000000000000000000000081b", + "0x000000000000000000000000000000000000000000000000000000000000081c", + "0x000000000000000000000000000000000000000000000000000000000000081d", + "0x000000000000000000000000000000000000000000000000000000000000081e", + "0x000000000000000000000000000000000000000000000000000000000000081f", + "0x0000000000000000000000000000000000000000000000000000000000000820", + "0x0000000000000000000000000000000000000000000000000000000000000821", + "0x0000000000000000000000000000000000000000000000000000000000000822", + "0x0000000000000000000000000000000000000000000000000000000000000823", + "0x0000000000000000000000000000000000000000000000000000000000000824", + "0x0000000000000000000000000000000000000000000000000000000000000825", + "0x0000000000000000000000000000000000000000000000000000000000000826", + "0x0000000000000000000000000000000000000000000000000000000000000827", + "0x0000000000000000000000000000000000000000000000000000000000000828", + "0x0000000000000000000000000000000000000000000000000000000000000829", + "0x000000000000000000000000000000000000000000000000000000000000082a", + "0x000000000000000000000000000000000000000000000000000000000000082b", + "0x000000000000000000000000000000000000000000000000000000000000082c", + "0x000000000000000000000000000000000000000000000000000000000000082d", + "0x000000000000000000000000000000000000000000000000000000000000082e", + "0x000000000000000000000000000000000000000000000000000000000000082f", + "0x0000000000000000000000000000000000000000000000000000000000000830", + "0x0000000000000000000000000000000000000000000000000000000000000831", + "0x0000000000000000000000000000000000000000000000000000000000000832", + "0x0000000000000000000000000000000000000000000000000000000000000833", + "0x0000000000000000000000000000000000000000000000000000000000000834", + "0x0000000000000000000000000000000000000000000000000000000000000835", + "0x0000000000000000000000000000000000000000000000000000000000000836", + "0x0000000000000000000000000000000000000000000000000000000000000837", + "0x0000000000000000000000000000000000000000000000000000000000000838", + "0x0000000000000000000000000000000000000000000000000000000000000839", + "0x000000000000000000000000000000000000000000000000000000000000083a", + "0x000000000000000000000000000000000000000000000000000000000000083b", + "0x000000000000000000000000000000000000000000000000000000000000083c", + "0x000000000000000000000000000000000000000000000000000000000000083d", + "0x000000000000000000000000000000000000000000000000000000000000083e", + "0x000000000000000000000000000000000000000000000000000000000000083f", + "0x0000000000000000000000000000000000000000000000000000000000000840", + "0x0000000000000000000000000000000000000000000000000000000000000841", + "0x0000000000000000000000000000000000000000000000000000000000000842", + "0x0000000000000000000000000000000000000000000000000000000000000843", + "0x0000000000000000000000000000000000000000000000000000000000000844", + "0x0000000000000000000000000000000000000000000000000000000000000845", + "0x0000000000000000000000000000000000000000000000000000000000000846", + "0x0000000000000000000000000000000000000000000000000000000000000847", + "0x0000000000000000000000000000000000000000000000000000000000000848", + "0x0000000000000000000000000000000000000000000000000000000000000849", + "0x000000000000000000000000000000000000000000000000000000000000084a", + "0x000000000000000000000000000000000000000000000000000000000000084b", + "0x000000000000000000000000000000000000000000000000000000000000084c", + "0x000000000000000000000000000000000000000000000000000000000000084d", + "0x000000000000000000000000000000000000000000000000000000000000084e", + "0x000000000000000000000000000000000000000000000000000000000000084f", + "0x0000000000000000000000000000000000000000000000000000000000000850", + "0x0000000000000000000000000000000000000000000000000000000000000851", + "0x0000000000000000000000000000000000000000000000000000000000000852", + "0x0000000000000000000000000000000000000000000000000000000000000853", + "0x0000000000000000000000000000000000000000000000000000000000000854", + "0x0000000000000000000000000000000000000000000000000000000000000855", + "0x0000000000000000000000000000000000000000000000000000000000000856", + "0x0000000000000000000000000000000000000000000000000000000000000857", + "0x0000000000000000000000000000000000000000000000000000000000000858", + "0x0000000000000000000000000000000000000000000000000000000000000859", + "0x000000000000000000000000000000000000000000000000000000000000085a", + "0x000000000000000000000000000000000000000000000000000000000000085b", + "0x000000000000000000000000000000000000000000000000000000000000085c", + "0x000000000000000000000000000000000000000000000000000000000000085d", + "0x000000000000000000000000000000000000000000000000000000000000085e", + "0x000000000000000000000000000000000000000000000000000000000000085f", + "0x0000000000000000000000000000000000000000000000000000000000000860", + "0x0000000000000000000000000000000000000000000000000000000000000861", + "0x0000000000000000000000000000000000000000000000000000000000000862", + "0x0000000000000000000000000000000000000000000000000000000000000863", + "0x0000000000000000000000000000000000000000000000000000000000000864", + "0x0000000000000000000000000000000000000000000000000000000000000865", + "0x0000000000000000000000000000000000000000000000000000000000000866", + "0x0000000000000000000000000000000000000000000000000000000000000867", + "0x0000000000000000000000000000000000000000000000000000000000000868", + "0x0000000000000000000000000000000000000000000000000000000000000869", + "0x000000000000000000000000000000000000000000000000000000000000086a", + "0x000000000000000000000000000000000000000000000000000000000000086b", + "0x000000000000000000000000000000000000000000000000000000000000086c", + "0x000000000000000000000000000000000000000000000000000000000000086d", + "0x000000000000000000000000000000000000000000000000000000000000086e", + "0x000000000000000000000000000000000000000000000000000000000000086f", + "0x0000000000000000000000000000000000000000000000000000000000000870", + "0x0000000000000000000000000000000000000000000000000000000000000871", + "0x0000000000000000000000000000000000000000000000000000000000000872", + "0x0000000000000000000000000000000000000000000000000000000000000873", + "0x0000000000000000000000000000000000000000000000000000000000000874", + "0x0000000000000000000000000000000000000000000000000000000000000875", + "0x0000000000000000000000000000000000000000000000000000000000000876", + "0x0000000000000000000000000000000000000000000000000000000000000877", + "0x0000000000000000000000000000000000000000000000000000000000000878", + "0x0000000000000000000000000000000000000000000000000000000000000879", + "0x000000000000000000000000000000000000000000000000000000000000087a", + "0x000000000000000000000000000000000000000000000000000000000000087b", + "0x000000000000000000000000000000000000000000000000000000000000087c", + "0x000000000000000000000000000000000000000000000000000000000000087d", + "0x000000000000000000000000000000000000000000000000000000000000087e", + "0x000000000000000000000000000000000000000000000000000000000000087f", + "0x0000000000000000000000000000000000000000000000000000000000000880", + "0x0000000000000000000000000000000000000000000000000000000000000881", + "0x0000000000000000000000000000000000000000000000000000000000000882", + "0x0000000000000000000000000000000000000000000000000000000000000883", + "0x0000000000000000000000000000000000000000000000000000000000000884", + "0x0000000000000000000000000000000000000000000000000000000000000885", + "0x0000000000000000000000000000000000000000000000000000000000000886", + "0x0000000000000000000000000000000000000000000000000000000000000887", + "0x0000000000000000000000000000000000000000000000000000000000000888", + "0x0000000000000000000000000000000000000000000000000000000000000889", + "0x000000000000000000000000000000000000000000000000000000000000088a", + "0x000000000000000000000000000000000000000000000000000000000000088b", + "0x000000000000000000000000000000000000000000000000000000000000088c", + "0x000000000000000000000000000000000000000000000000000000000000088d", + "0x000000000000000000000000000000000000000000000000000000000000088e", + "0x000000000000000000000000000000000000000000000000000000000000088f", + "0x0000000000000000000000000000000000000000000000000000000000000890", + "0x0000000000000000000000000000000000000000000000000000000000000891", + "0x0000000000000000000000000000000000000000000000000000000000000892", + "0x0000000000000000000000000000000000000000000000000000000000000893", + "0x0000000000000000000000000000000000000000000000000000000000000894", + "0x0000000000000000000000000000000000000000000000000000000000000895", + "0x0000000000000000000000000000000000000000000000000000000000000896", + "0x0000000000000000000000000000000000000000000000000000000000000897", + "0x0000000000000000000000000000000000000000000000000000000000000898", + "0x0000000000000000000000000000000000000000000000000000000000000899", + "0x000000000000000000000000000000000000000000000000000000000000089a", + "0x000000000000000000000000000000000000000000000000000000000000089b", + "0x000000000000000000000000000000000000000000000000000000000000089c", + "0x000000000000000000000000000000000000000000000000000000000000089d", + "0x000000000000000000000000000000000000000000000000000000000000089e", + "0x000000000000000000000000000000000000000000000000000000000000089f", + "0x00000000000000000000000000000000000000000000000000000000000008a0", + "0x00000000000000000000000000000000000000000000000000000000000008a1", + "0x00000000000000000000000000000000000000000000000000000000000008a2", + "0x00000000000000000000000000000000000000000000000000000000000008a3", + "0x00000000000000000000000000000000000000000000000000000000000008a4", + "0x00000000000000000000000000000000000000000000000000000000000008a5", + "0x00000000000000000000000000000000000000000000000000000000000008a6", + "0x00000000000000000000000000000000000000000000000000000000000008a7", + "0x00000000000000000000000000000000000000000000000000000000000008a8", + "0x00000000000000000000000000000000000000000000000000000000000008a9", + "0x00000000000000000000000000000000000000000000000000000000000008aa", + "0x00000000000000000000000000000000000000000000000000000000000008ab", + "0x00000000000000000000000000000000000000000000000000000000000008ac", + "0x00000000000000000000000000000000000000000000000000000000000008ad", + "0x00000000000000000000000000000000000000000000000000000000000008ae", + "0x00000000000000000000000000000000000000000000000000000000000008af", + "0x00000000000000000000000000000000000000000000000000000000000008b0", + "0x00000000000000000000000000000000000000000000000000000000000008b1", + "0x00000000000000000000000000000000000000000000000000000000000008b2", + "0x00000000000000000000000000000000000000000000000000000000000008b3", + "0x00000000000000000000000000000000000000000000000000000000000008b4", + "0x00000000000000000000000000000000000000000000000000000000000008b5", + "0x00000000000000000000000000000000000000000000000000000000000008b6", + "0x00000000000000000000000000000000000000000000000000000000000008b7", + "0x00000000000000000000000000000000000000000000000000000000000008b8", + "0x00000000000000000000000000000000000000000000000000000000000008b9", + "0x00000000000000000000000000000000000000000000000000000000000008ba", + "0x00000000000000000000000000000000000000000000000000000000000008bb", + "0x00000000000000000000000000000000000000000000000000000000000008bc", + "0x00000000000000000000000000000000000000000000000000000000000008bd", + "0x00000000000000000000000000000000000000000000000000000000000008be", + "0x00000000000000000000000000000000000000000000000000000000000008bf", + "0x00000000000000000000000000000000000000000000000000000000000008c0", + "0x00000000000000000000000000000000000000000000000000000000000008c1", + "0x00000000000000000000000000000000000000000000000000000000000008c2", + "0x00000000000000000000000000000000000000000000000000000000000008c3", + "0x00000000000000000000000000000000000000000000000000000000000008c4", + "0x00000000000000000000000000000000000000000000000000000000000008c5", + "0x00000000000000000000000000000000000000000000000000000000000008c6", + "0x00000000000000000000000000000000000000000000000000000000000008c7", + "0x00000000000000000000000000000000000000000000000000000000000008c8", + "0x00000000000000000000000000000000000000000000000000000000000008c9", + "0x00000000000000000000000000000000000000000000000000000000000008ca", + "0x00000000000000000000000000000000000000000000000000000000000008cb", + "0x00000000000000000000000000000000000000000000000000000000000008cc", + "0x00000000000000000000000000000000000000000000000000000000000008cd", + "0x00000000000000000000000000000000000000000000000000000000000008ce", + "0x00000000000000000000000000000000000000000000000000000000000008cf", + "0x00000000000000000000000000000000000000000000000000000000000008d0", + "0x00000000000000000000000000000000000000000000000000000000000008d1", + "0x00000000000000000000000000000000000000000000000000000000000008d2", + "0x00000000000000000000000000000000000000000000000000000000000008d3", + "0x00000000000000000000000000000000000000000000000000000000000008d4", + "0x00000000000000000000000000000000000000000000000000000000000008d5", + "0x00000000000000000000000000000000000000000000000000000000000008d6", + "0x00000000000000000000000000000000000000000000000000000000000008d7", + "0x00000000000000000000000000000000000000000000000000000000000008d8", + "0x00000000000000000000000000000000000000000000000000000000000008d9", + "0x00000000000000000000000000000000000000000000000000000000000008da", + "0x00000000000000000000000000000000000000000000000000000000000008db", + "0x00000000000000000000000000000000000000000000000000000000000008dc", + "0x00000000000000000000000000000000000000000000000000000000000008dd", + "0x00000000000000000000000000000000000000000000000000000000000008de", + "0x00000000000000000000000000000000000000000000000000000000000008df", + "0x00000000000000000000000000000000000000000000000000000000000008e0", + "0x00000000000000000000000000000000000000000000000000000000000008e1", + "0x00000000000000000000000000000000000000000000000000000000000008e2", + "0x00000000000000000000000000000000000000000000000000000000000008e3", + "0x00000000000000000000000000000000000000000000000000000000000008e4", + "0x00000000000000000000000000000000000000000000000000000000000008e5", + "0x00000000000000000000000000000000000000000000000000000000000008e6", + "0x00000000000000000000000000000000000000000000000000000000000008e7", + "0x00000000000000000000000000000000000000000000000000000000000008e8", + "0x00000000000000000000000000000000000000000000000000000000000008e9", + "0x00000000000000000000000000000000000000000000000000000000000008ea", + "0x00000000000000000000000000000000000000000000000000000000000008eb", + "0x00000000000000000000000000000000000000000000000000000000000008ec", + "0x00000000000000000000000000000000000000000000000000000000000008ed", + "0x00000000000000000000000000000000000000000000000000000000000008ee", + "0x00000000000000000000000000000000000000000000000000000000000008ef", + "0x00000000000000000000000000000000000000000000000000000000000008f0", + "0x00000000000000000000000000000000000000000000000000000000000008f1", + "0x00000000000000000000000000000000000000000000000000000000000008f2", + "0x00000000000000000000000000000000000000000000000000000000000008f3", + "0x00000000000000000000000000000000000000000000000000000000000008f4", + "0x00000000000000000000000000000000000000000000000000000000000008f5", + "0x00000000000000000000000000000000000000000000000000000000000008f6", + "0x00000000000000000000000000000000000000000000000000000000000008f7", + "0x00000000000000000000000000000000000000000000000000000000000008f8", + "0x00000000000000000000000000000000000000000000000000000000000008f9", + "0x00000000000000000000000000000000000000000000000000000000000008fa", + "0x00000000000000000000000000000000000000000000000000000000000008fb", + "0x00000000000000000000000000000000000000000000000000000000000008fc", + "0x00000000000000000000000000000000000000000000000000000000000008fd", + "0x00000000000000000000000000000000000000000000000000000000000008fe", + "0x00000000000000000000000000000000000000000000000000000000000008ff", + "0x0000000000000000000000000000000000000000000000000000000000000900", + "0x0000000000000000000000000000000000000000000000000000000000000901", + "0x0000000000000000000000000000000000000000000000000000000000000902", + "0x0000000000000000000000000000000000000000000000000000000000000903", + "0x0000000000000000000000000000000000000000000000000000000000000904", + "0x0000000000000000000000000000000000000000000000000000000000000905", + "0x0000000000000000000000000000000000000000000000000000000000000906", + "0x0000000000000000000000000000000000000000000000000000000000000907", + "0x0000000000000000000000000000000000000000000000000000000000000908", + "0x0000000000000000000000000000000000000000000000000000000000000909", + "0x000000000000000000000000000000000000000000000000000000000000090a", + "0x000000000000000000000000000000000000000000000000000000000000090b", + "0x000000000000000000000000000000000000000000000000000000000000090c", + "0x000000000000000000000000000000000000000000000000000000000000090d", + "0x000000000000000000000000000000000000000000000000000000000000090e", + "0x000000000000000000000000000000000000000000000000000000000000090f", + "0x0000000000000000000000000000000000000000000000000000000000000910", + "0x0000000000000000000000000000000000000000000000000000000000000911", + "0x0000000000000000000000000000000000000000000000000000000000000912", + "0x0000000000000000000000000000000000000000000000000000000000000913", + "0x0000000000000000000000000000000000000000000000000000000000000914", + "0x0000000000000000000000000000000000000000000000000000000000000915", + "0x0000000000000000000000000000000000000000000000000000000000000916", + "0x0000000000000000000000000000000000000000000000000000000000000917", + "0x0000000000000000000000000000000000000000000000000000000000000918", + "0x0000000000000000000000000000000000000000000000000000000000000919", + "0x000000000000000000000000000000000000000000000000000000000000091a", + "0x000000000000000000000000000000000000000000000000000000000000091b", + "0x000000000000000000000000000000000000000000000000000000000000091c", + "0x000000000000000000000000000000000000000000000000000000000000091d", + "0x000000000000000000000000000000000000000000000000000000000000091e", + "0x000000000000000000000000000000000000000000000000000000000000091f", + "0x0000000000000000000000000000000000000000000000000000000000000920", + "0x0000000000000000000000000000000000000000000000000000000000000921", + "0x0000000000000000000000000000000000000000000000000000000000000922", + "0x0000000000000000000000000000000000000000000000000000000000000923", + "0x0000000000000000000000000000000000000000000000000000000000000924", + "0x0000000000000000000000000000000000000000000000000000000000000925", + "0x0000000000000000000000000000000000000000000000000000000000000926", + "0x0000000000000000000000000000000000000000000000000000000000000927", + "0x0000000000000000000000000000000000000000000000000000000000000928", + "0x0000000000000000000000000000000000000000000000000000000000000929", + "0x000000000000000000000000000000000000000000000000000000000000092a", + "0x000000000000000000000000000000000000000000000000000000000000092b", + "0x000000000000000000000000000000000000000000000000000000000000092c", + "0x000000000000000000000000000000000000000000000000000000000000092d", + "0x000000000000000000000000000000000000000000000000000000000000092e", + "0x000000000000000000000000000000000000000000000000000000000000092f", + "0x0000000000000000000000000000000000000000000000000000000000000930", + "0x0000000000000000000000000000000000000000000000000000000000000931", + "0x0000000000000000000000000000000000000000000000000000000000000932", + "0x0000000000000000000000000000000000000000000000000000000000000933", + "0x0000000000000000000000000000000000000000000000000000000000000934", + "0x0000000000000000000000000000000000000000000000000000000000000935", + "0x0000000000000000000000000000000000000000000000000000000000000936", + "0x0000000000000000000000000000000000000000000000000000000000000937", + "0x0000000000000000000000000000000000000000000000000000000000000938", + "0x0000000000000000000000000000000000000000000000000000000000000939", + "0x000000000000000000000000000000000000000000000000000000000000093a", + "0x000000000000000000000000000000000000000000000000000000000000093b", + "0x000000000000000000000000000000000000000000000000000000000000093c", + "0x000000000000000000000000000000000000000000000000000000000000093d", + "0x000000000000000000000000000000000000000000000000000000000000093e", + "0x000000000000000000000000000000000000000000000000000000000000093f", + "0x0000000000000000000000000000000000000000000000000000000000000940", + "0x0000000000000000000000000000000000000000000000000000000000000941", + "0x0000000000000000000000000000000000000000000000000000000000000942", + "0x0000000000000000000000000000000000000000000000000000000000000943", + "0x0000000000000000000000000000000000000000000000000000000000000944", + "0x0000000000000000000000000000000000000000000000000000000000000945", + "0x0000000000000000000000000000000000000000000000000000000000000946", + "0x0000000000000000000000000000000000000000000000000000000000000947", + "0x0000000000000000000000000000000000000000000000000000000000000948", + "0x0000000000000000000000000000000000000000000000000000000000000949", + "0x000000000000000000000000000000000000000000000000000000000000094a", + "0x000000000000000000000000000000000000000000000000000000000000094b", + "0x000000000000000000000000000000000000000000000000000000000000094c", + "0x000000000000000000000000000000000000000000000000000000000000094d", + "0x000000000000000000000000000000000000000000000000000000000000094e", + "0x000000000000000000000000000000000000000000000000000000000000094f", + "0x0000000000000000000000000000000000000000000000000000000000000950", + "0x0000000000000000000000000000000000000000000000000000000000000951", + "0x0000000000000000000000000000000000000000000000000000000000000952", + "0x0000000000000000000000000000000000000000000000000000000000000953", + "0x0000000000000000000000000000000000000000000000000000000000000954", + "0x0000000000000000000000000000000000000000000000000000000000000955", + "0x0000000000000000000000000000000000000000000000000000000000000956", + "0x0000000000000000000000000000000000000000000000000000000000000957", + "0x0000000000000000000000000000000000000000000000000000000000000958", + "0x0000000000000000000000000000000000000000000000000000000000000959", + "0x000000000000000000000000000000000000000000000000000000000000095a", + "0x000000000000000000000000000000000000000000000000000000000000095b", + "0x000000000000000000000000000000000000000000000000000000000000095c", + "0x000000000000000000000000000000000000000000000000000000000000095d", + "0x000000000000000000000000000000000000000000000000000000000000095e", + "0x000000000000000000000000000000000000000000000000000000000000095f", + "0x0000000000000000000000000000000000000000000000000000000000000960", + "0x0000000000000000000000000000000000000000000000000000000000000961", + "0x0000000000000000000000000000000000000000000000000000000000000962", + "0x0000000000000000000000000000000000000000000000000000000000000963", + "0x0000000000000000000000000000000000000000000000000000000000000964", + "0x0000000000000000000000000000000000000000000000000000000000000965", + "0x0000000000000000000000000000000000000000000000000000000000000966", + "0x0000000000000000000000000000000000000000000000000000000000000967", + "0x0000000000000000000000000000000000000000000000000000000000000968", + "0x0000000000000000000000000000000000000000000000000000000000000969", + "0x000000000000000000000000000000000000000000000000000000000000096a", + "0x000000000000000000000000000000000000000000000000000000000000096b", + "0x000000000000000000000000000000000000000000000000000000000000096c", + "0x000000000000000000000000000000000000000000000000000000000000096d", + "0x000000000000000000000000000000000000000000000000000000000000096e", + "0x000000000000000000000000000000000000000000000000000000000000096f", + "0x0000000000000000000000000000000000000000000000000000000000000970", + "0x0000000000000000000000000000000000000000000000000000000000000971", + "0x0000000000000000000000000000000000000000000000000000000000000972", + "0x0000000000000000000000000000000000000000000000000000000000000973", + "0x0000000000000000000000000000000000000000000000000000000000000974", + "0x0000000000000000000000000000000000000000000000000000000000000975", + "0x0000000000000000000000000000000000000000000000000000000000000976", + "0x0000000000000000000000000000000000000000000000000000000000000977", + "0x0000000000000000000000000000000000000000000000000000000000000978", + "0x0000000000000000000000000000000000000000000000000000000000000979", + "0x000000000000000000000000000000000000000000000000000000000000097a", + "0x000000000000000000000000000000000000000000000000000000000000097b", + "0x000000000000000000000000000000000000000000000000000000000000097c", + "0x000000000000000000000000000000000000000000000000000000000000097d", + "0x000000000000000000000000000000000000000000000000000000000000097e", + "0x000000000000000000000000000000000000000000000000000000000000097f", + "0x0000000000000000000000000000000000000000000000000000000000000980", + "0x0000000000000000000000000000000000000000000000000000000000000981", + "0x0000000000000000000000000000000000000000000000000000000000000982", + "0x0000000000000000000000000000000000000000000000000000000000000983", + "0x0000000000000000000000000000000000000000000000000000000000000984", + "0x0000000000000000000000000000000000000000000000000000000000000985", + "0x0000000000000000000000000000000000000000000000000000000000000986", + "0x0000000000000000000000000000000000000000000000000000000000000987", + "0x0000000000000000000000000000000000000000000000000000000000000988", + "0x0000000000000000000000000000000000000000000000000000000000000989", + "0x000000000000000000000000000000000000000000000000000000000000098a", + "0x000000000000000000000000000000000000000000000000000000000000098b", + "0x000000000000000000000000000000000000000000000000000000000000098c", + "0x000000000000000000000000000000000000000000000000000000000000098d", + "0x000000000000000000000000000000000000000000000000000000000000098e", + "0x000000000000000000000000000000000000000000000000000000000000098f", + "0x0000000000000000000000000000000000000000000000000000000000000990", + "0x0000000000000000000000000000000000000000000000000000000000000991", + "0x0000000000000000000000000000000000000000000000000000000000000992", + "0x0000000000000000000000000000000000000000000000000000000000000993", + "0x0000000000000000000000000000000000000000000000000000000000000994", + "0x0000000000000000000000000000000000000000000000000000000000000995", + "0x0000000000000000000000000000000000000000000000000000000000000996", + "0x0000000000000000000000000000000000000000000000000000000000000997", + "0x0000000000000000000000000000000000000000000000000000000000000998", + "0x0000000000000000000000000000000000000000000000000000000000000999", + "0x000000000000000000000000000000000000000000000000000000000000099a", + "0x000000000000000000000000000000000000000000000000000000000000099b", + "0x000000000000000000000000000000000000000000000000000000000000099c", + "0x000000000000000000000000000000000000000000000000000000000000099d", + "0x000000000000000000000000000000000000000000000000000000000000099e", + "0x000000000000000000000000000000000000000000000000000000000000099f", + "0x00000000000000000000000000000000000000000000000000000000000009a0", + "0x00000000000000000000000000000000000000000000000000000000000009a1", + "0x00000000000000000000000000000000000000000000000000000000000009a2", + "0x00000000000000000000000000000000000000000000000000000000000009a3", + "0x00000000000000000000000000000000000000000000000000000000000009a4", + "0x00000000000000000000000000000000000000000000000000000000000009a5", + "0x00000000000000000000000000000000000000000000000000000000000009a6", + "0x00000000000000000000000000000000000000000000000000000000000009a7", + "0x00000000000000000000000000000000000000000000000000000000000009a8", + "0x00000000000000000000000000000000000000000000000000000000000009a9", + "0x00000000000000000000000000000000000000000000000000000000000009aa", + "0x00000000000000000000000000000000000000000000000000000000000009ab", + "0x00000000000000000000000000000000000000000000000000000000000009ac", + "0x00000000000000000000000000000000000000000000000000000000000009ad", + "0x00000000000000000000000000000000000000000000000000000000000009ae", + "0x00000000000000000000000000000000000000000000000000000000000009af", + "0x00000000000000000000000000000000000000000000000000000000000009b0", + "0x00000000000000000000000000000000000000000000000000000000000009b1", + "0x00000000000000000000000000000000000000000000000000000000000009b2", + "0x00000000000000000000000000000000000000000000000000000000000009b3", + "0x00000000000000000000000000000000000000000000000000000000000009b4", + "0x00000000000000000000000000000000000000000000000000000000000009b5", + "0x00000000000000000000000000000000000000000000000000000000000009b6", + "0x00000000000000000000000000000000000000000000000000000000000009b7", + "0x00000000000000000000000000000000000000000000000000000000000009b8", + "0x00000000000000000000000000000000000000000000000000000000000009b9", + "0x00000000000000000000000000000000000000000000000000000000000009ba", + "0x00000000000000000000000000000000000000000000000000000000000009bb", + "0x00000000000000000000000000000000000000000000000000000000000009bc", + "0x00000000000000000000000000000000000000000000000000000000000009bd", + "0x00000000000000000000000000000000000000000000000000000000000009be", + "0x00000000000000000000000000000000000000000000000000000000000009bf", + "0x00000000000000000000000000000000000000000000000000000000000009c0", + "0x00000000000000000000000000000000000000000000000000000000000009c1", + "0x00000000000000000000000000000000000000000000000000000000000009c2", + "0x00000000000000000000000000000000000000000000000000000000000009c3", + "0x00000000000000000000000000000000000000000000000000000000000009c4", + "0x00000000000000000000000000000000000000000000000000000000000009c5", + "0x00000000000000000000000000000000000000000000000000000000000009c6", + "0x00000000000000000000000000000000000000000000000000000000000009c7", + "0x00000000000000000000000000000000000000000000000000000000000009c8", + "0x00000000000000000000000000000000000000000000000000000000000009c9", + "0x00000000000000000000000000000000000000000000000000000000000009ca", + "0x00000000000000000000000000000000000000000000000000000000000009cb", + "0x00000000000000000000000000000000000000000000000000000000000009cc", + "0x00000000000000000000000000000000000000000000000000000000000009cd", + "0x00000000000000000000000000000000000000000000000000000000000009ce", + "0x00000000000000000000000000000000000000000000000000000000000009cf", + "0x00000000000000000000000000000000000000000000000000000000000009d0", + "0x00000000000000000000000000000000000000000000000000000000000009d1", + "0x00000000000000000000000000000000000000000000000000000000000009d2", + "0x00000000000000000000000000000000000000000000000000000000000009d3", + "0x00000000000000000000000000000000000000000000000000000000000009d4", + "0x00000000000000000000000000000000000000000000000000000000000009d5", + "0x00000000000000000000000000000000000000000000000000000000000009d6", + "0x00000000000000000000000000000000000000000000000000000000000009d7", + "0x00000000000000000000000000000000000000000000000000000000000009d8", + "0x00000000000000000000000000000000000000000000000000000000000009d9", + "0x00000000000000000000000000000000000000000000000000000000000009da", + "0x00000000000000000000000000000000000000000000000000000000000009db" +] + num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" + num_real_msgs = "0x0000000000000000000000000000000000000000000000000000000000000400" [inputs.previous_l1_to_l2] root = "0x0fef6d80d31109ddb56d6b3f607cbc9c0af0bff3ea0d43e8f278983c64c11f7a" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-single-tx/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-single-tx/Prover.toml index 994408f39489..ac726d40c170 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root-single-tx/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root-single-tx/Prover.toml @@ -1,232 +1,5 @@ [inputs] -l1_to_l2_messages = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", +l1_to_l2_message_frontier_hint = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -237,836 +10,36 @@ l1_to_l2_messages = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d", + "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", + "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", + "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", + "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", + "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", + "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", + "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", + "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", + "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", + "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", + "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", + "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", + "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", + "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", + "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", + "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", + "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", + "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", + "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", + "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", + "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", + "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", + "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", + "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", + "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" +] +new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] -num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" -l1_to_l2_message_frontier_hint = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d", - "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", - "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", - "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", - "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", - "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", - "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", - "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", - "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", - "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", - "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", - "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", - "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", - "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", - "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", - "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", - "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", - "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", - "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", - "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", - "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", - "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", - "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", - "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", - "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", - "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" -] -new_archive_sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x17016d98a1c83d310e667fa7e83d89cd5329dbdd9f0fb191f0e1fcc5d694dcfa", + "0x2fdbd1b87ca82784e3c3d2871efa66b2a61337fcb13897a786c67fbafb377149", "0x14e4b977b2203b70e6ee1c2456eb7114d090fe4b907f631eecd0919fed432e7d", "0x30105bad22ddcc508b739b7c9ad87a561c569ff5cb0098a853c1c4ac21b7a037", "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", @@ -1588,12 +561,12 @@ new_archive_sibling_path = [ accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollup.public_inputs.constants.last_archive] - root = "0x1f497cf900e5e856f1bb8e1b57c2132872a77d5da9523493f3f22e1fb3d3149d" + root = "0x2d84822e545f3f6e16012e854f9327cee518281ec5f6925ae461d64328e692ee" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.previous_rollup.public_inputs.constants.l1_to_l2_tree_snapshot] @@ -1651,10 +624,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x18d6aae3ab4a271abd590cb98267825b70de1e9e5c339356e94ea5fc7feba64b" ] state = [ - "0x131b2d9ae5eb6f9692472cc95e2a5b09bef81da1ca42b88ff36b937d511e26b7", - "0x20348d94f149e79c1ba4c2e164d5dc8f3d68d7ff0c4d4d4c302056d2a96c69ec", - "0x1bdd96a82679e854aedb8b8e2f6405d4dfac6dd290d5b7aa61e8751848bec5fa", - "0x184328eed0d6e8e611c86fa5bbf24dd3f3d541d94b63c936d07011aef5dcb4cb" + "0x2f7854ba50d6143cd7c2d0aab9074594e7443021752b672f532fb28036bdf464", + "0x2d6155d605fc85dbd2c44a9dc2d61848c1a1abe0536b44e4482c9ac6024a77d5", + "0x236c352e3ae68c93a62504965bc9e8778e07c0cd338fe798a2c88b9fdb4ceae7", + "0x032fc1b246541ca6be41be6375543d448d6b21e06b2cb16d26c42bc97deafdfc" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false @@ -1669,10 +642,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7e5c34c" ] state = [ - "0x054fc33a3ecd3d6df42989afaba0c75145e028231c7b619704ef6ebd5ceca3c8", - "0x27c269f05ed7692d5815ed498aeb1580330032340558d8c487bf93d4bf5859d7", - "0x1db25854e45eadaf748907cdd301bfe51a7cc2aa088e39a777339180bd8be7e9", - "0x2f1273785a295ad8019ca94e4d679523bc48cbf7064fb62d9808c75ea59d78d7" + "0x2dc74882aa099ff2d05d3ee7a9f8bfdddbbdedba13a6a544b7a97b6f834bd1d6", + "0x2002908e197ef2363618c1ada3e9533d21bc4f30c720c5d5957a90ddbbf42748", + "0x1bc50bd10705cd3e35a0ddf12d2d20342247e2d9f66bd2ef3f8c87afab432a9f", + "0x099fa9fa9487c303774e42ca2c7897603abf9ca25584364229ef9593af312d96" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1681,12 +654,12 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ "0x10b6730f1d1e9c6bf8d7c4b42b64b40d2603e3ae6ddbd464c3d8fcfb9e06e6d4", - "0x1a5178a6436a988639331aefded549ea480e3e62ff511a364166a09a815f7af4", - "0x0b4116638a39fd2590691ceb5faa8aa94d951f4f24da141f7ac2f2ab943ac8f6", + "0x014ffec160e37b6cb713c1a4e6e7058964dde1733e6734520ed72f72fd262919", + "0x196cbe2980734bc5d21b53464a1d00c06dad0febdec75822d79d6933dff40579", "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollup.vk_data.vk] @@ -1807,7 +780,1037 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000003ba1cc971819aacf0bcb421bd3aead9f0c", "0x00000000000000000000000000000000000366f6e08da4f6c87b3393784388b0" ] - hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + + [inputs.message_bundle] + messages = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" + num_real_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.start_msg_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000400" diff --git a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml index f82bcf921743..fbf715d2ec31 100644 --- a/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml +++ b/noir-projects/noir-protocol-circuits/crates/rollup-block-root/Prover.toml @@ -1,232 +1,5 @@ [inputs] -l1_to_l2_messages = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", +l1_to_l2_message_frontier_hint = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -237,836 +10,36 @@ l1_to_l2_messages = [ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d", + "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", + "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", + "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", + "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", + "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", + "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", + "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", + "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", + "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", + "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", + "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", + "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", + "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", + "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", + "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", + "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", + "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", + "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", + "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", + "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", + "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", + "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", + "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", + "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", + "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" +] +new_archive_sibling_path = [ "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000" -] -num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" -l1_to_l2_message_frontier_hint = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2c7fea674d2d40f18ffc3f161020dcd660472023bdc7774ae7cdf7b250153f4d", - "0x042c72d0ca208f0631ed947050258333518c26059f0a2ef041e933b1b2a6d8ad", - "0x00c21235cdc5d4241fab782680421cdd99c088a3b48a740d8289d0e67b2ee5da", - "0x1077e8e59029b12e321c47a8a2a25283e50664b6ca1dd766a83828ddc6a22bb9", - "0x15b7bb46f75a6826da53df52c290eda3ddea8924becad6e9a3c08e4eb9a6f604", - "0x0f092097aaee3e41e55706add0701d0eff7a0c972a909dcbc915a478cbc8f122", - "0x2cf33c7d57e1ff8f3d98aabae3092befa8e92274da5e6d324ba0b8839889d27c", - "0x137e350aaf8bab893d768cb6e14bc5464877833efbb8c7091da9ecc7a96bc7b7", - "0x016505cc51b09b257b8c96b5fb20e90bd9e68416286a904d9f86b805e5a89e13", - "0x04d6e1009a70843f5bad89c59765d09421aad04e3276fc90f2a459565057978a", - "0x093a8215cd7e725a45949f4d6d4faec9d078221f09d26a27d61e4f0bf670a580", - "0x1704545cd66b0aa172d2c355fac161d17d7ea42f0132d24708762b544fa17357", - "0x2db6ed73abe6fc42bde50d4422c3e0c81def268d702b9256b7e67cafbbd0325c", - "0x21868e4f8cdcbcb9754d297edc2a361754517465c469017e784a4347f9eb6644", - "0x1adbb821ee5346b1979da8ddbb58789f5ef90c31ece8f0c543c221a3ef0f0aed", - "0x2058aa06a8e23bc53a625831ce1df1aa8d8f01924ad840607f33805aee179d90", - "0x1002be9f0852a234617c837e49555e328bb19a71fcea0ff34368901cee52c85e", - "0x2b238a0d25b834a061e45d817289ab221d13fd0e4cc7adf72d91d54c280f1aa0", - "0x15fada375c113bd526097e297b422ffb59f54a5451e5b70d4a4b028dc65208d1", - "0x2aad701e57c7069cb4e148d971c0eae9ac7429d7d833c51d87875ead0c5aca3c", - "0x2403f18ba27f090c40c95fc6724d67b4b7d537b967ee15656c79e55284df9d6b", - "0x13404ebc0eed291ffb14cad19114bad8df35bae99793ea99e4dde966cb4e53ad", - "0x006a1008132293c19aafbe7130eda035bd1b90065032894071b1f390f4946844", - "0x03ff3b6c066342b657a8583acef6fadbc8e390be6e1fff8dc1526a05f16f2005", - "0x294aa2b063a035c26fe57d58d15931cdc79a6a94edf097d5347277f6e4b0f9da", - "0x0aced6fe68143f4c7acd16345a8c1bb50c51a0692b760eb48728feb923d90757" -] -new_archive_sibling_path = [ - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0fb269dc17abc1c8d54497c84d6fa0ca2f2386938df1cfdedd8d0d91ec88f164", + "0x111f90dfe6a42b72a65046b7a1203d1249f522b498f11feda2da45ec757fed25", "0x14e4b977b2203b70e6ee1c2456eb7114d090fe4b907f631eecd0919fed432e7d", "0x30105bad22ddcc508b739b7c9ad87a561c569ff5cb0098a853c1c4ac21b7a037", "0x1e20ad4181460cbfdc74ca773502c59b890f184efe300ebad895956d318422da", @@ -1588,12 +561,12 @@ new_archive_sibling_path = [ accumulated_mana_used = "0x000000000000000000000000000000000000000000000000000000000006b6c0" [inputs.previous_rollups.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollups.public_inputs.constants.last_archive] - root = "0x26e196ded6a15d22bb3ef16af65500445616ff54dd3d905b7f0b15987aa124b2" + root = "0x09eab2d41c2ecafb0668fbada15342c670b7102c777e8fe01688205370be35dd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.previous_rollups.public_inputs.constants.l1_to_l2_tree_snapshot] @@ -1651,10 +624,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x1e1c597744057b88e39a9780ed087c39b1fc42864e05ef03a59ebd9e96b70b00" ] state = [ - "0x0e590ab58f9e05da3e698f82e1739c4e3af9881e6621829ce5b3c54a61d0ec9e", - "0x2337a20f88fbd904fd13df0d15ca374714fb5a94fc7200f14514b0637416b7b1", - "0x1aa65b58f87875410b74a63b9571ac6561ba2b69f2e19284cf4f94bb47686d8b", - "0x12a792d52273781864db65f75b5ad674b7bf29fd097d180e5b6a5db1f6ba0992" + "0x1340f2f29cb8306ff70bcc4ae858857833524119183778ecc6ad42461cffd2ec", + "0x0ded042d3f2742a39c12f49fea7578be6ca12907c913496a96aac8a4beab7da7", + "0x07fce0817fe38521b58a9910cc882430a755bfe4141eb684f9e13bb55ea08d59", + "0x2c426510a61e082128e8b428a5af495ed7351f768d421f3af48442dde4997151" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000002" squeeze_mode = false @@ -1669,10 +642,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7f9d44d" ] state = [ - "0x13029afd764d22f08075d2cb24d4c132df5399f03e1a8fd9457cfd0d5272ab75", - "0x1129719c4d9dd818cdd3397c6ee473f0d683d0fd987269be51594879ff22c4e4", - "0x1ad7af2faa32a672c89165ae24c5091b17e03589f4fd340e98d3aab6ee676aa1", - "0x1c90ad398d69dfbb193c50c3e725b9bc81131e1ccdcad990c1dfd377f6132099" + "0x1f28dcf22870bc323df6d045183ab4e620f63c728f91adb34989c7f0fa15014e", + "0x11f9c62ca437d779c42395acdfa9aa365198c2c31c659401d9f436e898895308", + "0x22b47289bb74cee917c189d8d045521b296102ee2cd45d4a78df74c2d5fa0f7b", + "0x234bafa32c222e8d0eb62eaede11e3bfa20b4287f68b880c744abe51ac88ab6d" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -1683,10 +656,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x1fc39d0a428c8536dbca551ea79848acf67d89d090fd8c643c7d90f2e8f32340", "0x12ce5a49a1ceca53ada7bee003f929bbd65abaa74e8072a81f304c2c96c44e31", "0x2dd71474f7775d87b6c2986ace5f654686583f0970d7400b1ccf8096dad131b5", - "0x17256307ffa28861c90e498de359cc71e3e87d316e2a719bd42073f7b2e93920", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x0aca02f69b05a42958d30ced7da19a9e135e0c83b75e72ae5f7e2bec714a418f", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -2300,12 +1273,12 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 accumulated_mana_used = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollups.public_inputs.constants] - vk_tree_root = "0x1ce7669f335e7b2c642a772a46b19b54fa691db461192d69a256a94005cc67d2" + vk_tree_root = "0x0a178ec6fe216bfa6e2d25089ce97f9ff6b5c5701d2bce2a1fdf11e6dc351e3c" protocol_contracts_hash = "0x0727efc9473643b7abbe3c57df72d68e86b244b99cae71b17553c0f937ea433b" prover_id = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.previous_rollups.public_inputs.constants.last_archive] - root = "0x26e196ded6a15d22bb3ef16af65500445616ff54dd3d905b7f0b15987aa124b2" + root = "0x09eab2d41c2ecafb0668fbada15342c670b7102c777e8fe01688205370be35dd" next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000002" [inputs.previous_rollups.public_inputs.constants.l1_to_l2_tree_snapshot] @@ -2363,10 +1336,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b7f9d44d" ] state = [ - "0x13029afd764d22f08075d2cb24d4c132df5399f03e1a8fd9457cfd0d5272ab75", - "0x1129719c4d9dd818cdd3397c6ee473f0d683d0fd987269be51594879ff22c4e4", - "0x1ad7af2faa32a672c89165ae24c5091b17e03589f4fd340e98d3aab6ee676aa1", - "0x1c90ad398d69dfbb193c50c3e725b9bc81131e1ccdcad990c1dfd377f6132099" + "0x1f28dcf22870bc323df6d045183ab4e620f63c728f91adb34989c7f0fa15014e", + "0x11f9c62ca437d779c42395acdfa9aa365198c2c31c659401d9f436e898895308", + "0x22b47289bb74cee917c189d8d045521b296102ee2cd45d4a78df74c2d5fa0f7b", + "0x234bafa32c222e8d0eb62eaede11e3bfa20b4287f68b880c744abe51ac88ab6d" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000001" squeeze_mode = false @@ -2381,10 +1354,10 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x00000000000000000000000000000000000000000000000000000000b80de34e" ] state = [ - "0x1341301019954e29f93e15da452a937fdff7581c3ee6476b85a004cfbae7dfed", - "0x243c9a524f4477ecf2b4cbc557610c3b5408fb2acbb904461731b6d8bcb23499", - "0x2d5d1c06b14127c1ef2aaf0f389caf74dd9a53beb52573d07fefb9e1b657a21b", - "0x17b766c80ed945de28d886f9cf66a753f54ab3528636bea2f29ec0f6b6233421" + "0x134946855417bcc442f889686f1d56a235ef003975c044d0247a83233b410758", + "0x1b72a1748313dbe8d809b3fcbafc90c42245820ec62b0dad170882743ff5229f", + "0x0c028e173991130ade8d45c7ca581aba2786fafd52c6204542bedbd83554d15e", + "0x1d53b7e7cf226e419d853dc8cfc46ecd424838a883d07356d2a1fa811e38c34e" ] cache_size = "0x0000000000000000000000000000000000000000000000000000000000000003" squeeze_mode = false @@ -2393,12 +1366,12 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 leaf_index = "0x0000000000000000000000000000000000000000000000000000000000000008" sibling_path = [ "0x10b6730f1d1e9c6bf8d7c4b42b64b40d2603e3ae6ddbd464c3d8fcfb9e06e6d4", - "0x1a5178a6436a988639331aefded549ea480e3e62ff511a364166a09a815f7af4", - "0x0b4116638a39fd2590691ceb5faa8aa94d951f4f24da141f7ac2f2ab943ac8f6", + "0x014ffec160e37b6cb713c1a4e6e7058964dde1733e6734520ed72f72fd262919", + "0x196cbe2980734bc5d21b53464a1d00c06dad0febdec75822d79d6933dff40579", "0x0787c8cc4cfb80390c27cdc17cb24ae198faad7989508690070b3cf40a2ae4fd", - "0x074f577b8fe91b8462dfb7c4f5a82c66075bab111629d9bf496ff5f3b30a57fe", + "0x134e9973b03d62389ee6021d35e61158807c7da3c3e6a052d365f53ab1ac214d", "0x118d25fdd2c4cc96d5af69bd85930dd49d101d463e3f5ee9f2cc9236384b5d41", - "0x19dd00df005acafea7173682679ac59d437120260bc4c6179b6dc40d3154cfed" + "0x19dc50e83dfaeddfc1eb7b19cfcf39ef4b5608eecfaf54180697ea982b7bebbd" ] [inputs.previous_rollups.vk_data.vk] @@ -2519,7 +1492,1037 @@ next_available_leaf_index = "0x0000000000000000000000000000000000000000000000000 "0x0000000000000000000000000000003ba1cc971819aacf0bcb421bd3aead9f0c", "0x00000000000000000000000000000000000366f6e08da4f6c87b3393784388b0" ] - hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + hash = "0x2597d0ee94af6c241e63bc541fabe57e418d679cdeb426bc76fe81a01487c4c0" + + [inputs.message_bundle] + messages = [ + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000" +] + num_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" + num_real_msgs = "0x0000000000000000000000000000000000000000000000000000000000000000" [inputs.start_msg_sponge] num_absorbed = "0x0000000000000000000000000000000000000000000000000000000000000400" From 2b08840b4ebdbdb1ede8b48fad665b6bfec769be Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Mon, 27 Jul 2026 15:49:38 -0300 Subject: [PATCH 08/10] refactor(fast-inbox): name the checkpoint sub-tree proof bundle for what it holds (A-1427) The top tree's per-checkpoint `blockProofs` promise stopped holding just block proofs when parity moved to the checkpoint root: it now carries the block-rollup proof outputs plus the checkpoint's InboxParity proof. Rename it to `subTreeProofs`, typed by a single exported `CheckpointSubTreeProofs` in prover-client (dropping the duplicate alias in prover-node), and rename the block-proof-array parameters in the orchestrator so `blockProofOutputs` means the same thing everywhere. `CheckpointProver.whenBlockProofsReady` follows suit. --- .../checkpoint-sub-tree-orchestrator.ts | 6 +++ .../prover-client/src/orchestrator/index.ts | 6 ++- .../top-tree-orchestrator.test.ts | 30 +++++------ .../src/orchestrator/top-tree-orchestrator.ts | 35 ++++++------- .../src/test/bb_prover_full_rollup.test.ts | 2 +- .../regenerate_rollup_sample_inputs.test.ts | 2 +- .../src/actions/rerun-epoch-proving-job.ts | 6 +-- .../src/job/checkpoint-prover.test.ts | 34 ++++++------- .../prover-node/src/job/checkpoint-prover.ts | 50 +++++++++---------- .../prover-node/src/job/epoch-session.test.ts | 42 ++++++++-------- .../prover-node/src/job/top-tree-job.ts | 4 +- 11 files changed, 113 insertions(+), 104 deletions(-) diff --git a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts index 0535ee3b609d..6b13fdec7b56 100644 --- a/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/checkpoint-sub-tree-orchestrator.ts @@ -90,6 +90,12 @@ export type SubTreeResult = { previousArchiveSiblingPath: Tuple; }; +/** + * The proofs a checkpoint's sub-tree hands to the top tree: the per-block rollup proofs plus the checkpoint's single + * variable-size InboxParity proof (parity moved from the first block root to the checkpoint root in AZIP-22 Fast Inbox). + */ +export type CheckpointSubTreeProofs = Pick; + type TreeSnapshots = Map; /** diff --git a/yarn-project/prover-client/src/orchestrator/index.ts b/yarn-project/prover-client/src/orchestrator/index.ts index 9fe9f502a7be..f2585a33f1a7 100644 --- a/yarn-project/prover-client/src/orchestrator/index.ts +++ b/yarn-project/prover-client/src/orchestrator/index.ts @@ -1,4 +1,8 @@ -export { CheckpointSubTreeOrchestrator, type SubTreeResult } from './checkpoint-sub-tree-orchestrator.js'; +export { + CheckpointSubTreeOrchestrator, + type CheckpointSubTreeProofs, + type SubTreeResult, +} from './checkpoint-sub-tree-orchestrator.js'; export { ChonkCache, type ChonkVerifierProofResult } from './chonk-cache.js'; export { TopTreeOrchestrator, diff --git a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts index d1174460d0e6..74a3ad8e554c 100644 --- a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts +++ b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.test.ts @@ -85,7 +85,7 @@ describe('prover/orchestrator/top-tree', () => { await subTree.stop(); const topTreeData: CheckpointTopTreeData = { - blockProofs: Promise.resolve({ + subTreeProofs: Promise.resolve({ blockProofOutputs: result.blockProofOutputs, inboxParityProof: result.inboxParityProof, }), @@ -170,9 +170,9 @@ describe('prover/orchestrator/top-tree', () => { const b = await driveSubTree(1, 1); const challenges = await context.getFinalBlobChallenges(); - // Replace ckpt1's blockProofs with a deferred promise that resolves later. - const deferred = promiseWithResolvers ? T : never>(); - const ckpt1 = { ...b.topTreeData, blockProofs: deferred.promise } as CheckpointTopTreeData; + // Replace ckpt1's subTreeProofs with a deferred promise that resolves later. + const deferred = promiseWithResolvers ? T : never>(); + const ckpt1 = { ...b.topTreeData, subTreeProofs: deferred.promise } as CheckpointTopTreeData; const topTree = new TopTreeOrchestrator(context.prover, EthAddress.ZERO, makeTestDeferredJobQueue()); try { @@ -184,7 +184,7 @@ describe('prover/orchestrator/top-tree', () => { await new Promise(resolve => setTimeout(resolve, 50)); // Now resolve ckpt1 — the orchestrator should pick it up and continue. - deferred.resolve((await b.topTreeData.blockProofs) as any); + deferred.resolve((await b.topTreeData.subTreeProofs) as any); const result = await provePromise; expect(result.proof).toBeDefined(); @@ -197,9 +197,9 @@ describe('prover/orchestrator/top-tree', () => { const { topTreeData } = await driveSubTree(1, 1); const challenges = await context.getFinalBlobChallenges(); - // Block ckpt0's blockProofs forever so prove() can't finish. - const stuck = new Promise ? T : never>(() => {}); - const stuckData = { ...topTreeData, blockProofs: stuck } as CheckpointTopTreeData; + // Block ckpt0's subTreeProofs forever so prove() can't finish. + const stuck = new Promise ? T : never>(() => {}); + const stuckData = { ...topTreeData, subTreeProofs: stuck } as CheckpointTopTreeData; const topTree = new TopTreeOrchestrator(context.prover, EthAddress.ZERO, makeTestDeferredJobQueue()); const provePromise = topTree.prove(EpochNumber(1), 1, challenges, [stuckData]); @@ -258,7 +258,7 @@ describe('prover/orchestrator/top-tree', () => { // A malformed block proof makes toProofData (inside buildCheckpointRootInputs) throw. const badData = { ...topTreeData, - blockProofs: Promise.resolve({ blockProofOutputs: [{} as any], inboxParityProof: {} as any }), + subTreeProofs: Promise.resolve({ blockProofOutputs: [{} as any], inboxParityProof: {} as any }), } as CheckpointTopTreeData; const topTree = new TopTreeOrchestrator(context.prover, EthAddress.ZERO, makeTestDeferredJobQueue()); @@ -288,23 +288,23 @@ describe('prover/orchestrator/top-tree', () => { const { topTreeData } = await driveSubTree(1, 1); const challenges = await context.getFinalBlobChallenges(); - const deferred = promiseWithResolvers ? T : never>(); - // Observe exactly when prove() attaches its blockProofs handler, so we can sequence the + const deferred = promiseWithResolvers ? T : never>(); + // Observe exactly when prove() attaches its subTreeProofs handler, so we can sequence the // genuine rejection and the cancel deterministically rather than racing a fixed timeout. let handlerAttached = false; - const observableBlockProofs = { + const observableSubTreeProofs = { then: (onF: any, onR: any) => { handlerAttached = true; return deferred.promise.then(onF, onR); }, }; - const failingData = { ...topTreeData, blockProofs: observableBlockProofs as any } as CheckpointTopTreeData; + const failingData = { ...topTreeData, subTreeProofs: observableSubTreeProofs as any } as CheckpointTopTreeData; const topTree = new TopTreeOrchestrator(context.prover, EthAddress.ZERO, makeTestDeferredJobQueue()); const provePromise = topTree.prove(EpochNumber(1), 1, challenges, [failingData]); - // Wait until prove() has finished its pre-loop setup and registered the blockProofs handler. - await retryUntil(() => handlerAttached, 'prove() attaches blockProofs handler', 5, 0.005); + // Wait until prove() has finished its pre-loop setup and registered the subTreeProofs handler. + await retryUntil(() => handlerAttached, 'prove() attaches subTreeProofs handler', 5, 0.005); // Register a cancel reaction on the rejection, after prove()'s own handler (registered // first, so it runs first). On rejection the ordering is: prove's handler rejects the diff --git a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts index 62ef6a662d2f..881c4cbeeb59 100644 --- a/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts +++ b/yarn-project/prover-client/src/orchestrator/top-tree-orchestrator.ts @@ -33,24 +33,19 @@ import type { BlockHeader } from '@aztec/stdlib/tx'; import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client'; import { buildBlobHints, toProofData } from './block-building-helpers.js'; +import type { CheckpointSubTreeProofs } from './checkpoint-sub-tree-orchestrator.js'; import { ProvingScheduler } from './proving-scheduler.js'; import { TopTreeProvingState } from './top-tree-proving-state.js'; /** Per-checkpoint data fed into the top tree. */ export type CheckpointTopTreeData = { /** - * Block-rollup proof outputs and the parity root proof from the checkpoint's sub-tree. Passed as a Promise so the - * top tree can start (compute hints, pipeline merges) while sub-trees are still proving. `blockProofOutputs` - * resolves to 1 entry for a single-block checkpoint, 2 for multi-block. The parity root proof feeds the checkpoint - * root rollup (parity moved there from the first block root in AZIP-22 Fast Inbox). + * The checkpoint sub-tree's proofs. Passed as a Promise so the top tree can start (compute hints, pipeline merges) + * while sub-trees are still proving. `blockProofOutputs` resolves to 1 entry for a single-block checkpoint, 2 for + * multi-block; `inboxParityProof` feeds the checkpoint root rollup (parity moved there from the first block root in + * AZIP-22 Fast Inbox). */ - blockProofs: Promise<{ - blockProofOutputs: PublicInputsAndRecursiveProof< - BlockRollupPublicInputs, - typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH - >[]; - inboxParityProof: PublicInputsAndRecursiveProof; - }>; + subTreeProofs: Promise; /** L2-to-L1 messages per block in the checkpoint, used to compute the out hash. */ l2ToL1MsgsPerBlock: Fr[][][]; /** Blob fields encoding the checkpoint's tx effects, used to compute the blob accumulator. */ @@ -90,7 +85,7 @@ type OutHashHint = { * * Pipelined start: `prove()` does not wait for block-level proving. It pre-computes the * out-hash and blob-accumulator hint chains immediately from archiver-derivable data, - * and each checkpoint's root rollup fires the moment its sub-tree's `blockProofs` + * and each checkpoint's root rollup fires the moment its sub-tree's `subTreeProofs` * promise resolves. Later checkpoints can still be block-level proving in parallel. */ export class TopTreeOrchestrator extends ProvingScheduler { @@ -172,7 +167,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { for (let i = 0; i < checkpointData.length; i++) { const cd = checkpointData[i]; const checkpointIndex = i; - void cd.blockProofs.then( + void cd.subTreeProofs.then( subTreeProofs => { if (this.cancelled || !this.state?.verifyState()) { return; @@ -227,7 +222,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { private enqueueCheckpointRoot( state: TopTreeProvingState, checkpointIndex: number, - blockProofs: PublicInputsAndRecursiveProof< + blockProofOutputs: PublicInputsAndRecursiveProof< BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[], @@ -236,7 +231,13 @@ export class TopTreeOrchestrator extends ProvingScheduler { outHashHint: OutHashHint, startBlobAccumulator: BatchedBlobAccumulator, ) { - void this.buildCheckpointRootInputs(blockProofs, inboxParityProof, cd, outHashHint, startBlobAccumulator).then( + void this.buildCheckpointRootInputs( + blockProofOutputs, + inboxParityProof, + cd, + outHashHint, + startBlobAccumulator, + ).then( inputs => { this.deferredProving( state, @@ -269,7 +270,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { } private async buildCheckpointRootInputs( - blockProofs: PublicInputsAndRecursiveProof< + blockProofOutputs: PublicInputsAndRecursiveProof< BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH >[], @@ -293,7 +294,7 @@ export class TopTreeOrchestrator extends ProvingScheduler { }); const inboxParity = toProofData(inboxParityProof); - const proofDatas = blockProofs.map(p => toProofData(p)); + const proofDatas = blockProofOutputs.map(p => toProofData(p)); return proofDatas.length === 1 ? new CheckpointRootSingleBlockRollupPrivateInputs(proofDatas[0], inboxParity, hints) : new CheckpointRootRollupPrivateInputs([proofDatas[0], proofDatas[1]], inboxParity, hints); diff --git a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts index bfbad4b2ff03..4dd1b8136718 100644 --- a/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts +++ b/yarn-project/prover-client/src/test/bb_prover_full_rollup.test.ts @@ -103,7 +103,7 @@ describe('prover/bb_prover/full-rollup', () => { } topTreeData.push({ - blockProofs: subTree + subTreeProofs: subTree .getSubTreeResult() .then(r => ({ blockProofOutputs: r.blockProofOutputs, inboxParityProof: r.inboxParityProof })), l2ToL1MsgsPerBlock: blocks.map(b => b.txs.map(tx => tx.txEffect.l2ToL1Msgs)), diff --git a/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts b/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts index af2766e2e9bc..00c7bedcd228 100644 --- a/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts +++ b/yarn-project/prover-client/src/test/regenerate_rollup_sample_inputs.test.ts @@ -154,7 +154,7 @@ describeOrSkip('prover/regenerate-rollup-sample-inputs', () => { } topTreeData.push({ - blockProofs: subTree + subTreeProofs: subTree .getSubTreeResult() .then(r => ({ blockProofOutputs: r.blockProofOutputs, inboxParityProof: r.inboxParityProof })), l2ToL1MsgsPerBlock: blocks.map(b => b.txs.map(tx => tx.txEffect.l2ToL1Msgs)), diff --git a/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts b/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts index c10a467437bb..6f0711ac23b9 100644 --- a/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts +++ b/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts @@ -95,9 +95,9 @@ export async function rerunCheckpointProvingJob( const prover = await buildCheckpointProver(ctx, 0, log); try { - const blockProofs = await prover.whenBlockProofsReady(); - log.info(`Completed proving for checkpoint ${checkpointNumber} with ${blockProofs.length} block proof(s)`); - return blockProofs; + const { blockProofOutputs } = await prover.whenSubTreeProofsReady(); + log.info(`Completed proving for checkpoint ${checkpointNumber} with ${blockProofOutputs.length} block proof(s)`); + return blockProofOutputs; } finally { prover.cancel({ routine: true }); await prover.whenDone(); diff --git a/yarn-project/prover-node/src/job/checkpoint-prover.test.ts b/yarn-project/prover-node/src/job/checkpoint-prover.test.ts index a4f9634d3ea0..27e97300cade 100644 --- a/yarn-project/prover-node/src/job/checkpoint-prover.test.ts +++ b/yarn-project/prover-node/src/job/checkpoint-prover.test.ts @@ -134,13 +134,13 @@ describe('CheckpointProver', () => { await prover.whenDone(); }); - it('rejects whenBlockProofsReady() but does not mark the prover failed or fire onFailed', async () => { + it('rejects whenSubTreeProofsReady() but does not mark the prover failed or fire onFailed', async () => { // A cancel (reorg/prune/shutdown) is not a proving failure: isFailed() must stay false and the // onFailed callback must not fire (no post-mortem upload for a cancelled prover). const prover = makeProver(); - const blockProofs = prover.whenBlockProofsReady(); + const subTreeProofs = prover.whenSubTreeProofsReady(); prover.cancel(); - await expect(blockProofs).rejects.toThrow(/cancelled/); + await expect(subTreeProofs).rejects.toThrow(/cancelled/); expect(prover.isFailed()).toBe(false); expect(onFailed).not.toHaveBeenCalled(); await prover.whenDone(); @@ -161,11 +161,11 @@ describe('CheckpointProver', () => { it('routine cancel still aborts and rejects block proofs (only log level differs)', async () => { const prover = makeProver(); - const blockProofs = prover.whenBlockProofsReady(); + const subTreeProofs = prover.whenSubTreeProofsReady(); prover.cancel({ routine: true }); expect(prover.isCancelled()).toBe(true); expect(prover.getAbortSignal().aborted).toBe(true); - await expect(blockProofs).rejects.toThrow(/cancelled/); + await expect(subTreeProofs).rejects.toThrow(/cancelled/); await prover.whenDone(); }); }); @@ -221,7 +221,7 @@ describe('CheckpointProver', () => { // ---------------- gather failure ---------------- describe('gather failures', () => { - it('rejects whenBlockProofsReady when txProvider returns missing txs', async () => { + it('rejects whenSubTreeProofsReady when txProvider returns missing txs', async () => { const missingHash = checkpoint.blocks[0].body.txEffects[0]?.txHash; // Without a real missing hash the per-block payload would be empty and the prover // would happily proceed; only checkpoints with txs can exercise this branch. @@ -232,7 +232,7 @@ describe('CheckpointProver', () => { txProvider.getTxsForBlock.mockResolvedValue({ txs: [], missingTxs: [missingHash] }); const prover = makeProver(); - await expect(prover.whenBlockProofsReady()).rejects.toThrow(/Txs not found/); + await expect(prover.whenSubTreeProofsReady()).rejects.toThrow(/Txs not found/); await prover.whenDone(); }); @@ -245,19 +245,19 @@ describe('CheckpointProver', () => { txProvider.getTxsForBlock.mockReturnValue(gate.promise); const prover = makeProver(); - const blockProofs = prover.whenBlockProofsReady(); + const subTreeProofs = prover.whenSubTreeProofsReady(); prover.cancel(); gate.reject(new Error('gather aborted by test')); - await expect(blockProofs).rejects.toThrow(/cancelled/); + await expect(subTreeProofs).rejects.toThrow(/cancelled/); await expect(prover.whenDone()).resolves.toBeUndefined(); }); - it('lets a second whenBlockProofsReady caller observe the same rejection', async () => { + it('lets a second whenSubTreeProofsReady caller observe the same rejection', async () => { // Two callers awaiting the same promise both see the rejection — neither leaks an // unhandled rejection (the constructor pre-attaches a noop catch handler). const prover = makeProver(); - const a = prover.whenBlockProofsReady(); - const b = prover.whenBlockProofsReady(); + const a = prover.whenSubTreeProofsReady(); + const b = prover.whenSubTreeProofsReady(); prover.cancel(); await Promise.all([expect(a).rejects.toThrow(/cancelled/), expect(b).rejects.toThrow(/cancelled/)]); await prover.whenDone(); @@ -274,7 +274,7 @@ describe('CheckpointProver', () => { const prover = makeProver(); failure.resolve({ txs: [], missingTxs: [missingHash] }); - await expect(prover.whenBlockProofsReady()).rejects.toThrow(/Txs not found/); + await expect(prover.whenSubTreeProofsReady()).rejects.toThrow(/Txs not found/); // Subsequent cancel is a no-op; no throws. prover.cancel(); expect(prover.isCancelled()).toBe(true); @@ -285,10 +285,10 @@ describe('CheckpointProver', () => { // ---------------- data-plane reorg fork fault ---------------- describe('data-plane reorg fault', () => { - it('rejects whenBlockProofsReady when a world-state fork faults mid-proof', async () => { + it('rejects whenSubTreeProofsReady when a world-state fork faults mid-proof', async () => { // Models the data-plane prune race: gather succeeds and the sub-tree starts, but the // world-state synchronizer has already unwound the base block, so forking it faults inside - // executeCheckpoint. The fault must reject whenBlockProofsReady() AND mark the prover failed, so + // executeCheckpoint. The fault must reject whenSubTreeProofsReady() AND mark the prover failed, so // the SessionManager won't build (or rebuild) an EpochSession over it until a re-add replaces it. txProvider.getTxsForBlock.mockReset(); txProvider.getTxsForBlock.mockResolvedValue({ txs: [], missingTxs: [] }); @@ -310,9 +310,9 @@ describe('CheckpointProver', () => { const prover = makeProver(); - // blockProofs rejects: the fork error aborts the block loop before completion, so the sub-tree + // subTreeProofs rejects: the fork error aborts the block loop before completion, so the sub-tree // never yields proofs. (The raw fork error is logged; the promise settles as not-completed.) - await expect(prover.whenBlockProofsReady()).rejects.toThrow(/did not complete block processing/); + await expect(prover.whenSubTreeProofsReady()).rejects.toThrow(/did not complete block processing/); expect(dbProvider.fork).toHaveBeenCalled(); expect(prover.isFailed()).toBe(true); // The owner is notified exactly once, with this prover, so it can upload a checkpoint post-mortem. diff --git a/yarn-project/prover-node/src/job/checkpoint-prover.ts b/yarn-project/prover-node/src/job/checkpoint-prover.ts index 3e393a05a33e..b3f26dd2f4b0 100644 --- a/yarn-project/prover-node/src/job/checkpoint-prover.ts +++ b/yarn-project/prover-node/src/job/checkpoint-prover.ts @@ -10,7 +10,11 @@ import { type DateProvider, Timer } from '@aztec/foundation/timer'; import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree'; import { protocolContractsHash } from '@aztec/protocol-contracts'; import type { EpochProverFactory } from '@aztec/prover-client'; -import type { CheckpointSubTreeOrchestrator, ChonkCache, SubTreeResult } from '@aztec/prover-client/orchestrator'; +import type { + CheckpointSubTreeOrchestrator, + CheckpointSubTreeProofs, + ChonkCache, +} from '@aztec/prover-client/orchestrator'; import type { PublicProcessor, PublicProcessorFactory } from '@aztec/simulator/server'; import { PublicSimulatorConfig } from '@aztec/stdlib/avm'; import type { CommitteeAttestation, L2Block } from '@aztec/stdlib/block'; @@ -57,12 +61,6 @@ export type CheckpointProverTestHooks = { checkpointProveOverride?: () => Promise; }; -/** - * The proofs a checkpoint's sub-tree hands to the top tree: the per-block rollup proofs plus the checkpoint's single - * variable-size InboxParity proof (parity moved from the first block root to the checkpoint root in AZIP-22 Fast Inbox). - */ -export type CheckpointSubTreeProofs = Pick; - /** Inputs that fully describe a checkpoint at register time. */ export type CheckpointProverArgs = { checkpoint: Checkpoint; @@ -86,8 +84,8 @@ export type CheckpointProverArgs = { * predecessor but with different content, keys to a distinct prover. * * The prover eagerly starts its own tx gather and sub-tree work in the constructor, so - * callers only need to call `whenBlockProofsReady()` to obtain the resulting block-rollup - * proofs. + * callers only need to call `whenSubTreeProofsReady()` to obtain the resulting block-rollup + * and InboxParity proofs. * * A CheckpointProver does not survive a prune: its sub-tree work forks world-state per * block, and an L1 prune of a base block faults those reads. The store therefore cancels and @@ -112,14 +110,14 @@ export class CheckpointProver { readonly txs: Map = new Map(); /** Resolved by the sub-tree on success, rejected on cancel/failure. Carries the block proofs plus the checkpoint's - * parity root proof (which feeds the checkpoint root in the top tree). */ - private readonly blockProofs: PromiseWithResolvers = promiseWithResolvers(); + * InboxParity proof (which feeds the checkpoint root in the top tree). */ + private readonly subTreeProofs: PromiseWithResolvers = promiseWithResolvers(); // Three independent lifecycle facts — deliberately not collapsed into one status enum, because several // combinations are legal and relied on: a prover can be `completed` and then `cancelled` (routine // teardown of an already-proven checkpoint), or `completed` and then `failed` (block proving was // enqueued, but the sub-tree subsequently faulted). Only `failed` + `cancelled` is excluded — a cancel - // is not a failure (enforced in `failBlockProofs`). + // is not a failure (enforced in `failSubTreeProofs`). /** Block-level proving was fully *enqueued* (a progress marker; the sub-tree may still be proving). */ private completed = false; /** Block proofs rejected for a genuine (non-cancel) reason — a sub-tree or prune-induced fork fault. */ @@ -147,9 +145,9 @@ export class CheckpointProver { this.previousInboxRollingHash = args.previousInboxRollingHash; this.previousArchiveSiblingPath = args.previousArchiveSiblingPath; this.id = CheckpointProver.idFor(args.checkpoint); - // Mark blockProofs as observed so a cancel that lands before any consumer awaits + // Mark subTreeProofs as observed so a cancel that lands before any consumer awaits // does not surface as an unhandled rejection. - this.blockProofs.promise.catch(() => {}); + this.subTreeProofs.promise.catch(() => {}); deps.log.info(`Created CheckpointProver ${this.id}`, { checkpointNumber: this.checkpoint.number, epochNumber: this.epochNumber, @@ -190,9 +188,9 @@ export class CheckpointProver { return this.abortController.signal; } - /** Promise that resolves with the block-rollup proofs and parity root proof for this checkpoint (or rejects). */ - public whenBlockProofsReady(): Promise { - return this.blockProofs.promise; + /** Promise that resolves with the block-rollup proofs and InboxParity proof for this checkpoint (or rejects). */ + public whenSubTreeProofsReady(): Promise { + return this.subTreeProofs.promise; } /** Resolves when all in-flight work for this prover has fully unwound. */ @@ -220,16 +218,16 @@ export class CheckpointProver { this.deps.log.error(`Error in CheckpointProver ${this.id}`, err, { checkpointNumber: this.checkpoint.number, }); - this.failBlockProofs(err instanceof Error ? err : new Error(String(err))); + this.failSubTreeProofs(err instanceof Error ? err : new Error(String(err))); } } /** - * Rejects the block-proof promise and, unless this is a cancellation, records the prover as failed so + * Rejects the sub-tree proof promise and, unless this is a cancellation, records the prover as failed so * the reconciler won't build an EpochSession over it. First rejection wins, so a later duplicate reject * (e.g. the executeCheckpoint `finally`) is a harmless no-op. */ - private failBlockProofs(err: Error): void { + private failSubTreeProofs(err: Error): void { if (!this.cancelled && !this.failed) { this.failed = true; // Notify the owner so it can upload a post-mortem for this checkpoint. Fire-and-forget: the @@ -240,7 +238,7 @@ export class CheckpointProver { this.deps.log.error(`Error in CheckpointProver onFailed callback for ${this.id}`, err); } } - this.blockProofs.reject(err); + this.subTreeProofs.reject(err); } private async gatherTxs(): Promise> { @@ -303,7 +301,7 @@ export class CheckpointProver { this.previousBlockHeader, ); subTreeStarted = true; - // Bridge the sub-tree's result onto blockProofs. + // Bridge the sub-tree's result onto subTreeProofs. void this.subTree.getSubTreeResult().then( result => { this.deps.log.info(`Sub-tree block proofs ready for checkpoint ${this.checkpoint.number}`, { @@ -312,12 +310,12 @@ export class CheckpointProver { }); // Spans processing + proving (from executeCheckpoint start, after tx gathering) to proofs ready. this.deps.metrics.recordCheckpointProving(checkpointTimer.ms()); - this.blockProofs.resolve({ + this.subTreeProofs.resolve({ blockProofOutputs: result.blockProofOutputs, inboxParityProof: result.inboxParityProof, }); }, - err => this.failBlockProofs(err instanceof Error ? err : new Error(String(err))), + err => this.failSubTreeProofs(err instanceof Error ? err : new Error(String(err))), ); if (signal.aborted) { return; @@ -397,7 +395,7 @@ export class CheckpointProver { if (subTreeStarted) { await this.teardownSubTree(); } - this.failBlockProofs(new Error(`Checkpoint ${this.id} did not complete block processing`)); + this.failSubTreeProofs(new Error(`Checkpoint ${this.id} did not complete block processing`)); } } } @@ -430,7 +428,7 @@ export class CheckpointProver { }); } this.abortController.abort(); - this.blockProofs.reject(new Error(`Checkpoint ${this.id} cancelled`)); + this.subTreeProofs.reject(new Error(`Checkpoint ${this.id} cancelled`)); this.cancelPromise = this.runCancel().catch(() => {}); } diff --git a/yarn-project/prover-node/src/job/epoch-session.test.ts b/yarn-project/prover-node/src/job/epoch-session.test.ts index 7c6512c2fd02..15281f684f92 100644 --- a/yarn-project/prover-node/src/job/epoch-session.test.ts +++ b/yarn-project/prover-node/src/job/epoch-session.test.ts @@ -282,20 +282,20 @@ describe('EpochSession', () => { // ---------------- checkpoint failure ---------------- describe('checkpoint that fails to prove', () => { - it('ends the session in "stopped" (not "failed") when a checkpoint\'s blockProofs reject', async () => { + it('ends the session in "stopped" (not "failed") when a checkpoint\'s subTreeProofs reject', async () => { // Build a prover whose block-rollup proofs are guaranteed to reject — this mirrors // the production path where CheckpointProver.executeCheckpoint catches an internal - // error (e.g. a data-plane reorg fork fault) and rejects its blockProofs promise. + // error (e.g. a data-plane reorg fork fault) and rejects its subTreeProofs promise. // The session must NOT declare the epoch failed: it ends in the non-declaring terminal // 'stopped', leaving the reconciler free to rebuild it over current canonical content. - const failingProver = makeStubProver(cp, { blockProofsError: new Error('block 7 proving failed') }); + const failingProver = makeStubProver(cp, { subTreeProofsError: new Error('block 7 proving failed') }); const session = new EpochSession( makeSpec(), [failingProver], makeDeps({ // Override mirrors what the real topTree.prove(...) does: awaits each prover's - // blockProofs and propagates the rejection up. - hooks: { topTreeProveOverride: () => failingProver.whenBlockProofsReady().then(() => synthProof) }, + // subTreeProofs and propagates the rejection up. + hooks: { topTreeProveOverride: () => failingProver.whenSubTreeProofsReady().then(() => synthProof) }, }), ); const state = await session.start(); @@ -308,12 +308,12 @@ describe('EpochSession', () => { }); it('whenDone resolves to "stopped" so callers observing the lifecycle agree with the return value', async () => { - const failingProver = makeStubProver(cp, { blockProofsError: new Error('boom') }); + const failingProver = makeStubProver(cp, { subTreeProofsError: new Error('boom') }); const session = new EpochSession( makeSpec(), [failingProver], makeDeps({ - hooks: { topTreeProveOverride: () => failingProver.whenBlockProofsReady().then(() => synthProof) }, + hooks: { topTreeProveOverride: () => failingProver.whenSubTreeProofsReady().then(() => synthProof) }, }), ); const startResult = session.start(); @@ -322,12 +322,12 @@ describe('EpochSession', () => { }); it('ends the session in "stopped" (not "failed") when a prover was cancelled by a prune (isCancelled, not isFailed)', async () => { - // A control-plane prune cancels the prover: its blockProofs reject with "cancelled" and it reports + // A control-plane prune cancels the prover: its subTreeProofs reject with "cancelled" and it reports // isCancelled()===true / isFailed()===false. If that rejection reaches start()'s catch before the // reconcile marks the session 'cancelled', it must NOT be classified 'failed' (which would trigger a // spurious full-snapshot upload) — a cancelled prover is prune-ambiguous, so classify 'stopped'. const cancelledProver = makeStubProver(cp, { - blockProofsError: new Error('Checkpoint cancelled'), + subTreeProofsError: new Error('Checkpoint cancelled'), isFailed: false, isCancelled: true, }); @@ -335,7 +335,7 @@ describe('EpochSession', () => { makeSpec(), [cancelledProver], makeDeps({ - hooks: { topTreeProveOverride: () => cancelledProver.whenBlockProofsReady().then(() => synthProof) }, + hooks: { topTreeProveOverride: () => cancelledProver.whenSubTreeProofsReady().then(() => synthProof) }, }), ); const state = await session.start(); @@ -465,24 +465,24 @@ class TestEpochSession extends EpochSession { * Minimal CheckpointProver-shaped stub: provides everything the TopTreeJob and EpochSession * read off a prover, without standing up the actual eager gather/sub-tree pipeline. * - * Pass `blockProofsError` to simulate a checkpoint that fails to prove — its - * `whenBlockProofsReady()` will reject with the supplied error, mirroring the production + * Pass `subTreeProofsError` to simulate a checkpoint that fails to prove — its + * `whenSubTreeProofsReady()` will reject with the supplied error, mirroring the production * path where CheckpointProver.executeCheckpoint catches an internal failure and rejects - * its blockProofs promise. + * its subTreeProofs promise. */ function makeStubProver( checkpoint: Checkpoint, - opts: { blockProofsError?: Error; isFailed?: boolean; isCancelled?: boolean } = {}, + opts: { subTreeProofsError?: Error; isFailed?: boolean; isCancelled?: boolean } = {}, ): CheckpointProver { const id = CheckpointProver.idFor(checkpoint); - // By default whenBlockProofsReady never resolves in these tests; the prove override + // By default whenSubTreeProofsReady never resolves in these tests; the prove override // bypasses any path that would actually await it. - const blockProofs: Promise = opts.blockProofsError - ? Promise.reject(opts.blockProofsError) + const subTreeProofs: Promise = opts.subTreeProofsError + ? Promise.reject(opts.subTreeProofsError) : new Promise(() => {}); // Suppress unhandled-rejection noise — tests that need the rejection observe it // explicitly via the proveOverride hook. - blockProofs.catch(() => {}); + subTreeProofs.catch(() => {}); return { id, checkpoint, @@ -493,11 +493,11 @@ function makeStubProver( l1ToL2Messages: [], previousArchiveSiblingPath: makeTuple(ARCHIVE_HEIGHT, () => Fr.ZERO), txs: new Map(), - whenBlockProofsReady: () => blockProofs, + whenSubTreeProofsReady: () => subTreeProofs, isCancelled: () => opts.isCancelled ?? false, - // A prover configured with a blockProofsError is one whose block proofs rejected — i.e. failed, + // A prover configured with a subTreeProofsError is one whose sub-tree proofs rejected — i.e. failed, // unless the caller decouples the two (e.g. to model a cancelled-but-not-failed prune). - isFailed: () => opts.isFailed ?? opts.blockProofsError !== undefined, + isFailed: () => opts.isFailed ?? opts.subTreeProofsError !== undefined, cancel: () => {}, whenDone: () => Promise.resolve(), getAbortSignal: () => new AbortController().signal, diff --git a/yarn-project/prover-node/src/job/top-tree-job.ts b/yarn-project/prover-node/src/job/top-tree-job.ts index 1290ea9de381..42d8b868feef 100644 --- a/yarn-project/prover-node/src/job/top-tree-job.ts +++ b/yarn-project/prover-node/src/job/top-tree-job.ts @@ -42,7 +42,7 @@ export type TopTreeJobHooks = { /** * Self-contained top-tree job. Constructed from a snapshot of `CheckpointProver`s; runs - * `topTree.prove(...)` against their pending `blockProofs` promises and exposes the + * `topTree.prove(...)` against their pending `subTreeProofs` promises and exposes the * final epoch proof via `result`. * */ @@ -185,7 +185,7 @@ export class TopTreeJob { ); const checkpointData: CheckpointTopTreeData[] = this.snapshot.map(j => ({ - blockProofs: j.whenBlockProofsReady(), + subTreeProofs: j.whenSubTreeProofsReady(), l2ToL1MsgsPerBlock: j.checkpoint.blocks.map(b => b.body.txEffects.map(tx => tx.l2ToL1Msgs)), blobFields: j.checkpoint.toBlobFields(), previousBlockHeader: j.previousBlockHeader, From fa7a627a88cb79ee34936fe739837cdd770767fd Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Tue, 28 Jul 2026 09:12:55 -0300 Subject: [PATCH 09/10] test(fast-inbox): follow the InboxParity request type through the broker and restart tests (A-1427) The base parity and root parity request types collapsed into a single INBOX_PARITY, so the broker abort/revive tests and the prover-restart parity predicate reference it. --- .../proving/prover_restart.parallel.test.ts | 3 +-- .../src/proving_broker/proving_broker.test.ts | 16 ++++++++-------- .../broker_persisted_database.test.ts | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/yarn-project/end-to-end/src/single-node/proving/prover_restart.parallel.test.ts b/yarn-project/end-to-end/src/single-node/proving/prover_restart.parallel.test.ts index 319ffee9e94f..b8b111fdbc6f 100644 --- a/yarn-project/end-to-end/src/single-node/proving/prover_restart.parallel.test.ts +++ b/yarn-project/end-to-end/src/single-node/proving/prover_restart.parallel.test.ts @@ -33,8 +33,7 @@ const ALL_PROVING_TYPES = Object.values(ProvingRequestType).filter( (t): t is ProvingRequestType => typeof t === 'number', ); -const isParity = (type: ProvingRequestType) => - type === ProvingRequestType.PARITY_BASE || type === ProvingRequestType.PARITY_ROOT; +const isParity = (type: ProvingRequestType) => type === ProvingRequestType.INBOX_PARITY; const isTxBaseRollup = (type: ProvingRequestType) => type === ProvingRequestType.PRIVATE_TX_BASE_ROLLUP || type === ProvingRequestType.PUBLIC_TX_BASE_ROLLUP; diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts index 8faf165bcce7..79060fa85a53 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker.test.ts @@ -222,7 +222,7 @@ describe.each([ it('revives an aborted job when its producer re-requests it', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -239,7 +239,7 @@ describe.each([ // 'in-queue', and it can then be completed. await expect(broker.enqueueProvingJob(provingJob)).resolves.toEqual({ status: 'in-queue' }); await assertJobStatus(provingJob.id, 'in-queue'); - const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] }); + const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] }); expect(returnedJob?.job).toEqual(provingJob); const retryValue = makeOutputsUri(); @@ -250,7 +250,7 @@ describe.each([ it('persists the aborted state across a restart and revives on re-request', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -276,7 +276,7 @@ describe.each([ // 'in-queue' status), and it can be completed. await expect(broker.enqueueProvingJob(provingJob)).resolves.toEqual({ status: 'in-queue' }); await assertJobStatus(provingJob.id, 'in-queue'); - const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] }); + const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] }); expect(returnedJob?.job).toEqual(provingJob); const value = makeOutputsUri(); @@ -287,7 +287,7 @@ describe.each([ it('persists the revived (non-aborted) state, so a restart mid-revival stays revived', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -318,7 +318,7 @@ describe.each([ it('revives once when the producer re-requests an aborted job concurrently', async () => { const provingJob: ProvingJob = { id: makeRandomProvingJobId(), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, epochNumber: EpochNumber(1), inputsUri: makeInputsUri(), }; @@ -338,10 +338,10 @@ describe.each([ expect(second).toEqual({ status: 'in-queue' }); await assertJobStatus(provingJob.id, 'in-queue'); - const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] }); + const returnedJob = await broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] }); expect(returnedJob?.job).toEqual(provingJob); await assertJobStatus(provingJob.id, 'in-progress'); - await expect(broker.getProvingJob({ allowList: [ProvingRequestType.PARITY_BASE] })).resolves.toBeUndefined(); + await expect(broker.getProvingJob({ allowList: [ProvingRequestType.INBOX_PARITY] })).resolves.toBeUndefined(); await broker.reportProvingJobSuccess(provingJob.id, makeOutputsUri()); await assertJobStatus(provingJob.id, 'fulfilled'); diff --git a/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts b/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts index 429ea784ab0b..8f7f4b871383 100644 --- a/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts +++ b/yarn-project/prover-client/src/proving_broker/proving_broker_database/broker_persisted_database.test.ts @@ -137,7 +137,7 @@ describe('ProvingBrokerPersistedDatabase', () => { const job: ProvingJob = { id, epochNumber: EpochNumber(42), - type: ProvingRequestType.PARITY_BASE, + type: ProvingRequestType.INBOX_PARITY, inputsUri: makeInputsUri(), }; await db.addProvingJob(job); From e5efd1d5387e23cc2e5239ca5b6e46d0daf58a80 Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Tue, 28 Jul 2026 09:17:20 -0300 Subject: [PATCH 10/10] fix(fast-inbox): annotate the rerun checkpoint job return type (A-1427) Destructuring the sub-tree proof bundle left the helper's inferred return type unnameable outside the package, so declare it explicitly. --- .../prover-node/src/actions/rerun-epoch-proving-job.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts b/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts index 6f0711ac23b9..d909738c118b 100644 --- a/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts +++ b/yarn-project/prover-node/src/actions/rerun-epoch-proving-job.ts @@ -6,7 +6,7 @@ import { DateProvider } from '@aztec/foundation/timer'; import { type ProverClientConfig, createProverClient } from '@aztec/prover-client'; import { ProverBrokerConfig, createAndStartProvingBroker } from '@aztec/prover-client/broker'; import { getLastSiblingPath } from '@aztec/prover-client/helpers'; -import { ChonkCache } from '@aztec/prover-client/orchestrator'; +import { type CheckpointSubTreeProofs, ChonkCache } from '@aztec/prover-client/orchestrator'; import { AvmSimulatorPool, PublicProcessorFactory } from '@aztec/simulator/server'; import type { L2Block } from '@aztec/stdlib/block'; import { getEpochAtSlot, getSlotRangeForEpoch } from '@aztec/stdlib/epoch-helpers'; @@ -86,7 +86,7 @@ export async function rerunCheckpointProvingJob( log: Logger, config: RerunConfig, genesis?: GenesisData, -) { +): Promise { await using ctx = await createRerunContext(localPath, log, config, genesis); const { jobData } = ctx; const checkpointNumber = jobData.checkpoints[0].number;