@aztec/protocol-contracts 0.45.0 → 0.45.1

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
- {"transpiled":true,"noir_version":"0.31.0+bb5cbab945cfd61f6a0da79f8874a0fcdc59361a","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"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":"compute_nullifier","type":{"kind":"boolean"},"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"}},"bytecode":"H4sIAAAAAAAA/+2b3U7bQBCF18GhBoOb2HGckEAIBaTehRSScMfLtM/d60p9haqss6Mclmm0UcdLVool5LG9O+ebsz+EyERqfSSvP5GJ2+Z8rN4f1ObFnGf/dzwI5po1yRkFwtkKhPMoEM5YkDNiOPU5NrFed3rNfVLr9fjuIXbWA30Ez9W2RLZqYgJ8eC1V6Wr2fAzJEVwZ8Ng8o7PGSc0zBEtNkXUbuEeFtuAe6RzBPdrBSCcxpgjX+5RskOXyvs4+XcOJyUXcKcT4bAzWxQ3V2Jav8bGRMXn1rqExqVcx+d42uRO4pjE4NbHgb44H1I7Mz6k1F2KIR9CW2pEfLWDVx7narJfTLf1iq18GbY6hn7230DWNtfaqa2J9btOeAPkb8HCm86byed+MTWx5l0JNGXgioz1f6fxn6u0RWdfXEGfAcy7Os1578nWux+4zsMvkfXrUXnUsr84srzJogwydBvyLQJdy03WH0ZbzYrHS2l0HL7oMT9ezF11GW9CLZ62dO3iRMzy5Zy9yRlvOi+U3rV04eFEwPIVnLwpGW86Lef0ZoOfgRY/h6Xn2osdoC66Rel6UDl6UDE/p2YuS0Rb04ofW7jt40Wd4+p696DPagl5819qVgxcVw1N59qJitAX3zvrzxcDBiwHDM/DsxYDRFvRirrWHDl4MGZ6hZy+GjLbgGqm1Lxy8uGB4Ljx7QXq7MvcCZK4CZC72gDmxYhntRb1/jhy8GDE8I89e4HcuuzCXe8CcWLGM9uJJa48dvBgzPGPPXpDersx5gMxFgMz9AJnLAJmrAJn3YT4nViyjvaz30EsHLy4ZnkvPXpDersx5gMyjAJmLPWBOrFhGe1l/N3fl4MUVw3Pl2QvS25V5ECBzdw+YEyuW0V4utPbEwYsJwzPx7AXp7co8DJC5CpB5FCBzESBzP0DmMkDmwxr0w5zvATO+e/S7UZ75c2rxkGfKYlQWYwpxBozU9kXJva+SWbWT1lTcj/X42POFrqeNas9XOu+XBmrSeW/l89Z/I9yZXPQO3y3j1b2JI+FxuoO8EejQ/RjiX9CW2pEftB8Qu36X68bE91v6Tax+GbS5gX63Vj+6prHW3v00cVNzy2Ved9RmLX8Fngb2wUd8J1eBV8pipGMCPNfyPA8N1TnDd/j+KNm1N7W8OrG8yqAN7tEftW8emA/M/2LGzxMncA956F7LqgX/v2EKOf4CARQXTpY1AAA=","debug_symbols":"ndpRattAGIXRveg5FN/fmhkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut33cTfvj0/Vp1Ofd9Hx42V+f1/b57e42WmG03cgoMioZbWU0y6jJqMtoyEiK2EoRsxQxSxGzFDFLEbMUMUsRsxQxSxGzFDFLEU2KaFJEkyKaFNGkiCZFNCmiSRFNimhSRJciuhTRpYguRXQpoksRXYroUkSXIroUMaSIIUUMKWJIEUOKGFLEkCKGFDGkiCFFLFLEIkUsUsQiRSxSxCJFLFLEIkUsUsQiRaxSxCpFrFLEKkWsUsQqRaxSxCpFrFLEKkVks6FVaFW02tJqplWjVafVoNVCK2oj1EaojVAboTZCbYTaCLURaiPURqiNojaK2ihqo6iNojaK2ihqo6gNAs2QaIZIM2SaIdQMqWaINUOuGYLNkGyGaDNkmyHcDOlmiDdDvhkCzpBwhogzZJwh5AwpZ4g5Q84Zgs6QdIaoM2SdIewMaWeIO0PeGQLPkHiGyDNkniH0DKlniD1D7hmCz5B8hugzZJ8h/AzpZ4g/Q/4ZAtCQgIYINGSgIQQNKWiIQUMOGoLQkISGKDRkoSEMDWloiENDHhoC0ZCIhkg0ZKIhFA2paIhFQy5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWnbRk1y0yEWLXLTIRYtctMhFi1y0/ttFr6efu/fD7uFlf7vbe/v4cXz8d9X3ejz/evv75frvbw=="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"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":"num_txs","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"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","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":"teardown_gas_limits","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":"max_fees_per_gas","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"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"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":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"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":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"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":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_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":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"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"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"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":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"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}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"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":"num_txs","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"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","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":"teardown_gas_limits","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":"max_fees_per_gas","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"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"H4sIAAAAAAAA/+xdB3xUxfO/FAIhEDrSCaj0ci+NBOlNEOlFQClJSAQFC4Jiw4IdRFFUVEBFBRXLz957BRUFxYIC9oJiQWyo+J8Ns8mwXAK3b+e8+XP3+Xw/39t3b97O7szuzu57by8usPvzdmog8FPl3d/jAAmAeEAaSSfgd51ONNIVjPMrGumqRrqaka5hpGsZ6YMAPUi6qfF7mpFuZqSbG+kWRrqVkW5jlK+tkW5vnN/R+D1opNON8zON37OMdCfj/Fzj9874nX50ugdyRjA7M7OwU3qhl+HlBdNz83OygplZ+dk5Xo6XlZM1OT0nI6MwJzOnU25+bqdgrpeZUegVZeVmFAV3f16OK71W0OdH6ZZMdGsJ2IX1rrg1chvktsjtkNsjd0DuiBxE9pDTkTOQM5GzkLOROyHnIOcid0Y+DFnVQYzds7LrK3G7fZb6xSux+jng/eJVo2OLR+6BHPT38VoE3PWRr7nrIz3dt6trpgV2j6mq7EZ1FH/iHNdJ64Dbvl5/VscxKrw6zv1118S5cw6ucq8hNezousEKeJ2kgCxn49SzlRA9WwrR02FnGbJt+W2vKuhUExvXA06iw2u1ZbJ1wG2Zg7TfT8bvr0PiDcCbgLWAtwBvA9YB1gPeUf25a6OqzlLP5lwatU3AbeerZ93mx7Xeb8RFtQN5+guti3exEjbEBUqnwOrgZpLegGET/SQwVp6lY6ajY3rvOow0NjAZ1XVP6LLM74W4Vn6wYHKWl589uZNXmJeVU1CQm+F56XnZedn56TlFhflZXk5WDlyzIC89B7JLzyvwCoN52YWRDLXfi3Pfy6rP+3GMCr/PEGp/EOWhtir3BwyhdihdXXQASldXDVZf16WNPnTs+KpzV9dsFtg9V47UCPqWwBF0I1bCR3QE3WiMoB9FYAR9y+EIutGhc34kZAR1WeaPhY6gHzONoJviGBXexDCCbo7yEVSVe7OQEfQj1NX1COrSRlsYRtAt/8EI+nZ0j6D6k07r4hOshE/pCKoO/kPSn8bt3QO6HkHfduBQhUW7P584dM5PhYygLsv8GbmWl5ORnt4pQ52XMznoZU4uSM9JT5+cnxksCOYVpBfmZnq5RZnpmRkFkwvy4Zp5XlGwKK8gtyhnt16RHEE/YxpBP49jVPhzhhH0iygfQVW5vxAygn6Kurq+7pcMo96XONJHctRbJ3DU+wor4Ws66n1ljHpfR2DUW+dw1PvKYaP/Wsio57LM3wgd9b5hGvW+jWNU+FuGUW9rlI96qtxbhYx6X6Ourq/7HcOo991/MOqtF7ha+j1WwjY66n1vrJZui8Bq6XqHq6XfO2z024SMei7L/IPQ1dIfmEa9H+MYFf6RYdT7KcpHPVXun4SMettQV9erpS5t9DPDCPozrpZy1Kl6omhNnPtOsI1DHbfH8fpl0N+n+NHS7QzR2M8p0d0e1aN1HOXeniJjoHdoH297SnT7+AYmW/8S5W1blfkXhnLvYBgndpDJget6UI+lc9j/VwH2/5Wh3L8x2P+3EJND133eL3EHju23MfV5vwvw+d8Zyv0Hg8//wdjnvcZk/z8F2P9PhnLvZLD/zgj0eb/HHTi2V691sYzzUT6XeYeprf8mZC7j0D7eb1E+l/kUbR1we10Wv1Sv8anX71wv8nO9Hui3vH9Fef/4NVdMEOX9oyrzXxwxgZD+0aF9vJ1R3j+uZfLxfyJk6yhad/X+ifJ2ra7HYet/o9zH32Ty8UAVGf2ZQ/t4rsvMNY93XYfbHc4L/2aYG/8dV7qfWzLxIbWWT/c/Utvw/RNXet5naIA38fe1yB8hf4r8NfI25HfiYvtJxTjGMY5xjGMc4xjHOMYxjnGM5XPx/uBxpfNkfU/mdfz9H+RdyDUB/8btfvNFycS2OS3VM7bNqVs9XW9zyqXnX0x6BtzqGexKL4oLZ3HI8cgJyInIFZCTkCsiV0JORq6MnIJcBbkqcmr87npPw+yrQbo6oAagJqAWoDagDqAu4CBAPUB9QANAQ0AjQGNAE0BTQBqgGaA54GDAIYBDAS0ALQGtAK0BbQBtAe0A7QEdDF06Qlq9tuYB1EvbGYBMQBYgG9AJkAPIBXQGHAboAugK6AboDugB6AnoBegN6APoC+gHOBzQHzAAcARgIOBIwCDAYNSlB+oyBNJDAcMAwwEjACMBowCjAUcBxgDGAsYBjgYcAxgPmACYCJgEyAPkAwoAkwGFgCLAsYApgKmA4wDHA6YBpgNOAJwIOAlwMmAG4BTATMAswKmA0wCzAacDzgCcCTgLcDZgDuAcwLmA8wDnA+YCLgBcCLgIcDHgEsClgMsA8wDzAZcDFhh2uQLSVwIWAq4CXA1YBLgGcC3gOsBiwPWAGwA3ApYAlgKWAW4C3Ay4BbAccCvgNsDtgBWAlYA7AHcC7gKsAtwNuAdwL+qiG+R9kP4f4H7AA4AHAQ8BHgY8AngU8BjgccATgCcBTwGeBjwDeBbwHOB5wAuAFwEvAV4GvAJ4FfAaYDVgDeB1wBuANwFrAW8B3gasA6wHvAN4F7AB8B7gfcAHgA8BGwEfAT4GbAJsxrLUw7JsgfQngE8BnwE+B3wB+BLwFeBrwDeAbwFbAd8BvgdsA/wA+BHwE+BnwHbAL4AdgF8Bv2Fe1TGv3yH9B+BPwE7AX4C/Af8AdgH+jQ8UBx1xgHhAAiARUAGQhMFIxYQ9Y41KkE4GVAakAKoAquK5qcjVEvZsV9UhXQNQE1ALUBtQB1AXcBCgHqA+oAGgIaARoDGgCaApIA3QDNAccDDgEMChgBaAloBWgNaANoC2gHaA9oAOgI6AIMADpAMyAJmALEA2oBMgB5AL6Aw4DNAF0BXQDdAd0APQE9AL0BvQB9AX0A9wOKA/YADgCMBAwJGAQYDBgCEJe9pkKKSHAYYDRgBGAkYBRgOOAowBjAWMAxwNOAYwHjABMBGvVQWvNQnSeYB8QAFgMqAQUAQ4FjAFMBVwHOB4tM005OnIJyCfiHwS8snIM5BPQZ6JPAv5VOTTkGcjn458BvKZyGchn408B/kc5HORz0M+H3ku8gXIFyJfhHwx8iXIlyJfhjwvIcS23EF/H09vyx1vXNfFS3SurrXGXYBU8uceKnBJC5S+RR6PHY9OVzB+TzJ+r2ikKxnnpxjpKsb5VY10qnF+dSNd00jXNtJ1jXQ9I93ASDcy0k2MdJqRbm6kDzHSLYx0KyPdxki3M9IdjHTQSKcb6UwjnW2kc4x0ZyPdxUh3M9I9jHQvI93HSPcz0v2N9BFG+kgjPdhIX2mkrzLSi4z0tUZ6sZG+wUgvMdLLjPTNRnq5kb7NSK8w0ncY6buM9N1G+l4j/T8j/aCRfsRIP26knzLSzxrpF4z0y0b6NSP9upFea6TXGel3jfT7Rnqjkd5kpD8z+ofPjd+/MNLfGOd/a/y+1Uj/YJz/o/H7T0Z6h3H+r8bvvxlpFVzRdFUjnWqkqxnpGka6lpGuY6QPMtL1jXRDI93YSDc10s2M9MFG+lAj3dJItzbSbY10eyPd0Uh7RjrDSGcZ6U5GOtdIH2akuxrp7ka6p5HubaT7GunDjfQAIz3QSA8y0kOM9DAjPcpIjzXS4410npGebKSPNdLHGenpRvoUIz3LSJ9mpE830ipY7EHSFxq/X2SkLzbSl2A6gMfUpwdy0N/H0xseJBjXjdYY0O+15ic4fNCPwR4qllQ6xjm2x+UJbhcaXZdblflyhnIvcFhu3R4XMLZHtXDNYf8rBNj/CoZyX8lg/yuJ/fUn3nF90Pb6/932Kh7k8PmFAnx+IUO5r2Lw+av2w+ejaIzyot321dDnXfcb8x32G1cz+NHVjGOnutnP0Y8kML/Q4fslG6aYMVHIyzsO7eMlRvnLO3FMtl4kYKxcxFDuaxj6uGsY+zj1oBCH/a8VYP9rGcp9HYP9r4vA/GBRwoFj+5ZMPl8xysf1ZKa+vpKQcd2hfbxKUT6uJ6GtA26vy+KXfzGtUaVEuY0qMrXHKkLao0P7eFWi3NaJTLauFiFbR9Gc16sW5eOsuh6HrWtEuY8nMPl4TSH9mUP7eDWj3NZVmGy92PH8Sb1IND+u1ODqxaE45HjkBORE5ArIScgVkSshJyNXRk5BVrorrorpVORqyNWRayDXRK6FXBu5DnJd5IOQ6yHXR26A3BC5EXJj5CbITZHTkJshN0c+GPkQ5EORWyC3RG6F3Bq5DXJb5HbI7ZE7IHdEDiJ7yOnIGciZyFnI2cidkHOQc5E7Ix+G3AW5K3I35O7IPZB7IvdC7o3cB7kvcj/kw5H7Iw9APgJ5IPKRyIOQByMPQR6KPAx5OPII5JHIo5BHIx+FPAZ5LPI45KORj0EejzwBeSLyJOQ85HzkAuTJyIXIRcjHIk9Bnop8HPLxyNOQpyOfgHwi8knIJyPPQD4FeSbyLORTkU9Dno18OvIZyGcin4V8NvIc5HOQz0U+D/l85LnIFyBfiHwR8sXIlyBfinwZ8jzk+ciXIy9AvgL5SuSFyFchX428CPka5GuRr0NejHw98g3INyIvQV6KvAz5JuSbkW9BXo58K/JtyLcjr0BeiXwH8p3IdyGvQr4b+R7ke5HvQ/4f8v3IDyA/iPwQ8sPIjyA/ivwY8uPITyA/ifwU8tPIzyA/i/wc8vPILyC/iPwS8svIryC/ivwa8mrkNcivI7+B/CbyWuS3kN9GXoe8Hvkd5HeRNyC/h/w+8gfIHyJvRP4I+WPkTcibkbcgf4L8KfJnyJ8jf4H8JfJXyF8jf4P8LfJW5O+Qv0fehvwD8o/IPyH/jLwd+RfkHci/Iv+G/DvyH8h/Iu9E/gv5b+R/kHch/4scwPE5DjkeOQE5EbkCchJyReRKyMnIlZFTkKvo8R85FbkacnXkGsg1kWsh10aug1wX+SDkesj1kRsgN0RuhNwYuQlyU+Q05GbIzZEPRj4E+VDkFsgtkVsht0Zug9wWuR1ye+QOyB2Rg8gecjpyBnImchZyNnIn5BzkXOTOyIchd0HuitwNuTtyD+SeyL2QeyP3Qe6L3A/5cOT+yAOQj0AeiHwk8iDkwchDkIciD0MejjwCeSTyKOTRyEchj0EeizwO+WjkY5DHI09Anog8CTkPOR+5AHkyciFyEfKxyFOQpyIfh3w88jTk6cgnIJ+IfBLyycgzkE9Bnok8C/lU5NOQZyOfjnwG8pnIZyGfjTwH+Rzkc5HPQz4feS7yBcgXIl+EfDHyJciXIl+GPE+3Z8D18F19OJ7ji/ZNFm9IkLEW5fL53xvdlZnl+V9lE6Wj63n6kgS383TVbNQ10wI87UfC81FLE6J7zUf50VIGX1rG4EvLGH2Jq03VifI1Py7712Va301wrOdNDvt6h7b2XNafbj83MbYfrncSbhbQf97MUO5bGPrPWyIwFruuh+UC7L+cody3Mtj/1oS9nzlz3Z/edgD1p7cx96dqTuPar25n8Kvb98Ovgv4+nku/ut1hfL+CoT5XMPqV6qOvZ+ivVkZ5P63+vItjfLrjAI1P7mTw+zsZ/Z5rnL6LoR7uYqwHtTb4L8O4ssphPajNX+NJ2enHdX10CLi1n/7cncCo8N0J7q97j8NBkavc9ySUVrCj6xY7m/pEYqdhl87GqWd7IXq2E6LnCuYgwW97VRdVAVK843K7/MfUIJOtA27LXDII6AcV1edesP99gP8B7gc8AHgQ8BDgYcAjqj93bVTVWXYMuHfmjgG3nW8CcTz6ca33fQlR7UCe/kLr4lEc8B5LCJRu9aQObibpxyIw/b7Pf3SQjo7pPeow0ngsQreng/4+Tsv8eIhr5QcLJmd5+dmTO3mFeVk5BQW5GZ6Xnpedl52fnlNUmJ/l5WTlwDUL8tJzILv0vAKvMJiXXRjJUPvxBPe9rPo8kcCo8BMMofaTUR5qq3I/yRBqh9LVRQfwpMNnAPR1XdroKYY1AnXNZoHdf5QSqRH0AYEj6NPox8/QEfRpYwR9JgIj6AMOR9CnHTrnM0JGUJdlflboCPos0wj6XAKjws8xjKDPR/kIqsr9vJAR9BnU1fUI6tJGLzCMoC/8ByPog9E9gupPOq2LF9GPX6IjqDr4D0m/lLB3D+h6BH3QgUMVFu3+vOjQOV8SMoK6LPPL5FpeTkZ6eqcMdV7O5KCXObkgPSc9fXJ+ZrAgmFeQXpib6eUWZaZnZhRMLsiHa+Z5RcGivILcopzdekVyBH2ZaQR9JYFR4VcYRtBXo3wEVeV+VcgI+hLq6vq6rzGMeq/hSB/JUe8hgaPeavS9NXTUW22MemsiMOo95HDUW+2w0a8RMuq5LPPrQke915lGvTcSGBV+g2HUezPKRz1V7jeFjHprUFfX113LMOqt/Q9GvYcFrpa+hb73Nh313jJWS9+OwGrpww5XS99y2OjfFjLquSzzOqGrpeuYRr31CYwKr2cY9d6J8lFPlfsdIaPe26ir69VSlzZ6l2EEfRdXSznqVD1RdE+C+06wo0MdNyTw+mXQ36f40dINDNFY/Sjfl1M9WsdR7gZC9qd0aB+vQZS/q/4Yk63fi/K2rcr8HkO532cYJ95P4Ht3RT2WzmH/DwTY/wOGcn/IYP8PQ0wOXfd57yUcOLZ/m6nP2yjA5zcylPsjBp//iLHPW8Fk/48F2P9jhnJvYrD/pgj0eRsTDhzbq9e6OHy+cZTPZR5hautNhMxlHNrHaxLlc5mX0NYBt9dl8Uv1Gp+6sOtFfq7XA/2Wd3OU949rmPqJZlHeP6oyb2Yod3Mh/aND+3jNo7x/vJ/Jxw8V8t9KLtf1DhXw30octm4Z5T7+PyYfbyWkP3NoH69VlNtaz+Nd1+EGh/PCLQxz4y04N9bbIejyq7V8tb/6y3G7uTLgk4TS8z5DA/wPz7sf+Rnkl5DXIL+N/Ihx3RjHOMYxjnGMYxzjGMc4xjGOcYwlclvAp2SerO/J3Ivz3k+QP0VW/1/2WcLuN1/oFo/qE4fcAzno71O8x/L2uNLr+70uvrUYsbdfPsfK/IK+/fI5VrZOf8H4sIeqvBsTnC0ml7wB87nDRaIvEtwaNs5NWfe4SfR5hG6sBv19ihvMKoYF4C8dLuSpTiMVUB2vp66tOiNbBJjbjuu6/ErAg1JfMZT7a4flTkAfMj8u65Wjbr9OiH4dv3Gpo1RDqY4l2nX8lsGZQirqt+VvdaeoJ9Whtgpo+d9Jcajv3SmaLtWhvhfgUNukONQP7hTNkOpQPwhwqB+lONRP7hTNlOpQPwlwqJ+lONR2d4pmSXWo7QIc6hcpDrXDnaLZUh1qhwCH+lWKQ/3mTtFOUh3qNwEO9bsUh/rDnaI5Uh3qDwEO9acUh9rpTtFcqQ61U4BD/SXFof52p2ieVIf6W4BD/SPFoXa5UzRfqkPtEuBQ/0pxKPWIjiNFC6Q6lMM6YNMxLlGIQ8W7U3SyVIeKF+BQCVIcKtGdooVSHSpRgENVkOJQSe4ULZLqUEkCHKqiSx3VQ4XVAqUPFapnY9TjDOoOtLppqO7zqKV5tZqqFsDUmoWaZqqZgQrm1Pirukzl5UoxrkKrh+s+Y3i4rq2AnVa+YSh3O6adCRId2/0bhw9MV3LXcDyHfuO5tEUCtmfz40pXfb0D8QHPSq4HBylPXicnunUgjsFB6ei63JUdGly/taKumRbY/RqQOpYU2Pvjun46BHg6e9d6theiZzsheq5IkKHnZq5VQbd6BruSa6ZgpFMFuSpyKnI15OrINZBrItdCro1cB7ku8kHI9ZDrY/+Whvk3gHRDQCNAY0ATQFPVtwCaAZoDDgYcAjgU0ALQEtAK0BrQBtAW0A7QHtAB0BGgXjNS+0GmAzIAmYAsQDagEyAHkGvo0hnShwG6ALoCugG6q74T0BPQC9Ab0AfQF9APcDigP2AA4AjAQMCRgEGAwYAhgKGAYYDhgBGAkYBRgNGAowBjAGNRlx6oyzhIHw04BjAeMAEwETAJkAfIBxQAJgMKAUWAYwFTAFMBxwGOB0wDTAecADgRcBLgZMAMwCmAmYBZgFMBpwFmA04HnAE4E3AW4GzAHMA5gHMB5wHOB8wFXAC4EHAR4GLAJYBLAZcB5gHmAy4HLABcAbgSsBBwFeBqwCLANYBrAdcBFgOuN+xyA6RvBCwBLAUsA9wEuBlwC2A54FbAbYDbASsAKwF3AO4E3AVYBbgbcA/gXsB9gP8B7gc8AHgQ8BDgYcAjgEcBjwEeR110g3wC0k8CngI8DXgG8CzgOcDzgBcALwJeArwMeAXwKuA1wGrAGsDrgDcAbwLWAt4CvA1YB1gPeAfwLmAD4D3A+4APAB8CNgI+AnwM2ATYDNgC+ATwKeAzwOeALwBfAr4CfA34BvAtlqUelmUrpL8DfA/YBvgB8CPgJ8DPgO2AXwA7AL8CfgP8DvgD8CdgJ+AvwN+AfwC7AP8CVFAQV2F3XnpCHg/pBEAioAIgCVARUAmQDKgMSAFUAVQFpAKqAaoDalTAPqfCnrFGLUjXBtQB1AUcBKiH59ZHblBhz3bVENKNAI0BTQBNAWmAZoDmgIMBhwAOBbQAtAS0ArQGtAG0BbQDtAd0AHQEBAHq7zfTARmATEAWIBvQCZADyAV0BhwG6ALoCugG6A7oAegJ6AXoDegD6AvoBzgc0B8wAHAEYCDgSMAgwGDAEMBQwDDAcMAIwEjAKMBowFGAMYCxgHGGTY6G9DGA8YAJgImASYA8QD6gADAZoP5krQhwLGAKYCrgOLxWFbzW8ZCeBpgOOAFwIuAkwMmAGYBTADMBswCnom1OQ56NfDryGchnIp+FfDbyHORzkM9FPg/5fOS5yBcgX4h8EfLFyJcgX4p8GfI85PnIlyMvQL4C+UrkhchXIV+NvAj5GuRrVd25Dj7U/12p/6eKN67r4r+0XF3rHocvgumJiApc0gKlr9NXTdzz9frqxu81jN9rGulaxvl1jfRBxvn1jHR94/yGRrqxkW5qpJsZ6YON9KFGuqWRbm2k2xrp9ka6o5H2jHSGkc4y0p2MdK6RPsxIdzXS3Y10TyPd20j3NdKHG+kBRnqgkR5kpIcY6WFGeoSRHmWkjzLSY430jUZ6qZG+yUjfYqRvNdK3G+mVRvpOI73KSN9jpO8z0vcb6QeN9MNG+lEj/biRftJIP2OknzfSLxnpV430GiP9ppF+20i/Y6TfM9IfGumPjfQWI/2Zkf7SSH9jpLcZ/cMPxu8/GulfjPN3GL//aqT/NM7fafz+l5H+1zhfBWv09zgjXcdI1zPS9Y10AyPdyEg3MdJpRrq5kT7ESLcw0q2MdBsj3c5IdzDSQSOdbqQzjXS2kc4x0p2NdBcj3c1I9zDSvYx0HyPdz0j3N9JHGOkjjfRgIz3USA830iON9GgjPcZIjzPSxxjpSUZ6spGeYqSnGekTjfQMIz3LSM820nOM9LlG+nwjfYGRVsFiD5K+0vh9oZG+ykhfjekAHlOfHshBfx9P/+9pgnHdaI0B/V7rugrRvaCvYsnrKux9Xb/lXlzB7UKj63KrMi9mKPf1Dsut2+P1jO1RLVxz2P8GAfa/gaHcNzLY/0Zif/2Jd1wftL3+f7e9igc5fH6JAJ9fwlDupQw+v3Q/fD6Kxigv2m3fAH3edb9xncN+YxmDHy1jHDvVzX6OfqRjlD8pl8IUMwaF/IePQ/t4wSj/D58qTLa+ScBYeRNDuW9m6ONuZuzj1INCHPa/RYD9b2Eo93IG+y+PwPzgpgoHju3bMfl8RpSP67WZ+vpMIeO6Q/t4mVE+rtdAWwfcXpfFLzczrVF1inIb1WRqjzlC2qND+3g5UW7raky2PkzIf/+6nFMdJuC/fzls3TXKfTyVyce7CenPHNrH6xbltj6Iyda3Op4/qf8Tmo9KqnUt9f9BVZCrIqciV0OujlwDuSZyLeTayHWQ6yIr3RXXw3R95AbIDZEbITdGboLcFDkNuRlyc+SDkQ9BPhS5BXJL5FbIrZHbILdFbofcHrkDckfkILKHnI6cgZyJnIWcjdwJOQc5F7kz8mHIXZC7IndD7o7cA7knci/k3sh9kPsi90M+HLk/8gDkI5AHIh+JPAh5MPIQ5KHIw5CHI49AHok8Cnk08lHIY5DHIo9DPhr5GOTxyBOQJyJPQs5DzkcuQJ6MXIhchHws8hTkqcjHIR+PPA15OvIJyCcin4R8MvIM5FOQZyLPQj4V+TTk2cinI5+BfCbyWchnI89BPgf5XOTzkM9Hnot8AfKFyBchX4x8CfKlyJchz0Oej3w58gLkK5CvRF6IfBXy1ciLkK9Bvhb5OuTFyNcj34B8I/IS5KXIy5BvQr4Z+Rbk5ci3It+GfDvyCuSVyHcg34l8F/Iq5LuR70G+F/k+5P8h34/8APKDyA8hP4z8CPKjyI8hP478BPKTyE8hP438DPKzyM8hP4/8AvKLyC8hv4z8CvKryK8hr0Zeg/w68hvIbyKvRX4L+W3kdcjrkd9Bfhd5A/J7yO8jf4D8IfJG5I+QP0behLwZeQvyJ8ifIn+G/DnyF8hfIn+F/DXyN8jfIm9F/g75e+RtyD8g/4j8E/LPyNuRf0Hegfwr8m/IvyP/gfwn8k7kv5D/Rv4HeRfyv8gBHEfjkOORE5ATkSsgJyFXRK6EnIxcGTkFuQpyVeRU5GrI1ZFrINdEroVcG7kOcl3kg/T4j1wfuQFyQ+RGyI2RmyA3RU5DbobcHPlg5EOQD0VugdwSuRVya+Q2yG2R2yG3R+6A3BE5iOwhpyNnIGciZyFnI3dCzkHORe6MfBhyF+SuyN2QuyP3QO6J3Au5N3If5L7I/ZAPR+6PPAD5COSByEciD0IejDwEeSjyMOThyCOQRyKPQh6NfBTyGOSxyOOQj0Y+Bnk88gTkiciTkPOQ85ELkCcjFyIXIR+LPAV5KvJxyMcjT0OejnwC8onIJyGfjDwD+RTkmcizkE9FPg15NvLpyGcgn4l8FvLZyHOQz0E+F/k85POR5yJfgHwh8kXIFyNfgnwp8mXI85DnI1+OvAD5CuQrkRciX4V8NfIi5GuQr0VW/0t6W4XI/S/p/ITS6/u9Lv59ZUEgxMfntUP+L+ntFXbzigqB0geT1cE4klY/pjFVoKo8jv8lVWXwea2SyfCKCm4N63qyrhYAtCEd2oZjwSJb29t1HaysEN0LNcpGKyu4L/cdFdwu1Kj2fgdje1e2X8lg/zuj3P6q3HcwlPsuh+VWg2XDQOmuAKpO9X/rqnzuBP3vSvD3H72R+L9erra2ymFdJ2Bdmx9X1+eq21UVol/Hu13ryOGgtzE4aM8ovyOnyn03Q7l7Cdn78W6HQek97pzcc+g3Xq8qYjpJtr0fJXSS90joJNUoHs2vUtzLEH3fyxh9S6jT+2JRlnefgA7kf9wdiIto438Mzv4/h85+vxxnZxstJTj7/QfoaJnusmd/gGG0fEDeaOm0Th+MjZbegwI6kIckjJYPMYyWDzl09odjo6UIZ3/4AB0tM1z27I8wjJaPyBstndbpo7HR0ntUQAfyWLR3IGplmOO5+74CVvAfYyh3PyEr+I857Iwed7iC79BvvH6xFXwRneTjB2iUlekyIniCIcp6Ql6U5bROn4xFWd6TAjqQp6K9A+HaNXOAgCjrKYZyHyEkynrKYWf0tMMoy6HfeEfEoiwRneTTB2iUleUyIniGIcp6Rl6U5bROn41FWd6zAjqQ56K9A9F71rqONgYJiLKeYyj3YCFR1nMOO6PnHUZZDv3GGxyLskR0ks9HeyfJ9d7aCxXcOhBHJPQCQyf5IkNE+CJjRKiWIjYkuH88YoPDP8F5iaGhq0+8Y9u7/OOfl6O8/SibvMzQfl5haD+vMLYfCX+M8GqUv0Oq/OhVBl96jcGXXmP0Ja42NSzKN/vjsv9wpgmL6z+fW+2wr3doa89l/en2sxrbj9SVGfV+d7TruMZlfy/WUAJmh68zBbauo5H0lx1GI2/E1ne9NwQ455uxXiTo/ZAQ/TqujfY1JrUWcBdDfDcqyuNaNYdby1Du0ULi2rccxrUObe2NFjAfeovBb95mmA+/XaF0Pz2JHfxPAjr4ddHewd+Ji8iuHXa9gIWr9QwN9R2GhvoO82Ml6xjq4V0B9n+XodwbGOy/gdH+XO1grICBmsP+44QEeO85DPAc2tobx7Bw+R5pP/rj+qaPy2WW993ZJlNqcPd+hejX8YNoD+7uYgruPhQwuH/I0LlvZBjcNzIHdx8w1MNHAuz/EUO5P2aw/8fMwR1HOxgvILjjsP8EIcHdJofBnUNbexMYgrtN/MFdtsvgbnPsHpq3WUBwt0XIDd5OLp3zk5hzep8IcM5PhThnjkvn/CzmnN5nApzzcyHO6XRY/8JdoTOkOucXApzzywPROb+KLSh6Xwlwzq8lvNj/NcPE+hsBC0rfMJT7W4YFpW/5J8RO5xxbY52Tt1VA5/SdhM7pO4ZG+r2Azul7hnJvY+ictvF3TgUuO6cfYnNO7wcBndOPQsL6yS6d86eYc3o/CXDOn4U4Z6FL59wec05vuwDn/EWIczod1nfEVuu8HQKc89cD0Tl/i02Ivd8EOOfvEibEvzNMDP8QMCH+g6HcfzJMiP/knxA7nXPsjHVO3k4BndNfEjqnvxga6d8COqe/Gcr9D0Pn9A975+Q53Z9iV2zO6e0S0Dn9KyOs9zJcOmcgKeacLuuAS8e4JBnOmenSOeNjzunFC3DOBCHO6XRYT3RXaLGrdYkCnLPCgeicSe4KLXZCnCTAOSu61pFjQqyUdD0xrOS44BwT4koM5U52WG49IVbXTAvs+YnmOUflWOfkVRbQOaVI6JxSGBppFQGdUxWGcldl6JyqJvG9Sc71XyOpUW5/tXtGKoP9qwnw+2oM5a7O4PfVGf2e679magiwfw0G+9dksH9NRvtztYM8ATtocNg/X8gOGrXc+ann0NZePsMOGrUY28/2OJ64obaAuKE2Q/up43idvlpg74/LeuWo2zoCJnR1o31Cx9UwDxLQMA9iaJj1HDfM1MDeH5f1ylG39QQ0zPoHasNsIKBhNmBomA1jI6bXUEDDbBTtDVM5aF0GBy0U8Fco9RnKXSRkKtjY4VTQoa29oij/L3vVXhox+M3UKG8vqtyNGcp9HFN7SXRcftqR+y1zE4dtz6HfeC5twRxUePp6B2JQ0URCUJGc6L6zaCrg/kJThk4yjeH+QprA9dFmUW5/FVQ2Y7B/cwF+35yh3Acz+P3BzPfVONr/dAH31Tjsf4KQydQhDgM6h7b2TmC4r3ZIiIcFXdfnoQ7rM9r/f/5Qxv5oBWRwD8M43IKhX26xH34V9PfxXPpVC4cTwpYM9dmS0a9UfH8nw/NDJwtYNFzDUO4ZQsa5Vg7bj0NbezME+M3rDH7TWsB86E2GcreJ8nLfw/T/8rMO0P8JP1VI/9jWYf/o0NbeqQxxa1sy3+Oqz3YO6zPa/861HWO8difTPKA9Q9zaPgLzAJd+1d7hPKADQ312iMB8vaPD+oz2f+bryNhO72Jqp0EGvwpGoJ269Kugw3bqMdSnx/y+zxaGuCxdwPzjU4ZyZwgo9+cM5c4UUO4vGcqdJeD+G8cf+WQz9HPZzPffOP4zpBNDPXRi7u9/ZKiHHAHt/2eGcucKKPcvDOXuLKDcvzKU+zAB/T3HVtBdGPq5Lsz9Pceus10Z6qErc3//L0M9dBPQ/uMYnjvpLqDcCQzl7iGg3BUYyt3zAN1MrBdDP9eLub/n2LeoN0M99I7AumufA2g/hz6MfnUP035IfRn8qm8E1l1d+lVfh+uu/Rjqsx/Wp9S3YF+Oi34dD3c5vko11NaE6Nexf8xQQe97AYYaEDNU0PtBgKGOiBkq6P0kwFADY4YKetsFGOrImKGC3g4BhhoUM1TQ+02AoQbHDBX0/hBgqCExQwW9nQIMNTRmqKD3twBDDYsZKujtEmCo4TFDBT21q1G06zgiZqigFy/AUCNjhgp6iQIMNSpmqKCXJMBQoxn2Div+uL5vfNQBtF/JUcz3jTn2exrDcJ9zTATuG7v0qzEO7xuPZajPsVifFQK7/ywvLrD3x7W/ZQTclkN/xiUxKjwuyf11j3boHFzlPjqptIIdXTdYAa9DLi3C2Tj1TBeipydEz5aOoxjnL2MFdu/uG++43IkOr5XFZOuA2zKXDAKKk/H7MWD/8YAJgImASYA8QD6gADBZ9eeujao6y8yAe2fODLjtfBOI49GPa73HJ0W1A3n6C62LQhyVipKwQhLw4GaSLopAGDref3SQjo7pFTqMNIqYjOq6J3RZ5mNDXCs/WDA5y8vPntzJK8zLyikoyM3wvPS87Lzs/PScosL8LC8nKweuWZCXngPZpecVeIXBvOzCSIbaxya572XVZ0oSo8JTGELtqVEeaqtyT2UItUPp6qIDULq6arAlfx7h0EbHMcyV1TWbBXbPlSM1gk4SOIIej348jY6gxxsj6LQIjKCTHI6gxzt0zmlCRlCXZZ4udASdzjSCnpDEqPAJDCPoiVE+gqpynyhkBJ2GuroeQV3a6CSGEfSk/2AEzYvuEVR/0mldnIx+PIOOoOrgPyQ9I2nfW1cG/X32qDxbhyos2v052aFzzhAygros8ynkWl5ORnp6pwx1Xs5kWB+aXJCek54+OT8zWBDMK0gvzM30cosy0zMzCiYX5MM187yiYFFeQW5Rzm69IjmCnsI0gs5MYlR4JsMIOivKR1BV7llCRtAZqKvr657KMOqdiiN9JEe9fIGj3mnoe7PpqHeaMerNjsCol+9w1DvNYaOfLWTUc1nm04WOeqczjXpnJDEqfAbDqHdmlI96qtxnChn1ZqOurq97FsOod9Z/MOoVCFwtPRt9bw4d9c42VkvnRGC1tMDhaunZDhv9HCGjnssynyN0tfQcplHv3CRGhc9lGPXOi/JRT5X7PCGj3hzU1fVqqUsbnc8wgp6Pq6UcdaqeKDo6yX0nmOlQx7lJvH4Z9PcpfrR0LkM0dnqV6G6P6tE6jnKfUUXGQO/QPt4ZUf5faEVMtr4gytu2KvMFDOW+kGGcuDCJ790g9Vg6h/0vEmD/ixjKfTGD/S8OMTl03eddkHTg2H4OU593iQCfv4Sh3Jcy+PyljH1eSyb7XybA/pcxlHseg/3nRaDPuyTpwLG9eq2Lw+fPjvK5zGSmtj5HyFzGoX28OVE+l5mBtg64vS6LX6rX+NTrd64X+bleD/Rb3vlR3j/OZuonzovy/lGVeT5Duc8X0j86tI93fpT3jxOZfPzCCNk6itZdvQujvF2r63HY+uIo9/EJXHN7If2ZQ/t4l0S5rfU83nUdznU4L7ycYW58Oc6N9XYIuvxqLX8XsPqvFcWVAQuSSs/7DA0wAc+biDwNeQbybOQ5yJON68Y4xjGOcYxjHOMYxzjGMY5xjGMskdsCriDzZH1P5hic9y5AvgK5JuDKpN1vvtAtHuknDrkHctDfx3OxNzC+sRixN18W4r24q+ibLwuxonX6qgi8+TLW4ZsvCx0uDl3l2Kim07m4ObQwQjdUg/4+xZucf5nA8HBLlC+Cqj+bP5xhwXs+04K36z8JuNrdAqvn0NbefAF+05/BbxZF+Y1+Ve4BDOW+RkC5j2Ao97UCyj2QodzXCSj3kQzlXiyg3IMYyn29gHIPZij3DQLKPYSh3DcKKPdQhnIvEVDuYQzlXiqg3MMZyr1MQLlHMJT7JgHlHslQ7psFlHsUQ7lvEVDu0QzlXu6w3GqxszGgOl5Pzb3VfE/NfdQ8QMXEKj5UsZKKG9QYqsYT1beqfka1OeV/yhbLyboSx2Ipx0OAtzqsywSsS/Pj6vpcdXtrUvTreJtLHaUaSt3diHYdb48ZKuhtFfC/5itihgp63wsw1MqYoYLeDwIMdUfMUEHvJwGGujNmqKC3XYCh7ooZKujtEGCoVTFDBb3fBBjq7pihgt4fAgx1T8xQQW+nAEPdGzNU0PtbgKHuixkq6O0SYKj/xQwV9NRjyNGu4/0xQwW9eAGGeiBmqKCXKMBQD8YMFfSSBBjqIZeGUjdhmwRKb8KqeyhqeV6t/KpFRbVepZZC1CxbTeDU3ECFnSqiUYOl6odVE1fe8xDjTVh1A/ZKhpuwVwjYUes2hnJfyfRAfqJju9/m8AWZhx0+3O/QbzyXtkjA9mx+XOmqr3cgPgjwsGsduZ5UiXd8XZdbGD3CsIXRI/jWXwWsUzIOBbicISPA04G61jNdiJ6eED1bJsnQcz6TngG3ega7kms+ig33MeTHkZ9AfhL5KeSnkZ9Bfhb5OeTnkV9AfhH5JeSXMbBKw/xfgfSrgNcAqwFrAK8D3gC8CVgLeAvwNmAdYD3gHcC7gA2A9wDvAz4AfAjYCPgI8DFgE2AzYAvgE8CngM8AnwO+AHxp6PIVpL8GfAP4FrAV8B3ge8A2wA+AHwE/AX4GbAf8AtgB+BXwG+B3wB+APwE7AX8B/gb8A9gF+FfVQ0XIFxAPSAAkAipU3K1LD9QlCdIVAZUAyYDKgBRAFUBVQCqgGqA6oAagJqAWoDagDqAu4CBAPUB9QANAQ0AjQGNAE0BTQBqgGaA54GDAIYBDAS0ALQGtAK0BbQBtAe0A7QEdAB0BQYAHSAdkADIBWYBsQCdADiAX0BlwGKALoCugG6A7oAegJ6AXoDegD6BvxT3t0g/ShwP6AwYAjgAMBBwJGAQYDBgCGAoYBhgOGAEYCRgFGA04CjAGMBYwDnA04BjAeMAEwETAJEAeIB9QAJgMKERddIMsgvSxgCmAqYDjAMcDpgGmA04AnAg4CXAyYAbgFMBMwCzAqYDTALMBpwPOAJwJOAtwNmAO4BzAuYDzAOcD5gIuAFwIuAhwMeASwKWAywDzAPMBlwMWAK4AXAlYCLgKcDVgEeAaLEs9LMu1kL4OsBhwPeAGwI2AJYClgGWAmwA3A24BLAfcCrgNcDtgBWAl4A7AnYC7AKsAdwPuwbz0JPdeSN8H+B/gfsADgAcBDwEeBjwCeBTwGOBxwBOAJwFPAZ6uiH1OxT1jjWch/RzgecALgBcBL+G5LyO/UnHPdvUqpF8DrAasAbwOeAPwJmAt4C3A24B1gPWAdwDvAjYA3gO8D/gA8CFgI+AjwMeATYDNgC2ATwCfAj4DfA74AvAl4CvA14BvAN8CtgK+A3wP2Ab4AfAj4CfAz4DtgF8AOwC/An4D/A74A/AnYCfgL8DfgH8AuwD/qnJXgjID4gEJgERABUBSpT1tUhHSlQDJgMqAFEAVQFVAKqAaoDqgBqAmoBagNqAOoC5eqwpe6yBI1wPUBzQANAQ0AjQGNAE0BaQBmgGaV9otczDyIciHIrdAboncCrk1chvktsjtkNsjd0DuiBxE9pDTkTOQM5GzkLOROyHnIOcid0Y+DLkLclfkbsjdkXsg90TuperOdfCh/itQ/befORFx8T+Erq51tMPVAD0ReSypdC9VlX48ac/tSZ4yfn/a+P0ZI/2scf4LRvpF4/yXjPTLxvmvGunVRvp1I/2mkX7LSK8z0u8Y6Q1G+n0j/aGR/shIbzLSW4z0p0b6cyP9pZH+2kh/a6S/M9LbjPSPRvpnI/2Lkf7VSP9upP800n8Z6X+M9L9GWgVuNJ1gpCsY6cON9AAjPdBIDzLSQ4z0MCM9wkiPMtJHGemxRvpoIz3eSE800nlGusBIFxrpY430cUZ6upE+yUifYqRPNdKnG+mzjPQ5Rvp8I32hkb7ESM8z0guM9EIjvchIX19xz/7hBuP3G430Tcb5Nxu/32KkbzfOX2H8vtJIrzLOv9v4/R4j/byRfslIv2ykXzHSrxnpNUb6DSO91ki/baTXG+l3jfR7RvoDI73RSH9spDcb6U+M9GdG+gsj/ZWR/sZIbzXS3xvpH4z0T0Z6u5HeYaR/M9J/GOmdRvpvI73LSKtgkqbjjXSikU4y0pWMdBUjXd1I1zbS9Yx0QyPdxEg3M9KHGOk2Rrqdke5gpINGWgWLPUi6i/F7VyPdzUh3x3QAj6lPD+Sgv4+n/zM6wbhutMaAfq/Vu5Lbuyyu7aFiyd6V9r6u33L3qeR2odF1uVWZ+zCUu6/Dcuv22JexPbZksn8/Afbvx1Duwxnsfzixv/64vplH2+v/d9ureJDD5/sL8Pn+DOUewODzA/bD56NojPKi3favoM+77jd6O+w3jmDwoyMYx051s5+jH7k6yp8+e5QpZlgk5P/PHNrHWxTlW7g+xmTrgQLGyoEM5T6SoY87krGPUw8Kcdh/kAD7D2Io92AG+w+OwPxgYKUDx/Yek89fF+Xj+nNMff1iIeO6Q/t4i6N8XH8abR1we10Wv5zP5Jc3RrmNnmEq9xIh7dGhfbwlUW7rJ5lsfZOQ/013Oae6ScD/pnPY+pYo9/EnmHx8uZD+zKF9vOVRbusXmWw9xPH8Sf0X23xUUq1rqf9eewz5ceQnkJ9Efgr5aeRnkJ9Ffg75eeQXkJXuil/C9MvIryC/ivwa8mrkNcivI7+B/CbyWuS3kN9GXoe8Hvkd5HeRNyC/h/w+8gfIHyJvRP4I+WPkTcibkbcgf4L8KfJnyJ8jf4H8JfJXyF8jf4P8LfJW5O+Qv0fehvwD8o/IPyH/jLwd+RfkHci/Iv+G/DvyH8h/Iu9E/gv5b+R/kHch/4usXp5QHIccj5yAnIhcATkJuSJyJeRk5MrIKchVkKsipyJXQ66OXAO5JnIt5NrIdZDrIh+EXA+5PnID5IbIjZAbIzdBboqchtwMuTnywciHIB+K3AK5JXIr5NbIbZDbIrdDbo/cAbkjchDZQ05HzkDORM5CzkbuhJyDnIvcGfkw5C7IXZG7IXdH7oHcE7kXcm/kPsh9kfshH47cH3kA8hHIA5GPRB6EPBh5CPJQ5GHIw5FHII9EHoU8Gvko5DHIY5HHIR+NfAzyeOQJyBORJyHnIecjFyBPRi5ELkI+FnkK8lTk45CPR56GPB35BOQTkU9CPhl5BvIpyDORZyGfinwa8mzk05HPQD4T+Szks5HnIJ+DfC7yecjnI89FvgD5QuSLkC9GvgT5UuTLkOchz0e+HHkB8hXIVyIvRL4K+WrkRcjXIF+LfB3yYuTrkW9AvhF5CfJS5GXINyHfjHwL8nLkW5FvQ74deQXySuQ7kO9Evgt5FfLdyPcg34t8H/L/kO9HfgD5QeSHkB9GfgT5UeTHkB9HfgL5SeSnkJ9Gfgb5WeTnkJ9HfgH5ReSXkF9GfgX5VeTXkFcjr0F+HfkN5DeR1yK/hfw28jrk9cjvIL+LvAH5PeT3kT9A/hB5I/JHyB8jb0LejLwF+RPkT5E/Q/4c+QvkL5G/Qv4a+Rvkb5G3In+H/D3yNuQfkH9E/gn5Z+TtyL8g70D+Ffk35N+R/0D+E3kn8l/IfyP/g7wL+V/kAMZ5ccjxyAnIicgVkJOQKyJXQk5GroycglwFuSpyKnI15OrINZBrItdCro1cB7ku8kHI9ZDrIzdAbojcCLkxchPkpshpyM2QmyMfjHwI8qHILZBbIrdCbo3cBrktcjvk9sgdkDsiB5E95HTkDORM5CzkbOROyDnIucidkQ9D7oLcFbkbcnfkHsg9kXtpOwCGVorsfzr3c/A+E/79b0EIdf1eO+R/Og/DdenhlQKlDyUPq7TnSwHDQ9z0SnCjVIly/fw/CFzyn87DHN5AG17JrVFdT9LVxH9YhG4uBP19svsxLVSMYLjRO4LxRr/6b+s7K7ivh9sF/EdxqyT35V4h5L+tRzp8CNKhrb0VAvymNYPfjIr2h6eh3G0Yyj1aQLnTGcp9lIByZzCUe4yAcmcylHusgHJnMZR7nIBy5zCU+2gB5c5lKPcxAsrdmaHc4wWU+zCGck8QUO5uDOWeKKDc3RnKPUlAuXswlDtPQLl7MpQ732G51eJnm0DpLm9qDqrmPWoO0BZ07wDwACo2VnGiiplU/JANxzoB1JiqxhfV16p+pwsc6wpQbVH5pbKR0reXWttJCpR8pKwdFTis6wSsa/Pj6vpMdesVVIp+HSe71pHjLZahDA56Z5Q/YanKPZmh3HcJ2R9/ssObDYUOFwgd+o13VxUxnSTb/vgSOsnCKO8kS0Zx14/7unw1vojhblIR390kEXV6bCzK8o4V0IFM4e5AXEQbUxicfYpDZ58qx9nZRksJzj71AB0t01327McxjJbHyRstndbp8bHR0jteQAcyTcJoOY1htJzm0Nmnx0ZLEc4+/QAdLTNc9uwnMIyWJ8gbLZ3W6Ymx0dI7UUAHclK0r+CrlWGOW0z3CFjBP4mh3PcKWcE/yWFndLLDFXyHfuPdG1vBF9FJnnyARlmZLiOCGQxR1gx5UZbTOj0lFmV5pwjoQGZGe5TF9S8I9wuIsmYylPsBIVHWTIed0SyHUZZDv/EeiEVZIjrJWQdolJXlMiI4lSHKOlVelOW0Tk+LRVneaQI6kNnRHmXp/yBxHW08LCDKms1Q7keERFmzHXZGpzuMshz6jfdILMoS0UmeHu2dpIQnJ89giLLOYNzbRE3v5ya5r9O5Dv8o9EyGxqM+Zpmj6c9Rz6rktlNz7TfKJmcxDNxnM7Sfsxnbj4Q/j5sT5e9lKj+aw+BL5zD40jmMvsTVph6P8v2CuOz/hJB9ps512Nc7tLXnsv50+zkX24/U1Y6X46Jfx/Nc9vdSDXWWgBnX+UyBretoJP0sh9HI3NiaqTdXgHNeEOtFgt4PCdGv44XRvm7TFtcYXMd3T0d5XKvmcBcyxLXPCIlrL3IY1zq0tfeMgPnQRQx+czHDfPjiSqX7jkvs4H8S0MFfEu0dfAemDv5SAQtXlzI01MsYGupljAtXaqC7hKEe5gmw/zyGcs9nsP98RvtztYPnBQzUHPZ/QUiAd7nDAM+hrb0XGBYuLyftR39c3/RxucyywJ1tMqUGdwsqRb+OV0R7cOcxBXdXChjcr2To3BcyDO4LmYO7Kxjq4SoB9r+KodxXM9j/aubgjqMdvCwguOOw/ytCgrtFDoM7h7b2XmEI7hbxB3fZLoO7a2L30LxrBAR31wq5wdvJpXNeF3NO7zoBzrlYiHPmuHTO62PO6V0vwDlvEOKcTof1G90VOkOqc94owDmXRPuajVqvGccwd1kt4ImLJQzlXiNkzrbU4ZzNoa29NQLm+ksZ/GYZw1rPMqKn/kTzoHZT7EaEd5OAQe3maB/UspluRNwiYCH6FobOaTlD57Sc+UbEzQz1cKsA+9/KUO7bGOx/G/ONCI528KaA4ITD/muFBLW3OwxqHdraW8twI+J2/hsRTtd6V8SCO2+FgOBuZbQHd52Ygrs7BAzudzB07ncyDO53Mgd3Kxnq4S4B9r+LodyrGOy/ijm442gH6wQEdxz2Xy8kuLvbYXDn0Nbeeobg7m7+4K7AZXB3T+xeqXePgODuXiH3Sie7dM77Ys7p3SfAOf8nxDkLXTrn/THn9O4X4JwPCHFOp8P6g7GnTLwHBTjnQxKeMpnAMHfZIOApk4cYyv2ekDnbww7nbA5t7b0nYK7/MIPfPMKw1vMI/1MmTge1R2M3IrxHBQxqj0X7oNaF6UbE4wIWoh9n6JyeYOicnmC+EfEYQz08KcD+TzKU+ykG+z/FfCOCox18KCA44bD/RiFB7dMOg1qHtvY2MtyIeJr/RoTTtd5nYsGd94yA4O7ZaA/uujIFd88JGNyfY+jcn2cY3J9nDu6eZaiHFwTY/wWGcr/IYP8XmYM7jnawSUBwx2H/zUKCu5ccBncObe1tZgjuXmIP7jyn/wfwcuxeqfeygODuFRn3Sr0Ml875asw5vVcFOOdrQpwz06Vzro45p7dagHOuEeKcTof112NPmXivC3DONyQ8ZZLPMHf5VMBTJm8wlPszIXO2Nx3O2Rza2vtMwFz/TY7XhRnWetayP2XidlB7K3YjwntLwKD2drQPar2YbkSsE7AQvY7jdTeGzmk9842Itxnq4R0B9n+HodzvMtj/XeYbERzt4EsBwQmH/b8SEtRucBjUOrS19xXDjYgN/DcinK71vhcL7rz3BAR370d7cNebKbj7QMDg/gHHo5MMg/uHzMHd+xyPUgqw/0aGcn/EYP+PmIM7jnbwrYDgjsP+W4UEdx87DO4c2trbyhDcfczYfvoxjZ+bBPSfmzie0mLoPzcz21+NofGOr9vb4WRhiwBf2sLgS58w+NInzGMxR5vaJmAs5rD/D0LG4k8djsUObe39wDAWf8rYfsYyjcWfOX52qUlg74+r6weY6vazStGv4+fRvtjC5aBfOHbQxgF5DvqFAAf98kB10K9iPaj3lQAH/VrCA3afM4SKPwt4wO5LhnJvFxIif+MwRHZoa287s9/4rTfVXr5m8Jtfo7y9qHJ/w1Du35jaS6Lj8n/tcPnoW4dtz6HfeC5twRxUePp6B2JQ8a2UqNf1Gq66Zg9HjXCrgDXcrQwd7ncMa7jfMa9B9Waoh+8F2P97jrVrBvtvY17D52gHfwpYw+ew/04hE5QfHAZJDm3t7WRYw/8hxMOSruvzR4f1+bjD+nyCoT5/ZOyPWsJ4dDTDit5PDP3yT/vhV0F/H8+lX/3kcJL1M0N9/szoVyq2HcnQ3/8jYCHuPIZy7xIyzm132H4c2trbJWBBahSD38RVjf72cj5DueOrymgvvzhsLw5t7cVHud+o9jKawW8qCGgvFzCUO0lIe9nhsL04tLWXFOV+05Ypzk+O8nKrdYeLGNpLZSHt5VeH7cWhrT2X9afnM79W2nsHDtf1+ZvD+nzeYXz7AsO6w2+M88MOTP3R7wzz5N8jsO7g0q9+d7ju8AdDff4RgfXBPx3W58sO2+krDO30T8Z26jG1050MfrUzAu3UpV/tdNhO/2Koz7+Y1wePYojLqgqYv13LUO5UIfHo3w7bj0Nbe6kC1jvGMPhNDQHtZTFDuWsKaS//OGwvDm3t1RTQXsYy+E0dAe3lBoZy1xXSXnY5bC8Obe3VjXK/UTH+OAa/qS9gfXApQ7kbCGkv/zpsLw5t7TVgWB/8NwLrg4Fkd3XwpsN1h7UM6w6qrGl4TdftMptp3SEu2X09xCXzrzu49CtaB77vszPUZ3wy//pggsP6XOewna5naKcJjO20E1M7TWTwq8QItFOXfpXosJ1WYKjPCsm864NHM8RljQXM3+5lKHcTIfFoksP249DWXhMB6x3HMPhNMwHt5X8M5W4upL1UdNheHNraay6gvYxn8JtDBbSXBxjK3UJIe6nksL04tLXXQsD64AQGv2ktYH3wYYZytxHSXpIdtheHtvbaMKwPqrJyrw9WdlifHzpcd9jIsO5QmXF+2IVp3SGFYZ6cEoF1B5d+leJw3aEKQ31WicD6YFWH9bnJYTvdzNBOqzK2065M7TSVwa9SI9BOXfpVqsN2Wo2hPqsxrw9OZIjL2guYv73CUO4OQuLR6g7bj0Nbex0ErHdMYvAbT0B7eY2h3OlC2ksNh+3Foa29dAHtJY/Bb7IEtJc1DOXOFtJeajpsLw5t7WULWB/MZ/CbXAHrgxz/UN9ZSHup5bC9OLS115lhfbBWBNYHazusz2j/U93ajPPDXkzrDnUY5sl1IrDu4NKv6jhcd6jLUJ91I7A+eJDD+oz2/0c8iLGd9mZqp/UY/KpeBNqpS7+q57Cd1meoz/oRaKcNHNZntP93WgPGdtqPqZ02ZPCrhhFopy79qqHDdtqIoT4bYX1K/Well+OiX8fGDu0m1lBbE6JfxyYxQwW97wUYqmnMUBBmCDBUWsxQQe8nAYZqFjNU0NsuwFDNY4YKejsEGOrgmKGC3m8CDHVIzFBB7w8Bhjo0Zqigt1OAoVrEDBX0/hZgqJYxQwW9XQIM1SpmqKCn/ik32nVsHTNU0IsXYKg2MUMFvUQBhmobM1TQSxJgqHbJ7nUs/ri+b9ze4f29aP+/zvaM943HMt037sBwn7NDBO4bu/SrDg7vG3dkqM+OWJ8VArv/O918dpLD33ICbsuhP8FkRoWDyQx/3ODQObjK7SWXVrCj6wYr4HWSArKcjVPPTkL0zBaip8s/4w2ln++XB+AaEAwWd7ouy53o8FqdmWwdcFvmkkFAse6u0uFLBiATkAXIBnQC5AByAZ1Vf+78TUt18YB7Z84NuO18i3dwDWEQ13pnJEe1A3n6C62Lw9CDuiRjhSTgwc0k3SUCYWiG/+ggHR3TO8xhpNGFyaiue0KXZe4a4lr5wYLJWV5+9uROXmFeVk5BQW6G56XnZedl56fnFBXmZ3k5WTlwzYK89BzILj2vwCsM5mUXRjLU7prsvpdVn27JjAp3Ywi1u0d5qK3K3Z0h1A6lq4sOQOnqqsHq67q0UQ+GubK6ZrPA7rlypEbQbIEjaE/04150BO1pjKC9IjCCZjscQXs6dM5eQkZQl2XuLXQE7c00gvZJZlS4D8MI2jfKR1BV7r5CRtBeqKvrEdSljfoxjKD9/oMRtFN0j6D6k07r4nD04/50BFUH/yHp/sn73uog6O+zR+XZOlRh0e7P4Q6ds7+QEdRlmQeQa3k5GenpnTLUeTmTg17m5IL0nPT0yfmZwYJgXkF6YW6ml1uUmZ6ZUTC5IB+umecVBYvyCnKLcnbrFckRdADTCHpEMqPCRzCMoAOjfARV5R4oZATtj7q6vu6RDKPekTjSR3LUyxE46g1C3xtMR71Bxqg3OAKjXo7DUW+Qw0Y/WMio57LMQ4SOekOYRr2hyYwKD2UY9YZF+ainyj1MyKg3GHV1fd3hDKPe8P9g1MsVuFo6An1vJB31RhirpSMjsFqa63C1dITDRj9SyKjnssyjhK6WjmIa9UYnMyo8mmHUOyrKRz1V7qOEjHojUVfXq6UubTSGYQQdg6ulHHWqnijykt13grkOdRybzOuXQX+f4kdLxzJEY12rRnd7VI/WcZS7W1UZA71D+3jdonzv7C5Mth4X5W1blXkcQ7mPZhgnjk7mezdIPZbOYf9jBNj/GIZyj2ew//gQk0PXfd645APH9iOZ+rwJAnx+AkO5JzL4/ETGPk+9OsJh/0kC7D+Jodx5DPbPi0CfNyH5wLG9eq2Lw+d7RvlcpjNTX99LyFzGoX28XlE+l+mPtg64vS6LX6rX+NTrd64X+bleD/Rb3vwo7x8HM/UTfaO8f1Rlzmcodz8h/aND+3j9orx/zGLy8QERsnUUrbt6A6K8Xavrcdh6YJT7eCaTjx8ppD9zaB/vyCi3tZ7Hu67DsQ7nhQUMc+MCnBvr7RB0+dVa/i5g9V8riisDJieXnvcZGiATz8tC7oXcH3kw8kjkzsZ1YxzjGMc4xjGOcYxjHOMYxzjGMZbIbQGFZJ6s78mk47x3MnIhck1AUfLuN1/oFo/0E4fcAzno7+O52BsY31iM2Jsvx+K9uCn0zZdjsaJ1ekoE3nzp6PDNl2MdLg5NcWxU0+lc3Bw6NkI3VIP+Pp7a4Pxqhk3Oh0T5IuhZsAjamGHBeyjTgrfrPwmY6m6B1XNoa29olPuNai+LGNrLCAHtpQlDexkppL0c57C9OLS1N1JAe7mGob0cJaC9NGVoL2OEtJfjHbYXh7b2xghoL9cytJejBbSXNI4XaoS0l2kO24tDW3vHCGgv1zG0l4kC2kszjpcxhLSX6Q7bi0Nbe5MEtJfFDO2lQEB7ac7QXiYLaS8nOGwvDm3tTRbQXq5naC/HCmgvBzO0lylC2suJDtuLQ1t7UwS0lxsY2svxAtrLIQztZZqQ9nKSw/bi0NbeNAHt5UaG9nKigPZyKEN7OUlIeznZYXtxaGvvJAHtZQlDezlFQHtpwdBeZgppLzMctheHtvZmCmgvSxnay2kC2ktLhvYyW0h7OcVhe3Foa2+2gPayjKG9nCmgvbRiaC9nCWkvMx22F4e29s4S0F5uYmgv5whoL60Z2su5QtrLLIftxaGtvXMFtJebGdrLXAHtpQ1De7lASHs51WF7cWhr7wIB7eUWhvZysYD20pahvVwipL2c5rC9OLS1d4mA9rKcob3ME9Be2jG0l/lC2stsh+3Foa09l/WnXhprB6iO11PvMKjnstWzpur5OfVMkHrOQd27Vfej1Bq7WjdUayFqfqdiVjUOq75lNnk/h+OlM47NlE53uClOAtal+XF1fa66dVkHXDqe4VJHqYZSb4lGu45nxgwV9LYmRL+OZ8UMFfS+F2Cos2OGCno/CDDUnJihgt5PAgx1TsxQQW+7AEOdGzNU0NshwFDnxQwV9H4TYKjzY4YKen8IMNTcmKGC3k4BhrogZqig97cAQ10YM1TQ2yXAUBfFDBX01HZu0a7jxTFDBb14AYa6JGaooJcowFCXxgwV9JIEGOoyl4ZSN2HbB0pvwqp7KGp5Xq38qkVFtV6llkLULFtN4NTcQIWdKqJRg6Xqh1UTV95zGeNNWHUDtojhJuwVAv6Z7AyGcl/J9CBEomO7n+Fwo9F5Dh+qcOg3nktbJGB7Nj+udNXXOxAfBJjnUscKqGDS3rZyrnhOgKexu9azkxA9s4Xoqf4aTIKe+ck8egbc6hnsSq45H4Ody5EXIF+BfCXyQuSrkK9GXoR8DfK1yNchL0a+HvkGDALSMP8bIb0EsBSwDHAT4GbALYDlgFsBtwFuB6wArATcAbgTcBdgFeBuwD2AewH3Af4HuB/wAOBBwEOAhwGPAB4FPAZ4HPCEocuTkH4K8DTgGcCzgOcAzwNeALwIeAnwMuAVwKuA1wCrAWsArwPeALwJWAt4C/A2YB1gPeAdwLuADYD3AO8DPgB8CNiIuvRAXT6C9MeATYDNgC2ATwCfAj4DfA74AvAl4CvA14BvAN8CtgK+A3wP2Ab4AfAj4CfAz4DtgF8AOwC/An4D/A74A/AnYCfgL8DfgH8AuwD/KvtVBh0B8YAEQCKgAiAJUBFQCZAMqAxIAVQBVAWkAqoBqgNqAGoCagFqA+oA6gIOAtQD1Ac0qLynXRpCuhGgMaAJoCkgDdAM0BxwMOAQwKGAFoCWgFaA1oA2gLaAdoD2gA6AjoAgwAOkAzIAmYAsQDagEyAHkAvojLroBnkYpLsAugK6AboDegB6AnoBegP6APoC+gEOB/QHDAAcARgIOBIwCDAYMAQwFDAMMBwwAjASMAowGnAUYAxgLGAc4GjAMYDxgAmAiYBJgDxAPqAAMBlQCCgCHAuYApgKOA7LUg/LcjykpwGmA04AnAg4CXAyYAbgFMBMwCzAqYDTALMBpwPOAJwJOAtwNmAO4BzAuYDzAOdjXnpCNhfSFwAuBFwEuBhwCeBSwGWAeYD5gMsBCwBXAK4ELARcVRn7nMp7xhqLIH0N4FrAdYDFgOvx3BuQb6y8Z7taAumlgGWAmwA3A24BLAfcCrgNcDtgBWAl4A7AnYC7AKsAdwPuAdwLuA/wP8D9gAcADwIeAjwMeATwKOAxwOOAJwBPAp4CPA14BvAs4DnA84AXAC8CXgK8DHgF8CrgNcBqwBrA64A3AG8C1gLeArwNWAdYD3gH8C5gA+A9wPuADwAfAjYCPjJs8jGkNwE2A7YAPgF8CvgM8DngC8CXgK8AXwO+AXwL2Ar4Dq9VBa/1PaS3AX4A/Aj4CfAzYDvgF8AOwK+A3wC/o23+QP4TeSfyX8h/I/+DvAv5X+RAym6KQ45HTkBORK6AnIRcEbkScjJyZeQU5CrIVZFTkashV0eugVwTuRZybeQ6yHWRDwKOcx18eNBB5wbc/89yrsNreQ5nrqr+1CxRBS5pgdK/IFmAA6lOLzR+v8r4/Wojvcg4/zojvdg4/3ojfYNx/hIjvcxI32yklxvp24z0CiN9h5G+y0jfbaTvNdL/M9IPGOmHjPQjRvoxI/2EkX7KSD9jpJ8z0i8Y6ZeM9CtG+jUjvcZIv2Gk1xrpt430eiP9rpF+z0h/YKQ3GmkVuNB0EyOdZqSbG+lDjHQLI93KSLcx0u2MdAcjHTTS6UY600hnG+kcI93ZSHcx0t2NdC8j3ddI9zfSA430YCM9zEiPNNJHGelxRnq8kZ5kpAuMdJGRnmqkT6i8Z/9wovH7SUZ6pnH+LOP3U430Gcb5Zxq/n2WkzzXOP8/4/Xwjfa2Rvt5I32CkbzTSS430TUb6FiN9q5G+3UivNNJ3GulVRvoeI32fkb7fSD9opB820o8a6ceN9JNG+mkj/ayRft5Iv2ikXzbSrxrp1Ub6dSP9ppF+y0ivM9LvGOkNRvp9I/2hkf7ISG8y0p8a6S+N9LdGepuR/slI/2KkfzPSfxrpf420Ch5pOsFIVzDSKljsQdI1jN9rGulaRro2pgN4TH16IAf9fTwVq6kYK8G4brTGgH6vVS/F7R0B1/ZQsaTSMc6xPeqnuF1odF1uVeb6DOVu4LDcuj02YGyPauGaw/4NBdi/IUO5GzHYvxGxv/7EO64P2l7/v9texYMcPt9YgM83Zih3Ewafb7IfPh9FY5QX7ba/EX3edb9Rz2G/0ZTBj5oyjp3qZj9HP3J1lD8pNZ8pZlzE9KSUa593aB9vUZRvD3Q5k63TBIyVaQzlbsbQxzVj7OPUg0Ic9m8uwP7NGcp9MIP9D47A/CAt5cCxfTaTz18X5eP6NUx9/WIh47pD+3iLo3xcvwptHXB7XRa/zGfyyxuj3EZXM5V7iZD26NA+3pIot/WVTLa+KUK2jqI5r3dTlI+z6noctr4lyn38CiYfXy6kP3NoH295lNt6MZOtD3E8f1LPjM9HJdW61q7A7uf1FC9AvgL5SuSFyFchX428CPka5GuRr0NWuiu+HtM3IN+IvAR5KfIy5JuQb0a+BXk58q3ItyHfjrwCeSXyHch3It+FvAr5buR7kO9Fvg/5f8j3Iz+A/CDyQ8gPIz+C/CjyY8iPIz+B/CTyU8hPIz+D/Czyc8jPI7+A/CLyS8gvI7+C/Crya8irkdcgv478BvKbyGuR30J+G3kd8nrkd5DfRd6A/B7y+8gfIH+IvBH5I+SPkTchb0begvwJ8qfInyF/jvwF8pfIXyF/jfwN8rfIW5G/Q/4eeRvyD8g/Iv+E/DPyduRfkHcg/4r8G/LvyH8g/4m8E/kv5L+R/0Hehfwvsnq5Q3EccjxyAnIicgXkJOSKyJWQk5ErI6cgV0GuipyKXA25OnIN5JrItZBrI9dBrot8EHI95PrIDZAbIjdCbozcBLkpchpyM+TmyAcjH4J8KHIL5JbIrZBbI7dBbovcDrk9cgfkjshBZA85HTkDORM5CzkbuRNyDnIucmfkw5C7IHdF7obcHbkHck/kXsi9kfsg90Xuh3w4cn/kAchHIA9EPhJ5EPJg5CHIQ5GHIQ9HHoE8EnkU8mjko5DHII9FHod8NPIxyOORJyBPRJ6EnIecj1yAPBm5ELkI+VjkKchTkY9DPh55GvJ05BOQT0Q+Cflk5BnIpyDPRJ6FfCryacizkU9HPgP5TOSzkM9GnoN8DvK5yOchn488F/kC5AuRL0K+GPkS5EuRL0Oehzwf+XLkBchXIF+JvBD5KuSrkRchX4N8LfJ1yIuRr0e+AflG5CXIS5GXId+EfDPyLcjLkW9Fvg35duQVyCuR70C+E/ku5FXIdyPfg3wv8n3I/0O+H/kB5AeRH0J+GPkR5EeRH0N+HPkJ5CeRn0J+GvkZ5GeRn0N+HvkF5BeRX0J+GfkV5FeRX0NejbwG+XXkN5DfRF6L/Bby28jrkNcjv4P8LvIG5PeQ30f+APlD5I3IHyF/jLwJeTPyFuRPkD9F/gz5c+QvkL9E/gr5a+RvkL9F3or8HfL3yNuQf0D+Efkn5J+RtyP/grwD+Vfk35B/R/4D+U/knch/If+N/A/yLuR/kQMYP8chxyMnICciV0BOQq6IXAk5GbkycgpyFeSqyKnI1ZCrI9dArolcC7k2ch3kusgH6fMBh8J3tSGB2r1Dzy/px/U8rFGy/2sV7f4UhFDX77U9/YXWRQtcl26ZEih9KLlFyp4vBbQMcdMrwY1SJco18v8gcDpOXL0WDm+gtUxxa1TXk3Q18W8RoZsLQX+f7EZMCxWtGG70tmK80a/+/2pkJff1cLuA/7/azlDuFUL+/6q1w4cgHdraWyHg/+JGMfjNnQLayy8M5b5LSHtp47C9OLS1d5eA9jKawW/uEdBedjCU+14h7aWtw/bi0NbevQLay1EMfnO/gPbyN0O5HxDSXto5bC8Obe09IKC9jGHwm4cFtJd/GMr9iJD20t5he3Foa+8RAe1lLIPfPC6gvexiKPcTQtpLB4ftxaGtvScEtJejGfzmaQHtJSnZfbmfEdJeOjpsLw5t7T0joL0cw9BenhfQXioytJcXhLSXoMP24tDW3gsC2st4hvbysoD2UomhvbwipL14DtuLQ1t7rwhoLxMZ2stqAe2lOkN7WSOkvaQ7bC8Obe2tEdBeJjG0lzcFtJcaDO1lrZD2kuGwvTi0tbdWQHvJY2gv6wS0l5oM7WW9kPaS6bC9OLS157L+1MOnasNU/S8b6hkg9VyDulf7K9j/D8BfAHUvSq2vqzXDfyEdD35RAaDWRNQ8T8WuyZCuAqgGUGOz6m9UHdaCdF1A/eRSW0l5di/L4bN7CVjX5sfV9Znq1nNZB1w6ZrvWkWMXoUMZHHRDlL/hrsqdzVDu94T8l2a2w4e9OzkckBz6jefSFsydJNt/aUroJDtFeSdZMorHOy64y61Jcxie5s/he5pfRJ3mxqIsL1dAB9KZuwNxEW10ZnD2zg6d/TA5zs42Wkpw9sMO0NEy3WXP3oVhtOwib7R0WqddY6Ol11VAB9JNwmjZjWG07ObQ2bvHRksRzt79AB0tM1z27D0YRsse8kZLp3XaMzZaej0FdCC9on0FX60Mc9xi+lDACn4vhnJvFLKC38thZ9Tb4Qq+Q7/xNsZW8EV0kr0P0Cgr02VE0IchyuojL8pyWqd9Y1GW11dAB9Iv2qMsrn+h3SQgyurHUO7NQqKsfg47o8MdRlkO/cbbHIuyRHSShx+gUVaWy4igP0OU1V9elOW0TgfEoixvgIAO5Ihoj7L0f0C7jjY+FRBlHcFQ7s+ERFlHOOyMBjqMshz6jfdZLMoS0UkOlDAVHZvs/vb42GR3jfDIFJ6Oxyyz73fbHZZ5UIrbBujab5RNBjEMMoMZIurBjPuI6yDDdftxGVEPSeENWIL+Pp7yoyEMvjSUwZeGMvoSV5v6MsrfweWy/1dC3sEd5rCvd2hrz2X96fYzDNuP1Jn5y3HRr+Nwl/29VEMNEjA7GMEU2LqORtIHOYxGRsbW97yRApxzVKwXCXo/JES/jqOjfY3hV1xjcB3ffRvlca2aw41miGu3Colrj3IY1zq0tbdVwHzoKAa/GcMwHx6Dekrt4H8S0MGPjfYO/g+mDn6cgIWrcQwN9WiGhno048KVGujGMtTDMQLsfwxDuccz2H88o/252sE2AQM1h/1/EBLgTXAY4Dm0tfcDw8LlBNJ+9Mf1TR+XyywT3dkmU2pwNzEl+nWcFO3B3V9MwV2egME9j6Fzz2cY3POZg7tJDPVQIMD+BQzlnsxg/8nMwR1HO/hZQHDHYf/tQoK7QofBnUNbe9sZgrtC/uAu22VwVxS7h+YVCQjujhVyg7eTS+ecEnNOb4oA55wqxDlzXDrncTHn9I4T4JzHC3FOp8P6NHeFzpDqnNMEOOf0aF+z+ZdpzeZXAU9cTGeYs/0mZM52gsM5m0Nbe78JmOufwOA3JzKs9ZxI9NSfaB7UTordiPBOEjConRztg5r6Oy6OQW2GgIXoGQyd0ykMndMpzDciTmaoh5kC7D+TodyzGOw/i/lGBEc7+FNAcMJh/51CgtpTHQa1Dm3t7WS4EXEq/40Ip2u9p8WCO+80AcHd7GgP7iowBXenCxjcT2fo3M9gGNzPYA7uZjPUw5kC7H8mQ7nPYrD/WczBHUc7+EdAcMdh/11CgruzHQZ3Dm3t7WII7s7mD+4KXAZ3c2L3Sr05AoK7c4TcK53s0jnPjTmnd64A5zxPiHMWunTO82PO6Z0vwDnnCnFOp8P6BbGnTLwLBDjnhdG+ZpPMtGYTlxr9T5lcyDBni0/l6Y1cz9kucjhnc2hrLz7K/UZ14hcx+M3FDGs9F/M/ZeJ0ULskdiPCu0TAoHZptA9qVZgGtcsELERfxtA5zWPonOYx34i4lKEe5guw/3yGcl/OYP/LmW9EcLSDCgKCEw77JwkJahc4DGod2tpzWX+6/SzgvxHhdK33ilhw510hILi7MtqDu2pMwd1CAYP7QobO/SqGwf0q5uDuSoZ6uFqA/a9mKPciBvsvYg7uONpBsoDgjsP+lYUEd9c4DO4c2tqrzBDcXcMe3HlO/w/g2ti9Uu9aAcHddTLulXoZLp1zccw5vcUCnPN6Ic6Z6dI5b4g5p3eDAOe8UYhzOh3Wl8SeMvGWCHDOpdG+ZlOLac2mqoCnTJYyzNlShczZljmcszm0tZcqYK6/jMFvbmJY67mJ/SkTt4PazbEbEd7NAga1W6J9UKvLNKgtF7AQvZyhc7qVoXO6lflGxC0M9XCbAPvfxlDu2xnsfzvzjQiOdlBDQHDCYf+aQoLaFQ6DWoe29moy3IhYwX8jwula78pYcOetFBDc3RHtwV19puDuTgGD+50MnftdDIP7XczB3R0M9bBKgP1XMZT7bgb7380c3HG0gzoCgjsO+9cVEtzd4zC4c2hrry5DcHcPY/vpyDR+3uv4fmn7wN4fV9cPMNXtvQICvPuiPcDjctD/OXbQdgF5Dvo/AQ56/4HqoA/EelDvAQEO+mC0O6hyzvsYQsX6Am7q389Q7gZCQuSHHIbIDm3tNWD2G7/1ptrLgwx+0zjK24sq90MM5W7C1F4SHZf/QYfr2w87bHsO/cZzaQvmoMLT1zsQg4qHU3jajPNB5hGHjv6lwz1lv2LYU/YRxnWYnysFAh7DLOJRhvXcR0PcbExwXB8u/epRhx37Ywz1+RijX6lBvTXDoN5MQPA/nKHczYUE/487bD8Obe01FxAEt2Hwm0MFtJcRDOVuIaS9POGwvTi0tddCQHtpy+A3rQW0l1EM5W4jpL086bC9OLS11ybK/eZXpji/vYDnFY5iaC8dhLSXpxy2F4e29jowPK/wVIg3jVzX59MO63Obw3WHHxjWHZ5mnB/+wdQfPcMwT34mAusOLv3qGYfrDs8y1Oez+1GffvV+zmF9/uywnW5naKfPMbbTv5ja6fMMfvV8BNqpS7963mE7fYGhPl9gXh9sxxCXeQLmb8cylDtdSDz6osP249DWXrqA9Y72DH6TJaC9TGUod7aQ9vKSw/bi0NZetoD20oHBb3IFtJfjGcrdWUh7edlhe3Foa69zlPvNv0xxflcB64MnMLSXbkLayysO24tDW3vdGNYHX4nA+uCrDuvzT4frDjsZ1h1eZZwfxifz9EevMcyTX4vAuoNLv3rN4brDaob6XB2B9cE1Dusz2v+Tfg1jO63A1E5fZ/Cr1yPQTl361esO2+kbDPX5BvP6YEeGuKyngPnbOQzl7iUkHn3TYftxaGuvl4D1jiCD3/QV0F7OYyh3PyHtZa3D9uLQ1l4/Ae3FY/CbAQLay1yGch8hpL285bC9OLS1d0SU+00yU5w/6AD9P/fBQtrL2w7bi0Nbe4MZ1gffjsD64DqH9Rntf0G7jnF+WIWpP1rPME9eH4F1B5d+td7husM7DPX5TgTWB991WJ/R/m+C7zK202pM7XQDg19tiEA7delXGxy20/cY6vM95vXBdIa4bJiA+dt1DOUeLiQefd9h+3Foa2+4gPWODAa/GSWgvVzPUO7RQtrLBw7bi0Nbe6MFtJdMBr8ZK6C93MhQ7nFC2suHDtuLQ1t746Lcb2oxxfnjD9B/4psgpL1sdNheHNram8AwT94YgfXBjxzWZ7T/edBHjPPDukz90ccM8+SPI7Du4NKvPna47rCJoT43RWB9cLPD+oz2/4HYzNhO6zO10y0MfrUlAu3UpV9tcdhOP2Goz0+wPqXuEv9yXPTr+KlDu4k11NaE6Nfxs5ihgt73Agz1ecxQQe8HAYb6ImaooPeTAEN9GTNU0NsuwFBfxQwV9HYIMNTXMUMFvd8EGOqbmKGC3h8CDPVtzFBBb6cAQ22NGSro/S3AUN/FDBX0dgkw1PcxQwU99a9f0a7jtpihgl68AEP9EDNU0EsUYKgfY4YKekkCDPVTinsdiz/xhqJ+76O5LHSXAE+hXZc5zmGZuwopc7zDMncTUuYEh2XuLqTMiQ7L3ENImSs4LHPPCJU56O/j9XJYf6/G8ZTZ9aDaOyBDzz5C9OwrRM9+QvQ8XIie/YXoOUCInkcI0XOgED2PFKLnICF6Dhai5xAheg4VoucwIXoOF6LnCCF6jhSi5ygheo4WoudRQvQcI0TPsUL0HCdEz6OF6HmMED3HC9FzghA9JwrRc5IQPfOE6JkvRM8CIXpOFqJnoRA9i4ToeawQPacI0XOqED2PE6Ln8UL0nCZEz+lC9DxBiJ4nCtHzJCF6nixEzxlC9DxFiJ4zheg5S4iepwrR8zQhes4WoufpQvQ8Q4ieZwrR8ywhep4tRM85QvQ8R4ie5wrR8zwhep4vRM+5QvS8QIieFwrR8yIhel4sRM9LhOh5qRA9LxOi5zwhes4XouflQvRcIETPK4ToeaUQPRcK0fMqIXpeLUTPRUL0vEaIntcK0fM6IXouFqLn9UL0vEGInjcK0XOJED2XCtFzmRA9bxKi581C9LxFiJ7Lheh5qxA9bxOi5+1C9FwhRM+VQvS8Q4iedwrR8y4heq4SoufdQvS8R4ie9wrR8z4hev5PiJ73C9HzASF6PihEz4eE6PmwED0fEaLno0L0fEyIno8L0fMJIXo+KUTPp4To+bQQPZ8RouezQvR8ToiezwvR8wUher4oRM+XhOj5shA9XxGi56tC9HxNiJ6rhei5RoierwvR8w0her4pRM+1QvR8S4iebwvRc50QPdcL0fMdIXq+K0TPDUL0fE+Inu8L0fMDIXp+KETPjUL0/EiInh8L0XOTED03C9FzixA9PxGi56dC9PxMiJ6fC9HzCyF6filEz6+E6Pm1ED2/EaLnt0L03CpEz++E6Pm9ED23CdHzByF6/ihEz5+E6PmzED23C9HzFyF67hCi569C9PxNiJ6/C9HzDyF6/ilEz51C9PxLiJ5/C9HzHyF67hKi579C9FQXlKBnnBA944XomSBEz0QhelYQomeSED0rCtGzkhA9k4XoWVmInilC9KwiRM+qQvRMFaJnNSF6VheiZw0hetYUomctIXrWFqJnHSF61hWi50GO9TT1ywhmZ2YWdkov9DK8vGB6bn5OVjAzKz87x8vxsnKyJqfnZGQU5mTmdMrNz+0UzPUyMwq9oqzcjCKtYHIg0DrF/XXzUqO73IOgzI8zlDs/lccvExz7ZT13fuk5tLWXH+V+o9pLGwa/KRTQXp5gKHeRkPZS32F7cWhrr0hAe2nL4DdTBbSXJxnKfZyQ9tLAYXtxaGuPq/7iHddfwzh3PvNUiowyN3JY5meFlLmxwzK/kBL9Y0E7hj5xuoCx4EWGcp8gZCxo4nAscGhr7wQBsVN7Br85WUB7eYmh3DOEtJemDtuLQ1t7MwS0lw4MfjNLQHt5maHcpwppL2kO24tDW3unCplrNHMYg74iJO5u7rDMq4WU+WCHZX5DwFyjI0OfeLqAseBNhnKfIWQsOMThWODQ1t4ZAmKnIIPfnC2gvaxlKPccIe3lUIftxaGtvTkC2ovH4DfnCWgvbzGU+3wh7aWFw/bi0Nbe+ULmGi0dxqBvC4m7Wzks8ztCytzaYZnfEzDXSGfoEy8UMBa8z1Dui4SMBW0cjgUObe1dJCB2ymDwm0sFtJcPGMp9mZD20tZhe3Foa+8yAe0lk8FvLhfQXj5kKPcCIe2lncP24tDW3gIhc432DmPQjULi7g4Oy7xJSJk7OizzJwLmGlOT3V93oYCx4FOGseAqIWNB0OFY4NDW3lUCYqfjGNrLNQLay2cM7eVaIe3Fc9heHNrau1ZAezmeob1cL6C9fM7QXm4Q0l7SHbYXh7b2bhDQXqYxtJelAtrLFwztZZmQ9pLhsL04tLW3TEB7mc7QXm4R0F6+ZGgvy4W0l0yH7cWhrb3lAtrLCQzt5XYB7eUrhvayQkh7yXLYXhza2lshoL2cyNBe7hTQXr5maC93CWkv2Q7bi0Nbe3cJaC8nMbSXewS0l28Y2su9QtpLJ4ftxaGtvXsFtJeTGdrL/QLay7cM7eUBIe0lx2F7cWhr7wEB7WUGQ3t5WEB72crQXh4R0l5yHbYXh7b2HhHQXk5haC+PC2gv3zG0lyeEtJfODtuLQ1t7TwhoLzMZ2svTAtrL9wzt5Rkh7eUwh+3Foa29ZwS0l1kM7eV5Ae1lG0N7eUFIe+nisL04tLX3goD2cipDe3lZQHv5gaG9vCKkvXR12F4c2tp7RUB7OY2hvawW0F5+ZGgva4S0l24O24tDW3trBLSX2Qzt5U0B7eUnhvayVkh76e6wvTi0tcdVf3GO669HnAw9ewrRs5cQPXsL0bOPED37CtGzH5Oe8YaefsefFg7LfHiEyhz09/H6O3z/8rEUGf44QEi7OUKIngOF6HmkED0HCdFzsBA9hwjRc6gQPYcJ0XO4ED1HCNFzpBA9RwnRc7QQPY8SoucYIXqOFaLnOCF6Hi1Ez2OE6DleiJ4ThOg5UYiek4TomSdEz3whehYI0XOyED0LhehZJETPY4XoOUWInlOF6HmcED2PF6LnNCF6Thei5wlC9DxRiJ4nCdHzZCF6zhCi5ylC9JwpRM9ZQvQ8VYiepwnRc7YQPU8XoucZQvQ8U4ieZwnR82whes4Rouc5QvQ8V4ie5wnR83whes4VoucFQvS8UIieFwnR82Ihel4iRM9Lheh5mRA95wnRc74QPS8XoucCIXpeIUTPK4XouVCInlcJ0fNqIXouEqLnNUL0vFaIntcJ0XOxED2vF6LnDUL0vFGInkuE6LlUiJ7LhOh5kxA9bxai5y1C9FwuRM9bheh5G5Oe8Yaeft+DTnJY5tuFlLmiwzKvEFLmSg7LvFJImZMdlvkOIWWu7LDMdwopc4rDMt8lpMxVHJZ5lZAyV3VY5ruFlDnVYZnvEVLmag7LfK+QMld3WOb7hJS5hsMy/09ImWs6LPP9Qspcy2GZHxBS5toOy/ygkDLXcVjmh4SUua7DMj8spMwHOSzzI0LKXM9hmR8VUub6Dsv8mJAyN3BY5seFlLmhwzI/IaTMjRyW+UkhZW7ssMxPCSlzE4dlflpImZs6LPMzQsqc5rDMzwopczOHZX5OSJmbOyzz80LKfLDDMr8gpMyHOCzzi0LKfKjDMr/ksMzq3ngiXqsLKX8c1kEC/l4BoO4nq/ur6n6juv+m7kep+zPqfoVav1fr2Wp9V613qvU/tR6m1ofUeolaP1DzaTW/VPMtNf9Q8biKT1W8puIXNZ6r8S0NoPo/1R+o9qH8RdWf2he9JaAVoDWgDaAtoB2gPaADoKOqE4AHSFd2A2QCsgDZgE6AHEAuoDPgMFLmS+NK66EroBugO9qtJ6AXoDegD6AvoB/gcEB/wADAEYCBgCMBgwCDAUMAQwHDAMMBIwAjAaMAowFHAcYAxgLGAY4GHAMYD5gAmAiYBMgD5AMKAJMBhYAiwLGAKYCpgOMAxwOmAaYDTgCcCDgJcDJgBuAUwEzALMCpgNMAswGnA84AnAk4C3A2YA7gHMC5gPMA5wPmAi4AXAi4CHAx4BJVd4DLAPMA8wGXAxYArgBcCVgIuApwNWAR4BrAtYDrAIsB1wNuANwIWAJYClgGuAlwM+AWwHLArYDbALcDVgBWAu4A3Am4C7AKcDfgHsC9gPsA/wPcD3gA8CDgIcDDgEcAjwIeAzwOeALwJOApwNOAZwDPAp4DPA94AfAi4CXAy4BXAK8CXgOsBqwBvA54A/AmYC3gLcDbgHWA9YB3AO8CNgDeA7wP+ADwIWAj4CPAx4BNgM2ALYBPAJ8CPgN8DvgC8CXgK8DXgG8A3wK2Ar4DfA/YBvgB8CPgJ8DPgO2AXwA7AL8CfgP8DvgD8CdgJ+AvwN+AfwC7AP8CVGcQB4gHJAASARUASYCKgEqAZEBlQAqgCqAqIBVQDVAdUANQE1ALUBtQB1AXcBCgHqA+oAGgIaARoDGgCaApIA3QDNAccDDgEMChgBaAloBWgNaANoC2gHaA9oAOgI4A1cl5gHRABiATkAXIBnQCqP9lV/81rf4/V/0nqPqfQ/Xfber/qIr/Yweg/oNF/b+J+u8Q9b8c6j8v1P9JqP9XUP9doPbyV/vkqz3o1f7uau90tS+52vNb7aet9qpW+0CrPZbV/sVqb2C1767a01btF6v2YlX7nKo9RNX+nGrvS7WvpNqzcRJA7TWo9vFTe+Sp/efU3m5q3zS1J5na70vtpaX2qVJ7QKn9ldTeRWpfILXnjtrPRu0Vo/ZhUXucqP1D1N4cat8LtaeE2q9B7YWg9hlQ7/Cr9+PVu+fqvW71zvS5APWur3qPVr2jqt7/VO9WqvcW1TuB6n071Xeq98TUO1jq/Sb17pB6L0e986LeJ1Hvaqj3INQ7Bur5ffVsvHruXD3TrZ6XVs8iq+d81TO06vlU9eyneq5SPbOongdUz9qp59jUM2Lq+Sv1PJJ6Pkc9r6Ke31DPM6j7++p+t7r/q+6HqvuD6n6Zun+k7qeo+wtqvV2tP6v1WLU+qdbr1PqVWs9R6xtqvq/mv2o+qOZHar6g4mcVT6r4SsUbavztrQZD/DQt/Vo8lqlP3syZhdNPmpk288S0vMmT006bOnNK2omnFs4omnai6nKL+3j9aba3zPRZ02ZOPWna6XsLTrQVLLAVLLIVPNWiXlQfYpVZVVvBGraCtePCL14D28wa2woGbQUzbAU7WdRLZ9vMutoKdrcV7Gkr2NuiXg63zWyAreDFtoKX2QousBVcaCt4i4Ul7iQyNZFPmnUKnDRrZtqJRWn5J846YbKKrgMbLK5eFG9ZlKm2gtNtBU+KD794p9pmdrqt4OXx+2uuK22zuNGiIm6xkFlpIXOfhcyjFjLPWci8ZFvhr9oKvm6h5QYLmQ9tFfzYVvATCy2/tM3sG1vB7y20/NM2s122gikJloLVbQUb2wo2txVsYSvY2lawPRHcX9v3sM2sj61gfwstj7DN7EhbwcEWWh5lITPWVsGjbQXHW2g50TazPFvBAgstp9pmdryt4Mm2gqfYCp5uK3imreDZtoLn2AqeZ2H7q20zu8ZW8DoLLd+1zex9W8GPbAU32wr+YFEvvxGZ8qcQzRPDv/qDiZZFecRW8AlbwactiveibWav2ApuTNxfc31sm8VvFhXxt4VMfIXwZSpbyNS0kGlgIdOkgmWFN7MVPNRCy44WMhm2CmbbCna20LK7bWa9bAX7WWg5wkJmjK2CR9sKTrTQcrJtZsfaCh5voeVsC5mzbRU811bwAgstL7XNbL6t4JUWWi61kFluq+DttoJ3Wmh5r21m99sKPmyh5WO2mT1pK/ishZZv2Wa23lbwPQstP7DNbKOt4McWWn5rIfOdrYLbbAV/tNDyZ9vMfrEV/NVCy/ik8GUSkywVTLIVrGShZWXbzKrYCqZaaNnQQqaxrYJNbQWbWWh5sG1mh9oKtrTQMtNCJttWwRxbwc4WWnaxzaybrWAPCy172WbWx1awn4WWY2wzG2creIyFltfbZrbEVvBmW8FbbQUftKiXJ4lM+ctSiypaqnWdreCNtoLLKoZfEbfZZrbSVvDJivtb9U/bZrHVoiJ+spD5zUJml4VMUqXwZapXsqy8WraCB1lo2cxC5lBbBVvZCraz0NKzzSzTVjDHQsu+FjJH2Co4yFZwmIWWo20zG2srON5Cy+MsZE60VXCGreCpFlqeaZvZHFvB8y20vMJCZpGtgtfZCt5ooeXNtpndaiu40kLLR2wze8xW8AkLLV+1kFltq+DrtoJvWmj5lm1m62wF37HQ8hMLmc9sFfzCVvArCy2/sc1sq63g9xZa/mkh85etgv/YCv5roWVcsmVmCbaCFZLD17KmhUxtWwXr2grWs9CygW1mjWwFm4SpZVxg9yvYxdrG2cu2JLL1kXvOmJF3etrUEyYXzt5z9ksFj/aR6RTbTGfYCq7yoW1SvL1sWrylwm1tBbNtBfvYCg63FZxkKzjLVvBMH6aca5vppT4yXWib6XU+Ml1um+kdPjLd5EN2q63CO2wFvw3zQT0q+0eiZab/+sh0YAXLTMN90IrKTrDNdLKPTG9Lspfd4kO2ZkV72VE+ZBf7kF1KZMMy0G22gqtsBR+yFXzCVvB5W8HXbAV/92FKurAbVqY5toI9bQUPtxUcZis4xlYw31Zwqq3gubaCl9kKLrIVXGYruMpWkK6SNUQuyJs2rbh1nHJK4YyZE6fnzZ6YP3XmxFOmnlFIRZ+zzfO3MOfvVJZOx8PKtLKtYJGPeeRFtpkutBX8yIe2LSrby2ZUtlS4q63gTB/anmeb6TxbwRd8aLvWNtMNtoJbbAW/9FHMV6vay75e1VLhdbaCP/rQtkKqvWxyqqXC1WwF2/vQtrcP2cNtFR5kK3i8D23P8yF7oa3C82wF7/Sh7bM+ZF+0VXi1reDXPrT9x4dsXDVLhSvaCh5azV7bLB+yubYKd7cVHO9D2+m2mZ5iK7jQh7a3+JC93VbhVbaCq31o+6EP2U22Cn9uKxhX3V7bGj5k61S3VLihrWCuD20H2GY6xFZwug9t5/qQvdhW4cttBVf50PZnH7K7bBWuUMNSsJqtYBoRbLZ3MUPfOqYXOMQ255417Cu4r22m+T4yLbLN9BIfmV7vQ3aprcK32go+70PblJr2svVqWirc1Fawta1g0FawJxG0aql9bXPO92GZIttM5/rI9GLbTG/zkekdtpmu8ZHpRz5kt9gq/KWtYEIte20H+ZAdV8tS4TxbweNtBWfYCl5EBK26h8tsc17pwzKrbDN9zUemb9hm+q2PTLfZZlqttn2maT5kD6ltqXAbW8H+PrRd4EP2RluF7yCCYd4YvMc2z4dsBV8jglYdxBu2OX/rwzbbbDOtXMc+09Q6lpkGfWTa04dsX1uFB9oKTvWh7Tk+ZOfaKnypreBKH9r+6UO2fl1LhUfUtc/0Bh+yK20Vft9Hpp/bZvqjreCvPrS95yDLTB86yD7TF20zXe0j0zPqlcpajTZz6llqfWM9e61vss30KR+ZPmeb6SYfmX5qm+kuH5nG17fMtGl9+0wPts20r49MR/uQHWer8CRbwTk+tF3kQ3axrcLLbAWf8qHteh+y79kq/LGt4E4f2lZvYC9bu4Glwg1sBXN8aDvHh+w8W4WvshVcYit4DxG0Go3vt815rY8KXm+b6Y8+Mv3FNtM6De0zbeFDtk1DS4WDtoKDfWh7pQ/ZpbYK32Yr+BgRtGo3T9nm/KGPetpkm+m/PjKt3shetnYjS4Ub2Arm+ND2fB+y63zIbrIt7Be2gt/ZCv5qK/iXj/p5oHGprFVjfaSxpdbvNLbX+n3bTHf4yPQP20zrNLHPtH4Ty0wP85HpkT5kh9oqPNpWcKYPbS/zIbvAVuFFtoIP+NB2hw/ZuKaWCleyFWxEBK26pTTbnLs2ta+nnraZFvjIdKYP2dm2Cs+xFVziQ9vNPmS/s1V4u61gUlqpoJULV06zzLllmn09tbXNdJCPTCf4kM23VXiKreBFPrRd4kP2ZluFV9gKvuRD240+ZDfbKvyFrWB8M3tt6/mQbdTMUuHmtoI9fGg72ofsOFuFJ9kKzvGh7SIfsottFV5mK/iUhbbvxe0+z2ZHMi0b9o5kWvBoH5lOsc10hq3gKh/a2uxIpmXD3pFMC7a1Fcy2FexjKzjcVnCSreAsW8EzfZhyrm2ml/rIdKFtptf5yHS5baZ3+Mh0kw/ZrbYK77AVtNmRTMuGvSOZFvzXR6Zh70imBW12JNOyE2wznewjU5sdybTsFh+yNjuSadlRPmQX+5ANe0eykkq2FVxlK/iQreATtoLP2wq+Ziv4uw9Thr0jmRbMsRXsaSt4uK3gMFvBMbaC+baCU20Fz7UVvMxWcJGt4DJbwVW2ghY7kmnR52zztNmRTMuGvSOZFqxsK2izI5mWvcg204W2gh/50NZmRzItG/aOZFqwq63gTB/anmeb6TxbwRd8aLvWNtMNtoJbbAW/9FFMmx3JtGzYO5JpwXW2gj/60NZmRzItG/aOZFqwmq1gex/a9vYhe7itwoNsBY/3oe15PmQvtFV4nq3gnT60fdaH7Iu2Cq+2Ffzah7b/+JANe0cyLVjRVtBmRzItm+VDNtdW4e62guN9aDvdNtNTbAUX+tD2Fh+yt9sqvMpWcLUPbT/0IbvJVuHPbQVtdiTTsjV8yIa9I5kWbGgrmOtD2wG2mQ6xFZzuQ9u5PmQvtlX4clvBVT60/dmH7C5bhcPekawkcLUVtN6RTF/gENucbXYk07J9bTPN95FpkW2ml/jI9HofskttFb7VVvB5H9ra7EimZcPekUwLNrUVbG0rGLQVtN6RrKTR2Oac78MyRbaZzvWR6cW2md7mI9M7bDNd4yPTj3zIbrFV+EtbQZsdyUoWLHzIhr0jmRbMsxU83lZwhq2g9Y5kJXdybHNe6cMyq2wzfc1Hpm/YZvqtj0y32WZqsyNZSXTnQzbsHcm0YBtbwf4+tF3gQ/ZGW4UtdiTTovfY5vmQraD1jmQlzcY252992GabbaY2O5Jp2bB3JCsJ7nxk2tOHbF9bhQfaCk71oe05PmTn2ip8qa3gSh/a/ulDNuwdybSgzY5kWvYGH7IrbRV+30emn9tm+qOt4K8+tA17R7KSXt9ic7CS+0m2ma72kan1jmT6AmHvSFYymltsmaVlb7LN9CkfmT5nm+kmH5l+apvpLh+Zhr0jWckyTX37TA+2zbSvj0xH+5AdZ6vwJFvBOT60XeRDdrGtwstsBZ/yoe16H7Lv2Sr8sa3gTh/a2uxIpmXD3pFMCzawFczxoe0cH7LzbBW+ylZwia2g9Y5k+gL32+a81kcFr7fN9Ecfmf5im6nNjmRatoUP2bB3JCuZrNoKDvah7ZU+ZJfaKnybraD1jmQl441tzh/6qKdNtpn+6yNTmx3JSsaMRpYKN7AVzPGh7fk+ZNf5kN1kW9gvbAW/sxX81VbwLx/1Y70jmb5A2DuSaUGbHclKFj9sM93hI9M/bDO12ZGsZEEr3N2rtOBhPjI90ofsUFuFR9sKzvSh7WU+ZBfYKrzIVvABH9ru8CEb9o5kWrCSraD1jmQlN/Fsc7bZkazkboRtpgU+Mp3pQ3a2rcJzbAWX+NB2sw/Z72wV3m4raL0jWcnNuDTLnG12JNOyYe9IpgVtdiTTshN8yIa9I5kWnGIraLMjWYn7+5C92VbhFbaCNjuSadmNPmTD3pGsJGi3FbTZkUzL1vMhG/aOZFqwua1gDx/ajvYhO85W4Um2gnN8aLvIh+xiW4WX2Qra7Eh2MO5QY7MjmZYNe0cyLXi0j0yn2GY6w1ZwlQ9tbXYk07Jh70imBdvaCmbbCvaxFRxuKzjJVnCWreCZPkw51zbTS31kutA20+t8ZLrcNtM7fGS6yYfsVluFd9gK2uxIpmXD3pFMC/7rI9OwdyTTgjY7kmnZCbaZTvaRqc2OZFp2iw9Zmx3JtOwoH7KLfciGvSNZSSXbCq6yFXzIVvAJW8HnbQVfsxX83Ycpw96RTAvm2Ar2tBU83FZwmK3gGFvBfFvBqbaC59oKXmYruMhWcJmt4CpbQYsdybToc7Z52uxIpmXD3pFMC1a2FbTZkUzLXmSb6UJbwY98aGuzI5mWDXtHMi3Y1VZwpg9tz7PNdJ6t4As+tF1rm+kGW8EttoJf+iimzY5kWjbsHcm04DpbwR99aGuzI5mWDXtHMi1YzVawvQ9te/uQPdxW4UG2gsf70PY8H7IX2io8z1bwTh/aPutD9kVbhVfbCn7tQ9t/fMiGvSOZFqxoK2izI5mWzfIhm2urcHdbwfE+tJ1um+kptoILfWh7iw/Z220VXmUruNqHth/6kN1kq/DntoI2O5Jp2Ro+ZMPekUwLNrQVzPWh7QDbTIfYCk73oe1cH7IX2yp8ua3gKh/a/uxDdpetwmHvSFYSuNoKWu9Ipi9wiG3ONjuSadm+tpnm+8i0yDbTS3xker0P2aW2Ct9qK/i8D21tdiTTsmHvSKYFm9oKtrYVDNoKWu9IVtJobHPO92GZIttM5/rI9GLbTG/zkekdtpmu8ZHpRz5kt9gq/KWtoM2OZCULFj5kw96RTAvm2Qoebys4w1bQekeykjs5tjmv9GGZVbaZvuYj0zdsM/3WR6bbbDO12ZGsJLrzIRv2jmRasI2tYH8f2i7wIXujrcIWO5Jp0Xts83zIVtB6R7KSZmOb87c+bLPNNlObHcm0bNg7kpUEdz4y7elDtq+twgNtBaf60PYcH7JzbRW+1FZwpQ9t//QhG/aOZFrQZkcyLXuDD9mVtgq/7yPTz20z/dFW8Fcf2oa9I1lJr2+xOVjJ/STbTFf7yNR6RzJ9gbB3JCsZzS22zNKyN9lm+pSPTJ+zzXSTj0w/tc10l49Mw96RrGSZpr59pgfbZtrXR6ajfciOs1V4kq3gHB/aLvIhu9hW4WW2gk/50Ha9D9n3bBX+2FZwpw9tbXYk07Jh70imBRvYCub40HaOD9l5tgpfZSu4xFbQekcyfYH7bXNe66OC19tm+qOPTH+xzdRmRzIt28KHbNg7kpVMVm0FB/vQ9kofskttFb7NVtB6R7KS8cY25w991NMm20z/9ZGpzY5kJWNGI0uFG9gK5vjQ9nwfsut8yG6yLewXtoLf2Qr+aiv4l4/6sd6RTF8g7B3JtKDNjmQlix+2me7wkekftpna7EhWsqAV7u5VWvAwH5ke6UN2qK3Co20FZ/rQ9jIfsgtsFV5kK/iAD213+JANe0cyLVjJVtB6R7KSm3i2OdvsSFZyN8I20wIfmc70ITvbVuE5toJLfGi72Yfsd7YKb7cVtN6RrORmXJplzjY7kmnZsHck04I2O5Jp2Qk+ZMPekUwLTrEVtNmRrMT9fcjebKvwCltBmx3JtOxGH7Jh70hWErTbCtrsSKZl6/mQDXtHMi3Y3Fawhw9tR/uQHWer8CRbwTk+tF3kQ3axrcLLbAVtdiRLxA0sbHYk07Jh70imBY/2kekU20xn2Aqu8qGtzY5kWjbsHcm0YFtbwWxbwT62gsNtBSfZCs6yFTzThynn2mZ6qY9MF9pmep2PTJfbZnqHj0w3+ZDdaqvwDltBmx3JtGzYO5JpwX99ZBr2jmRa0GZHMi07wTbTyT4ytdmRTMtu8SFrsyOZlh3lQ3axD9mwdyQrqWRbwVW2gg/ZCj5hK/i8reBrtoK/+zBl2DuSacEcW8GetoKH2woOsxUcYyuYbys41VbwXFvBy2wFF9kKLrMVXGUraLEjmRZ9zjZPmx3JtGzYO5Jpwcq2gjY7kmnZi2wzXWgr+JEPbW12JNOyYe9IpgW72grO9KHtebaZzrMVfMGHtmttM91gK7jFVvBLH8W02ZFMy4a9I5kWXGcr+KMPbW12JNOyYe9IpgWr2Qq296Ftbx+yh9sqPMhW8Hgf2p7nQ/ZCW4Xn2Qre6UPbZ33Ivmir8Gpbwa99aPuPD9mwdyTTghVtBW12JNOyWT5kc20V7m4rON6HttNtMz3FVnChD21v8SF7u63Cq2wFV/vQ9kMfsptsFf7cVtBmRzItW8OHbNg7kmnBhraCuT60HWCb6RBbwek+tJ3rQ/ZiW4UvtxVc5UPbn33I7rJVOOwdyUoCV1tB6x3J9AUOsc3ZZkcyLdvXNtN8H5kW2WZ6iY9Mr/chu9RW4VttBZ/3oa3NjmRaNuwdybRgU1vB1raCQVtB6x3JShqNbc75PixTZJvpXB+ZXmyb6W0+Mr3DNtM1PjL9yIfsFluFv7QVtNmRrGTBwods2DuSacE8W8HjbQVn2Apa70hWcifHNueVPiyzyjbT13xk+oZtpt/6yHSbbaY2O5KVRHc+ZMPekUwLtrEV7O9D2wU+ZG+0VdhiRzIteo9tng/ZClrvSFbSbGxz/taHbbbZZmqzI5mWDXtHspLgzkemPX3I9rVVeKCt4FQf2p7jQ3aurcKX2gqu9KHtnz5kw96RTAva7EimZW/wIbvSVuH3fWT6uW2mP9oK/upD27B3JCvp9S02Byu5n2Sb6WofmVrvSKYvEPaOZCWjucWWWVr2JttMn/KR6XO2mW7ykemntpnu8pFp2DuSlSzT1LfP9GDbTPv6yHS0D9lxtgpPshWc40PbRT5kF9sqvMxW8Ckf2q73IfuercIf2wru9KGtzY5kWjbsHcm0YANbwRwf2s7xITvPVuGrbAWX2Apa70imL3C/bc5rfVTwettMf/SR6S+2mdrsSKZlW/iQDXtHspLJqq3gYB/aXulDdqmtwrfZClrvSFYy3tjm/KGPetpkm+m/PjK12ZGsZMxoZKlwA1vBHB/anu9Ddp0P2U22hf3CVvA7W8FfbQX/8lE/1juS6QuEvSOZFrTZkaxk8cM20x0+Mv3DNlObHclKFrTC3b1KCx7mI9MjfcgOtVV4tK3gTB/aXuZDdoGtwotsBR/woe0OH7Jh70imBSvZClrvSFZyE882Z5sdyUruRthmWuAj05k+ZGfbKjzHVnCJD203+5D9zlbh7baCSWmlglYuHPaOZFrQZkcyLRv2jmRa0GZHMi07wYds2DuSacEptoIX+dB2iQ/Zm20VXmEraLMjmZbd6EM27B3JSoJ2W0GbHcm0bD0fsmHvSKYFm9sK9vCh7WgfsuNsFZ5kKzjHh7aLfMgutlV4ma1g2DuS6T1bWiCT9+YDaYAe+D3o55MTLEoiFyf7tRR/1H4+cfib5jQ8noDpBON4IqY1x+HxCpiuQI6n4G+0gOpYQmDPPNUxvVtPPDmm6yiBHNNlSCTH0AYleat0I5KtvnZawFm9Zlci+jm7bjCYW4mUx+F1izc8qeT+ukFlZ70vQQW8diWS1jbQL4/HOSwTzTsOofPRxxPJ94bkXPIye4lvB4ju6hVw7WuVy5FLNORSyTlJRM5s3zpd4rsA/RaC4qRKe5ZDJasQ+R74Pejvk5ti6Kb1DRj66k8Vok+ye308VXe65y084eRZhbMKh87Knza1oN+sEwpmTj3xhN5506bFhajYZEP5uMCeBdlFzqEdIdnUrKRjUh+yfViAbLC1h2zFEMd2kUoJlab60U5Ol4N2csnkWLyhC+1I6fkvNdvzejrvHvg96OeTm5t+oA4oGwNEplJpeUtkdPnIsUq6bORYsi4XOVbZqE91LIXkrY9VwWPUV6oaHYU6lorHKpNj1Uj5NFfHY1XIsRp4rCo5VhOPpZJjtfBYNXKsNh7T7xGq5BH4PS3gavD1stR1B7q+bjA9qK47yPl1dw++g91ft3jwHYLX0oOvzmcgscFQ/O568B1CrhtH8tHHE8n3NuRcfZ6uDz3wad2V7x2J34eWI3eEIZdKzjmSyA025HRa21rXnfrw+GxGzGfxI8lnc8i5pu/p92L+S5/tgN95fDaLyWczYz4bRpnC9dl+5FzT9/Rj/f+lz3bB7zw+mxvrZ/EjyWdHknNN39MP8/+XPquvxeOz+Uw+mxHz2TDKFK7P5pNzTd/TCxj/pc+Owe88PlvI5LNeTsxn979M4frsSeRc0/f04uh/6bNF+J3HZ4smM/lsrJ8No0zh+uwccq7pe/pxwP/SZ2fi9+K1OFyE0w+ssPhxbrCQx49339SK+fH+lSlcP76cnGv6Yxp+/y/9eC5+L17HRT9uTo7VwWMH4zEe3/ayY2sOuz+SfHspOdf00UPw+3/p21fjdx6fzcqOxRW7P5J8dhU51/Q9/VDOf+mzt+B3Hp/NZvLZYEHMZ/e/TOH67OPkXNP3WuH3/9Jn78PvKl6YgfFCG3LsFDzWlhybicfakWOz8Fh7cuxUPNaBHDsNj3Ukx2bjsSA5djoe88ixM/BYOjl2Jh7LIMfOwmOZ5NjZeCyLHJuDx7LJsXPwWCdy7Fw8lkOOnYfHcsmx8/FYZ3JsLh47jBy7AI91IccuxGNdyTH9fzXdyLGL8Vh3cuwSPNaDHLsUj/Ukxy7DY73IsXl4rDc5Nh+P9SHHLsdjfcmxBXisHzl2BR47nBy7Eo/1J8f0X+oMwGP0Aar5cbtZJfUzDWkBR23YyykofqYjsOcnzkinke9aB/pQnDN98AEqfW9Sbeo2dMbUU/NmFurHp+KIilptXUX0N1qEXeScaHl0iun5y+Iu2XzGr7JRllje/03eCe7zTqePhelPec03geiTxFAX9HG2/dEniVefYGpg78cMWZ6p3ocf0OdsGZ6PTqePDO5PvVck+jgfVtAPKoahDx1W4hn0YSpn8RQ3Fa+1K+A2rK9m1FVFo65SyTmppP6qMdRfHMlXX1unqQ7aB+ljn/q8xCjRUR+jz8xztIHy+gNqQ91/J4eoswpRVmf0kVyMUEv6VaVrFRKucvTn6vLatxLx2qYeieSci5qV6lYddatq6GyWh9Y5xzsCcSSvgFEGnV/VwJ59tD6mv9NxnCMMp/G1qSN9n0Q/jp1URjkSyTkNsf6rB/b+0HGa1gG9TgCvlWIcY3q3xKPl09fW6SpER/o4u9aHK77QPhEX2HNMoHWR4j7vIGcd074uVB0nknNaleNDofoy2qcG8PdE8l3XWSWmspVlr0oRzDtQTt4M/Vt6uO9kMb8jlh7uEgd9R4wjLmAqZ0Rj0WSjriIdi1Yx9NFpnZ9EnVMDe4+fKYE9/TEadKRjn9aHa2woqw+jNtTxWlKIOotE/BxOndF5EX39Tus6iDd+Tqd1qsfbeKP+aPzcn8TPw/YRPycbxyIZm+o0nV/pcoWKJ2n8zBAvpYea+5mxCPWdpDLKkUjOOWY/42daB5VJOXXeofoTrvlvWW2jKmGzX+aMibRP6HgsPkRdcI3NDHVc7Gd67KpQRh0nknOm7iN+TiXptECp/4Sa7+hz4wN7jgVaNp6co3/fhcfNa6QFeOMthr6/uO51Peq6N9dOEsk5p+yj7unxtMDea0VVSX3pc+PJeankWuq42Zfoutfn0S0HONc6ympzNO7nzjtQTt4MY1TYcw7aTzv3VS+neJ+MymHoU43oU921PkabdDlXUdetwVB/6ro1meqhlvvrFs/Z9H946b5J51OD2LYO8QVXZaJ5xyF0Pvp4Ivl+RVzpueSfm/boA7XuqeQcOterZcjpdE1SBxfHlV7D7BuLt47A77Rv4LB5HMlLX7uGoW8qOUa3o3Du2/voJ2sQfULNs2qQ+o2mOqNzK3POqHRdSuZZzuM96C9CrWuaetB1zcpknnULmWeZ81jaj9M659hzK9QcRqfpvUg9nwk172B93gDruWIZOtL9q+gcN1Q5Esk5d+/nPIvWgf4eassj2p9wrUGU1X6rER11memchyvuonPcNJJOJvWo/Zdu3xNqDYHjeYDy1hDiiY7mnJ1pvaDcthbLm+++AL2/pz5xRjqNfOfeO46uzeyPPszzpyBdt6R5cbXHsvyA9lcc83jaV+9PvdO5EUM8lp0S2PPexb70ofE811yNoZxBGiu6vl9lzgeqGXWVGth7jsA0Fys3dtX5xXSO6RzT+b/VWeljxs10jhsfJTpGcl2grDGZ2lDHUBVD1FlKlNUZjS313JvOOf6IK9WXIabKpnVq3jOgz7rpc95IKz33b7IuYMbIdJ2D1jnHM/6h5tzm+zD0vl6oeTKNpRliuuJ6TipDR7puWJ3oHaoc9P5NRewAQq0L0LLRtadQfcd/tT5WlehOY0bu+bVeA0gOURdceZv30qrH8i7Jm2GsCHsORf2Poz3Qtrc/+tRk1qc82zDHPsXzrNrur1vcx+p7MeY9JnqfR5/TrJz+k15L66n7U33NqqSu6pA6q+O+bHvYS/df1f+DvAPl5M1g0+K5fl331y32Fb0VpvYVrb/OL5Gc024fvnKQUT/aV/Q1q5K6OojU2UEMdVaer0Qy70A5eTPYNF1dt5776xb7it6CUvuK1l/nl0jO6bQPX6lv1I/2FX3NqqSu6pM6q+++bOX6is4vnpST+kw8OUf/rp/pMfVPi1AZAmWUgck3MtR1G7i/brHP6S0ktc9p/XV+ieScvvvwuYZG/Wif09esSuqqIamzhu7LVq7P6fziSTnrk3PjyTn6d+1zpv5xESpDoIwyMPlGprpuI/fXLfY5vQWk9jmtv84vkZwzYh8+19ioH+1z+ppVSV01JnXW2H3ZyvU5nV88KSf1oXhyjv5d+5ypf1yEyhAoowxMvlG8PXET99ct9jm9vaf2Oa2/zi+RnJO3D59ratSP9jl9zaqkrvS5dD2O+V5auX5I1zD13DXUGiadOzdl0rGstZtQdUbn9KY/puHxeONc3X5o29Pn/39dA9rX8x0s90uNZ5J0G0sy7EHfsTl1H21sX8830XddKpYjp8+nz2aa659JxnXo+udZ5ejJudZclg8lRTDvQDl5c/kQfbYyjdiE+pA+54J9+JDZv4R6jk+XqUY5cuY8O5QPVTSuQ33osn34ENdzjGX5UMUI5h0oJ28uHzLHenMMoWP9VWGO9ea9QHoPpGk5cvr88nzIHP+oDy3ehw9xxRFl+RCNE0ruFREd4gN717sej822khahMgTKKAOnL+r4UvtiU6NOEsk5t+7DF5sY5dC+qK9ZlZSpSTly+vzyfLGpcR3qi3eWoyd9fk7LMsX15fonzVuXxeHzVh7Ng/4PMP0bgf9X/oz3u8K5v0Sf1WjGpE/1MPRpRvRJc6+Px1TO4ntZzfFarp8ZPNioq+pGXaWSc5qT+juYof7iSL762jqt85Ooc6h5bAo5r0aU6Eh9V+vD4M/l9mHUhuY7NrTOUqKszkLtY6fv4arx4a34Un0Z1muL38tuRPJLI3rQtXx9zoK00nPfQd2qknPpM1Z1jWNc92HjSF762jpN73Hq+wn0Xpb+Tp+xYniuoLiea5ehI30O1IynzHLQeGrzfsZTtA70d/rMYajnnLjevSprjZi+e6XLHIlnNrVP6DiwXoi6YIiJgpz7LJjvUpp1TN+l/G4fcwdzjzjtP/p8Onege4Wazy/HBfbc+4K+zx4f4hrqfC4/5NrHgI5Puu61/nSPGn3Or/uoe3Osq23UXdXA3s/Dxgf2bO9aVh03+xJd9/o8+twD03MQ5bY5nR/TOJFOx6QA0YF+0sj32kQf9/6SHkwJ7Dkm7Esfuu8Fxzt1tJyu95lwfy9o9980p7mvh3Q6b3J43T3mTbp/0PnQ+f8hgVJfcJS3R/OOQ+h89PFE8r0uvrhNY+fmRF7L6jrSfkzjcH1O5RBlSwtEJuY+xFLn6lGic3PjHOqX6qP8qGJCqf5mH6/sp32L9q9c8zNz/VqnaR3rY/Q9Wa57xfUMfXSa3ivW85MGIeosJcrqrB7RS8/J6L5ahySU6uv+mTKvuA9rQPJLI3rQ5w31Obc1LT23FepG54t0jmg+48o0F/NCzcV0mj4/rctD4ylzTptCZKivcLxbHBcoe+8eGo+bZYlEPcaVUY+ceZfVtmvx2iGd2jxAyh8w9NEfOpZwxZHhrGez7p/GHEdy7N0Qi093fyTFp8PCjE9DrfVHe3xans7JUaLz/sSnvUh8ao5XNNai/XY0xFr0eUuu+LSsOCRUfFo3RJ1FW3xK5x06LqRrYhNJfOp+jWd3fFqX5JdG9KBr6PqcJ5qUnltA4lNzbZ6OsdRP/8t18lBrsWYsSvfHob7Ctde4+T8C5vpn1RBliUQ9xpVRj5x5l9W2q/HaIT3cPZHo+Oe+n8sMhrufLo01uNY5GZ7tYYr3MoNMfXsm0z3wII1ldB9M89G2PTRQ6guO8vZo3jqO1Pno44nk+9UkjtSxC41DtazWXfuxPjeVnNM0RNnSHJetrHjr0JjOMZ33Q2fzGSid1v2Laq9nkXjdHL9TAqVtmI5jDPNRLy6w57iQRtK0jvUxOidKY9KnrLgsjeij46xaIeosJcrqjK5NcTznUNY69fIEzny9PfY1NOcB9BlqfU6PRqXnriDzAP07jaErG8e44pS4QNl7itH/6dHloTG2GfPT/YKpD3LNa8t6To8+c26WJRL1GFdGPXLmXVafwXz/K+z/1aBjlPt4c/c6ddMw9GlG9Elzrs+ez127ngdwrM/yxOu716kZ1hCL16lbMNSD8pmWeC3dt+t8DiY+0wq/u55ftCTXjSP56OOJ5PtbZH6h47AWRF7L6jrS7UOfm0rOaRaibGmOy2bGtDrdylLn5lGicwvjHJ2m89TnSNxrjlfKftq3aL/NFcuXFafTOg41p+Z6pr2sOIQ+067jimoh6iwlyuqMzmd0XKh9VfnCJhKful+j8/b4n1gzPqXPiupzRjcsPfdTEp/q32lsF+r5mjTnZSj/3oDOj8Z5NPYzY9Gy5kju45Dy50jNiI5mWSJRj3Fl1CNn3mW17TReO6RTmwdI+QOGPvpDxz/3/VxGkN5L3h99aKzBMZen5XQdnzLEe0Gevj0jyBRHZjDFJMV9e2u8lu7bdT6HEp9pg99dx6etyXXjSD76eCL5npq4m5Xv65iVxk1aVteRbh/63FRyzsEhypYW4Im99bV1uo2lzocI1Dla6tmcB+i0bqvK9/8iMXUaHtdlo3OiNFKmlkxlKmueQOtYH6PzFq54tazYicar5n+B0TpLibI6o3MlHcvS+VWjxFJ93a+17Y6py9qvjf5fgD6nRwNyLupWNbDnHnW6PM2MY5zr9zovfW2d1vnR+JnGq2lEX83NjWOcc8Tmht7m/dSqIcoSiXqMK6MeOfMua/27Oa8d0qnNA6T8AUMf/aFjift+zsuhawD7ow+Njziea2Tqz/eIUV3vtWGOxaHWNfQ5LUj9/VdjQkznyOhcydDfUd7BULFdqLpoFUKf/2qNNxJzufLqonUIfVpHuC7ovO//u84tYjrHdC5D55YCdY71G5HROdYGYzqXpXOs34jpXJbOsTYY07ksnWP9xoGjs9LHXNeka/LNo0RHfYze3+K6j9HM0EenQ93HSAtRZylRVmfNiF76XoH2vQqAleQ+Rpp7fTNpner7GObzIInknPvqlJ67itzH0OfSewCh9rflen+8rOexdH70GRt6j8C8Z5FCZCLxHJn5Hr5OH0p0NMsSiXqMK6MeOfMu6x4lc7+STm0eIOUPGProD71v4H491gvS/mp/9KExAcOzKx4tp+tng9yvo3pBrr6d6RmI4nXftngt3QfrfGgc0i5Q6guuykTzjkPofPTxRPL9jcTSc/V5uj60z2rdU8k59N6B+fyJ+cyQqoOXEkuvYfaJKaReaN/ANZ6b9ydaGfrS+xN0TuHet8sf61oRffTY1TxEnUUiBgqnzuh9YY53xOkzFXTPoY9IbOX+3rwXco+jZoZd6D5DJ5PYaguJrULFKKHiWY6+v7x4VudHn7WgcYv+Tvc75xgv4wJ7v3MR6p6r9rekMsqRSM7ZivUfar9kWjYaK7Y2jjGNF16ouaxOtyE6mm2OM3bT9tdxY7MQdcGVd1l9TSTybmbkHarczvtY/N8mbWvdt2g/ps/e6nP+LMefQ43Jus+hbVyXqQ1n2bBeTX3MstG4Jck4pw0pvz6nuJIC+/7/Alo2rrZbVluheTP05cXznDZG2eOMdBr5TmOZdu71yU4J7Nlv70ufdkSftu718ZjKWTwfaY/Xcv28VgejrloYdZVKzmlP6q8DQ/2FmhPotM5Pos5MeRfbr+N+1EXHEPp0jHBd6PzC1bl9TOeI6BwNvkHfG9G6ppDz2kSJjub6BlO/X258SG0Yaq7ejnyPpjprRvTS81bteyrEyqhQqi/Ds6rpdO6j416tB90TQZ8ztHbpuZ1Qt6qBvd8xouWhfsr1zH5Zazj0vQtzn4mqhr6aQ7130YxJ7+aG3jrdjOgY6r4Pdz3GlVGPnHmXtc9DJMsdCJTtP/o7XX9xHjfjXFT3D7pN6rzpGrI+58hy5mKh+qM2Icpm9qMRK28ZfaZZXnWOjiOSjHPakTrR54wsp07+y/YTT3SkfUo8OYfObeIDe69xpgX+27ZA51/O8ka/p2OfunY7o04SyTkT9+H35rxI+30oHy9vPmXGN6F80ZzjUF8s3M+1Eub5Ubn+qfOLJ2Wh/hVPztG/a/806zAtwBYDFq+5UPvostBPGvlO1zjcx3u790duF4Y+HYk+ztsQrrnoPFzfWw6617f4uh6DXdR1093rW7zvciZDPSifycJr6b5P5+MRn8nG73EBt/1CFrluHMlHH08k3xdgf6Z8PwOPZRJ5LavrSLcPfW4qOadjiLKlOS5bhqGPTmdb6hwUqHOsnu11zjTO0Wndv6jmcFqFUv3NcVK1E92G6RifwVQmz9BXp2kd62N0bc59P1x+POkRffRcu02IOkuJsjqjzw7rdRHtq8oNlpA1G/cx0O778+1JfmlEj1BzoZRapefeTNZszJiV3s+ifhqpe5Lmc0tKRx1z0/vwVF/NrY1jTM++lPusQKh1pdYRrMe4MuqRM++S+8F47bYh8ubaK4PaQZc/YOijP/SZKPdx7O5nTA8OQx86tnGsQ0ciXnd97zXdqKuDjbpKJefQmJghzi/27aChj06n8+YdDBWXhKqLjBD6cI2PZdWFzi9cnb2YzjGdAzF/jukc8+egv0+snmM6R1TnmD8fODrTd7jpuoc+r3WU6KiP0XVOhvlPuesW1IZ6HYKuVQTJ90AgeuqMrrnpNSO6tpmUVKovw1w+k9apXs/SetD/D9fnrK5Rem5l1I0+J0PXgjoYxzif+zLvG+u0zq8qKVcHcsxcu0ohMtRXuPzZfC5Sp4NER7MskajHuDLqkTNvbR997fYh8mawQzq1eYCUP2Dooz90/YhhDaKA9lf7ow+NCTjuI3CttdA+2PV6lnnfyFw/SiXnZJD6Y7i/7IVaX9PpTN6897i3XV5dZIXQJyvCdUHvg4ejc0ZM54joHPONmM5l6RzzjZjOZekc8w07nek7UXT+qs/rGCU6RvK+YFnzPGpDPW9rHaLOUqKszkI9/6Hbi5pjTyLzf4bnCDJpnZr79dB37/U5D1YvPXcymf9rGTp3DrUuxPWcU1lrLjo/Otenc2tzrl/Ws09c/lzWs0/pREezLJGox7gy6pEz77Ke7YlkuQPllJvBB9KpvwVI3QcMffSHzvXdzxe9TrSv3B996NjOsZ5Ky+n6mXr3/b/Xiet5WXXdTu6vW7w+kIPX0v2/zieL2DY3UOoLrspE845D6Hz08UTy/eKk0nP1ebo+tM9q3VPJOfT5+E6GnE5nkzo4J6n0GmZ/nELqJdS7AWmO68eMWbMMfSMds5bVT9LYRo+bHUPUWUqU1Rldy+V4Zo/eB6HPKV9L4jr36+lepzgjv7TA3mv5ieScWSSuu4HEdaHio1CxNNe9tLJiaZ0fvT9CYyb9nb4/yzFexgX2vq9sru1Sn0wqoxz0HZ/bsf6rB/b+0HcWaR2Y962jrZ+iNqHjClc8V9Z9rFDvPVAfDxX7c/WlZcX+tC8N9e4Kx/23cN/tZL4fGKTv8jCvc4Qdg1P/ZYjJ0mnb3R99OhF9JMWe6ro6tnN9/8+MD7OMuqLxYQ6pv1yG+isv7qRxtTSdaf9E4zt9nhclOpoxfqi1KRX3vEViMoZ7scX7/dD80ogeOr9Eck5PEpO9EyImi+axXpcnEmN9We+I0rW/UOMoQ/2kh6ofz6gf6rdJgdBjfyI555N9xIMdDFnOcSmccZKOSwztP5P2NfujTy7RJ8e9Ph5TOYvHyc54Ldfj5GFGXYXqP/U5nUn9HcZQf6HGQJ3W+cV0julcls40HtG6ppDzvCjRMUIxXJDGOfr6KpaIr1iaL8M4UXxPka6nphE9dH6J5JxkEuckoW5qzDZjmrJiS46+vLzYUudXlZSBjnVccY65f0e2URdlxTkM9ZMZqn48o35oezDjHOoH+pxaaPt9xTnMcUXYcQ6NKxj6lRzah+2PPocRfTq718djKmdxnNMFr+U6zulq1FWoflmf04XUX1eG+gs1tuq0zi+mc0znmM4xnQ8EnWncrnVNIed5UaJjhOY6e8Tt+voqNu5L4naGuCdH1YP5LIg5f6DPY6yrVnruABK3mzF6WXMwjtikvDmYzq8qKQON3bji9hxDnxyjLsqK2xnqJydU/XhG/dD2YMbt1A/0OaP3M25njpPDjttpnMzQr+TQPmx/9OlK9OniXh+PqZzFcXs3vJbruL27UVeh+mV9TjdSf90Z6i/U2KrTOr+YzjGdYzrHdD4QdKZxu9Y1hZznRYmOEZrr7BG36+ur2PgSErdzrA+qeuhM8ksL7D1/SCTnXE/i9vkkbjdj9LLmYByxSXlzMJ1fVVIGGrtxxe2dDX06G3VRVtzOUD85oerHM+qHtgczbqd+oM+5fj/jdt663v0MLW0vaYG9/Y7qvawcvUP1CRlGOegzwzTmZniGOcg11wlVZ2Y5aZ3dHmad6WeM6DPG6SHqjOM+KlObLq6zbkadhfIzfc7d+6izbmXUGfUzXVf63HhyHh2D1HH93BL9D5F4ch59Jo3pudvMUHWUYehF6+jhMOvIfFeFPitGYxqusnlG2Q4LUTZ9zpP7KJtXRtmo/XWZPN6ypTPFWMV11sOoM61/d1Jn+pwX9lFnPcqoM7pPl66rHqTOGMqWoa7bk6nOehl1pvXvSepMn7N6H3XWq4w6607qrAd+70XqjOO9BRUTZofQMWDoqD/0XQYtR99T6+Vex7Cfn6d11ptJn15h6NOb6MPgnx5TOYtjnT54LdfrgH2Nuupl1FUqOacPqb++DPUXR/LV19ZpnZ9Enel7kVrXFHJeVpToqI/1JDqae2yqfvdrMu9mmJOl0zUbc96t80sk5xSSefd3ZN7dxahf+t9etM659qAs63+Y6D4Zhxn1yzW+lLcOkEX0Md85YKqf9FD1Y747rM7R8UtSIHScS9/r+GMf8+5Q4yTXe282YznTuJQd7rjdk+jD9T8uDOUM0rjH9Thp9p9ZRl3R/pM57iluyz0NfXRa5xfTOaZzTOf/Vmc65tAYRJ+XHSU66mP0fXCO/lmV3Zyvq5iteaXSfBlijey4wN7/Q6v10PnRfSLak3iyBepGn22i77uGipe49uwo6/1QuuYXao8hrvdV97XnD1N8FWSq4+KY1NzbJVS8WbK/JfpGWetL5p4+5nyEvudC98vh2u+LY32U9jHlrWvrc3L3UWc9y6gz6uO6rvS58eQ82n+o4+a9Tr32b97HVeczzWezQ9VRlqEXraNeYdaR7peoX+ly0Vieq2zmu/cZIcqmz+m/j7J1LKNs1P7meEXtT8ctek/ItL95DXU+13oG03psNo2JdN1r/XV+ieSc4fuoezO+yjHqju6RQNdSGcqWQdc8HV63uM76GnWm9e9D6kyfM3Yfdda3jDrrRerMXGuLJ3nRuC8+sPe6pfZX8xrqfKY6ylTX7ef+usV1fzheS9e91l/nl0jOKdhH3R9O0mmB0rrX16xK6kufy1S2LHXd/kx1NsCoM61/f1Jn+pzj9lFnA8qos36kznRd6XPjyXmHE1l13Hx3V/urPo++B830XnS5zxTRd1oP1LwZ3lNOD3ePEPpO/gCGukgJ7Pk+yL70GcCsT3m2oXkz9BnFz7Qdgdcy403aZ+hzzttHn3GEUQ79PCONN3WZjiBlO8J92fao1zijXiOZd6CcvLlsOhCvZcbZ1Kb6nHn7sOlAoxzapjTO1mUaSMo20H3ZyrVpJPMOlJM3l02PxGuZ8Tu1qT7nmn3Y9EijHNqmNH7XZTqSlO1I92Ur16aRzDtQTt5cNh2E1zLnF9Sm+pyb9mHTQUY5tE3p/EKXaRAp2yD3ZSvXpjq/eFJOrVcPPD7IqAcdK5r694hQGQJllIHTNwbjtcz5D/UNfc7d+/CNwUY5tG/Q+Y8u02BStsHuy1aub+j84sl3rdcu1GkISffwqVMRftR1h1pct2gfH3XdYf719cwDAVIP8eS7zmt/fg917lAi0984b5eRVo9QaBtRn9S/P1mOTzK1m3LbbH+SN4NfF7dZXXZz/j04RP08v482O8woh26zdP5t2oj6W5q7smWre385IfL6r/qHSOQdKCfvoe7zLp4n035alz9g6KM/Q4k+w5n0GRqGPsOJPkPc6+MxlbP4HuEIvJbrZ4FGGnU11KirVHLOCFJ/IxnqL47kq6+t0zo/iTorfXS70bqmkPMGR4mO+tgQog+DP5fbh1EbmnuJ0jrrFGV11pnoqJ/HoM9pfEOeC2G4z1F877ofyS+N6EHvBelzfkwtPfd78lxIH6N+aXlonXO932u+367TdN6v54v03Rb9na7NMuyNU1zPXcrQkcYE5p6WZjnonpa/lxNn0biG1oH+rvsOaifan3DtqV+WnXKJjlrv7kQfrphI+4SOx3qFqAuG98OCTHW8xx7xFcqoY/qcV2Lybi4rVjeft9L+Q9uQrqtQ/+mWFnAbJ3E98zTEqDNzLTiRnJOyjzobUkadUR/XdUXHTK69hsvycZ0fHTN1P07vJUWi/y5rH7MuRMdQzxXQ8UZzH+MYZ932MfTuY9QtHXfoe1gMY3m5to5k3oFy8ua6D0vtoMsfMPTRHzrWM8zncsO9D0v7AK692RjKucczqK7nl0ONusox6iqVnEPfZWJYv/BC9enmumJM55jOMZ1jOsd0jk6dlT5mbJZCzusTJTrqY3Q/OY415/LiNWpDHUN3ClFnKVFWZ72IXnq9ir5DPya5VF+GOX0urVPzPhndz0afcz9ZSzsGdatqlENzF+MY0zqVF2qdSqfpHteh1tf0d/q/yAzrAMX13LkMHel/Xup2nlRGOeh+48eWM6en/4tM60B/DzVnpv0J13OvZc2ZOxEddZnpnIdr/kf3G00L7L2OTPsT6uPRNF+n4wRdf+TaY7SsthbLm2//JroGrT5xRjqNfO9F9OFoN+Hu3xSJdZyybMO8jhNk6iuLxwu6d09aYO++MpGcc/E+1nfNPVv0OEDX/HRd0diX651oukdrWmDv90UjkXegnLw5xj+utTs6t9G+ovXX+SWSc67ah6+Y8yTz3ZSqpK7ocy8cz+Gosa1XiLy45hdl+eWQCOYdKCdvhufJ0un8KEDKHzD00R/6zNkI9/p0Sgns+bzdvvShz71wPMPBVM4gfZ7D9Vr0KKOuhhl1lUrOGUnqbxRD/cWRfPW1dVrnF9M5pnNM55jO4epM19K0rinkvCFRoqM+Rp/LZRhTyo0jqA3N57honXWPsjqj64h6bZL+L9+bZI2UYX2xE61Tc42Ursvpc04ha6TryBqpuV5A/weQ1jnXOlJZ/wNI54C6PPS5H/PdNab5UadQ64M6b50fnZ8klVEOOtf5eB9rpL1C1IF5X4g+e88ci3u0fPraOj2M6KjLHIk5UVnvf9B7LubaOp1TUN+Ohnsu9P9K/6v/3DyQ8+bYqyklsOf9FfWJM9Jp5Dv3vUp6/2t/9GFeXwimBkKvJ3C1x7L8gPZXXGsZ4bwnxbyWkR5by/D3ic2jIhdvm3EGnRMMjRIdIzmPKqsPozY076PQOuscZXVG3y3T8xf6DkG9yqX6cr3nYb6z0M/Qjb6zkEXmUY1Qt6qBvede9BkGWuf/5TMMoeZW5vsBXGNgXGDvPX7N98XVOboNJQXKvr+oz2mJ9V/WPKpLiDrQ30O9B0r7E672W9Y7jSOIjrrMtD/hjon0PCpUTMT9TrXD6xb7mR67KpRRx4nknMxyfIheS+up/UdfsyqpK31ufGDvMSoNj5vvRet9a8xrqPO5/JCp7y+u+9F4LV33Zt+fSM7pto+6H03SaYHSuqdtRdeXPjeenEfrUh03+xJd9/o8usYViTUvs83RZ8v+q/U2pjEqPdx3eei7chy+Gu6ek6OIPqPd68PVJov72aPwWq7nQGOMuupk1FUqOecoUn9jGOov1PxGp3V+EnWm72vSZ8f1eTlRoqM+NprowzW/KKsPozbUMXe/EHXWOcrqjM6B9DxDxxdqHC0icyCOfXzonE2P26YeieSc36uWnnscmQOF2osj1Po2w57Z5a630/2w9FxjCDkW6l0RrrlmvzJ0pDGBbudJZZQjkZwzaz/nQLQOzPuVdCyk/QlX+y3rv15GER11mZn3ni7Wh84/00iaOSYKRjION+uYxuHnhxmHa/+h82pdVzQON8eoNDw+2tBFx+HmNdT5XH5I4yKH102nMYaue62/zi+RnDN/H3Vvxiv9jLqrSupLnxtPzqN1qY6bfYmue30evc/Def+2rDYXiWdazX0TQ+XNMEaF/UxrP6IPh6/SNdf90Yc7HmYqZ3E/Oxav5XoONM6oq35GXaWSc8aS+hvHUH9xJF99bZ3W+UnUmT4nQeN5fd6QKNFRHxtD9GHw53L7MGpDc08/Wmedo6zOQt3f0/GFGkcfisAcaBTJLy2w9329RHLO42QO9BiZA5lzTHp/gdY513NaZd1foM9pmeWiczc6B+IYA0P5rs5b50fn+ElllIPu3/diOTEULRt9ds58F4mzrZY13zmK6Gg+U8gZ/2j769gr1HPJXPOdSMXcZh3TmPutMGNuc89TOj/l7utp7OLwuuk0DtB1pvUfS+pMn/PePupsXBl1Rn1c19U4Umdc+2OW5eO5Ecw7UE7eDGNYp1A21f0lHcP0OZ+EaVM9toV65re8+NKMTeg4lWScM47oqc/5aj/XuKhfccU0ZfkVjWn0OK/rK4X8zvzMqReq/nWa7gGpj9F7qea7FvT51e4RqNuy9qQeR3QMtYbP9dwwfXYuLUTe9BnzEVFaZ6H8kdYjfX+C4VmDPfbySTTqcQRr/XgF4e5RQfsPDp9i8oMg7UsqObtuVshYvbtRV6nkHOZnyMrt20L9v4m7usjOomNWeXUxPIQ+XHv4l1UXw0Pk7bAuivMeux91MTaEPgyxbLl1MTZE3g7rIlPlffR+1MXRIfQ5OsJ1ofMLV+dhUaBzJeO7m7w7Ffdxx+xHXRwTQp9jIlwXx4TI211dpBevZ4/fj7oYH0Kf8RGuC51fuDqPjQKdKxnf3eSdXRxrTdiPupgQQp8JEa4LnV+4Oo8VqPMxUaBzJeO7m7yzC1XeE/ejLiaG0GdihOtiYoi8HdZFkcp70n7UxaQQ+kyKcF1MCpG3w3G1OC7K24+6yAuhT16E60LnF67OxwjU+WiBOg8TqPNwgTqPFaizxDYYDb5RyfjuJu/sApV3/n7URX4IffIjXBc6vwNB52ME6jxWoM7DBeo8SaDO0VDP9D8Irk3h1MebnGLoo+ssYOgYMHRMId/p/Y0C/N4j4O4+BLVPAclrsvP62G0f0190ejJr3l6Bum4RQ5nUdY91f93idb0peC39XMCxIepqKn6Pc2ynKeS6cSQffTyRfL86pfRcfZ6uD90faN3VfcxC/E51N+XyDblUck4hkTvWkNNpbWtVd5eSds7hW/vj1+o5CN2WG5O6oM8baC4wjnH2lwWG3jqdT3TU/SXtHwqY9NF5xeG1zbzp/2iMitI6SyXH6L36FCZ96hn61AtRF1x51zbyrh3BvKsbeVePYN6VjbwrRzDvZCPv5Ajm3dTIu2kE825l5N0qgnm3MPJuEcG82xp563Qk8m4fKP2kkXQk8m5t5N3ayLsq+U7/d6uXa328nOL7dDoP/UyU+X9OTPOIAvoevP7EGek08j2f6MMxTjONrSHfzRpllIk+B0mfXeJ6Vq+suK68Z2fL03mYQJ2HC9Q5Eu/AxXxjz3tTUnQ+RqDOEv15vECdJdazRH+eIFDniQJ1niRQZ4n+LHEcjMWikdE5NqZERmeJvpEX0zkiOsdi/sjoLLENThKoczTUs1oH1WuiA6pw6rP7WQqqj66zgKFjwNCRPoNB10X1fdkeAbfPUui86D36Quf1Uf6zLoWsee9+loLhmYfideUp7q9bvK6snx3Qz1JMCVFXx+H3OMd2os85xJF89PFE8r1fldJz9Xm6PnR/oHVX9z/0cw5Ud1NunCGXSs4pInJTDDmd1rZWddeFtHMO39ofv1b3eXVb1s9SxO6vu887dn9997Vj99f5847dX9997Wi9v16B/DbZOMYZg042dNTpcURHHYPyPkO6Wx+dVxxe28w71airaKyzVHKMPjdRgUmfssbPChHIu6zxMxJ5lzV+RiLvssbPSORd1vgZibzLGj8jkXdZ42ck8i5r/IxE3mWNn5HIu6zxMxJ5lzV+RiLvWJ8a61MjlXesT431qZHKe199alXyPYHoU8W1Pl5O8VqUzkM/86vzpnEzw3p38TO/ev6gP3FGOo18H0f04Zj7MM1XitdmzfsMKUaZ6DuK9JnffIZylrf+mE/sEI7OwwTqHK3vRJenc7S+e/7/zTeOFqhztO6l8P/Nn8cL1FliPUv05wkCdZ4oUOdJAnWW6M8Sx8FYLBoZnWNjSmR0lugbeTGdI6JzLOaPjM4S2+AkgTpHy/5pek20VVVOfdzvn1aI33sE3D7zq/Oiz5Jy7DUWyl90uog1793P/E5hKJO67lT31y1eV9bPuOpnfqeGqKvj8XucYzvR53HjSD76eCL5fmjV0nP1ebo+dH+gdVen6udxqe6mXL4hl0rOOZbImfuumfu8qbprSNo5h2/tj1+H2j9N1Y1uc4nkmJatRI7R/lQf09euSY7puqlDjum6OIgc0/VUnxzT9mxIjh0fQudp+D2eHJuO35PIsRPwe0Vy7ET83oQcOwm/1yDHTsbvVcmxGfi9ATl2Cn6nzzTPxO91ybFZ+J0+f3wqfq9Fjp2G3+mzwrPxezVy7HT8Tp/rPQO/NyLHzsTv9Bncs/B7Gjl2Nn6nz8vOwe+HkmPn4PdW5Ni5+P0Qcuw8/N6SHDsfv9NnU+fi92bk2AX4vTk5diF+b0eOXYTf25JjF+P3g8mxS/A7fTb0Uvzehhy7DL/T5zjn4fd0cmw+fu9Kjl2O3zPJsQX4vRs5dgV+98ixK/F7D3JsIX7PJseuwu9Bcuxq/H4YObYIv/ckx67B7x3JsWvxe29y7Dr83pccW4zfDyfHrsfvA8ixG/D7EeTYjfh9IDm2BL8fSY4txe+DyLFl+L0/OXYTfh9Mjt2M37PIsVvwewdybDl+70OO3YrfM8ix2/D7UHLsdvw+khxbgd9zyLGV+H00OXYHfqf/xXwnfh9Djt2F33PJMd3HFZJjOn6k8Zruv+l7W/peexE5pvvHY8kx3T9OIcd03z+VHNN9yHHkmO5/jifH9Jg7jRzT9/unk2O6bz2BHNPjy4nkmO73TiLHdP94Mjmm++8Z5Jgem04hx3R/O5Mc0/3yLHJMj2GnkmO6Tz+NHNPj2mxyTI8Hp5Njeqw7gxzTY8mZ5Jge/84ix3SffjY5psfEOeSYHtfOIcd0n34uOZaG388jx3QffD45pvvgueSY7lsvIMd0338hOabHjYvIMd33X0yO6THiEnJMjy+XkmO6X76MHNP99zxyrC1+n0+O6XHjcnJMjwcLyDHdX1xBjuk+80pyTPfBC8kx3adfRY7pceNqckz3NYvIMT1uXEOO6f7sWnJMjwfXkWP6P7oXk2O6T7qeHNP9yg3kWGf8fiM5pseSJeSYfm5kKTmmx79l5Jge624ix/QexjeTYz3w+y3kmB6vlpNjvfD7reSYHq9uI8d0n347OabHsBXkWD/8vpIc0+PaHeSYHnPuJMf0WKf7adUf0j2Iaf8+zDhWieSdFnA7VzL/r1SndX5KR/M/OquS752J3rnGMaV3Jya9cw29dZr+57wuQy45pr9rn4wjMua16H9X6//iTiojv0Ryzms4OIX6/+1KAZb/vS/+L3MdD+g5t9btKKKjPueNcnSk19J6DjPKS+tyDCkbw//Ypocqm7bNsBBlW7+P+h/DoCNT2T3qe/o5yOEhyq7Peb9qaT19iN9pPz+K1OM3IX7Xn/LW+qi9Od6jUtdl+N/U4nWpY0j500g+tEz0vzJdlYnmrdelzP8FTSTfvybrUub/dWobat3VqfreRXn/89nJkAv1P59xgb3/61anta1V3W0ifvYNWaPiGqfGllGWEaQs+hzdLyl9RjHpY/63tdZjFKlHrUeScY6WTSTn/FROn6XKpmMBXW463tI4gaFvK3e8HUN01Mf6ER3NMit/eQgnflXJ73QePMw4Fot/9t8eLuOfIeQc7dflxT8l5+BEvKzxl6FNFsc/et3EjH9GER31OZXL0ZFeS+tZXvwzmpSNK/4xy6ZtMyxE2arvo/5HM+jIGf9Q+6lrh4p/9Dl1Ukvr6SD8TuObEaQeW4T4XX/Ki3+ovTn6W3Xdse6vu8ce79qPxoYoE/3fe1dlonnr+MeMKxLJ90NTS8814xFtQ627aos6/qW6m3KdDLlUcs5RRM6MNXSazkEaEj/TfsQ5Th1VRlmGkLLoc2j8M5xJH3P80XoMJ/Wo7ZRknKNlE8k5Hcrps9RPOhag8Y8ZOzD1bR4ti762To8mOupjNP4xy6z8pYjEP/p3er8gxzjGGUfovPS1zXqm41wOOaa/0/jHjIk4/a+suG040VGXIVTcRuOf4WVcqx85x/RlMz/qy332Mf6OcF8nxfGPvr+k+3at2wiioz6n/z7in5EknRYotTetX10HI0nZctyXLT1U2bRtckKUbfA+6n8kg45MZd+j79HxT26IsutzRpBxaRSJb7TdhpB6nBzid/0pL/6h9ubob5nWSIOh1hGPClEmuhbiqkw0bx3/mHEFXcMsIPGPGY9oG2rd6X0EqrspN9yQo2smdN3CjDV0ms5BxhI/m0ziH65xalQZZelHyqLPoe9Z5DLpY44/5lxbnaPtlGScQ+ct+pxp+4h/dCygy01jCxonMPRtHi2LvrZOjyQ6hlqjMsus/KUeiX/0OEzvf4Va1+LqW8taR6Gxjo5nQq2jdCd6dzKOKb2HMultrtno9FCiY6hYTn/X90bjiIx5LRr/aPsllZFfIjnn/H2MvwzrBLk0jtN9u9aNtjd9zkX7iH/MmDDXKC+tS/psOIO9O4UqWz9DH1q2+fuof4aYvBOnr1P7qWt3DlF2fc5CMi5dTeIb3Ra6kHpcHuJ3/Skv/qH25uhvmdZIg6HWEUeFKBNdC3FVJpq3jn/MuIKuYd5C4h8zHtE21LrT+whUd1Mux5Cjayb0Xr8Za+g0nYNcR/xsOYl/uOKNEWWUhcY/+hzdLyl9ujDp09nQR+sR6r6CGf9o2URyzl37iH90LEDvE5lrYJzrDWWNt8OJjvoYfQbTLLPylzfxYUj6/970udIuxrFKRD7Ncbl0XvraXQx9lY46nulCjnUh+mrONY5Fc9xG95LNKeNaNP4xfTnUHFyf89w+xl/ncyT8j1z9bKDu2834L5Gc89I+4p8Mkk4LlNqb1q+ugwxSNob+JmTZzP6Glm3NPuo/g0FHzr6W2k9du3uIsutz3iLj0roQ8U0vUo+fWMY/1N4cMR/THCEYKo4eFqJMNBZwVSaat45/Qj0Por9vIfGPOfZrG9J1bT0GUt3Lihm0HI0Z6L3+stbWta1V3W0gfvYJiX+4xqkhZZSFxj/mvRalTy8mfbob+mg96LzafP5Hn6Nl6fM/3+wj/tGxAI1/tCyNExj6tnLH2wyio/n8S0qIMit/GUPiH/37YCLTyzjG2bfqvPS1dZrGOrp+e5Fj+jtd6+psHOOcD5jxd6hYJ1Qsp79rPwplW31Od3KOfp8gqYz8Esk5u/Yx/ma5r5OcUDGC1i2L6KjPia9Wto6h4p9eRnlpXdKxg6G/SQ9VNm2bXiHKVqmcsjH1EemcfS21n7p2nxBl1+dUrVZaT9XwO+0r+5F6bBLid/2JxT//bfzTuFrpuWYcY95T2N/4J9eQ8xP/1CJ+pv2Ic5waUkZZupOy6HPo8xd9mPQxxx+tRx9Sj9pOScY5dP1Hn9OinD5LlU3HAqHWVmicwBX/9AvsWV6dpvGPOSdNCVHm4ufl8QVZ5be636Lvanc0jqnTezKVS+elr63TOj+lo35fUf8WSq67UR9x5Bqm/bVsIjknex9jFsPYUhwz6PcB/6+9s4GxJLvqe72ent7Z6Zme2Z3dZT3eZap7puezZ6b6dU/P90zvl40hJqAEjGILgtcsJDIWIgYHAVmUWAYMiflaJMBfEPNpywmYxQJhEBsSbIJFZFvBgmAiL1+2wRCMCbbJElV3/ef93ulzq15v13nvtemSWn1f1bl1zzn31rn/e+659+428rNvEc2VBszwEH7nWQ8H6p37Ie9DsbKtlPw8bGTzMINoVhv0H2BHViIxwyOQsXx34cgumkdgy58PTKB6uwA9fqnzXFcdZuAY7fkBMpfv/bz237uGGV4A+XOUQ5k+HzpoSyaWLcygcnR/EukvAWYQnfShOhTvHHuSd5vvvMk3Axr6hz/P5NNv1XWpuy9AO/tSYIaHkG+1Shdbu9w+S7IQM4hGdqnkpwji5wHDj/gooEc7zrxp+CPW//IGzKD+k/uW2P42EiNdyPrl1e+HwaPucR8VK3PZXuaAGfSce5ZcNfcisZDK0rv1W+XR93A1lp9LxCKyT4XhZxI0r2jowy2uUR9eQDbJdB6yBeCzLv1TVjZ+D6J55fAxVDcSmz4EGct3X3NkF803wbZ+s9NH0//42mfZhz8IXT4SIHPQ+pG1Ppz9UJ5t9FcTP7Tdhz8f72VfqfuTSH8n+nDbp6oOuTZTtpS823znTb6ZbCOGqRvjqa5L3T2OdvZa9OFRtvbhhCwFZBENbW2UH8LafvHBuA/V05ShUd5J0HxfQx+u/ox9uO3/hjnPY8dQM9nGse+0I3PZXv6k2iyLvuNF5Llm7pVyXQ+SKxX3ofLYz7FubT7JybhnvcPWP+erRfNjDX3WjdblX7zIet1t5L8BHkXzEw2YwbaRJSPvfsh7M1S2dTy0amQrHNlE87YG/a8G8Bgke98YQ5jhqiO7aH4WtvwdwAR23qx8/pTzXFcdZljNerqMGOcFjV8K+lDUjh52ZOIYuC2ZWLYwg+2L6b/5NWAG24erDsU7527Ju81nY/A4VuYcv+2f9Zt+xXeinT0FzHAT+VardLG1y53TlizEDKKRXYqM3UhhhivQY6rPIGYQzW82YAb1n/TDKy/71tUgea9n/fLq9yp4tP1BCjN8BzDDJSMDYw4o19UguVIxByqPMYGsW5tPcl4Ejd5h659zRaL53YY+q33su44ZVGe7jfwervlQA2awbWTJyEv8dT1UtnXMcMPI5mE20fzh0DHbOmaIGtMwHqt892VHdtF8BLb8Y8AENq6mfP5p57muOsxwA7qM8K0EjZcK+mzUjh50ZOKYuy2ZWLYwg+2L6S/6FDCD7cNtrOx+8Enebb4rJh/H5qvIl4o5U12XuvsLtLNPAzNEjQdXE7IQM4iGfoZhxfeLD8atpfoMxqSJZqIyVk2YgbGLysu+NWrckvKp3wCPtj+YdmQu28sjwAwrRgbGelOuqDjF1P4ijKMTDmDd2nyS8wJobHytbSOMr72zpv5jsO86ZiCWy7ON+6awjd5Tw6PXRpaMvMRfV0NlK5bpC7KYgbKJ5r4G/Qf07cuRY5rrkLF890VHdtHMHuzp6WiV5ne4Aj12nee66jADz2aPGFcGjZcK+mx2m3dTJo6525KJZQsz2L6Y/qLFgz1a24erDler/+W3KNtN3m2+SyYfx+Y3HJmVT7/pxzyBdqZ2FDkevJGQhZhBNFyTMaw9Mb1xpuqpDjOI5sqAmIFrMmx/GzluWcn65dXva+BR93jGi4cZJoAZzhsZGDdBuVaC5ErFTai8kkedeXAhlJ/1Pvwi9JRDfyqP6+8+v6EPt+uI1YczvkAycR1J1L5alxOyeRjqixr68AAMGbqvFvvq8t3Ljuyi+RLY1hehj7Yxnmv7+znPddX14bSRETYjaPxYeP6j645MXE/UlkwsW324yuGcj9JfhT7cztupDr05UPJu8100+TgnfBX5Un5h4ugXo509hj48ytZeTcjCPtyLLVsO4sfafvGxDD2qnmwfznVCt+K9BuzDuY7P9n+R4+NU/P1l8GjXA0w7Mpft5ben1tOM2Wcf3nXkiopbUVl6t34zRlBydXGPZ+Xp/7K5F7SGcI3vZcO3xRn7IcMy7inNfSUuJN51DjQWj9ryiEdf3dD/tm4jqn0lLP6xeIz45zs2iX+6Rl7qkvin27ZsCWynuuk6sv2HBv23P65ZvBgje//4QfjnvCO7aL4f/dITwDeqtwJ6fIvzXFcd/oleNx3kDyo8P5+3FpxxVG3JxLKFf2zsNX2M/xH4JxXLxTlIu2+al++CyTeTbdwvhnhb+ewa8lJ3P4R29hbgn6h+6lJClnOQRTSySyU/54P4sf2P+ODaO9XTlKFR3knQvG1A/MO1BBY7RPpsiqxfXuuzmck2xvNPOzKX7eUHgX903iPjRhfNvUjbqrL0bv0m1rF63p/14zX9XzL3IvG33ffAwzoWy40SRwbpoku966rru2gbAsZqS8TBg/DD9U0RWDlIzoK25pms3T7a2vployvvnIlI/1PKf1s3D7rDc/s8l/xYO0df/tKY8Kh7sT7vervLOlR/tOjobBh7QG5GZ13wE9DnF8Qken+JSZ4Ghl1sv9yljikvBx8qbxI033VHj/ZPKt5Sfpdz5l4k7lBZWeZjWmKjc7in9D7wGNDfLdVhc8akWH+Oh81F81cN2HyfowOliQk9OxWF11PfHPeYl8zEIFH4UG2ik/XjbOoiGqe0+N4l9p+7EzqeBM3fN/jbmvpi+jN5jlZE+wny6yzRt2DPfuS8vmim7qjX2ZWEztjGbRzXRLZxT+C8um/9HM9U9+07SvrIedSAOJAl+oPsvnv0P4nmYIPurW9p2eiOaycZH3Sufdlq7Qv9Q+of2YeOU985k23EBJRtosp3uvp9IVavBTHLZOb3pcQss3f0eFad78r664N98LJ5t/Kcxv1l8+4hxiU+Sh53GzmuOTzON/AY0K4ejYxbol0o3+2tNRHNaeDVhSrN7+sU9HjVea6rY37nSNN3ExHfHRSTWXAewe7xRZkegA7akonv6mT9+73pPtcZX8E3LDrpQ3Uo3rlemrzbfOdMvhnQXEe+1Bp+xqwUaGdqR5H+4esJWRYhi2i4p571l9v4hZJG+pwyNMo7CZoHG2xLAG537Z/18dP+PW9E9i96/yTZv64ju2i+AO3yhbBvFoeUz1/iPNe1Y/9Ga/9eXGP/rB0b1P4tmnxbsX9fjHb2Eti/U8i3WqWLrV2u/bM2ivZvkHVBtH/6nurWBYnm0QbbEoB/Xfsn3s6BR9F89YjsX9SYytq/U47sonk52uUrYN/s3Gn5/Fud57p27N9o7d+31Ng/a8cGtX+FybcV+/f1aGffOgL8Z20U7R/jauz+X1xbzriG6Jh5vfuKw7fuSXe0ycqnsTjtto1rOW3ew7iW76yxidNO3rJe/zniQyzm4vw6fcejjDPVd+H5/zlP4825jdL/763XUZrxsRcT72J8rNrVVNbsC//hhn6y9W+iio+1a2jsemauoXljg//TrmHzfM/SAddWBGCAJU82bz5LNG9p0H+E7z/Sr8r6K9+96Mgump9G//FW4BDVG+3QLznPddXhFNZ3xJrOIJ9fwf7O7rdHmbz1rsXWrr6+VjhF5XANt9K/CJxi17eqDrmvn/o68m7zXTT5uC6W+ySl9mRkbPF/Qjv7JeCUqH7qSkIWzn+IhvO9AbEObv/jzWvY8Z+dj+b476kam8W4IK4P8mIQo9YHpeJwuD7IrqGYdmRmLErZbo9W908hz3lzr5SrCJIrte6J62Bt7DPXDBH/2JjZcYvrjfweUvHTi7G66G7Wx8j4q4D+epnf5SD8cHwc4ecNkrOgrW87Ptba1q7R1bBjEFNjJJW3w/MOzymeubaFcRmiG8Y+FoPw6PkcosYzqb6Cdag+9Lyjs+kx01kBfgJwSkE/Etc3/j/g7oB1YMsdU14OPnh2mmjee2ePtlOliUOIlU6be5FYSWVlme/PI547jXtKM6Y3oI9ervNLcs5d7a3OL3lr/Xel/6aYXm/NO3GsZ6dG6YuUzMRNUZiWax3zzN+PIRpbtfjeZfafuxM6Zlz4c2ra0CB9MX3Hw1gHFuBrXqb/ze474Pl+8wadXUrojG3crh+ZQFns7xi7y7VqE847SvogHXWD/A7L9PsMEk99ukH31ofUNbrz4qkj/cUBvlN3P8y6OOjFBp1dS+isKQ76dPuy1dpklUfsSNwxTnhjJtuIoyib4qDPVr+XYvVaEOdNZj7+IM578M4ezzYO+rzJR2xj46DP4n7XvHt4cdCLfXHg9vzdaw6Pz2vgMWCPmCJGdj8O5pwj+604QGD8F1Zpfl9HoceXOM91dczvHGn66D5b4mAo0wPQQVsy8V2dbIA4QHzDopM+VIebjYM5bfJtKQ4Q7UztqNRd1DzA9YQs5yGLPbulzGfXvNizmksa6XPK0DDOTDSPNtiW9sc6vv2rW7v71SOyf1HjvNQ6EMp+Kw4Q7fIVsG8Wh6zFbznPde3YvxHHAdbYP2vHBrV/3rnWz9b+fT3a2bfC/h1FvtUqXWztcu2ftVG0f/THW1+utxZd+rTz4MSconl1g20J2FvZtX/e3sqi+Y4R2b/ovVdl/446sovm36Ndvg72zc6Rl8/f6DzXtWP/Rmv/3lBj/6wdG8U6uO9HO3sj7F+UXyG1Dq5pHchRk8/uh8txvV0HorzcJ/jHG2xL+/HUvv07amSl/fvpEdm/qFhya/9OO7KL5u1ol/8Z9k11ynVwv+o817Vj/0Zr/36lxv4923Vwba4D+Xm0s1+F/Yva7zO1DuQoZPHWgShGz/O1Mn4vag1XytdK3Frna1U++SJpt+06kLPmPfSJ/vcamzjt5C3rdWpnn/Qt8z2MfdJPg2Yz+6T/r2GPZZ7FPun/u2H+Z3z2SV+f27KyeTEQovnjBv1HzBcHyb7pfdI/hv7jz4FDvH3S/855rqsOp+zsk755mVi2cErdPumfcebapI9x2Cf9/6Cd/R1wyrD3Sef87yj3SfewRmo9qbdP+uSh9f+fbfukW5kZv1i224Xq/jknzznIFeX/TOFIlVfyeKZKezGCxD92bUjkvNUg61ckA9dlR30P1h/ilR2gi+5m51gYsxuBVbYy5o+Y5wqSs6Ctb3sdiLWthdHVsOPWU2Mkngm2w/MOzx7PqT0zRHd+THj0fA5R45lUX8E6VB962tHZMPY03YzOjoKfAJxS0I/EOKubh0LLXSY+0njJ8sE53Dvv6tE+VPG2H3mIlY6ae5FYKdXeiJU83Kc014EE9NHLHr5W2XXryq0cnKv5wobxxD5HB0oTx3p2apS+SGsrIjEt/X95tnGMNwxs1eJ7l9l/7k7omGuJXlzThgbpi+k7HsZ652GtnRH/nu/3pQ06W0nojG3crjmcQFns77jeg2uyJ5x3lPRBOupG+VTp9xlkDc7LG3Sf2ruxbg1OkGxLQb7TTa+d+VcNOruS0FnTWQR2P7m8um/7LHsWAXHMMPw+1rZz3lPYhPhlnHDLDO5RHqW1nkTzscT2ETi1k/Wv7SDPjKkVzbcf6vGstqP1JKdNPmIkvVt5TuF+Yd6dmgNqf35huW89jZ2nuuLw+F0NPLbfrpaLoLmVtfZK+1K++4wju2i+51BPT99Xpfl9LUCPP+o819Uxv3Ok6euLWENTvvd6++9da0eMCclRDmW6CR20JRPL7mT9cSu6P4n0m/EN2/gW1aF4L/sKzW+Rd5vvqMk3AxrOodnYFf3mOsgfRDv7UYyXzyLfapUutnb1zfFZWThPJZq6uBRvHwB9T3Y+iXEpovmpBtuy0Lr8vv0TbwvgUTRvG5H9a1923/6ddWQXzc+iXb4D9s1bT/eU81zXjv0brf37tRr7Z+3YoPbvtMm3Ffv3TrSzp2D/ziDfapUutna59s9bTyeaOr++t55Y35NdT8f5dNG8p8G2tI9/ffsn3ugvvbVvzojsX9SYKoX/KLto3od2+QHYN2893dPOc1079m+09u/DNfbP2rFB7d95k28r9u+DaGdPjwD/WRtF+1e3v52dw/Twn/XxEf99tMG2tL+exrd/4o1n34nm4yOyf1FriVL4j7KL5hNol5+EfVOdMl588q6Nz3Xt2L/R2r9dd/Vom+zYoPZv2eTbiv37FNqZ2tEw8Z+3f6JoeGaH3dd/Ott4JlHkWlg7N3DJ4Vv3pDvaZOWTL7Ju/75T5j2ccztY1VFqPYnNW9br63evpzmPzTlcO68bFWtG+6932xhVzuF6c8+MEfDiPUY59+ztta0015MsJd51FjS2TdTNw87WtImQGJhqPYnmxey8J8dbopmv4ZHvEp/evKddYxI0t7Lsyaa6KRzZzjToP2LeOXJeifVXvtuLI7m1xy1ierrAIao3jtMecJ7rqsMprO+oc98D1hAXxHz2HD3KxDM22pKJZQun2HUaxJurwCl2Tteue+Y8OHm3+ZZMPu8sjrq+lWu6VtDOHgBOGdY5HpLlLGQRDWONonwntv+xcXYljd1P5azhj7F4L6ixWYxJ9dZqECdErd9Mrbu4AB7tHPC0IzPjIMt2e6K6z7jROXOvlGs2SC6VpXfrt8oreTxepedwbw786v8Zcy9y7sLiWP1eAI+S4Qz4iRpHzBp+vLIDdNGl3nXV9V0L4CdgrfvSNMoYhB+OlSJ8XEFyFozjbHs9iR2T2DVnXLsWvF5prW3bvQPtnjM7PA+H55Ifa+e4Z9WZMeFR986Cn6h9NVJ2l3Wo/mjO0dkw4uI2o7NZ8BPQ5xf0yej9JSb5trtCy10i1tDYw/IxCZqlu3u0r65425/1n7+m/7PmXiTuSLU34g4PQynNtRkB/d2anhcSPNKfo/Y2lZBjEjSva8Dm+xwdKE1M6NmpqLUQqW+OZ+NZWxGJD9UmOlk/zqYuonFKi+9dYv+5O6Fjzp29vsHf1tQXc127aBm3rWfPZP3j8Daw2WPVxfUzm3nvYw1XS2uTF+2NDHqYQJq+rqbnHm0Xeey4/Bnz+7ZsI4aaxPOfbvBVRvTJQX75JfpF7P6s9JOL5u0N34T1seib4DyE3VsnSLZukG9rif5d67dnDL5onmzQ2XJCZ57fXrQToOP6uPK+7Re1/kN0xErD8NPY/kPlEecSI40TNprBPcqjtNZ/yIfI8UMEFu5k/WsxyDPXhYjmPfBJq+1o/cecyUccpnd7sXUL5t1DmzMrihXyuNvIsezw+N4GHgPa1UqQ7H1nE6t+jjuyi+Z98Pd/APNGai8noMennee6OuZ3jjR9cxFxA0HzVWvfkV33eNGRifM/bcnEsjvVn8rhvrhKfxjfsOikD9Uh1wrKv0/ebb5Zk28GNNyn0+5RaM9KW4v/Qzt7GmPyU8i3WqWLrV1ruruQkGUOstyaV4Ysx00+0dO/Jn1OGRrlnQTNRxtsS8C4zLV/x42stH8fH5H9ixqTWvvnxfmI5hNol5+EfbM4ZC1u6+6Nz3Xt2L/R2r9dd/dom+zYoPZvzuTbiv37FNqZ2lGpuxPIt1qli61drv2zNor2j+vfTpl8oqf9kz6nDA0x5y18Xsmasi0BPhzX/p0ystL+HWjgMcr+RfkIrf074cgumrvgj74H9s3OjZfP553nunbs32jt37Ea+2ft2KD277jJtxX7dxjtbB72L2D869o/a6No/7jfmWJTRM/4V8atROHWVPwr+bY+Gtpk5bOxhMS2dt8q5Z0EzWKNTZx28pb1uoT4ZzsPwPgJzg1Erf+xc0X6rfI4T+LN73AezptTHeX8jmTgHILSjH8+n3jXKdDYvZHr5joebOgnW/dpV/HP6qvsWnbGyYrmeTU88l3ic8HIS11yn5YADLDkyaa6WXBk+0cN+o/wY0f6Ve0+MrOO7KL5YvQf/wQ4RPVGnPJS57muOpwSfc5HkM+vYH9n1ztTJsYCtyUTyxZOsXuhMYb/K4FTbOyv9dFyTqNujaa3ttPGDHey9FklqutSdy9CO3spcEpUP9VNyOL195zPj8JNtv+xsSwljerJrqPiebqi+Zc1NotxX1wn5cUQRMWfzxl59XsRPNo5kGlHZsYacW3VMeSZN/dKuY4HyaWy9G79VnnEaPO4Nw9+9f+EuVfyfTKI7xOGb/0+CR4lwwncU5r452TiXWzLqsepRHmcJ/u2hv639TFBhX/s3r/ijf6WW+e3NuAfG+8/b+T1Yvdj6nv93EMr26zhh7K9tkH/7a8nXz/3MKqt2znaOUd20bwO/dL3On4Y7lP05mfpp2F9R2C+oH60YL9l1xFSJvo525KJZQv/eOfLK/0m4B87PrPxAYwNq9uj7LjJx3VFnNs6a/LZfbFK3T2BdvZm4J955Fut0sXWLne9i2SZhSyikV2KXP9l8YD44PovO/8nGuXl/N9PNeAfYQH6m5SXOCFqr4xUf8t98nSP2MDKXLaX35tcT+/PenaFsenHzL3IdqWy9O5jRgYPo+3P+vGa/h839yLnbez8s4d1LJYbJY4M0kV3s30XbUOAb3aF3+Ug/PDs1Qj8ECRn3748ba//srb+hNEVbT377ag4ATvXaeMEdnje4XmH59HyXPJj+0D6X46PCY+6dxL8RM0Rpvpk1qGwyjFHZ9NjprN58BOABwviVb2/xKsfw/jmWPvlrnRMeTn4UHmToJk43KP9i4q3FCYdN5+c5KrzyUVhszpfH+c67b4dnq9PNJ9uGLftc3SgNMcLNp4g8ptL7eVxBjx6vr2osQP9rDl+MwbNs1PeeCtq/Jsab3H8a30SkfMvqW9tp+wQG93d7FqG6Lkb+kkG4WcYPoBU3bDsgO+zGGZ8vLWVjA89fM/6/9Scio01Uj/Ac6qlK8YNRvjY6VNkWVF9zgnoIcfvYexNlGqXwfFlm96biOv9ItasT2f9vv0mfrjnS8T+JUFyFowxa9s3ZePCzhpdzYCGex9HxSWkzpXnOVw7PMfzTH8I4z/s/NqoebRzjkHfYK3dZR0KU510dDY7ZjrjWFpjccYlPHJPj9+A8etSJ9sYB2F9Ohyb/vpzerQvqHjjHkKzkMfD0VFzbql2wTk3tQfPT0BsHRVvO5/gUeWVNPZ8GysHz7f5pzXYkFjMi7FibPxZcy+qb6Z8ercXTy6ZiV2icJzahDDkSaML2hP6MPWcbTsqTtP6zW2fwH6CPuBR+eT+IZcdYKPXMD99jOXVMb9zpDn/G/Hd0J8/CD/B47GC/vxhrO9JtYPgvRm7mx1rEY9F7PnE9UmD8ENMHYEPg+QsiBXbHvvZGHxvH0vRcD1FN0B/HZSrd+s31ynaPnsadGfHhMdh7jGbsgesQ9nveUdnJ8dMZxyTWN9kifu/G2OSCHtOv6bik+t8pK/BmOR7MCaxmIhjEup8lGMSyeWNSdiPR+Hx1JiEccX6hurGJKL5kYYxySlHB0p7Pg7ak6jvNzVe556A1s8QiS/UJjQmOe3oItrH2bZMm1lH+1MNcx7Wj6f2461TZp8ZFTebqq8TQyw7qyk7wL51NxuTyjibKCw6vwl+ov27kVj02eyX23SVurJnls0bXc2AJnhv1FrMsgR+vPUBFseMmkd7/l2knU3ZAw+LnnF0dnLMdMYzfOx+CWVf8h5g0Yg4APrfhEUXDG88c/fzgEXfCyy6YPRLbD0MLJpqF8RhNvaW+HQUWFRl12FRKwex6AdrcISHvVO2Y5TnZFqcFIklGKudZ/7at2j/StsypfYO5z5lovnDBtxpfTXWtnKcwP4xai40VV/nh1h2NqZlB/QF7l70ds6W7ekvN9me1EfQJtu96L18oqedtPHG8+Y9nNP9mwHH7GzTUesLUm1a5U1kG8d7neq+9S1oX3m7r0lnxDIQg3HPL28dRxQeSK2RmAeP3pxK1Ny4xVhdo58YXSw+utm5NY5jI9pPUJ33ra3c09p7L3Q9f4z1dTOuijxE9fmpNUqLTtnt6WLlgjeG9nSx5PATNdZK6WLJKbtFXfSdMV2ni2WHn6izCVK6WHbKblEXfWeN1+nigsNP1Nm7KV1wP7XN8Lw4BjzvMel2yr64ZuNWBtDFisNPxJ7DdbpYccpuTxfdNX/IxQF0cdHhJ+Jc9zpdqLzN8rw8BjzvMel2yl5Z29Pr0gC6uOTwc2nIuuAe1JvheXkb8rwyBjzvMel2yl75qrLsywPo4rLDz+Uh6+KyU3aLunisLPvKALq44vBzZci6uOKU3WK/uoaLrg6gi6sOP1eHrAuVt1meV7Yhzxe2Ic+L25DnpW3I8/I25Hk7foPj0Db2mHQ7Za88WpZ9bQBdXHP4uTZkXai8fwg8r2xDnpe3Ic9L25DnK9uQ53HQM2ND3vg5kfwsvmyzMXDiYRppzm9cr9KrWbtrdVTWdZR1o3V9rNePbS/6fSO07MVH2V+29971+aEH2n/vml/vwepdu6t3P+Do6qEq3Wm5nh7EezsoR/cnkf6Rz+nRik76kD0Q7+Uc+s0qTd5tvmsm3wxobiLfAyaffq9W/0vdfS++84i2NUi7Lufy9S3fD13Y87vKb/+6uRdpL68bvvX7GniUvaR9uB7ET2qufphlZ2NY9n6kuTY+YG56bU8ktVvZHpXNuD7RvL36vlJxNTeMbF1HNvu9ePJ67xINY23E45ShuQHeRfNkDe+jbOeMq+G3P5FtrAvF1dh+PM92vtVRlR31Xarv03epNs3vUjS/3vBd3jRy6Lv0vsGbNflEX/cN3jDv4Tf4mzV8ct8M5d2Thez/V9umVd4EZGH7mgCNnuu7tHYsH7EM3ENDdT6N58QdUeOA1JkMN8Cj7jHeLWA97gp1pni3m0Y/Udhxs3tOEvtHtJ+gOi9oE/TuWSPTTLYxfjfIli56WMLa0s3yvLgNeV7ahjwvb0Oet2PbuLANeV7Zhjxvx/Z8cRvyvB31vB3b86VtyPPlbcjzlW3I83Zsz9uxH9zBosPheadPGQ7P27FtXN3heSg872D+4fC8Hb/B7YiRxkHPjJP56nsj+VmPkyE/0llmeMwMj4yvoV90tUqvtsbjepzMPN6rsh7I1q88G04ck8qLKXs9TuahAJnK9z7c/nvX/MqPVO/aXb37YUdXz6vSnZbr6RG8t4NydH8S6Zfd26MVnfQheyDey7k3xdeQd5tv3uSbAQ1jeB42+fRbdV3q7p/hO49oW4O063IOUN8y42Q0HzON/6vmXqS9XDV86/c8eJS9XAU/q0H8pOb4VAbP07s5pjqbwT3Ko/REle9I9Ztzcavt87xmSzg/zXdznxbRfDO+Z7XZXVl/fXCfmHnzbuU5gvvz5t2puJSAuchL5HG3kcOLnXm8gccArHApck76AchYvvuoI7toXn1vT0+vqdL8vnLo8Qnnua5BcM5nU59MmcahT/6Bmj45r9Kb7ZNXTb6t9MmvRTt7Av3zTae8YmtXX9yvfTfPXxHNcchy1OQTPWOC8io9ZWiUdxI0r2+wLe2fb+nbv6NGVtq/N4/I/kWd7Wnt301HdtH8ONrlT8K+WRxSPv8F57muHfs3Wvv3ZI39W63Sm7V/Z0y+rdi/t6Kd/QLsX+7wWWztcu2ftVG0f2chiz1HS/S0f/qepgyN8hJbvqvBtqy2Lr9v/8TbKngUza+NyP61L7tv/3JHdtH8N7TLd8O+qU55PsfvOM917di/0dq//1lj/6wdG9T+HTX5tmL/fgvt7HdGgP+sjaL9s+c9M589k4jj+ilDo7z0OX+owba0v+eyb/9yIyvt34dHZP+i9ptO4T/KLpo/Qbv8COyb6vQo9Pi3znNdO/ZvtPbv/9bYP2vHBrV/Z02+rdi/P0c7+1vYv6jzRx9MyJJDFtFwv2N7ZpHo6/Bfbt5D/Pf3DbblaOvy+/ZPvHGMLppdz6nnMcr+tS+7b/88/4Ro9uBcib1Vejrr1elZ6PE5znNdO/ZvtPbv3uf0aJvs2KD2Lzf5tmL/ZtDO1I6Gif/yKs3z3EXDfUDsmkh7Bj3HyFOGhmuvbtnbBtsSsF9H7fwH9w8RzbER2b+ovQBS+I+yi+YU2uUZ2DeeMaHnV5znunbs32jt3+Ua+5dX6c3av/Mm31bs33m0syuwf1FnPT6YkMWb/7iOe3NVWvTcx0PPInFrah8P8q17dX5LzUXXnfF0xLyHZzw9r8YmTjt51+YPJtfTjKHgGVDz5t6ebHhnXs0bffCcKsZ+KH0SfJ8390q+R3lmqmTguZzeWSxF4l0LoNH6gqlEeTw/9EUN/WTAuRPu2UB1Z029uIZHvkt8zht5vbOBIuvbyrZg+KFsX9mg/4gzriNlZ/2V7z7tyC6ax9B/fA1wiL4F+ulf5TzXVYdTWN8RZ2WU7w04w2ENp6xA/hzlUCbu29+WTCxbOMWeUTCJ9DcCp9izA1SH4r38FhVDXXfmwDmTj2cOLCGfPXfDngtS6u7laGevAk5pfwywrrulhCwLkEU0PIctCn/Y8yzFB+P6LI7wzu0UzeM1NovnzEpu9rfECRG2ra6/7YJH3WO8upW5bC/vcc4l5dnrJ8y9yHZ1wshlz/P1MBrPWST+OWfu7cniziA8Z/j2sI6H5ZQm/jmfeBfPFVdfM5UobxI0TzT0vwH95BL7SevL9frJH2rAP/ZMsRNGXupyGGe8W9ns2bGU7U3Dx5+LkbKz/sp3n3FkF81b0C/9hOOHWYAen3yWfproc9OCcFXBvl3taNmRiTilLZlYtvCPPa9qEumfB/6xZ1+pDsU79xUl7zbfeZOPZ2Yxbt2eG2fPiCt19zNoZ08OAf90E7KchiyikV0q+Qk4L7NvPYbeLT44ZhYf9qxs+r9F864G/CMsQH+T8hInRJ3pmOpvF8Gj7hH/WJnL9vLdwD/2Oc8D5T5wUbZVZend+k2sY8+F3Y/0LPheMPci/ZYLhm+LI4nRFnBP6WPVf88naM9B9tqyLY9t+f0N/W+AL2+FOM7GMp4Dj6L5nQb8YzHhSSMvdcnx1sn2ZVvyZLP+R8r2+w36D8DkS0Gy99ke4Z9Tjuyi+TD6pT8EvlG9cRz2Cee5rjr8w/qOwpIB49iCfgS1o64j0zJ00JZMLFv4x+KKSaT/CvjH4hHVoXgvv0XhX/Ju8501+WZAUyCfxRr6zTHIn6KdfQL4J3oMYGWZhyyi4ZndUWes2/5HfHBcrXqaMjTKOwmazzTgH2EB+kksdoj0N1h/l34zTsKOSacdmcv28gjwj54fR54T5l6kbU35f4h1jhm59hsZ9f+UubcHOslb5vuU4Vu/T4NHyXAK95TeV/336lY0s6Cxscy2PMYy33F4/X+q/23dJ7t46TK/Sesj4XhDNHfX8Oh93yeMvNQl7U2A/VvxZFPdnHBke26D/gPGhCuRtt/uVX3Mkf1Wmzrc09NclaatZLzTovNcVx3+YX1HzMsH2fGC/aj1kVKmReigLZlYtvCPyqF/T+nicI/W+mJVh/TFql8k7zaf12eJhjEiqbkO1XWpu+NoZ2pHkf3U2YQss5BFNLJLJT8Re6Z7/Y/44Lha9TRlaJSXsYWXa2xWKZuwgOQmtiBOiPJ3peJkOP/oxcRYmcv28rG719Nlu70d71SeOXMvMgZcZend+q3y9kOGOdybA7/6f8zci/SHHjN86zfn7STDMfAT9T3Y/QC8sgN00aXeddX1XYzHDOivl/hdDsIP564j1vkHyVnQ1j+TtdtHW9tq4wFnso0+oMixbmqMxLHuDs/xPPOMGM4xiO7YmPDojd+jxgYpu8s6VH805+hsesx0dhT8BPT5BWOSuWb164Bh59ovd6ljysvBh8qbBM29z+3RvrLijX06cccRcy8Sd6iszMhA3CF5juCe0vvAY0B/t+RhVZXN/YvU3qYSckyC5vEGbL7P0cGtNUPV/5SdGqVfTzITg0ThQ7WJTtaPs6mLaJzS4nuX2H/uTuh4EjTf3eBva+qL6Yfl+Dai/QT5bZfoy5LOxL/nR/3+Bp2dSeiMbVy64h6Tp40e8+r+GcOLzvOz7yjpg3TUDRrDL9GHYv3DnI8RzRsadG/9MfNGd4wbZXzKkfZlq7UvKo84iH3oOPWdM9lGTEDZJqp891W/j8fqtSBmmcz8vpSY5e3wWarOd2X99cE+eN68W3nuw/158+6UT7/9OJulvjMMdxs5zjo8/lwDj+23q6UiRvb+OV7Vz6wju2jeCX/wL2JeQe3ldujx3c5zXR3zO0eavpuIed6g2Oy1dmTjlwtHJsZgtiUTy+5k/fENXFel9G/gG7ZxEKpDb40hebf5jph8XqxmJ9sY46DfjH16F9rZuzFmi/IPn0vIMgdZREPf/6zJJ/qToJE+pwyN8k6C5rcbbEv7uN23f7NGVtq/94/I/kWNWaz9O+rILpoPol3+LuybxSHl8484z3Xt2L/R2r8/rbF/1o4Nav/mTL6t2L8PoZ19BPaP82irKq8F3Z1LyDILWbw1Van5Udo/fU9186Oi+csG29I+/vXtn3jz9vD/6xHZv6gxlbV/tzuyi+ZTaJefgX1Tnc5Bj3ufu/G5rh37N1r7d/tze7RNdmxQ+zdr8m3F/v092pna0TDxn7VRtH/ceyWv0qLnXuh6FjnnYn1jZxy+7X53tMnKp7E47bZkmjI09BWI5p6qjlL7w9i8Zb3eh/1hLObi/Dp9x1F75KfiXlQe5zs8/z/nabw5t1H6/yWDF9fL+NiTiXcdAY3a1VTW7As/UdMmQr6JKj6Waz/ybGN8MOPRz9TwyHeJT8/3bGNmg3yLS55s3nyWaBYb9B/h+4/0q7L+ynfPObKLZgXzqpeAQ1RvtEPPd57rqsMprO+IeLwgn1/B/s6uoaNM3Ae3LZlYtnCKjTvlOq/nAafYeFW7hznnIur28LVr/LinB/c1sXMf+s0Y9WtoZ88HTonqp84kZOH8h903ICjWwe1/vHkNO/6z89Ec//3jGpvFuCDGnnoxiFHrUVJxOFyfbs8WmnZkZixK2W73VvdvR57c3Cvlmg2SS2Xp3fqt8hhHkONeDn7138bMjltcb+T3MGv48coO0EV3sz5Gxl9Fxes+2zNRIvy8QXIWtPVtx8da23rU6GrYMYipMRLPC9luPHOPV8YLiG5uTHj0xsJRODtlw1iH03hudTY9ZjqbBT8B/edarOkBU1bZv/9b4MG8/XK7HVNeDj5UHn00E/f1aF9T8cb+kX34AXMvsg9XWZmRgX14XqUP4J7SjDUN6Du6Hu5T2XXrwKwcnEP43gacu8/RgdLEV56dGqWPTDKzP4/CWnn1LqVzRxfRfX6L7+2y/9yd0DHjld/Y4Ltq6ovp0xzG+qQAH2iXfiHpTPx7Pskfb9DZqYTO2MbtuoaJbON6jLy6b22AYk1FR3u9x/xerdLF1q7ab0XlsU9nfzBO/cBMtrF/o2w2bpJYKUCvBfvfyczvF9j//iJ8WWo7ipvMTT72OXY/JMZNHjXvHpqvvej2xY3uNnJ4c/vvauCx/XbVLWJk799TzsbMUnbRPAU/4a/D36z2shd6fL/zXFfH/M6R5pi+9b1HKhse4Odea0c2Zn3BkYl+47ZkYtmdrH8PPMa/Kv0+fMN2zlh1yH345Bck7zbfAZOPc83cmzi1FyDXWrwb7ez9GH8EjHvc/ZKsfeZ+SfQJ2xh50TNuXPq05+oxLkU0v9tgW9rHoL79q1vr96ER2b8o/G3t36wju2ieRrv8I9i3vHp+AHr8a+e5rh37N1r794ka+2ft2KD2Lzf5tmL/PoJ29tewf3uRb7VKF1u7XPuXV2nOx9n94sp73n4oes75nqiYv1TcCPnWPemONln57Bol4nEbN6S8k6DRw6a4IeKj39+1nvbmdjjvQD/AqPZDoe/K8+XQ5+b5T0fpy/H2mlGacUPHE+86ABq7DrvOr3FHTZsI8SlXcUPqq6wfgfPUorm7hke+S3x6fgQbSxTpV7KyHTD8ULbnNug/wo8T2dZZf3m2EWuy7eXwkc9Vae49NAs9LjrPddXhFNZ3RJxCEP4p2AerHZ1xZCKeaEsmli2cYuNxGKde3NejtXE8qkPxzvXjdWcoHjP5vL3oOlk6Jpexe8fRztSOIn1rpxKy0P8nGvruo8aNueHHzp+xj7LzKcrbt69ejc3iHK8XX0ycEBWnm+pvT4JH3SM2sDJzXnE/5KWf9nZzLxJHqiy9264d8WKbuB8g8U9u7o1bvFPQPG7tngF5rC66mx1jz4KfAFu1vNm1QhwfR/g5guTsW8/adtyQtTWzRlfDjidJjZFU3g7POzyneE6tseI3OQ48ej6HKCyX6itYh+pDb3d0Now9cDajsyPgJ2J/m1LeQ6asEke9Erg7YF31cseUl4MPlTcJmm/53B7tv6542488xEqz5t4oY5qJ54iflGZ8VgRm6GQb48CtXStpZM+mEnJMgubfNYwn9jk6oP7Li36BHDqI+uYG2StaMtO250H8qE0Ib1ufN+0U23iOtHiM8t+qLL07N/ph/0O/fNQ+DKlvbafsXhtpsewux8u6OuZ3jvQh8JMH6IJ91SD85LH8FDNZv95VVtT3mGoHO/vL7+wvv5mr1NXOXu07PHs87+wvv5GflN31YhbmHJ3dPmY64/jI+lLL8dV/wdgvYNy06X3gb2Ds9xsY+x01+uXYjzrP25ehtl2oPI57vLEf8VLA2H7Jw/Aqm/uW2LkkKwfnkt5XM/bzxlBlnRw39yK/VRtv4e3vYuMrIjEb4zrzzN/zPQCTFFHYq5RjM7EgH9pkLIjajxdrw/4xov0E2Wd3bxprn7k3zR816Ox0Qmds49IV9ywJkK0bFE+xpjMbT2H3oGdMw5816GwhoTOei2r3go/0R6XswvwQy85qyp5tv+xlr07z6rfKY53+zSbr1M570NYv1OQTPdfqix8bX894GtH8XYM/9JDJG+SvqW1Xh8CPsBHnPKzvPRI30YeTZxt9KNRZ8JxRn39cMXBefHneetmLj27Wv5aDn4j2E+Unoz3Z09p7L6zFbtp4Ms+PLhryELEGopOlfeZnnLLb08XKhbLsswPo4qzDT9TZCXlCF2edslvUhbtnqaeLcw4/EWc51+ninFN2i7pYs2/nB9DFeYefiP2F63RRty9dHc9nxoDnPSbdTtkX12xcMYAuCoefgH2ca3VROGW3p4tu3x7SdbpYdPhZHLIu6s4gr+P53BjwvMek2yl7ZW0dSXcAXXQdfrpD1kXdXt51PJ/bhjwXY8DzHpNup+yVryrLXhpAF0sOP0tD1sWSU3aLunisLHt5AF0sO/wsD1kXy07ZLfara7jowgC6uODwc2HIulB5m+W52IY8n9+GPJ/Zhjyf3YY8n9uGPG/Hb3Ac2sYek26n7JVHy7JXBtDFisPPypB1ofL+IfBcbEOez21Dns9uQ56XtyHP46Dncj5Dcxtvuj+Sn8WXbXatpHiYNvyIx4tVejVrN15XZV1EWZda18d6/dj2ot+XQstefLR875UAmcr3Xm3/vWt+vWvVuzQvfNXR1fUq3Wm5nq7hvR2Uo/uTSL/+/h6t6KQP2QPxXs4/X67S5N3mWzH5ZkBzGfmumnz6rboudfd9+M4j2tYg7fpg1vuW74cuNK/KtVoXzb1Ie3nR8K3fK+BR9pL24WIQP6m5epXHNUALY6qzGdyjPEpPVPnsGXdBeu3bh2XS8Mw9Y0XzDnzPeXVvV9ZfH1wnt2LerTzcd3bFvDu1V1DeuvzLBXncbeTIHR7f2cBj++1quYiMLbkEGct3c2873RfNL9/f09OvVGl+Xwehx/c6z3UNgnM+m/pkyjQOffJv1fTJqsPN9skXTb6t9MlPoZ29F/1zxLl4HfBnZZmDLKLhntp2/0LRMy5O+pwyNNy/UDQfaLAt7cdc+/Zvr5GV9u+DI7J/UfHm1v4tOLKL5vfRLv8A9s3ikPL5x53nunbs32jt35/X2D9rxwa1f3Mm31bs39NoZx+H/TuIfKtVutja5do/a6No/05CFhsXLHraP+lzytAQc4rmkw225WTr8vv2b8HISvv3qRHZv/Zl9+3fQUd20TyDdplVa8xK+6Y6nYMeDzjPde3Yv9Hav5nP7dE22bFB7d9ek28r9m8S6xfVjiL9CpcTsnAPcdFwD3G7rkj0dfhvwbyH+O+eStbhnTvg2z97xgLt3+EGHqPsX/uy+/bvoiO7aI6gXc7CvqlOua944TzXtWP/Rmv/ztfYP2vHBrV/CybfVuzfPNpZAfs3LPxnbRTtH/dcs2c00NfD/WKjzktI+VqJW61vijZZ+eSLpN2WTPbcAeWlT/RajU2cdvKW9fpju9bTXJfPNeCz5t44r8vnfgLz5l7Qeu2Bzx3Iq7R37oDWhHWy9LkDXPe/mXMHXtjQTwasx16L0RRuH2St+RfX8Mh3ic9ZI2/q3IHZ9mVz19GrbmYd2V7UoP+A8dRSkOzuuQNzjuyieQn6jy8HDlG9cS+Rr3We66rDKazvnXMHBpOJZQun1J078HLgFLtWUXW42XMHjpt8Wzl34KVoZ18LnJIj32qVLrZ2uecOSBaeM+SdOxA1drD9j92Tp6RRPU0ZGuXlvj3fUGOzuM+U5OY+vMQJUb6i1D68J8Gj3VNg2pGZeyZ5e+MT/+SQK6oeVZberd8qr2lPWsZnePsij/K8KDsnT7zJc5eOJd5FjGT3PbLlcd+j72rof1vfq6M6d0nfhmy73ZttEjSva8A/FhNaTE5dcm+kAAyw7Mmmupl1ZHuiQf8BmHw5Ev+w/sp33+7ILpofRr/0euAb1Rv30X6r81xXx/zOkWZ9R9jb8r0B+w+t4R+7t9IpR6Yz0EFbMrFs4R+LK7iv088A/1g8Ys9H5lnq5N3mO2bycb8Ljv8t1rB7Tpa6ezPa2VuBf6L6KbtnoWThXjWiYdxY1D7Ltv+xe+KUNKqnKUPD2DLRvKMB/+RVmn4S72ybKH9D6qyE4+DRYsBpR2aeF1C227uq+9y3/IC5F+lHO2DksueIe2dD7c/6z4nS/9vNvT3ZeJ0XFfk92Hggr+wAXWx633GekRHQX3f5XQ7Czyz4ydvnZzFIzr55qbb3m7a21fq6hn1OzKzhR78Z67vdeObebuI1tSfuKHlk2xU/UTg7ZcNYh7LtBxydTY+ZzvaCn4D+c+08oHtMWWX//sefG1pul/22cLzlYxI0jx3p0X604m0/8rAP32vuRfbhqfbGPtzDI0rzPKC8fR67Hu6zMfJsk1MJObj/5ScbcO4+RwdKN+3dPUofmbUVkViL54Hn+E1dRPf5Lb63y/5zd0LH9BVPVA0i5btq6ovp0xzGuZcBPtAu/UJ27Y7nk7y9QWdN/nz6+0Q7kW08My+v7lsb8Ex1X3S0I8MY39lvhXESsvXsD8apH5jBPcqjtF03l4PniH6/A13VrZ0Szf1Hejyr7WjdnD2XmX2O3q08XDd3xLx7aL72am9Bex6h5Jh3eJxt4LH9dtUtYmTvPx/Pxk1T9lvzdcBeJ6s0v6+7oMeLznNdHfM7R5pj+qi9/gP83H1nK6kdnXRkot+4LZlYdifrj+nlOQNKr+AbtrG/qkPxXvYV8gvWxQzvNflmQHMc+U6afPqtui51t4B2pnZU6u4e5Fut0sXWLvfsEGufZ0BDn7CNvxM9582lzylDw/g70dxosC3tY1Df/h00stL+PTgi+xeFv639u8eRXTTPR7t8AeybxSHl8y9znuvasX+jtX8vqrF/1o4Nav8OmHxbsX8vRDv7Mti/u5BvtUoXW7tc+2dtFO0ffVOa06H/zMZbRMZ7p+JGyLfuSXe0yconLEq7LZls3LTy0if1shqbOO3kLev1K3atp+kXok/E+kki49FS84Eqjz4Rz5czzmdw51Wa/gKlGTc0l3jXPaCxMXB1fo1vaOgnW/cpV3FD6qusH4Hz1KL5pgY/go2l8vwI0gHj9qL8Sla2eww/lO3xBv1H+HEi2zrrr3z3Xkd20bwa/cdrgEPy6jn97U84z3XV4ZTgc+zCztZlH2zPZPPOOG0bp3DdOXEL1ykr/QPAKTaOR3XonW9Ydw5tbvJ5scadLH2uKGP3Xot29gRwSpRvbT4hyz2QRTSySyU/B4L4sb4+8UG/nviYMjSc2xLNG2psFud48+p/au5kVOeQc76S2KBuXrFst/dW9+mzPWTuReLI1LlkKs+Lbdqf9cc56b+NJRq3eKfI78H6Q7yyI+aQNzvG5lx6VBzTs/V5Rvg5guTs28+t7bgha2u8eZRZPJf+ZgP0VzdGUnnbkWeufeYcmegOjAmP3lg4CmOkbBjrULb9kKOz6THT2UHwE9B/rsUNHTZllf37/zgSWm6X/bZwvOVjEjRflPdoP1Dxth952IcfNPci+/BUe2Mf7uERpRk3FNB3dD2ca+cH2CanEnJwDuEPGnDuPkcHdk4mZafy9nUwsI/M2opIrMX1bHm20Rc7jD6/xfd22X/uTuiYY6U/a/BdNfXF9LtyrJi3L9viMGOtxL/nF/rEJmOtbBwI/X234reyjfFyeXXf2gDFDYmO/cIwxnf2W+E8gWw9+4Nx6gdmcI/yKG3jhoiVIvr9DnRlY0c4dyqa2/Iez2o7ihvy1lvtNe9WHsYN7TXvHpqvvZo3pz+Dchx1eJzO63lsv12tz5tHxa7TvpTvvsuRXTQH856e7qzS/L7uhR5nnee6OuZ3jjTH9BGxUkF+7rV2xLnfHOVQJvqN25KJZXey/vlp7tNyyw+f92hFJ32oDrmnjvyC5N3mO2jyzYCGe1TbOWr9ZtzsPXkvPVulS90dRr7VKl1s7eqLHbGycB2raOgTtvPPh5AWjfRp15ty/lk0J6uMKdvSPgb17d9dRlbav4W8nsco+xeFv639O+zILprFvKenpSpNHzfHzQ86z3Xt2L/R2r8H8h5tkx0b1P4dMvm2Yv8u5r202lGpu3uRb7VKF1u7XPtnbRTt3yzuaU6H/jPl4XxPlN229le/D4NH3ZPuaJOVz8boE4/buCHlpU/qC6uMTXFDxEfHEDfkxV9ZP0lk7GTTOnH6RDxfDn1unv80D+J7EF+OtwZfacYN5Yl3HQaN2v5U1uzX+IrqZqqf5Bh7tUoXW7mquCH1VdaPMAseRfNoDY98l/j0/Ag2lihqbtCTTXWz15HtX+Rp2aL8OJF+BdZfnvl+WdG8Iu/p6euqNOOC6G9/3Hmuqw6nsL4j4hSC8E/BPljtaN6RiXiiLZlYtnCKjcfhnln/Ju/R2jge1SH3kdWYnbzbfLnJ5+3R08nSe9kydu+VeS+tdhTZTx1NyML+XjT03R8K4sf6+sQH/Xp2PsWb2xLNt+f9z3hxjrciS86dRMUupvrbOfDorQuvm1cs263w0R3Ic6+5F7luyOJBG8fE+cV7ce9e8Kv/d5l7ke0vhX8Z2yQZ7sI9pYl/DiXetR809uwIWx7PjnhDvv4/1f+27suu8I/dg8KOzRnv/6N5mke+S3zea+SlLvn9BYzT3P01VDf3OrL9ZJ6WLcif0o0co7L+yncfdmQXzdvynp7eXqXph7kPenyX81xXHf6JHpdFzftyrGPnZ704obbxT473Etfq/iTSv5z3aEUnWtWht7caebf5Dpl83t48dX2d6rrU3c/lvbTaUWQ/tTchy37IYtdwD9P/Ij44ZlY9TRka+r9F81/z9f8p/CMsQH+TxQ6RvuL7sn559Zvri3WPMdBW5rK9/PbEeprtdgJ5bjP3SrmmguRSWXq3fqs8+lFuw73bwK/+e3HTUfEAqbhpxldJBm+fSOKf1Bpw4p87oBevvEnQ/F7e/4zXHtDlWbv4587qXXYN+B3gUTR/kKd55LvE521GXuryTsh2W9uyFcWKJ5vq5jZHtj/K+3nltQd0bfIYJPsi257db5qyi+ajeU9Pf1alOQ/P+b7POM911eEf1nfEeubyvXe3/96+fXLUju52ZPoc6KAtmVi28I/K4d49Sn8679GKTvpQHYp3ziOQd5vvoMk3Axr6Le42+fSbfdhf5r202lFkP3UoIQvxjxc/Gb3nm94tPrz4J4t/vLn1XRUQTeEfYQHGs1nsEGTbaueJ7gSPlFc8WpnL9vK3lXHZn23U23TWww+Mf4vyrassvVu/Ode1D7zp3jTk0bMpc6/keyKI7ynDt35PgEdbH8RE1RTkWjudSLzrNtDYvRRsefQ/PKemLYdg9MVLjxLHybaLN35vorm/hsdOthETTht5qUuuz2i9vitsZ2WzYwTKdrRB/xH+t8i2zvor373Pkf3W3i2zPT2drtK0lfuhx8vOc10d8ztHmvUdYW+D/MYFx+0pHymxV9v4h/u3EGfQH6D0pdkercUjqkP6QIR/ybvNt9fkmwHNHciXWkvMMcg5tDO1o1J308i3WqWLrV19YwAry22QhWNU8bM/iJ99hh/6BqTHKfBDGuWdBM0DDfhHWIBxJ8obHCdf299y/QFxj/5bmcv28gbgn9vAu/Lcbu5F4p/UuRW0l1bP9AkR/1hMtAdy59lwcNs+8GhjlIjbiH/2Jd41ARq166lEeZOgeVFD/9v6N1nhn5nqXbLt1IV4FM2LG/DPDH7nWa+++U7pYAayRa1ftLKpbm53ZPvKBv3PBPAYOdZk/ZXvnnJkF81j6Je+BvhG9XYb9Pgq57mujvmdI836jrC3IT7SYh3/WD/iHY5M9IW0JRPLFv6xuII+zG8E/rF4RHUo3umL9daVKd8+k8/zmXhYQ785Bnk52tmrgH+GtU+KHQMwRobzD1E+WYsHxAfHzOJjytAo7yRoHm/AP8IC9EVQTv0PsG21/e0M/lvfybQj89remA7+mXTyTEKuKNtqfR+2XyH+4dh/AvKI773mXuR4IOWPI9bxsNwtf2P136tbrtkQjdrdVKK8SdA80dD/to4JK/zDsX2e1WO0H2rAP/vxO8/652ezrF+X+yFblA/Eyqa6mXBke9Ow8WfVZ0fJzvor3+35HkXzFvRLPwF8o3oj/nnSea6rY37nSLO+I+INItd73wH582zjPAp9Wm3jH/pYiIc4v6n0zwP/DDIXrX6IvNt80ybfTNY/f6F8TXuglbr7GbSzJ4F/ovqpmYQse8C/aGi/o+bjbP8jPqagR8aSkIbrFkTzrgb8Q3yg/xY7RPq7UnEynH/UPc5lWZnL9rKvMi421qa8rN2hXW1zf7byHbvAky7a1F2Gvz3gr0VeFinvrmyjDu5w9DNl/pP3LCGPfQfTE1m/v8c+9+5NO+Xc4dyz3wafpX6X11x13/Iwl/XP2+3K+tdrkZ7yzWUbZeyYtPeeQeX8/4IVT2tkeg8A","debug_symbols":"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/vCMDhn/GR1y+DM6ZOVndAI6T+g0ysrH/f748LGf6W2UflN6G+XZlN5GCTWlt1HmTOi9XRqlyJTeRrkwpbdR0kvpbZTdUnrDTK9XvrpdvPLV7eKVr24Xr3x1u5jlq8UsXy1m+Woxy1eLWb5awkyvWb5azPLVYpavFrN8tZjlq6tZvrqa5aurWb66muWra5jpNctXnS7Up/Sa5atO19hTes3yVafL4ym9Zvmq05XtlF6zfNXponRKr1m+6nQ9OaXXLF91uhSc0muWrzpdxU3pNctXnS7ApvSa5atO105Tes3yVafLnim9Zvmq0xXLlF6zfNXpYmNKr1m+6nSdMKXXLF91usSX0muWrzpdnUvpNctXnS6spfSa5atO18RSes3yVafLWSm9Zvmq05WolF6zfNXpIlJKr1m+6nT9J6XXLF91unST0muWrzpddUnpNctXnS6YpPSa5atO1zpSes3yVafLFCm9Zvmq0xWGlF6zfNXp4kBKr1m+6rS5P6XXLF912q6f0muWrzptwE/pNctXnbbUp/Sa5atOm+RTes3yVadt7ym9ZvnKbH/7zWx/+81sf/vNbH/7bra/fTfb376b7W/fzfa375cw0+uVr3az/e272f723Wx/+262v30329++m+1v3832t+9m+9t3s/3tu9n+9t1sf/tutr99N9vfvpvtb9/N9rfvZvvbd7P97bvZ/vbdbH/7bra/fTfb376b7W/fzfa372b723ez/e272f723Wx/+262v30329++m+1v3832t+9m+9t3s/3tu9n+9r3Tfu+vb335/tbX48XPfud7LHH7/snbj08v+/5XP/l+fP/k64ufvMX112e3WM88apQZ2noUeDS8R42yWVuPGuXJth41ysBtPWqU29t61KhrdPWo0/2Fth41mpm39Yg5w/geMWeo9ej++MHbsZ15FHg0vEfMGcb3iDnD+B4xZ6j1aP/t0e3MI+YM43vEnGF4jzrdIWrrEXOG8T1izjC+R8wZaj3aHn8vaLud/b2gTne12nrEnGF8j5gzjO8Rc4bxPWLOML5HzBmG96jTPb62HjFnGN8j5gzje8ScYXyPAo+G94g5w/geMWcY3yPmDON7xJxhfI+YMwzvUae7tG09Ys4wvkfMGcb3iDnD+B4FHg3vEXOG8T1izjC+R8wZxveIOcP4HjFnGN6jTvfZ23rEnGF8j5gz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"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"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":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"120":{"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, compute_siloed_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_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\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_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"},"134":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\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_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_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\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_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\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n // WARNING: if updating, see comment in public_call_stack_item.ts's PublicCallStackItem.hash()\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"166":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: 0 }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize<GAS_LENGTH> for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize<GAS_LENGTH> for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"168":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_LENGTH> for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_LENGTH> for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, nullifier_counter: u32, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, nullifier_counter, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n nullifier_counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<NoteHash> for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.nullifier_counter == other.nullifier_counter)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n nullifier_counter: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.nullifier_counter as Field, self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n nullifier_counter: reader.read_u32(),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n assert(\n (self.nullifier_counter == 0) | (read_request.counter() < self.nullifier_counter), \"Read request counter must be less than the nullifier counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"169":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_FEES_LENGTH> for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize<GAS_FEES_LENGTH> for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"170":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n // WARNING: if updating, see comment in public_call_stack_item.ts's `PublicCallStackItem.hash()`\n let public_inputs = self.public_inputs;\n let mut request_public_inputs = PublicCircuitPublicInputs::empty();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs\n };\n call_stack_item\n }\n}\n\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x022a2b82af83606ae5a8d4955ef6215e54025193356318aefbde3b5026952953;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.new_note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x23a1d22e7bf37df7d68e8fcbfb7e016c060194b7915e3771e2dcd72cea26e427;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"171":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n new_note_hashes: u32,\n new_nullifiers: u32,\n new_l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n new_note_hashes: validate_array(public_inputs.new_note_hashes),\n new_nullifiers: validate_array(public_inputs.new_nullifiers),\n new_l2_to_l1_msgs: validate_array(public_inputs.new_l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.new_note_hashes.len() {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..self.new_nullifiers.len() {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.new_l2_to_l1_msgs.len() {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1eb5048b5bdcea5ba66519ecd1cbdb9e18fd957d52830b2bcb309f4ce9bcfbd3;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"173":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec<Field, GLOBAL_VARIABLES_LENGTH> = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"174":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<ReadRequest> for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"177":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"178":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"182":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_LENGTH> for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize<NULLIFIER_LENGTH> for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<Nullifier> for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"191":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\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 = 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"},"192":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<PrivateCallRequest> for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, SCOPED_PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec<Field, GAS_SETTINGS_LENGTH> = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"206":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x157022d579f892f06461fb895cdf5550b24329e15e7a41df14f9dad582fa1bc5;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"207":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, CALLER_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"209":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize<LOG_HASH_LENGTH> for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize<LOG_HASH_LENGTH> for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<LogHash> for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the counter when exposing to public.\n // The log hash must already be siloed when we call this.\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<EncryptedLogHash> for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"213":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"struct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"214":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec<Field, CALL_CONTEXT_LENGTH> = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"215":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option<u32>\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_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_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash; MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\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\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.new_note_hashes[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n for i in 0..MAX_NEW_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.new_l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL]),\n new_nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_note_hashes: [NoteHash::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [Nullifier::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x2e08158f3f0d9a94e3f17338aadc3733a15bf5d163f94cef1afd8a47b446d789;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"22":{"path":"std/field.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(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..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"226":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<L2ToL1Message> for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"237":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n num_txs: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec<Field, CONTENT_COMMITMENT_LENGTH> = BoundedVec::new();\n\n fields.push(self.num_txs);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let num_txs = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n num_txs,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n num_txs: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.num_txs == other.num_txs)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"239":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"240":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n 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, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path, messaging::l2_to_l1_message::ScopedL2ToL1Message,\n recursion::verification_key::VerificationKey, traits::is_empty,\n utils::field::field_from_bytes_32_trunc\n};\nuse 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\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n pedersen_hash(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\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 recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\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: [LogHash; 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_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_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_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_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 pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n 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), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"241":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"243":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize<TX_CONTEXT_LENGTH> for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, TX_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<TX_CONTEXT_LENGTH> for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"247":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"261":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<N> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"286":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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"},"287":{"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([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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_pub_keys_hash() {\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"},"395":{"path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len);\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\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) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\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<let Len: u32>(&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<let Len: u32>(&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<let Len: u32>(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 pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> 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, let MaxLen: u32, let Len: u32> 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 set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\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"},"55":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"93":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n 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_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_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 private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_function_hash: Field,\n new_l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\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.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.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.next_counter() });\n }\n\n // TODO(#7112): This function is called with non-zero note hash only in 1 of 25 cases in aztec-packages repo\n // - consider creating a separate function with 1 arg for the zero note hash case.\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\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 note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\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 // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<M>(&mut self, randomness: Field, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<M>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &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 ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &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 ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<ARGS_COUNT>(\n &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 ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}}
1
+ {"transpiled":true,"noir_version":"0.31.0+10076d9663dcf40ac712df69e3a71a1bb54866e2","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_optionally_a_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"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":"compute_nullifier","type":{"kind":"boolean"},"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"}},"bytecode":"H4sIAAAAAAAA/+2b3U7bQBCF18GhBoOb2HGckEAIBaTehRSScMfLtM/d60p9haqss6Mclmm0UcdLVool5LG9O+ebsz+EyERqfSSvP5GJ2+Z8rN4f1ObFnGf/dzwI5po1yRkFwtkKhPMoEM5YkDNiOPU5NrFed3rNfVLr9fjuIXbWA30Ez9W2RLZqYgJ8eC1V6Wr2fAzJEVwZ8Ng8o7PGSc0zBEtNkXUbuEeFtuAe6RzBPdrBSCcxpgjX+5RskOXyvs4+XcOJyUXcKcT4bAzWxQ3V2Jav8bGRMXn1rqExqVcx+d42uRO4pjE4NbHgb44H1I7Mz6k1F2KIR9CW2pEfLWDVx7narJfTLf1iq18GbY6hn7230DWNtfaqa2J9btOeAPkb8HCm86byed+MTWx5l0JNGXgioz1f6fxn6u0RWdfXEGfAcy7Os1578nWux+4zsMvkfXrUXnUsr84srzJogwydBvyLQJdy03WH0ZbzYrHS2l0HL7oMT9ezF11GW9CLZ62dO3iRMzy5Zy9yRlvOi+U3rV04eFEwPIVnLwpGW86Lef0ZoOfgRY/h6Xn2osdoC66Rel6UDl6UDE/p2YuS0Rb04ofW7jt40Wd4+p696DPagl5819qVgxcVw1N59qJitAX3zvrzxcDBiwHDM/DsxYDRFvRirrWHDl4MGZ6hZy+GjLbgGqm1Lxy8uGB4Ljx7QXq7MvcCZK4CZC72gDmxYhntRb1/jhy8GDE8I89e4HcuuzCXe8CcWLGM9uJJa48dvBgzPGPPXpDersx5gMxFgMz9AJnLAJmrAJn3YT4nViyjvaz30EsHLy4ZnkvPXpDersx5gMyjAJmLPWBOrFhGe1l/N3fl4MUVw3Pl2QvS25V5ECBzdw+YEyuW0V4utPbEwYsJwzPx7AXp7co8DJC5CpB5FCBzESBzP0DmMkDmwxr0w5zvATO+e/S7UZ75c2rxkGfKYlQWYwpxBozU9kXJva+SWbWT1lTcj/X42POFrqeNas9XOu+XBmrSeW/l89Z/I9yZXPQO3y3j1b2JI+FxuoO8EejQ/RjiX9CW2pEftB8Qu36X68bE91v6Tax+GbS5gX63Vj+6prHW3v00cVNzy2Ved9RmLX8Fngb2wUd8J1eBV8pipGMCPNfyPA8N1TnDd/j+KNm1N7W8OrG8yqAN7tEftW8emA/M/2LGzxMncA956F7LqgX/v2EKOf4CARQXTpY1AAA=","debug_symbols":"ndpRattAGIXRveg5FN/fmhkpWymlOIlTDMEJsVMoJnuv3dIF9LxpJN237+kwl+lp//Dx4/vh+Px6mu6/XqaX18fd+fB6vJ4u0+ZLLX/ent52x9uL03n3fp7ut33cTfvj0/Vp1Ofd9Hx42V+f1/b57e42WmG03cgoMioZbWU0y6jJqMtoyEiK2EoRsxQxSxGzFDFLEbMUMUsRsxQxSxGzFDFLEU2KaFJEkyKaFNGkiCZFNCmiSRFNimhSRJciuhTRpYguRXQpoksRXYroUkSXIroUMaSIIUUMKWJIEUOKGFLEkCKGFDGkiCFFLFLEIkUsUsQiRSxSxCJFLFLEIkUsUsQiRaxSxCpFrFLEKkWsUsQqRaxSxCpFrFLEKkVks6FVaFW02tJqplWjVafVoNVCK2oj1EaojVAboTZCbYTaCLURaiPURqiNojaK2ihqo6iNojaK2ihqo6gNAs2QaIZIM2SaIdQMqWaINUOuGYLNkGyGaDNkmyHcDOlmiDdDvhkCzpBwhogzZJwh5AwpZ4g5Q84Zgs6QdIaoM2SdIewMaWeIO0PeGQLPkHiGyDNkniH0DKlniD1D7hmCz5B8hugzZJ8h/AzpZ4g/Q/4ZAtCQgIYINGSgIQQNKWiIQUMOGoLQkISGKDRkoSEMDWloiENDHhoC0ZCIhkg0ZKIhFA2paIhFQy5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWuSiRS5a5KJFLlrkokUuWnbRk1y0yEWLXLTIRYtctMhFi1y0/ttFr6efu/fD7uFlf7vbe/v4cXz8d9X3ejz/evv75frvbw=="},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"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":"num_txs","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"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","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":"teardown_gas_limits","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":"max_fees_per_gas","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"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs"},"visibility":"private"},{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"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":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"},"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":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"is_fee_payer","type":{"kind":"boolean"}},{"name":"max_block_number","type":{"fields":[{"name":"_opt","type":{"fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"std::option::Option"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber"}},{"name":"note_hash_read_requests","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::read_request::ReadRequest"}}},{"name":"nullifier_read_requests","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::read_request::ReadRequest"}}},{"name":"key_validation_requests_and_generators","type":{"kind":"array","length":16,"type":{"fields":[{"name":"request","type":{"fields":[{"name":"pk_m","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"sk_app","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request::KeyValidationRequest"}},{"name":"sk_app_generator","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::validation_requests::key_validation_request_and_generator::KeyValidationRequestAndGenerator"}}},{"name":"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":"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":"private_call_requests","type":{"kind":"array","length":4,"type":{"fields":[{"name":"hash","type":{"kind":"field"}},{"name":"caller_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":"is_static_call","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::caller_context::CallerContext"}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_call_request::PrivateCallRequest"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"public_teardown_function_hash","type":{"kind":"field"}},{"name":"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"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"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":"note_encrypted_logs_hashes","type":{"kind":"array","length":16,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"note_hash_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::NoteLogHash"}}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"length","type":{"kind":"field"}},{"name":"randomness","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::EncryptedLogHash"}}},{"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}},{"name":"length","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::log_hash::LogHash"}}},{"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":"num_txs","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"}},{"name":"total_fees","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"tx_context","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"fields":[{"name":"gas_limits","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":"teardown_gas_limits","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":"max_fees_per_gas","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"}},{"name":"inclusion_fee","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings"}}],"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs"},"visibility":"public"}},"bytecode":"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","debug_symbols":"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uk5o0lssX2W6xGfSWyxfZbo6Z9JbLF9lurBm0lssX2W6JmbSWyxfZbqcZdJbLF9luhJl0lssX2W6iGTSWyxfZbr+Y9JbLF9lunRj0lssX2W66mLSWyxfZbpgYtJbLF9lutZh0lssX2W6TGHSWyxfZbrCYNJbLF9lujhg0lssX2Xa3G/SWyxfZdqub9JbLF9l2oBv0lssX2XaUm/SWyxfZdokb9JbLF9l2vZu0lssXxXb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb374U29++FNvfvhTb396K7W9vxfa3t2L721ux/e3t1orprZWvWrH97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbsf3trdj+9lZsf3srtr+9Fdvf3ortb2/F9re3YvvbW7H97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbsf3trdj+9lZsf3srtr+9Fdvf3ortb2/F9re3YvvbW7H97a3Y/vZWbH97K7a/vRXb396K7W9vxfa3t2L721ux/e2t2P72Vmx/eyu2v70V29/eiu1vb8X2t7di+9tbpv3eX5/69vjU8/nme3/yOeZ5Wh8K//mK++c45//6nW/z/Yvn2/7Mbv/bdz7Ox3ee33zntc2/v3Zty5X7idII7n/sfsP9wu4nSqq4/7H7iXI77n/sfqIWg/sfu5+o0+H+x+4nari4/6n7me6J4P7H7if66RLuf+w+s77K7jPry+r+cYexnuuV+w33C7vPrK+y+8z6KrvPrC+r+/u3+9uV+8z6KrvPrK+w+5lu2+H+x+4z66vsPrO+yu4z68vq/nr/nd51u/qd3kw3MXH/Y/eZ9VV2n1lfZfeZ9VV2n1lfZfeZ9dV1f810Zxn3P3afWV9l95n1VXafWV9l9xvuF3afWV9l95n1VXafWV9l95n1VXafWV9h9ydmfZXdZ9ZX2X1mfZXdZ9ZX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"}],"outputs":{"globals":{},"structs":{"functions":[{"fields":[{"name":"parameters","type":{"fields":[{"name":"app_payload","type":{"fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"fields":[{"name":"args_hash","type":{"kind":"field"}},{"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":"target_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"is_public","type":{"kind":"boolean"}},{"name":"is_static","type":{"kind":"boolean"}}],"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall"}}},{"name":"nonce","type":{"kind":"field"}}],"kind":"struct","path":"authwit::entrypoint::app::AppPayload"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters"}}],"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi"}]}},"file_map":{"120":{"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, MAX_ARGS_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, compute_siloed_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_unencrypted_log_hash<T, N, M>(\n contract_address: AztecAddress,\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 len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[36 + 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\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() <= MAX_ARGS_LENGTH, \"Args length exceeds maximum\");\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..MAX_ARGS_LENGTH {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x11e40f2a780822f7971803048c9a2100579de352e7dadd99981760964da65b57);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"},"134":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr","source":"use dep::protocol_types::{\n abis::{function_selector::FunctionSelector, private_call_stack_item::PrivateCallStackItem},\n address::AztecAddress, constants::PRIVATE_CALL_STACK_ITEM_LENGTH\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n _is_delegate_call: bool\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n is_delegate_call: bool\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n"},"139":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr","source":"use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, public_call_stack_item::PublicCallStackItem,\n function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_context::CallContext, read_request::ReadRequest, note_hash::NoteHash, nullifier::Nullifier,\n log_hash::LogHash, global_variables::GlobalVariables, gas::Gas\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n messaging::l2_to_l1_message::L2ToL1Message, header::Header, address::AztecAddress,\n utils::reader::Reader,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_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_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n}\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n enqueue_public_function_call_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\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {}\n\nunconstrained pub fn set_public_teardown_function_call_internal(\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; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH] {\n set_public_teardown_function_call_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\npub fn parse_public_call_stack_item_from_oracle(fields: [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH]) -> PublicCallStackItem {\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n // WARNING: if updating, see comment in public_call_stack_item.ts's PublicCallStackItem.hash()\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData { selector: FunctionSelector::from_field(reader.read()), is_private: false },\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0\n },\n is_execution_request: true\n };\n reader.finish();\n\n item\n}\n"},"166":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{GAS_LENGTH, FIXED_DA_GAS, FIXED_L2_GAS}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered, utils::reader::Reader,\n abis::gas_fees::GasFees\n};\nuse std::ops::{Add, Sub};\n\nstruct Gas {\n da_gas: u32,\n l2_gas: u32,\n}\n\nimpl Gas {\n pub fn new(da_gas: u32, l2_gas: u32) -> Self {\n Self { da_gas, l2_gas }\n }\n\n pub fn tx_overhead() -> Self {\n Self { da_gas: FIXED_DA_GAS, l2_gas: FIXED_L2_GAS }\n }\n\n pub fn compute_fee(self, fees: GasFees) -> Field {\n (self.da_gas as Field) * fees.fee_per_da_gas + (self.l2_gas as Field) * fees.fee_per_l2_gas\n }\n\n pub fn is_empty(self) -> bool {\n (self.da_gas == 0) & (self.l2_gas == 0)\n }\n\n pub fn within(self, limits: Gas) -> bool {\n (self.da_gas <= limits.da_gas) & (self.l2_gas <= limits.l2_gas)\n }\n}\n\nimpl Add for Gas {\n fn add(self, other: Gas) -> Self {\n Gas::new(self.da_gas + other.da_gas, self.l2_gas + other.l2_gas)\n }\n}\n\nimpl Sub for Gas {\n fn sub(self, other: Gas) -> Self {\n Gas::new(self.da_gas - other.da_gas, self.l2_gas - other.l2_gas)\n }\n}\n\nimpl Serialize<GAS_LENGTH> for Gas {\n fn serialize(self) -> [Field; GAS_LENGTH] {\n [self.da_gas as Field, self.l2_gas as Field]\n }\n}\n\nimpl Deserialize<GAS_LENGTH> for Gas {\n fn deserialize(serialized: [Field; GAS_LENGTH]) -> Gas {\n Gas::new(serialized[0] as u32, serialized[1] as u32)\n }\n}\n\nimpl Eq for Gas {\n fn eq(self, other : Gas) -> bool {\n (self.da_gas == other.da_gas) & (self.l2_gas == other.l2_gas)\n }\n}\n\nimpl Empty for Gas {\n fn empty() -> Self {\n Gas::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Gas::empty();\n let serialized = item.serialize();\n let deserialized = Gas::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"168":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n abis::side_effect::{Ordered, OrderedValue, Readable, Scoped},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct NoteHash {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for NoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHash {\n fn eq(self, other: NoteHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n }\n}\n\nimpl Empty for NoteHash {\n fn empty() -> Self {\n NoteHash {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_LENGTH> for NoteHash {\n fn serialize(self) -> [Field; NOTE_HASH_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_LENGTH> for NoteHash {\n fn deserialize(values: [Field; NOTE_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl NoteHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNoteHash {\n ScopedNoteHash { note_hash: self, contract_address }\n }\n}\n\nstruct ScopedNoteHash {\n note_hash: NoteHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<NoteHash> for ScopedNoteHash {\n fn inner(self) -> NoteHash {\n self.note_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNoteHash {\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNoteHash {\n fn value(self) -> Field {\n self.note_hash.value\n }\n fn counter(self) -> u32 {\n self.note_hash.counter\n }\n}\n\nimpl Eq for ScopedNoteHash {\n fn eq(self, other: ScopedNoteHash) -> bool {\n (self.note_hash == other.note_hash)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedNoteHash {\n fn empty() -> Self {\n ScopedNoteHash {\n note_hash: NoteHash::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn serialize(self) -> [Field; SCOPED_NOTE_HASH_LENGTH] {\n array_concat(self.note_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NOTE_HASH_LENGTH> for ScopedNoteHash {\n fn deserialize(values: [Field; SCOPED_NOTE_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n note_hash: reader.read_struct(NoteHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNoteHash {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.note_hash.value, read_request.value(), \"Value of the note hash does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the note hash does not match read request\");\n assert(\n read_request.counter() > self.note_hash.counter, \"Read request counter must be greater than the counter of the note hash\"\n );\n }\n}\n\nimpl ScopedNoteHash {\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.note_hash.value, counter: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = NoteHash::empty();\n let serialized = item.serialize();\n let deserialized = NoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNoteHash::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNoteHash::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"169":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::GAS_FEES_LENGTH, hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty},\n abis::side_effect::Ordered, utils::reader::Reader\n};\n\nstruct GasFees {\n fee_per_da_gas: Field,\n fee_per_l2_gas: Field,\n}\n\nimpl GasFees {\n pub fn new(fee_per_da_gas: Field, fee_per_l2_gas: Field) -> Self {\n Self { fee_per_da_gas, fee_per_l2_gas }\n }\n\n pub fn default() -> Self {\n GasFees::new(1, 1)\n }\n\n pub fn is_empty(self) -> bool {\n (self.fee_per_da_gas == 0) & (self.fee_per_l2_gas == 0)\n }\n}\n\nimpl Serialize<GAS_FEES_LENGTH> for GasFees {\n fn serialize(self) -> [Field; GAS_FEES_LENGTH] {\n [self.fee_per_da_gas, self.fee_per_l2_gas]\n }\n}\n\nimpl Deserialize<GAS_FEES_LENGTH> for GasFees {\n fn deserialize(serialized: [Field; GAS_FEES_LENGTH]) -> GasFees {\n GasFees::new(serialized[0], serialized[1])\n }\n}\n\nimpl Eq for GasFees {\n fn eq(self, other : GasFees) -> bool {\n (self.fee_per_da_gas == other.fee_per_da_gas) & (self.fee_per_l2_gas == other.fee_per_l2_gas)\n }\n}\n\nimpl Empty for GasFees {\n fn empty() -> Self {\n GasFees::new(0, 0)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasFees::empty();\n let serialized = item.serialize();\n let deserialized = GasFees::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"170":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr","source":"use crate::abis::{function_data::FunctionData, public_circuit_public_inputs::PublicCircuitPublicInputs};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n // WARNING: if updating, see comment in public_call_stack_item.ts's `PublicCallStackItem.hash()`\n let public_inputs = self.public_inputs;\n let mut request_public_inputs = PublicCircuitPublicInputs::empty();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs\n };\n call_stack_item\n }\n}\n\nmod tests {\n use crate::{\n abis::{\n function_data::FunctionData, function_selector::FunctionSelector, note_hash::NoteHash,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem\n },\n address::AztecAddress, constants::GENERATOR_INDEX__CALL_STACK_ITEM, traits::Hash\n };\n\n #[test]\n fn compute_call_stack_item_request_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: true, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item request hash\" test\n let test_data_call_stack_item_request_hash = 0x022a2b82af83606ae5a8d4955ef6215e54025193356318aefbde3b5026952953;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_request_hash);\n }\n\n #[test]\n fn compute_call_stack_item_hash() {\n let contract_address = AztecAddress::from_field(1);\n let function_data = FunctionData { selector: FunctionSelector::from_u32(2), is_private: false };\n\n let mut public_inputs = PublicCircuitPublicInputs::empty();\n public_inputs.note_hashes[0] = NoteHash {\n value: 1,\n counter: 0,\n };\n\n let call_stack_item = PublicCallStackItem { contract_address, public_inputs, is_execution_request: false, function_data };\n\n // Value from public_call_stack_item.test.ts \"Computes a callstack item hash\" test\n let test_data_call_stack_item_hash = 0x23a1d22e7bf37df7d68e8fcbfb7e016c060194b7915e3771e2dcd72cea26e427;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"171":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n validation_requests::KeyValidationRequestAndGenerator, note_hash::NoteHash, nullifier::Nullifier,\n private_call_request::PrivateCallRequest, read_request::ReadRequest,\n log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_L2_TO_L1_MSGS_PER_CALL, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, hash::pedersen_hash, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n transaction::tx_context::TxContext, utils::arrays::validate_array\n};\n\nstruct PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: u32,\n nullifier_read_requests: u32,\n key_validation_requests_and_generators: u32,\n note_hashes: u32,\n nullifiers: u32,\n l2_to_l1_msgs: u32,\n private_call_requests: u32,\n public_call_stack_hashes: u32,\n note_encrypted_logs_hashes: u32,\n encrypted_logs_hashes: u32,\n unencrypted_logs_hashes: u32,\n}\n\nimpl PrivateCircuitPublicInputsArrayLengths {\n pub fn new(public_inputs: PrivateCircuitPublicInputs) -> Self {\n PrivateCircuitPublicInputsArrayLengths {\n note_hash_read_requests: validate_array(public_inputs.note_hash_read_requests),\n nullifier_read_requests: validate_array(public_inputs.nullifier_read_requests),\n key_validation_requests_and_generators: validate_array(public_inputs.key_validation_requests_and_generators),\n note_hashes: validate_array(public_inputs.note_hashes),\n nullifiers: validate_array(public_inputs.nullifiers),\n l2_to_l1_msgs: validate_array(public_inputs.l2_to_l1_msgs),\n private_call_requests: validate_array(public_inputs.private_call_requests),\n public_call_stack_hashes: validate_array(public_inputs.public_call_stack_hashes),\n note_encrypted_logs_hashes: validate_array(public_inputs.note_encrypted_logs_hashes),\n encrypted_logs_hashes: validate_array(public_inputs.encrypted_logs_hashes),\n unencrypted_logs_hashes: validate_array(public_inputs.unencrypted_logs_hashes)\n }\n }\n}\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator; MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n note_hashes: [NoteHash; MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier; MAX_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: Field,\n l2_to_l1_msgs: [L2ToL1Message; MAX_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter : u32,\n end_side_effect_counter : u32,\n note_encrypted_logs_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // Note: The chain_id and version here are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n tx_context: TxContext,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.returns_hash == other.returns_hash) &\n (self.min_revertible_side_effect_counter == other.min_revertible_side_effect_counter) &\n (self.is_fee_payer == other.is_fee_payer) &\n (self.max_block_number == other.max_block_number) &\n (self.note_hash_read_requests == other.note_hash_read_requests) &\n (self.nullifier_read_requests == other.nullifier_read_requests) &\n (self.key_validation_requests_and_generators == other.key_validation_requests_and_generators) &\n (self.note_hashes == other.note_hashes) &\n (self.nullifiers == other.nullifiers) &\n (self.private_call_requests == other.private_call_requests) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.l2_to_l1_msgs == other.l2_to_l1_msgs) &\n (self.start_side_effect_counter == other.start_side_effect_counter) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.note_encrypted_logs_hashes == other.note_encrypted_logs_hashes) &\n (self.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n self.historical_header.eq(other.historical_header) &\n self.tx_context.eq(other.tx_context)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n\n fields.push(self.min_revertible_side_effect_counter as Field);\n fields.push(if self.is_fee_payer { 1 } else { 0 } as Field);\n\n fields.extend_from_array(self.max_block_number.serialize());\n\n for i in 0..self.note_hash_read_requests.len() {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..self.nullifier_read_requests.len() {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..self.key_validation_requests_and_generators.len() {\n fields.extend_from_array(self.key_validation_requests_and_generators[i].serialize());\n }\n for i in 0..self.note_hashes.len() {\n fields.extend_from_array(self.note_hashes[i].serialize());\n }\n for i in 0..self.nullifiers.len() {\n fields.extend_from_array(self.nullifiers[i].serialize());\n }\n for i in 0..self.private_call_requests.len() {\n fields.extend_from_array(self.private_call_requests[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.push(self.public_teardown_function_hash);\n for i in 0..self.l2_to_l1_msgs.len() {\n fields.extend_from_array(self.l2_to_l1_msgs[i].serialize());\n }\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n for i in 0..self.note_encrypted_logs_hashes.len() {\n fields.extend_from_array(self.note_encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.encrypted_logs_hashes.len() {\n fields.extend_from_array(self.encrypted_logs_hashes[i].serialize());\n }\n for i in 0..self.unencrypted_logs_hashes.len() {\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.tx_context.serialize());\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n min_revertible_side_effect_counter: reader.read() as u32,\n is_fee_payer: reader.read() == 1,\n max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n key_validation_requests_and_generators: reader.read_struct_array(KeyValidationRequestAndGenerator::deserialize, [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL]),\n note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL]),\n nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL]),\n private_call_requests: reader.read_struct_array(PrivateCallRequest::deserialize, [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n public_teardown_function_hash: reader.read(),\n l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n note_encrypted_logs_hashes: reader.read_struct_array(NoteLogHash::deserialize, [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL]),\n encrypted_logs_hashes: reader.read_struct_array(EncryptedLogHash::deserialize, [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n tx_context: reader.read_struct(TxContext::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PrivateCircuitPublicInputs {\n fn empty() -> Self {\n PrivateCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n key_validation_requests_and_generators: [KeyValidationRequestAndGenerator::empty(); MAX_KEY_VALIDATION_REQUESTS_PER_CALL],\n note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL],\n private_call_requests: [PrivateCallRequest::empty(); MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n public_teardown_function_hash: 0,\n l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter : 0 as u32,\n end_side_effect_counter : 0 as u32,\n note_encrypted_logs_hashes: [NoteLogHash::empty(); MAX_NOTE_ENCRYPTED_LOGS_PER_CALL],\n encrypted_logs_hashes: [EncryptedLogHash::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n tx_context: TxContext::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PrivateCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PrivateCircuitPublicInputs::empty();\n let hash = inputs.hash();\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x1eb5048b5bdcea5ba66519ecd1cbdb9e18fd957d52830b2bcb309f4ce9bcfbd3;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"173":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use crate::{\n address::{AztecAddress, EthAddress}, abis::gas_fees::GasFees,\n constants::{GENERATOR_INDEX__GLOBAL_VARIABLES, GLOBAL_VARIABLES_LENGTH},\n traits::{Deserialize, Empty, Hash, Serialize}, utils::reader::Reader\n};\n\n// docs:start:global-variables\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : u64,\n coinbase : EthAddress,\n fee_recipient : AztecAddress,\n gas_fees : GasFees\n}\n// docs:end:global-variables\n\nimpl GlobalVariables {\n fn is_empty(self) -> bool {\n (self.chain_id == 0)\n & (self.version == 0)\n & (self.block_number == 0)\n & (self.timestamp == 0)\n & (self.coinbase.is_zero())\n & (self.fee_recipient.is_zero())\n & (self.gas_fees.is_empty())\n }\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n let mut serialized: BoundedVec<Field, GLOBAL_VARIABLES_LENGTH> = BoundedVec::new();\n\n serialized.push(self.chain_id);\n serialized.push(self.version);\n serialized.push(self.block_number);\n serialized.push(self.timestamp as Field);\n serialized.push(self.coinbase.to_field());\n serialized.push(self.fee_recipient.to_field());\n serialized.extend_from_array(self.gas_fees.serialize());\n\n serialized.storage\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n let mut reader = Reader::new(serialized);\n GlobalVariables {\n chain_id: reader.read(),\n version: reader.read(),\n block_number: reader.read(),\n timestamp: reader.read() as u64,\n coinbase: EthAddress::from_field(reader.read()),\n fee_recipient: AztecAddress::from_field(reader.read()),\n gas_fees: reader.read_struct(GasFees::deserialize)\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp) &\n (self.coinbase == other.coinbase) &\n (self.fee_recipient == other.fee_recipient) &\n (self.gas_fees == other.gas_fees) \n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n coinbase: EthAddress::empty(),\n fee_recipient: AztecAddress::empty(),\n gas_fees: GasFees::empty()\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars = GlobalVariables::empty();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n"},"174":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n abis::side_effect::{Ordered, Scoped}, traits::{Empty, Serialize, Deserialize},\n address::AztecAddress, constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for ReadRequest {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for ReadRequest {\n fn eq(self, read_request: ReadRequest) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n }\n}\n\nimpl Empty for ReadRequest {\n fn empty() -> Self {\n ReadRequest {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn serialize(self) -> [Field; READ_REQUEST_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<READ_REQUEST_LENGTH> for ReadRequest {\n fn deserialize(values: [Field; READ_REQUEST_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nimpl ReadRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedReadRequest {\n ScopedReadRequest { read_request: self, contract_address }\n }\n}\n\nstruct ScopedReadRequest {\n read_request: ReadRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<ReadRequest> for ScopedReadRequest {\n fn inner(self) -> ReadRequest {\n self.read_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ScopedReadRequest {\n fn eq(self, other: ScopedReadRequest) -> bool {\n (self.read_request == other.read_request)\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedReadRequest {\n fn empty() -> Self {\n ScopedReadRequest {\n read_request: ReadRequest::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn serialize(self) -> [Field; SCOPED_READ_REQUEST_LEN] {\n array_concat(self.read_request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_READ_REQUEST_LEN> for ScopedReadRequest {\n fn deserialize(values: [Field; SCOPED_READ_REQUEST_LEN]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n read_request: reader.read_struct(ReadRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedReadRequest {\n pub fn value(self) -> Field {\n self.read_request.value\n }\n pub fn counter(self) -> u32 {\n self.read_request.counter\n }\n}\n\n#[test]\nfn serialization_of_empty_read() {\n let item = ReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedReadRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedReadRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"177":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request_and_generator.nr","source":"use crate::{\n address::AztecAddress,\n abis::validation_requests::{\n key_validation_request::KeyValidationRequest,\n scoped_key_validation_request_and_generator::ScopedKeyValidationRequestAndGenerator\n},\n constants::KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct KeyValidationRequestAndGenerator {\n request: KeyValidationRequest,\n sk_app_generator: Field,\n}\n\nimpl Eq for KeyValidationRequestAndGenerator {\n fn eq(self, other: KeyValidationRequestAndGenerator) -> bool {\n (self.request == other.request) & (self.sk_app_generator == other.sk_app_generator)\n }\n}\n\nimpl Empty for KeyValidationRequestAndGenerator {\n fn empty() -> Self {\n KeyValidationRequestAndGenerator {\n request: KeyValidationRequest::empty(),\n sk_app_generator: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH] {\n array_concat(self.request.serialize(), [self.sk_app_generator])\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH> for KeyValidationRequestAndGenerator {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_AND_GENERATOR_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(KeyValidationRequest::deserialize),\n sk_app_generator: reader.read(),\n };\n reader.finish();\n res\n }\n}\n\nimpl KeyValidationRequestAndGenerator {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedKeyValidationRequestAndGenerator {\n ScopedKeyValidationRequestAndGenerator { request: self, contract_address }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = KeyValidationRequestAndGenerator::empty();\n let serialized = item.serialize();\n let deserialized = KeyValidationRequestAndGenerator::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"178":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr","source":"use crate::{\n constants::KEY_VALIDATION_REQUEST_LENGTH, traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint\n};\n\nstruct KeyValidationRequest {\n pk_m: GrumpkinPoint,\n sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m))\n & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest {\n pk_m: GrumpkinPoint::zero(),\n sk_app: 0,\n }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.pk_m.x,\n self.pk_m.y,\n self.sk_app,\n ]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: GrumpkinPoint::new(fields[0], fields[1]),\n sk_app: fields[2],\n }\n }\n}\n\n"},"182":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable, Scoped}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH},\n hash::compute_siloed_nullifier, traits::{Empty, Hash, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\n}\n\nimpl Ordered for Nullifier {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for Nullifier {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for Nullifier {\n fn eq(self, other: Nullifier) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.note_hash == other.note_hash) \n }\n}\n\nimpl Empty for Nullifier {\n fn empty() -> Self {\n Nullifier {\n value: 0,\n counter: 0,\n note_hash: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_LENGTH> for Nullifier {\n fn serialize(self) -> [Field; NULLIFIER_LENGTH] {\n [self.value, self.counter as Field, self.note_hash]\n }\n}\n\nimpl Deserialize<NULLIFIER_LENGTH> for Nullifier {\n fn deserialize(values: [Field; NULLIFIER_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n note_hash: values[2],\n }\n }\n}\n\nimpl Readable for Nullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n // Public kernels output Nullifier instead of ScopedNullifier.\n // The nullifier value has been siloed.\n let siloed_request_value = compute_siloed_nullifier(read_request.contract_address, read_request.value());\n assert_eq(self.value, siloed_request_value, \"Value of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl Nullifier {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifier {\n ScopedNullifier { nullifier: self, contract_address }\n }\n}\n\nstruct ScopedNullifier {\n nullifier: Nullifier,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<Nullifier> for ScopedNullifier {\n fn inner(self) -> Nullifier {\n self.nullifier\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedNullifier {\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedNullifier {\n fn value(self) -> Field {\n self.nullifier.value\n }\n fn counter(self) -> u32 {\n self.nullifier.counter\n }\n}\n\nimpl Eq for ScopedNullifier {\n fn eq(self, other: ScopedNullifier) -> bool {\n (self.nullifier == other.nullifier)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedNullifier {\n fn empty() -> Self {\n ScopedNullifier {\n nullifier: Nullifier::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_LENGTH] {\n array_concat(self.nullifier.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NULLIFIER_LENGTH> for ScopedNullifier {\n fn deserialize(values: [Field; SCOPED_NULLIFIER_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n nullifier: reader.read_struct(Nullifier::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl Readable for ScopedNullifier {\n fn assert_match_read_request(self, read_request: ScopedReadRequest) {\n assert_eq(self.nullifier.value, read_request.value(), \"Value of the nullifier does not match read request\");\n assert_eq(self.contract_address, read_request.contract_address, \"Contract address of the nullifier does not match read request\");\n assert(\n read_request.counter() > self.nullifier.counter, \"Read request counter must be greater than the counter of the nullifier\"\n );\n }\n}\n\nimpl ScopedNullifier {\n pub fn nullified_note_hash(self) -> Field {\n self.nullifier.note_hash\n }\n\n pub fn expose_to_public(self) -> Nullifier {\n // Hide the actual counter and note hash when exposing it to the public kernel.\n Nullifier { value: self.nullifier.value, counter: 0, note_hash: 0 }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = Nullifier::empty();\n let serialized = item.serialize();\n let deserialized = Nullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped() {\n let item = ScopedNullifier::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifier::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"191":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\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 = 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"},"192":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_request.nr","source":"use crate::{\n abis::{caller_context::CallerContext, side_effect::{Ordered, RangeOrdered, Scoped}},\n address::AztecAddress, constants::{PRIVATE_CALL_REQUEST_LENGTH, SCOPED_PRIVATE_CALL_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, utils::reader::Reader\n};\n\nstruct PrivateCallRequest {\n hash: Field,\n caller_context: CallerContext,\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n}\n\nimpl Ordered for PrivateCallRequest {\n fn counter(self) -> u32 {\n self.start_side_effect_counter\n }\n}\n\nimpl RangeOrdered for PrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.start_side_effect_counter\n }\n fn counter_end(self) -> u32 {\n self.end_side_effect_counter\n }\n}\n\nimpl Eq for PrivateCallRequest {\n fn eq(self, other: PrivateCallRequest) -> bool {\n (self.hash == other.hash)\n & (self.caller_context == other.caller_context)\n & (self.start_side_effect_counter == other.start_side_effect_counter)\n & (self.end_side_effect_counter == other.end_side_effect_counter)\n }\n}\n\nimpl Empty for PrivateCallRequest {\n fn empty() -> Self {\n PrivateCallRequest {\n hash: 0,\n caller_context: CallerContext::empty(),\n start_side_effect_counter: 0,\n end_side_effect_counter: 0,\n }\n }\n}\n\nimpl Serialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn serialize(self) -> [Field; PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.push(self.hash);\n fields.extend_from_array(self.caller_context.serialize());\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n assert_eq(fields.len(), PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_REQUEST_LENGTH> for PrivateCallRequest {\n fn deserialize(fields: [Field; PRIVATE_CALL_REQUEST_LENGTH]) -> PrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = PrivateCallRequest {\n hash: reader.read(),\n caller_context: reader.read_struct(CallerContext::deserialize),\n start_side_effect_counter: reader.read_u32(),\n end_side_effect_counter: reader.read_u32(),\n };\n reader.finish();\n item\n }\n}\n\nimpl PrivateCallRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedPrivateCallRequest {\n ScopedPrivateCallRequest { call_request: self, contract_address }\n }\n}\n\nstruct ScopedPrivateCallRequest {\n call_request: PrivateCallRequest,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<PrivateCallRequest> for ScopedPrivateCallRequest {\n fn inner(self) -> PrivateCallRequest {\n self.call_request\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedPrivateCallRequest {\n fn counter(self) -> u32 {\n self.call_request.counter_start()\n }\n}\n\nimpl RangeOrdered for ScopedPrivateCallRequest {\n fn counter_start(self) -> u32 {\n self.call_request.counter_start()\n }\n fn counter_end(self) -> u32 {\n self.call_request.counter_end()\n }\n}\n\nimpl Eq for ScopedPrivateCallRequest {\n fn eq(self, other: ScopedPrivateCallRequest) -> bool {\n (self.call_request == other.call_request)\n & (self.contract_address == other.contract_address)\n }\n}\n\nimpl Empty for ScopedPrivateCallRequest {\n fn empty() -> Self {\n ScopedPrivateCallRequest {\n call_request: PrivateCallRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn serialize(self) -> [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH] {\n let mut fields: BoundedVec<Field, SCOPED_PRIVATE_CALL_REQUEST_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.call_request.serialize());\n fields.extend_from_array(self.contract_address.serialize());\n\n assert_eq(fields.len(), SCOPED_PRIVATE_CALL_REQUEST_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<SCOPED_PRIVATE_CALL_REQUEST_LENGTH> for ScopedPrivateCallRequest {\n fn deserialize(fields: [Field; SCOPED_PRIVATE_CALL_REQUEST_LENGTH]) -> ScopedPrivateCallRequest {\n let mut reader = Reader::new(fields);\n let item = ScopedPrivateCallRequest {\n call_request: reader.read_struct(PrivateCallRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedPrivateCallRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedPrivateCallRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"197":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress}, abis::gas::Gas,\n abis::gas_fees::GasFees,\n constants::{\n GAS_SETTINGS_LENGTH, DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_MAX_FEE_PER_GAS,\n DEFAULT_INCLUSION_FEE\n},\n hash::pedersen_hash, traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n utils::reader::Reader\n};\n\nstruct GasSettings {\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field,\n}\n\nimpl GasSettings {\n pub fn new(\n gas_limits: Gas,\n teardown_gas_limits: Gas,\n max_fees_per_gas: GasFees,\n inclusion_fee: Field\n ) -> Self {\n Self { gas_limits, teardown_gas_limits, max_fees_per_gas, inclusion_fee }\n }\n\n pub fn default() -> Self {\n GasSettings::new(\n Gas::new(DEFAULT_GAS_LIMIT, DEFAULT_GAS_LIMIT),\n Gas::new(DEFAULT_TEARDOWN_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT),\n GasFees::new(DEFAULT_MAX_FEE_PER_GAS, DEFAULT_MAX_FEE_PER_GAS),\n DEFAULT_INCLUSION_FEE\n )\n }\n}\n\nimpl Eq for GasSettings {\n fn eq(self, other: Self) -> bool {\n (self.gas_limits == other.gas_limits) & (self.teardown_gas_limits == other.teardown_gas_limits) & (self.max_fees_per_gas == other.max_fees_per_gas) & (self.inclusion_fee == other.inclusion_fee)\n }\n}\n\nimpl Empty for GasSettings {\n fn empty() -> Self {\n GasSettings::new(\n Gas::empty(), Gas::empty(), GasFees::empty(), 0\n )\n }\n}\n\nimpl Serialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn serialize(self) -> [Field; GAS_SETTINGS_LENGTH] {\n let mut serialized: BoundedVec<Field, GAS_SETTINGS_LENGTH> = BoundedVec::new();\n\n serialized.extend_from_array(self.gas_limits.serialize());\n serialized.extend_from_array(self.teardown_gas_limits.serialize());\n serialized.extend_from_array(self.max_fees_per_gas.serialize());\n serialized.push(self.inclusion_fee);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<GAS_SETTINGS_LENGTH> for GasSettings {\n fn deserialize(serialized: [Field; GAS_SETTINGS_LENGTH]) -> GasSettings {\n let mut reader = Reader::new(serialized);\n GasSettings::new(reader.read_struct(Gas::deserialize), reader.read_struct(Gas::deserialize), reader.read_struct(GasFees::deserialize), reader.read())\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = GasSettings::empty();\n let serialized = item.serialize();\n let deserialized = GasSettings::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"206":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr","source":"use crate::{\n abis::{function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs},\n address::AztecAddress,\n constants::{GENERATOR_INDEX__CALL_STACK_ITEM, PRIVATE_CALL_STACK_ITEM_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new();\n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl Empty for PrivateCallStackItem {\n fn empty() -> Self {\n PrivateCallStackItem {\n contract_address: AztecAddress::empty(),\n function_data: FunctionData::empty(),\n public_inputs: PrivateCircuitPublicInputs::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = PrivateCallStackItem::empty();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item = PrivateCallStackItem::empty();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x157022d579f892f06461fb895cdf5550b24329e15e7a41df14f9dad582fa1bc5;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"207":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/caller_context.nr","source":"use crate::address::AztecAddress;\nuse crate::traits::{Empty, Serialize, Deserialize};\nuse crate::constants::CALLER_CONTEXT_LENGTH;\nuse crate::utils::reader::Reader;\n\nstruct CallerContext {\n msg_sender: AztecAddress,\n storage_contract_address: AztecAddress,\n is_static_call: bool,\n}\n\nimpl Eq for CallerContext {\n fn eq(self, other: CallerContext) -> bool {\n other.msg_sender.eq(self.msg_sender)\n & other.storage_contract_address.eq(self.storage_contract_address)\n & other.is_static_call == self.is_static_call\n }\n}\n\nimpl Empty for CallerContext {\n fn empty() -> Self {\n CallerContext {\n msg_sender: AztecAddress::zero(),\n storage_contract_address: AztecAddress::zero(),\n is_static_call: false,\n }\n }\n}\n\nimpl CallerContext {\n pub fn is_empty(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero() & !self.is_static_call\n }\n\n // Different to an empty context, a hidden context won't reveal the caller's msg_sender and storage_contract_address,\n // but will still propagate the is_static_call flag.\n pub fn is_hidden(self) -> bool {\n self.msg_sender.is_zero() & self.storage_contract_address.is_zero()\n }\n}\n\nimpl Serialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn serialize(self) -> [Field; CALLER_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, CALLER_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.msg_sender.serialize());\n fields.extend_from_array(self.storage_contract_address.serialize());\n fields.push(self.is_static_call as Field);\n\n assert_eq(fields.len(), CALLER_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CALLER_CONTEXT_LENGTH> for CallerContext {\n fn deserialize(fields: [Field; CALLER_CONTEXT_LENGTH]) -> CallerContext {\n let mut reader = Reader::new(fields);\n\n let item = CallerContext {\n msg_sender: reader.read_struct(AztecAddress::deserialize),\n storage_contract_address: reader.read_struct(AztecAddress::deserialize),\n is_static_call: reader.read_bool(),\n };\n reader.finish();\n item\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = CallerContext::empty();\n let serialized = item.serialize();\n let deserialized = CallerContext::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"209":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/log_hash.nr","source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue, Scoped}, address::AztecAddress,\n constants::{\n LOG_HASH_LENGTH, NOTE_LOG_HASH_LENGTH, ENCRYPTED_LOG_HASH_LENGTH, SCOPED_LOG_HASH_LENGTH,\n SCOPED_ENCRYPTED_LOG_HASH_LENGTH\n},\n traits::{Empty, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct LogHash {\n value: Field,\n counter: u32,\n length: Field,\n}\n\nimpl Ordered for LogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for LogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for LogHash {\n fn eq(self, other: LogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n }\n}\n\nimpl Empty for LogHash {\n fn empty() -> Self {\n LogHash {\n value: 0,\n counter: 0,\n length: 0,\n }\n }\n}\n\nimpl Serialize<LOG_HASH_LENGTH> for LogHash {\n fn serialize(self) -> [Field; LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length]\n }\n}\n\nimpl Deserialize<LOG_HASH_LENGTH> for LogHash {\n fn deserialize(values: [Field; LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n }\n }\n}\n\nimpl LogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedLogHash {\n ScopedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedLogHash {\n log_hash: LogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<LogHash> for ScopedLogHash {\n fn inner(self) -> LogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedLogHash {\n fn eq(self, other: ScopedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedLogHash {\n fn empty() -> Self {\n ScopedLogHash {\n log_hash: LogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn serialize(self) -> [Field; SCOPED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_LOG_HASH_LENGTH> for ScopedLogHash {\n fn deserialize(values: [Field; SCOPED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(LogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nimpl ScopedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the counter when exposing to public.\n // The log hash must already be siloed when we call this.\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nstruct EncryptedLogHash {\n value: Field,\n counter: u32,\n length: Field,\n randomness: Field,\n}\n\nimpl Ordered for EncryptedLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for EncryptedLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for EncryptedLogHash {\n fn eq(self, other: EncryptedLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.randomness == other.randomness) \n }\n}\n\nimpl Empty for EncryptedLogHash {\n fn empty() -> Self {\n EncryptedLogHash {\n value: 0,\n counter: 0,\n length: 0,\n randomness: 0,\n }\n }\n}\n\nimpl Serialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn serialize(self) -> [Field; ENCRYPTED_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.randomness]\n }\n}\n\nimpl Deserialize<ENCRYPTED_LOG_HASH_LENGTH> for EncryptedLogHash {\n fn deserialize(values: [Field; ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n randomness: values[3],\n }\n }\n}\n\nimpl EncryptedLogHash {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedEncryptedLogHash {\n ScopedEncryptedLogHash { log_hash: self, contract_address }\n }\n}\n\nstruct ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<EncryptedLogHash> for ScopedEncryptedLogHash {\n fn inner(self) -> EncryptedLogHash {\n self.log_hash\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl ScopedEncryptedLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the secret randomness and counter when exposing to public\n // Expose as a LogHash rather than EncryptedLogHash to avoid bringing an unnec. 0 value around\n // The log hash will already be silo'd when we call this\n LogHash { value: self.log_hash.value, counter: 0, length: self.log_hash.length }\n }\n}\n\nimpl Ordered for ScopedEncryptedLogHash {\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl OrderedValue<Field> for ScopedEncryptedLogHash {\n fn value(self) -> Field {\n self.log_hash.value\n }\n fn counter(self) -> u32 {\n self.log_hash.counter\n }\n}\n\nimpl Eq for ScopedEncryptedLogHash {\n fn eq(self, other: ScopedEncryptedLogHash) -> bool {\n (self.log_hash == other.log_hash)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedEncryptedLogHash {\n fn empty() -> Self {\n ScopedEncryptedLogHash {\n log_hash: EncryptedLogHash::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn serialize(self) -> [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH] {\n array_concat(self.log_hash.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_ENCRYPTED_LOG_HASH_LENGTH> for ScopedEncryptedLogHash {\n fn deserialize(values: [Field; SCOPED_ENCRYPTED_LOG_HASH_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n log_hash: reader.read_struct(EncryptedLogHash::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\nstruct NoteLogHash {\n value: Field,\n counter: u32,\n length: Field,\n note_hash_counter: u32,\n}\n\nimpl NoteLogHash {\n pub fn expose_to_public(self) -> LogHash {\n // Hide the actual counter and note hash counter when exposing it to the public kernel.\n // The counter is usually note_hash.counter + 1, so it can be revealing.\n // Expose as a LogHash rather than NoteLogHash to avoid bringing an unnec. 0 value around\n LogHash { value: self.value, counter: 0, length: self.length }\n }\n}\n\nimpl Ordered for NoteLogHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteLogHash {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteLogHash {\n fn eq(self, other: NoteLogHash) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter)\n & (self.length == other.length) \n & (self.note_hash_counter == other.note_hash_counter) \n }\n}\n\nimpl Empty for NoteLogHash {\n fn empty() -> Self {\n NoteLogHash {\n value: 0,\n counter: 0,\n length: 0,\n note_hash_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn serialize(self) -> [Field; NOTE_LOG_HASH_LENGTH] {\n [self.value, self.counter as Field, self.length, self.note_hash_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_LOG_HASH_LENGTH> for NoteLogHash {\n fn deserialize(values: [Field; NOTE_LOG_HASH_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n length: values[2],\n note_hash_counter: values[3] as u32,\n }\n }\n}\n"},"213":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"struct AppendOnlyTreeSnapshot {\n root : Field,\n // TODO(Alvaro) change this to a u64\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: u32 = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot { root: serialized[0], next_available_leaf_index: serialized[1] as u32 }\n }\n\n pub fn zero() -> Self {\n Self { root: 0, next_available_leaf_index: 0 }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n"},"214":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr","source":"use crate::{\n abis::function_selector::FunctionSelector, address::{EthAddress, AztecAddress},\n constants::{CALL_CONTEXT_LENGTH, GENERATOR_INDEX__CALL_CONTEXT}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, abis::side_effect::Ordered,\n abis::{gas_settings::GasSettings, gas::Gas}, utils::reader::Reader\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n\n side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n let serialized: [Field; CALL_CONTEXT_LENGTH] = self.serialize();\n\n for i in 0..CALL_CONTEXT_LENGTH {\n assert(serialized[i] == 0);\n }\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, other: CallContext) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n let mut serialized: BoundedVec<Field, CALL_CONTEXT_LENGTH> = BoundedVec::new();\n\n serialized.push(self.msg_sender.to_field());\n serialized.push(self.storage_contract_address.to_field());\n serialized.push(self.function_selector.to_field());\n serialized.push(self.is_delegate_call as Field);\n serialized.push(self.is_static_call as Field);\n serialized.push(self.side_effect_counter as Field);\n \n serialized.storage\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n let mut reader = Reader::new(serialized);\n CallContext {\n msg_sender: AztecAddress::from_field(reader.read()),\n storage_contract_address: AztecAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()),\n is_delegate_call: reader.read() as bool,\n is_static_call: reader.read() as bool,\n side_effect_counter: reader.read() as u32,\n }\n }\n}\n\nimpl Empty for CallContext {\n fn empty() -> Self {\n CallContext {\n msg_sender: AztecAddress::empty(),\n storage_contract_address: AztecAddress::empty(),\n function_selector: FunctionSelector::empty(),\n is_delegate_call: false,\n is_static_call: false,\n side_effect_counter: 0,\n }\n }\n}\n\n#[test]\nfn serialize_deserialize_of_empty() {\n let context = CallContext::empty();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn assert_is_zero() {\n let context = CallContext::empty();\n context.assert_is_zero();\n}\n\n#[test(should_fail)]\nfn not_zero_assert_is_zero() {\n let mut context = CallContext::empty();\n context.is_delegate_call = true;\n context.assert_is_zero();\n}\n\n#[test]\nfn test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = true;\n\n let address: AztecAddress = AztecAddress::from_field(69420);\n context1.msg_sender = address;\n context2.msg_sender = address;\n\n assert(context1.eq(context2));\n}\n\n#[test(should_fail)]\nfn not_eq_test_eq() {\n let mut context1 = CallContext::empty();\n let mut context2 = CallContext::empty();\n\n context1.is_delegate_call = true;\n context2.is_delegate_call = false;\n\n let address1: AztecAddress = AztecAddress::from_field(69420);\n let address2: AztecAddress = AztecAddress::from_field(42069);\n\n context1.msg_sender = address1;\n context2.msg_sender = address2;\n\n assert(context1.eq(context2));\n}\n\n#[test]\nfn hash_smoke() {\n let context = CallContext::empty();\n let _hashed = context.hash();\n}\n"},"215":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr","source":"use crate::{constants::MAX_BLOCK_NUMBER_LENGTH, traits::{Deserialize, Serialize, Empty}};\n\nstruct MaxBlockNumber {\n _opt: Option<u32>\n}\n\nimpl Empty for MaxBlockNumber {\n fn empty() -> Self {\n Self { _opt: Option::none() }\n }\n}\n\nimpl Eq for MaxBlockNumber {\n fn eq(self, other: Self) -> bool {\n self._opt == other._opt\n }\n}\n\nimpl Serialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn serialize(self) -> [Field; MAX_BLOCK_NUMBER_LENGTH] {\n [self._opt._is_some as Field, self._opt._value as Field]\n }\n}\n\nimpl Deserialize<MAX_BLOCK_NUMBER_LENGTH> for MaxBlockNumber {\n fn deserialize(serialized: [Field; MAX_BLOCK_NUMBER_LENGTH]) -> MaxBlockNumber {\n MaxBlockNumber {\n _opt: Option {\n _is_some: serialized[0] as bool,\n _value: serialized[1] as u32,\n }\n }\n }\n}\n\nimpl MaxBlockNumber {\n pub fn new(max_block_number: u32) -> Self {\n Self { _opt: Option::some(max_block_number) }\n }\n\n pub fn is_none(self) -> bool {\n self._opt.is_none()\n }\n\n pub fn is_some(self) -> bool {\n self._opt.is_some()\n }\n\n pub fn unwrap(self) -> u32 {\n self._opt.unwrap()\n }\n\n pub fn unwrap_unchecked(self) -> u32 {\n self._opt.unwrap_unchecked()\n }\n\n pub fn min(lhs: MaxBlockNumber, rhs: MaxBlockNumber) -> MaxBlockNumber {\n if rhs.is_none() {\n lhs // lhs might also be none, but in that case both would be\n } else {\n MaxBlockNumber::min_with_u32(lhs, rhs.unwrap_unchecked())\n }\n }\n\n pub fn min_with_u32(lhs: MaxBlockNumber, rhs: u32) -> MaxBlockNumber {\n if lhs._opt.is_none() {\n MaxBlockNumber::new(rhs)\n } else {\n let lhs_value = lhs._opt.unwrap_unchecked();\n\n MaxBlockNumber::new(if lhs_value < rhs { lhs_value } else { rhs })\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = MaxBlockNumber::empty();\n let serialized = item.serialize();\n let deserialized = MaxBlockNumber::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn zeroed_is_none() {\n // Large parts of the kernel rely on zeroed to initialize structs. This conveniently matches what `default` does,\n // and though we should eventually move everything to use `default`, it's good to check for now that both are\n // equivalent.\n let a = MaxBlockNumber::empty();\n assert(a.is_none());\n}\n\n#[test]\nfn serde_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert(b.is_none());\n}\n\n#[test]\nfn serde_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::deserialize(a.serialize());\n assert_eq(b.unwrap(), 13);\n}\n\n#[test(should_fail)]\nfn default_unwrap_panics() {\n let a = MaxBlockNumber::empty();\n let _ = a.unwrap();\n}\n\n#[test]\nfn min_default_default() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::empty();\n\n assert(MaxBlockNumber::min(a, b).is_none());\n}\n\n#[test]\nfn min_default_some() {\n let a = MaxBlockNumber::empty();\n let b = MaxBlockNumber::new(13);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_some_some() {\n let a = MaxBlockNumber::new(13);\n let b = MaxBlockNumber::new(42);\n\n assert_eq(MaxBlockNumber::min(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min(b, a).unwrap(), 13);\n}\n\n#[test]\nfn min_with_u32_default() {\n let a = MaxBlockNumber::empty();\n let b = 42;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 42);\n}\n\n#[test]\nfn min_with_u32_some() {\n let a = MaxBlockNumber::new(13);\n let b = 42;\n let c = 8;\n\n assert_eq(MaxBlockNumber::min_with_u32(a, b).unwrap(), 13);\n assert_eq(MaxBlockNumber::min_with_u32(a, c).unwrap(), 8);\n}\n"},"216":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr","source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n gas::Gas, global_variables::GlobalVariables, log_hash::LogHash\n},\n address::AztecAddress,\n constants::{\n MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_NOTE_HASHES_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_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n hash::pedersen_hash, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{Hash, Serialize, Deserialize, Empty}, utils::reader::Reader\n};\n\nstruct PublicCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n returns_hash: Field,\n\n note_hash_read_requests: [ReadRequest; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest; MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest; MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n note_hashes: [NoteHash; MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier; MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message; MAX_L2_TO_L1_MSGS_PER_CALL],\n\n start_side_effect_counter: u32,\n end_side_effect_counter: u32,\n\n unencrypted_logs_hashes: [LogHash; MAX_UNENCRYPTED_LOGS_PER_CALL],\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\n // Global variables injected into this circuit\n global_variables: GlobalVariables,\n\n prover_address: AztecAddress,\n\n revert_code: u8,\n \n start_gas_left: Gas,\n end_gas_left: Gas,\n transaction_fee: Field,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new();\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push(self.returns_hash);\n for i in 0..MAX_NOTE_HASH_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.note_hash_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.nullifier_non_existent_read_requests[i].serialize());\n }\n for i in 0..MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL {\n fields.extend_from_array(self.l1_to_l2_msg_read_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NOTE_HASHES_PER_CALL {\n fields.extend_from_array(self.note_hashes[i].serialize());\n }\n for i in 0..MAX_NULLIFIERS_PER_CALL {\n fields.extend_from_array(self.nullifiers[i].serialize());\n }\n for i in 0..MAX_L2_TO_L1_MSGS_PER_CALL {\n fields.extend_from_array(self.l2_to_l1_msgs[i].serialize());\n }\n\n fields.push(self.start_side_effect_counter as Field);\n fields.push(self.end_side_effect_counter as Field);\n\n for i in 0..MAX_UNENCRYPTED_LOGS_PER_CALL{\n fields.extend_from_array(self.unencrypted_logs_hashes[i].serialize());\n }\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.prover_address.to_field());\n fields.push(self.revert_code as Field);\n fields.extend_from_array(self.start_gas_left.serialize());\n fields.extend_from_array(self.end_gas_left.serialize());\n fields.push(self.transaction_fee);\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: reader.read(),\n note_hash_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]),\n nullifier_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL]),\n nullifier_non_existent_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL]),\n l1_to_l2_msg_read_requests: reader.read_struct_array(ReadRequest::deserialize, [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n note_hashes: reader.read_struct_array(NoteHash::deserialize, [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL]),\n nullifiers: reader.read_struct_array(Nullifier::deserialize, [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL]),\n l2_to_l1_msgs: reader.read_struct_array(L2ToL1Message::deserialize, [L2ToL1Message::empty(); MAX_L2_TO_L1_MSGS_PER_CALL]),\n start_side_effect_counter: reader.read() as u32,\n end_side_effect_counter: reader.read() as u32,\n unencrypted_logs_hashes: reader.read_struct_array(LogHash::deserialize, [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n historical_header: reader.read_struct(Header::deserialize),\n global_variables: reader.read_struct(GlobalVariables::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n revert_code: reader.read() as u8,\n start_gas_left: reader.read_struct(Gas::deserialize),\n end_gas_left: reader.read_struct(Gas::deserialize),\n transaction_fee: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl Empty for PublicCircuitPublicInputs {\n fn empty() -> Self {\n PublicCircuitPublicInputs {\n call_context: CallContext::empty(),\n args_hash: 0,\n returns_hash: 0,\n note_hash_read_requests: [ReadRequest::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_non_existent_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL],\n l1_to_l2_msg_read_requests: [ReadRequest::empty(); MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n note_hashes: [NoteHash::empty(); MAX_NOTE_HASHES_PER_CALL],\n nullifiers: [Nullifier::empty(); MAX_NULLIFIERS_PER_CALL],\n l2_to_l1_msgs: [L2ToL1Message::empty(); MAX_L2_TO_L1_MSGS_PER_CALL],\n start_side_effect_counter: 0 as u32,\n end_side_effect_counter: 0 as u32,\n unencrypted_logs_hashes: [LogHash::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n historical_header: Header::empty(),\n global_variables: GlobalVariables::empty(),\n prover_address: AztecAddress::zero(),\n revert_code: 0 as u8,\n start_gas_left: Gas::empty(),\n end_gas_left: Gas::empty(),\n transaction_fee: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi = PublicCircuitPublicInputs::empty();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs = PublicCircuitPublicInputs::empty();\n let hash = inputs.hash();\n\n // Value from public_circuit_public_inputs.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x2e08158f3f0d9a94e3f17338aadc3733a15bf5d163f94cef1afd8a47b446d789;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"218":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr","source":"use crate::{\n abis::function_selector::FunctionSelector,\n constants::{GENERATOR_INDEX__FUNCTION_DATA, FUNCTION_DATA_LENGTH}, hash::pedersen_hash,\n traits::{Serialize, Hash, Deserialize, Empty}\n};\n\nstruct FunctionData {\n selector : FunctionSelector,\n is_private : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n (self.is_private == other.is_private)\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_private as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_private: serialized[1] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\nimpl Empty for FunctionData {\n fn empty() -> Self {\n FunctionData {\n selector: FunctionSelector::empty(),\n is_private: false\n }\n }\n\n}\n\n#[test]\nfn serialization_of_empty() {\n let data = FunctionData::empty();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data = FunctionData::empty();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty function data hash\" test\n let test_data_empty_hash = 0x27b1d0839a5b23baf12a8d195b18ac288fcf401afb2f70b8a4b529ede5fa9fed;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"22":{"path":"std/field/mod.nr","source":"mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n\n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n\n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(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..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n"},"226":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr","source":"use crate::{\n address::{AztecAddress, EthAddress},\n constants::{L2_TO_L1_MESSAGE_LENGTH, SCOPED_L2_TO_L1_MESSAGE_LENGTH},\n abis::side_effect::{Ordered, Scoped}, traits::{Deserialize, Empty, Serialize},\n utils::{arrays::array_concat, reader::Reader}\n};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n counter: u32,\n}\n\nimpl Ordered for L2ToL1Message {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 0,\n counter: 0,\n }\n }\n}\n\nimpl Eq for L2ToL1Message {\n fn eq(self, other: Self) -> bool {\n (self.recipient == other.recipient) & (self.content == other.content) & (self.counter == other.counter)\n }\n}\n\nimpl Serialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn serialize(self) -> [Field; L2_TO_L1_MESSAGE_LENGTH] {\n [self.recipient.to_field(), self.content, self.counter as Field]\n }\n}\n\nimpl Deserialize<L2_TO_L1_MESSAGE_LENGTH> for L2ToL1Message {\n fn deserialize(values: [Field; L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n Self {\n recipient: EthAddress::from_field(values[0]),\n content: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\nimpl L2ToL1Message {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedL2ToL1Message {\n ScopedL2ToL1Message { message: self, contract_address }\n }\n}\n\nstruct ScopedL2ToL1Message {\n message: L2ToL1Message,\n contract_address: AztecAddress,\n}\n\nimpl Scoped<L2ToL1Message> for ScopedL2ToL1Message {\n fn inner(self) -> L2ToL1Message {\n self.message\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Ordered for ScopedL2ToL1Message {\n fn counter(self) -> u32 {\n self.message.counter\n }\n}\n\nimpl Eq for ScopedL2ToL1Message {\n fn eq(self, other: ScopedL2ToL1Message) -> bool {\n (self.message == other.message)\n & (self.contract_address == other.contract_address) \n }\n}\n\nimpl Empty for ScopedL2ToL1Message {\n fn empty() -> Self {\n ScopedL2ToL1Message {\n message: L2ToL1Message::empty(),\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn serialize(self) -> [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH] {\n array_concat(self.message.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_L2_TO_L1_MESSAGE_LENGTH> for ScopedL2ToL1Message {\n fn deserialize(values: [Field; SCOPED_L2_TO_L1_MESSAGE_LENGTH]) -> Self {\n let mut reader = Reader::new(values);\n let res = Self {\n message: reader.read_struct(L2ToL1Message::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty_l2() {\n let item = L2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = L2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn serialization_of_empty_scoped_l2() {\n let item = ScopedL2ToL1Message::empty();\n let serialized = item.serialize();\n let deserialized = ScopedL2ToL1Message::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"237":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr","source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n num_txs: Field,\n txs_effects_hash: Field,\n in_hash: Field,\n out_hash: Field,\n}\n\nimpl Serialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn serialize(self) -> [Field; CONTENT_COMMITMENT_LENGTH] {\n let mut fields: BoundedVec<Field, CONTENT_COMMITMENT_LENGTH> = BoundedVec::new();\n\n fields.push(self.num_txs);\n fields.push(self.txs_effects_hash);\n fields.push(self.in_hash);\n fields.push(self.out_hash);\n\n fields.storage\n }\n}\n\nimpl Deserialize<CONTENT_COMMITMENT_LENGTH> for ContentCommitment {\n fn deserialize(serialized: [Field; CONTENT_COMMITMENT_LENGTH]) -> Self {\n let num_txs = serialized[0];\n\n let txs_effects_hash = serialized[1];\n\n let in_hash = serialized[2];\n\n let out_hash = serialized[3];\n\n Self {\n num_txs,\n txs_effects_hash,\n in_hash,\n out_hash,\n }\n }\n}\n\nimpl Empty for ContentCommitment {\n fn empty() -> Self {\n Self {\n num_txs: 0,\n txs_effects_hash: 0,\n in_hash: 0,\n out_hash: 0,\n }\n }\n}\n\nimpl Eq for ContentCommitment {\n fn eq(self, other: Self) -> bool {\n (self.num_txs == other.num_txs)\n & (self.txs_effects_hash == other.txs_effects_hash)\n & (self.in_hash == other.in_hash)\n & (self.out_hash == other.out_hash)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let empty = ContentCommitment::empty();\n let serialized = empty.serialize();\n let deserialized = ContentCommitment::deserialize(serialized);\n\n assert(empty.eq(deserialized));\n}\n"},"239":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr","source":"use crate::{\n abis::{\n append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n global_variables::{GlobalVariables, GLOBAL_VARIABLES_LENGTH}\n},\n constants::{GENERATOR_INDEX__BLOCK_HASH, HEADER_LENGTH, STATE_REFERENCE_LENGTH, CONTENT_COMMITMENT_LENGTH},\n hash::pedersen_hash, state_reference::StateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice, content_commitment::ContentCommitment\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n content_commitment: ContentCommitment,\n state: StateReference,\n global_variables: GlobalVariables,\n total_fees: Field\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n self.content_commitment.eq(other.content_commitment) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables) &\n self.total_fees.eq(other.total_fees)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.content_commitment.serialize());\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n fields.push(self.total_fees);\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let content_commitment_fields = arr_copy_slice(serialized, [0; CONTENT_COMMITMENT_LENGTH], offset);\n offset = offset + CONTENT_COMMITMENT_LENGTH;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n offset = offset + GLOBAL_VARIABLES_LENGTH;\n\n let total_fees = serialized[offset];\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n content_commitment: ContentCommitment::deserialize(content_commitment_fields),\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n total_fees\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n content_commitment: ContentCommitment::empty(),\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n total_fees: 0\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header = Header::empty();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header = Header::empty();\n let _hashed = header.hash();\n}\n\n#[test]\nfn empty_hash_is_zero() {\n let header = Header::empty();\n let hash = header.hash();\n\n // Value from new_contract_data.test.ts \"computes empty hash\" test\n let test_data_empty_hash = 0x124e8c40a6eca2e3ad10c04050b01a3fad00df3cea47b13592c7571b6914c7a7;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"240":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector, log_hash::{LogHash, ScopedLogHash, ScopedEncryptedLogHash},\n note_hash::ScopedNoteHash, nullifier::ScopedNullifier\n},\n address::{AztecAddress, EthAddress},\n 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, MAX_NOTE_ENCRYPTED_LOGS_PER_TX\n},\n merkle_tree::root::root_from_sibling_path, messaging::l2_to_l1_message::ScopedL2ToL1Message,\n recursion::verification_key::VerificationKey, traits::is_empty,\n utils::field::field_from_bytes_32_trunc\n};\nuse 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\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n pedersen_hash(\n [\n tx_hash,\n note_index_in_tx as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, inner_note_hash: Field) -> Field {\n let inputs = [nonce, inner_note_hash];\n pedersen_hash(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n app.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_encrypted_log_hash(address: AztecAddress, randomness: Field, log_hash: Field) -> Field {\n // TODO: Using 0 GENERATOR_INDEX here as interim before we move to posiedon\n // NB: A unique separator will be needed for masked_contract_address\n let mut masked_contract_address = pedersen_hash([address.to_field(), randomness], 0);\n if randomness == 0 {\n // In some cases, we actually want to reveal the contract address we are siloing with:\n // e.g. 'handshaking' contract w/ known address\n // An app providing randomness = 0 signals to not mask the address.\n masked_contract_address = address.to_field();\n }\n accumulate_sha256([masked_contract_address, log_hash])\n}\n\npub fn silo_encrypted_log_hash(log_hash: ScopedEncryptedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_encrypted_log_hash(\n log_hash.contract_address,\n log_hash.log_hash.randomness,\n log_hash.log_hash.value\n )\n }\n}\n\npub fn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\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 recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\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\npub fn silo_l2_to_l1_message(msg: ScopedL2ToL1Message, rollup_version_id: Field, chain_id: Field) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id\n )\n }\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: [LogHash; 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_tx_note_logs_hash(logs: [LogHash; MAX_NOTE_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_NOTE_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_NOTE_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 pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n 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), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), EthAddress::from_field(3), 5, 2, 4);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"241":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Serialize}\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0], \n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial = PartialStateReference::empty();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n"},"243":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr","source":"use crate::{\n constants::{GENERATOR_INDEX__TX_CONTEXT, TX_CONTEXT_LENGTH}, hash::pedersen_hash,\n traits::{Deserialize, Hash, Serialize, Empty}, utils::reader::Reader,\n abis::gas_settings::GasSettings\n};\n\n// docs:start:tx-context\nstruct TxContext {\n chain_id : Field,\n version : Field,\n gas_settings: GasSettings,\n}\n// docs:end:tx-context\n\nimpl TxContext {\n pub fn new(chain_id: Field, version: Field, gas_settings: GasSettings) -> Self {\n TxContext { chain_id, version, gas_settings }\n }\n}\n\nimpl Eq for TxContext {\n fn eq(self, other: Self) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.gas_settings.eq(other.gas_settings))\n }\n}\n\nimpl Empty for TxContext {\n fn empty() -> Self {\n TxContext {\n chain_id: 0,\n version: 0,\n gas_settings: GasSettings::empty(),\n }\n }\n}\n\nimpl Serialize<TX_CONTEXT_LENGTH> for TxContext {\n fn serialize(self) -> [Field; TX_CONTEXT_LENGTH] {\n let mut fields: BoundedVec<Field, TX_CONTEXT_LENGTH> = BoundedVec::new();\n\n fields.push(self.chain_id);\n fields.push(self.version);\n fields.extend_from_array(self.gas_settings.serialize());\n\n assert_eq(fields.len(), TX_CONTEXT_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<TX_CONTEXT_LENGTH> for TxContext {\n fn deserialize(serialized: [Field; TX_CONTEXT_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let context = Self {\n chain_id: reader.read(),\n version: reader.read(),\n gas_settings: reader.read_struct(GasSettings::deserialize),\n };\n\n reader.finish();\n context\n }\n}\n\nimpl Hash for TxContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__TX_CONTEXT)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context = TxContext::empty();\n let serialized = context.serialize();\n let deserialized = TxContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let context = TxContext::empty();\n let hash = context.hash();\n\n // Value from tx_context.test.ts \"computes empty item hash\" test\n let test_data_empty_hash = 0x17e4357684c5a4349b4587c95b0b6161dcb4a3c5b02d4eb2ecc3b02c80193261;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"247":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr","source":"use crate::{\n abis::append_only_tree_snapshot::{AppendOnlyTreeSnapshot, APPEND_ONLY_TREE_SNAPSHOT_LENGTH},\n constants::{PARTIAL_STATE_REFERENCE_LENGTH, STATE_REFERENCE_LENGTH},\n partial_state_reference::PartialStateReference, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new();\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state = StateReference::empty();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n"},"261":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<N> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"},"273":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/mod.nr","source":"// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: u32) -> [T; M] {\n let iterator_len = if N > M { M } else { N };\n for i in 0..iterator_len {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"286":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr","source":"use crate::{\n constants::ETH_ADDRESS_LENGTH, hash::pedersen_hash,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_LENGTH] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_LENGTH> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_LENGTH]) -> Self {\n EthAddress::from_field(fields[0])\n }\n}\n\nimpl EthAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n field.assert_max_bit_size(160);\n Self { inner: field }\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"},"287":{"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([pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1])\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_pub_keys_hash() {\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"},"395":{"path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr","source":"// An entrypoint contract that allows everything to go through. Only used for testing\n// Pair this with SignerlessWallet to perform multiple actions before any account contracts are deployed (and without authentication)\ncontract MultiCallEntrypoint {\n use dep::std;\n\n use dep::aztec::prelude::AztecAddress;\n use dep::authwit::entrypoint::app::AppPayload;\n\n #[aztec(private)]\n fn entrypoint(app_payload: AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n"},"4":{"path":"std/collections/bounded_vec.nr","source":"use crate::{cmp::Eq, convert::From};\n\nstruct BoundedVec<T, let MaxLen: u32> {\n storage: [T; MaxLen],\n len: u32,\n}\n\nimpl<T, let MaxLen: u32> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n /// Get an element from the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn get(self, index: u32) -> T {\n assert(index < self.len);\n self.get_unchecked(index)\n }\n\n /// Get an element from the vector at the given index.\n /// Responds with undefined data for `index` where `self.len < index < self.max_len()`.\n pub fn get_unchecked(self, index: u32) -> T {\n self.storage[index]\n }\n\n /// Write an element to the vector at the given index.\n /// Panics if the given index points beyond the end of the vector (`self.len()`).\n pub fn set(&mut self, index: u32, value: T) {\n assert(index < self.len, \"Attempted to write past end of BoundedVec\");\n self.set_unchecked(index, value)\n }\n\n /// Write an element to the vector at the given index.\n /// Does not check whether the passed `index` is a valid index within the vector.\n ///\n /// Silently writes past the end of the vector for `index` where `self.len < index < self.max_len()`\n /// Panics if the given index points beyond the maximum length of the vector (`self.max_len()`).\n pub fn set_unchecked(&mut self, index: u32, value: T) {\n self.storage[index] = value;\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) -> u32 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u32 {\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<let Len: u32>(&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<let Len: u32>(&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<let Len: u32>(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 pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> BoundedVec<U, MaxLen> {\n let mut ret = BoundedVec::new();\n ret.len = self.len();\n for i in 0..MaxLen {\n if i < self.len() {\n ret.storage[i] = f(self.get_unchecked(i));\n }\n }\n ret\n }\n}\n\nimpl<T, let MaxLen: u32> 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, let MaxLen: u32, let Len: u32> 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 set {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn set_updates_values_properly() {\n let mut vec = BoundedVec::from_array([0, 0, 0, 0, 0]);\n\n vec.set(0, 42);\n assert_eq(vec.storage, [42, 0, 0, 0, 0]);\n\n vec.set(1, 43);\n assert_eq(vec.storage, [42, 43, 0, 0, 0]);\n\n vec.set(2, 44);\n assert_eq(vec.storage, [42, 43, 44, 0, 0]);\n\n vec.set(1, 10);\n assert_eq(vec.storage, [42, 10, 44, 0, 0]);\n\n vec.set(0, 0);\n assert_eq(vec.storage, [0, 10, 44, 0, 0]);\n }\n\n #[test(should_fail_with = \"Attempted to write past end of BoundedVec\")]\n fn panics_when_writing_elements_past_end_of_vec() {\n let mut vec: BoundedVec<Field, 5> = BoundedVec::new();\n vec.set(0, 42);\n\n // Need to use println to avoid DIE removing the write operation.\n crate::println(vec.get(0));\n }\n }\n\n mod map {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn applies_function_correctly() {\n // docs:start:bounded-vec-map-example\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| value * 2);\n // docs:end:bounded-vec-map-example\n let expected = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn applies_function_that_changes_return_type() {\n let vec: BoundedVec<u32, 4> = BoundedVec::from_array([1, 2, 3, 4]);\n let result = vec.map(|value| (value * 2) as Field);\n let expected: BoundedVec<Field, 4> = BoundedVec::from_array([2, 4, 6, 8]);\n\n assert_eq(result, expected);\n }\n\n #[test]\n fn does_not_apply_function_past_len() {\n let vec: BoundedVec<u32, 3> = BoundedVec::from_array([0, 1]);\n let result = vec.map(|value| if value == 0 { 5 } else { value });\n let expected = BoundedVec::from_array([5, 1]);\n\n assert_eq(result, expected);\n assert_eq(result.storage()[2], 0);\n }\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"},"55":{"path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr","source":"use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD, hash::pedersen_hash, traits::{Hash, Serialize}};\n\nuse crate::entrypoint::function_call::{FunctionCall, FUNCTION_CALL_SIZE_IN_BYTES};\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u64 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u64 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\nstruct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(),\n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_slice(self.nonce.to_be_bytes(32));\n\n bytes.storage\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"93":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX, NUM_KEY_TYPES, sk_generators},\n oracle::{\n key_validation_request::get_key_validation_request, arguments, returns::pack_returns,\n call_private_function::call_private_function_internal, header::get_header_at,\n logs::{emit_encrypted_note_log, emit_encrypted_event_log},\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, set_public_teardown_function_call_internal,\n parse_public_call_stack_item_from_oracle\n}\n}\n};\nuse dep::protocol_types::{\n abis::{\n caller_context::CallerContext, function_selector::FunctionSelector,\n max_block_number::MaxBlockNumber,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n private_call_request::PrivateCallRequest, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, log_hash::{LogHash, NoteLogHash, EncryptedLogHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NOTE_HASHES_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL,\n MAX_NOTE_ENCRYPTED_LOGS_PER_CALL\n},\n header::Header, messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::Empty\n};\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n min_revertible_side_effect_counter: u32,\n is_fee_payer: bool,\n\n args_hash: Field,\n return_hash: Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n private_call_requests : BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n public_teardown_function_hash: Field,\n l2_to_l1_msgs : BoundedVec<L2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n note_encrypted_logs_hashes: BoundedVec<NoteLogHash, MAX_NOTE_ENCRYPTED_LOGS_PER_CALL>,\n encrypted_logs_hashes: BoundedVec<EncryptedLogHash, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<LogHash, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n l2_to_l1_msgs: BoundedVec::new(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n\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.tx_context.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.tx_context.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_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n // TODO(#7112): This function is called with non-zero note hash only in 1 of 25 cases in aztec-packages repo\n // - consider creating a separate function with 1 arg for the zero note hash case.\n fn push_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.next_counter() });\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n key_validation_requests_and_generators: self.key_validation_requests_and_generators.storage,\n note_hashes: self.note_hashes.storage,\n nullifiers: self.nullifiers.storage,\n private_call_requests: self.private_call_requests.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n public_teardown_function_hash: self.public_teardown_function_hash,\n l2_to_l1_msgs: self.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 note_encrypted_logs_hashes: self.note_encrypted_logs_hashes.storage,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\"Setting {0} as fee payer\", [self.this_address().to_field()]);\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number = MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request = self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one \n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale. We fetch new values from oracle and instruct\n // protocol circuits to validate them by storing the validation request in context.\n let request = get_key_validation_request(pk_m_hash, key_index);\n let request_and_generator = KeyValidationRequestAndGenerator { request, sk_app_generator: sk_generators[key_index] };\n // We constrain that the pk_m_hash matches the one in the request (otherwise we could get an arbitrary\n // valid key request and not the one corresponding to pk_m_hash).\n assert(request.pk_m.hash() == pk_m_hash);\n self.key_validation_requests_and_generators.push(request_and_generator);\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content, counter: self.next_counter() };\n self.l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\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_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n // NB: A randomness value of 0 signals that the kernels should not mask the contract address\n // used in siloing later on e.g. 'handshaking' contract w/ known address.\n pub fn emit_raw_event_log_with_masked_address<M>(&mut self, randomness: Field, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let contract_address = self.this_address();\n let len = log.len() as Field + 4;\n let side_effect = EncryptedLogHash { value: log_hash, counter, length: len, randomness };\n self.encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_event_log(contract_address, randomness, log, counter);\n }\n\n pub fn emit_raw_note_log<M>(&mut self, note_hash_counter: u32, log: [u8; M], log_hash: Field) {\n let counter = self.next_counter();\n let len = log.len() as Field + 4;\n let side_effect = NoteLogHash { value: log_hash, counter, length: len, note_hash_counter };\n self.note_encrypted_logs_hashes.push(side_effect);\n\n emit_encrypted_note_log(note_hash_counter, log, counter);\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, false)\n }\n\n pub fn static_call_private_function_no_args<RETURNS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false, true)\n }\n\n pub fn call_private_function_with_packed_args<RETURNS_COUNT>(\n &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 ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, start_side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, start_side_effect_counter);\n let end_side_effect_counter = item.public_inputs.end_side_effect_counter;\n self.side_effect_counter = end_side_effect_counter + 1;\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n let mut caller_context = CallerContext::empty();\n caller_context.is_static_call = self.inputs.call_context.is_static_call;\n if is_delegate_call {\n caller_context.msg_sender = self.inputs.call_context.msg_sender;\n caller_context.storage_contract_address = self.inputs.call_context.storage_contract_address;\n }\n self.private_call_requests.push(\n PrivateCallRequest { hash: item.hash(), caller_context, start_side_effect_counter, end_side_effect_counter }\n );\n\n PackedReturns::new(item.public_inputs.returns_hash)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, true, false)\n }\n\n pub fn delegate_call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash, false, true)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\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(\n &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 ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_call_stack_hashes.push(item.hash());\n }\n\n pub fn set_public_teardown_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args_array(args);\n assert(args_hash == arguments::pack_arguments_array(args));\n self.set_public_teardown_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn set_public_teardown_function_with_packed_args<ARGS_COUNT>(\n &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 ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\n );\n\n let item = parse_public_call_stack_item_from_oracle(fields);\n self.validate_call_stack_item_from_oracle(\n item,\n contract_address,\n function_selector,\n args_hash,\n is_static_call,\n is_delegate_call\n );\n\n self.side_effect_counter = self.side_effect_counter + 1;\n self.public_teardown_function_hash = item.hash();\n }\n\n fn validate_call_stack_item_from_oracle(\n self,\n item: PublicCallStackItem,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n is_static_call: bool,\n is_delegate_call: bool\n ) {\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n note_encrypted_logs_hashes: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES]\n }\n }\n}\n"}}}