@aztec/protocol-contracts 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- { "noir_version": "0.28.0+587973ff94368b5ae6247f04c26fd0ef6a933b51", "name": "KeyRegistry", "functions": [{ "name": "register", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "partial_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nullifier_public_key", "type": { "kind": "field" }, "visibility": "private" }, { "name": "incoming_public_key", "type": { "kind": "field" }, "visibility": "private" }, { "name": "outgoing_public_key", "type": { "kind": "field" }, "visibility": "private" }, { "name": "tagging_public_key", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "address": [{ "start": 40, "end": 41 }], "incoming_public_key": [{ "start": 43, "end": 44 }], "inputs": [{ "start": 0, "end": 40 }], "nullifier_public_key": [{ "start": 42, "end": 43 }], "outgoing_public_key": [{ "start": 44, "end": 45 }], "partial_address": [{ "start": 41, "end": 42 }], "tagging_public_key": [{ "start": 45, "end": 46 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "end_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273], "error_types": {} }, "bytecode": "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", "debug_symbols": "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1/oyrvVlXOvLuNaXca0v41pfxrW+jGt9Gdf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6FNf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+BaX8G1voJrfQXX+gqu9RVc6yu41ldwra/gWl/Btb6Ca30F1/oKrvUVXOsruNZXcK2v4FpfwbW+gmt9Bdf6Cq71FVzrK7jWV3Ctr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V1/oqrvVVXOuruNZXca2v4lpfxbW+imt9Fdf6Kq71VVzrq7jWV3Gtr+JaX8W1voprfRXX+iqu9VVc66u41ldxra/iWl/Ftb6Ka30V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Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPGc6Fc+ZTsVzplPxnOlUPWc6Vc+ZTtVzplP1nOlUD8cnbPWc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO1XOmU/Wc6VQ9ZzpVz5lO5jnTyTxnOpnnTCfznOlkh+MT1jxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyz5lO5jnTyTxnOpnnTCfznOlknjOdzHOmk3nOdDLPmU7mOdPJPGc6medMJ/Oc6WSeM53Mc6aTec50Ms+ZTuY508k8ZzqZ50wn85zpZJ4zncxzppN5znQyx5lO5XCc6XQW7/eEPYv3e8Kexfs9Yc/i/Z6wZ/F+T9izeL8n7Fm83xP2LN7vCXsW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/mEdZzpdBbv+YR1nOl0Fu/5hHWc6XQW7/iEDZ4znYLnTKfgOdMpeM50CofjEzZ4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+A50yl4znQKnjOdgudMp+g50yl6znSKnjOdoudMp3g4PmGj50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdIqeM52i50yn6DnTKXrOdEqeM52S50yn5DnTKXnOdEqH4xM2ec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTKfkOdMpec50Sp4znZLnTCfxnOkknjOdxHOmk3jOdJLD8QkrnjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTCfxnOkknjOdxHOmk3jOdBLPmU7iOdNJPGc6iedMJ/Gc6SSeM53Ec6aTeM50Es+ZTuI500k8ZzqJ50wn8ZzpJJ4zncRzppN4znQSz5lO4jnTSTxnOonnTKfsOdMpe850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" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 0, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [4, 5, 6, 7], "error_types": {} }, "bytecode": "H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==", "debug_symbols": "ndpBattQGIXRvWgciu+vpycpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/3l7ftse7y/Ol+37ZXgcKw/D7vhyf+qfD8Pr/rAbHmttn98e7qNZRouMVhiNGxlFRiWjUUZNRpOMpIhRihiliFGKaFJEkyKaFNGkiCZFNCmiSRFNimhSRJMiJilikiImKWKSIiYpYpIiJilikiImKWKSIroU0aWILkV0KaJLEV2K6FJElyK6FNGliFmKmKWIWYqYpYhZipiliFmKmKWIWYqYpYhFilikiEWKWKSIRYpYpIhFilikiEWKWKSIVYpYpYhVililiFWKWKWIVYpYpYhVililiGw2tAqtilYjrRqtJlp1Ws20WmhFbYTaCLURaiPURqiNUBuhNkJthNoItVHURlEbRW0UtVHURlEbxJkhzwyBZkg0Q6QZMs0QaoZUM8SaIdcMwWZINkO0GbLNEG6GdDPEmyHfDAFnSDhDxBkyzhByhpQzxJwh5wxBZ0g6Q9QZss4Qdoa0M8SdIe8MgWdIPEPkGTLPEHqG1DPEniH3DMFnSD5D9BmyzxB+hvQzxJ8h/wwBaEhAQwQaMtAQgoYUNMSgIQcNQWhIQkMUGrLQEIaGNDTEoSEPDYFoSERDJBoy0RCKhlQ0xKIhFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLbvmafc87aInuWiRixa5aJGLFrlo/beL3k4/t+/77dNhd7/Ze//4cXz+d9H3drz8evv75fbvbw==" }, { "name": "rotate_nullifier_public_key", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "new_nullifier_public_key", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "address": [{ "start": 40, "end": 41 }], "inputs": [{ "start": 0, "end": 40 }], "new_nullifier_public_key": [{ "start": 41, "end": 42 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "end_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269], "error_types": {} }, "bytecode": "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", "debug_symbols": "3b3vjixZctz5LvOZWIT/PX74KovFgpKoBQGCFERqgQWhd98o6Wbdbkz1ZHp0pV+z2C87pDIz3HnimFdbu/3mP/7yX/7xP/2P/+f//qd/+a//+m9/+fv/8z/+8s//+p//4d//6V//5fyf/uMvx/+h5v/rf/1v/+0f/uXjf/Nv//4P//3f//L3x9/95R//5b+c////+Xd/+a//9M//+Je/1+3/8//6u//1jWh/I9vfWO1vVPsbu/sNP9rfkPY39PVv/N1ffU4OyR8flcPk89Pi+/H79ubf9zf/frz59/PNv7/e/Pv15t/f7/39ON78+/Lm33/z/Y0339948/2NN9/f+FPvv56z6sdHz/+4fv6+2OP393t/P/XP/X7+/P1dX/2+vfn3/c2/H2/+/Xzz7683/369+ff3e39/HW/+fXnz77/5/q4/d39THj+f+vnZz9/2N/52vPG3/9ydFdmPHxf/SpPXevPv15t/f7/39+t48+/Lm39f3/z79ubf9zf/frz59998f+vN97fefH/rzfd3v/n+7jff3/3m+7vffH/3m+/vfvP93W++v/vN93e/+f7u995fO443/768+ff1zb9vb/59f/Pvx5t/P9/8++vNv19v/v0331958/2VN99fefP9lT/neW63h2e4M373+19U41GPanzZV9U4VDVrsJoQf1QTX1dTUNVspGr0gKpGoKpRqGom9SaPT/VLOb6qxqGqCahqEqqaBVVNQVWzkaqxA6oagapGoaqB0mKD0mKD0mKD0mKD0mKD0mKD0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0mKH0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKA0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uKE0uIFpcULSosXlBYvKC1eUFq8oLR4QWnxgtLiBaXFC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLC0qLN5QWbygt3lBavKG0eENp8YbS4g2lxRtKizeUFm8kLfYDSYv9QNJiP5C02A8kLfYDSYv9QNJiP5C02A8kLfYDSYv9gNJigdJigdJigdJigdJigdJigdJigdJigdJigdJigdJihdJihdJihdJiqNydQ+XuHCp351C5O4fK3TlU7s6hcncOlbtzqNydQ+XuHCp351C5O4fK3TlU7s6hcncOlbtz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px/904/+6Uf/9KN/+tk//eyffvZPP/unn/3Tz/7pZ//0s3/62T/97J/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p/+6p9+9U+/+qdf/dOv/ulX//Srf/rVP/3qn371T7/6p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/7p7/bpy/H0f+K9L+i/a9Y/yve/0r0v5L9r6z+V6r/lf7pS//0pX/60j996Z++9E9f+qcv/dOX/ulL//Slf/raP33tn772T1/7p6/909f+6Wv/9Pten/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/a9Pu17fdr3+rTv9Z3/hrv/leh/JftfWf2vVP8r/dPve33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+l5f9L2+6Ht90ff6ou/1Rd/ri77XF32vL/peX/S9vuh7fdH3+qLv9UXf64u+1xd9ry/6Xl/0vb7oe33R9/qi7/VF3+uLvtcXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6su/1Zd/ry77Xl32vL/teX/a9vux7fdn3+rLv9WXf68u+15d9ry/7Xl/2vb7se33Z9/qy7/Vl3+vLvteXfa8v+15f9r2+7Ht92ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+lbf61t9r2/1vb7V9/pW3+tbfa9v9b2+1ff6Vt/rW32vb/W9vtX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV32vr/peX/W9vup7fdX3+qrv9VXf66u+11d9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbfa9v972+3ff6dt/r232vb/e9vt33+nbf69t9r2/3vb7d9/p23+vbba/PjrbXd35F+l/R/les/xXvfyX6X8n+V1b/K9X/Sv/0pX/60j996Z++9E9f+qcv/dOX/ulL//Slf/rSP33tn772T1/7p6/909f+6Wv/9LV/+to/fe2fvvZP3/qnb/3Tt/7pW//0rX/61j9965++9U/f+qdv/dP3/ul7//S9f/reP33vn773T9/7p+/90/f+6Xv/9KN/+tE//eiffvRPP/qnH/3Tj/7pR//0o3/60T/97J9+9k8/+6ef/dPP/uln//Szf/rZP/3sn372T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T3/1T7/6p1/906/+6Vf/9Kt/+tU//eqffvVPv/qnX/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T3/3T73t90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7pe33S9/qk7/VJ3+uTvtcnfa9P+l6f9L0+6Xt90vf6pO/1Sd/rk77Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdr3+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+vTvtenfa9P+16f9r0+7Xt92vf6tO/1ad/r077Xp32vT/ten/a9Pu17fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+12d9r8/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+63t91vf6rO/1Wd/rs77XZ32vz/pen/W9Put7fdb3+qzv9Vnf67O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7ve33e9/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/r877X532vz/ten/e9Pu97fd73+rzv9Xnf6/O+1+d9r8/7Xp/3vT7v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3njqvfHUe+Op98ZT742n3htPvTecetcBp951wKl3HXDqXce3qLc/yIb6O7LhVyXZZ/ra8jcokP3FR0s+cbQl9pvqvwzG5mewV9KOzw//5IbU4dO9fpZkab/t9VFQoBWUaAUttIIKraANVtD3xJi/syBBK0jRCjK0gtCUWtCUWtCUWtCUWtCUWtCUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGUWtGU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tCU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGU2tGUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtCUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUOtGUeqEp9UJT6oWm1AtNqReaUi80pV5oSr3QlHqhKfVCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+pCU+qNptQbTak3mlJvNKXeaEq90ZR6oyn1RlPqjabUG0yp9wGm1PsAU+p9gCn1PsCUeh9gSr3RMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juNEyihsto7jRMoobLaO40TKKGy2juMEyinIcYCHFj4qwtPqjIiyx/qgIS60/KsKS64+KsPT6oyIswf6oCEuxPyrCkuyPiuA0Gyyu+FERnGaDBRY/KoLTbLDI4kdFcJoNFlr8qAhOs8Fiix8VwWk2WHDxoyI4zQaLLn5UBKfZYOHFj4rgNBssvvhREZxmgwUYPyqC02ywCONHRXCaDRZi/KgITrPBYowfFcFpNliQ8aMiOM0GizJ+VASn2WBhxo+K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" }], "outputs": { "structs": { "functions": [{ "kind": "struct", "path": "KeyRegistry::register_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "KeyRegistry::register_parameters", "fields": [{ "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "partial_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "nullifier_public_key", "type": { "kind": "field" } }, { "name": "incoming_public_key", "type": { "kind": "field" } }, { "name": "outgoing_public_key", "type": { "kind": "field" } }, { "name": "tagging_public_key", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_parameters", "fields": [{ "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "new_nullifier_public_key", "type": { "kind": "field" } }] } }] }] }, "globals": { "storage": [{ "kind": "struct", "fields": [{ "name": "nullifier_public_key_registry", "value": { "kind": "struct", "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "1" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }] } }] }] } }, "file_map": { "3": { "source": "use crate::cmp::Eq;\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n}\n", "path": "std/collections/bounded_vec.nr" }, "28": { "source": "use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash<N>(input: [Field; N], message_size: u64) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<N>(input: [Field; N], in_len: u64, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n", "path": "std/hash/poseidon2.nr" }, "33": { "source": "use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<N, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n", "path": "std/option.nr" }, "53": { "source": "use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{\n prelude::Deserialize,\n context::{\n PrivateContext, PublicContext, Context, gas::GasOpts,\n interface::{ContextInterface, PublicContextInterface}\n},\n hash::hash_args_array\n};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public<TPublicContext>(\n context: &mut TPublicContext,\n on_behalf_of: AztecAddress\n) where TPublicContext: ContextInterface + PublicContextInterface {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = PublicContextInterface::call_public_function(\n context,\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash<N>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash<N>(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n", "path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr" }, "58": { "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::protocol_types::{hash::pedersen_hash, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()], 0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr" }, "64": { "source": "use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block \n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know \n// both the current value and the smallest block number at which the value might change - this is called the \n// 'block horizon'.\nstruct ScheduledValueChange<T> {\n pre: T,\n post: T,\n block_of_change: u32,\n}\n\nimpl<T> ScheduledValueChange<T> {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public \n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current \n /// transaction will be included) and in private (where `block_number` is the historical block number that is used \n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or \n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current \n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`, \n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of \n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon \n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to \n // that one.\n //\n // block of historical \n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum \n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one. \n // This is similar to the scenario where the block of change is in the past: the time horizon is the \n // block prior to the earliest one in which a new block of change might land.\n // \n // historical \n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | | \n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case \n // the block of change would become the limiting factor for the time horizon, which would equal the \n // block right before the block of change (since by definition the value changes at the block of \n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon | \n // -----------------------------------\n // minimum delay\n // \n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for \n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates a scheduled value change by scheduling a change at the current block number. This function is only\n /// meaningful when called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl<T> Serialize<3> for ScheduledValueChange<T> {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl<T> Deserialize<3> for ScheduledValueChange<T> {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self { \n pre: FromField::from_field(input[0]), \n post: FromField::from_field(input[1]), \n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n\nfn min(lhs: u32, rhs: u32) -> u32 {\n if lhs < rhs { lhs } else { rhs }\n}\n\n#[test]\nfn test_min() {\n assert(min(3, 5) == 3);\n assert(min(5, 3) == 3);\n assert(min(3, 3) == 3);\n}\n\nmod test {\n use crate::state_vars::shared_mutable::scheduled_value_change::ScheduledValueChange;\n\n global TEST_DELAY: u32 = 200;\n\n #[test]\n fn test_get_current_at() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_current_at(0), pre);\n assert_eq(value.get_current_at(block_of_change - 1), pre);\n assert_eq(value.get_current_at(block_of_change), post);\n assert_eq(value.get_current_at(block_of_change + 1), post);\n }\n\n #[test]\n fn test_get_scheduled() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_scheduled(), (post, block_of_change));\n }\n\n fn assert_block_horizon_invariants(\n value: &mut ScheduledValueChange<Field>,\n historical_block_number: u32,\n block_horizon: u32\n ) {\n // The current value should not change at the block horizon (but it might later).\n let current_at_historical = value.get_current_at(historical_block_number);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n\n // The earliest a new change could be scheduled in would be the immediate next block to the historical one. This\n // should result in the new block of change landing *after* the block horizon, and the current value still not\n // changing at the previously determined block_horizon.\n\n let new = value.pre + value.post; // Make sure it's different to both pre and post\n value.schedule_change(\n new,\n historical_block_number + 1,\n TEST_DELAY,\n historical_block_number + 1 + TEST_DELAY\n );\n\n assert(value.block_of_change > block_horizon);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n }\n\n #[test]\n fn test_get_block_horizon_change_in_past() {\n let historical_block_number = 100;\n let block_of_change = 50;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_immediate_past() {\n let historical_block_number = 100;\n let block_of_change = 100;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_near_future() {\n let historical_block_number = 100;\n let block_of_change = 120;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n // Note that this is the only scenario in which the block of change informs the block horizon.\n // This may result in privacy leaks when interacting with applications that have a scheduled change\n // in the near future.\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, block_of_change - 1);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_far_future() {\n let historical_block_number = 100;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_schedule_change_before_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change - 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n // Because we re-schedule before the last scheduled change takes effect, the old `post` value is lost.\n assert_eq(value.pre, pre);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n\n #[test]\n fn test_schedule_change_after_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change + 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n assert_eq(value.pre, post);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr" }, "65": { "source": "use dep::protocol_types::{hash::pedersen_hash, traits::FromField};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::history::public_storage::public_storage_historical_read;\nuse crate::public_storage;\nuse crate::state_vars::{storage::Storage, shared_mutable::scheduled_value_change::ScheduledValueChange};\n\nstruct SharedMutable<T, DELAY> {\n context: Context,\n storage_slot: Field,\n // The _dummy variable forces DELAY to be interpreted as a numberic value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; DELAY],\n}\n\nimpl<T, DELAY> Storage<T> for SharedMutable<T, DELAY> {}\n\n// SharedMutable<T> stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the \n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\nimpl<T, DELAY> SharedMutable<T, DELAY> {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot, _dummy: [0; DELAY] }\n }\n\n pub fn schedule_value_change(self, new_value: T) {\n let context = self.context.public.unwrap();\n let mut scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = context.block_number() as u32;\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + DELAY;\n\n scheduled_value_change.schedule_change(new_value, block_number, DELAY, block_of_change);\n\n public_storage::write(self.get_derived_storage_slot(), scheduled_value_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = self.context.public.unwrap().block_number() as u32;\n scheduled_value_change.get_current_at(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n scheduled_value_change.get_scheduled()\n }\n\n pub fn get_current_value_in_private(self) -> T where T: FromField {\n let mut context = self.context.private.unwrap();\n\n let (scheduled_value_change, historical_block_number) = self.historical_read_from_public_storage(*context);\n let block_horizon = scheduled_value_change.get_block_horizon(historical_block_number, DELAY);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the \n // historical public value matches the current one, since it can only change after the horizon.\n context.set_tx_max_block_number(block_horizon);\n scheduled_value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n context: PrivateContext\n ) -> (ScheduledValueChange<T>, u32) where T: FromField {\n let derived_slot = self.get_derived_storage_slot();\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let mut raw_fields = [0; 3];\n for i in 0..3 {\n raw_fields[i] = public_storage_historical_read(\n context,\n derived_slot + i as Field,\n context.this_address()\n );\n }\n\n let scheduled_value: ScheduledValueChange<T> = ScheduledValueChange::deserialize(raw_fields);\n let historical_block_number = context.historical_header.global_variables.block_number as u32;\n\n (scheduled_value, historical_block_number)\n }\n\n fn get_derived_storage_slot(self) -> Field {\n // Since we're actually storing three values (a ScheduledValueChange struct), we hash the storage slot to get a\n // unique location in which we can safely store as much data as we need. This could be removed if we informed\n // the slot allocator of how much space we need so that proper padding could be added.\n // See https://github.com/AztecProtocol/aztec-packages/issues/5492\n pedersen_hash([self.storage_slot, 0], 0)\n }\n}\n\nmod test {\n use dep::std::{merkle::compute_merkle_root, test::OracleMock};\n\n use crate::{\n context::{PublicContext, PrivateContext, Context},\n state_vars::shared_mutable::shared_mutable::SharedMutable,\n oracle::get_public_data_witness::PublicDataWitness\n };\n\n use dep::protocol_types::{\n constants::{GENERATOR_INDEX__PUBLIC_LEAF_INDEX, PUBLIC_DATA_TREE_HEIGHT}, hash::pedersen_hash,\n address::AztecAddress, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage\n };\n\n fn setup(private: bool) -> (SharedMutable<Field, TEST_DELAY>, Field) {\n let block_number = 40;\n let context = create_context(block_number, private);\n\n let storage_slot = 57;\n let state_var: SharedMutable<Field, TEST_DELAY> = SharedMutable::new(context, storage_slot);\n\n (state_var, block_number)\n }\n\n fn create_context(block_number: Field, private: bool) -> Context {\n if private {\n let mut private_context = PrivateContext::empty();\n private_context.historical_header.global_variables.block_number = block_number;\n Context::private(&mut private_context)\n } else {\n let mut public_context = PublicContext::empty();\n public_context.inputs.public_global_variables.block_number = block_number;\n Context::public(&mut public_context)\n }\n }\n\n global TEST_DELAY = 20;\n\n global pre = 13;\n global post = 42;\n\n #[test]\n fn test_get_current_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, current value is pre\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_current_value_in_public(), pre);\n }\n\n #[test]\n fn test_get_current_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_current_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number + 1) as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, block_number as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number - 1) as u32));\n }\n\n #[test]\n fn test_schedule_value_change_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The new scheduled change replaces the old one\n assert_eq(write_mock.get_last_params(), (slot, [pre, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_get_current_value_in_private_before_change() {\n // Here we'd want to test that the private getter returns the correct value and sets max_block_number in the\n // context to the expected block horizon, in all the possible scenarios (long before change, before near change,\n // after change).\n // However, this requires mocking the getPublicDataTreeWitness oracle so that we can convince the circuit that\n // it got a valid historical proof. Because we can set the tree root to whatever we want in the context, this is\n // trivial for a single historical value (we add a leaf and compute the root with any random path), but is quite\n // hard if we're reading more than one value for the same root (as SharedMutable does): we essentially need to\n // create an actual indexed tree and compute the correct path for each of the inserted values.\n // TODO: implement an actual tree and use it here https://github.com/AztecProtocol/aztec-packages/issues/5494\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr" }, "69": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::oracle::storage::{storage_read, storage_write};\n\npub fn read<T, N>(storage_slot: Field) -> T where T: Deserialize<N> {\n T::deserialize(storage_read(storage_slot))\n}\n\npub fn write<T, N>(storage_slot: Field, value: T) where T: Serialize<N> {\n storage_write(storage_slot, value.serialize());\n}\n\n// Ideally we'd do the following, but we cannot because of https://github.com/noir-lang/noir/issues/4633\n// pub fn read_historical<T, N>(\n// storage_slot: Field,\n// context: PrivateContext\n// ) -> T where T: Deserialize<N> {\n// let mut fields = [0; N];\n// for i in 0..N {\n// fields[i] = public_storage_historical_read(\n// context,\n// storage_slot + i as Field,\n// context.this_address()\n// );\n// }\n// T::deserialize(fields)\n// }\n\nmod tests {\n use dep::std::test::OracleMock;\n use dep::protocol_types::traits::{Deserialize, Serialize};\n use crate::public_storage;\n\n struct TestStruct {\n a: Field,\n b: Field,\n }\n\n impl Deserialize<2> for TestStruct {\n fn deserialize(fields: [Field; 2]) -> TestStruct {\n TestStruct { a: fields[0], b: fields[1] }\n }\n }\n\n impl Serialize<2> for TestStruct {\n fn serialize(self) -> [Field; 2] {\n [self.a, self.b]\n }\n }\n\n #[test]\n fn test_read() {\n let slot = 7;\n let written = TestStruct { a: 13, b: 42 };\n\n OracleMock::mock(\"storageRead\").with_params((slot, 2)).returns(written.serialize());\n\n let read: TestStruct = public_storage::read(slot);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n\n #[test]\n fn test_write() {\n let slot = 7;\n let to_write = TestStruct { a: 13, b: 42 };\n\n let mock = OracleMock::mock(\"storageWrite\").returns([0; 2]); // The return value is unused\n\n public_storage::write(slot, to_write);\n assert_eq(mock.get_last_params(), (slot, to_write.serialize()));\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/public_storage.nr" }, "77": { "source": "use crate::{\n context::{\n inputs::PublicContextInputs, interface::ContextInterface, interface::PublicContextInterface,\n gas::GasOpts\n},\n messaging::process_l1_to_l2_message,\n oracle::{arguments, public_call::call_public_function_internal, returns},\n hash::{hash_args, ArgsHasher}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, side_effect::SideEffect\n},\n hash::silo_nullifier, address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{Deserialize, Empty}\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_hash : Field,\n\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_non_existent_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL>,\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n PublicContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter,\n args_hash,\n return_hash: 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero() // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> FunctionReturns<RETURNS_COUNT> {\n let side_effect_counter = self.side_effect_counter;\n // TODO get next value from output of `call_public_function_internal`\n self.side_effect_counter += 1;\n\n let raw_returns = call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n FunctionReturns::new(raw_returns)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_non_existent_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_non_existent_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_log_preimages_length = 0;\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_non_existent_read_requests: self.nullifier_non_existent_read_requests.storage,\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n returns_hash: self.return_hash,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n global_variables: self.inputs.public_global_variables,\n prover_address: self.prover_address,\n revert_code: 0,\n start_gas_left: self.inputs.gas_left,\n end_gas_left: self.inputs.gas_left, // AVM should decrease this value\n transaction_fee: self.inputs.transaction_fee\n };\n pub_circuit_pub_inputs\n }\n}\n\nimpl ContextInterface for PublicContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PublicContextInterface for PublicContext {\n fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n fn timestamp(self) -> u64 {\n self.inputs.public_global_variables.timestamp\n }\n\n fn coinbase(self) -> EthAddress {\n self.inputs.public_global_variables.coinbase\n }\n\n fn fee_recipient(self) -> AztecAddress {\n self.inputs.public_global_variables.fee_recipient\n }\n\n fn fee_per_da_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_da_gas\n }\n\n fn fee_per_l2_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_l2_gas\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Current public can only check for settled nullifiers, so we always silo.\n let siloed_nullifier = silo_nullifier(address, unsiloed_nullifier);\n nullifier_exists_oracle(siloed_nullifier) == 1\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // We can consume message with a secret in public context because the message cannot be modified and therefore\n // there is no front-running risk (e.g. somebody could front run you to claim your tokens to your address).\n // Leaf index is not used in public context, but it is used in the AVMContext which will replace it.\n fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress, _leaf_index: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n this,\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n fn emit_unencrypted_log<T>(&mut self, log: T) {\n let event_selector = 5;\n let log_hash = emit_unencrypted_log_oracle(self.this_address(), event_selector, log);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // Once we hash inside circuits, this replaces push_unencrypted_log\n // For now we need an oracle to get the hash\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n fn static_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n fn delegate_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext {\n inputs: PublicContextInputs::empty(),\n side_effect_counter: 0 as u32,\n args_hash : 0,\n return_hash : 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n }\n }\n}\n\n#[oracle(checkNullifierExists)]\nfn nullifier_exists_oracle(nullifier: Field) -> Field {}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nstruct FunctionReturns<N> {\n values: [Field; N]\n}\n\nimpl<N> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr" }, "95": { "source": "#[oracle(packArgumentsArray)]\nfn pack_arguments_array_oracle<N>(_args: [Field; N]) -> Field {}\n\n#[oracle(packArguments)]\nfn pack_arguments_oracle(_args: [Field]) -> Field {}\n\n/// - Pack arguments (array version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments_array<N>(args: [Field; N]) -> Field {\n pack_arguments_array_oracle(args)\n}\n\n/// - Pack arguments (slice version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments(args: [Field]) -> Field {\n pack_arguments_oracle(args)\n}\n\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/arguments.nr" }, "106": { "source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(callPublicFunction)]\nfn call_public_function_oracle<RETURNS_COUNT>(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {}\n\nunconstrained pub fn call_public_function_internal<RETURNS_COUNT>(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {\n call_public_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/public_call.nr" }, "108": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr" }, "112": { "source": "mod globals;\nmod inputs;\n\nmod private_context;\nmod public_context;\nmod avm_context;\nmod interface;\nmod gas;\n\nuse interface::{\n ContextInterface, PrivateCallInterface, PublicCallInterface, PrivateVoidCallInterface,\n PublicVoidCallInterface, AvmCallInterface, AvmVoidCallInterface\n};\nuse private_context::PrivateContext;\nuse private_context::PackedReturns;\nuse public_context::PublicContext;\nuse public_context::FunctionReturns;\nuse avm_context::AvmContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n avm: Option<&mut AvmContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context { private: Option::some(context), public: Option::none(), avm: Option::none() }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context { public: Option::some(context), private: Option::none(), avm: Option::none() }\n }\n\n pub fn avm(context: &mut AvmContext) -> Context {\n Context { avm: Option::some(context), public: Option::none(), private: Option::none() }\n }\n\n pub fn none() -> Context {\n Context { public: Option::none(), private: Option::none(), avm: Option::none() }\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context.nr" }, "113": { "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr" }, "131": { "source": "pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr" }, "149": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "154": { "source": "use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "183": { "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr" }, "203": { "source": "use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr" }, "205": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_tx_logs_hash<MAX_ENCRYPTED_LOGS_PER_TX>(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // TODO(Miranda): Below is flat hashing which would reduce constraints (we now only hash once in tail) - convert to this?\n\n // // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n // // Ideally we would define a new global here but for now we assert in case MAX_LOGS changes\n // assert(MAX_ENCRYPTED_LOGS_PER_TX * 32 == 256);\n // let mut hash_input_flattened = [0; 256];\n // for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // let input_as_bytes = logs[offset].value.to_be_bytes(32);\n // for byte_index in 0..32 {\n // hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n // }\n // }\n // // This differs from accumulate_sha256 as we could increase MAX_LOGS and\n // // ideally we would push to a slice then hash, but in practice compilation was very slow\n // // Hardcode to 256 bytes for now\n // sha256_to_field(hash_input_flattened)\n\n // Assuming logs are pre-sorted\n let mut accumulated_logs_hash = 0;\n for i in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n if !is_empty(logs[i]) {\n accumulated_logs_hash = accumulate_sha256([accumulated_logs_hash, logs[i].value]);\n }\n }\n\n accumulated_logs_hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "294": { "source": "contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n state_vars::{\n SharedMutable,\n Map\n }, \n protocol_types::{\n address::{\n AztecAddress,\n PublicKeysHash,\n PartialAddress,\n },\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n },\n hash::poseidon2_hash,\n },\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n nullifier_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // incoming_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // outgoing_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // tagging_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n }\n\n #[aztec(public)]\n fn rotate_nullifier_public_key(\n address: AztecAddress,\n new_nullifier_public_key: Field,\n ) {\n assert(\n new_nullifier_public_key != 0,\n \"New nullifier public key must be non-zero\"\n );\n\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n }\n\n let nullifier_key_registry = storage.nullifier_public_key_registry.at(address);\n\n nullifier_key_registry.schedule_value_change(new_nullifier_public_key);\n }\n\n #[aztec(public)]\n fn register(\n address: AztecAddress,\n partial_address: PartialAddress,\n nullifier_public_key: Field,\n incoming_public_key: Field,\n outgoing_public_key: Field,\n tagging_public_key: Field,\n ) {\n assert(\n (nullifier_public_key != 0) &\n (incoming_public_key != 0) &\n (outgoing_public_key != 0) &\n (tagging_public_key != 0),\n \"All public keys must be non-zero\"\n );\n\n // TODO (ek): Do it below after refactoring all public_keys_hash_elemtns\n // let public_keys_hash = PublicKeysHash::compute(nullifier_public_key, tagging_public_key, incoming_public_key, outgoing_public_key);\n // let address = AztecAddress::compute(public_keys_hash, partial_address);\n // We could also pass in original_public_keys_hash instead of computing it here, if all we need the original one is for being able to prove ownership of address\n let public_keys_hash = poseidon2_hash([\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n ]\n );\n\n let computed_address = AztecAddress::from_field(\n poseidon2_hash([\n partial_address.to_field(),\n public_keys_hash.to_field(),\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1 as Field,\n ]\n )\n );\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let nullifier_key_registry = storage.nullifier_public_key_registry.at(address);\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n // let incoming_key_registry = storage.incoming_public_key_registry.at(address);\n // let outgoing_key_registry = storage.outgoing_public_key_registry.at(address);\n // let tagging_key_registry = storage.taggin_public_key_registry.at(address);\n\n nullifier_key_registry.schedule_value_change(nullifier_public_key);\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality // incoming_key_registry.schedule_value_change(new_incoming_public_key);\n // outgoing_key_registry.schedule_value_change(new_outgoing_public_key);\n // tagging_key_registry.schedule_value_change(new_tagging_public_key);\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr" } } }
1
+ { "noir_version": "0.28.0+b6ee6a5888e47e7e17024eb66172459a13bdeb3a", "name": "KeyRegistry", "functions": [{ "name": "register", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "partial_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nullifier_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "incoming_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "outgoing_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "tagging_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] }, "visibility": "private" }], "param_witnesses": { "address": [{ "start": 40, "end": 41 }], "incoming_public_key": [{ "start": 44, "end": 46 }], "inputs": [{ "start": 0, "end": 40 }], "nullifier_public_key": [{ "start": 42, "end": 44 }], "outgoing_public_key": [{ "start": 46, "end": 48 }], "partial_address": [{ "start": 41, "end": 42 }], "tagging_public_key": [{ "start": 48, "end": 50 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "end_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277], "error_types": {} }, "bytecode": "H4sIAAAAAAAA/+2dB5gcxbXve8VKCJZdsgNOCzYmw2h3EeCAxzY2zgnb5CAhkQ2YYGOwMVFkkMhBSEI5R4QQQkgiJ0mAQBIIpFFAAq7fu+ldX/v6Xu6bmq0/+9+z1bM7o67e06Lm+/qb6tPVfX51urrqVOjqmqj1t2tNFNXYcE/73xR1/CFO3v7nNu/XJ8Fr5Xxy1mSEs0dGOLfKCGdtRjh7ZoSzV0Y4t84IZ++McG6TEc5tM8JZlxHO7TLCWZ8RzoaMcG6fEc4dMsK5Y0Y4d8oI584Z4dwlI5y7ZoTzExnh/GRGOD+VEc5PZ4Rzt4xwfiYjnJ/NCOfnMsL5+YxwfiEjnI0Z4dw9I5x7ZITzixnh/FJGOPfMCOeXM8K5V0Y4984I5z4Z4dw3I5z7ZYRz/4xwHpARzgMzwnlQRjhzGeHskyDnYcSJOQ7N9r/F/h9s//va/0Ps/6H2/zCbxlq7/5Xi9tXi9rXi9nVx7PDi9g3L/017rNEe+1Zx+3ZxO6K4fae4fbe4HVncvlfcvl/cflDcfljcflTcflzcflLcflrcflbcfl7cflHcjipuvyxuvypuvy5uRxe3Y4rbscXtuOJ2fHE7obidWNxOKm4nF7dTils/wdK/uJ1a3AYUt4HF7bTidnpxO6O4nVnczipuZxe3c4rbb4rbucXtvOJ2fnH7bXG7oLhdWNwuKm4XF7ffFbffF7dLitsfitulxe2y4vbH4van4nZ5cftzcbuiuF1pWXawLFcVt6uL2zXF7driNqi4XVfcri9uNxS3G4vbTcXt5uJ2S3G7tbjdVtwGF7chIl23F7c7itudxe2u4nZ3cbunuN1b3O4rbvcXtweK29Di9mBxG1bchhe3EcXtoeI2sriNKm6ji9uY4ja2uI0rbuOL24TiNrG4TSpuk4vblOI2tbhNK27Ti9sMy4KHY2Zxm1XcHi5us4vbI8VtTnF7tLjNLW6PFbd5xe3x4ja/uD1R3BYUt4XFbVFxe7K4PVXcni5uzxS3Z4vbc8Xt+eL2QnF7sbi9VNxeLm6Li9uS4ra0uL1S3F4tbq8Vt2XF7fXi9kZxW17cVhS3lcXtzeL2VnFbVdzeLm7vFLfVxW1NcSsUt7VR+3y9rritL24bitu7VrbR/m+ycXvb/feK2/vF7YPi9k/F7S/F7f8Ut/9b3P7ZxvkX+/+v9v/f7P+/2///Z///w/7/1f7/p/3/m/3/u/3/L/v/D/v/3/b/f+z/h/b/f+0/Cq0a+9/D/m9l/2vtf0/738v+b23/e9v/bez/tva/zv5vZ//r7X+D/d/e/u9g/3e0/zvZ/53t/y72n+dqffTL2//c5v368A3mCWBGbiYXbWWPmwknZjKHmShhbrIZ4DeD52Zg2gz6mgFVM1hpBgLNQ20GsMzgkBl4MYMaZsDAdMabjm7TiWw6aE3np+lYNJ12pkPMdDaZjpzG4rZ7cTONe9NwNo1S0+AzjSnTUDGNAONgG+fVOIbG6TIOjXEWTEVsHr7STDP720DpMwW/KfRNgW8Ke1PQm0LeFPCyUJcFeXcX3t1dYG9uId3dBXPWC2NZAJvC1xS8nRW2pqA1hawpYE3hagpWU6iaAtUUpqYgNYWoKUBN4WkKTlNomgKzVFjWtBaSpoA0haMpGE2haApEUxiagtAUgqYANIWfKfhMoWcKPFPYmYLOFHKmgDOFmynYTKFm8pi9/Ee/D7dqC3/a/n/zggv6/aHxzHMHDLyk8byLL2o877TG/uddfO6AC/nEptq28M72//vlTzm4tkpdX632xJPpxM/a/34XXTTwN+df1HjReY39Bgxo/P2ZF53ReN7vBl5w2jnn/Z7PvaBapeN6Vq/0pp2rVDqGTty9o9ILL+5/0QX9Tr0oXvOkajUfumuVJ/5i181EPqZazU/vVuWJq3fbTOQN1Wr+e2OVJ37EWemJW1d74u50YqX5f8ReHcErMvDEvaqknlHtiW/vVX1y/7lapf9R7Ylf2Lt62tzeVSrtW+2Jx24G7W+rVfrHak+8utoTp2xGMp+rVum/bYbSbfapUuk3qj3x/GpPvHWf6pPZsG+VSo/at3qlA6pVela1J96yGbRjqlU6vdoT51R74trNSOY/qlX65f2qV/p1OreqyvDI/aqk/km1J/5hM5J7c7VKb6/2xMc3g3ZxtUqXVXviXzeDtmH/KpV+utoTG6s98Qf7V5/MAdUqvW0zlE6qVunaak/c6YAqT8wdUH0yp1er9D82Q2mvA6tUul21Jx50YPW0R1ar9BfVnnhstSdevRnJfLBapc9vhtI1dG5VleH71VL/S7Unfuag6pN74EFVKm2p9sSTNoP2vGqVXlztifduBu30apXOq/bEJ6s98S+bkcxeuSqV9slVr3RgtUofqPbEl6s98YPNSOZZfapUOq1P9UoXVqv02WpPfH8zaGuaqlS6XbUn7lztiV9vqj6ZR1er9KrNUDq8WqUvbIbSjdUq3aG5eqUHNFep9OjNUHpRtUqHbYbSOdUqXbsZSv+rWqVfaqlM6UeDjofaE3vTxfJRQhMsDu7T10yawAwLucKOmWDRwx7Df6OVb2X38V9j5bV2v1bIe9r9nuI6W9v9rYW83u7XC/n2dn97Id/R7u8o5Dvb/Z2F/JN2H/95K/+C3f+CkH/J7n9JXGdPu7+nkH/Z7n+Z5HX2WOln5UaGMeUakmE0tQfJMFC6Fcl64XIk29rKepIM+acXybaxsq1Jtq2V9SZZnZVtQ7LtrGxbktVbWR3JGqxsO5Jtb2X1JMNMuwaS7Whl25NsJyvbgWQYit2RZLtY2U4kw/jnziT7hJXtQrJPWtmuJPuUlX2CZCgBPkkyDFh+imSfsbJPkwyFwG4k+5yVfYZkn7eyz5LsC1b2OZI1WtnnSba7lX2BZHtYWSPJvmhlu5PsS1a2B8n2tLIvkuzLVvYlkmGwbU+SYfTkyyTDUMNeJEPH8d4k28/K9iEZ+oL2JRk6TvYjGRqj+5MMjYQDSAbn9kCSwZs7iGQoI3MkQ6XQB2VZ1DZbsHQOylCSNaP8JFkLyk6SYRJIT5L1tbJeJDuEdEN2qJX1JtlhVoZn3xw7wobzUUL1SktzP3Pd7yR93eKVzXWPTP66OVNPfS9qs3We9HyHbPV9G66Jkp3k+D26bg3pgbyWwsdSXMSDPVB+g92Uyd+14e+XOe8IcV4DxfmuI/35KNn0Hyl4jhTM5p78hDg85NmBIc92+Vdxnj2d4sq8B19iS8yzJxBH8nm2pclPnm3KhTzbOgk5itx5D37tlphnzyKO5PNs35Bnu/6rOM9eTXFl3kMba0vMs5cQR/J59lBPebZPyLNR68sXUeTOe2jvb4l5dhBxJJ9nDwvlbNd/FefZ4RRX5j30PW2JefZO4kg+z/b3lGebQ56NWl86iyJ33kM/6JaYZ0cSR/J5dqCnPBv6DcxvHsWVeQ998ltinp1uw6bPdqPts92NZJus7DPE6yFvH+opbx8a8nbry7hR5M6jGB/aEvP2Qhs2+fhfbD7+PMn+FWOwJPs3GkeF7N+tbHeS/T8r24Nk/2FlXyTZXzGeS7L/xFguyf6GcVyS/d3K9iLZf1nZ3iT7h5XtQ7L/trJ9SfY/VrYfyT60sv1J9r9WdgDJMDB0IMlqrOwgkvWwshzJtrKyPiSrtbImkvW0smaS9bKyFpJtbWUHk6y3lfUl2TZWdgjJtrWyQ0lWZ2WHkWw7K/sKyeqt7Kska7Cyr5Fseyv7Osl2sLLDSbajlX2DZDtZWZ5kO1vZN0m2i5V9i2S7Wtm3rcyMa2NMcIOVmWcS4zr5KLln0ug/Jmr/qxH7eQof65cn10A8rOv45HU1m7QfF3U97ccTzwke0l5HOrrCw2MHJybPU/pay0nJX7d0j48TNq0jXcdRuk72kK4a0oVrYx/6Gkh2AjGe7GA8JXnGphrShWtj/xRihOxEYkSZi+fHFC9Y3cfTs1Tyq6Cv1l4XHMeTHHE2NLexYWWhejp+HKXnRCHzlC9L+QK6cG3sQ189pefE9Bmbusp4gmD0VUbUkC74yt2hO4rRzWUN8pa2PNVAsm4oD5uqLQ991oMHC12mnNirG8qwg8V94TLsISrD9gtlWFd/oQyL0R1FoQyr8qeyDOsrdJly4gi/ZVgTl2Ho3+or7guXYcdRGfa9UIZVZOdQhnXUHUWhDKvyp7IMO0ToMuVEv24oww4R94XLsJ2pDBsYyrCK7BzKsI66oyiUYVX+VJZhhwpdppy4vBvKsEPFfeEy7OWmtrhXhTKsIjuHMqyj7igKZViVP5Vl2GFClyknHuiGMuwwcV+4DLuWyrDhoQyryM5ZK8NCOdLpr+pypJ7YjvFrx1KfN3Sgz/s4YcdaijPRzlUwf49S+ZN0Puwj2HoKNn4GYMuaKNn8xelnlpNJjjhPWFvgHRr++So3Kp27cRLx9EucpyXHz1ZXePoRzymJ87TOX0g+nbnSXPH+9lofRsk+i6cKW50kbNVAcfqT/U71YL8a0otrYx/6AnNgDsyBOTAH5sAcmANzYA7MgTkwB+bAHJgDc2AOzIE5MAfmwByY84E5MAfmwByYA3MUmHOb9wvMgTkwB+bAHJgDc2AOzIE5MAfmTDLz2n9graN4xyhhhOwUvzxNdYLH/GrEfp7CpxLPwMR5Wuf3n1oBz0DiGZA4T+v8/uTT2ToP/zSRplNFmhooDj87p3lIZw3pxbWxfxrdh8AcmANzYA7MgTkwB+bAHJgDc2AOzIE5MAfmwByYA3NgDsyBOTAH5sAcmANzYA7MgTkwB+bAHJgDc2AOzIE5MAfmwByYA/PHj5nnuIO1juL1U8II2QDPPHWCx/xqxH6ewi5Gvq+ne2I8rQLG0/3y5DhP4/qG8StC1rO4bdiqjXcAyfMUH999qKU4e9e2xd1kr1FPx0+jNHp4P6PdewLghZ4BxIs4f9mqLe7nazvyHkN26i9kJg2nJJ+G0rMGXbg29qGvPur4nlA9hQeSTJYRJi0nC5lJi69vwkAXro19/o7OKTZ8MvGArTExnqZT/aSzJbd98RrbkK3le11IVw9Ka3/iMFzJfzeopfQ88Pep8qQf+mopzv/a5yHumynJf0urJecn7a15j7+JZa57qiPtH8WhsquXDfNzz+Xgro7j+JUr4/m7ZMcmn2Zn+XesQ/fpxJqQ7j6su8Zu0AM5l7271LbFRTzYA7YGO39/idnlef3FeQ0U5zhH+vNRsuk/VvAcK5jNPdmG8hnykaf35kpMx8XY6BSyEeLwN7BQzyF+HZ2Txnufpwhu7PN7n5DBdrIeP1bwmjQc70iDh28Etit/cG3su74rdjzxgK0xSrbu81F+o+6T5cwxIl3G9l8VMnO/pvRsswWee/ZV+guZZr+Ly79TKI3mWtJvZl8k6XKYv4fGLPz9NMRpts+Lq87na8l0HO+4Vt8uXiuK2pePuGacL5h8ed3qG50h0ob7eDqlDXG+ViZtvSlePkFGn3XVmZRGc91THWlHnG9SnfVt8n1wj9g3+oXjOH7lfKMzyJZnJ5/m0v0+hzjzpId1/4ZYE9Ldh3XDN4IeyGsp/HPyjRAP9oCtwW6embNsmNnleSeL8xoozlmO9OejZNN/tuA5WzCbe/Jdyme/IN/IV/vgrBgb9ScbIc4pJJPtOvaNuJ7q74n7FMF9ioMbMtiOy1bP/TDOuhS6eT0U5OVeMengvqVTypS/cf21ya9x0VpvnEJ8+ahjG7GW4gykPD3K4etkvY+JGRsTY2z1V33U+/BX8eyeLtINH6lH1PbsyL4aH3U918mon6Af+rhOvrATf+RMD4x+0t6+LJb+CKcdcS6hZ+rSTvpqbqiyr+ZMsuU5yac5x3U07vc5Dt3nEmtCuvuwbvgj0AN5LYWvJ38E8WAP2BrspoxA3c7s8rz+4rwGinO2I/35yI8/hmufI5jNPfkT5bMbyB/x8G1yp48EG/E33hGHv6nu6qvB88N1iY81n2qijuuayTEXXteM23XJ+x6ta2JV0u7gNbp8+Gu+xrr4fn4YJVsunShsdbKwVQPF4bFeX356XP6CvsAcmANzYA7MgTkwB+bAHJgDc2AOzIE5MAfmwByYA3NgDsyBOTAH5nxgDsyBOTAH5sAcBebc5v0Cc2AOzIE5MAfmwByYA3NgDsyBOZPMce/3IV4/JYyQ9bf//L4Wv5uF9wQSnCPeh1ki0svvJAwUzJ7s1W5dK1yf37Xz+Y7jgKjtZ677FWGPGro/vUQcflcQccZbZtc7XXWOc3mtLl43Isn3AXjdhmNI7xSyr4e1bErrpx0jbFAj9vMU5jVfcF6PqI3xOE+Mx1bAeBwx4rytiPF4T4zHVcB4PDHyGm9g9LFWCq/L0hXGE4iR1xIBo49yuY70doWRy2qc14sYfay3Vhe1L5c7Y+TyGudtTYw+3nOrI71dYeQ1iU4iNvyf4omxknfITiFGnLcNMfbzxHhKBYz9iBHnbUuM/T0x9quAsT8x4rw6YvRRj1f6XjD7rThvO2L08Y4l+59dYXS9d1lPjD7WGquL2vtDnTHyWrvMC0at68ZuT4ya1o1lP3gHYjzDE+PpFTCeQYw4b0diTH6tglbGMypgPJMYcd5OxHiWJ8YzK2A8ixhx3s7E6GHdpBLjWRUw8vpCOG8XYvSwlkKJ8ewKGHnNAZy3KzH6WAOpLmq/5kBnjL8hRpz3CWI81xPjbypgPJcYcd4nifE8T4znVsB4HjHivE8R4/meGM+rgPF8YsR5nybG33piPL8Cxt8SI87bjRgv8MT42woYLyBGnPcZYrzQE+MFFTBeSIw477PEeJEnxgsrYLyIGHHe54jxYk+MF1XAeDEx4rzPE+PvPDFeXAHj74gR532BGH/vifF3FTD+nhhxXiMxXuKJ8fcVMF5CjDhvd2L8gyfGSypg/AMx4rw9iPFST4x/qIDxUmLEeV8kxss8MV5aAeNlxIjzvkSMf/TEeFkFjH8kRpy3JzH+yRPjHytg/BMx4rwvE+Plnhj/VAHj5cSI8/Yixj97Yry8AsY/EyPO25sYr/DE+OcKGK8gRpy3DzFe6YnxigoYryRGnMf58SpPjFdWwHgVMeK8rxLj1Z4Yr6qA8WoHT5LjfQ3Ew7quTT7tTSbt10RdT/u1xDMoeZ7Svbi2Ap5BfnlK9+Jah67rktfVVGnaryOe65PnKd2L6yrgAUMDnTfIL2NTtYyG54bkeUo2u74CnhvIZtc7bOaBsalaRsNzY/I8JZvdUAHPjWSzGxw288DYVC2j4bkpeZ6SzW6sgOcmstmNDpt5YGyqltHw3Jw8T8lmN1XAczPZ7CaHzTwwNlXLaHhuSZ6nZLObK+C5hWx2s8NmHhibqmU0PLcmz1Oy2S0V8NxKNrvFYTMPjE3VMhqe25LnKdns1gp4biOb3eqwmVbGqzPA2DsDjNtkgHHbDDDWZYBxuwww1meAsSEDjNtngHGHDDDumAHGnTLAuHMGGHfJAOOuGWD8RAYYP5kBxk9lgPHTGWDcLQOMn8kA42czwPi5DDBy23WwJ8bbKmAcTIy3BcbNZmSexuR4cpx21jVEQdqHOHhqPKWddd2uIO1gyBrj4AwwXp0BxmDHwBgYtzzG8FwHO2piDHYMdgyMWx7joAwwhnsdGAPjlseYhbowMAa/JzBueYzhmQnPdWCsjDGMK7TOua6G0fDckTxPyWa3V8BzB9kM5w3yy9hULaPhuTN5npLN7qiA506y2R0Om3lgbKqW0fDclTxPyWZ3VsBzF9nsTofNPDA2VctoeO5Onqdks7sq4LmbbHaXw2YeGJuqZTQ89yTPU7LZ3RXw3EM2u9thMw+MTdUyGp57k+cp2eyeCnjuJZvd47CZB8amahkNz33J85Rsdm8FPPeRze512MwDY1O1jIbn/uR5Sja7rwKe+8lm9zlsppXx6gwwDs4AYxbsGBgDoybG8FwHO2piDHYMdgyMWx5j8MMD48eIsalaRsPzQPI8JZvdXwHPA2QznDfIL2NTtYyGZ2jyPCWbPVABz1Cy2QMOm2llHJIBxqsDY2AMjFUzPpg4Y0uuUsYHPdvMTzpzOZOmYSJND4g0NVActvswD+msIb24NvaH0X2ohHlwBpmDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnYOd45iDnatj5vXOwFpH8W5TwgjZUOIZnjxPS53gMb8asZ+n8HDP9vGUztK89xGR2+7Dye6Iw8/XCA/prCG9uDb2R9B9GFEB8+AMMgc7V8fMaxCCtY7i3a6EEbJhxPNQ8jzNdYLH/MqVYw95to+ndJbKsZGR2+4Pkd0Rh5+vkR7SWUN6cW3sj6T7EJj9M/Mam2Cto3h3KGGEbATxjEqcpylXJ3jMr1yZMMqzffyks7VMGB257T6K7I44nFdHe0hnDenFtbE/mu5DJcyDM8gc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7BzsHMcc7PzxsbPhwbejwFpH8e5UwgjZSOIZkzhPc65O8JhfuXGHMZ7t4yedreMOYyO33ceQ3RGHn6+xHtJZQ3pxbeyPpftQCfPgDDJn0c4hbwQ7b0nMIW8E5jjmkDcCcxxzyBuBOY455I3AHMcc8kZgjmMOeSMwxzGHvBGY45hD3gjMccwhbwTmOOaQNwJzHHPIG4E5jjnkjcAcxxzyRmCOYw55ozpmw3OXDYO1juLdpYQRstHEMy55npY6wWN+5ebtjPNsH0/pLM3bGR+57T6O7I44nFfHe0hnDenFtbE/nu5DYA7MLmbDc7cNg7WO4t2thBGyscQzIXGePrk6wWN+5cqxCZ7t4yedreXYxMht9wlkd8ThvDrRQzprSC+ujf2JdB8Cc2AOzIE5MAfmwByYA3Ng7g5mw3OPDYO1juLdo4QRsvHEMyl5npY6wWN+5dpNkzzbx1M6S+2myZHb7pPI7ojDeXWyh3TWkF5cG/uT6T4E5sDsYjY899owWOso3r1KGCGbSDxTkuc5tE7wmF+5cmyKZ/t4SmepHJsaue0+heyOOJxXp3pIZw3pxbWxP5XuQyXMgzPIHOwc7BzHHOz88bGz4bnPhsFaR/HuU8II2WTimZY8z6F1gsf8ytXL0zzbx1M6S/Xy9Mht92lkd8Th52u6h3TWkF5cG/vT6T5Uwjw4g8zBzsHOcczBzh8fOxue+20YrHUU734ljJBNJZ4ZyfO01Ake8ytXL8/wbB9P6SzVyzMjt91nkN0Rh5+vmR7SWUN6cW3sz6T7UAnz4AwyBztXx2x4rrFhsNZRvGuUMEI2nXhmJc/TUid4zK9cOTbLs308pbNUjj0cue0+i+yOOPx8PewhnTWkF9fG/sN0HyphHpxB5mDn6pgNz7U2DNY6inetEkbIZhLP7MR5Wr/bxTzmV64cm+3ZPn7S2VqOPRK57T6b7I44/Hw94iGdNaQX18b+I3QfAnNgDsyBOTAH5sAcmANzYA7MgTkwB+bAHJgDc2AOzIE5MOtmNjzX2TBY6yjedUoYIXuYeOYkztM67sA85ldu3GGOZ/v4SWfruMOjkdvuc8juiMN59VEP6awhvbg29h+l+xCYA3NgDsyBOTAH5sAcmANzYA7MgTkwB+bAHJgDc2AOzIFZN7Phud6GwVpH8a5XwgjZI8QzN3Ge1vW6mcf8yo07zPVsHz/pbB13eCxy230u2R1xOK8+5iGdNaQX18b+Y3QfAnNgDsyBOTAH5sAcmANzYO4OZsNzgw2DtY7i3aCEEbJHiWde4jyt87WYx/zKtZvmebaPn3S2tpsej9x2n0d2RxzOq497SGcN6cW1sf843YdKmAdnkDnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnYOdg5jjnY+eNjZ8Nzow2DtY7i3aiEEbLHiGd+4jzNuTrBY37lxh3me7aPn3S2jjs8EbntPp/sjjj8fD3hIZ01pBfXxv4TdB8qYR6cQeYs2jnkjWDnLYk55I3AHMcc8kZgjmMOeSMwxzGHvBGY45hD3gjMccwhbwTmOOaQNwJzHHPIG4E5jjnkjcAcxxzyRmCOYw55IzDHMYe8EZjjmEPeCMxxzCFvVMdseG6yYbDWUbyblDBC9jjxLEiep6VO8JhfuXk7Czzbx1M6S/N2FkZuuy8guyMO59WFHtJZQ3pxbewvpPuwMDAHZgez4bnZhsFaR/FuVsII2RPEsyh5nkPrBI/5lSvHFnm2j6d0lsqxJyO33ReR3RGH8+qTHtJZQ3pxbew/SfehEubBGWQOdg52jmMOdv742Nnw3GLDYK2jeLcoYYRsIcWFrGdx28+Gr6bjT9Lx/R3Hn6LjB4jjhutpG+4Rtb+3T8XoOLATHQc5dDzTBR18jZxDBzP0ceh4Vuh4Spwnr9EUlU9Hs0PHc52kg/XW2n3cvyH23+SxF2w4HyWVx1rXmOK0god/eQq/QDzPJ87T6msln85czlz3RWJP5rotpWf0JWGrJ4WtGigOM7zkwX41pBfXxv5LDt3J2aLvqUb3y12wxcsOnpdTtgX0ZZG5twgno7up1B5Z3AVbLHbwLE7ZFosdupOzxSElWyzpgi2WOHiWpGyLJQ7dCdriYKN7aRdssdTBszRlWyx16E6wjGsyul/pgi1ecfC8krItoK9S5pcUMPcW4WR09z3M6H61C7Z41cHzasq2eNWhO0FbNBvdr3XBFq85eF5L2RbQVynzywqYe4twMrr79je6l3XBFsscPMtStsUyh+4EbVGqo17vgi1ed/C8nrItXnfoTrC+LpVxb3TBFm84eN5I2RZvOHQnaItSGbe8C7ZY7uBZnrItoK9S5pcVMPcW4WR09x1gdK/ogi1WOHhWpGwL6KuUeUkGmd9QwNxbhJPRfUiL0b2yC7ZY6eBZmbItoK9S5pczyLw0g8zLMsisIW/0FuFkdPcdaHS/2QVbvOngeTNlW7zp0J2gLU4zut/qgi3ecvC8lbItoK9S5pUKmHuLcDK6m0q+0aou2GKVg2dVyrZY5dCdYJ3dz+h+uwu2eNvB83bKtoC+SpmXKWDuLcLJ6D6k1K/6Thds8Y6D552UbQF9lTK/qYDZjC9jrHna9j55mvrUCR7YLBKMkWCsozCPN69OnDGX4/uzmnStSV5XH1d+wf4ar7qbSuPfa5NPU2mcbJ29Vk973bWONK234ZqE7bmOrltDeiCvpfDk7dviIh7sgecW7PXFrWDDzC7Pe0ec10BxCo7056Nk079W8KwVzOaePETPuY+81ZV8vUPU9izvHrXZc5ENY94L5hXxvBcPZVNp3gvPIwJPJNKB3zvE46Ec6uOpTsi56oSnRJoaKA7PT/EwD6dsGfgC3YdKmF8KzKkwv5xB5sUZZF6SQealGWTO4jP4SgaZX80gcxbLutcyyLwsg8yvZ5D5jQwyZ/EZXJ5B5iz6G1nMzysyyJzFZzCLvmgW68Es5o2VGWR+M4PMWbTzWxlkXpVB5iyWdW9nkFlDuWH69RfZ8E928MnTOt7IPLBZJBgjwcjjlNzP72EMMMf3h8fHCsnrKjseXPCqu3W8cV3yacrxGBzGG9c50rTBhpMeb+SxwBrSA3kthX+4Q1tcxIM98NyC3Yw3rrVhZpfnvSDOa6A4ax3pz0fJpn+d4FknmEv3hJ7zQuIcTbmu5GuDgGd596jNnhhfxHgj1hhI4z37RVH7X1fKJl9zETzVCc6x4EUiTTzngscbNc3jKcf8UmBOhfnlDDIvziDzkgwyL80gcxafwVcyyPxqBpmzWNa9lkHmZRlkfj2DzG9kkDmLz+DyDDJn0d/IYn5ekUHmLD6DWfRFs1gPZjFvrMwgs4b3lD4Odn4rg8yrMsicxbJO6/uN2ssN06+PPv7/s4NPnuTfbywkztj+/cYC6VqbvK6y48FrvepuHW/08I5djsfgMN643pGmd2046fFGHgusIT2Q11L4AxpvRDzYA88t2M144zobZnZ53jvivAaKs86R/nyUbPrl+5brBbO5J2voOfeRt7qSr+Peb8T4IsYbsd54Gu83Ph21/3WlbPI1FyHN9xufFmnKwvuN5Zi1vqe0pTFrnc9ajlnr+43lmLW+b1COWeuc8i3tGdT6fmM5Zq3vN25pZZ3W9xvLMWud61yOWev7jeWYtb4PtqU9g1rfb9zS/I0s5met7zduac9gFn3RLNaDWcwbWt+7K8es9f3GLc3OWt9vLMes9f3GLa2s0/p+o/Zyw/Tro4//5h198iT/fuPaxBnbv9/I42PrktdVdjx4nVfdreONHt6xy/EYHMYbNzjStNGGkx5v5LHAGtIDeS2Fb9ixLS7iwR54bsFuxhsxdsfs8rwXxHkNFGe9I/35KNn0y/ctNwhmc08up+fcR97qSr6Oe78R44sYb8S3h9N4v/GZqP2vK2WTr7kIab7f+IxIUxbebyzHrPU9pS2NWet81nLMWt9vLMes9X2Dcsxa55Rvac+g1vcbyzFrfb9xSyvrtL7fWI5Z61zncsxa328sx6z1fbAt7RnU+n7jluZvZDE/a32/cUt7BrPoi2axHsxi3tD63l05Zq3vN25pdtb6fmM5Zq3vN25pZZ3W9xu1lxumXx99/Pvt5JMn+fcb1yXO2P79xnWky9f39mR+wf56r7pbxxs9vGOX4zE4jDe+60jTJhtOeryRxwJrSA/ktRTee6e2uIgHe+C5BbsZb8TYHbPL894R5zVQnA2O9OejZNMv37d8VzCbe/I5es595K2u5GvX+42G59nEeXJNpvx4Lmr/K1fuPEs8HsqYEs+zFfBwOeSjnqiL2q/D2xnPO8TjY55MtfNSPM2haK603uLn3Ee9kcZcEVzbNX8Cca6mdPp6Xztu/kS5d8wDc/LMhgdlKM8DQ7znlDDK9dM98bRUWqe8Szw+1lJPw5/DtZ9z2B1xOK/6mlMV5+OUmwcWmJNnZt0fVq/7MClw+dUuW2xy8HSXX2144NOBtY7iPauEUa73YmTw/QaTDP4Xz/Pz5QtX4uuxL+yhvGuu1Bfmct1D28VruS6fsXUiTfyMcXnTXfk3MKdXTsg+MC7L3lHCmFLZ2lQneMyvXJmwiXjeT56n5HtuqoDnfeJ5L3mePp7SWSqjPhBp2iTS1EBx+Nn5wEM6a0gvro39D+g+BGZ9zBsVMHOZBdY6iveuEkbI3vPMUyd4zK9cOeZiHEyM/+SJ8YMKGP+JGHEefGhzra/Z8CD737O4TaT+eA/112GG9z3SlycO6KulOC25trhTLVs9HedxuY1C5qt/w9U+xj6/E+ZqE/pqH0u/TupmP+o9pTbjPoVNZEf5np7hlmtlemoTll2ncx0xuvr6fI3TxvU9utYx3ajUZg0kc71H+QHJcA77jgUbbkyOu+TjrbXXqrXXhm7oqyFZD7sv18ytpTiLbZllyq+3d2pLu+tZxHX4WdRwf1ztnCzlK34WG5PjyXHdv96R9pqEdX0g0sp5yvXs8PunSc9t4DTyc8PfikWctfQMXLVzx3uSj9KpC7l8zOLz57OPI65O6ezZx3F+9n2068vd1/eI0TW/BeHG5HhK74R/Xegy+fvfHP5zgnqbpf/cSBwu//mfD2qL+9edOt6jBNlKNjlc3BOj9+/dYJPDy9jkAbLJ/2S8TcH+8fsk+2jdfJLJetqkb62QsW+Vj5JNH3Th2tgvEONHdQbxINyYHE+Lue7q5NNZ6g8tRO1/5droqymdvr6F7SOd2xevYary9SIdBftfG3W8j77qUtgN18Y+16Wu+h7H+dn25ZOsE4zYZ58EMledWyBurXXuGpKhLOL+B5RFXDd76A9p4rlA+JV7Brl/ppA8TzPXI13hKRCPrzLBQzpzXL9vxhyMDj+u38G8UdiqgeKwv+zruSgIHuxDX2BOh5nn2XG7BPE2KGGEbA3xQNaYHE/JB/+GvRaub/zcr1K7Oy0fHBwuH7wf+eDfsGzsg+O+cdnpey5zOR+cvy3l8sHBxm0HTf0J9ZF7rTnfdqwpY8est0eS5pH9hmnqjvPz1pItEOYxbeRtfl4LNsz53ocfU67sZV8UMvZF5XtgXM74nh9d6VgYt2Nge1eeqEmQkf11VxuuMUq2zsqLtJp6YeDOHe9Dgnqb+T70FNfmbxAizuepzjrTUWdltd8oS+OqrnGOStr3vstuXFuW3Z2170Ofeq6ZyzcuB3Gfcd95HCnLc0F8vDfnyadr5jyOeTvy2eQxv5vt/bGfL233cz0v7zlsJus/T22X0ryqb9pr8bvJQ7qhzSQ5uM300oFtce/qJP/L9kh3zkfh/M/3V74zx2U2l33dVWZzXcN1EsI8tiJ9Y/Z5GxPmLthr1dhrQ/cakqM/vpeNs0akrZbijC3zrPaIOraL8jZ9OD/Jvj5z3bdIT0LXLT1rWOME5RfS9RbZBHEml7FJb4qXT5DRU9pLeWYlpdFcd5Mj7YgzY+c2O82yYfNsYl0bLrOedBzHr1wfN683szz5NJf6jN8gzjzpYd2vE2tCuvuwbsyPgR7Iaym8aOe2uIgHe8DWYDdlDdYGZHZ53tvivAaKs8KR/nyUbPqXC57lgtnck0conz1Jde0qT0wrYmzEPjrirCYZyvQCyeRcLJ/z5GEP5FHsu9o/SBPPFU+j/1G+/yDtwzZLYx2y9cJmsi/W9f4pv//J/oev/Bi3Ls0qYnStweSh3dDEbf+IbBcJxkjYrHfk5Z3Qisdw+X75Wpemkvfu+JnzkX8qfVeZnzkP5VRpjHtVBTw8R/VtD/bxlM6cq93gKo8Rh+f3dFfZG5jTq+NQhoKV6+H1Shghe9svT0uldYpvX8pTOnOucSjXfG7E4bxa8JDOcn0bBboPhcDsnZl1b0Y/SbMUGN3vd8EW7zt4PLwfX9YWPF4s+wa5z2+DEkbI2Efx8Q6Bqw3C/nRNwrpcbRsP5eFmraPjoa+34nV0eLzbRz70lM6y6+hwHwficPno672itYIH+11ZkyYwJ8cct44O4qWxjk5XGF3jKL7W0WEe8ytXJvBcVw99/xWvo8N92O8lz9PHUzpzPBaBa28SaWqgOPzsrPSQTh4XwrWxv5LuQ2DWx1xQwMxlFq+jg3hrlTBC9p5nnjrBY37lyjEXI/vCKzwxrqyAcQUx4rx3/TKW5kR+S+g342RH79Km18f64jVRx2+0g4PnRCLO7fu3xT3espkxyoI9znNSVguZr75fnv+Aa2Mf+gwj5kRw2efhXcmy7yjyOCPsUlBqswaSrSE7QraWuFcJmc+5DasEN/bfIkakgcdBfI3rvS14pG6uM1YrtVkDyfiZgWwlyXCOa05HY3LcOR7Dx/o80A19NSTrYffBzOcizqW2zDLl1w27tKXd9SziOvwsarg//K5DFvMVP4uNyfHk2KdY5Uh70v1rK0VaOU+5nh32HZKef8Rp5OcGDPwM3ErPwEG7drwn+SidutA176Fg/7Pw/Pl8zymuTuns2ZfzPn2OhcTd1wIxQsbPPsKNyfGU/OdvC10mfw8n/9nD/NxmHqPCnG5wQF8txfkx+c+jiK3gySZHRO3vidE7thtsckQZm/x9v7a4EzPepmD/+E2S4Rz2o2Q9bdK3QsjYt8pHyaZPzo/EPs89RfnHc0gRbkyOp8XT3NRSPyvPTTW/cm3/1ymdb3iwu690Yn2eVSIdSHut4z76qkthN1wb+1yXuup7HPc9l479JVwb++yTQOaqc5cTt9Y69w2SoSzi/geURVw3e+gPaar0XQHun/FQ9jVzPdIVnuXE46tM8PFOBNfvSa/PUxC2Wi1s1dkaKAmms+z7B9AXmNNhNjx41rldgnhvK2GE7A3i8dGHZdL+HXstXN/4ue91gw8ODpcPvoB88L84fHB+z0T6wT7r6TgfHPrifHCwcdtBU39CvSMtadixpowds94eSZpH9humqTvOz1tBtkCYx8pd74XBfpzvffgx5cpe9kUhY18U+Yvn0ctxJi1jYdyOge1deaImQUb2111tuMYo2TrruyKtpl7YadeO9yFBvc18H1BnfVfcB36P/Y9UZ33Csm0J/UZZGld1jXNU0r73XXbj2rLs7qx9H/rUW9fneVPo4nII953HkbI8F8QDT86TT9fMeRzzduSzyWN+h9n7E7c+j3xeCg6byfrPU9ulNF/rSHutNZTGw3f1qtfZZpIc3Gbah+qfb3WS/2V7pDvno3D+5/sr10fgMpvLvu4qs7mu4ToJYR5bkb4x+7yNCXPzXJRG0s1rgqA/HuvzvCHSVktxjirzrPaIOraL8lH7tT2SXp/nVdKT0HVLz9or9loov5CuV8kmiHNsGZv0pnj5BBk9pb2UZ5ZSGs111zjSjjgn7dpmp1Ns2Dyby+zxAtnxPMdx/Mr1cb9CtlycfJpLfcYvE2ee9LDul4g1Id19WDfmx0AP5LUUPnfXtriIB3sUbBjspqxZYsPMLs9bJs5roDhLHOnPR8mmf7HgWSyYzT05lfLZeVTXvuaJaUmMjdhHR5zXSYYynfvA5Vwsn+0k2AN59DWhm9s/SFNc+8fXOwJxdSm30SB7jXh83eu4NY1eIx74GNx3hePsfyzzxAhduDb2lxEjZNxWBpt5buAj7xv5tGlzrtL1V/ge+1p/xUPeyfH97p3YdVtK/odcj8mVJ+Vz7Gu9oXL57x2H7uRs0fc0V3nhsoWr/PJdxkpbuMr3BG0xwOhe2QVbuOobX2V5nC1WOnQnZ4tDSj7bm12wxZsOHg/vkpa1xZsO3Qna4mDX2IbLFq41J32Nl8XZYrlDd4K2aHH1U7psscbB42u+dJwtXHO1EywvDuY+o3K2KDh4CinbouDQnaAtWlxjuC5brHDw+OpTirOFa7wuOVs05bh/o5wtXnHweOjLKGuLVxy6E8wX7fo7ytliqYNnacq2gL5KmQuBuSrm3iKcjO5Dmlz9Cy5bLHHwLEnZFtBXKfMaBcy9RTgZ3Yc0u/qsXLZY7ODx0H9Z1hbQ93FgXpFB5kIGmd/JIPOaDDKHZ7A65t4inIzuvgN5rKacLV528Lycsi14TKkS5ncyyLw8g8wrMsj8VgaZX8kgs4b83FuEk9Hdt9k1/uyyxUsOHl/jz3G2eMmhO0FbHGp0v9gFW7zo4HkxZVtAX6XMKzLIvCSDzG9mkHllYK6KubcIJ6O776lG9wtdsMULDp4XUrbFCw7dCdriMKP7+S7Y4nkHz/Mp2wL6KmVek0HmQgaZV2SQ+ZUMMhcCcyrMSzPInMWybklgrorZzJdea8MXfMInT3OfOsEDm0WCMRKMdRR+jWz2XOKMretBQtdzpOvZ5HX1ceUX7D/rVXdzaT7m08mnqTRf4il7Lbwf8LQjTU/acE3C9nyKrltDeiCvpfB5n2iLi3iwB55bsJv3A56xYWaX5z0vzmugOM840p+Pkk3/04LnacFs7skAes595K2u5Gvz/g+e5T72n99NvM3+m2f/OSHzWV4+J7ix/zwxorzk8sFDWVT22yvPEQ/Ct5PNXhMyn2VYXB3zLDG6yu/XPPHE5b3XiAfhO8hmzwiZpzKyxPiMYMQ+lzewH5cbz3jieVbwSN1c/t1JNntKyHyWbU8JRuw/SYyw31PE85Qnnriy9iniQfgustkiITOMCz0xLhKM2F9IjLDfIuJZ5IlH1pdSdz2F7yabLRAyw/iEJ8YFghH7TxDjQhteQDwLPPEsFDxSdz2F7yGbzRcyw/i4J8b5ghH7jxMj7DefeOZ74nlC8Ejd9RS+l2w2T8gM42OeGOcJRuw/Royw3zzimeeJ53HBI3XXU/g+stlcITOMj3pinCsYsf8oMcJ+c4lnrieexwSP1F1P4fvJZnOEzDA+4olxjmDE/iPECPvNIZ45nngeFTxSdz2FryGbzRYyw/iwJ8bZghH7DxMj7DebeGZ74nlE8Ejd9RS+lmw2S8gM40xPjLMEI/ZnEiPsN4t4ZnnieVjwSN31FL6ObDZDyAzjdE+MMwQj9qcTI+w3g3hmeOKZKXik7noKX082myZkhnGqJ8ZpghH7U4kR9ptGPNM88UwXPFJ3PYVvIJtNETLDONkT4xTBiP3JxAj7TSGeKZ54pgoeqbuewjeSzSYJmWGc6IlxkmDE/kRihP0mEc8kTzyTBY/UXU/hm8hmE4TMMI73xDhBMGJ/PDHCfhOIZ4InnomCR+qup/DNZLNxQmYYx3piHCcYsT+WGGG/ccQzzhPPeMEjdddT+Bay2RghM4yjPTGOEYzYH02MsN8Y4hnjiWes4HHpHpW87ia2O37lxtRGEY+Pe+MpnaXxqpH2Wgmui1a6dw8JW40RtmqgOCPJfg95sF8N6cW1sQ99lTLvq4CZ80VjlGy+GJF8mprMd3i2IbuOEPbldA33ZNO1UXubYn94CrqfF7qfT1F33FhEGrrj+vTT0B3XN56G7oVC98IUdcf11aahO67PMw3dcX2HaeiO64NLQ3dcX1YauuP6hNLQHde3kobuuD6KNHTHtfXT0B3XZk5Dd1zbMw3dcW24NHTHtYXS0B18puAzpaV7odC9MEXdwWcKPlNauoPPFHymtHQHn8ntM3HYzOFG/xN/5/pBG05wTn1pLvcwe61ae21wPEi6hyRul+ZTTd/20Kj9r1zf9hDieSBxnta+7eTT2dqHOZjYk7nuwaX1IwYJWw0VtmqgOMwwyIP9akgvro196KuUeXkGmd/JIPPSDDK/ooC5twgno7vvIUb31V2wxdUOnqtTtgX0Vcq8JoPMKzLIvCSDzC9mkPmdDDIvzyCzhmewtwgno7v13cp1XbDFOgfPupRtAX2VMq/IIPPiDDK/k0Hm5RlkzmJ+fiWDzC8G5lSYNZQbvUU4Gd2HlNpV67tgi/UOnvUp2wL6KmVek0HmggLm3iKcjO6m0lrZG7pgiw0Ong0p2wL6KmVekUHmwRlkXp5B5ncyyLw0g8yvZJB5UAaZ12SQOYvl85IMMr+YQeYsls9ZrAezmJ+zWG68lUHmNzPInMX8nMVyI9Td6TBnMW9k0efPYtsqlBvVMfcW4WR09+1rdL/bBVu86+B5N2VbQF+lzEszyPxOBpnfyiDzCgXMvUU4Gd3NJd0bu2CLjQ6ejSnbAvoqZV6vgLk2apv7fc6nfPI0D6gTPLBZJBgjwVhH4SFks02JM7Z+GwC6NpGu95LX5czj2H/Pq+7mU811P0g+TaW5S/9kr4VvA3zgSNNfbDjB9xj6sO4au0EP5LUUPvNTbXERD/bAcwt2s9bQ+zbM7PK8jeK8BorzviP9+SjZ9H8geD4QzOaenETPuY+81ZV8bb4NgGf562SX8M5wsrqfFbrDO8P+dS8UuhemqDu8M9x63fDOsH/d4Z3h1uuGd4b96w7vDLdetzvWWYGP3h0+E3R3h88E3d3hM0F3d/hM0N0dPhN0L0xR9xNCd3f4TNDdHT4TdHeHzwTd3eEzQXd3+EzQ3R0+E3R3h88E3d3hM0F3d/hM0N0dPhN0d4fPBN3d4TNBd/CZ/OsOPlPwmdLSHXym4DOlpTv4TMFnSkv3x91nwrWlz2TGUPFdcHw7vI6O8zfDh3liHC4YsT+MGCFbSzxrPfE8L3ieF7oND74L/hzZDMf5m+GrPTHG3dfVxAjZ88TzvCeeuLHQ54kH3wV/jWyG4/zNcF/fgo+7r88RI2TPEo+v777HjeE+Szz4LvgzZDMc52+G+/oWfNx9fY0YIXuaeJ72xPOk4HlS6DY8+C74U2QzHOdvhvv6FnzcfX2GGCF7knie9MSzUPAsFLoND74LvohshuP8zXBf34KPu69PESNkC4lnoSeeuLH+hcSD74IvIJvhOH8zfJEnxoWCEfuLiBGyJ4jH13ff4+YoPEE8+C74fLIZjvM3wxd4Yoy7rwuIEbLHicfXd9/j5lY8Tjz4Lvg8shmO8zfDfX0LPu6+zidGyB4jHl/ffY+bE/IY8eC74HPJZjjO3wz39S34uPs6jxghe5R4fH33PW4uy6PEc40NzyGb4fg1xOjrW/Bx93UuMUL2CPH4+u573BycR4gH3wWfTTbDcf5muK9vwcfd1znECNnDxOPru+9xc4ceJh58F3wW2QzH+Zvhvr4FH3dfZxMjZDOJx9d33+PmPM0knutteAbZDMevJ0Zf34KPu6+ziBGy6cTj67vvcXO1phMPvgs+jWyG4/zN8BmeGOPu6wxihGwq8fj67nvcHLOpxIPvgk8hm+E4fzPc17fg4+7rNGKEbDLx+Prue9zcuMnEg++CTyKb4Th/M9zXt+Dj7usUYoRsIvH4+u77eMEzXug2PPgu+ASyGY7zN8N9fQs+7r5OIkbIxhPPeE88cXMRxxMPvgs+jmyG4/zNcF/fgo+7rxOIEbKxxOPhO+ul73azzcyvRuznKczfffdwD5v4m/dd4eE85eN+cd7oCs8E4vFRLtSRjq7wcDnloWxv5vKmKzxc1/gokzyls/TO4BSRJlcdhjj8PaTuqq8Cc3p+AcpQsLLvMlYJI2ST/PK0VFqnTCEeH/6np3TmXH72WIfdEYfzqq+2iXx2sM9zJQKzf2bW/WH1upukwOie1gVbTHPw+GprxtmC25rw6cBaR/HGKWGEjOsZ+H6jSAb/i7876MsXrsTXY1/YQ3nXXKkvzOW6h7aL13JdPmPjRZr4GePyprvyb2BOr5zAMwlWLssmKGFMqWxtqhM85leuTJhGPB76i0u+57QKeGYQj48+dk/pzLnGEqaJNPFYAj87vsZfZgge7PP85MCsj3mqAmYus3icCfGmKGGEbLpnnjrBY37lyjEX4yhi9DGeyWOnXWF0jXE+6JcxZxi/J/Sb9aXWf7pNr496kcctscYYOKCvluL8x95tcTdZtno6zuM7U4XM57hd3Dgi9NVH7ramr3a39BelbvbPpiu1GfdVTCM7QsZjxpOEzOd44yTBjf2JxOjqQ/Q1thjXp8lji7LfRZvNGkjGzwxkM0mGc9gnhf/emBx3jscga+21oRv6eGy3h90HM5+LOL12a/035deuu7Wl3fUs4jq+x8oqvT+u9lOW8hU/i43J8eTYp5jkSHtNwrpmirRynnI9O9z/liBLh3ft+LkBAz8Du9EzMG+3jvckH6VTF3L5mMXnz2ffSVyd0tmzj+P87Puakxd3X3lOHmSuuVuNyfGU/OfvC10mf+9H+Xta8nqbpf/cSBwu/3k6+c8H7dbxHiXIVrLJD8Q9MXqbusEmPyhjkxPIJn2p/Mxim4L94xkkwznsR8l6msctfI9JcB2Ba2N/HDGWmxPXmBxPi7numOTT2VLpPK0xlM6xHuzuK53bF6+xc9SWp8aIe1nruI++6tK4uY1cl7rqexznZ1vDfNBy4xWa69yxJENZxP0PKIu4bvbQH9LEc4zwK/cMcv+Mh7KvmeuRrvDw2JSvMsFDOnNcv2/G3I4OP67fwTxV2IrfdWB/2ddzMU7wYJ/XfQnM/pl5/h63SxBvshJGOc/HVx+WSfsP7bVwfePnXtQNPjg4XD74HuSDX+LwwXHfuOz0PUe6nA8OfXE+ONi47aCpP6HekZY07FhTxo5Zb48kzRO3flUauuP8vPFkC4R5rBx5m59X2I/zvQ8/plzZy74oZOyLIn/xO3VynEnLWBi3Y2B7V55Iso+X/XVXG64xSrbO+pFIq6kXhu3W8T4kqLeZ7wPqrB+J+1BLcdbs1RZ35BbUb5SlcVXXOEcl7XvfZTeuLcvuztr3oU8918zlG5eDuM+47zyOlOW5ID7ex/Pk0zVzHse8Hfls8pjfM/b+7BB1/Lmel+kOm8n6z1PbpTRf68f2WtMojS92Q5tJcnCb6Waqf5Z0kv9le6Q756Nw/uf7K9/F4zKby77uKrO5ruE6CWEeW5G+Mfu8jQlz81yUxqjjO/FGjv74XjaOfN+/luKsKfOs9og6tovyNn04P8m+PnPdkaQnoeuWnrUR9loov5CukWQTxHm3jE16U7x8goye0t5uDdzaqH09z2lHnA9ovsZfbNg8m6PtcS6z/uE4jl+5Pu4RUZstH0w+zaU+46HEmSc9rPsBYk1Idx/Wjfkx0AN5LYX/a7e2uIgHe8DWYDdlDdYtZnZ53mhxXgPFGeZIfz5KNv0PCp4HBbO5J/9M+ewfVNeO8sQ0LMZG7KMjzhiSoUznPnA5F8tnOwn2QB4dJXRz+wdpimv/+HpHIK4u5TYaZDz/3te9niRsNknodr3XWkfH2f8Y7YkRunBt7I8mRsjYlwLbbcQ9Wch82jbO3xtFjK45mL7aX3H9CC5f83ay2WghM4y+1jYaLRixP4EY5f3vzrxXT+E7yGYThaw7y5R6sl8a5fAEwSN1c9vgTrLZOCEzjL7WBIzrD+e5YbAfzzPwNcYSt64jj7EgfBfZbLyQcRs8nzDjeMGIfX4HpVy/e9I8ce/bucZi7iabTRcyT+2UsmtPjiBG2ZfYnf2Y3E9yD9lsuJAZxu76Dkk92S+Nb7eMEDxSdz2F7yWbPShkhnGoJ8a4dsRQYoT9+J1JD21KZxtC6q6n8H1ksweEzDAO8cQo24LYH0KMsN8DxOOrLThU8Ejd9RS+n2w2WMgM4yBPjIMFI/YHESPsN5h4BnviGSJ4pO56Cl9DNrtayAyjrzWbrxaM2J9FjLDf1cRztSeeQYJH6q6n8LVks4eFzDB219rg9WS/NNZTnyV4pO76qOPa6cZmjwiZYeyuNejryX5prNs/W/BI3fUUvp5s9qiQGcbu+tZBPdkvje9DzBE8Unc9hW8gmz0mZIaxu76pUU/2S+M7JHMFj9RdT+EbyWaPC5lh7K5vt9ST/dL43s08wSN111P4JrLZE0JmGLvrG0H1ZL80vqs0X/BI3fUUvplstlDIDOMiT4wLBSP2FxEj7LeQeBZ64lkgeKTuegrfQjZ7UsgMY3d986ye7Pck8TzpiWeR4ElTd5xvmIbuOB8rDd1xvkoauuPq/DR0x9WdaeiOq4PS0B1XlqehO65MDGVLKFuS1h3KllC2pKW7O8uWuLHtNHTHjRGnoTturDUN3XFjlmnojhv7S0N33BhaGrpHCN0jUtQdN6aThu64sZE0dMeNMQSfKfhMSesOPlPwmaTup5PX3cR9bPiVm4f+NPH46IfzlM7S/PZnRJqeFGlqoDgPUTqf8ZDOGtKLa2P/GboPlTCPUcDM968xOd2l91yeTT5NTWZdrm3Irs8K+3K6nvNk07i519Bn7jHmKfO7XzjOc5if98QIXbg29p8nRsgmpWCzuDn+bDPMU57ssNntymw2KgWbTRA2m+CwGeYpj3bY7A5lNpuQgs1mCpvNdNgM85QnOmx2pzKbzUzBZjOEzWY4bIZ5yuMcNrtLmc1mpGCzacJm0xw2wzzl8Q6b3a3MZtNSsNkIYbMRDpthnvJ0h83uUWazESnYbJiw2TCHzTBPebjDZvcqs9mwFGw2VNhsqMNmmKf8oMNm9ymz2dAUbDZE2GyIw2aYp/yAw2b3K7PZkBRsNkjYbJDDZpinPNhhs2uU2WxQCjabJWw2y2EzzFO+2mGza5XZbFYKNpstbDbbYbPrbPhhh82uU2az2SnYbI6w2RyHza634UccNrtemc3mpGCzucJmcx02wzzlRx02u0GZzeamYLN5wmbzHDbDPOXHHDa7UZnN5qVgs/nCZvMdNsM85ccdNrtJmc3mp2CzBcJmCxw2wzzlJxw2u1mZzRakYLNFwmaLHDbDPOWFDpvdosxmi0iG3/0p2DESjJHDjvj1UMZzmTKeQ5Tx/FQZzwPKeNJoR1bCc54yngOU8ZyqjOerynjuUMazuzKeXZXxbKOM5yplPI8r40mjLVAJz++U8RyujOdXynjGKeNJYyy1Ep6zlPHsrYznJGU8n1XGs4MynuuV8fxMGU+tMp4/KeNpUcbzNWU8VyvjSWO8sBKe3yrj+ZYynoOU8QxUxvNFZTx3KuP5sTKeY5XxfFIZzzeV8dQp4/m+Mp4jlfF8QxnPQmU8i5TxXKKM59fKeKYr4xmhjOccZTz7KuM5RRnP55Xx/EQZz8+V8eykjOcGZTx5ZTy9lPH8WRnPI8p40phXXAnPhcp4+ijjmayMJ433oCvhOV0Zz57KeO5SxvNtZTzHK+P5ijKeTyvjqVfG8wNlPEcr47lUGc+DynjSeNe3Ep5zlfHsr4ynvzKeRmU8uyjjuVEZz2HKeHor47lSGc9jynjSeF+zEp6LlfE0K+O5VRnPmcp49lLGc7cyniOU8ZyojOczynh+oYxnojKeNNa3q4Rne2U8Wynj+aMynsHKeNJYQ6kSnvOV8RyojGeAMp49lPFMVcZzjDKeTyjjuUkZz7bKeK5RxtNXGc8TynjSWCeoEp7fK+P5jjKes5Xx7KOM5x5lPOOV8aSxDnUlPCcr4/mcMp7blPEcpYznh8p4dlTG8z1lPIcq4+mpjOdyZTzfVcZzgTKenDKeh5XxpLEWdSU8U5TxpPFtqEp4TlPG8yVlPD9SxnOcMp5PKeO5WRnPdsp4rlXGc58ynjS+d1gJzx+U8QxXxpPG948q4fmNMp79lPHcq4znl8p4+inj+YIyntuV8eysjGdrZTwPKeO5QhnPwcp4HlXGk8Y3hyrhuUgZz9eV8TQp4xmtjCeNbzZXwnOGMp4vK+M5QRnPbsp4blHG06CM5zplPDUKeOqIIyIZjj9Dsh7iXOPf7tXSdvwFK+9B57xow1s5rv0CyZ634Rcd57KdXqC05G04t3m/kp1YV572oa+eOF5UwnOdMp4GZTy3KOPZTRnPCcp4vqyM5wxlPBOU8YxWxtOkjOfrynguUsYzVxnPo8p4DlbGc4UynoeU8WytjGdnZTy3K+P5gjKefsp4fqmM515lPPsp4/mNMp5hyniGK+P5gzKeZ5Tx3KeM51plPNsp47lZGc+nlPEcp4znR8p4vqSM5zRlPJOU8UxRxjNbGc/DynhyynguUMbzXWU8lyvj6amM51BlPN9TxrOjMp4fKuM5ShnPbcp4PqeM52RlPNOU8YxXxnOPMp59lPGcrYznO8p4fq+MZ4EynieU8fRVxnONMp5tlfHcpIznE8p4jlHGM1UZzx7KeAYo4zlQGc/5yngGKeMZrIznj8p4tlLGs70ynpnKeCYq4/mFMp7PKOM5URnPEcp47lbGs5cynjOV8dyqjKdZGc/FynjmKeN5TBnPlcp4eivjOUwZz43KeHZRxtOojKe/Mp79lfGcq4xnqDKeB5XxXKqM52hlPD9QxlOvjOfTyni+oozneGU831bGc5cynj2V8ZyujGeUMp7Jynj6KOO5UBnPHGU8jyjj+bMynl7KePLKeG5QxrOTMp6fK+P5iTKezyvjOUUZz77KeM5RxjNCGc90ZTy/VsZziTKeRcp4Firj+YYyniOV8Xw/av1p4alTxvNNZTyfVMZzrDKeHyvjuVMZzxeV8QxUxnOQMp5vKeP5rTKeWcp4rlbG8zVlPC3KeP6kjKdWGc/PlPFcr4xnB2U8n1XGc5Iynr2V8ZyljGeGMp5xynh+pYzncGU8v1PGM18Zz+PKeK5SxrONMp5dlfHsroznDmU8X1XGc6oyngOU8ZynjGeIMp4HlPH8VBnPIcp4LlPG00MZz/3p8OTMdV9K/rrNJm0v22v1tNcFP/TVUpz/amz9Rz8B//ha4HzOYTOsmf0y2cxD2vqY6y72ZLMlwmbgX0w2Q5ya3cvbbEmMzV4im8FWS8hmHtLWZK671JPNXhE2A/9Sshni9O7EZq/E2Gwx2Qy2QtweFA/HGq38ebuP4x9aOeI9T/F7R36+Pcjf9OO0RiKtkWBtoPPwbPWmdOcTZnyuAsZXiBHn8XPvIa+VGF+pgHEpMeI83Pd6Oo6+AJMvXhPnNlr5q3Yfx5GPEO9Vit+b4jUml/6Da0gPrr1UcJk4y2y4l4iDc2spzh6dPI+I11Nca4njWnvt3hZ3Txs29wxzIbk+2sdx/BnHcX4GEI/z3FSSvSLS6etZMXbB+uO4NvZfSUH3KKF7VIq6JwjdE1LUPVPonpmi7hlC94wUdU8TuqelqHuE0D0iRd3DhO5hKeoeKnQPTVH3EKF7SIq6Bwndg1LUPUvonpWi7tlC9+wUdc8RuuekqHuu0D03Rd3zhO55KeqeL3TPT1H3AqF7QYq6Fwndixy6n09ed1OlvvvzxOOjTeYpnTmTpqUiTa+INDVQnIconT7aTDVR+7ZnnvaXOnR/GCVriyVdsMUSB8+SlG3B/S/cJ5CQ7pyvfh2z7uM2ZNfFwr6croc82RRtH/SnYv+hFHSPErpHpah7gtA9IUXdM4XumSnqniF0z0hR9zShe1qKukcI3SNS1D1M6B6Wou6hQvfQFHUPEbqHpKh7kNA9KEXds4TuWSnqni10z05R9xyhe06KuucK3XNT1D1P6J6Xou75Qvf8FHUvELoXpKh7kdC9SOjuQWH0KX8YeRvXbK6L2vfvg41/eQq/RDZ62YONPKWz1C54UaTpVZGmBorzE0rnix7SWUN6cW3s81yBSpinZpD5IQXMDXT8fuLxMY+gK88W8/RQxnOZMp6fKuN5QBnPEGU85ynjOUAZz6nKeL6qjOcOZTy7K+PZVRnPNsp4rlLG87gynvnKeH6njOdwZTy/UsYzThnPDGU8Zynj2VsZz0nKeD6rjGcHZTzXK+P5mTKeWmU8f1LG06KM52vKeK5WxjNLGc9vlfF8SxnPQcp4Birj+aIynjuV8fxYGc+xyng+qYxniTKebyrjqVPG831lPEcq4/mGMp6FyngWKeO5RBnPr5XxTFfGM0IZzznKePZVxnOKMp7PK+P5iTKenyvj2UkZzw3KePLKeHop4/mzMp5HlPHMUcZzoTKePsp4JivjGaWM53RlPHsq47lLGc+3lfEcr4znK8p4Pq2Mp14Zzw+U8RytjOdSZTwPKuMZqoznXGU8+yvj6a+Mp1EZzy7KeG5UxnOYMp7eyniuVMbzmDKeecp4LlbG06yMZ6IynpnKeM5UxnOrMp67lfHspYznRGU8Ryjj+Ywynl8o49leGc9Wynj+qIxnsDKeQcp4zlfGc6AyngHKePZQxjNVGc8xyng+oYznJmU82yrjuUYZT19lPE8o41mgjOf3ynjGK+OZpoznbGU831HGc48ynn2U8ZysjOdzynhuU8ZzlDKeHyrj2VEZz/eU8RyqjKenMp7LlfE8rIxntjKeC5TxfFcZT04ZzxRlPJOU8ZymjOdLynh+pIznOGU8n1LG85AynpuV8WynjOdaZTz3KeP5gzKe4cp4hinj+Y0ynv2U8dyrjOeXynj6KeP5gjKe25Xx7KyMZ2tlPFco4zlYGc+jynjmKuO5SBnP15XxNCnjGa2MZ4IynjOU8XxZGc8Jynh2U8ZzizKeBmU81ynjOUQZT40Cnrqo4zfm6uj4EpLhG12vkuwFG36ZZD0cOjDX+0WSYT1uXMP4y00tHa/NdvL1XTLWlad96KsnjheU8ByijOc6ZTwNynhuUcazmzKeE5TxfFkZzxnKeCYo4xmtjKdJGc/XlfFcpIxnrjKeR5XxHKyM5wplPFsr49lZGc/tyni+oIynnzKeXyrjuVcZz37KeH6jjGeYMp7hynj+oIznPmU81yrj2U4Zz83KeB5SxvMpZTzHKeP5kTKeLynjOU0ZzyRlPFOU8eSU8XxXGc8FynhmK+N5WBnP5cp4eirjOVQZz/eU8eyojOeHyniOUsZzmzKezynjOVkZzz7KeO5RxvMdZTxnK+OZpoxnvDKe3yvjWaCM5wllPH2V8VyjjGdbZTw3KeP5hDKeY5TxTFXGs4cyngHKeA5UxnO+Mp5ByngGK+P5ozKerZTxbK+M5xfKeD6jjOcIZTwnKuPZSxnP3cp4blXGc6YynpnKeCYq42lWxnOxMp55yngeU8ZzpTKe3sp4DlPGc6Mynl2U8TQq4+mvjGd/ZTznKuMZqoznQWU8lyrjOVoZzw+U8dQr4/m0Mp6vKOM5XhnPt5Xx3KWMZ09lPKcr4xmljGeyMp4+ynguVMYzRxnPI8p4/qyMp5cynrwynhuU8eykjOfnynh+oozn88p4TlHGs68ynnOU8YxQxjNdGc+vlfFcooxnkTKehcp4vqGM50hlPN9XxlOnjOebyniWKOP5pDKeY5Xx/FgZz53KeL6ojGegMp6DlPF8SxnPb5XxzFLGc7Uynq8p42lRxvMnZTy1ynh+poznemU8Oyjj+awynpOU8eytjOcsZTwzlPGMU8bzK2U8hyvj+Z0ynvnKeB5XxnOVMp5tlPHsqoxnd2U8dyjj+aoynlOV8RygjOc8ZTxDlPE8oIznp8p4LlPG00MZz/0Onoc88UwSPNiHPvPtJqyHNsX+19Hx24hxqidG6MK1sT+VGCGbRDyTPPGMEjYbJXQbHnxjYTLZDMf5e81TPDFCF66N/SnECNko4rndE88EYbMJwhaGB37JaLIZjt9BjKM8MUIXrn27sA/f1wnEM8ETz0xhs5lCt+HBWNVEshmO30mMoz0xQheujf3RxAjZTOKZ6YlnhrDZDKHb8GA+/jiyGY7fRYwTPTFCF66N/YnECNkM4pnhiWeasNk0odvwYA2C8WQzHL+bGMd5YoQuXBv744gRsmnEc7cnnhHCZiOELQwP1oGcTjbD8XuIcZonRujCte8W9uH7OoJ4RnjiGSZsNkzoNjz4tsxwshmO30uM0z0xQheujf3pxAjZMOIZ5olnqLDZUKHb8OB7IQ+SzXD8PmIc7okRunBt7A8nRsiGEs99nniGCJsNEbYwPPCxHyCb4fj9xDjUEyN04dr3CfvwfR1CPEM88QwSNhskdBserOM4mGyG49cQ4wOeGKEL18b+A8QI2SDiucYTzyxhs1nCFoYH3865mmyG49cSo6/7Cl24NvZd93UW8VzriWe2sNlsYQvDg+8XP0w2w3H+lrmv+wpduDb2Xfd1NvFc54lnjrDZHGELw3O9DT9CNsPx64nR132FLlwb+677Ood4rvfEM1fYbK6wheG5wYYfJZvh+A3E6Ou+QheujX3XfZ1LPDd44pknbDZP2MLw3GjDj5HNcPxGYvR1X6EL18a+677OI54bPfHMFzabL2xheLC+7+NkMxy/iRh93VfowrWx77qv84nnJk88C4TNFghbGB58U+0JshmO30yMvu4rdOHa2Hfd1wXEc7MnnkXCZouELQzPLTa8kGyG47cQo6/7Cl24NvZd9xX89cR2DMkQPpZkCB9HMoSPJxnCJ5AM4RNJhvBJJEP4ZJIhfArJEO5HMoT7kwzhU0mG8ACSITyQZAifRjKETycZwmeQDOEzSYbwWSRD+GySIXwOyRD+DckQPpdkCJ9HMoTPJxnCvyUZwheQDOELSYbwRSRD+GKSIfw7kiH8e5IhfAnJEP4DyRC+lGQIX0YyhP9IMoT/RDKELycZwn8mGcJXkAzhK0mG8FUkQ/hW+9+bwvnITxsS1x6Uou5ZQvesFHXPFrpnp6h7jtA9J0Xdc4XuuSnqnid0z0tR93yhe36KuhcI3QtS1L1I6F6Uou5Qtny8ypaP6/PdnWVqKFtC2ZKW7uC3BL8lLd2VlC0fJqc7x/1BvRO8LveF3WL/uU/xGJKhj+9YkqGv9DiSoc/5eJKh7/4EkmEM5AqSYSzpSpJhTI7HCjGuOohkGOPk8TGMgc4iGca2eUwIY8qzSYYxZx4HwbyBOSQbYcPc948x/rkkwzwN7u/GnIl5JMOcCu7jHW/D80mGOSrcr4k5LAtIhnlIl5EMc4L+TDLMGVpIMsz7WkQyzMG6lWSYo3UiyTDP7iSSYc7bySTDnLhTSIa5jv1INsmG+5Nsig2fSjLMIx1AsodseCDJptrwaSRbYsOnkwzzac8g2Us2fCbJnrXhs0j2jA2fTbKnbfgckj1lw78h2ZM2fC7JxtrweSQbY8Pnk2ykDf+WZK/Z8AUkW2bDF5LsdRu+iGRv2PDFJFtuw78j2Qob/j3JVtrwJSR704b/QLK3bPhSkq2y4atI9rYN30yyd2z4jyRbbcN/ItkaR7yCI95aG76cZD1s+CaS4ftZN5IM73DfQDJ8Z/16kmGtyOtItrUNX0uy3jZ8Dcm2seEhJNvWhnkeSp0N30+y7Wz4PpLV2/BQkjXYMM8Fwve5hpEM70DzPCt8p/xekmGtxREk29mGeV4bvqlwD8nwHtbdJMO3JaeRDOvj8NzCT9nwDJJhHW6et7mbDd9FMnxvaybJ8I41z5PFd7XvJBnWKpxAsi/YMM9LbrThO0i2uw3fTrI9bHgUybCeC88N/5INTyIZ1mnmefdftuHbSIbvVT1Esr1teCrJ9rHhJSTb14ZfJNl+NvwSyfANhmdJdoANP0OyA234aZJhfZanSJaz4SdJhnWFx5KsyYbHkAzfDxpJMqxR8RrJDrbhZSTDt3FfJ9khNvwGyQ614eUkw3dVVpAMa7GvJBneZ3uTZFjT4y2Sfd2GV5EM7wa/TTKsz/YOyfI2vJpk37ThNST7lg0XSIb10VFemnKJ1zXkOdR4Tk1Z2Bi1rdWEuLUUZ/BebXFX2jBfl5+pyULm830N6MK1sQ999ZSGySRDmJ+/iUJmuMd74p4ouLE/nhiRhokkQ3gGyXAOz8HHc9aYMDfK55qofZ4ZS3I8z71sHBxD3FqK85DNS6iz+FdP8Th/jRIyk16UF/ko2fSOIp487Y8kRtQdONaDwj+mcz3Nv242nKjrewpO6KulOJPK2JyvBc4xIn31lP7hjjSPE2kek3KaxzjSPLNMmj3Nn272lPZ2c9lr7XWnOdKOOHOo7J5rw9w2nU52fN5xHL8asZ+n8HCy5YPJpznH8+Vxvx906H6AWBPS3WGufg3pgbyWws/t1RYX8WAP2Brs5lmC787s8rxx4rwGijPMkf58lGz6HxQ8Dwpmc08ep3yGfOTz/bRhMTbid/oQZyTJUG9wWwPHuU7x9e7OSMGNfX53BzJ+1w5+CbctcJx9Fl/vaY0W3KOFHRtINolk8FVc78DBd2G/km3fmHAapkdtP3Nt1M/8nhzs2yuK94sR550y9Uqd41yTzhdtw9Y8+2jDsX8zSch8vq84iXjzkdvndPnUCLP/PF7IfObF8YIb++OI0eVTI8z+M85BnjS+DHzWH5EOT2VZM/uZqNugH/pqKc6/dOK/SZ8VeW8spVn6dJ586Gb2VWTaRlLaEOevnfhpIzww+mw/DKc0mutOdqQdcf5B9ef/kB+GezSV7Ljd3h2P41fOTxsRtdkybT+NdWvw0+r2bosr/S3YulI/bZQ4T6Ofhg5Ezkdp+mmw0ViyEeKMIRnqP+5fxTlcN072xD1WcGN/MjHKcpr9NO7vdflpvta6iPPT2C+GjH0y1InjSYY6cRxx43hjwtzc3jTX/pHg4X6zXiIOzq2lOI02b8f5ZvJc8zwMI98M9Sb721OFzGff5lTizdO+q29zKskQzlLfZg8K/5DO9eRDtvDz3VNwcl5CnD5l8pKrrJgq0se+J+JyP20+StbnGheTtrGUNsQ5pEzaPNm/2VPa+3D/s+wb47QjzteoLjycfCrkT263/dhxHL9yPheXnR7K/Bz3Kci+UNY9glgT0t2uPwM+F/Swj4vwj8jnQjzYA7bmfmbUU8wuz5skzuN1PEY70p+P0hkjgD5zT75J+ezH5HNN9cQ0OsZGXN8jDtf3sq1v8rocPzPcvtZomSa4sc9rtMg6j+vgxoR5uA421/6hsA8z9xJxcC6Pox7XiU8izzX55SKHT8L9RbIPyadPHOeT8NhqV30S2YekuZ+L+4twzkySjXekb6wjfb7Gg+LaKmOIEXUBjnE/1w/oXE9twZZK+7ku6MTnkuWu9K9c/Vxsh87GlH21h+Pqi9HEOF5w++x7lL6D654gzp86uScjRdpknquPOo6hR1H7/lxX36SvNkBc2sc50n5NJ36yhz7EljTGc2TfJKcdcW4g/+UmR98j11f3O47jV85PHkm29DAen+O+KNzv4Q7dDxJrQro7rJHHfXWQ11L4PvKTZZ8ebA1280yNsGFml+eNEuc1RO6+WQ/9wu36wnHt4YLZ3JNbKZ/dT36y73kU0kbcN4k47CejnuB5sq55b778+7h5b1OJETIeV4Yvwn2qOM5+igb/nvuC4X/xuLJcW9VnO4D7tMy1fyB4XPPefiD4uN9haiftAHmueR6aHO2AcvM5v2/3p5N9plL8vA3nNu/XblwdZRv0TKO0I84j9Iz/3707pim0bSrj9tm2MW0ElHvfJx3slyT9Xl1aY+xIl6vt8Xwnvp6Hfrxmn20O7osz153mSDviLKbncyn5cqgTuU90teM4fuV8Pfbt0/b1WLcGX++dMr4ebF2przdWnKfR13uN8tnqbvD1YCP26xCH57Sh7uF3V/D8cL2kzWdC3cPvCeE410u+x2Fw7THCjg0k4zH1rvh67DukOV8QdSDPF4R9e0Vuv6uW4vx7J36fPNekc7/dOqYzHyWWzqYaoc9c93siney//Z2e25/u28bmwS9r4mcNv3L1Co9R+Gh7eUpnzuXHyXGXBoqzP6Wzu96tqpT5AAXMvvIp20I+Q9BXS3G2tS9sxvWjxtkV1+T2ksun5zbURCHr7rkfsAe32321jeLyA4+DThB21GazBpJxW1TO6eF3dtKo38cJbldfv5yX7bM/e7zgkbrZJ5qo1GYNJONnRs5RZz856bYLv8vJftw4Bw9/wwhtycbkeJrlfJ5G0j2aOCHrEbWfj8XnfvQOlS17TTl9wD5taZrmsPE4TzaeKmwMPdOijjxsYw/v9babLwYbyzlTPvPbNGELmd9c99fVv4g4Z9L9PbTM/eV5GV+lc87Ypy3NHvztnM95f7AdfJByc9/yZXwQT+1wr/P+4sYzOe2I8x2630faMPc3sy/3a8dx/Mq1RcaQLT2MDee4TwP3e6RD93BiTUh3u/4UPLfQAzm/1/Orfdriyr4h2BrsPEeA2eV5U8V5DZG7j8/Xt7FGCp6Rgtnckx9QPvs1lSu+fKBRMTbiMUDE4f4j+LncV6RpHQ8ez6zGn/M1Dhvnz/E4rPTnuC3RmCCP6x0Oblsl+Pzn4vrkzqD8PtRR9/JYE2zE8+ikX2nqezknJx/5nQ9VyRy133ZSh2Z9nGiyI+2I8zu615dQHYn7xHXodY7j+IVxoq6NEw2iOlSO98DWlY4TjRPnaRwnuozy2XVUh6Y1TuRqoyMOz63wNfeE60ZzbZSl3A8Ljl4iDvc9Is5tZcqsuPUxsjTexb6Aa7zLl+8VN97F/gpk3LeHuo77zFEn8rzKofQc9KVxF1/rlMT5ZOxLuvpOXXnFl/8Vl1fY/3K9v+JrDlFcHyTfW1c+levRafG1PfuspfWufyp0mfw9lcr5qcnrbXbNlwOH672dDfu2xZ3p6B9KkK1kk5/ZazHj7G6wyc/K2GQw2WSuw9fXvCaka24fwtxGwTncRsn6uEtjcjwtntoiLZXOJ+P3PH34hb7SuX3UuubyRJEO7rOU99HXOGSc/+Ka985rPON4GutVxdWvPJ4LGfsAU4RduS+Xn1lfvlTc3GL2pSBzzXt3+Ya+5zRU+p47+1c+xje4HukKj2vsKkGePp7SmeP6Pcm51S5/WY6RxL1f7eu5iHtvlccEA7N/Zp6nxevdIN4kJYxyXN/TmHjJB/+5vRavE/Of3eCDg8Plg/+afPB/ZNwH99kul+89lfP/s7Rukk9fa5Kwmeu9Ivm+kCf75HzNR+B5A/K9IJ47hDjb2+ctbrzHx5iUz77uUZRGc92pjrQjzi5U1nzChrnty+XWno7j+HW1HTci+TTneMwB93uEQzePyySku914B8Z7oIfXCUX4S/u2xZVrKMLWI+w/r8nP7HFrZOO8hqjjGtmc/nzkd2xlhGA29+TTlM/2pH5uX/0pIyO3jbjdiziuORM8TiLfYfXZ9z1dcGOf271y7V9uC7v8vDTGSeL8PB4ncfmdPsbXKnnfCGMuWX1XOY1xGJSXrnEY15oJmmzGfTCuebhTHNxTFHBzfkzjXvO7/vnIXe5MEXbUZjO+1/zu209TGFeV5fb3hK2Yv5eI43qn8JdlfNI6x7kmnevtB/c4f/MYruu9qe56R6ez8ZosfYOgB4V/Tud68m9aXHPCod81J3xgmbzkGiOQ48Q8h4/7aHy13cbGpI3bL4hzdidtNx991j7bbnK+u6vthjjnk099AbXNkD+57Xal4zh+Xe1vH5l8msvOd2fdGua7X0FtNznHDbYGe1fnu08U52mc734x5bMr/b4b7pzv7np3Uq6FzH3dPAcH53Cd58uHiqs72IeSc4e4Dm5MmEfOMfy5sA8z9xJxeI4h4tzaiU8iz+W+9S1hDkmW+pDZTyn3XVGu2zl9rjmWvuanx81R4LVT5RhRDwr/jM71ND/fua4o9HN/60d1Vyc+lyx3pX/F66SPdNiBn6GRQubJBmXrC9davCP98ji/Q+W6J4gzo5N7MkKkzbXeMtLEcbkvfLQj7b7aACMid9rHOtL+aCd+8ggPjD77d+UYxyRH2hFnPvkvC8gPxj3i+mqJ4zh+5fzkEVGbLT30s+f4PQ/c72EO3fytrIR0t/sGFfxk6IG8lsKLyU9GPNgDtga7eabgazK7PG+kOK+B4gx3pD8fJZt+OeYyTDCbe/Ik5bMl5Cf7qjeHx9iI55ohjmvtM+7Hk+un+/TD4ua6cl+9651L+CIjiVvrfD/+dlhXvpXqsx3A7RJz7Z8JHu536CXi4Fzud1jXSTtAnsvz3F3vjbJt5bz9aWSfyRQ/b8O5zfs516qQ6y7z3JwP6BnfY7+OaQptm8q4fbZtTBsB5chPSQf7JUmvc+vLz5VtD/ldbG57/Hcnvp6Hfrxmn22OEZRGc92pjrQjTs1+bXbayoa5Pct9ojs5juNXztdj3z5tX491a/D1dtyvLa702WDrSn29MeI8jb5eL8pnyEdp+nqu91ARh+eFoO5B/DhfT8NaGq7vrfJ8Ftf3Vn2Pw+Dao4UdG0jGfmtXfD32HTzNOe7wHq25tnwXkv2GXpHb76qlOHtZ5ji/T57L73yaZ79g5W+S/jUUt7G4HWn3C6QfcQ6gZ+7i/Tpe9x1ieVvIjJ1X2XA+StbO0IVrYx/66ikNb5MM4bXE/ZaQGe4VnrjfEtzYX0GMSMNbJEP4TZLhnJXE/YYNNybMvdxeqyZqn2feIPnrNox8jWOIW0txDi+Tr+spHuev14TMpPdVG85Hyab3NeLJ0/6rxLjMhnGsB4WPpHMN5yvJc5Z81KX2Wj0FJ/TVUpzvlbE5Xwucr4v01VP6lzrSvFyk+fWU0/y6I80/LZPm3hQvnyCjp7SX8iXfV3PdNY60I84vqez+NfnduE8FsuNAx3H8yvnlS8mWi5NPc8kvf5k486SHdb9ErAnp7sO64ZdDD+S1FB5AfjniwR4FGwa7eZaW2DCzy/OWi/MaKM4SR/rzUbLpXyx4Fgtmc0+OpXw2kHysZZ6YlsTY6DWyEeK8SjLUG4hv8jqeH65TCp641whu7BeIEbJlJINf8jZx4zj7LMs9cS8T3MuEHRtItopk8FXeIhl8Ffgu7Ff2pvQ3JpyGQtT2M9dG/Qx97FP2iuL9YsS5tBO/XJ5r0nn4rq1h8+yvtnL2b1YJmbEHbJePkrXHKuLNR26f0+VTI8z+8woh85kXVwhu7C8nRpdPjTD7zzgHedL4MvBZv0s6PJVlzexnom6DfuirpTi3dOK/SZ+1YMNvUJqlT+fJh25mX0Wm7VVKG+Lc0Ymf5sN/9tl+WEppNNd925F2xLmX6s/7yQ/DPVpNdpzgOI5fOT/tFbJl2n4a69bgp40v46fB1pX6aa+J8zT6aQ9SPpvQDX4abPQG2QhxXicZ6j/Er4s69gdwX0c+Ye7XBffrDm7IXH7aKuJ2+WmveeKO89PYL4aMfTLUiStIhjpxOXHjeGPC3NzeNNf+ruDhfrNeIg7OraU48zvxzeS5pfEE8s0KVs7+9moh89m3uZp487Tv6ttcTTKEs9S32YPC36FzPfmQpTl8eI57Ck7OS4izpBOf6w2R5tUifex7Iq6nsquZnyWZtjcobYjzeic+lwf7N6dRbsu+MU474rxJdeEq8qmQPwtkxw8cx/Er53Nx2emhzC/5XK8SZz7q2BfLvnPSPterdF3299nHRfh98rkQD/Yo2DD3M6OeYnZ53ipxXgPFWeZIfz5KZ4yA2z2rKZ99QD7Xak9My2JsxPU94nB9L9v63K7nOs9Xf0Rcu565IVtNPOBtTJiH62Bz7e8I+zBzLxEH59ZSnP/sxCeR55r88t4ureG48VbZh2TsgXuVj9LxSXhstas+iexD0tzPxf1FOGclyVY40veGI32+xoOk/4H914kRdQGOcT/XEXSup7ZgS6X9XNvv3/rf1X4u6V+5+rnYDp2NKftqD8fVF8uIcYXg9tn3KH0H1z1BnN06uSevirTJPFcfdRxDj6L25b6rb9JXGyAu7csdad+9TNo99SG2pDGeI/smOe2I8+X92+y0tw3H9U0e4jiOXzk/+VWypYfx+Bz3ReF+L3XoXkysCelu1w8GPxl6IK+lcN/92+LKPj3YGuzmmYKvyezyvNfEeQ2Ru2/WQ79wu75wXHupYDb3ZD/KZ8hHacyjkDbiPj7EYT8Z9UTB/nN9z3WIrz6WuPqeGSFbQzL4ItyniuPspxQ8cVcy9s19wfC/eFwZ/tdbxO2rHcB9WubaRwge17y3IwQf9zv8sExdUuc41zwPYx3tgHLzOb9t9xGX25tJl20Fui63E9ZQ2hHnKHrGb9q/Y5pC26Yybp9tG9NGQJnybdLBfknS7/GkNcaOdLnaHgM78fU89OM1+2xzcF+cue4aR9oR5yx6Ps8hXw71SYHseJnjOH7lfD327dP29Vi3Bl/v0jK+XsGGK/X13hDnafT1zqN8dlk3+HounwlxeE4b6h7E5z5RrpfWeOKO6xNlvw4y9plQ96wmbhzneknD+PnbJOuKr8e+Q5rzBVEH8nxB2LdX5Pa7ainO4E78PnmuSefwXdrSucHK81GydeO7pM9c91t2fwOlAXHupuf2Xw9oY1vnga2OGPArV6+AwfCsT56nj6d05mRey1O6oa+B4mykdBY8pLOG9OLa2C/QfShUwLyfAmbWnaDfepqrbeuyxRoHj696I84Wa0i3j2dWtkXNdb8lbMHvFk7upE85zq64pvGJ3hVp47aa5vYk7MFjmb7GhOPyA/Sxr7NGqc0aSLaO7JjFNrjPuWOdvRcb5x9qslkDyfiZgYzfd+U5gvkEGd+i67IvXq4fhftGGqNky1Xor7XXhm5+LxeyHlH7OZN8LuJ8w/pvppxeSn1xGxw2LkR+bLxe2Bh6NkQdedjGHvp6m1k/bAzd/Ny+5ckWG4QtoKdAcoRxf9cLe3Ffax3d37fK3N9akr1D/v225N97aHvkPJWBzWw7+CDyPvJc4XWd9Pd5KAObfZb//Kyb665zpB1xNtH9fp/685Cv2Jf7m+M4fuXaZTxG46G/Icf9DXIsn3UvI9aEdLfr68BzCz08FxXh/6T+PjlPT85V5fkqzC7PWy/O4/l9yx3pz0fpjEdCn7knf6F89jfquyl4YloeY6MNZCPEeZdk8HMR3+R1PD9p9PfF+enc3yfbtXH+HI6zP+ejX8TVF1AQduS+AJ5LinBjgjzcj8i6PIx/5rh/kufBbEt17+E27PJl6slGPKewIOKZ+l7OS89H3uYZON8jgH6uXxBnZ5vGtN8j8D3HQtahnHbE+RTd691smJ8/rkP3cRzHr1wd6rkcz7nGSF11CM/3T0h3u3mRqEOhB3Ien937gLa4cs6hHNvkeaDMLs8riPMaKM7rjvTno2TTH/feHs9R/Bzls33IN/fVRn89xkbcj4A475KN8Kw0JszDfQbm2rKPlfsLe0Xu9hv3PfYpU2bFzfP6qJ1E6fXlC/DYR5722ReAjPtNXL6A6x3AgifuuHcAC8QIWVfH/lBHcn1qwiv9tlHL+mTsS7r6Tl15xZf/FZdX2P+Sz4unMYCyfZA8HuLKpzjO+VSDr+3ZZ82ZtP9C6DL5+2eUv9cnr7eZ8w7mDoID+rh/aNCBbXF/6Xj2EmQr2eQoey1mPLobbHJUGZs0kU2Od/j6PAblaksWbDgfpZO/oY/bHjyegjC3UXAOt1Hk3GFe/5Of3+5c/9P1zr6H57fFU1ukpdL3jVdQOn34hb7SuX3xGjtHbXlKjrXUOu6jr7HSOP/FNVaKZzxurNRX3RU3Vsp1F2TsA6wVduW+XH5mfflS6wW3q18OMtf6JOw/oCwqELcHf6ap0rY6+1c+xje4HukKj2vsKkGePp7SmeP6Pcl55i5/WY6RsL+8nuzn67mIGw/nMcHA7J+Z+6nB6loTpLsZ5XwJT2PiJR/8l/ZauL7xc+/rBh8cHC4f/G/UJ/Bgxn1wn+1ynm+Rj8r7/+zXu94T9OV/xb0nyO9dFWyY5zP68rUKwmZSN7eFVvq1T87XfASeN4D+f7mOFc8bmNHJeI+PMSmffd383ru57npH2hHnESprHqXxHLRNuNx6znEcv6624zy8E5PjMQfc79cdunlcJiHd7cY7MN4j18Hg9QeepfEeuX4GbM1rnWBcjtnleW+L8xqiju9/c/rzkd+xFbnuhbkn8yifPUf1ra/+lDdibMTtXsRxzZngtRLx/HAdq6FN6ZoD6/LzuJ7zNd85zs/jMRGX34lwY4I83MYukH7UZzyGvZL8K+QD9q9c9963P4Nru/wZV/vC9zgMykvXOAzs8q5Sm/Hz4pqHu9bBvVYBN+fHNO41dOFeS91cxmxQajO+1/we4L+mMK76rmD7lrAV8/cScXBuLcX5axmftM5xbmksidbVgN4CnSPba905HtnZeA0/l/KdGG1rZ/Sg8C/pXE/+TYtrTrhcU5nnhG9tx/Ti3kuTYwTrRPr4nR/uo/HVdlsVkzZuv3w0LlYmbb76rH223eR8d1fbDXF2orHaXWyY+ze47fZFx3H8utrfnvZ8d9atYb77Hge2xZVz3GDrSue7y3nyGue7f5LyGfKRz3p+eYyNuO2GONy+KNgwz1vC8QLZ0ldfX9wYPnPLuUM+13zgOthc+5fCPszcS8TBubUUJ1emrK1znMt961vCHJIs9SGzn8JzX3AOz33J4jdke1D4KDrX0/z8ir+z8L1OfK64/qly31lgO/Az5Fqv0ddaq3H1BX+v7G3B7eudCZfv4LoniHNUJ/dE9mO63n2X61FHUfty3/VtDF9tgLi0r3Kk/bhO/GQP/fItPvt35RhHwZF2xDmZ/Jd+5AfjXnF9db7jOH7l/GR+ryLtb2Owbg3fxjiP/GS5VhlsXem3MeQ64hq/jTGA8tn55Cf7WpdsWYyNXN/GYD/ZNd+vYMNp9NkWBDf2uR8PMlf/4wri1jrfj9tz8L94PqN8z9JnO0B+++MowcP1ei8Rh7/9gTjXdNIOkOfyPHfXe6NsWzlvfwPZZx3Fz9twbvN+zrUqoMc1N+dmesafPrBjmkLbpjJun20b00ZAufcL0sF+SdJr/vryc2Xbw/WNA8QZ1omv5+NbbT7bHPI7aOsdaUecUfR8jiFfDnUi94k+7DiOXzlfz/OcirK+HuvW4OvNKuPrwdaV+npvifM0+nrjKZ89TL6erz6SZTE2Yr/O9c161D2Iz32iabzLGdcnyn4dZLx+MeqedcTt+i67hu+3FUjWFV+PfQdPc447vEdrri3fhWS/oVfk9rtqKc4Lnfh98lx+59M8++9Z+fukfxPFbSxu37T775F+xFlKz9wnD+p4Xfa9NL2vXE9pcM1B4bkz64TMcK/1xB3nM64lxnI+4/skwzkfELfvtaxrovZ5ptxa1jiGuLUUp1AmX7NfyflL9sP6LIuqWZOzB4W/SecazjeT5yz5qCjn5Bo70FdLcT7opC92pUiz65vRrm98xK0r5KH9UjbNqx1p/tdO/PKVHhh9tt34vprrbnKkHXH+SmX338jvLtjj75Edtz6o43H8yvnl/L6Ch7ZIztUOW+7QzXMKEtLdbuwFfrn8DgG3AXsd1BZXjmvA1jxmI7+74DqvIM7jNXM8z/F3zgv46Lvf9t/ck39QPkM+8jlfbEWMjdgHd/mOrvV4cJzrlE2euOPGXDcRo6uNAb+E+45xnH2WgifuuPZEgRhdbQz4KtzHDF8Fvgv7lWz7xoTT8F7U9jPXRv0MfexT9ori/WLE+axljvPL5bkmnUN2bg2bZx/fYMjSvHf2Tdl/XitkPvPiWsGN/QIxunxqhNl/xjnIk8aX4bm5+PdUljnnXUI/9PG8y4PK5DmXz4q8x3240qfzOaf0zZi08bxKxDm4TNp8+c8+2w+8Nra57gZH2hHnKwe12elr5IfhHm0kO/7QcRy/cn6aa335fHJpLuunsW4NftoPyvhpsHWlfppcS1+jn/YNymc/7AY/DTZyfXvMtTYOrzEjv8fic8w5bnyMx5xlOc1+Gq/97PLTuvO7Ha519FAnriUZ6sQCceN4Y8LcBeLma0Ofq880L/i4z/TkTnwzea55HgaSb4Z6k/3tjULms29zI/Hmad/Vt7mRZAhnqW+zB4W/Qed68iFb+PnuKTihj9d4Pb8Tn0uWFRtF+tj39LzWRLvvj8i0ub6l/LtOfK6CB0ZPaW8350b2jXHaEecyqgv/RD4V8ie32252HMevnM9ViNps6WN9K+5TkH2hrJvn/CSk2/l9I+hhHxfhm8jnQjzYA7bmfmbUU8wuz3O9k+9at99D26HsGAG3e66gfHYz+VwbPTG9HWMjru/luweuNbRMXpfjZ4b7PU/cmwQ39t8jRlnn+RzH5TrYXPsbwj7M3EvEwbk8jnpfJz6JPNfkl686fBLuL5J9SD594jifhMdWu+qTyD4kzf1c3F+Ecz4g2VpH+tY40qdpLh/3cx1O53pqC7ZU2s81o8J+Lulfufq52A6djSl313otnJ9W+eVxfuPMdU8Q5/FO7okc2yjYMN8TOYYeRe37c119k4Uo8bS3lEt7wZH2pzrxkz30IbakMZ4j+yYLJEec58l/ebGTvsk3q+yb5PUNPIzH57gvCvd7pUM3fwczId3t+sHgJ0MPrzuA8Eryk2WfHmzN75HC12R2eZ785im/y+25X7hdXziuvVIwm3uymPLZm+Qn+55HIW3EfZOIw34y6gn4Y3Hz3nz593Hz3jYSI2Q8rgxfhPtUcZz9FA3+PfcFw//icWX4X+uI21c7YB1xm2sfLnhc894OF3zc7/B/OmkHyHPN8/D3nVrDXZ3P+XW7/x7ZZyPFz9twbvN+7cbVUbZBzyZKO+L8Bz3jB+Q6pim0bSrj9tm2MW0ElHtfJx3slyT9Hk9aY+xIl6vtsbXNl2mvbeSrzcF9cea6mxxpR5ztcm12arBhbs9yn+jnHMfxK+frsW+ftq/HujX4ep/NtcWVPhtsXamvJ9eR1ujr7Uj5DPkoTV9PvmsZt3ap65tseH64XtLmM6Hu2UjcOM71koZvy/CYeld8PfYd0pwviDqQ5wvCvr0it99VS3GaytQrdY5zTTr/baeO6cxHiaXzsBqhz1z3ayKd7L8dSs/tpD5tbB78ssP4WcOvXL3CYxQ+2l6e0plz+XFy3IXXONif0tld71ZVynxABpkPzCDzQRlkzmWQuU8GmZsyyNysgJl1J9febW6WfUtxtljn4PHVnxBnC+5n81HXsy2kH+J6J/q0Mr5UObvimtznxH0lCHM/1Foh6+53G2CPtcTjaz5fXH5w9YevU2oz1xr6WR2399lmKwgeqZvblWuV2oznZReiNjtCxu/Jo/8r6f6f1XRdHmt1raP0PvF4+PZesxzrbSTdq4iT54VwGvhcxPk7tQFvoD78TQ4br/dk443CxtCzKerIwzb2sDZCM+uHjeW8U34mkrbFJmEL+c1e5sP9dY3RIM4zdH/vLHN/eW7bPXTO046+mXyUXHvZ59xpXismH5WfPzy0k3ECH2sf+Cz/4+aEcNoR5yG636NoHEDOfTfHZzqO41euP4fXaPQwvybH/cJyLV/WvZJYE9Ldrk8azy308PoOCM+gcQLZvw5b87okcr6H67yN4jxeM8nzGE3Zd+F5bY+xlM9mUrniqy24KsZGPI8CcbgPHn4u97e75oR0V7vNNb87zp9zjV/7mssSN37Nc1kgKxAPwo0J8vD4A+uCbRJ8/nNx6yA8Tfn9b466l8frYSOeiyzH9U19j/Kbn5k0x9rLzfNdvIWPtW9wpP2jdRbpXr9OdaScw2GOr3ccxy+MtXdtrH1dmbF22LrSsfb14jyNY+0rKJ+t74axdtjINa+S56fhHjRG/upGc22UpdDHY6C9RBzue0ScfypTZrEv4HqPKgtzBtgXcM0Z8OV7xc0ZYH/lo7UDSYa6jvvMUSfy3PS/0XNwO41d+1rrKc4nY1/S1Xfqyiu+/K+4vML+l+sdQF/zMAuCpyB0x+VTuaanFl+7QDwINybHkzNp/5XQZfL3tpS/Nyavt5nzDuYcg8P17mO+qS1ug+PZS5CtZJNf22sx447dYJNfl7HJX/q0xd3VhtnX17yurmt+NMLcRsE53EbBc8LjLgUh685xDh4bKhAPwo3J8bT4et+y0jm5/K68D7/QVzq3L17DvCK9TqSD+yzlffQ1Vhrnv7jGSvGMx42V+qq71gpG7HPdBRn7AO8Ku3JfLj+zvnypuPcz2JeCzPXukMs35PkUHvyZpkrb6uxf+Rjf4HqkKzyusasEefp4SmeO6/ck309x+ctyjCRujQpfz0XceDiPCQZm/8zcT81rhsm+1+5mlPMlPI2Jl3zwo+21eK2to7rBBweHywefST740Rn3wdN4PxL9t+X8/yytPZfGu5mwWblvenzg1z45X/MReN6AfLeS12JDnLPtMxY33uNjTMpnXzd/99Zcd6Mj7YhzPpU1F9gwt3253LrScRy/rrbjPKx5luMxB9xv13prPC6TkO524x0Y7/lozQz7X0vhK/q0xZXr0MLW/B1D+f1z13kFcZ7rOwOc/nzkd2zlTcFs7snFlM+upPrWV39K3Lo/3O5FHB6DcH2LQa4D4LPv+z3BjX1u90LmmgPr8vPSWP8+zs8rEKPL7/SxPkYl72zeTv6VvM9ZWO8hjXEYlJeucRjXujOabMZ9MK55uO86uN9VwM35MY17DV24165y511hR20243vN7w9PSmFcVZbb8n1l5u8l4rjey55exietc5xr0jmR1uOBXh7vd71D5qud0dl4ZGfjNVn6jksPCh9N53ryb1pcc8Kh3zUnfFGZvMTXAqd8n4rf+eE+Gl9ttzUxaeP2C+I810nbzUeftc+2m5zv7mq7Ic7L5FMvobYZ8ie33d5xHMevq/3tac93Z90a5ru/TW03OccNtq50vvs6cZ7G+e6vUj57x+/6Gs757rK85fnuBZLJviyuO7jO8+VDxdUd7ENBxv2j4G1MmEfOMTxa2IeZe4k4PMcQcT7oxCeR53Lf+pYwhyRLfchd/TYz1+2cPtccS1/z0+PmKPD603KMqAeFf03nepqf71ybWa4LzfPoe9i5ZZWuS83vWSP9bznswM+Q61uhvr7lFFdfuNYzf8svj/Nbfq578lF/aif3JG49Nr4nSBPHLVD4bUfafbUB4tK+xpH2Xcqk3VO/fIvP/l05xrHekXbE+TTN8/yMDfNzw/XVvo7j+JXzk/m9Cg/97CU/md+fyJMe1s3fG0xId7vv+MFPhh7Iaym8T1NbXMSDPWBrsJtnCr4ms8vz5DhIA8VZ6Uh/Pko2/XLMZYVgNvfk85TPkI981psrY2zEc80Qp0Ay13w/HE/DDysIbuxzXz1krv7Ht4hb63w//v5iV7437bMdwO0Sc+1fCx7ud+gl4uBc7nc4vExdUuc4l+e5u94bZdvKefubyD4bKH7ehnOb93OuVQE9rrk536Vn/PKmjmkKbZvKuNcJ7iTbNqaNULDhX5EO9kuSXivcl58r2x4Fu+9qexzTia/n47vaPtsc3BdnrrvRkXbEOZGez5PJl0OdyH2i5zqO41fO1/M8p6Ksr8e6Nfh6vynj68HWlfp6q8V5Gn29/pTPzu0GX8/1zini8LwQ1D2IH+fr+eoTLQhu7LNfB5nrm9U8n8X1zWrf4zC49tvCjvy9SvZbu+Lrse/gac5xh/dozbXlu5DsN/SK3H5XLcW5uhO/T57L73yaZ/9YKz8mapMdb8PH0XVOEjJjo5NtOB8la6OT2pJQui72TybGE2z4pPQZm7rKeKJgNDz9PPDUkV78ytWV/YjnlOR5+nhKZ6kO7i/SdLJIUwPF4XWM+3tIZw3pxbWx35/uQyXMzQqYfeVTtgV8qMOELWopzohO+obj7IprmmfwJEfaBiaftj4uHpStA1PQfarQfYLQbcoIvu+wYSTOw+9UYh7ggdlc97Tkr1sqI06310Ieg54TKE1nkA2SShPrhp8OPZDXUng2+emIB3ugDga7ycu4l8wuz+snzmugOAMd6c9Hyab/NMFzmmAuzYkjP8vD81DKAwMFB/ZPINudFmO7gWQ7xOE6/CRPthsgeAYI3YYHflp/ksHfAX8dHT8uBW5Z7vV3cEN2KjG6/LUTk2cs66+dSIyQDSCeUz3ZTN7rw4R9uJ7uJeLg3FqK82In7QB5rnkOH7AVQGgHVPUL7YDyPzXtAP5uTFbaAX0UMKfZDjhU2ILbAZuqbAfgmqEdENoB+UhvO+C/P6btgH8N7QCn7UI74OPbDjhU2MfVDjhU8HE7YEfbgRjXDpDnlsY9Qjtgc36hHVD+p6YdcCClMyvtgIMUMKfZDjhE2ILbAQeWKdvK2RXXDO2A0A7IR3rbAd9ubov7cWoHHNrcxhHaAW22C+2Aj2874BBhH1c74BDBx+2AYzppB8hzzXPYL7QDNucX2gHlf2raAftTOrPSDjhAAXOa7YC+whbcDri4ynYArhnaAaEdkI/0tgNu/Ji2A/4c2gFO24V2wMe3HdBX2MfVDugr+LgdMLyTdoA81zyHR4R2wOb8tLUD+oR2gNun3o/SuYX51H1cPvXBwhbsUz9apU+NawafOvjU+UivT734Y+pTPxl8aqftgk/98fWpDxb2cfnUBws+9qnXdeJTy3PNc7hX8Kk35xd86k54tPjU+1I6Pw4+dYuwBfvU/6jSp8Y1g08dfOp8pNen3qGlLe7Hyafu2dLGEXzqNtsFn/rj61O3CPu4fOoWwcc+9Z72YJxPLc8trWNT05bOraz8w+TSWVo/rVfy9it9X7lWpLFcXQaG3jbdCfP02dba2PwuvOi8C/qdPvAXA/sNqCE04G4lcGui9ugfUpweJOew6/iH9F9HSYZeI9vahnuSrIcwUR1dH/G3iVpNh/18lOytBE9ENuFfnsJg8JS1SrdyO3steyuPvuDMiwby/QLv5t7LGjoed0/LXdPcl/8PBV97OMU2CQA=", "debug_symbols": "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DuW761C+u77Wd9fbZzS9742mQ41mQI1mIo1mre/u62gS1Ggy1GgK1GgEajQVajRQsThDxeIMFYszVCwuULG4QMXiAhWLC1QsLlCxuEDF4gIViwtULC5QsbhAxWKBisUCFYsFKhYLVCwWqFgsULFYoGKxQMVigYrFAhWLK1QsrlCxuELF4goViytULK5QsbhCxeIKFYsrVCyuULG4QcXiBhWLG1QsblCxuEHF4gYVixtULG5QsbhBxeIGFYs7VCzuULG4Q8XiDhWLO1Qs7lCxuEPF4g4ViztULO5QsXhAxeIBFYsHVCweULF4QMXiARWLB1QsHlCxeEDF4gEViydULJ5QsXhCxeIJFYsnVCyeULF4QsXiCRWLJ1QsnkixeGxIsXhsSLF4bEixeGxIsXhsSLF4bEixeGxIsXhsSLF4bEixeGxQsThBxeIEFYsTVCxOULE4QcXiBBWLoXx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oHx3A8p3N6B8dwPKdzegfHcDync3oXx3E8p3N6F8dxPKdzc3pFg8oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPKdzehfHcTync3oXx3E8p3N6F8dxPK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+qc/9E9/6J/+0D/9oX/6Q//0h/7pD/3TH/qnP/RPf+if/tQ//al/+lP/9Kf+6U/905/6pz/1T3/qn/7UP/2pfvp12/SXJP0lWX9J0V8i+kuq/pKmv6TrLxn6S/RPP+mfftI//aR/+kn/9JP+6Sf900/6p5/0Tz/pn37SP/2sf/pZ//Sz/uln/dPP+qef9U8/659+1j/9rH/6Wf/0i/7pF/3TL/qnX/RPv+ifftE//aJ/+kX/9Iv+6Rf90xf90xf90xf90xf90xf90xf90xf90xf90xf90xf906/6p1/1T7/qn75e66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u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vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW/qtb6p1/qmXuubeq1v6rW+qdf6pl7rm3qtb+q1vqnX+qZe65t6rW+qtb6yqbW+1yVJf0nWX1L0l4j+kqq/pOkv6fpLhv4S/dNP+qef9E8/6Z9+0j/9pH/6Sf/0k/7pJ/3TT/qnn/RPP+ufftY//ax/+ln/9LP+6Wf908/6p5/1Tz/rn37WP/2if/pF//SL/ukX/dMv+qdf9E+/6J9+0T/9on/6Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0Rf/0q/7pV/3Tr/qnX/VPv+qfftU//ap/+lX/9Kv+6Vf902/6p9/0T7/pn37TP/2mf/pN//Sb/uk3/dNv+qff9E+/659+1z/9rn/6Xf/0u/7pd/3T7/qn3/VPv+ufftc//aF/+kP/9If+6Q/90x/6pz/0T3/on/7QP/2hf/pD//Sn/ulP/dOf+qc/9U9/6p/+1D/9qX/6U//0p/7p67W+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqTX+pJe60t6rS/ptb6k1/qSXutLeq0v6bW+pNf6kl7rS3qtL+m1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6s1/qyXuvLeq0v67W+rNf6sl7ry3qtL+u1vqzX+rJe68t6rS/rtb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LW+otf6il7rK3qtr+i1vqLX+ope6yt6ra/otb6i1/qKXusreq2v6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rE73WJ3qtT/Ran+i1PtFrfaLX+kSv9Yle6xO91id6rU/0Wp/otT7Ra32i1/pEr/WJXusTvdYneq1P9Fqf6LU+0Wt9otf6RK/1iV7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe66t6ra/qtb6q1/qqXuureq2v6rW+qtf6ql7rq3qtr+q1vqrX+qpe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXutreq2v6bW+ptf6ml7ra3qtr+m1vqbX+ppe62t6ra/ptb6m1/qaXuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7r63qtr+u1vq7X+rpe6+t6ra/rtb6u1/q6Xuvreq2v67W+rtf6ul7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG3qtb+i1vqHX+oZe6xt6rW/otb6h1/qGXusbeq1v6LW+odf6hl7rG/taX5Zt/HVVllL+zYX/4d99Oo1W//p0GqN+Pp1kfm5T928j5XOb/u02s7/vMkf789n0Zy7N4SYzvaeybXn3Lt1jKvLnLmX3LmP/LuNzl5ry3wY2HW7yFdi+OKqdyjdg+3pqrjl/7lLT3wW2r8Aqb/IdWPGYyldg+zu/tvS5y5h/G1h1uMl3YM1jKl+BHWz8rR/d5X3hsF44jRfKZr0wWS/M1guL9UKxXlitFzbrhdaVI9aVI9aVU60rp1pXTrWunGpdOdW6cqp15VTryqnWlVOtK6daV06zrpxmXTnNunKadeU068pp1pXTrCunWVdOs66cZl053bpyunXldOvK6daV060rp1tXTreunG5dOd26crp15QzryhnWlTOsK2dYV86wrpxhXTnDunKGdeUM68oZ1pUzrStnWlfOtK6caV0507pypnXlTOvKmdaVM60rZxpXztw264XJemG2XlisF4r1wmq9sFkv7NYLh/VC68pJ1pWTrCsnWVdOsq6cZF05ybpyknXlJOvKSdaVk6wrJ1tXTraunGxdOdm6crJ15WTrysnWlZOtKydbV062rpxiXTnFunKKdeUU68op1pVTrCunWFeOVUOeVg15WjXkadWQp1VDnlYNeVo15GnVkKdVQ55WDXlaNeRp1ZCnVUOeVg15WjXkadWQp1VDnlYNeVo15GnVkKdVQ55WDXlaNeRp1ZCnVUOeVg15WjXkadWQp1VDnlYNeVo15GnVkKdVQ55WDXlaNeRp1ZCnVUOeVg15WjXkadWQp1VDnlYNeVo15GnVkKdVQ55WDXlaNeRp1ZCnVUOeVg15WjXkadWQp1VDnlYNeVo15GnVkKdVQ55WDXlaNeRp1ZCnVUOeVg15GjVk2Ywa8uvCZL0wWy8s1gvFemG1XtisF3brhcN6oXXlJOvKSdaVk6wrJ1lXTrKunGRdOcm6cpJ15STryknWlZOtKydbV062rpxsXTnZunKydeVk68rJ1pWTrSsnW1dOsa6cYl05xbpyinXlFOvKKdaVU6wrp1hXTrGunGJdOWJdOWJdOWJdOWJdOWJdOWJdOWJdOWJdOWJdOWJdOdW6cqp15VTryqnWlVOtK6daV061rpxqXTnVunKqdeU068pp1pXTrCunWVdOs66cZl05zbpymnXlNOvKadaV060rp1tXTreunG5dOd26crp15XTryunWldOtK6dbV86wrpxhXTnDunKGdeUM68oZ1pUzrCtnWFfOsK6cYV0507pypnXlTOvKmdaVM60rZ1pXzrSunGldOdO6cqwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnKyasjJqiEnq4acrBpysmrIyaohJ6uGnKwacrJqyMmqISerhpysGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpytmrI2aohZ6uGnK0acrZqyNmqIWerhpytGnK2asjZqiFnq4acrRpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwacrFqyMWqIRerhlysGnKxasjFqiEXq4ZcrBpysWrIxaohF6uGXKwaslg1ZLFqyGLVkMWqIYtVQxarhixWDVmsGrJYNWSxashi1ZDFqiGLVUMWq4YsVg1ZrBqyWDVksWrIYtWQxaohi1VDFquGLFYNWawaslg1ZLFqyGLVkMWqIYtVQxarhixWDVmsGrJYNWSxashi1ZDFqiGLVUMWq4YsVg1ZrBqyWDVksWrIYtWQxaohi1VDFquGLFYNWawaslg1ZLFqyGLVkMWqIYtVQxarhixWDVmsGrJYNWSxashi1ZDFqiGLVUMWq4YsVg1ZrBqyWDVksWrIYtWQxaohi1VDFquGLFYNWawaslg1ZLFqyGLVkMWqIYtVQxarhixWDVmsGrJYNWSxashi1ZDF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g2Pl+4adOLKe8eHIesaHI+sZH45Cji4cWc/4cNytZ8omfzj29G84vi/s1guH9cJpvHD/naG/XJisF2brhcV6oVgvrNYLrSsnWVdOsq6cZF052bpysnXlZOvKydaVk60rJ1tXTraunGxdOdm6crJ15RTryinWlVOsK6dYV06xrpxiXTnFunKKdeUU68op1pUj1pUj1pUj1pUj1pUj1pUj1pUj1pUj1pUj1pUj1pVTrSunWldOta6cal051bpyqnXlVOvKqdaVU60rp1pXTrOunGZdOc26cpp15TTrymnWldOsK6dZV06zrpxmXTndunK6deV068rp1pXTrSunW1dOt66cbl053bpyunXlDOvKGdaVM6wrZ1hXzrCunGFdOcO6coZ15QzryhnWlTOtK2daV860rpxpXTnTunKmdeVM68qZ1pUzrStnGldO2zbrhcl6YbZeWKwXivXCar2wWS/s1guH9ULryrFqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiE3q4bcrBpys2rIzaohN6uG3KwacrNqyM2qITerhtysGnKzasjNqiF3q4bcrRpyt2rI3aohd6uG3K0acrdqyN2qIXerhtytGnK3asjdqiF3q4bcrRpyt2rI3aohd6uG3K0acrdqyN2qIXerhtytGnK3asjdqiF3q4bcrRpyt2rI3aohd6uG3K0acrdqyN2qIXerhtytGnK3asjdqiF3q4bcrRpyt2rI3aohd6uG3K0acrdqyN2qIXerhtytGnI/0JBTezvRSk7ffGu95b8+3PsfA1gpn3v0BfcYC+4xz7/Hgd7te4+04B55wT3KgnvIgnvUBfdYsM/rgn1eF+zzumCftwX7vC3Y523BPm8L9nlbsM/bgn3eFuzztmCftwX7vC3Y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vyNVSHt/OEv/BwWits9ckU9m57k25HPce67nnvrvu+QldylL7iJL7lKX3KUtuUtfcpex5C5zxV1ObrPzvsuSvd+X7P2+ZO+7tIKZUj936bJ3l7rkLm3JXRz2fk7p/emcSt+7y1hyl7niLh4NQH64S1pyl+xxF/n8Ie3fpEd7mVQf6f3hPur85+lReiVT79U7et3J8MfEGf9fQ5ob3pAS3pA8Fl5uf4Y055cU/uta8vCPew9J8IZU8YbU8IbU8YY08IY00YZUPZzR3kNKeEOCi951g4vedYOL3nWDi951g4vedYOL3nWDi951w4veCS96J7zonfCid8KL3gkveie86J3wonfCi94JL3onvOid8aJ3xoveGS96Z7zonfGid8aL3hkveme86J3xonfGi95ldfR+Ke3zrw+/hNIvH24pv/8Q1tL48+G89c8EUvQJ5OgTKNEnINEnUKNPoEWfQI8+gRF9AjP4BCT6SSzRT2KJfhJL9JPYw1547QSin8QS/SQWoJP4PSSgs/U9JKDT8q8hVaDz7z0koBPtPSSgM+o9JKBT5z0koHPkPSSgk+E9JKBY/x4SXvSueNG74kXvhhe9G170bnjRu+FF74YXvRte9G540bvhRe+GF70bXvTueNG740Xvjhe9O1707njRu+NF744XvTte9O540bvjRe+BF70HXvQeeNF74EXvgRe9h0v0lndnw/xvOhvuDal83Nel/UMrkLnz0ZE+7WhHKv8w+l1jbPsYe1Mr2+fDf/qG1NFWz/UzpNLKP871PaCONqCBNqAJNiAXK7PrgBLagDLagAragARtQBVtQGiReqJF6okWqSdYpG4bWKRuG1ikbhtYpG4bWKRuG1ikbhtYpG4bWKRuG1ikbhtYpG4bWqROaJE6oUXqhBapE1qkTmiROqFF6oQWqRNapE5okTqhReqMFqkzWqTOaJE6o0XqjBapM1qkzmiROqNF6owWqTNapC5okbqgReqCFqkLWqQuaJG6oEXqghapC1qkLmiRuqBFakGL1IIWqQUtUgtapBa0SC1okVrQIrWgRWpBi9SCFqkrWqSuaJG6okXqihapK1qkrmiRuqJF6ooWqStapK5okbqhReqGFqkbWqRuaJG6oUXqhhapG1qkbmiRuqFF6oYWqTtapO5okbqjReqOFqk7WqTuaJG6o0XqjhapO1qk7miReqBF6oEWqQdapB5okXqgReqBFqnRPIoNzaPY0DyKDc2j2NA8ig3No9jQPIoNzaPY0DyKDc2j2NA8ig3No9jQPIoNzaPY0TyKHc2j2NE8ih3No9g3sEjd0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIodzaPY0TyKHc2j2NE8ih3No9jRPIoDzaM40DyKA82jONA8imMDi9QDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjQPIoDzaM40DyKA82jONA8igPNozjRPIoTzaM40TyKE82jODewSD3RPIoTzaM40TyKE82jONE8ihPNozjRPIoTzaM40TyKE82jONE8ihPNozjRPIoTzaM40TyKE82jONE8ihPNozjRPIoTzaM40TyKE82jONE8ihPNozjRPIoTzaM40TyKE82jONE8ihPNozjRPIoTzaM40TyKE82j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" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 0, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [4, 5, 6, 7], "error_types": {} }, "bytecode": "H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==", "debug_symbols": "ndpBattQGIXRvWgciu8v6UkvWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/Xl7ftse7y/Ol+37ZXgcKw/D7vhyf2qfD8Pr/rAbHqu3z28P99Eio1VGHUbjRkaRUclolNEko1lGUsQoRYxSxChFTFLEJEVMUsQkRUxSxCRFTFLEJEVMUsQkRcxSxCxFzFLELEXMUsQsRcxSxCxFzFLELEU0KaJJEU2KaFJEkyKaFNGkiCZFNCmiSRGLFLFIEYsUsUgRixSxSBGLFLFIEYsUsUgRqxSxShGrFLFKEasUsUoRqxSxShGrFLFKEV2K6FJElyK6FNGliC5FdCmiSxFdiuhSRDYbWoVWRauRVhOtZlo1Wi20WmlFbYTaCLURaiPURqiNUBuhNkJthNoItVHURlEbRW0UtVHURlEbxJkhzwyBZkg0Q6QZMs0QaoZUM8SaIdcMwWZINkO0GbLNEG6GdDPEmyHfDAFnSDhDxBkyzhByhpQzxJwh5wxBZ0g6Q9QZss4Qdoa0M8SdIe8MgWdIPEPkGTLPEHqG1DPEniH3DMFnSD5D9BmyzxB+hvQzxJ8h/wwBaEhAQwQaMtAQgoYUNMSgIQcNQWhIQkMUGrLQEIaGNDTEoSEPDYFoSERDJBoy0RCKhlQ0xKIhFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLbvmafc87aInuWiRixa5aJGLFrlo/beL3k4/t+/77dNhd7/Ze//4cXz+d9H3drz8evv75fbvbw==" }, { "name": "rotate_nullifier_public_key", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "public_global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "new_nullifier_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "address": [{ "start": 40, "end": 41 }], "inputs": [{ "start": 0, "end": 40 }], "new_nullifier_public_key": [{ "start": 41, "end": 43 }], "nonce": [{ "start": 43, "end": 44 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }] } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead", "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }] } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }] } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "unencrypted_logs_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_effects_hash", "type": { "kind": "field" } }, { "name": "in_hash", "type": { "kind": "field" } }, { "name": "out_hash", "type": { "kind": "field" } }] } }, { "name": "state", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "integer", "sign": "unsigned", "width": 64 } }, { "name": "coinbase", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "gas_fees", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees", "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }] } }] } }, { "name": "prover_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "end_gas_left", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas", "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "transaction_fee", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271], "error_types": {} }, "bytecode": "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", "debug_symbols": "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KDqvRyQwGIui83pEAoOxKDqvRyQwGIui83pEAoOxKDqvRyQwGPuP6bxmG89IVP7RSBpMJAITicJEYjCROEwkARNJh4kkgbHPS2b6koxy6nlJy18i+Us0f4nlL/H8JZG/pOcvyT/9yD/9nn/6Pf/0e/7p9/zT7/mn3/NPv+effs8//Z5/+j3/9Ef+6Y/80x/5pz/yT3/kn/7IP/2Rf/oj//RH/umP/NOf+ac/809/5p/+zD/9mX/6M//0Z/7pz/zTn/mnP9NPv21b/pKWv0Tyl2j+Estf4vlLIn9Jz18y8pfkn37LP/2Wf/ot//Rb/um3/NNv+aff8k+/5Z9+yz/9ln/6kn/6kn/6kn/6kn/6kn/6kn/6kn/6kn/6kn/6kn/6mn/6mn/6mn/6mn/6mn/6mn/6mn/6mn/6mn/6mn/6ln/6ln/6ln/6ln/6ln/6ln/6ln/6ln/6ln/6ln/6nn/6nn/6nn/6nn/6nn/6nn/6nn/6nn/6ea6v5bm+luf6Wp7ra3mur+W5vpbn+lqe62t5rq/lub6W5/panutrea6v5bm+luf6Wp7ra3mur+W5vpbn+lqe62t5rq/lub6W5/panutrea6v5bm+luf6Wp7ra3mur+W5vpbn+lqe62t5rq/lub6W5/panutrea6v5bm+luf6Wp7ra3mur+W5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuvzPNfnea7P81yf57k+z3N9nuf6PM/1eZ7r8zzX53muz/Ncn+e5Ps9zfZ7n+jzP9Xme6/M81+d5rs/zXJ/nuT7Pc32e5/o8z/V5nuvzPNfnea7P81yf57k+z3N9nuf6PM/1eZ7r8zzX53muz/Ncn+e5Ps9zfZ7n+jzP9Xme6/M81+d5rs/zXJ/nuT7Pc32e5/o8z/V5nuvzPNfnea7P81yf57k+z3N9nuf6PM/1eZ7r8zzX53muz/Ncn+e5Ps9zfZ7n+jzP9Xme6/M81+d5rs/zXJ/nuT7Pc32e5/o8z/V5nuvzPNfnea7P81yf57k+z3N9nuf6PM/1eZ7r8zzX53muz/Ncn+e5Ps9zfZ7n+jzP9Xme6/M81+d5rs/zXJ/nuT7Pc32e5/o8z/V5nuvzPNfnea7P81yf57m+yHN9kef6Is/1RZ7rizzXF3muL/JcX+S5vshzfZHn+iLP9UWe64s81xd5ri/yXF/kub7Ic32R5/oiz/VFnuuLPNcXea4v8lxf5Lm+yHN9kef6Is/1RZ7rizzXF3muL/JcX+S5vshzfZHn+iLP9UWe64s81xd5ri/yXF/kub7Ic32R5/oiz/VFnuuLPNcXea4v8lxf5Lm+yHN9kef6Is/1RZ7rizzXF3muL/JcX+S5vshzfZHn+iLP9UWe64s81xd5ri/yXF/kub7Ic32R5/oiz/VFnuuLPNcXea4v8lxf5Lm+yHN9kef6Is/1RZ7rizzXF3muL/JcX+S5vshzfZHn+iLP9UWe64s81xd5ri/yXF/kub7Ic32R5/oiz/VFnuuLPNcXea4v8lxf5Lm+yHN9kef6Is/1RZ7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6+t5rq/nub6e5/p6nuvrea6v57m+nuf6ep7r63mur+e5vp7n+nqe6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnusbea5v5Lm+kef6Rp7rG3mub+S5vpHn+kae6xt5rm/kub6R5/pGnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zp7rm3mub+a5vpnn+mae65t5rm/mub6Z5/pmnuubea5v5rm+mef6Zprr0y3N9T0uaflLJH+J5i+x/CWevyTyl/T8JSN/Sf7pt/zTb/mn3/JPv+Wffss//ZZ/+i3/9Fv+6bf802/5py/5py/5py/5py/5py/5py/5py/5py/5py/5py/5p6/5p6/5p6/5p6/5p6/5p6/5p6/5p6/5p6/5p6/5p2/5p2/5p2/5p2/5p2/5p2/5p2/5p2/5p2/5p2/5p+/5p+/5p+/5p+/5p+/5p+/5p+/5p+/5p+/5p+/5px/5px/5px/5px/5px/5px/5px/5px/5px/5px/5p9/zT7/nn37PP/2ef/o9//R7/un3/NPv+aff80+/55/+yD/9kX/6I//0R/7pj/zTH/mnP/JPf+Sf/sg//ZF/+jP/9Gf+6c/805/5pz/zT3/mn/7MP/2Zf/oz//TzXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lxfy3N9Lc/1tTzX1/JcX8tzfS3P9bU819fyXF/Lc30tz/W1PNfX8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1SZ7rkzzXJ3muT/Jcn+S5PslzfZLn+iTP9Ume65M81yd5rk/yXJ/kuT7Jc32S5/okz/VJnuuTPNcnea5P8lyf5Lk+yXN9kuf6JM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+a5Ps1zfZrn+jTP9Wme69M816d5rk/zXJ/muT7Nc32a5/o0z/VpnuvTPNenea5P81yf5rk+zXN9muf6NM/1aZ7r0zzXp3muT/Ncn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf5bk+y3N9luf6LM/1WZ7rszzXZ3muz/Jcn+W5PstzfZbn+izP9Vme67M812d5rs/yXJ/luT7Lc32W5/osz/VZnuuzPNdnea7P8lyf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VBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMCqJmVBA1o4KoGRVEzaggakYFUTMqiJpRQdSMKqJmVBE1o4qoGVVEzahugIiuiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYVUTOqiJpRRdSMKqJmVBE1o4qoGVVEzagiakYNUTNqiJpRQ9SMGqJm1DZARDdEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYNUTNqiJpRQ9SMGqJm1BA1o4aoGTVEzaghakYN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" }], "outputs": { "structs": { "functions": [{ "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_parameters", "fields": [{ "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "new_nullifier_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "nonce", "type": { "kind": "field" } }] } }] }, { "kind": "struct", "path": "KeyRegistry::register_abi", "fields": [{ "name": "parameters", "type": { "kind": "struct", "path": "KeyRegistry::register_parameters", "fields": [{ "name": "address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "partial_address", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "nullifier_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "incoming_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "outgoing_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "tagging_public_key", "type": { "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }] } }] }] }, "globals": { "storage": [{ "kind": "struct", "fields": [{ "name": "nullifier_public_key_hash_registry", "value": { "kind": "struct", "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "1" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }] } }] }] } }, "file_map": { "3": { "source": "use crate::cmp::Eq;\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n}\n", "path": "std/collections/bounded_vec.nr" }, "28": { "source": "use crate::hash::Hasher;\nuse crate::default::Default;\n\nglobal RATE: u32 = 3;\n\nstruct Poseidon2 {\n cache: [Field;3],\n state: [Field;4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n\n pub fn hash<N>(input: [Field; N], message_size: u64) -> Field {\n if message_size == N {\n Poseidon2::hash_internal(input, N, false)\n } else {\n Poseidon2::hash_internal(input, message_size, true)\n }\n }\n\n fn new(iv: Field) -> Poseidon2 {\n let mut result = Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) -> [Field; RATE] {\n // zero-pad the cache\n for i in 0..RATE {\n if i >= self.cache_size {\n self.cache[i] = 0;\n }\n }\n // add the cache into sponge state\n for i in 0..RATE {\n self.state[i] += self.cache[i];\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n // return `RATE` number of field elements from the sponge state.\n let mut result = [0; RATE];\n for i in 0..RATE {\n result[i] = self.state[i];\n }\n result\n }\n\n fn absorb(&mut self, input: Field) {\n if (!self.squeeze_mode) & (self.cache_size == RATE) {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n let _ = self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else if (!self.squeeze_mode) & (self.cache_size != RATE) {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n } else if self.squeeze_mode {\n // If we're in squeeze mode, switch to absorb mode and add the input into the cache.\n // N.B. I don't think this code path can be reached?!\n self.cache[0] = input;\n self.cache_size = 1;\n self.squeeze_mode = false;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n if self.squeeze_mode & (self.cache_size == 0) {\n // If we're in squeze mode and the cache is empty, there is nothing left to squeeze out of the sponge!\n // Switch to absorb mode.\n self.squeeze_mode = false;\n self.cache_size = 0;\n }\n if !self.squeeze_mode {\n // If we're in absorb mode, apply sponge permutation to compress the cache, populate cache with compressed\n // state and switch to squeeze mode. Note: this code block will execute if the previous `if` condition was\n // matched\n let new_output_elements = self.perform_duplex();\n self.squeeze_mode = true;\n for i in 0..RATE {\n self.cache[i] = new_output_elements[i];\n }\n self.cache_size = RATE;\n }\n // By this point, we should have a non-empty cache. Pop one item off the top of the cache and return it.\n let result = self.cache[0];\n for i in 1..RATE {\n if i < self.cache_size {\n self.cache[i - 1] = self.cache[i];\n }\n }\n self.cache_size -= 1;\n self.cache[self.cache_size] = 0;\n result\n }\n\n fn hash_internal<N>(input: [Field; N], in_len: u64, is_variable_length: bool) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv : Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\nstruct Poseidon2Hasher{\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv : Field = (self._state.len() as Field)*18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field){\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher {\n _state: &[],\n }\n }\n}\n", "path": "std/hash/poseidon2.nr" }, "33": { "source": "use crate::hash::{Hash, Hasher};\nuse crate::cmp::{Ordering, Ord, Eq};\nuse crate::default::Default;\n\nstruct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some { self._value } else { default }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n fn expect<N, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some { self } else { other }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some { self } else { default() }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some { Option::none() } else { self }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T> where T: Eq {\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T> where T: Hash {\n fn hash<H>(self, state: &mut H) where H: Hasher {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T> where T: Ord {\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else {\n if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n }\n}\n", "path": "std/option.nr" }, "53": { "source": "use dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::{GENERATOR_INDEX__AUTHWIT_INNER, GENERATOR_INDEX__AUTHWIT_OUTER}, hash::pedersen_hash\n};\nuse dep::aztec::{\n prelude::Deserialize,\n context::{\n PrivateContext, PublicContext, Context, gas::GasOpts,\n interface::{ContextInterface, PublicContextInterface}\n},\n hash::hash_args_array\n};\n\nglobal IS_VALID_SELECTOR = 0xabf64ad4; // 4 first bytes of keccak256(\"IS_VALID()\")\n\n// docs:start:assert_current_call_valid_authwit\n// Assert that `on_behalf_of` have authorized the current call with a valid authentication witness\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let function_selector = FunctionSelector::from_signature(\"spend_private_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash([context.msg_sender().to_field(), context.selector().to_field(), context.args_hash]);\n let result: Field = context.call_private_function(on_behalf_of, function_selector, [inner_hash]).unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit\n\n// docs:start:assert_current_call_valid_authwit_public\n// Assert that `on_behalf_of` have authorized the current call in a public context\npub fn assert_current_call_valid_authwit_public<TPublicContext>(\n context: &mut TPublicContext,\n on_behalf_of: AztecAddress\n) where TPublicContext: ContextInterface + PublicContextInterface {\n let function_selector = FunctionSelector::from_signature(\"spend_public_authwit(Field)\");\n let inner_hash = compute_inner_authwit_hash(\n [(*context).msg_sender().to_field(), (*context).selector().to_field(), (*context).get_args_hash()]\n );\n let result: Field = PublicContextInterface::call_public_function(\n context,\n on_behalf_of,\n function_selector,\n [inner_hash].as_slice(),\n GasOpts::default()\n ).deserialize_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n// docs:start:compute_call_authwit_hash\n// Compute the message hash to be used by an authentication witness \npub fn compute_call_authwit_hash<N>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N]\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash = compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_outer_authwit_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_call_authwit_hash\n\npub fn compute_inner_authwit_hash<N>(args: [Field; N]) -> Field {\n pedersen_hash(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\npub fn compute_outer_authwit_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field\n) -> Field {\n pedersen_hash(\n [\n consumer.to_field(),\n chain_id,\n version,\n inner_hash\n ],\n GENERATOR_INDEX__AUTHWIT_OUTER\n )\n}\n", "path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr" }, "58": { "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::protocol_types::{hash::pedersen_hash, traits::ToField};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map { context, storage_slot, state_var_constructor }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = derive_storage_slot_in_map(self.storage_slot, key);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n\npub fn derive_storage_slot_in_map<K>(storage_slot: Field, key: K) -> Field where K: ToField {\n pedersen_hash([storage_slot, key.to_field()], 0)\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr" }, "64": { "source": "use dep::protocol_types::traits::{Serialize, Deserialize, FromField, ToField};\n\n// This data structure is used by SharedMutable to represent a value that changes from `pre` to `post` at some block \n// called the `block_of_change`. The value can only be made to change by scheduling a change event at some future block\n// of change after some minimum delay measured in blocks has elapsed. This means that at any given block number we know \n// both the current value and the smallest block number at which the value might change - this is called the \n// 'block horizon'.\nstruct ScheduledValueChange<T> {\n pre: T,\n post: T,\n block_of_change: u32,\n}\n\nimpl<T> ScheduledValueChange<T> {\n pub fn new(pre: T, post: T, block_of_change: u32) -> Self {\n Self { pre, post, block_of_change }\n }\n\n /// Returns the value stored in the data structure at a given block. This function can be called both in public \n /// (where `block_number` is simply the current block number, i.e. the number of the block in which the current \n /// transaction will be included) and in private (where `block_number` is the historical block number that is used \n /// to construct the proof).\n /// Reading in private is only safe if the transaction's `max_block_number` property is set to a value lower or \n /// equal to the block horizon (see `get_block_horizon()`).\n pub fn get_current_at(self, block_number: u32) -> T {\n // The post value becomes the current one at the block of change. This means different things in each realm:\n // - in public, any transaction that is included in the block of change will use the post value\n // - in private, any transaction that includes the block of change as part of the historical state will use the\n // post value (barring any follow-up changes)\n\n if block_number < self.block_of_change {\n self.pre\n } else {\n self.post\n }\n }\n\n /// Returns the scheduled change, i.e. the post-change value and the block at which it will become the current \n /// value. Note that this block may be in the past if the change has already taken place.\n /// Additionally, further changes might be later scheduled, potentially canceling the one returned by this function.\n pub fn get_scheduled(self) -> (T, u32) {\n (self.post, self.block_of_change)\n }\n\n /// Returns the largest block number at which the value returned by `get_current_at` is known to remain the current\n /// value. This value is only meaningful in private when constructing a proof at some `historical_block_number`, \n /// since due to its asynchronous nature private execution cannot know about any later scheduled changes.\n /// The caller of this function must know how quickly the value can change due to a scheduled change in the form of \n /// `minimum_delay`. If the delay itself is immutable, then this is just its duration.\n /// The value returned by `get_current_at` in private when called with a historical block number is only safe to use\n /// if the transaction's `max_block_number` property is set to a value lower or equal to the block horizon computed\n /// using the same historical block number.\n pub fn get_block_horizon(self, historical_block_number: u32, minimum_delay: u32) -> u32 {\n // The block horizon is the very last block in which the current value is known. Any block past the horizon \n // (i.e. with a block number larger than the block horizon) may have a different current value. Reading the\n // current value in private typically requires constraining the maximum valid block number to be equal to the\n // block horizon.\n\n if historical_block_number >= self.block_of_change {\n // Once the block of change has been mined, the current value (post) will not change unless a new value\n // change is scheduled. This did not happen at the historical block number (or else it would not be\n // greater or equal to the block of change), and therefore could only happen after the historical block\n // number. The earliest would be the immediate next block, and so the smallest possible next block of change\n // equals `historical_block_number + 1 + minimum_delay`. Our block horizon is simply the previous block to \n // that one.\n //\n // block of historical \n // change block block horizon\n // =======|=============N===================H===========>\n // ^ ^\n // ---------------------\n // minimum delay\n\n historical_block_number + minimum_delay\n } else {\n // If the block of change has not yet been mined however, then there are two possible scenarios.\n // a) It could be so far into the future that the block horizon is actually determined by the minimum \n // delay, because a new change could be scheduled and take place _before_ the currently scheduled one. \n // This is similar to the scenario where the block of change is in the past: the time horizon is the \n // block prior to the earliest one in which a new block of change might land.\n // \n // historical \n // block block horizon block of change\n // =====N=================================H=================|=========>\n // ^ ^\n // | | \n // -----------------------------------\n // minimum delay\n //\n // b) It could be fewer than `minimum_delay` blocks away from the historical block number, in which case \n // the block of change would become the limiting factor for the time horizon, which would equal the \n // block right before the block of change (since by definition the value changes at the block of \n // change).\n //\n // historical block horizon\n // block block of change if not scheduled\n // =======N=============|===================H=================>\n // ^ ^ ^\n // | actual horizon | \n // -----------------------------------\n // minimum delay\n // \n // Note that the current implementation does not allow the caller to set the block of change to an arbitrary\n // value, and therefore scenario a) is not currently possible. However implementing #5501 would allow for \n // this to happen.\n\n // Because historical_block_number < self.block_of_change, then block_of_change > 0 and we can safely\n // subtract 1.\n min(\n self.block_of_change - 1,\n historical_block_number + minimum_delay\n )\n }\n }\n\n /// Mutates a scheduled value change by scheduling a change at the current block number. This function is only\n /// meaningful when called in public with the current block number.\n pub fn schedule_change(\n &mut self,\n new_value: T,\n current_block_number: u32,\n minimum_delay: u32,\n block_of_change: u32\n ) {\n assert(block_of_change >= current_block_number + minimum_delay);\n\n self.pre = self.get_current_at(current_block_number);\n self.post = new_value;\n self.block_of_change = block_of_change;\n }\n}\n\nimpl<T> Serialize<3> for ScheduledValueChange<T> {\n fn serialize(self) -> [Field; 3] where T: ToField {\n [self.pre.to_field(), self.post.to_field(), self.block_of_change.to_field()]\n }\n}\n\nimpl<T> Deserialize<3> for ScheduledValueChange<T> {\n fn deserialize(input: [Field; 3]) -> Self where T: FromField {\n Self { \n pre: FromField::from_field(input[0]), \n post: FromField::from_field(input[1]), \n block_of_change: FromField::from_field(input[2]),\n }\n }\n}\n\nfn min(lhs: u32, rhs: u32) -> u32 {\n if lhs < rhs { lhs } else { rhs }\n}\n\n#[test]\nfn test_min() {\n assert(min(3, 5) == 3);\n assert(min(5, 3) == 3);\n assert(min(3, 3) == 3);\n}\n\nmod test {\n use crate::state_vars::shared_mutable::scheduled_value_change::ScheduledValueChange;\n\n global TEST_DELAY: u32 = 200;\n\n #[test]\n fn test_get_current_at() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_current_at(0), pre);\n assert_eq(value.get_current_at(block_of_change - 1), pre);\n assert_eq(value.get_current_at(block_of_change), post);\n assert_eq(value.get_current_at(block_of_change + 1), post);\n }\n\n #[test]\n fn test_get_scheduled() {\n let pre = 1;\n let post = 2;\n let block_of_change = 50;\n\n let value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n assert_eq(value.get_scheduled(), (post, block_of_change));\n }\n\n fn assert_block_horizon_invariants(\n value: &mut ScheduledValueChange<Field>,\n historical_block_number: u32,\n block_horizon: u32\n ) {\n // The current value should not change at the block horizon (but it might later).\n let current_at_historical = value.get_current_at(historical_block_number);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n\n // The earliest a new change could be scheduled in would be the immediate next block to the historical one. This\n // should result in the new block of change landing *after* the block horizon, and the current value still not\n // changing at the previously determined block_horizon.\n\n let new = value.pre + value.post; // Make sure it's different to both pre and post\n value.schedule_change(\n new,\n historical_block_number + 1,\n TEST_DELAY,\n historical_block_number + 1 + TEST_DELAY\n );\n\n assert(value.block_of_change > block_horizon);\n assert_eq(current_at_historical, value.get_current_at(block_horizon));\n }\n\n #[test]\n fn test_get_block_horizon_change_in_past() {\n let historical_block_number = 100;\n let block_of_change = 50;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_immediate_past() {\n let historical_block_number = 100;\n let block_of_change = 100;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_near_future() {\n let historical_block_number = 100;\n let block_of_change = 120;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n // Note that this is the only scenario in which the block of change informs the block horizon.\n // This may result in privacy leaks when interacting with applications that have a scheduled change\n // in the near future.\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, block_of_change - 1);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_get_block_horizon_change_in_far_future() {\n let historical_block_number = 100;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(1, 2, block_of_change);\n\n let block_horizon = value.get_block_horizon(historical_block_number, TEST_DELAY);\n assert_eq(block_horizon, historical_block_number + TEST_DELAY);\n\n assert_block_horizon_invariants(&mut value, historical_block_number, block_horizon);\n }\n\n #[test]\n fn test_schedule_change_before_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change - 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n // Because we re-schedule before the last scheduled change takes effect, the old `post` value is lost.\n assert_eq(value.pre, pre);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n\n #[test]\n fn test_schedule_change_after_prior_change() {\n let pre = 1;\n let post = 2;\n let block_of_change = 500;\n\n let mut value: ScheduledValueChange<Field> = ScheduledValueChange::new(pre, post, block_of_change);\n\n let new = 42;\n let current_block_number = block_of_change + 50;\n value.schedule_change(\n new,\n current_block_number,\n TEST_DELAY,\n current_block_number + TEST_DELAY\n );\n\n assert_eq(value.pre, post);\n assert_eq(value.post, new);\n assert_eq(value.block_of_change, current_block_number + TEST_DELAY);\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr" }, "65": { "source": "use dep::protocol_types::{hash::pedersen_hash, traits::FromField};\n\nuse crate::context::{PrivateContext, PublicContext, Context};\nuse crate::history::public_storage::public_storage_historical_read;\nuse crate::public_storage;\nuse crate::state_vars::{storage::Storage, shared_mutable::scheduled_value_change::ScheduledValueChange};\n\nstruct SharedMutable<T, DELAY> {\n context: Context,\n storage_slot: Field,\n // The _dummy variable forces DELAY to be interpreted as a numberic value. This is a workaround to\n // https://github.com/noir-lang/noir/issues/4633. Remove once resolved.\n _dummy: [Field; DELAY],\n}\n\nimpl<T, DELAY> Storage<T> for SharedMutable<T, DELAY> {}\n\n// SharedMutable<T> stores a value of type T that is:\n// - publicly known (i.e. unencrypted)\n// - mutable in public\n// - readable in private with no contention (i.e. multiple parties can all read the same value without blocking one\n// another nor needing to coordinate)\n// This is famously a hard problem to solve. SharedMutable makes it work by introducing a delay to public mutation:\n// the value is not changed immediately but rather a value change is scheduled to happen in the future after some delay\n// measured in blocks. Reads in private are only valid as long as they are included in a block not too far into the \n// future, so that they can guarantee the value will not have possibly changed by then (because of the delay).\nimpl<T, DELAY> SharedMutable<T, DELAY> {\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot, _dummy: [0; DELAY] }\n }\n\n pub fn schedule_value_change(self, new_value: T) {\n let context = self.context.public.unwrap();\n let mut scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = context.block_number() as u32;\n // TODO: make this configurable\n // https://github.com/AztecProtocol/aztec-packages/issues/5501\n let block_of_change = block_number + DELAY;\n\n scheduled_value_change.schedule_change(new_value, block_number, DELAY, block_of_change);\n\n public_storage::write(self.get_derived_storage_slot(), scheduled_value_change);\n }\n\n pub fn get_current_value_in_public(self) -> T {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n\n let block_number = self.context.public.unwrap().block_number() as u32;\n scheduled_value_change.get_current_at(block_number)\n }\n\n pub fn get_scheduled_value_in_public(self) -> (T, u32) {\n let scheduled_value_change: ScheduledValueChange<T> = public_storage::read(self.get_derived_storage_slot());\n scheduled_value_change.get_scheduled()\n }\n\n pub fn get_current_value_in_private(self) -> T where T: FromField {\n let mut context = self.context.private.unwrap();\n\n let (scheduled_value_change, historical_block_number) = self.historical_read_from_public_storage(*context);\n let block_horizon = scheduled_value_change.get_block_horizon(historical_block_number, DELAY);\n\n // We prevent this transaction from being included in any block after the block horizon, ensuring that the \n // historical public value matches the current one, since it can only change after the horizon.\n context.set_tx_max_block_number(block_horizon);\n scheduled_value_change.get_current_at(historical_block_number)\n }\n\n fn historical_read_from_public_storage(\n self,\n context: PrivateContext\n ) -> (ScheduledValueChange<T>, u32) where T: FromField {\n let derived_slot = self.get_derived_storage_slot();\n\n // Ideally the following would be simply public_storage::read_historical, but we can't implement that yet.\n let mut raw_fields = [0; 3];\n for i in 0..3 {\n raw_fields[i] = public_storage_historical_read(\n context,\n derived_slot + i as Field,\n context.this_address()\n );\n }\n\n let scheduled_value: ScheduledValueChange<T> = ScheduledValueChange::deserialize(raw_fields);\n let historical_block_number = context.historical_header.global_variables.block_number as u32;\n\n (scheduled_value, historical_block_number)\n }\n\n fn get_derived_storage_slot(self) -> Field {\n // Since we're actually storing three values (a ScheduledValueChange struct), we hash the storage slot to get a\n // unique location in which we can safely store as much data as we need. This could be removed if we informed\n // the slot allocator of how much space we need so that proper padding could be added.\n // See https://github.com/AztecProtocol/aztec-packages/issues/5492\n pedersen_hash([self.storage_slot, 0], 0)\n }\n}\n\nmod test {\n use dep::std::{merkle::compute_merkle_root, test::OracleMock};\n\n use crate::{\n context::{PublicContext, PrivateContext, Context},\n state_vars::shared_mutable::shared_mutable::SharedMutable,\n oracle::get_public_data_witness::PublicDataWitness\n };\n\n use dep::protocol_types::{\n constants::{GENERATOR_INDEX__PUBLIC_LEAF_INDEX, PUBLIC_DATA_TREE_HEIGHT}, hash::pedersen_hash,\n address::AztecAddress, public_data_tree_leaf_preimage::PublicDataTreeLeafPreimage\n };\n\n fn setup(private: bool) -> (SharedMutable<Field, TEST_DELAY>, Field) {\n let block_number = 40;\n let context = create_context(block_number, private);\n\n let storage_slot = 57;\n let state_var: SharedMutable<Field, TEST_DELAY> = SharedMutable::new(context, storage_slot);\n\n (state_var, block_number)\n }\n\n fn create_context(block_number: Field, private: bool) -> Context {\n if private {\n let mut private_context = PrivateContext::empty();\n private_context.historical_header.global_variables.block_number = block_number;\n Context::private(&mut private_context)\n } else {\n let mut public_context = PublicContext::empty();\n public_context.inputs.public_global_variables.block_number = block_number;\n Context::public(&mut public_context)\n }\n }\n\n global TEST_DELAY = 20;\n\n global pre = 13;\n global post = 42;\n\n #[test]\n fn test_get_current_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, current value is pre\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_current_value_in_public(), pre);\n }\n\n #[test]\n fn test_get_current_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_current_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, current value is post\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_current_value_in_public(), post);\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number + 1) as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, block_number as u32));\n }\n\n #[test]\n fn test_get_scheduled_value_in_public_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past, scheduled is post (always is)\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n assert_eq(state_var.get_scheduled_value_in_public(), (post, (block_number - 1) as u32));\n }\n\n #[test]\n fn test_schedule_value_change_before_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the future\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number + 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The new scheduled change replaces the old one\n assert_eq(write_mock.get_last_params(), (slot, [pre, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_at_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the current block\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_schedule_value_change_after_change() {\n let (state_var, block_number) = setup(false);\n\n let slot = state_var.get_derived_storage_slot();\n\n // Change in the past\n OracleMock::mock(\"storageRead\").with_params((slot, 3)).returns([pre, post, block_number - 1]);\n\n let write_mock = OracleMock::mock(\"storageWrite\").returns([0; 3]); // The oracle return value is actually unused\n\n let new_value = 42;\n state_var.schedule_value_change(new_value);\n\n // The previous 'post' value is the current one and becomes the 'pre' value\n assert_eq(write_mock.get_last_params(), (slot, [post, new_value, block_number + TEST_DELAY]));\n }\n\n #[test]\n fn test_get_current_value_in_private_before_change() {\n // Here we'd want to test that the private getter returns the correct value and sets max_block_number in the\n // context to the expected block horizon, in all the possible scenarios (long before change, before near change,\n // after change).\n // However, this requires mocking the getPublicDataTreeWitness oracle so that we can convince the circuit that\n // it got a valid historical proof. Because we can set the tree root to whatever we want in the context, this is\n // trivial for a single historical value (we add a leaf and compute the root with any random path), but is quite\n // hard if we're reading more than one value for the same root (as SharedMutable does): we essentially need to\n // create an actual indexed tree and compute the correct path for each of the inserted values.\n // TODO: implement an actual tree and use it here https://github.com/AztecProtocol/aztec-packages/issues/5494\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr" }, "69": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::oracle::storage::{storage_read, storage_write};\n\npub fn read<T, N>(storage_slot: Field) -> T where T: Deserialize<N> {\n T::deserialize(storage_read(storage_slot))\n}\n\npub fn write<T, N>(storage_slot: Field, value: T) where T: Serialize<N> {\n storage_write(storage_slot, value.serialize());\n}\n\n// Ideally we'd do the following, but we cannot because of https://github.com/noir-lang/noir/issues/4633\n// pub fn read_historical<T, N>(\n// storage_slot: Field,\n// context: PrivateContext\n// ) -> T where T: Deserialize<N> {\n// let mut fields = [0; N];\n// for i in 0..N {\n// fields[i] = public_storage_historical_read(\n// context,\n// storage_slot + i as Field,\n// context.this_address()\n// );\n// }\n// T::deserialize(fields)\n// }\n\nmod tests {\n use dep::std::test::OracleMock;\n use dep::protocol_types::traits::{Deserialize, Serialize};\n use crate::public_storage;\n\n struct TestStruct {\n a: Field,\n b: Field,\n }\n\n impl Deserialize<2> for TestStruct {\n fn deserialize(fields: [Field; 2]) -> TestStruct {\n TestStruct { a: fields[0], b: fields[1] }\n }\n }\n\n impl Serialize<2> for TestStruct {\n fn serialize(self) -> [Field; 2] {\n [self.a, self.b]\n }\n }\n\n #[test]\n fn test_read() {\n let slot = 7;\n let written = TestStruct { a: 13, b: 42 };\n\n OracleMock::mock(\"storageRead\").with_params((slot, 2)).returns(written.serialize());\n\n let read: TestStruct = public_storage::read(slot);\n assert_eq(read.a, 13);\n assert_eq(read.b, 42);\n }\n\n #[test]\n fn test_write() {\n let slot = 7;\n let to_write = TestStruct { a: 13, b: 42 };\n\n let mock = OracleMock::mock(\"storageWrite\").returns([0; 2]); // The return value is unused\n\n public_storage::write(slot, to_write);\n assert_eq(mock.get_last_params(), (slot, to_write.serialize()));\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/public_storage.nr" }, "77": { "source": "use crate::{\n context::{\n inputs::PublicContextInputs, interface::ContextInterface, interface::PublicContextInterface,\n gas::GasOpts\n},\n messaging::process_l1_to_l2_message,\n oracle::{arguments, public_call::call_public_function_internal, returns},\n hash::{hash_args, ArgsHasher}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, side_effect::SideEffect\n},\n hash::silo_nullifier, address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest}, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::{Deserialize, Empty}\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_hash : Field,\n\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_non_existent_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL>,\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n\n new_note_hashes: BoundedVec<NoteHash, MAX_NEW_NOTE_HASHES_PER_CALL>,\n new_nullifiers: BoundedVec<Nullifier, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n new_l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n PublicContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter,\n args_hash,\n return_hash: 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero() // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n }\n }\n\n pub fn call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_public_function_no_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> FunctionReturns<RETURNS_COUNT> {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_public_function_with_packed_args<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) -> FunctionReturns<RETURNS_COUNT> {\n let side_effect_counter = self.side_effect_counter;\n // TODO get next value from output of `call_public_function_internal`\n self.side_effect_counter += 1;\n\n let raw_returns = call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n FunctionReturns::new(raw_returns)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n // Keep private or ask the AVM team if you want to change it.\n fn push_nullifier_non_existent_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_non_existent_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_log_preimages_length = 0;\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_non_existent_read_requests: self.nullifier_non_existent_read_requests.storage,\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n returns_hash: self.return_hash,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n global_variables: self.inputs.public_global_variables,\n prover_address: self.prover_address,\n revert_code: 0,\n start_gas_left: self.inputs.gas_left,\n end_gas_left: self.inputs.gas_left, // AVM should decrease this value\n transaction_fee: self.inputs.transaction_fee\n };\n pub_circuit_pub_inputs\n }\n}\n\nimpl ContextInterface for PublicContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.public_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n fn push_new_note_hash(&mut self, note_hash: Field) {\n self.new_note_hashes.push(NoteHash { value: note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, _nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PublicContextInterface for PublicContext {\n fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n fn timestamp(self) -> u64 {\n self.inputs.public_global_variables.timestamp\n }\n\n fn coinbase(self) -> EthAddress {\n self.inputs.public_global_variables.coinbase\n }\n\n fn fee_recipient(self) -> AztecAddress {\n self.inputs.public_global_variables.fee_recipient\n }\n\n fn fee_per_da_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_da_gas\n }\n\n fn fee_per_l2_gas(self) -> Field {\n self.inputs.public_global_variables.gas_fees.fee_per_l2_gas\n }\n\n fn nullifier_exists(self, unsiloed_nullifier: Field, address: AztecAddress) -> bool {\n // Current public can only check for settled nullifiers, so we always silo.\n let siloed_nullifier = silo_nullifier(address, unsiloed_nullifier);\n nullifier_exists_oracle(siloed_nullifier) == 1\n }\n\n fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // We can consume message with a secret in public context because the message cannot be modified and therefore\n // there is no front-running risk (e.g. somebody could front run you to claim your tokens to your address).\n // Leaf index is not used in public context, but it is used in the AVMContext which will replace it.\n fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress, _leaf_index: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n this,\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n fn emit_unencrypted_log<T>(&mut self, log: T) {\n let event_selector = 5;\n let log_hash = emit_unencrypted_log_oracle(self.this_address(), event_selector, log);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // Once we hash inside circuits, this replaces push_unencrypted_log\n // For now we need an oracle to get the hash\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n fn call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n fn static_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field],\n _gas: GasOpts\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n fn delegate_call_public_function<RETURNS_COUNT>(\n self: &mut Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field]\n ) -> FunctionReturns<RETURNS_COUNT> {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n}\n\nimpl Empty for PublicContext {\n fn empty() -> Self {\n PublicContext {\n inputs: PublicContextInputs::empty(),\n side_effect_counter: 0 as u32,\n args_hash : 0,\n return_hash : 0,\n nullifier_read_requests: BoundedVec::new(),\n nullifier_non_existent_read_requests: BoundedVec::new(),\n contract_storage_update_requests: BoundedVec::new(),\n contract_storage_reads: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero(),\n }\n }\n}\n\n#[oracle(checkNullifierExists)]\nfn nullifier_exists_oracle(nullifier: Field) -> Field {}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nstruct FunctionReturns<N> {\n values: [Field; N]\n}\n\nimpl<N> FunctionReturns<N> {\n pub fn new(values: [Field; N]) -> FunctionReturns<N> {\n FunctionReturns { values }\n }\n\n pub fn assert_empty(returns: FunctionReturns<0>) {\n assert(returns.values.len() == 0);\n }\n\n pub fn raw(self) -> [Field; N] {\n self.values\n }\n\n pub fn deserialize_into<T>(self) -> T where T: Deserialize<N> {\n Deserialize::deserialize(self.raw())\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr" }, "96": { "source": "#[oracle(packArgumentsArray)]\nfn pack_arguments_array_oracle<N>(_args: [Field; N]) -> Field {}\n\n#[oracle(packArguments)]\nfn pack_arguments_oracle(_args: [Field]) -> Field {}\n\n/// - Pack arguments (array version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments_array<N>(args: [Field; N]) -> Field {\n pack_arguments_array_oracle(args)\n}\n\n/// - Pack arguments (slice version) will notify the simulator that these arguments will be used later at\n/// some point in the call. \n/// - When the external call is made later, the simulator will know what the values unpack to.\n/// - This oracle will not be required in public vm functions, as the vm will keep track of arguments \n/// itself.\nunconstrained pub fn pack_arguments(args: [Field]) -> Field {\n pack_arguments_oracle(args)\n}\n\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/arguments.nr" }, "108": { "source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(callPublicFunction)]\nfn call_public_function_oracle<RETURNS_COUNT>(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {}\n\nunconstrained pub fn call_public_function_internal<RETURNS_COUNT>(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> [Field; RETURNS_COUNT] {\n call_public_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n is_delegate_call\n )\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/public_call.nr" }, "110": { "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr" }, "114": { "source": "mod globals;\nmod inputs;\n\nmod private_context;\nmod public_context;\nmod avm_context;\nmod interface;\nmod gas;\n\nuse interface::{\n ContextInterface, PrivateCallInterface, PublicCallInterface, PrivateVoidCallInterface,\n PublicVoidCallInterface, AvmCallInterface, AvmVoidCallInterface\n};\nuse private_context::PrivateContext;\nuse private_context::PackedReturns;\nuse public_context::PublicContext;\nuse public_context::FunctionReturns;\nuse avm_context::AvmContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n avm: Option<&mut AvmContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context { private: Option::some(context), public: Option::none(), avm: Option::none() }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context { public: Option::some(context), private: Option::none(), avm: Option::none() }\n }\n\n pub fn avm(context: &mut AvmContext) -> Context {\n Context { avm: Option::some(context), public: Option::none(), private: Option::none() }\n }\n\n pub fn none() -> Context {\n Context { public: Option::none(), private: Option::none(), avm: Option::none() }\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context.nr" }, "115": { "source": "use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr" }, "133": { "source": "pub fn field_from_bytes<N>(bytes: [u8; N], big_endian: bool) -> Field {\n assert(bytes.len() < 32, \"field_from_bytes: N must be less than 32\");\n let mut as_field = 0;\n let mut offset = 1;\n for i in 0..N {\n let mut index = i;\n if big_endian {\n index = N - i - 1;\n }\n as_field += (bytes[index] as Field) * offset;\n offset *= 256;\n }\n\n as_field\n}\n\n// Convert a 32 byte array to a field element by truncating the final byte\npub fn field_from_bytes_32_trunc(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..15 {\n // covers bytes 16..30 (31 is truncated and ignored)\n low = low + (bytes32[15 + 15 - i] as Field) * v;\n v = v * 256;\n // covers bytes 0..14\n high = high + (bytes32[14 - i] as Field) * v;\n }\n // covers byte 15\n low = low + (bytes32[15] as Field) * v;\n\n low + high * v\n}\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\n#[test]\nunconstrained fn bytes_field_test() {\n // Tests correctness of field_from_bytes_32_trunc against existing methods\n // Bytes representing 0x543e0a6642ffeb8039296861765a53407bba62bd1c97ca43374de950bbe0a7\n let inputs = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167\n ];\n let field = field_from_bytes(inputs, true);\n let return_bytes = field.to_be_bytes(31);\n for i in 0..31 {\n assert_eq(inputs[i], return_bytes[i]);\n }\n // 32 bytes - we remove the final byte, and check it matches the field\n let inputs2 = [\n 84, 62, 10, 102, 66, 255, 235, 128, 57, 41, 104, 97, 118, 90, 83, 64, 123, 186, 98, 189, 28, 151, 202, 67, 55, 77, 233, 80, 187, 224, 167, 158\n ];\n let field2 = field_from_bytes_32_trunc(inputs2);\n let return_bytes2 = field.to_be_bytes(31);\n\n for i in 0..31 {\n assert_eq(return_bytes2[i], return_bytes[i]);\n }\n assert_eq(field2, field);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr" }, "149": { "source": "use crate::{\n address::{\n eth_address::EthAddress, salted_initialization_hash::SaltedInitializationHash,\n aztec_address::AztecAddress\n},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS, contract_class_id::ContractClassId,\n hash::pedersen_hash, traits::{ToField, FromField, Serialize, Deserialize}\n};\n\nglobal PARTIAL_ADDRESS_LENGTH = 1;\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer)\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash\n ) -> Self {\n PartialAddress::from_field(\n pedersen_hash(\n [\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr" }, "150": { "source": "use crate::{\n constants::{GENERATOR_INDEX__PARTIAL_ADDRESS, GENERATOR_INDEX__PUBLIC_KEYS_HASH}, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{ToField, Serialize, Deserialize},\n hash::poseidon2_hash,\n};\n\n// Public keys hash. Used in the computation of an address.\nstruct PublicKeysHash {\n inner: Field\n}\n\nimpl ToField for PublicKeysHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<1> for PublicKeysHash {\n fn serialize(self: Self) -> [Field; 1] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<1> for PublicKeysHash {\n fn deserialize(fields: [Field; 1]) -> Self {\n PublicKeysHash::from_field(fields[0])\n }\n}\n\nimpl Eq for PublicKeysHash {\n fn eq(self, other: Self) -> bool {\n self.inner == other.inner\n }\n}\n\nimpl PublicKeysHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n // TODO(#5830): When we do this refactor, rename compute_new -> compute\n pub fn compute(public_key: GrumpkinPoint) -> Self {\n PublicKeysHash::from_field(\n pedersen_hash(\n [\n public_key.x,\n public_key.y\n ],\n GENERATOR_INDEX__PARTIAL_ADDRESS\n )\n )\n }\n\n // TODO(#5830): When we do this refactor, rename compute_new -> compute\n pub fn compute_new(\n nullifier_public_key: GrumpkinPoint,\n incoming_public_key: GrumpkinPoint,\n outgoing_public_key: GrumpkinPoint,\n tagging_public_key: GrumpkinPoint\n ) -> Self {\n PublicKeysHash::from_field(\n poseidon2_hash([\n nullifier_public_key.x,\n nullifier_public_key.y,\n incoming_public_key.x,\n incoming_public_key.y,\n outgoing_public_key.x,\n outgoing_public_key.y,\n tagging_public_key.x,\n tagging_public_key.y,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n ])\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n// TODO(#5830): re-enable this test once the compute function is updated\n// #[test]\n// fn compute_public_keys_hash() {\n// let point = GrumpkinPoint { x: 1, y: 2 };\n// let actual = PublicKeysHash::compute(point);\n// let expected_public_keys_hash = 0x22d83a089d7650514c2de24cd30185a414d943eaa19817c67bffe2c3183006a3;\n// assert(actual.to_field() == expected_public_keys_hash);\n// }\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/public_keys_hash.nr" }, "151": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn compute_from_public_keys_and_partial_address(\n nullifier_public_key: GrumpkinPoint,\n incoming_public_key: GrumpkinPoint,\n outgoing_public_key: GrumpkinPoint,\n tagging_public_key: GrumpkinPoint,\n partial_address: PartialAddress,\n ) -> AztecAddress {\n let public_keys_hash = PublicKeysHash::compute_new(\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n );\n\n let computed_address = AztecAddress::compute(public_keys_hash, partial_address);\n\n computed_address\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "156": { "source": "use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "185": { "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr" }, "205": { "source": "use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U64_SERIALIZED_LEN: Field = 1;\nglobal U128_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U64_SERIALIZED_LEN> for u64 {\n fn serialize(self) -> [Field; U64_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U64_SERIALIZED_LEN> for u64 {\n fn deserialize(fields: [Field; U64_SERIALIZED_LEN]) -> Self {\n fields[0] as u64\n }\n}\n\nimpl Serialize<U128_SERIALIZED_LEN> for U128 {\n fn serialize(self) -> [Field; 1] {\n [self.to_integer()]\n }\n\n}\n\nimpl Deserialize<U128_SERIALIZED_LEN> for U128 {\n fn deserialize(fields: [Field; U128_SERIALIZED_LEN]) -> Self {\n U128::from_integer(fields[0])\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr" }, "207": { "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_tx_logs_hash<MAX_ENCRYPTED_LOGS_PER_TX>(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // TODO(Miranda): Below is flat hashing which would reduce constraints (we now only hash once in tail) - convert to this?\n\n // // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n // // Ideally we would define a new global here but for now we assert in case MAX_LOGS changes\n // assert(MAX_ENCRYPTED_LOGS_PER_TX * 32 == 256);\n // let mut hash_input_flattened = [0; 256];\n // for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // let input_as_bytes = logs[offset].value.to_be_bytes(32);\n // for byte_index in 0..32 {\n // hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n // }\n // }\n // // This differs from accumulate_sha256 as we could increase MAX_LOGS and\n // // ideally we would push to a slice then hash, but in practice compilation was very slow\n // // Hardcode to 256 bytes for now\n // sha256_to_field(hash_input_flattened)\n\n // Assuming logs are pre-sorted\n let mut accumulated_logs_hash = 0;\n for i in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n if !is_empty(logs[i]) {\n accumulated_logs_hash = accumulate_sha256([accumulated_logs_hash, logs[i].value]);\n }\n }\n\n accumulated_logs_hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "216": { "source": "use crate::traits::{Serialize, Deserialize};\nuse dep::std::cmp::Eq;\n\nglobal GRUMPKIN_POINT_SERIALIZED_LEN: Field = 2;\n\n// TODO(https://github.com/noir-lang/noir/issues/4931)\nstruct GrumpkinPoint {\n x: Field,\n y: Field,\n}\n\nimpl Serialize<GRUMPKIN_POINT_SERIALIZED_LEN> for GrumpkinPoint {\n fn serialize(self) -> [Field; GRUMPKIN_POINT_SERIALIZED_LEN] {\n [self.x, self.y]\n }\n}\n\nimpl Deserialize<GRUMPKIN_POINT_SERIALIZED_LEN> for GrumpkinPoint {\n fn deserialize(serialized: [Field; GRUMPKIN_POINT_SERIALIZED_LEN]) -> Self {\n Self {\n x: serialized[0],\n y: serialized[1],\n }\n }\n}\n\nimpl Eq for GrumpkinPoint {\n fn eq(self, point: GrumpkinPoint) -> bool {\n (point.x == self.x) & (point.y == self.y)\n }\n}\n\nimpl GrumpkinPoint {\n pub fn new(x: Field, y: Field) -> Self {\n Self { x, y }\n }\n\n pub fn zero() -> Self {\n Self { x: 0, y: 0 }\n }\n\n pub fn is_zero(self) -> bool {\n (self.x == 0) & (self.y == 0)\n }\n\n // TODO(David): Would be quite careful here as (0,0) is not a point\n // on the curve. A boolean flag may be the better approach here,\n // would also cost less constraints. It seems like we don't need to \n // group arithmetic either. \n fn assert_is_zero(self) {\n assert(self.x == 0);\n assert(self.y == 0);\n }\n\n pub fn to_be_bytes(self: Self) -> [u8; 64] {\n let mut result = [0 as u8; 64];\n let x_bytes = self.x.to_be_bytes(32);\n let y_bytes = self.y.to_be_bytes(32);\n for i in 0..32 {\n result[i] = x_bytes[i];\n result[i + 32] = y_bytes[i];\n }\n result\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/grumpkin_point.nr" }, "296": { "source": "contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n state_vars::{\n SharedMutable,\n Map\n }, \n protocol_types::{\n grumpkin_point::GrumpkinPoint,\n address::{\n AztecAddress,\n PublicKeysHash,\n PartialAddress,\n },\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n GENERATOR_INDEX__PUBLIC_KEYS_HASH\n },\n hash::poseidon2_hash,\n },\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n //! This should stay at storage slot 1. If you change this, make sure you change the hardcoded value in keys/assert_public_key_freshness.\n //! We use this hardcoded storage slot with derive_storage_slot_in_map and the SharedMutablePrivateGetter to directly read the value at an address in this contract.\n nullifier_public_key_hash_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n // incoming_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // outgoing_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n // tagging_public_key_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n }\n\n #[aztec(public)]\n fn rotate_nullifier_public_key(\n address: AztecAddress,\n new_nullifier_public_key: GrumpkinPoint,\n nonce: Field,\n ) {\n assert(\n !new_nullifier_public_key.is_zero(),\n \"New nullifier public key must be non-zero\"\n );\n\n // TODO: (#6137)\n if (!address.eq(context.msg_sender())) {\n assert_current_call_valid_authwit_public(&mut context, address);\n } else {\n assert(nonce == 0, \"invalid nonce\");\n }\n\n let nullifier_key_registry = storage.nullifier_public_key_hash_registry.at(address);\n\n nullifier_key_registry.schedule_value_change(poseidon2_hash(new_nullifier_public_key.serialize()));\n }\n\n #[aztec(public)]\n fn register(\n address: AztecAddress,\n partial_address: PartialAddress,\n nullifier_public_key: GrumpkinPoint,\n incoming_public_key: GrumpkinPoint,\n outgoing_public_key: GrumpkinPoint,\n tagging_public_key: GrumpkinPoint,\n ) {\n assert(\n !partial_address.is_zero() &\n !nullifier_public_key.is_zero() &\n !incoming_public_key.is_zero() &\n !outgoing_public_key.is_zero() &\n !tagging_public_key.is_zero(),\n \"All public keys must be non-zero\"\n );\n\n // We could also pass in original_public_keys_hash instead of computing it here, if all we need the original one is for being able to prove ownership of address\n let computed_address = AztecAddress::compute_from_public_keys_and_partial_address(\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n partial_address,\n );\n\n assert(computed_address.eq(address), \"Computed address does not match supplied address\");\n\n let nullifier_key_hash_registry = storage.nullifier_public_key_hash_registry.at(address);\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality\n // let incoming_key_registry = storage.incoming_public_key_registry.at(address);\n // let outgoing_key_registry = storage.outgoing_public_key_registry.at(address);\n // let tagging_key_registry = storage.taggin_public_key_registry.at(address);\n\n nullifier_key_hash_registry.schedule_value_change(poseidon2_hash(nullifier_public_key.serialize()));\n // We are not supporting rotating / changing keys other than the nullifier public in the registry at the moment, but will in the future.\n // Uncomment lines below to enable that functionality // incoming_key_registry.schedule_value_change(new_incoming_public_key);\n // outgoing_key_registry.schedule_value_change(new_outgoing_public_key);\n // tagging_key_registry.schedule_value_change(new_tagging_public_key);\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr" } } }