@aztec/protocol-contracts 0.36.0 → 0.38.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/3vT7ve33R9/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+uLvteXfa8v+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+7Ht9q+/1ra+9PtGQH98Sra+/qFe/aFe/6Fe/GFe/mFe/uK5+sa5+cV/84tcO4StfvPrmyNU3R66+OXL1zZGrb45cfXPk6psjV98cufrm6NU3R6++OXr1zdGrb45efXP06pujV98cvfrm6NU3R6++OXb1zbGrb45dfXPs6ptjV98cu/rm2NU3x66+OXb1zbGrb45ffXP86pvjV98cv/rm+NU3x6++OX71zfGrb45ffXP86psTV9+cuPrmxNU3J66+OXH1zYmrb05cfXPi6psTV9+cuPrm5NU3J6++OXn1zcmrb05efXPy6puTV9+cvPrm5NU3J6++Oevqm7Ouvjnr6puzrr456+qbs66+Oevqm7Ouvjnr6puzrr45dfXNqatvTl19c+rqm1NX35y6+ubU1Tenrr45dfXNqatvzr765uyrb86++ubsq2/Ovvrm7Ktvzr765uyrb86++ubsi29OHcfVL8rVL+rVL9rVL/rVL8bVL+bVL66rX6yrX7z65lz1kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh1xXPeS66iHXVQ+5rnrIddVDrqsecl31kOuqh7yvesj7qoe8r3rI+6qHvK96yPuqh7yvesj7qoe8r3rI+6qHvK96yPuqh7yvesj7qoe8r3rI+6qHvK96yPuqh7z/wEM2348vnnbx7774d3/16TjWjw+H6+dnxffnQ3b3IT+++Ad+8wtf/PrMz1IeX/TwJ23l+X++H59Oqf3z00d8PsZnHhMzj8mZx6yZx9TMY/bIY/7AP//2x8jMY3TmMTMqYDMqYDMqYDMqYDMqYDMqYDMq4DMq4DMq4DMq4DMq4DMq4DMq4DMq4DMq4DMq4DMqEDMqEDMqEDMqEDMqEDMqEDMqEDMqEDMqEDMqEDMqkDMqkDMqkDMqkDMqkDMqkDMqkDMqkDMqkDMqkDMqsGZUYM2owJpRgTWjAmtGBdaMCqwZFVgzKrBmVGDNqEDNqEDNqEDNqEDNqEDNqEDNqEDNqEDNqEDNqEDNqMCeUYE9owJ7RgX2jArsGRXYMyqwZ1Rgz6jAnlGBPaECfhzHzGNk5jE68xibeYzPPCZmHpMzj1kzj6mZx8yogMyogMyogMyogMyogMyogMyogMyogMyogMyogMyogM6ogM6ogM6ogM6ogM6ogM6ogM6ogM6ogM6ogM6ogM2ogM2ogM2ogM2ogM2ogM2ogM2ogM2ogM2ogM2ogM+ogM+ogM+ogM+ogM+ogM+ogM+ogM+ogM+ogM+oQMyoQMyoQMyoQMyoQMyoQMyoQMyoQMyoQMyoQMyoQM6oQM6oQM6oQM6oQM6oQM6oQM6oQM6oQM6oQM6owJpRgTWjAmtGBdaMCqwZFVgzKrBmVGDNqMCaUYE1owI1owI1owI1owI1owI1owI1owI1owI1owI1owI1owJ7RgX2jArsGRXYMyqwZ1Rgz6jAnlGBPaMCe0YFZnYHZWZ3UGZ2B2Vmd1Bmdgfl8JnHxMxjcuYxa+YxNfOYGRWY2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGZ2R2Umd1BmdkdlJndQZnZHZSZ3UGd2R3Umd1Bndkd1JndQT185jEx85icecyaeUzNPGZGBWZ2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ3UGd2B3Vmd1Bndgd1ZndQZ3YHdWZ30GZ2B21md9BmdgdtZnfQDp95TMw8Jmces2YeUzOPmVGBmd1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R20md1Bm9kdtJndQZvZHbSZ3UGb2R30md1Bn9kd9JndQZ/ZHfTDZx4TM4/JmcesmcfUzGNmVGBmd9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B31md9Bndgd9ZnfQZ3YHfWZ30Gd2B2NmdzBmdgdjZncwZnYH4/CZx8TMY3LmMWvmMTXzmBkVmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BmNkdjJndwZjZHYyZ3cGY2R2Mmd3BnNkdzJndwZzZHcyZ3cE8fOYxMfOYnHnMmnlMzTxmRgVmdgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3NmdzBndgdzZncwZ3YHc2Z3MGd2B3Nmd3DN7A6umd3BNbM7uGZ2B9fhM4+JmcfkzGPWzGNq5jEzKjCzO7hmdgfXzO7gmtkdXDO7g2tmd3DN7A6umd3BNbM7uGZ2B9fM7uCa2R1cM7uDa2Z3cM3sDq6Z3cE1szu4ZnYH18zu4JrZHVwzu4NrZndwzewOrpndwTWzO7i+Y3dQouzx6fT8/HTYVx8218eHze3zw1L2WVMC1rQAayrAmjZeTd+xHPntNQlgTQpYkwHW5IA1Aeq4A+q4A+q4A+q4A+p4AOp4AOp4AOp4AOp4AOp4AOp4AOp4AOp4AOp4AOp4Aup4Aup4Aup4Aup4Aup4zmtBff60bf+ypo1X0xp/x/3Ynz+t+8uaDLAmB6wpAGtKwJrG/1bx+qwp7PhdTV98Oj8/vH7zWZPP+ou8/s1dfx3k9Qt5/Ypd//785d/O2N/Ub+T1O3n9QV5/cte/sfVT5fEPEyr2Zf3Y+vm8fuz7a+v48WGrr+ufv795/KxfntS/9vrx4Tq+/PtzJ3n9i7z+9/79/HjKd/yVu478/FvIj79+Sn1HiOD86U/75PwH2799FrXrx2e3rC/+r1vfkTf4GxU9nvIdfwPmz780f/uqfNm3no98yGqF/e0PP1/0qe8IMvzaBpy9gWBvINkbWOwNFHsDm7yB74jP/NoGhL0B9kks7JP4O2JKv7YB9kks7JNY2CexsE9iYZ/Eyj6JlX0Sf0fs7vwH+cdj9BB90sB6OC12/DQn7PMf0r8joPe9BTlaQYFWUKIVtNAKKrSCNlhB3xFj/N6CBK0gNKU2NKU2NKU2NKU2NKU2NKU2NKU2NKV2NKV2NKV2NKV2NKV2NKV2NKV2NKV2NKV2NKV2NKUONKUONKUONKUONKUONKUONKUONKUONKUONKUONKVONKVONKVONKVONKVONKVONKVONKVONKVONKVONKVeaEq90JR6oSn1QlPqhabUC02pF5pSLzSlXmhKvdCUutCUutCUutCUutCUutCUutCUutCUutCUutCUutCUeqMp9UZT6o2m1BtNqTeaUm80pd5oSr3RlHqjKfUGU+p9gCn1PsCUeh9gSr0PMKXeB5hS7wNMqfcBptT7AFPqfYAp9T7QlFrQlFrQlFrQlFrQlFrQlFrQlFrQlFrQlFrQlFrQlFrRlFrRlBoto7jRMoobLaO40TKKGy2juNEyihsto7jRMop7PKMoap8B7vM//wbmttZX9ecnxlpTfoNMlJ8tCH8Lyt+C8bfg/C0EfwvJ38Lib6H4W9j0LTj/dHb+6ez809n5p/N4vvYNLfBPZ+efzs4/nZ1/Ojv/dA7+6Rz80zn4p3PwT+fxTPUbWuCfzsE/nYN/Ogf/dA7+6Zz80zn5p3PyT+fkn87jOfo3tMA/nZN/Oif/dE7+6Zz803nxT+fFP50X/3Re/NN5nJ3whhb4p/Pin86Lfzov/um8+Kdz8U/n4p/OxT+di386j/My3tAC/3Qu/ulc/NO5+Kdz8U/nzT+dN/903vzTefNP53FGyhta4J/Om386b/7pvPmn82afznEc7NP5bIF9Op8tsE/nswX26Xy2wD6dzxbYp/PZAvt0Pltgn85nC+zT+WyBfzoL/3QW/uks/NNZ+KfzOAvpDS3wT2fhn87CP52FfzoL/3RW/ums/NNZ+aez8k/ncf7VG1rgn87KP52Vfzor/3RW/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W+CfzvSssLMF/ulMzwo7W6CfzsLPChN+Vpjws8KEnxUmB/10Fn5WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhws8KE35WmPCzwoSfFSb8rDDhZ4UJPytM+Flhis8KW/nZwscnvmgBfjo/bwF+Oj9vAX46P28Bfjo/bwF+Oj9vAX46P28Bfjo/bwF+Oj9vAX46P20BnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9b4J/O+Kyw5y3wT2d8VtjzFvinMz4r7HkL/NMZnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9b4J/O+Kyw5y3wT2d8VtjzFvinMz4r7HkL/NMZnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9b4J/O+Kyw5y3wT2d8VtjzFvinMz4r7HkL/NMZnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9b4J/O+Kyw5y3wT2d8VtjzFvinMz4r7HkL/NMZnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9b4J/O+Kyw5y3wT2d8VtjzFvinMz4r7HkL/NMZnxX2vAX+6YzPCnveAv90xmeFPW+Bfzrjs8Ket8A/nfFZYc9boJ/Oxs8KM35WmPGzwoyfFWYH/XQ2flaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHGzwozflaY8bPCjJ8VZvysMONnhRk/K8z4WWHOzwpzflaY87PCnJ8V5gf9dHZ+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN+Vpjzs8KcnxXm/Kww52eFOT8rzPlZYc7PCnN4Vthye/z2cv+qBXhW2AstoE/nF1pAn84vtIA+nddnJed/1C9bQJ/OL7SAPp1faAF9Or/QAvp0ft4CPKWqxB+/XfqlIsFTql5oAVyRTGv9+PT5H+vLFsAVyX5+2iziyxbAFemVFsD/Un2hBXQyzystgCvSKy2A/6X6Sgvgf6m+0gL6XHihBf65gE7meaUF8L9UX2kB3Ed6pQX66RzoZJ7zA59/qZ7/oP+7Fv760ymfv51S+2fdR3w2jD7Lv71h9Mn/7Q2j/53wNxp+tODowrKOzxaOr1uA/zvheQvwfyc8bwH+74TnLcD/nfC8Bfi/E562gM4IeqUF+H+Kf94C/D/FP28B/p/in7fAP53RGUGvtMA/ndEZQa+0wD+d0RlBL7SAzgh6pQX+6YzOCHqlBf7pjM4IeqUF/umMzgh6pQX+6YzOCHqlBf7pjM4IeqUF/umMzgh6pQX+6YzOCHqlBf7pjM4IeqUF/umMDth5oQV0wM4rLfCPNnTAzist8I82dMCO+X7sLVvEN/yLdnQcz/c3jD42v73hXzBkP++ZqB/y24YfRRViURuwqF8B2HlelCAWpYhFGWJRjlhUIBaViEUhKnogKnogKnoiKnoiKnoiKnoiKnoiKnoiKnoiKnoiKnoiKnoiKvpCVPSFqOgLUdEXoqIvREVfiIq+EBV9ISr6QlT0hajohajohajohajohajohajohajohajohajohajohajoG1HRN6Kib0RF34iKvhEVfSMq+kZU9I2o6BtR0TegoucBqOh5ACp6HoCKngegoucBqOh5ACp6HoCKngegoucBqOh5ICq6ICq6ICq6ICq6ICq6ICq6ICq6ICq6ICq6ICq6ICq6Iiq6Iiq6Iiq6Iiq6Iiq6Iiq6Iiq6Iiq6Iiq6Iiq6ISq6ISq6ISq6ISq6ISq6ISq6ISq6ISq6ISq6ISq6Iyq6Iyq6Iyq6Iyq6Iyq6Iyq6Iyo6YmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhMxM5qImdFEzIwmYmY0ETOjiZgZTcTMaCJmRhdiZnQhZkYXYmZ0IWZG1wGo6AsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzuhAzowsxM7oQM6MLMTO6EDOjCzEzWoiZ0ULMjBZiZrQQM6N1ACp6IWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBktxMxoIWZGCzEzWoiZ0ULMjBZiZrQQM6OFmBndiJnRjZgZ3YiZ0Y2YGd0HoKJvxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7EzOhGzIxuxMzoRsyMbsTM6EbMjG7AzGgegJnRsyg8RT+LwlP0syg8RT+LwlP0syg8RT+LwlP0syg8RT+LwlP0syhERQfMjJ5FISo6YGb0LApR0QEzo2dRiIoOmBk9i0JUdMDM6FkUoqIDZkbPohAVHTAzehaFqOiAmdGzKERFB8yMnkUhKjpgZvQsClHRATOjZ1GIig6YGT2LQlR0wMzoWRSiogNmRs+iEBUdMDN6FoWo6ICZ0bMoREUHzIyeRSEqOmBm9CwKUdEBM6NnUYiKDpgZPYtCVHTAzOhZFKKiA2ZGz6IQFR0wM3oWhajogJnRsyhERQfMjJ5FISo6YGb0LApR0QEzo2dRiIoOmBk9i0JUdMDM6FkUoqIDZkbPohAVHTAzehaFqOiAmdGzKERFB8yMnkUhKjpgZvQsClHRATOjZ1GIig6YGT2LQlR0wMzoWRSiogNmRs+iEBUdMDN6FoWo6ICZ0bMoREUHzIyeRSEqOmBm9CwKUdEBM6NnUYiKDpgZPYtCVHTAzOhZFKCiC2JmVBAzo4KYGRXEzKgcgIouiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYFMTMqiJlRQcyMCmJmVBAzo4KYGRXEzKggZkYVMTOqiJlRRcyMKmJmVA9ARVfEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4qYGVXEzKgiZkYVMTOqiJlRRcyMKmJmVBEzo4aYGTXEzKghZkYNMTNqB6CiG2Jm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRQ8yMGmJm1BAzo4aYGTXEzKghZkYNMTNqiJlRR8yMOmJm1BEzo46YGfUDUNEdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo46YGXXEzKgjZkYdMTPqiJlRR8yMOmJm1BEzo/4rMqOxnhW1AYv6FZnR50XNK/r5Lz4/iwrJ3xbV/PijB71BD3aDHvwGPcQNesgb9LBu0EPdoIfN38MviPZ+fw83mNPrBnN63WBO/4JY8vf3cIM5vW4wp9cN5vS6wZxeN5jTdYM5XTeY03WDOV03mNO/IGz+/T3cYE7XDeZ03WBO1w3mdN1gTu8bzOl9gzm9bzCn9w3m9C9ACHx/DzeY0/sGc3rfYE7vG8zpzT+n4+Cf03Hwz+k4+Od0HPxzOg7+OR0H/5yOg39Ox8E/p+Pgn9Nx3GBOyw3mtNxgTssN5rTcYE7/AtzH9/dwgzktN5jTcoM5LTeY03KDOa03mNN6gzmtN5jTeoM5/QsgLt/fww3mtN5gTusN5rTeYE7rDea03WBO2w3mtN1gTtsN5vQvQPN8fw83mNN2gzltN5jTdoM5bTeY036DOe03mNN+gzntN5jTvwC49P093GBO+w3mtN9gTvsN5rTfYE7HDeZ03GBOxw3mdNxgTv8CjNb393CDOR03mNNxgzkdN5jTcYM5nTeY0zfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3IBHFjfgkcUNeGRxAx5Z3oBHlug8shB7fPr8rHzVAfiUfqED8Bn9QgfgE/qFDsDn8wsdgE/nFzoAn80vdAA+mV/oAHwuP+8AnT72Qgf0MxmdPPZCB/QzGZ069kIH9DMZnTj2Qgf0MxmdNvZCB/QzGZ009kIH9DMZnTL2Qgf0MxmdMPZCB/QzGZ0u9kIH9DMZnSz2Qgf0MxmdKvZCB/QzGZ0o9kIH9DMZnSb2Qgf0MxmdJPZCB/QzGZ0i9kIH9DMZnSD2Qgf0MxmdHvZCB/QzGZ0c9kIH9DMZnRr2Qgf0MxmdGPZCB/QzGZ0W9kIH9DMZnRT2Qgf0MxmdEvZCB/QzGZ0Q9kIH9DMZnQ72Qgf0MxmdDPZCB/QzGZ0K9kIH9DMZnQj2Qgf0MxmdBvZCB/QzGZ0E9kIH9DMZnQL2Qgf0MxmdAPZCB/QzGZ3+9UIH9DMZnfz1Qgf0Mxmd+vVCB/QzGZ349UIH9DMZnfYVso9HB374Vx3Az+SnHcDP5KcdwM/kpx3Az+SnHcDP5KcdwM/kpx3Az+RnHaDTvV7oAH4mP+2Afiajc71e6IB+JqMzvV7ogH4mo/O8XuiAfiajs7yedrDQSV4vdMA+kxc+x+tpB+wzeR3sM3nhc7yedsA+kxc+x+tpB+wzeeFzvJ51gM/xetoB/UzG53g97YB+JuNzvJ52QD+T8TleTzugn8n4HK+nHdDPZHyO19MO6GcyPsfraQf0Mxmf4/W0A/qZjM/xetoB/UzG53g97YB+JuNzvJ52QD+T8TleTzugn8n4HK+nHdDPZHyO19MO6GcyPsfraQf0Mxmf4/W0A/qZjM/xetoB/UzG53g97YB+JuNzvJ52QD+T8TleTzugn8n4HK+nHdDPZHyO19MO6GcyPsfraQf0Mxmf4/W0A/qZjM/xetoB/UzG53g97YB+JuNzvJ52QD+T8TleTzugn8n4HK+nHdDPZHyO19MO6GcyPsfraQf0Mxmf4/W0A/qZjM/xetoB/UzG53g97YB+JuNzvJ52QD+T8TleTzugn8n0HK9Fz/Fa9ByvRc/xWvQcr0XP8Vr0HK9Fz/Fa9ByvRc/xWvQcr0XP8Vr0HK9Fz/Fa9ByvRc/xWvQcr0XP8Sp6jlfRc7yKnuNV9ByvOthnctFzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/xKnqOV9FzvIqe41X0HK+i53gVPcer6DleRc/x2vQcr03P8dr0HK9Nz/HaB/tM3vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha9ByvTc/x2vQcr03P8dr0HK9Nz/Ha7ByvdbBzvM4OyGfy2QH5TD47IJ/JZwfkM/nsgHwmnx2Qz+SzA/KZfHZAPpPPDuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfiazc7zODuhnMjvH6+yAfSYLPcdL6DleQs/xEnqOlxzsM1noOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneAk9x0voOV5Cz/ESeo6X0HO8hJ7jJfQcL6HneCk9x0vpOV5Kz/FSeo6XHuwzWek5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4KT3HS+k5XkrP8VJ6jpfSc7yUnuOl9Bwvped4GT3Hy+g5XkbP8TJ6jpcd7DPZ6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53gZPcfL6DleRs/xMnqOl9FzvIye42X0HC+j53g5PcfL6TleTs/xcnqO1/m/pO+AfSY7PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4+X0HC+n53g5PcfL6TleTs/xcnqOl9NzvJye4xX0HK+g53gFPccr6DlecbDP5KDneAU9xyvoOV4Bz/Fyic8OvC5/+NEu+gD/3nbhCWHf3C76nwbf3C763xHPO0D/O+J5B07fAfrfEc87QP874nkH6H9HPO+A9++IRwe8fxr86ACePfa8A94B/uiAfibDs8eed0A/k+HZY887oJ/J8Oyx5x3Qz2R49tjTDrDYY4+ioMbsoyioyfkoCmoYPoqCmm+PoqBG1qMoqCn0KApqsDyKgpoVj6Kg5P9HUVjkqkdRiIqOxZd6FIWo6FgUqEdRiIqOxWp6FIWo6N9OVDJ5UtT5L9X347fPfz29//bfzudH1H9+PI+vetj8PXw7VemFHv64qC8+vj0fn94RPys57LMF4W9B+Vsw/hacv4XgbyH5W/iGiauH+2cL63ctPJ5SI0/ZE0/5DpDQC0+RkafoyFNs5Ck+8pQYeUqOPGXk7ufI3c+Ru79G7v4auftr5O6vkbu/Ru7+Grn7a+Tur5G7v0bu/hq5+zVy92vk7tfI3a+Ru18jd79G7n6N3P0aufs1cvdr5O7vkbu/R+7+Hrn7e+Tu75G7v0fu/h65+3vk7u+Ru78n7n4ex8hTZOQpOvIUG3mKjzwlRp6SI09ZI0+pkaeM3H0Zufsycvdl5O7LyN2XkbsvI3dfRu6+jNx9Gbn7MnL3deTu68jd15G7ryN3X0fuvo7cfR25+zpy93Xk7uvI3beRu28jd99G7r6N3H0bufs2cvdt5O7byN23kbtvI3ffR+6+j9x9H7n7PnL3feTu+8jd95G77yN330fuvo/c/Ri5+zFy92Pk7sfI3Y+Rux8jdz9G7v7IXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXl+O7PXlyF5fjuz15cheX47s9eXIXt8a2etbI3t9a2Svb43s9a3DR54SI0/JkaeskafUyFNG7v7IXt8a2etbI3t9a2Svb43s9a2Rvb41ste3Rvb61she3xrZ61sje31rZK9vjez1rZG9vjWy17dG9vrWyF7fGtnrWyN7fWtkr2+N7PWtkb2+NbLXt0b2+tbIXt8a2etbI3t9a2Svb43s9a2Rvb41ste3Rvb61she3xrZ61sje31rZK9vjez1rZG9vjWy17dG9vrWyF7fGtnrWyN7fWtkr2+N7PWtkb2+NbLXt0b2+tbIXt8a2etbI3t9a2Svb43s9a2Rvb41ste3Rvb61she3xrZ61sje31rZK9vjez1rZG9vjWy17dG9vrWyF7fGtnrWyN7fWtkr2+N7PWtkb2+NbLXt0b2+tbIXt8a2etbI3t9a2Svb43s9a2Rvb41ste3Rvb61she3xrZ61sje31rZK9vjez1rZG9vjWy17dG9vrWyF7fGtnrq5G9vhrZ66s/2Ljz/flf6xAeT55ymgY/Pnz+Qfz5Wfv5DB94Rgw8IweesQaeUQPP2O9/xh/s2H3vM2TgGTrwjIF7LgP3XAbuuQzccxm45zJwz2XgnuvAPdeBe64D91wH7rkO3HMduOc6cM914J7rwD3XgXtuA/fcBu65DdxzG7jnNnDPbeCe28A9t4F7bgP33AbuuQ/ccx+45z5wz33gnvvAPfeBe+4D99wH7rkP3HMfuOcxcM9j4J7HwD2PgXseA/c8Bu55DNzzGLjnMXDPY+Ce58A9z4F7ngP3PAfueQ7c8xy45zlwz3PgnufAPc+Be74G7vkauOdr4J6vgXu+Bu75Grjna+Cer4F7vgbu+Rq45zVwz2vgntfAPa+Be14D97wG7nkN3PMauOc1cM9r4J7vgXu+B+75Hrjne+Ce74F7vgfu+R6453vgnu+Be77ff8/3cQw8QwaeoQPPsIFn+MAzYuAZOfCMNfCMGnjGwD0f2IfbA/twe2Afbg/sw+2Bfbg9sA+3B/bh9sA+3B7Yh9sD+3B7YB9uD+zD7YF9uD2wD7cH9uH2wD7cHtiH2wP7cHtgH24P7MPtgX24PbAPtwf24fbAPtwe2IfbA/tw+zv24c4/oH58eGd+fjbqi4+maPz4bErtnz98xGdFC66igqtoo1X0HXt831yRwFWkcBUZXEUOV1HAVQSn2Q6n2Q6n2Q6n2QGn2QGn2QGn2d+xHSqHfybHj11/u6bjxyeP3/3ooxqHqiagqkmoahZUNQVVzUaq5jt2aL+xGoGqRqGqgdLihNLihNLihNLihNLihNLihNLiBaXFC0qLF5QWLygtXlBavKC0eEFp8YLS4gWlxQtKiwtKiwtKiwtKiwtKiwtKiwtKiwtKiwtKiwtKiwtKizeUFm8MLe5WjaHZ3aoxtL1bNcYM6FaNMSu6VWPMlG7VGLOnWzXGjOpWjTHLWlXXcWDMvG7VhLPxrJpwNp5VE87Gs2rC2XhWTTgbz6oJZ+NZNeFsPKsmnI1n1ZSzUShno1DORqGcjUI5G78jt/cLqqacjUI5G4VyNgrlbBTK2aiUs1EpZ6NSzkalnI3fkXX9BVVTzkalnI1KORuVcjYq6myUsP1ZQvwMQGQ8SjfUAflC6ahT8oXSUUflC6WjzssXSkcdmi+Ujjo5XygddXy+UDrqDH2hdNRB+kLpvNPUeaep805T552mzjtNvwMX8KtK552mzjtNnXeaOu80dd5pGrzTNHinafBOUxA+w6XSeacpCPnhUum80xSEKXGpdN5pCkKruFI6CNriUum80xQEmnGpdN5pCoLjuFQ67zQFAX1cKp13moIgRC6VzjtNQeAkl0rnnaYg2JNLpfNOUxCgyqXSeacpCKrlUum80xQEAnOpdN5pCoKXuVQ67zQFAddcKp13moIgcS6VzjtNQWA7l0rnnaYgGJ9LpfNOUxBA0KXSeacpLFLohdJ5pyksXOiF0nmnKSxm6IXSeacpLHDohdJpp6nAoodeKJ12mgoshOiF0mmn6flU3tJpp6nAgoleKJ12mgosouiF0nmnKSys6IXSeacpLLbohdJ5pykswOiF0nmnKSzK6IXSeacpLNTohdJ5pyks3uiF0nmnKSzo6IXSeacpLPLohdJ5pyks/OiF0nmnKSwG6YXSeacpLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhSS8LCThZSEJLwtJeFlIwstCEl4WkvCykISXhaS8LCTlZSEpLwtJeVlIetBOU+VlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFpLwsJOVlISkvC0l5WUjKy0JSXhaS8rKQlJeFZLwsJONlIRkvC8l4WUh20E5T42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkvCwk42UhGS8LyXhZSMbLQjJeFpLxspCMl4VkICykRzUYA/JRDcbMe1SDMcYe1WBMpkc1GMPmUQ3G/HhUgzESHtVgqPyjGgzh/lENCEnnUQ2UFoPwbh7VQGkxCJXmUQ2UFoOwYx7VQGkxCOHlUQ2UFoNwWB7VQGkxCC3lUQ2UFoMwTR7VQGkxCHnkUQ2UFoPwQR7VQGkxCMXjUQ2UFoOwNh7VQGkxCBHjUQ2UFoNwKx7VQGnxm+kSj6fsgaf4m5kNj6fIyFN05Ck28hQfeUqMPCVHnrJGnlIjTxm5+zJy92Xk7svI3ZeRuy8jd19G7r6M3H0Zufsycvdl5O7ryN3XkbuvI3dfR+6+jtx9Hbn7OnL3deTu68jd15G7byN330buvo3cfRu5+zZy923k7vfzW48vrqtfrKtf3Be/2M/tPL4oV7+oV79oV7/oV78YV7949c3xq2+OX31z/OqbE1ffnLj65sTVNyeuvjlx9c2Jq29OXH1z4uqbE1ffnLj65uTVNyevvjl59c3Jq29OXn1z8uqbk1ffnLz65uTVNyevvjnr6puzrr456+qbs66+OX+w6RShjy+m6pO/bVZl/Pj0+R9/7kSv9fmUGHlKjjxljTylRp6yJ57yB5s/3/0UGXmKjjzFRp4ycvdr5O7XyN2vkbtfI3e/Ru7+Hrn7e+Tu75G7v0fu/h65+3vk7u+Ru79H7v4euft74u7HcYw8RUaeoiNPsZGn+MhTYuQpOfKUNfKUGnnKyN2XkbsvI3dfvuHuy8rPfxRfH5/48emMLz6sp/f048N6/qP954fPf4j/rMkAa3LAmgKwpgSsaQHWVIA1bbya9ACsSQBrAtRxBdRxBdRxBdRxBdRxBdRxBdRxBdRxe6+OP54iI0/RkafYyFN85Ckx8pQcecoaeUqNPGVPPMVH7r6P3H0fufs+cvd95O77yN33kbvvI3ffv+PuV9nj01uezG8pf0QcpdbPXYr8HN++4UqKA68kwStJ8UoyvJIcr6TAKynxSlp4JeGpd+Cpd+Kpd+Kpd+Kpd+Kpd+Kpd+Kpd+Kpd+Kpd+Kpd+Kp98JT74Wn3gtPvReeei889V546r3w1HvhqffCU++Fp96Fp96Fp96Fp96Fp96Fp96Fp941rd6+j8d/lYdv33/7wyn62BJMqZ8f1uPTkq7F3kCxN7DJG9gHewPC3oCyN2DsDTh7A8HeAPsk3uyTeLNP4k0+ifMgn8R5AE3iR0lAs/VREtC0fJQENP8eJQFNtEdJQDPqURLQ1HmUBDRHHiUBTYYfJQmQ1j9KwlNvwVNvwVNvwVNvwVNvwVNvwVNvwVNvwVNvxVNvxVNvxVNvxVNvxVNvxVNvxVNvxVNvxVNvxVNvw1Nvw1Nvw1Nvw1Nvw1Nvw1Nvw1Nvw1Nvw1Nvw1Nvx1Nvx1Nvx1Nvx1Nvx1Nvx1Nvx1Nvx1Nvx1Nvx1PvwFPvwFPvwFPvwFPvwFPvwFPvwFPvwFPvwFPvwFPvxFPvxFPvxFPvxFPvxFPvxFPvxFPvxFPvxFPvxFPvhafeC0+9F556Lzz1XnjqvfDUe+Gp98JT74Wn3gtPvQtPvQtPvQtPvQtPvQtPvQtPvZHSwY+S8NQbKcH7KAlPvZFSto+S8NQbKQn7KAlPvZHSqo+S8NQbKVH6KAlPvZFSn4+S4NR7ISUzHyXBqffCy1ouvKzlOuDUe+FlLRde1nLhZS0XXtZy4WUtF17WcuFlLRde1nLhZS0XXtZy4WUtF17WcuFlLRde1nLhZS0XXtZy4WUtF17WcuFlLRde1nLhZS0XXtZy4WUtF17WcuFlLRde1nLhZS0XXtZy4WUt1/dkLVN/lhR/uyQ96sdn1X5T/f7io7YeP+vym/+i1aM+iw/m4pO5+MVcfDEXv4mL/56c6a8qXpiLV+bijbl45gnrzBPWmSesM09YZ56wzjxhg3nCBvOEDeYJG8wT9nsyy7+qeOYJG8wTNpgnbDBP2GCesMk8YZN5wibzhE3mCfs9ufJfVTzzhE3mCZvMEzaZJ2wyT9jFPGEX84RdzBN2MU/Y78n+/6rimSfsYp6wi3nCLuYJu5gnbDFP2GKesMU8YYt5wn4Pn+FXFc88YYt5whbzhC3mCVvME3YzT9jNPGE384TdzBP2exgav6p45gm7mSfsZp6wm3nCbuIJWwfxhK2DeMLWQTxh6yCesHUQT9g6iCdsHcQTtg7iCVsH8YStg3nCCvOEFeYJK8wTVpgn7PewaH5V8cwTVpgnrDBPWGGesMI8YZV5wirzhFXmCavME/Z7eEG/qnjmCavME1aZJ6wyT1hlnrDGPGGNecIa84Q15gnLzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqZTMTOdipnpVMxMp2JmOhUz06mYmU7FzHQqZqbTZmY6bWam02ZmOm1mptM+iCfsZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptNmZjptZqbTZmY6bWam02ZmOm1mptMmZjrtg5jpdBbPO2HP4nkn7Fk874Q9i+edsGfxvBP2LJ53wp7F807Ys3jeCXsWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HME5aY6XQWzzxhiZlOZ/HEE1aYmU7CzHQSZqaTMDOd5CCesMLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZiZTsLMdBJmppMwM52EmekkzEwnYWY6CTPTSZmZTsrMdFJmppMyM530IJ6wysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9NJmZlOysx0UmamkzIznZSZ6aTMTCdlZjopM9PJmJlOxsx0MmamkzEznewgnrDGzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mYmU7GzHQyZqaTMTOdjJnpZMxMJ2NmOhkz08mZmU7OzHRyZqaTMzOd/CCesM7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTyZmZTs7MdHJmppMzM52cmenkzEwnZ2Y6OTPTKZiZTsHMdApmplMwM53iIJ6wwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmJlOwcx0CmamUzAznYKZ6RTMTKdgZjoFM9MpmZlOycx0SmamUzIznfIgnrDJzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTMjOdkpnplMxMp2RmOiUz0ymZmU7JzHRKZqZTjjOdZNtn8fG3iy+T/PHZMv1Np/5ZfVJXv6irL+rqN3P142Cn761eqKtX5OrTP6tf+lX1Rl29U1cPPWufVg89a59WDz1rn1YPPWufVo88a10fny03+aL6hTxrn1ePPGufV488a59Xjzxrn1ePPGufV488a59Xjzxr/ZCf1f9O77+wKjwfH1Zfv3Eg4mevyJP5u3tFnuPf3et7p/6Pp7wZD/V4iow8RUeeYiNP8ZGnxMhTcuQpa+QpNfKUkbu/R+7+Hrn734KC2R6fT1n+1VNs5Ck+8pRvuPsqsh5jTGx99ZQcecoaeUqNPGUPPGV9B1JDxT//Rdrv/jz66i+pVfL48KrYf/vPIzn/mHrUUSv++i/8dSyc+h8lFV5JG66k70iaq+bPkvZ+8if803fpO/Lj312S4pVkeCU5XkmBV1LilbTwSiq8kjZcSYqn3oqn3oqn3oqn3oqn3oqn3oqn3oqn3oqn3oqn3oan3oan3oan3oan3oan3oan3oan3oan3oan3oan3o6n3o6n3o6n3o6n3o6n3o6n3o6n3o6n3j6t3r6P/ePDvv3Jh1P08S/CUurnh/X4/HchvskbiIO9AWFvQNkbMPYGnL2BYG8g2RtY7A2wT+Jgn8TJPomTfRIn+yRO9kn8HSHDX9sA0CR+lAQ0Wx8lAU3LR0lA8+9REtBE+1HSAppRj5KAps6jJKA58igJaDI8SgLS+kdJeOq98NR74an3wlPvhafehafehafehafehafehafehafehafehafehafehafeG0+9N556bzz13njqvfHUe+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
+ { "transpiled": true, "noir_version": "0.29.0+9edb7f5a94a9b0e3a0a108728fe04cd51e5d0db2", "name": "KeyRegistry", "functions": [{ "name": "register", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "error_types": {}, "param_witnesses": { "address": [{ "end": 41, "start": 40 }], "incoming_public_key": [{ "end": 46, "start": 44 }], "inputs": [{ "end": 40, "start": 0 }], "nullifier_public_key": [{ "end": 44, "start": 42 }], "outgoing_public_key": [{ "end": 48, "start": 46 }], "partial_address": [{ "end": 42, "start": 41 }], "tagging_public_key": [{ "end": 50, "start": 48 }] }, "parameters": [{ "name": "inputs", "type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "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 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "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" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "public_global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "transaction_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs" }, "visibility": "private" }, { "name": "address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, { "name": "partial_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress" }, "visibility": "private" }, { "name": "nullifier_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" }, "visibility": "private" }, { "name": "incoming_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" }, "visibility": "private" }, { "name": "outgoing_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" }, "visibility": "private" }, { "name": "tagging_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" }, "visibility": "private" }], "return_type": { "abi_type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "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 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest" } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash" } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "content", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } } }, { "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": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect" } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "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" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { "name": "prover_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "end_gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "transaction_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs" }, "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] }, "bytecode": "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", "debug_symbols": "7P3driTLkpwJvktdFwZupv98lcFgwJlmDwg0yEGTfUXUu7ef7ozIfVBrMUN9e1iIZNpV7ToID1NXdxd1k5Xyxf/4l//lP/1//o//3//7P/+X//W//rd/+Q//z//xL//bf/3//sf//p//6385/7//8S/H/2Pq/L/+5//2//+P/+Uf/8t/++//8X//7//yH45//Zf/9F/+l/P//tu//sv/+p//t//0L/9hlv3b/+tf/68jpH2Eto+w9hHePiLaR2T7iOoeYcfrR/zrv/vcOIb/+Og4ZDw/PWw+vn+8+fvnm79f3vz9+ubvtzd/v7/5++PN359v/v567/f7m59ff/Pz629+fv3Nz6//rftfMsePj57/OX9+vxyP74/3fn/8rftHajy/v1S++v7x5u+fb/5+efP365u/3978/f7m7483f3+++fvrvd+fb35+8836n2/W/3yz/ueb39/yze9v+eb3t3zz+1u++f0t3/z+Vm9+f6s3P79l730/qTe/X9V79VmO483fP978/fPN3y9v/n598/fbm7/f3/z98ebvzzd//5uf3/G3nt/z9fLHJ88Xwedn9fHd443fPd/43fLG79Y3fre98bv9jd8db/zufON31/u+e77xuZz61ncOmfbm73+z5s43a668+Z1J3vzOJG9+Z5I3vzPJm9+Z5M3vTPLmdyZ58zuTvPn5lTfqsr5Rl/WN70v6xvclfeP7kuobv/uN70v6xvclfeP7kr7xfUnf+Fz+vb9j//qd4+/9HfuF73+z5tqbNdfe/M7kb35n8je/M/mb35n8ze9M/uZ3Jn/zO5O/+Z3J3/z8+ht12d+oy/HG96V44/tSvPF9Kd74vvT3/t7+i+9+4/tSvPF9Kd74vhRvfC7/3t+Of/3OkW9+Z8o3a26+WXPzze9M+eZ3pnrzO1O9+Z2p3vzOVG9+Z6o3vzPVm9+Z6s3Pb71Rl+uNulzve1/S43jjd483fvd843fLG79b3/jd9sbv9jd+9/ueS/17fxP+5TuHjvnm73+v5urwN39/vPn7883f/953Jp3Hm79/vPn755u/X978/frm73/z8zvf/PzONz+/b/7bur75b+v65r+t65v/tq5v/tu6vvlv6/rmv62rdJOs+jf/Wm75eJ05/0Zw/FNF//7TOg758enzTSe/qj+Qqvl7f83uVmP1qGZ+Xc2AqmZCVSNQ1ShUNQZV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9L0+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/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/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+7Ht92ff6qu/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+11d9r6/6Xl/1vb7qe33V9/qq7/VV3+urvtdXfa+v+l5f9b2+6nt91ff6qu/1Vd/rq77XV22vT46213ceMvqHzP4h0j9E+4dY/xDvHxL9Q7J/SP/qj/7VH/2rP/pXf/Sv/uhf/dG/+qN/9Uf/6o/+1R/9qz/7V3/2r/7sX/3Zv/qzf/Vn/+rP/tWf/as/+1d/9q++9K++9K++9K++9K++9K++9K++9K++9K++9K++9K++9q++9q++9q++9q++9q++9q++9q++9q++9q++9q++9a++9a++9a++9a++9a++9a++9a++9a++9a++9a++96++96++96++96++96++96++96++96++96++969+9K9+9K9+9K9+9K9+9K9+9K9+9K9+9K9+9K9+9K9+9q9+9q9+9q9+9q9+9q9+9q9+9q9+9q9+9q9+9q9+9a9+9a9+9a9+9a9+9a9+9a9+9a9+9a9+9a9+3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rG32vb/S9vtH3+kbf6xt9r2/0vb7R9/pG3+sbfa9v9L2+0ff6Rt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65t9r2/2vb7Z9/pm3+ubfa9v9r2+2ff6Zt/rm32vb/a9vtn3+mbf65O+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/rk77XJ32vT/pen/S9Pul7fdL3+qTv9Unf65O+1yd9r0/6Xp/0vT7te33a9/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+rTv9Wnf69O+16d9r0/7Xp/2vT7te33a9/q07/Vp3+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/6Xp/1vT7re33W9/qs7/VZ3+uzvtdnfa/P+l6f9b0+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/q87/V53+vzvtfnfa/P+16f970+73t93vf6vO/1ed/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+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fn+8p4+6+3hLH7dvdk8ft292Tx/3fuaePu79zD193PuZV/r4ly8W/6qPuvcz9/Rx72fu6ePez9zTx72fuaePuvv4Qh/1eH6xHl/9fWb/VOlr92P8pY9f/V1h//roTX3c+5l7+rj3M/f0ce9nbunj/iXPm/q49zP39HHvZ+7p497P3NNH3X28pY97P3NPH/d+5p4+7v3MPX3c+5l7+rj3M7f0cf8O5E193PuZe/q49zP39HHvZ+7po+4+3tLHvZ+5p497P3NPH/d+5p4+7v3MPX3c+5lb+rh/B/KmPu79zD193PuZe/q49zP39FF3H2/p497P3NPHvZ+5p497P3NPH/d+5p4+7v3MLX3cv+96Ux/3fuaePu79zD193PuZe/qou4+39HHvZ+7p497P3NPHvZ+5p497P3NPH/d+5pY+7t8bvqmPX+9nrB6LTJ/xT318HDivHihXD9SrB9rVA/3qgXH1wLx6YF07ML75obsXDhxXD5xXD5SrB+rVA+3qgX71wLh6YF498OqdM67eOePqnTOu3jnj6p0zrt454+qdM67eOePqnTOu3jnj6p0zr9458+qdM6/eOfPqnTOv3jnz6p0zr9458+qdM6/eOfPqnSNX7xy5eufI1TtHrt45cvXOkat3jly9c+TqnSNX7xy5eufo1TtHr945evXO0at3jl69c/TqnaNX7xy9eufo1TtHr945dvXOsat3jl29c+zqnWNX7xy7eufY1TvHrt45dvXOsat3jl+9c/zqneNX7xy/euf41TvHr945fvXO8at3jl+9c/zqnRNX75y4eufE1Tsnrt45cfXOiat3Tly9c+LqnRNX75y4eufk1Tsnr945efXOyat3Tl69c/LqnZNX75y8eufk1Tsnr945dfXOueohx1UPOa56yHHVQ46rHnJc9ZDjqoccVz3kuOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86rHnJe9ZDzqoecVz3kvOoh51UPOa96yHnVQ86r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NueUnJxTcsJOyV//BHJO2Fn5SvGwE/OF4gV2br5SPOz0fKV42Bn6SvGwk/SV4mHn6SvFw07VV4qHna2vFM88YYV5wgrzhFXmCavME1aZJ6wyT9g7uBGfK555wirzhFXmCavME1aZJ6wxT1gUNsS14pknLAp34lrxzBMWhWlxrXjmCYvCy7hWPPOERWFxXCoehdxxrXjmCYtCBblWPPOERSGOXCueecKi0EyuFc88YVFIKdeKZ56wKBSWa8UzT1gUwsu14pknLAo95lrxzBMWhUxzrXjmCYtCvblWPPOERSHqXCueecKi0HquFc88YVFIQNeKZ56wKJSha8UzT1gUgtG14pknLC716JXimScsLgHpleKZJywuDemV4pknLC4Z6ZXimScsLiXpleKJJ2zhEpNeKZ54whYuPemV4oknbB3EE7ZweUqvFE88YQuXrfRK8cQTtnA5Sy8Uj0tbeqV45gmLS156pXjmCYtLYXqleOYJi0tkeqV45gmLS2d6pXjmCYtLanqleOYJi0tteqV45gmLS3B6pXjmCYtLc3qleOYJy8x0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpmJlOxcx0KmamUzEznYqZ6VTMTKdiZjoVM9OpiJlOcRAznc7ieSfsWTzvhD2L552wZ/G8E/YsnnfCnsXzTtizeN4JexbPO2HP4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pknLDHT6SyeecISM53O4pkn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Zy0zN+qsnnrWMnOjzuqpZy0zN+qsnnrWMnOjzuqpZy0zN+qsnnrWMnOjzuqpZy0zN+qsnnrWMnOjzuqpZy0zN+qsnnrWMnOjzuqpZy0zN+qsnnrWMnOjzuqZZ+2g5kYNam7UoOZGDWpu1DiYZ+2g5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRg1qbtSg5kYNam7UoOZGDWpu1KDmRk1qbtSk5kZNam7UpOZGzYN51k5qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpu1KTmRk1qbtSk5kZNam7UpOZGTWpulFBzo4SaGyXU3Cih5kbJwTxrhZobJdTcKKHmRgk1N0qouVFCzY0Sam6UUHOjhJobJdTcKKHmRgk1N0qouVFCzY0Sam6UUHOjhJobJdTcKKHmRgk1N0qouVFCzY0Sam6UUHOjhJobJdTcKKHm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W9xsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVcbOpiptNVdxsquJmUxU3m6q42VTFzaYqbjZVUbOpxkHNpjrLZ566Z/nMU/csn3nqnuUzT92zfOape5bPPHXP8pmn7lk+89Q9y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzaY6y+eeutRsqrN87qlLzab6x89ccpfPPXWp2VT/INhzl889danZVP+AUzGXP7jZVIObTTW42VSDm001DuqpO7jZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUg5tNNbjZVIObTTW42VSDm001uNlUk5tNNbnZVJObTTW52VTzoJ66k5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm001udlUk5tNNbnZVJObTTW52VSTm00l3Gwq4WZTCTebSrjZVHJQT13hZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUws2mEm42lXCzqYSbTSXcbCrhZlMJN5tKuNlUsp5NNUqe5dsvyk8Zjzry/BP0X75Zf56B0Z+B059B0J9B0p9BsZ/BelrV7WcwsM/A9XkGMb8+g0l/BkJ/BuAz+YUzAJ/JL5wB+Ex+4QzAZ/ILZ4A9k3U+Ppwq4+szwJ7JL5xBYs/kV84Aeya/cgbYM/mVM8Ceya+cAfZMfuUMsGeyHuPnGfzzPPjCAlF/fHpq/DQ2hsvP88We4PefL/a8v/983/x28Fyn1qzzbn7Vc52xaJ25aB1ZtI4uWscWreOL1olF6yzSg1qjB3oci9a5Qw9K7blO6NfrzEXryKJ1btCDOUY85ty5W/x6HVu0ji9aJxatk4vWqTvW0eff9P7pXerL967I8fh0pNUv3qXG+er1uJcz7Ku9gQ5HOodnVQFZVUJWdcddOP1nVVW/evt/4b66IzH/hqoGZFUTsiqBrEohqzLIqhyyqoCsKiGrgtR2gdR2gdR2gdR2gdR2gdR2gdR2gdR2gdR2gdR2gdR2hdR2hdR2hdR2hdR2hdR2hdR2hdR2hdR2hdR2hdR2g9R2g9R2g9R2g9R2g9R2g9R2g9R2W67tWkf9+LSW/urTVs9/FeLH/HkO/4hBPc8hf4NzKP5z8OM3OIfxG5zD/A3OQX6Dc9Df4BzsNzgH/w3O4TeY0/4bzGn/DeZ0/AZzOn6DOR2/wZyO32BO35G9vO8cnlVBTd5nVVCz9FkV1HR8VgU1755VQU2wR1UJNZOeVUFNmWdVUHPjWRXUJHhWBantCantCantCantCantCantBantBantBantBantBantBantBantBantBanthajtdiBqux2I2m4HorbbgajtdiBqux2I2m4HorbbgajtdiBqux2Q2j4gtX1Aavu4Rdv18en5z7TJr6qSZ1xd/C9sla9JLOPJD84hfz2DL9PD/kxAD5fj56d/klhsyPLzfRYlLv90vs+aFLAmA6zJAWsKwJoSsKbCq+mexPfNNQ3AmiZgTYA6PgF1fALq+ATU8Qmo4xNQxyegjgugjgugjgugjgugjgugjgugjgugjgugjgugjgugjiugjiugjiugjiugjiugjiugjiugjiugjiugjiugjhugjhugjhugjhugjhugjhugjhugjhugjhugjhugjjugjjugjjugjjugjjugjjugjjugjjugjjugjjugjgegjgegjgegjgegjgegjgegjgegjgegjgegjgegjiegjiegjiegjiegjiegjiegjiegjiegjiegjiegjhegjhegjhegjhegjhegjhegjhegjhegjhegjheejvuBp+N+4Om4H3g67geejvuBp+N+4Om4H3g67geejvuBp+N+AOr4ANTxAajjA1DHAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHM6YJ7TAfOcDpjndMA8pwPmOR0wz+mAeU4HzHMGYJ4zAPOcAZjnDMA8Zxx4Oh6Aec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmOQMwzxmAec4AzHMGYJ4zAPOcAZjnDMA8ZwDmORMwz5mAec4EzHMmYJ4zDzwdT8A8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4zAfOcCZjnTMA8ZwLmORMwz5mAec4EzHMmYJ4z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Uyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUyk3m0q52VTKzaZSbjaVcrOplJtNpdxsKuVmUxk3m8q42VTGzaYybjaVHdRT17jZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTGTebyrjZVMbNpjJuNpVxs6mMm01l3Gwq42ZTOTebyrnZVM7NpnJuNpUf1FPXudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlM5N5vKudlUzs2mcm42lXOzqZybTeXcbCrnZlMFN5squNlU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BPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwT6HNOoM85gT7nBPqcE+hzTqDPOYE+5wT6nBPoc06gzzmBPucE+pwL6HMuoM+5gD7nAvqc68Wb4wvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wL6nAvocy6gz7mAPucC+pwL6HMuoM+5gD7nAvqcC+hzLqDPuYA+5wb6nBvoc26gz7mBPud+8eb4BvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26gz7mBPucG+pwb6HNuoM+5gT7nBvqcG+hzbqDPuYE+5wb6nBvoc26g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y73rtty7ruXedS33rmu5d13Lvev61OfcW37uXddy77qWe9e13Luu5d51e+5dt+fedXvuXbfn3nV9io3uLT/3rttz77o9967bc++6PfeuO3LvuiP3rjty77oj967rUzl1b/m5d93c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVzN1NNXN3U83c3VQzdzfVyt1NtXJ3U63c3VQrdzfVeqXedVfubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6mWrm7qVbubqqVu5tq5e6m2rm7qXbubqqdu5tq5+6m2q/Uu+7O3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dzdVDt3N9XO3U21c3dT7dTdVOOVupvqWX7mXfdZfuZd91l+5l33WX7mXfdZfuZd91l+5l33WX7mXfdZfuZd91l+7l03dTfVs/zcu27qbqpn+bl33dTdVM/yc++6qbupnuXn3nVTd1M9y8+966bupnqWn3vXTd1N9Sw/966bupvqWX7uXTd1N9Wz/Ny7bupuqmf5uXfd1N1Uz/Jz77qpu6me5efedVN3Uz3Lz73rpu6mepafe9dN3U31LD/3rpu6m+pZfu5dN3U31bP83Ltu6m6qZ/m5d93U3VTP8nPvuqm7qZ7l5951U3dTPcvPveum7qZ6lp97103dTfUsP/eum7qb6ll+7l03dTfVs/zcu27qbqpn+bl33dTdVM/yc++6qbupnuXn3nVTd1M9y8+966bupnqWn3vXTd1N9Sw/966bupvqWX7uXTd1N9Wz/Ny7bupuqmf5uXfd1N1Uz/Jz77qpu6me5efedVN3Uz3Lz73rpu6mepafe9dN3U31LD/3rpu6m+pZfu5dN3U31bP83Ltu6m6qZ/m5d93U3VTP8nPvuqm7qZ7l5951U3dTPctPveuW3N1UJXc3VcndTVVyd1OVV+pdt+Tupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qkrubquTupiq5u6lK7m6qmrubqubupqq5u6lq7m6q+kq969bc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1NVXN3U9Xc3VQ1dzdVzd1N1XJ3U7Xc3VQtdzdVy91N1V6pd92Wu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qVrubqqWu5uq5e6marm7qSx3N5Xl7qay3N1Ulrubyl6pd13L3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U1nubirL3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U1nubirL3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U1nubirL3U1lubupLHc3leXuprLc3VSWu5vKcndTWe5uKsvdTWW5u6ksdzeV5e6mstzdVJa7m8pyd1NZ7m4qy91NZbm7qSx3N5Xl7qay3N1UlrubynJ3U/Xc3VQ9dzdVz91N1XN3U/VX6l235+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqeu5uq5+6m6rm7qXrubqqRu5tq5O6mGrm7qUbubqrxSr3rjtzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3N9XI3U01cndTjdzdVCN3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n3MCfc4J9DnnizfHJ9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OCfQ5J9DnnECfcwJ9zgn0OSfQ55xAn3MCfc4J9Dkn0OecQJ9zAn3OBfQ5F9DnXECfcwF9zvXizfEF9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MBfc4F9DkX0OdcQJ9zAX3OBfQ5F9DnXECfcwF9zgX0ORfQ51xAn3MDfc4N9Dk30OfcQJ9zv3hzfAN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9zg30OTfQ59xAn3MDfc4N9Dk30OfcQJ9zA33ODfQ5N9Dn3ECfcwN9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" }, { "name": "rotate_nullifier_public_key", "is_unconstrained": true, "custom_attributes": ["aztec(public)"], "abi": { "error_types": {}, "param_witnesses": { "address": [{ "end": 41, "start": 40 }], "inputs": [{ "end": 40, "start": 0 }], "new_nullifier_public_key": [{ "end": 43, "start": 41 }], "nonce": [{ "end": 44, "start": 43 }] }, "parameters": [{ "name": "inputs", "type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "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 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "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" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "public_global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "transaction_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "aztec::context::inputs::public_context_inputs::PublicContextInputs" }, "visibility": "private" }, { "name": "address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" }, "visibility": "private" }, { "name": "new_nullifier_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }], "return_type": { "abi_type": { "fields": [{ "name": "call_context", "type": { "fields": [{ "name": "msg_sender", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "storage_contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "function_selector", "type": { "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector" } }, { "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 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::call_context::CallContext" } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "returns_hash", "type": { "kind": "field" } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "nullifier_non_existent_read_requests", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::read_request::ReadRequest" } } }, { "name": "contract_storage_update_requests", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "new_value", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest" } } }, { "name": "contract_storage_reads", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "storage_slot", "type": { "kind": "field" } }, { "name": "current_value", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "field" } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::note_hash::NoteHash" } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::nullifier::Nullifier" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "fields": [{ "name": "recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "content", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message" } } }, { "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": { "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect" } } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "fields": [{ "name": "last_archive", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "content_commitment", "type": { "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" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::content_commitment::ContentCommitment" } }, { "name": "state", "type": { "fields": [{ "name": "l1_to_l2_message_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "partial", "type": { "fields": [{ "name": "note_hash_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "nullifier_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }, { "name": "public_data_tree", "type": { "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::state_reference::StateReference" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::header::Header" } }, { "name": "global_variables", "type": { "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": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::eth_address::EthAddress" } }, { "name": "fee_recipient", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "gas_fees", "type": { "fields": [{ "name": "fee_per_da_gas", "type": { "kind": "field" } }, { "name": "fee_per_l2_gas", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables" } }, { "name": "prover_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "revert_code", "type": { "kind": "integer", "sign": "unsigned", "width": 8 } }, { "name": "start_gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "end_gas_left", "type": { "fields": [{ "name": "da_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "l2_gas", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::gas::Gas" } }, { "name": "transaction_fee", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs" }, "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] }, "bytecode": "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", "debug_symbols": "3P3RjmxLsl2J/ct9JoRwM3dzc/6KIAiUmi0QaJCCSD0R/Pdeu3Ey9ykwixkWlWF7zPXUtxuZucw7Yk3bNcvHqP/+b//bf/x//f//P//P//Sf//f/8l//7d//3//7v/0f/+X//R/+23/6L//5+n/77//2+L+Zx//1//m//n//w3/+9f/lv/63//D/+2//9u8f/+7f/uN//t+u/+f/+Hf/9r//p//jP/7bv7ez/sf/49/9X7+xy7+R5d841d+Yj/JvjPJvWPk3vPwb8/nf+Hf/08+Nx4i/fnQ8fHz+9Fj28ffXm/9+vPnv7zf//Xzz3z/v/fvr8ea/P9789+3Nf9/f/Pff/P6uN7+/683v73rz+xv/0vffM8dfP3r9n/b77/vj4++PN//9f+n742d8/v0z/au/v9789+PNf3+/+e/nm//+ee/f3483//3x5r9vb/77/ua//+b3d/9r7++O+fH39/kqf3a8+e/vN//9fPPfP+/9+/l4898fb/779ua/72/++/PNf//N72+e9/775Lz531fnzfl83pzP583/vjpv/vfVefO/r86b/3113vvvK3883vz3x5v/vr357/ub//6/9P5e/zz46yevRf75s/Pjb683/u14499+77+p/JFv/vvv/TeVj8eb//5489+3N/99f/Pfn2/+++vNfz/e/Pff/P6ON7+/483vr735/bU3v7/25vfX3vz+2pvfX3vz+2tvfn/tze+vvfn9tTe/v/7m99ff/P76m99ff/P7629+f/3N76+/+f31N7+//ub319/8/s43v7/zze/vfPP7O9/8/v5rd0J85cd/ePQYj3/4+//zT8/rv1f966fnGPnVNAs1TXZOs87HNPb1NIc0zb92F+THpxmoaQw1jaOm6cwbW/NzmrW+mmahpgnUNBs1TaKmOaRp4oGaZqCmMdQ0jpoGlcWByuJAZXGgsjhQWRyoLN6oLN6oLN6oLN6oLN6oLN6oLN6oLN6oLN6oLN6oLE5UFicqixOVxYnK4kRlcaKyOFFZnKgsTlQWJyqLDyqLDyqLDyqLDyqLDyqLDyqLDyqLDyqLDyqLDymL54OUxfNByuL5IGXxfJCyeD5IWTwfpCyeD1IWzwcpi+eDlMXzgcrigcrigcrigcrigcrigcrigcrigcrigcrigcrigcpiQ2WxobLYUFlsqCw2VBYbKosNlcWGymJDZbGhsthRWeyoLHZUFjsqix2VxY7KYkdlsaOy2FFZ7KgsnqgsnqgsnqgsnqgsnqgsnqgsnqgsnqgsnqgsnqgsXqgsXqgsXqgsXqgsRnF3E8XdTRR3N1Hc3URxdxPF3U0UdzdR3N1EcXcTxd1NFHc3UdzdRHF3E8XdTRR3N1Hc3URxdxPF3U0UdzdR3N1EcXcTxd1NFHc3UdzdRHF3E8XdTRR3N1Hc3URxdxPF3U0UdzdR3N1EcXcTxd1NFHc3UdzdRHF3E8XdTRR3N1Hc3URxdxPF3U0UdzdR3N1EcXcTxd0tFHe3UNzdQnF3C8XdrQcpixeKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u4Xi7haKu1so7m6huLuF4u4WirtbKO5uobi7heLuFoq7WyjubqG4u0Bxd4Hi7gLF3QWKu4sHKYsDxd0FirsLFHcXKO4uUNxdoLi7QHF3geLuAsXdBYq7CxR3FyjuLlDcXaC4u0Bxd4Hi7gLF3QWKuwsUdxet3J3b+JjGzb6aZqGmCdQ0GzVNoqY5pGlaubvvpxmoaQw1jaOmQWWxo7LYUVnsqCx2VBY7KosnKosnKosnKosnKosnKosnKosnKosnKosnKosnKosXKosXKosXKosXKosXKosXKosXKosXKosXKosXKosDlcWByuJAZXGgsjhQWRyoLA5UFgcqiwOVxYHK4o3K4o3K4o3K4o3K4o3K4o3K4o3K4o3K4o3K4o3K4kRlcaKyOFFZnKgsTlQWJyqLE5XFicriRGVxorL4oLL4oLL4oLL4oLL4oLL4oLL4oLL4oLL4oLL4kLJ4P0hZvB+kLN4PUhbvBymL94OUxftByuL9IGXxfpCyeD9IWbwfqCweqCweqCweqCweqCweqCweqCweqCweqCweqCweqCw2VBYbKosNlcWGymIUd7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd1tFHe3UdzdRnF3G8XdbRR3t1Hc3UZxdxvF3W0Ud7dR3N1GcXcbxd0lirtLFHeXKO4uUdxdPkhZnCjuLlHcXaK4u0Rxd4ni7hLF3SWKu0sUd5co7i5R3F2iuLtEcXeJ4u4Sxd0lirtLFHeXKO4uUdxdori7RHF3ieLuEsXdJYq7SxR3lyjuLlHcXaK4u0Rxd4ni7hLF3SWKu0sUd5co7i5R3F2iuLtEcXeJ4u4Sxd0lirtLFHeXKO4uUdxdori7RHF3ieLuEsXdJYq7SxR3lyjuLlHcXaK4u0Rxd4ni7hLF3SWKu0sUd5co7i5R3F2iuLtEcXeJ4u4Sxd0lirtLFHeXKO4uUdxdori7RHF3ieLuEsXdJYq7SxR3lyjuLlHcXaK4u0Rxd4ni7hLF3SWKu0sUd5co7i5R3F2iuLtEcXeJ4u4Sxd0lirtLFHeXvdzd509f/+f5apqJmmahpgnUNJ1ZPD0+ppm+v5omUdMc0DSnlbv7fpqBmqYzb+Y6n9PE+WqaznfquH1Mc9y/mqbznTr74w+vx+Px1TSHNE0rI/T9NI6aZqKmWahpAjXNRk2DypuByptWRuj7aQZqGlQWdzJC67E+dvga43z30yc+/rNgPGz9nsTnx+xTePYlPHswZv9rmt05zVif79P8cppETXNI03TSSk9MM1DTGGoaR00zUdMs1DSBmgaVxY7KYkdl8URl8URl8URl8URl8URl8URl8URl8URl8URl8URl8UJl8UJl8UJl8UJl8UJl8UJl8UJl8UJl8UJl8UJlcaCyOFDpF6j0C1T6BSr9ApV+nXzQGn4+++Lzr3fdnTTRj89+dGdvpXG+venSSuN8P81ETbNQ0wRqmo2apvPGwvKPrTDXtK+mOaRpWmmc76cZqGkMNY2jppmoaRZqmkBNs1HTtN4Az/k5jX85zSFN00rjfD/NQE1jqGkcNc1ETbNQ0wRqmo2aBpXFh5TF4/EghfE1DimNr3FIcXyNQ8rjaxxSIF/jkBL5GocUydc4pEy+xiGF8jUOK5UHK5UHK5UHK5UHK5UHK5UHK5UHK5UHK5UHK5UHK5WNlcrGSmVjpXLr/zrWWp9k/8r15TiTNc5ijROscTZrnGSN05nK8fj0QsSaX43T+j+S9cQ4zhpnssZZrHGCNc5mjZOscTpzZ4+PPzz33t/89Lf3ncaj9X8+6seHH8rDG2P4j3Fa98P2z3EeX48zWeMs1jjBGmezxknWOAc1Tuv/SNUT4wzWOMYah5XKi5XKi5XKi5XKi5XKi5XKi5XKwUrlYKVysFI5WKkcrFQOVioHK5WDlcrBSuVgpfJmpfJmpfJmpfJmpfJmpfJmpfJmpXIrMZfjk5hLe3w5TrLGOahxWqG5J8YZrHGMNY6zxpmscRZrnGCNw0rlZKVyslL5sFL5sFL5sFL5sFL5sFL5sFL5sFL5sFL5sFL5oFJ5PFCpPB6oVB4PVCqPByqVr//mmjUOKpXHA5XK44FK5fFApfJ4sFJ5sFJ5sFJ5sFJ5sFJ5sFJ5sFJ5sFJ5sFJ5sFJ5sFLZWKlsrFQ2ViobK5WNlcrGSmVjpbKxUtlYqWysVHZWKjsrlZ2Vys5KZWelsrNS2Vmp7KxUdlYqOyuVJyuVJyuVJyuVJyuVJyuVJyuVJyuVJyuVJyuVJyuVFyuVFyuVFyuVFyuVFyuVFyuVFyuVFyuVFyuVFyuVg5XKwUrlYKVysFI5WKkcrFQOVioHK5WDlcrBSuXNSuXNSuXNSuXNSuXNSuXNSuXNSmUW2zdYbN9gsX2DxfYNFts3WGzfYLF9g8X2DRbbN1hs32CxfYPF9g0W2zdYbN9gsX2DxfYNFts3WGzfYLF9g8X2DRbbN1hs32CxfcZi+4zF9hmL7TMW22cPVCobi+0zFttnLLbPWGyfsdg+Y7F9xmL7jMX2GYvtMxbbZyy2z1hsn7HYPmOxfcZi+4zF9hmL7TMW22csts9YbJ+x2D5jsX3GYvuMxfYZi+0zFttnLLbPWGyfsdg+Y7F9xmL7jMX2GYvtMxbbZyy2z1hsn7HYPmOxfcZi+4zF9hmL7TMW22csts9YbJ+x2D5jsX3GYvuMxfYZi+0zFttnLLbPWGyfsdg+Y7F9xmL7jMX2GYvtMxbbZyy2z1hsn7HYPmOxfcZi+4zF9hmL7TMW22csts9YbJ+x2D5jsX3GYvuMxfYZi+0zFttnLLbPWGyfsdg+Y7F9xmL7jMX2GYvtMxbbZyy2z1hsn7HYPmOxfcZi+4zF9hmL7TMW22csts9YbJ+x2D5jsX3GYvucxfY5i+1zFtvnLLbPH6hUdhbb5yy2z1lsn7PYPmexfc5i+5zF9jmL7XMW2+csts9ZbJ+z2D5nsX3OYvucxfY5i+1zFtvnLLbPWWyfs9g+Z7F9zmL7nMX2OYvtcxbb5yy2z1lsn7PYPmexfc5i+5zF9jmL7XMW2+csts9ZbJ+z2D5nsX3OYvucxfY5i+3zXrYv/HOcXF+OE6xxNmuczlQ+bh/jHPcvxzmocVphuifGMdY4zhpnssZZqHEqBNLHr1j9V7z+K7P+K6v+K1H/lV3/laz/yin/SoWi+PiV+qe/65/+rn/6u/7p7/qnv+uf/q5/+rv+6e/6p5/1Tz/rn37WP/2sf/pZ//Sz/uln/dPP+qef9U8/65/+qX/6p/7pn/qnf+qf/ql/+qf+6Z/6p3/qn/6pf/qn/OnPx6P+K6P+K1b/Fa//yqz/yqr/StR/Zdd/Jeu/Uv/0R/3TH/VPf9Q//VH/9Ef90x/1T3/UP/1R//RH/dMf9U/f6p++1T99q3/6Vv/0rf7pW/3Tt/qnb/VP3+qfvtU/fa9/+l7/9L3+6Xv90/f6p+/1T9/rn77XP32vf/pe//Rn/dOf9U9/1j/9Wf/0Z/3Tn/VPf9Y//Vn/9Gf905/1T3/VP/1V//RX/dNf9U9/1T/9Vf/0V/3TX/VPf9U//VX/9KP+6de7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/riX/tfGsmz//rJM8bnz679xY/a/vhRf/z+s+6fgyzKIEEZZFMGScoghzHI/tf+V0R+cpBBGcQogzhlEEiy7gckWfcDkqz7AUnW/YAk635QknVQknVQknVQknVQknVQknVQknVQknVQknVQknVQktUoyWqUZDVKsholWY2SrEZJVqMkq1GS1SjJapRkdUqyOiVZnZKsTklWpySrU5LVKcnqlGR1SrI6JVknJVknJVknJVknJVknJVknJVknJVknJVknJVknJVkXJVkXJVkXJVkXJVkXJVkXJVkXJVkXJVkXJVkXJVmDkqxBSdagJGtQkjUoyRqUZA1KsgYlWYOSrEFJ1k1J1k1J1k1J1k1J1k1J1k1J1k1J1k1J1k1J1k1J1qQka1KSNSnJmpRkTUqyJiVZk5KsSUnWpCRrUpL1UJL1UJL1UJL1UJKVwmBtCoO1KQzWpjBYm8JgbQqDlRQGKykMVlIYrKQwWPmAJGtSGKykMFhJYbCSwmAlhcFKCoOVFAYrKQxWUhispDBYSWGwksJgJYXBSgqDlRQGKykMVlIYrKQwWElhsJLCYCWFwUoKg5UUBispDFZSGKykMFhJYbCSwmAlhcFKCoOVFAYrKQxWUhispDBYSWGwksJgJYXBSgqDlRQGKykMVlIYrKQwWElhsJLCYCWFwUoKg5UUBispDFZSGKykMFhJYbCSwmAlhcFKCoOVFAYrKQxWUhispDBYSWGwksJgJYXBSgqDlRQGKykMVlIYrKQwWElhsJLCYCWFwUoKg5UUBispDFZSGKykMFhJYbCSwmAlhcFKCoOVFAYrKQxWUhispDBYSWGwksJgJYXBSgqDlRQGKykMVlIYrKQwWElhsJLCYCWFwUoKg5UUButQGKxDYbAOhcE6FAbrPCDJeigM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYh8JgHQqDdSgM1qEwWIfCYB0Kg3UoDNahMFiHwmAdCoN1KAzWoTBYB8Jg2QPCYF2DMJL1GoSRrNcgjGS9BmEk6zUII1mvQRjJeg3CSNZrEEayXoNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CSFcJgXYNQkhXCYF2DUJIVwmBdg1CS9V9jsM7Ij0Hc/sVBnDLIpAyyKIMEZZBNGSQpgxzIIBUG6+NXRv1XrP4rXv+VWf+VVf+VqP/Krv9K1n/llH8l659+1j/9rH/6Wf/0s/7pZ/3Tz/qnn/VPP+ufftY//VP/9E/90z/1T//UP/1T//RP/dM/9U//1D/9U//0T/nTH49H/VdG/Ves/ite/5VZ/5VV/5Wo/8qu/0rWf6X+6Y/6pz/qn/6of/qj/umP+qc/6p/+qH/6o/7pj/qnP+qfvtU/fat/+lb/9K3+6Vv907f6p2/1T9/qn77VP32rf/pe//S9/ul7/dP3+qfv9U/f65++1z99r3/6Xv/0vf7pz/qnP+uf/qx/+rP+6c/6pz/rn/6sf/qz/unP+qc/65/+qn/6q/7pr/qnv+qf/qp/+qv+6a/6p7/qn/6qf/qr/ulH/dOP+qcf9U8/6p9+1D/9qH/6Uf/0o/7pR/3Tj/qnX+/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5veub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la961v1rm/Vu75V7/pWvetb9a5v1bu+Ve/6Vr3rW/Wub9W7vlXv+la964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu76od31R7/qi3vVFveuLetcX9a4v6l1f1Lu+qHd9Ue/6ot71Rb3ri3rXF/WuL+pdX9S7vqh3fVHv+qLe9UW964t61xf1ri/qXV/Uu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+Xe/6dr3r2/Wub9e7vl3v+na969v1rm/Xu75d7/p2vevb9a5v17u+rHd9We/6st71Zb3ry3rXl/WuL+tdX9a7vqx3fVnv+rLe9WW968t615f1ri/rXV/Wu76sd31Z7/qy3vVlvevLeteX9a4v611f1ru+rHd9We/6st71Zb3ry3rXl/WuL+tdX9a7vqx3fVnv+rLe9WW968t615f1ri/rXV/Wu76sd31Z7/qy3vVlvevLeteX9a4v611f1ru+rHd9We/6st71Zb3ry3rXl/WuL+tdX9a7vqx3fVnv+rLe9WW968t615f1ri/rXV/Wu76sd31Z7/qy3vVlvevLeteX9a4v611f1ru+rHd9We/6st71Zb3ry3rXl/WuL+tdX9a7vqx3fVnv+rLe9WW968t615f1ri/rXV/Wu76sd31Z7/qy3vVlvevLeteX9a4v611f1ru+rHd9We/6st71Zb3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k696zv1ru/Uu75T7/pOves79a7v1Lu+U+/6Tr3rO/Wu79S7vlPv+k656/NHueu7fmXUf8Xqv+L1X5n1X1n1X4n6r+z6r2T9V+qf/qh/+qP+6Y/6pz/qn/6of/qj/umP+qc/6p/+qH/6o/7pW/3Tt/qnb/VP3+qfvtU/fat/+lb/9K3+6Vv907f6p+/1T9/rn77XP32vf/pe//S9/ul7/dP3+qfv9U/f65/+rH/6s/7pz/qnP+uf/qx/+rP+6c/6pz/rn/6sf/qz/umv+qe/6p/+qn/6q/7pr/qnv+qf/qp/+qv+6a/6p7/qn37UP/2of/pR//Sj/ulH/dOP+qcf9U8/6p9+1D/9qH/6u/7p7/qnv+uf/q5/+rv+6e/6p7/rn/6uf/q7/unv+qef9U8/659+1j/9rH/6Wf/0s/7pZ/3Tz/qnn/VPP+uf/ql/+qf+6Z/6p3/qn/6pf/qn/umf+qd/6p/+qX/69a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wub9S7vlHv+ka96xv1rm/Uu75R7/pGvesb9a5v1Lu+Ue/6Rr3rG/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+qze9Vm967N612f1rs/qXZ/Vuz6rd31W7/qs3vVZveuzetdn9a7P6l2f1bs+q3d9Vu/6rN71Wb3rs3rXZ/Wuz+pdn9W7Pqt3fVbv+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rs/rXZ/Xuz6vd31e7/q83vV5vevzetfn9a7P612f17s+r3d9Xu/6vN71eb3r83rX5/Wuz+tdn9e7Pq93fV7v+rze9Xm96/N61+f1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub9a5v1ru+We/6Zr3rm/Wub9a7vlnv+ma965v1rm/Wu75Z7/pmveub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KzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stNpKzudtrLTaSs7nbay02krO522stMplZ1Oqex0SmWnUyo7nfIhvGFT2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKSlOp7/GoViaPsaBbMGPcSB77WMcyKb6GAeyez7GgWyTj3Eg++FjHEjif4wDyfCPcVCpfChmn49xUKl8KPadj3FQqXweqFQ+FOfNxzioVD4UL83HOKhUPhR3zF/jUGwwH+OwUplibPkYh5XKFKvKxzisVKaYTz7GYaUyxU7yMQ4rlSkGkY9xWKlMsXx8jMNKZYqJ42McVipTbBkf47w5lT8ekz2POS2Pebf94eMxo+cx1vMY73nM7HnM6nlM9DymJwW8JwW8JwVmTwrMnhSYPSkwe1Jg9qTA7EmB2ZMCsycFZk8KzJ4UWD0psHpSYPWkwOpJgdWTAqsnBVZPCqyeFFg9KbB6UiB6UiB6UiB6UiB6UiB6UqDOjn38Yrz6i/vVX8xXf/G8+It1TufjF8erv2iv/qK/+ovz1V989ZuzX/3m7Fe/OfvVb85+9ZuTr35z8tVvTr76zclXvzn56jcnX/3m5KvfnHz1m5OvfnPy1W/O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jS+8cn+NL7xzf40vvHR/ja+9dZUVUr/G1966yhKpX+Nrb11ljdSv8bW3rrJI6tf42ltXWSX1a3ztrassk/o1vvbWVdZJ/Rpfe+sqC6V+ja+9dZWVUr/G1966ylKpX+Nrb11lrdSv8bW3rrJY6tf42ltXWS31a3ztrassl/o1vvbWVdZL/Rpfe+sqC6Z+ja+9dZUVU7/G1966ypKpX+Nrb11lzdSv8bW3rrJo6tf42ltXWTX1a3ztrassm/o1vvbWVdZN/Rpfe+sqC6d+ja+9dZWVU7/G1966ytKpX+Nrb11l7dSv8bW3rrJ46tf42ltXWT31a3ztrassn/o1vvbWVdZP/Rpfe+sqC6h+ja+9dZUVVL/G1966yhKqX+Nrb11lDdWv8bW3rrKI6tf42ltXWUX1a3ztrasso/o1vvbWVdZR/Rpfe+sqC6l+ja+9dZWVVL/G1966ylKqX+Nrb11lLdWv8bW3rrKY6tf42ltXWU31a3zprTu03VRD2001tN1UQ9tNNR7SW3dou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qYa2m2pou6mGtptqaLuphrabami7qUzbTWXabirTdlOZtpvKHtJb17TdVKbtpjJtN5Vpu6lM201l2m4q03ZTmbabyrTdVKbtpjJtN5Vpu6lM201l2m4q03ZTWb+b6uolP8df34yfPuKvH063vx12zN8nGPInMPkTuPwJpvwJlvwJQv4Em32CmJ8n2Pb1CVL+BEf9BA7fyU+cAL6TnzgBfCc/cQL4Tn7iBOydPO3jh3P6+PoE7J38zAnYO/mZE7B38jMnYO/k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IbN9IbN9IbN9IbM9kNkeyGwPZLYHMtsDme2BzPZAZnsgsz2Q2R7IbN/IbN/IbN/IbN/IbN/IbN/IbN/IbN/IbN/IbN/IbE9kticy2xOZ7YnM9kRmeyKzPZHZnshsT2S2JzLbDzLbDzLbDzLbDzLbDzLbDzLbDzLbDzLbDzLbWZT2X1MFi7v+nIqY7cFioz+nImZ7PIjZHiwi+XMqYrYHixr+nIqY7cEiez+mYrG6n1Mhs53F035Ohcx2FvP6ORUy25FcaiC51EByqYHkUgPJpQaSSw0klxpILjWQXGogudRAcqmB5FIDyaUGkksNJJcaSC41kFxqILnUQHKpgeRSA8mlBpJLDSSXGkguNZBcaiC51EByqYHkUgPJpQaSSw0klxpILjWQXGr8DJca9nuq9c1U9siPP+1/O4HZFz/r++MPz/H7f0X57M/xfwZg/XPjD+3xTXt81x5/ao+/tMcP7fG39vipPb721g3trRvaWze0t25ob92fwZ//3PjaWze0t25ob93Q3rqhvXW39tbd2lt3a2/drb11fwZM/3Pja2/drb11t/bW3dpbd2tv3dTeuqm9dVN766b21v0ZZcCfG19766b21k3trZvaWze1t+7R3rpHe+se7a17tLfuz8gc/tz42lv3aG/do711j/bWPdJbdz+kt+5+SG/d/ZDeuvshvXX3Q3rr7of01t0P6a27H9Jbdz+kt+5+aG/dob11h/bWHdpbd2hv3Z8RoPy58bW37tDeukN76w7trTu0t65pb13T3rqmvXVNe+v+jJrmz42vvXVNe+ua9tY17a1r2lvXtbeua29d1966rr11f0Ya9OfG1966rr11XXvruvbWde2tO7W37tTeulN7607trfszOqc/N7721p3aW3dqb92pvXW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1UW9tNtbXdVFvbTbW13VRb2021td1Uqe2mSm03VWq7qVLbTZUP6a2b2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6lS202V2m6q1HZTpbabKrXdVKntpkptN1Vqu6mOtpvqaLupjrab6mi7qc5DeusebTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1tN9XRdlMdbTfV0XZTHW031dF2Ux1pN5U9pN1U1/jKW/caX3nrXuMrb91rfOWte42vvHWv8ZW37jW+8ta9xlfeutf42ltX2k11ja+9daXdVNf42ltX2k11ja+9daXdVNf42ltX2k11ja+9daXdVL9m0x5fe+tKu6mu2bS3rrSb6ppNe+tKu6mu2bS3rrSbyh7SbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2musbX3rrSbqprfO2tK+2muv6U9taVdlNdf0p760q7qa4/pb11pd1U15/S3rrSbqrrT2lvXWk31TW+9taVdlNd42tvXWk31TW+9taVdlNd42tvXWk31TW+9NYd2m6qoe2mGtpuqqHtphoP6a07tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VRD2001tN1UQ9tNNbTdVEPbTTW03VSm7aYybTeVabupTNtNZQ/prWvabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qUzbTWXabirTdlOZtpvKtN1Upu2mMm03lWm7qVzbTeXabirXdlO5tpvKH9Jb17XdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTubabyrXdVK7tpnJtN5Vru6lc203l2m4q13ZTTW031dR2U01tN9XUdlPNh/TWndpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qqe2mmtpuqqntpprabqqp7aaa2m6qpe2mWtpuqqXtplrabqr1kN66S9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021tN1US9tNtbTdVEvbTbW03VRL2021+t1U4/jn+Oub8dNH/PXD6fa3w475+wRL/gQhf4Itf4KUP8ERP0H026p+/ASDfYKYnyfY9vUJTP4ELn8C+E5+4gTwnfzECeA7+YkTwHfyEydg7+RpHz+c08fXJ2Dv5CdOMNg7+ZkTsHfyMydg7+RnTsDeyc+cgL2TnzkBeyfPx/h9gn/cB19UIDM+fvrX/xLW758O/31e9gb/+fOy9/3Pn/fN/zr4fM7pec67/VWfzxlNz7Gm53jTc2bTc1bTc6LpObvpOU15YE154E158CMKnDPX53P2/Po51vQcb3rOD+SBjbE/fnr4/vo5q+k50fSc3fScbHrO+YnnzM//Tu8f/i315b+7do6Pn965zjf/lhrXP70+vsu515f/2WAG6QyfU23kVImc6ie+hRa/pzrnu3/9P/G9+gli/g1TDeRUhpzKkVNN5FQLOVUgp9rIqRI5FTLbA5ntgcz2QGZ7ILM9kNkeyGwPZLYHMtsDme2BzPaNzPaNzPaNzPaNzPaNzPaNzPaNzPaNzPaNzPaNzPZEZnsisz2R2Z7IbE9kticy2xOZ7dme7fM8zl8/Pc/87qfX+bwVEg/7fYZfGNTnGfIGZzj6ZziPG5xh3OAMdoMz+A3OMG9whnWDM8QNznCDPX1usKeP/p7eD/09vR/6e3o/9Pf0fujv6f1A7enPqVCb93Mq1C79nAq1HT+nQu27z6lQG+xjqoHaSZ9TobbM51SovfE5FWoTfE6FzPaBzPaBzPaBzPaBzPaBzHZDZrshs92Q2W7IbDdkthsy2w2Z7YbMdkNmuyGz3ZHZ7shsd2S2OzLbHZntjsx2R2a7I7PdkdnuyGyfyGyfyGyfP5Lt88M2af9om/xqKv/E1T3+5lb52sQyPv3BOfzvJ/iSHo5PAnqEP37/9G8Ty57eft7PoTz8H877OdMEzrSAMwVwpg2cKYEzHd5MP0N8//BMAziTAWcC5vgC5vgC5vgC5vgC5vgC5vgC5ngAczyAOR7AHA9gjgcwxwOY4wHM8QDmeABzPIA5voE5voE5voE5voE5voE5voE5voE5voE5voE5voE5nsAcT2COJzDHE5jjCczxBOZ4AnM8gTmewBxPYI4fYI4fYI4fYI4fYI4fYI4fYI4fYI4fYI4fYI4fXo7ng5fj+eDleD54OZ4PXo7ng5fj+eDleD54OZ4PXo7ng5fj+QDm+ADm+ADm+ADm+ADm+ADm+ADm+ADm+ADm+ADm+ADmuAFz3IA5bsAcN2COGzDHDZjjBsxxA+a4AXPcgDnuwBx3YI47MMcdmOMOzHEH5rgDc9yBOe7AHHdgjk9gjk9gjk9gjgN5zgTynAnkORPIcyaQ50wgz5lAnjOBPGcCec4E8pwJ5DkTyHMmkOdMIM+ZQJ4zgTxnAnnOBPKcCeQ5E8hzJpDnTCDPmUCeM4E8ZwJ5zgTynAnkORPIcyaQ50wgz5lAnjOBPGcCec4E8pwJ5DkTyHMmkOdMIM+ZQJ4zgTxnAnnOBPKcCeQ5E8hzJpDnTCDPmUCeM4E8ZwJ5zgTynAnkORPIcyaQ50wgz5lAnjOBPGcCec4D5DkPkOc8QJ7zAHnO8+Dl+AHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHiDPeYA85wHynAfIcx4gz3mAPOcB8pwHyHMeIM95gDznAfKcB8hzHh7P6Q8ez3nNhMvxayZcjl8z4XL8mgmX49dMuBy/ZsLl+DUTLsevmXA5fs0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec0EzHEez3nNBMxxHs95zQTMcR7Pec3Ey/EB5DkHkOccQJ5zAHnO8eDl+ADynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPOYA85wDynAPIcw4gzzmAPOcA8pwDyHMOIM85gDznAPKcA8hzDiDPaUCe04A8pwF5TgPynPbg5bgBeU4D8pwG5DkNyHMakOc0IM9pQJ7TgDynAXlOA/KcBuQ5DchzGpDnNCDPaUCe04A8pwF5TgPynAbkOQ3IcxqQ5zQgz2lAntOAPKcBeU4D8pwG5DkNyHMakOc0IM9pQJ7TgDynAXlOA/KcBuQ5DchzGpDnNCDPaUCe04A8pwF5TgPynAbkOQ3IcxqQ5zQgz2lAntOAPKcBeU4D8pwG5DkNyHMakOc0IM9pQJ7TgDynAXlOA/KcBuQ5DchzGpDnNCDPaUCe04A8pwF5TgPynAbkOQ3IcxqQ5zQgz2lAntOAPKcBeU4D8pwG5DkNyHMakOc0IM9pQJ7TgDynAXlOA/KcBuQ5DchzGpDnNCDPaUCe04A8pwF5TgPynAbkOQ3IcxqQ5zQgz2lAntOBPKcDeU4H8pwO5Dn9wctxB/KcDuQ5HchzOpDndCDP6UCe04E8pwN5TgfynA7kOR3IczqQ53Qgz+lAntOBPKcDeU4H8pwO5DkdyHM6kOd0IM/pQJ7TgTynA3lOB/KcDuQ5HchzOpDndCDP6UCe04E8pwN5TgfynA7kOR3IczqQ53Qgz+lAntOBPKcDeU4H8pwO5DkdyHM6kOd0IM/pQJ7TgTynA3lOB/KcDuQ5HchzOpDndCDP6UCe04E8pwN5TgfynA7kOR3IczqQ53Qgz+lAntOBPKcDeU4H8pwO5DkdyHM6kOd0IM/pQJ7TgTynA3lOB/KcDuQ5HchzOpDndCDP6UCe04E8pwN5TgfynA7kOR3IczqQ53Qgz+lAntOBPKcDeU4H8pwO5DkdyHM6kOd0IM/pQJ7TgTznBPKcE8hzTiDPOYE853zwcnwCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ55xAnnMCec4J5DknkOecQJ5zAnnOCeQ5J5DnnECecwJ5zgnkOSeQ51xAnnMBec4F5DkXkOdcD16OLyDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcC8hzLiDPuYA85wLynAvIcy4gz7mAPOcC8pwLyHMuIM+5gDznAvKcAeQ5A8hzBpDnDCDPGQ9ejgeQ5wwgzxlAnjOAPGcAec4A8pwB5DkDyHMGkOcMIM8ZQJ4zgDxnAHnOAPKcAeQ5A8hzBpDnDCDPGUCeM4A8ZwB5zgDynAHkOQPIcwaQ5wwgzxlAnjOAPGcAec4A8pwB5DkDyHMGkOcMIM8ZQJ4zgDxnAHnOAPKcAeQ5A8hzBpDnDCDPGUCeM4A8ZwB5zgDynAHkOQPIcwaQ5wwgzxlAnjOAPGcAec4A8pwB5DkDyHMGkOcMIM8ZQJ4zgDxnAHnOAPKcAeQ5A8hzBpDnDCDPGUCeM4A8ZwB5zgDynAHkOQPIcwaQ5wwgzxlAnjOAPGcAec4A8pwB5DkDyHMGkOcMIM8ZQJ4zgDxnAHnOAPKcAeQ5A8hzBpDnDCDPGUCeM4A8ZwB5zgDynAHkOTeQ59xAnnMDec4N5Dn3g5fjG8hzbiDPuYE85wbynBvIc24gz7mBPOcG8pwbyHNuIM+5gTznBvKc+9085+dzsuk5p+c572YpP58zmp5jTc/xpufMpuespudE03Oa8sCa8sCa8sCb8sCb8sCb8sCb8sCb8sCb8sCb8sCb8sCb8sCb8mA25cFsyoPZlAezKQ9mUx7MpjyYTXkwm/JgNuXBbMqD1ZQHqykPVlMerKY8WE15sJryYDXlwWrKg9WUB6spD6IpD6IpD6IpD6IpD6IpD6IpD6IpD6IpD6IpD6IpD3ZTHuymPNhNebCb8mA35cFuyoPdlAe7KQ92Ux7spjzIpjzIpjzIpjzIpjzIpjzIpjzIpjzIpjzIpjzIpjw4TXlwmvLgNOXBacqD05QHpykPTlMenKY8OE15cHryIB+PpueMpudY03O86Tmz6Tmr6TnR9Jzd9Jxsek5THoymPBhNeTCa8mA05cFoyoPRlAejKQ+a7idm0/3EbLqfmE33E7PpfmI23U/MpvuJ2XQ/MZvuJ2bT/cRsup+YTfcTs+l+YjbdT8ym+4nZdD8xm+4nZtP9xGy6n5hN9xOz6X5iNt1PzKb7idl0PzGb7idm0/3EbLqfmE33E7PpfmI23U/MpvuJ2XQ/MZvuJ2b9fuLnb46Xf9Ne/k1/+Tfny7+5Xv7NePk398u/mS//5nn1N+Pl71C8/B2Kl79D8fJ3KF7+DsXL36F4+TsUL3+H4uXvULz8Hdovf4f2y9+h/fJ3aL/8Hdovf4f2y9+h/fJ3aL/8Hdovf4f2y9+hfPk7lC9/h/Ll71C+/B3Kl79D+fJ3KF/+DuXL36F8+TuUL3+HzsvfofPyd+i8/B06L3+Hzsvfoa9vIjz++rXHN/8m/frnPv92vPFv7zf+7Xzj3z5v+9vn69sEP/S3xxv/tr3xb/sb//Z8499eb/zb8ca/vd/4t/ONf/uN7+V443s53vhejje+l+ON7+V443s53vhejje+l+ON7+V443s53vhe2hvfS3vje2lvfC/tje+lvfG9tDe+l/bG99Le+F7aG99Le+N76W98L/1fei/39PHXj+657fOnI38/wN79gH/pDd2xP2Ry1/+ZXz5gvvsB690PiHc/YL/7AfnuB5w3P2A+3v2A8e4H2Lsf8O43eb77TZ7vfpPnu9/k+e43eb77TZ7vfpPXe9/k+fgnPfY6H6twxJrfPGak/+46x+/FuR5f/bCtcT7+ti2ff5/qf/7xOdfHT88Z5/OHhz9+nyFucIZ9gzPkDc5w9M/wT/6bF60zDPgZ1uffnmva12ewG5zBb3CGeYMz4Pd0zs8z+D85A35PP3EG/J5+4gz4Pf3EGfB7+tszjAd+Tz9xBvqefuYM9D39zBnoe/qZM9D39DNn0N/T46G/p8dDf0+Ph/6eHo8b7Olxgz09brCnxw329LjBnh432NPjBnt63GBPjxvs6XGDPT1usKftBnvabrCn7QZ72m6wp+0Ge9pusKftBnvabrCn7QZ72m6wp52+p9eKzzPk+voM+P9++okz4P/76SfOgP/vp584A31PP3MG+p5+5gz0PR0P+zjD3yf5hzPQ9/QTZ5j0/fDMGej74Zkz0PfDM2eg74dnzkDfD8+cgb4fnjkDfT/s8XEzfO69/+EM//NPrxMfc19n/70R7XrM54np2+TnT0z/z4g/f2L6f6L8X5z44wwL/y+G7Z9nePyTM+D/xfDEGfD/YnjiDPh/MTxxhnmDM+D/xfDEGfD/ifKJM+D/E+UTZ6Bv9WfOQN/TT5whbrCn4wZ7Om6wp+MGezpusKfjBns6brCn4wZ7Om6wp+MGe3rfYE/vG+zpfYM9vW+wp/cN9vS+wZ7eN9jT+wZ7et9gT+8b7Om8wZ7OG+zpvMGezhvs6aTv6fz86Zn2+PoM9D39zBnoe/qZM9D39DNnoO/pZ85A39NPnAFv5HrmDPQ9/cwZ6Hv6mTPQ9/QzZ7jBnsYbuZ45ww32NN7I9cwZbrCn8Uau789geCPXM2fQ39OGN3I9cwb9PW0P/T1teCPXM2fQ39OGN3I9cwb9PW14I9cTZ8AbuZ45ww32NN7I9cwZbrCn8UauZ85wgz2NN3I9c4Yb7Gm8keuZM9xgT+ONXM+c4QZ7Gm/keuYMN9jTeCPXM2e4wZ7GG7meOcMN9jTeyPXMGW6wp/FGrmfOcIM9jTdyPXOGG+xpvJHrmTPcYE/jjVzPnOEGe9pvsKf9Bnsab0Z75gw32NN4M9ozZ7jBnsab0Z45ww32NN6M9swZbrCn8fayZ85wgz2N95E9c4Yb7Gm8j+yZM9xgT+N9ZM+c4QZ7Gu8je+YMN9jTeB/ZM2e4wZ7G+8ieOcMN9jTeR/bMGW6wp/E+smfOcIM9jfeRPXOGG+xpvI/smTPcYE/jfWTPnOEGexrvI3vmDDfY03gf2TNnuMGexvvInjnDDfY03kf2zBlusKfxPrJnznCDPY33kT1zhhvs6Rv4yOwGPjK7gY/MbuAjsxv4yOwGPjK7gY/MbuAjsxv4yOwGPjK7gY/MbuAjsxv4yOwGPjK7gY/MbuAj8xv4yPwGPjK/gY/Mb+Aj84f+nvYb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPzG/gI/Mb+Mj8Bj4yv4GPbN7ARzZv4CObN/CRzRv4yOZDf0/PG/jI5g18ZPMGPrJ5Ax/ZvIGPbN7ARzZv4CObN/CRzRv4yOYNfGTzBj6yeQMf2byBj2zewEc2b+Ajmzfwkc0b+MjmDXxk8wY+snkDH9m8gY9s3sBHNm/gI5s38JHNG/jI5g18ZPMGPrJ5Ax/ZvIGPbN7ARzZv4CObN/CRzRv4yOYNfGTzBj6yeQMf2byBj2zewEc2b+Ajmzfwkc0b+MjmDXxk8wY+snkDH9m8gY9s3sBHNm/gI5t8H1n45xlyfX0G/J5+4gz4Pf3EGeh7+rh9nOG4f30G+p5+5gz0HffMGeg77okz4F1ez5yBvuOeOQN9xz1zhp/I1pX++dMzvjnDzM8jLP/bPx7yqyPY+DiBjb8dIOL3AUL9AFv9AMk+QO6PAxz7+gBH/AA/Io36owcY6gcw9QO4zAHi6wNM9QPAN/H3B4Bv4u8PAN/E3x9AZxP/kwPobOKvD5DsTez28cM+x9cHYG/iJw7A3sRPHIC9iZ84AHsTP3EA9iZ+4gDsTfy3A6zH1wdgb+InDsDexG75cYD4Jwdgb2If8c0BDnwTf38A+Cb+/gDwTbwfHwfIr4utA9/E3x8Avom/PwB8E39/APgm/v4A8E38/QHgm/i7A6xH+x7w/PzTfuY/HOBzKCMO5cShJnGoRRyqPys///vRXxa1r4faxKGSONQBDjUexKEGcSgjDuXEoSZxqEUcipjog5jog5jog5joRkx0Iya6ERPdiIluxEQ3YqIbMdGNmOhGTHQjJroTE92Jie7ERHdiojsx0Z2Y6E5MdCcmuhMT3YmJPomJPomJPomJPomJPomJPomJPomJPomJPomJPomJvoiJvoiJvoiJvoiJvoiJvoiJvoiJvoiJvoiJvoiJHsRED2KiBzHRg5joQUz0ICZ6EBM9iIkexEQPYqJvYqJvYqJvYqJvYqJvYqJvYqJvYqJvYqJvYqJvYqInMdGTmOhJTPQkJnoSEz2JiZ7ERE9ioicx0ZOY6IeY6IeY6IeY6IeY6IeY6IeY6IeY6IeY6IeY6AeY6PEAJno8gIkeD2CixwOY6PEAJno8gIkeRGY0iMxoEJnRIDKjQWRGg8iMBpEZDSIzGkRmNIjMaBCZ0SAyo0FkRoPIjAaRGQ0iMxpEZjSIzGgQmdEgMqNBZEaDyIwGkRkNIjMaRGY0iMxoEJnRIDKjQWRGg8iMBpEZDSIzGkRmNIjMaBCZ0SAyo0FkRoPIjAaRGQ0iMxpEZjSIzGgQmdEgMqNBZEaDyIwGkRkNIjMaRGY0iMxoEJnRIDKjQWRGg8iMBpEZDSIzGkRmNIjMaBCZ0SAyo0FkRoPIjAaRGQ0iMxpEZjSIzGgQmdEgMqNBZEaDyIzGH2BGH5//2zTT/slQmzhUEoc6wKH+ADP6xFCDOJQRh3LiUJM41CIORUz0JCZ6EhM9iYl+iIl+iIl+iIl+iIl+iIl+iIl+iIl+iIl+iIl+gIm+H8BE3w9gou8HMNH3A5jo+wFM9P0AJvp+ABN9P4CJvh/ARN8PYqIPYqIPYqIPYqIPYqIPYqJ/TUJ+/G+YP74Zx/Pzfwb6+j/t9xP88fsJ+fYnnHc/4Wvg8EefMN7+BHv7E/ztT5hvf8J6+xPi7U/4197p4x8R42f+kyfk259w3v0Ef7z9CePtT7C3P8Hf/oT59iestz8h3v6Et7/T/vZ32t/+Ts+3v9Pz7e/0fPs7Pd/+Ts+3v9Pz7e/0/Bff6TF+P8G/fsJ++xPy7U84737Cerz9CePtT7C3P8Hf/oT59iestz/h7e/0evs7vd7+Tq+3v9Px9nc63v5Ox9vf6Xj7Ox1vf6fj7e90vP2djre/0/H2dzre/k7vt7/T++3v9H77O73f/k7vt7/T++3v9H77O73f/k7vt7/T++3vdL79nc63v9P59nc63/5O59vf6Xz7O51v/++B8u3/PdB5+38PdN7+3wOdt//3QOft/z3QmW9/wtv/e6Dz9v8e6Lz9v9s9b++Mz7s743w83v6E8fYn2Nuf4G9/wnz7E9bbnxBvf8J++xPy7U94+zs93v5Oj7e/0+Pt7/R4979bc8y3P2G9/Qnx9ifstz8h3/6Ed/9n0bTH258w3v4Ee/sT3v5O2/9Zy7msIAwDAfCXmt1tuv2cKh4KUkWr4N9bsY9LRF2YY0iHQMKcOgnutOBOC+604E4L7rTgTivutOJOK+604k4r7rTiTivutOJOK+604k4b7rThThvutOFOG+604U7jDZbjDZbjDZbjDZbjDZbjDZbjDZZ/eDe2qm0mU+VpJb3ZwOIBNrqs2KZ6W7CylStnND9wKchJkNMgV9wXyc1yEtV2X6rdtrNcInzHUgyTGKYxzEJY+UduljxjOXsRSzFMYpjGMPsPmwb37tJ3u+PhOgGvuduwH/vTMA/Hx/k9M337BA==" }, { "name": "compute_note_hash_and_nullifier", "is_unconstrained": true, "custom_attributes": [], "abi": { "error_types": {}, "param_witnesses": { "contract_address": [{ "end": 1, "start": 0 }], "nonce": [{ "end": 2, "start": 1 }], "note_type_id": [{ "end": 4, "start": 3 }], "serialized_note": [], "storage_slot": [{ "end": 3, "start": 2 }] }, "parameters": [{ "name": "contract_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" }, "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" }], "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [4, 5, 6, 7] }, "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": "ndpBattQGIXRvWgciu8vvScpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/3l7ftse7y/Ol+37ZXgcKw/D7vhyf+qfD8Pr/rAbHmttn98e7qNZRouMVhiNGxlFRiWjUUaTjJqMpIhRihiliFGKmKSISYqYpIhJipikiEmKmKSISYqYpIhJimhSRJMimhTRpIgmRTQpokkRTYpoUkSTIroU0aWILkV0KaJLEV2K6FJElyK6FNGliFmKmKWIWYqYpYhZipiliFmKmKWIWYqYpYhFilikiEWKWKSIRYpYpIhFilikiEWKWKSIVYpYpYhVililiFWKWKWIVYpYpYhVililiGw2tAqtilYjrSZaNVp1Ws20WmhFbYTaCLURaiPURqiNUBuhNkJthNoItVHURlEbRW0UtVHURlEbxJkhzwyBZkg0Q6QZMs0QaoZUM8SaIdcMwWZINkO0GbLNEG6GdDPEmyHfDAFnSDhDxBkyzhByhpQzxJwh5wxBZ0g6Q9QZss4Qdoa0M8SdIe8MgWdIPEPkGTLPEHqG1DPEniH3DMFnSD5D9BmyzxB+hvQzxJ8h/wwBaEhAQwQaMtAQgoYUNMSgIQcNQWhIQkMUGrLQEIaGNDTEoSEPDYFoSERDJBoy0RCKhlQ0xKIhFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLbvmafc87aInuWiRixa5aJGLFrlo/beL3k4/t+/77dNhd7/Ze//4cXz+d9H3drz8evv75fbvbw==" }], "outputs": { "globals": { "storage": [{ "fields": [{ "name": "npk_m_x_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "1" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "npk_m_y_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "2" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "ivpk_m_x_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "3" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "ivpk_m_y_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "4" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "ovpk_m_x_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "5" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "ovpk_m_y_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "6" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "tpk_m_x_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "7" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }, { "name": "tpk_m_y_registry", "value": { "fields": [{ "name": "slot", "value": { "kind": "integer", "sign": false, "value": "8" } }, { "name": "typ", "value": { "kind": "string", "value": "Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>" } }], "kind": "struct" } }], "kind": "struct" }] }, "structs": { "functions": [{ "fields": [{ "name": "parameters", "type": { "fields": [{ "name": "address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "new_nullifier_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }, { "name": "nonce", "type": { "kind": "field" } }], "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_parameters" } }], "kind": "struct", "path": "KeyRegistry::rotate_nullifier_public_key_abi" }, { "fields": [{ "name": "parameters", "type": { "fields": [{ "name": "address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress" } }, { "name": "partial_address", "type": { "fields": [{ "name": "inner", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::address::partial_address::PartialAddress" } }, { "name": "nullifier_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }, { "name": "incoming_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }, { "name": "outgoing_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }, { "name": "tagging_public_key", "type": { "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }], "kind": "struct", "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint" } }], "kind": "struct", "path": "KeyRegistry::register_parameters" } }], "kind": "struct", "path": "KeyRegistry::register_abi" }] } }, "file_map": { "104": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/public_call.nr", "source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n// TODO(6052): get new side effect counter from this call\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" }, "111": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/map.nr", "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" }, "114": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr", "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" }, "116": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr", "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" }, "122": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/public_storage.nr", "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" }, "130": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr", "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};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_encrypted_log_hash<N, M, L>(\n encrypted_log: [Field; M]\n) -> Field where [Field; N]: LensForEncryptedLog<N, M, L> {\n let mut bytes = [0; L];\n // Note that bytes.append(encrypted_log[i].to_be_bytes(31)) results in bound error\n for i in 0..M-1 {\n let to_add = encrypted_log[i].to_be_bytes(31);\n for j in 0..31 {\n bytes[i*31 + j] = to_add[j];\n }\n }\n // can't assign as L - not in scope error for: L-31*(M-1)\n let num_bytes = bytes.len() as u32 - 31*(M-1);\n let to_add_final = encrypted_log[M-1].to_be_bytes(num_bytes);\n for j in 0..num_bytes {\n bytes[(M-1)*31 + j] = to_add_final[j];\n }\n sha256_to_field(bytes)\n}\n\npub fn compute_unencrypted_log_hash<T, N, M>(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T,\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\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\n#[test]\nfn compute_enc_log_hash_304() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x0021a0d4aa9989656b592187cf6da1965df53ab2ff2277421e663465cf20d3e9,\n 0x00c3969cc350f3474f8187a33ac1317181961f5f94043b07ce888d85a5d20cb5,\n 0x0058198041ed1547b056955b5141a5a8a1551b0c8d094255ec9daaf3604d9348,\n 0x00247ad96df2e4d984cf795ed7316234743a681f824a45c46253de8bfde48850,\n 0x007fc251f4ce44f4e9aba3dbf6567228be28fac85660156f2825ddb0b0577457,\n 0x009315851323c6bc2aaa42e23fe5f3be97208f2d8167eafdfc5742d94f2f4dd4,\n 0x00b938289e563b0fe01982cd9b8d9e33e3069046768ad01c0fb05e429e7b7909,\n 0x00fbcc257a3211f705b471eee763b0f43876a2b2178fab6d2b09bd2b7e086584,\n 0x000000000000008c3289b5793b7448f4d45ecde039d004b6f037cad10b5c2336\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x001e3c013994947fe28957a876bf1b2c3a69ac69cc92909efd4f2ae9b972f893);\n}\n\n#[test]\nfn compute_enc_log_hash_368() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x002190697d2a50e229a7a077e0951073f7d51e46679f10466153c308b63b1ea9,\n 0x00543e346facc6799b94514c9d461bcc836c04b083b13c2e4544a39130473c1e,\n 0x000df76d59526f8f953bcc7d9f77cdaefd36435931f0d7348f794bc275b42ded,\n 0x00a6d390ee1723af7f7ac1ae4fc81a266b2370fe07040a36d06dbe242e02413e,\n 0x00acbce15b6af1fbe94bd0f7b70f11768265dff77bfe63398f2a053efdfdf26d,\n 0x00b8b131b9f42c689beb095ba4f4a836d4d15c9068d0422e9add6ca82b786329,\n 0x00661a6a654b38f0f97d404ef5553e0efea9ed670561ae86685b31bbb2824fac,\n 0x00113a6b58edfaec0065b365f66ba8d8aa68254b8690035e8d671a17a843f0a1,\n 0x0023f2d2eae8c4449bac8f268a3e62a3faace1fe1401f0efdc8b0ccfbc8fb271,\n 0x00cf6603f8c61993dd2f662c719671c61727a2f4e925fb988b23d31feccd77d9,\n 0x0000000000a402a84b7294671799c38dd805f6a827a3a12633fdf91a57debe1f\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x00a0d651ac0cbc01b72430fa6a05d91738595af6e0229347b4c9968223387aeb);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n" }, "146": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/type_serialization.nr", "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" }, "151": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/public_keys_hash.nr", "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" }, "152": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr", "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" }, "163": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr", "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" }, "166": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/field.nr", "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" }, "188": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr", "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" }, "234": { "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr", "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 MAX_ENCRYPTED_LOGS_PER_TX\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\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\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 // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n 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" }, "28": { "path": "std/hash/poseidon2.nr", "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" }, "295": { "path": "/usr/src/noir-projects/noir-contracts/contracts/key_registry_contract/src/main.nr", "source": "contract KeyRegistry {\n use dep::authwit::auth::assert_current_call_valid_authwit_public;\n\n use dep::aztec::{\n state_vars::{SharedMutable, Map},\n protocol_types::{\n grumpkin_point::GrumpkinPoint, address::{AztecAddress, PartialAddress},\n }\n };\n\n global KEY_ROTATION_DELAY = 5;\n\n #[aztec(storage)]\n struct Storage {\n // The following stores a hash of individual master public keys\n // If you change slots of vars below, you must update the slots in `SharedMutablePrivateGetter` in aztec-nr/keys.\n // We store x and y coordinates in individual shared mutables as shared mutable currently supports only 1 field\n npk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n npk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n\n ivpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ivpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n ovpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n ovpk_m_y_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n \n tpk_m_x_registry: Map<AztecAddress, SharedMutable<Field, KEY_ROTATION_DELAY>>,\n tpk_m_y_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 // 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 npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n npk_m_x_registry.schedule_value_change(new_nullifier_public_key.x);\n npk_m_y_registry.schedule_value_change(new_nullifier_public_key.y);\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 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 npk_m_x_registry = storage.npk_m_x_registry.at(address);\n let npk_m_y_registry = storage.npk_m_y_registry.at(address);\n let ivpk_m_x_registry = storage.ivpk_m_x_registry.at(address);\n let ivpk_m_y_registry = storage.ivpk_m_y_registry.at(address);\n // let ovpk_m_x_registry = storage.ovpk_m_x_registry.at(address);\n // let ovpk_m_y_registry = storage.ovpk_m_y_registry.at(address);\n // let tpk_m_x_registry = storage.tpk_m_x_registry.at(address);\n // let tpk_m_y_registry = storage.tpk_m_y_registry.at(address);\n\n npk_m_x_registry.schedule_value_change(nullifier_public_key.x);\n npk_m_y_registry.schedule_value_change(nullifier_public_key.y);\n ivpk_m_x_registry.schedule_value_change(incoming_public_key.x);\n ivpk_m_y_registry.schedule_value_change(incoming_public_key.y);\n // Commented out as we hit the max enqueued public calls limit when not done so\n // ovpk_m_x_registry.schedule_value_change(outgoing_public_key.x);\n // ovpk_m_y_registry.schedule_value_change(outgoing_public_key.y);\n // tpk_m_x_registry.schedule_value_change(tagging_public_key.x);\n // tpk_m_y_registry.schedule_value_change(tagging_public_key.y);\n }\n}\n" }, "33": { "path": "std/option.nr", "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" }, "4": { "path": "std/collections/bounded_vec.nr", "source": "use crate::{cmp::Eq, convert::From};\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 from_array<Len>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\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\nimpl<T, MaxLen, Len> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\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 mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n" }, "50": { "path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr", "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" }, "57": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context.nr", "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" }, "68": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/public_context.nr", "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, logs_traits::ToBytesForUnencryptedLog},\n hash::{hash_args, ArgsHasher, compute_unencrypted_log_hash}\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_log_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_log_preimages_length: 0,\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero()\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(6052): 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 // 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: self.unencrypted_log_preimages_length + 4,\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 transaction_fee(self) -> Field {\n self.inputs.transaction_fee\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, N, M>(&mut self, log: T) where T: ToBytesForUnencryptedLog<N, M> {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(\n contract_address,\n event_selector,\n log\n );\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 // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n self.unencrypted_log_preimages_length = self.unencrypted_log_preimages_length + 44 + log_slice.len().to_field();\n // Call oracle to broadcast log\n let _void = emit_unencrypted_log_oracle(contract_address, event_selector, log, side_effect.counter);\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_log_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 _counter: u32\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" }, "87": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/arguments.nr", "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" }, "97": { "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/storage.nr", "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" } } }