@aztec/protocol-contracts 0.37.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/artifacts/ContractClassRegisterer.json +1 -1
- package/dest/artifacts/ContractInstanceDeployer.json +1 -1
- package/dest/artifacts/GasToken.json +1 -1
- package/dest/artifacts/KeyRegistry.json +1 -1
- package/dest/artifacts/MultiCallEntrypoint.json +1 -1
- package/package.json +4 -4
- package/src/artifacts/ContractClassRegisterer.json +1 -1
- package/src/artifacts/ContractInstanceDeployer.json +1 -1
- package/src/artifacts/GasToken.json +1 -1
- package/src/artifacts/KeyRegistry.json +1 -1
- package/src/artifacts/MultiCallEntrypoint.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"noir_version":"0.28.0+b6ee6a5888e47e7e17024eb66172459a13bdeb3a","name":"MultiCallEntrypoint","functions":[{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"parameters":[{"name":"inputs","type":{"kind":"struct","path":"aztec::context::inputs::private_context_inputs::PrivateContextInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]},"visibility":"private"},{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]},"visibility":"public"}],"param_witnesses":{"app_payload":[{"start":38,"end":55}],"inputs":[{"start":0,"end":38}]},"return_type":{"abi_type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs","fields":[{"name":"call_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext","fields":[{"name":"msg_sender","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"storage_contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"args_hash","type":{"kind":"field"}},{"name":"returns_hash","type":{"kind":"field"}},{"name":"min_revertible_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"max_block_number","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::max_block_number::MaxBlockNumber","fields":[{"name":"_opt","type":{"kind":"struct","path":"std::option::Option","fields":[{"name":"_is_some","type":{"kind":"boolean"}},{"name":"_value","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}},{"name":"note_hash_read_requests","type":{"kind":"array","length":32,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_read_requests","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"nullifier_key_validation_requests","type":{"kind":"array","length":1,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest","fields":[{"name":"master_nullifier_public_key","type":{"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint","fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}]}},{"name":"app_nullifier_secret_key","type":{"kind":"field"}}]}}},{"name":"new_note_hashes","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::note_hash::NoteHash","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"new_nullifiers","type":{"kind":"array","length":16,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier::Nullifier","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"note_hash","type":{"kind":"field"}}]}}},{"name":"private_call_stack_hashes","type":{"kind":"array","length":4,"type":{"kind":"field"}}},{"name":"public_call_stack_hashes","type":{"kind":"array","length":16,"type":{"kind":"field"}}},{"name":"new_l2_to_l1_msgs","type":{"kind":"array","length":2,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message","fields":[{"name":"recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"content","type":{"kind":"field"}}]}}},{"name":"start_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"end_side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect","fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}]}}},{"name":"encrypted_log_preimages_length","type":{"kind":"field"}},{"name":"unencrypted_log_preimages_length","type":{"kind":"field"}},{"name":"historical_header","type":{"kind":"struct","path":"authwit::aztec::protocol_types::header::Header","fields":[{"name":"last_archive","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"content_commitment","type":{"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment","fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}]}},{"name":"state","type":{"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference","fields":[{"name":"l1_to_l2_message_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"partial","type":{"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference","fields":[{"name":"note_hash_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"nullifier_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"public_data_tree","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot","fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}]}}]}}]}},{"name":"global_variables","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"fee_recipient","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"gas_fees","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}}]}}]}},{"name":"tx_context","type":{"kind":"struct","path":"authwit::aztec::protocol_types::transaction::tx_context::TxContext","fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"gas_settings","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_settings::GasSettings","fields":[{"name":"gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"teardown_gas_limits","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas::Gas","fields":[{"name":"da_gas","type":{"kind":"integer","sign":"unsigned","width":32}},{"name":"l2_gas","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"max_fees_per_gas","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees","fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}]}},{"name":"inclusion_fee","type":{"kind":"field"}}]}}]}}]},"visibility":"public"},"return_witnesses":[1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595,1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627,1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664,1665,1666,1667,1668,1669,1670,1671,1672,1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688,1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704,1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720,1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801],"error_types":{}},"bytecode":"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","debug_symbols":"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8PyrBJ5/lcDzrxJ4/lUCz79K4PlXCTz/KoHnXyXw/KsEnn+VwPOvEnj+VQLPv0rg+VcJPP8qgedfJfD8qwSef5XA868SeP5VAs+/SuD5Vwk8/yqB518l8PyrBJ5/lcDzrxJ4/lUCz79K4PlXCTz/KoHnXyXw/KsEnn+VwPOvEnj+VQLPv0rg+VcJPP8qgedfJfD8qwSef5XA868SeP5VAs+/SuD5Vwk8/yqB518l8PyrBJ5/lcDzrxJ4/lUCz79K4PlXCTz/KoHnXyXw/KsEnn+VwPOvEnj+VQLPv0rg+VcJPP8qgedfJfD8qwSef5XA868SeP5VAs+/SuD5Vwk8/yqB518l8PyrBJ5/lcDzrxJ4/lUCz79K4PlXCTz/KoHnXyXw/KsEnn+VwPOvEnj+VQbPv8rg+VcZPP8qg+df5Q27/2bw/KsMnn+VwfOvMnj+VQbPv8rg+VcZPP8qg+dfZfD8qwyef5XB868yeP5VBs+/yuD5Vxk8/yqD519l8PyrDJ5/lcHzrzJ4/lUGz7/K4PlXGTz/KoPnX2Xw/KsMnn+VwfOvMnj+VQbPv8rg+VcZPP8qg+dfZfD8qwyef5XB868yeP5VBs+/yuD5Vxk8/yqD519l8PyrDJ5/lcHzrzJ4/lUGz7/K4PlXGTz/KoPnX2Xw/KsMnn+VwfOvMnj+VQbPv8rg+VcZPP8qg+dfZfD8qwyef5XB868yeP5VBs+/yuD5Vxk8/yqD519l8PyrDJ5/lcHzrzJ4/lUGz7/K4PlXGTz/KoPnX2Xw/KsMnn+VwfOvMnj+VQbPv8rg+VcZPP8qg+dfZfD8qwyef5XB868yeP5VBs+/yuD5Vxk8/yqD519l8PyrDJ5/lcHzrzJ4/lUGz7/K4PlXGTz/agfPv9rB86928PyrHTz/at+w++8Onn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1g+df7eD5Vzt4/tUOnn+1m85f2kf662v3Mavf8v2/UL/p/B/ZnmVIqpP6Ld8/K/Vbvn9W6rd8/6zUL+D1W/b/K/Vbvv+llmf9PU3qt3z/r9Rv2f+v1G/Z/y/Ubzr/Z6V+0/13oX7T/XehftP9d6F+0/13oX7T/Xeh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PVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bf3YPntPVh+ew+W396D5bePYPntI1h++wiW3z6C5bePTYLpjeWvRrD89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fwfLbR7D89hEsv30Ey28fjvK9e37K7fnX7/xW66f7rqj1czf3/Vl0lzpR6+dmXlHr515eUevnVl5R62fmXVDrKPF5Ra2jfrug1lG/XVDrZ9ZdUSuh1IbyUo5SnlfUonqptwJUf/RWYNrz7CM/FZRNjubuVJ5fnVL9UPXjf7/02s5hPkGvad9zgl7TzucEvaa9zwl6JZhe0/7nBL2mHdAJek17oBP0mnZMJ+gN5q9s5zCfoDeYv7Kdw3yC3mD+ynYO8wl6g/kr2znMJ+gN5q9s5zCfoDeYv7Kdw3yC3mD+ynYO8wl6g/kr2znMJ+gN5q9s5zCfoDeYv7Kdw3yC3lD+Km+2c5hP0BvKXz30hvJXD72h/NVDrwTTG8pfPfSG8ld5s51b+yO9h5+ceKj1041W1Pq5qw5/2++h1s9NtaLWzz21otbPFLii1s8MuKLWzwS4oNZ2jqm6Wkf9dkGtn9lvRa2fyW9FrYRSG8pL2c4u/UbtWwGqP3orMO15Snl90qWldDR31yLPqmv9+LmYj//mTLsefb2280VP0Gva+Zyg17T3OUGv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ffI+nj/00ft4/tBn7+P5Qx++j+cPffo+nj/08ft4/uDnb+yaqscDBT9/YxdVPR4o+Pkbu6rq8UDBz9/YZVWPBwp+/sauq3o8UPDzN3Zh1ePpgp+/sSurHk8X/PyNXVr1eLrg52/s2qrH0wU/f2MXVz2eLvj5G7u66vH8wc/f2OVVj+cPfv7Grq96PH/w8zd2gdXj+YOfv7ErrB7PH/z8jV1i9Xj+4Odv7Bqrx/MHP39jF1k9nj/4+Ru7yurx/MHP39hlVo/nD37+xq6zejx/8PM3dqHV4/mDn7+xK60ezx/8/I1davV4/uDnb+xaq8fzBz9/YxdbPZ4/+Pkbu9rq8fzBz9/Y5VaP5w9+/saut3o8f/DzN3bB1eP5g5+/sSuuHs8f/PyNXXL1eP7g52/smqvH8wc/f2MXXT2eP/j5G7vq6vH8wc/f2GVXj+cPfv7Grrt6PH/w8zd24dXj+YOfv7Errx7PH/z8jV169Xj+4Odv7Nqrx/MHP39jF189nj/4+Ru7+urx/MHP39jlV4/nD37+xq6/ejx/7PO3BO+/KsH7r0rw/qsSvP+qTLHP3xK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuvSvD+qxK8/6oE778qwfuv5uD9V3Pw/qs5eP/VHLz/ap5in79z8P6rOXj/1Ry8/2oO3n81B++/moP3X83B+6/m4P1Xc/D+qzl4/9UcvP9qDt5/NQfvv5qD91/Nwfuv5uD9V3Pw/qs5eP/VHLz/ag7efzUH77+ag/dfzcH7r+bg/Vdz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O1l/+07W376T9bfvZP3tO1l/+07W376T9bfvZP3tO1l/+07W376T9bfvZP3tO1l/+07W376T9bfvZP3tO1l/+07W376T9bfvZP3tO1l/+07W376T9bfvZP3tO1l/eyXrb69k/e2VrL+9kvW318nI9HL5q0rW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL/9IOtvP8j62w+y/vaDrL/9mIxML5e/Osj62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9IOtvP8j62w+y/vaDrL/9SNTvXeen3Dr//pNPtXlO3x61ed7NdXk+dLWtoTbPm7lHbZ73co/aPG/lHrV5Mm+H2kSNzz1qE523HWoTnbcdavNk3R61RqWWykslannuURvVS50KovqjU4Frz7Mc81PBOtlV7i7r89OlbG9P/fi/X3p99zB/Qa9r3/MFva6dzxf0uvY+X9BrZHpd+58v6HXtgL6g17UH+oJe147pC3rJ/JXvHuYv6CXzV757mL+gl8xf+e5h/oJeMn/lu4f5C3rJ/JXvHuYv6CXzV757mL+gl8xf+e5h/oJeMn/lu4f5C3rJ/JXvHuYv6CXzV757mL+gl8pfzZPvHuYv6KXyVw+9VP7qoZfK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X23J+6+25P1XW/L+qy15/9WWvP9qS95/tSXvv9qS919tyfuvtuT9V1vy/qstef/Vlrz/akvef7Ul77/akvdfbcn7r7bk/Vdb8v6rLXn/1Za8/2pL3n+1Je+/2pL3X23J+6+25P1XW/L+qy15/9WWvP9qS95/tSXvv9qS919tyfuvtuT9V1vy/qstef/Vlrz/akvef7Ul77/akvdfbcn7r7bk/Vdb8v6rLXn/1Za8/2pL3n+1Je+/2pL3X23J+6+25P1XW/L+qy15/9WWvP9qS95/tSXvv9qS919tyfuvtuT9V1vy/qstef/Vlrz/akvef7Ul77/akvdfbcn7r7bk/Vdb8v6rLXn/1Za8/2pL3n+1Je+/2pL3X23J+6+25P1XW/L+qz15/9WevP9qT95/tSfvv9ofuc/fPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/VdH8v6rI3n/1ZG8/+pI3n91PHKfv0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvevL+q568/6on77/qyfuv+iP3+duT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/VU/ef9WT91/15P1XPXn/1Zm8/+pM3n91Ju+/OpP3X52P3Ofvmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+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"},{"name":"compute_note_hash_and_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"parameters":[{"name":"contract_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"param_witnesses":{"contract_address":[{"start":0,"end":1}],"nonce":[{"start":1,"end":2}],"note_type_id":[{"start":3,"end":4}],"serialized_note":[],"storage_slot":[{"start":2,"end":3}]},"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[4,5,6,7],"error_types":{}},"bytecode":"H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==","debug_symbols":"ndpBattQGIXRvWgciu8v6ekpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/Xl7ftse7y/Ol+37ZXgcKw/D7vhyf2qfD8Pr/rC7P4+f3x7uo0VGXUYrjMaNjCKjktEoo0lGs4ykiFGKGKWIUYqYpIhJipikiEmKmKSISYqYpIhJipikiEmKmKWIWYqYpYhZipiliFmKmKWIWYqYpYhZimhSRJMimhTRpIgmRTQpokkRTYpoUkSTIhYpYpEiFilikSIWKWKRIhYpYpEiFilikSK6FNGliC5FdCmiSxFdiuhSRJciuhTRpYhVililiFWKWKWIVYpYpYhVililiFWKWKWIbDa0Cq2KViOtJlrNtGq0WmjVaUVthNoItRFqI9RGqI1QG6E2Qm2E2gi1UdRGURtFbRS1UdRGURvEmSHPDIFmSDRDpBkyzRBqhlQzxJoh1wzBZkg2Q7QZss0QboZ0M8SbId8MAWdIOEPEGTLOEHKGlDPEnCHnDEFnSDpD1BmyzhB2hrQzxJ0h7wyBZ0g8Q+QZMs8QeobUM8SeIfcMwWdIPkP0GbLPEH6G9DPEnyH/DAFoSEBDBBoy0BCChhQ0xKAhBw1BaEhCQxQastAQhoY0NMShIQ8NgWhIREMkGjLREIqGVDTEoiEXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctctEiFy1y0SIXLXLRIhctu+Zp9zztoie5aJGLFrlokYsWuWj9t4veTj+37/vt02F3v9l7//hxfP530fd2vPx6+/vl9u9v"}],"outputs":{"structs":{"functions":[{"kind":"struct","path":"MultiCallEntrypoint::entrypoint_abi","fields":[{"name":"parameters","type":{"kind":"struct","path":"MultiCallEntrypoint::entrypoint_parameters","fields":[{"name":"app_payload","type":{"kind":"struct","path":"authwit::entrypoint::app::AppPayload","fields":[{"name":"function_calls","type":{"kind":"array","length":4,"type":{"kind":"struct","path":"authwit::entrypoint::function_call::FunctionCall","fields":[{"name":"args_hash","type":{"kind":"field"}},{"name":"function_selector","type":{"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector","fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}]}},{"name":"target_address","type":{"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress","fields":[{"name":"inner","type":{"kind":"field"}}]}},{"name":"is_public","type":{"kind":"boolean"}}]}}},{"name":"nonce","type":{"kind":"field"}}]}}]}}]}]},"globals":{}},"file_map":{"3":{"source":"use crate::cmp::Eq;\n\nstruct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n}\n","path":"std/collections/bounded_vec.nr"},"20":{"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","path":"std/field.nr"},"51":{"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 = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 420;\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 false,\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 false,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n","path":"/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr"},"84":{"source":"use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n messaging::process_l1_to_l2_message, hash::{hash_args_array, ArgsHasher},\n oracle::{\n arguments, returns, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, header::get_header_at,\n nullifier_key::{get_nullifier_keys, NullifierKeys}\n}\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables, gas::Gas, call_context::CallContext, function_data::FunctionData,\n function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_call_stack_item::PrivateCallStackItem,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n note_hash::NoteHash, nullifier::Nullifier, side_effect::SideEffect\n},\n 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_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader,\n traits::{is_empty, Deserialize, Empty}\n};\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\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\n args_hash : Field,\n return_hash : Field,\n\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: BoundedVec<SideEffect, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_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_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\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 // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n encrypted_logs_hashes: BoundedVec<SideEffect, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeys>,\n}\n\nimpl ContextInterface for PrivateContext {\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.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.new_nullifiers.push(Nullifier { value: nullifier, note_hash: nullified_note_hash, counter: self.side_effect_counter });\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let side_effect_counter = inputs.start_side_effect_counter;\n let mut min_revertible_side_effect_counter = 0;\n if is_empty(inputs.call_context.msg_sender) {\n min_revertible_side_effect_counter = side_effect_counter;\n }\n PrivateContext {\n inputs,\n side_effect_counter,\n min_revertible_side_effect_counter,\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 nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\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 returns::pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = 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 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 nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context\n };\n\n priv_circuit_pub_inputs\n }\n\n pub fn end_setup(&mut self) {\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 = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.note_hash_read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_app_nullifier_secret_key(&mut self, account: AztecAddress) -> Field {\n let keys = if self.nullifier_key.is_none() {\n let keys = get_nullifier_keys(account);\n let request = NullifierKeyValidationRequest {\n master_nullifier_public_key: keys.master_nullifier_public_key,\n app_nullifier_secret_key: keys.app_nullifier_secret_key\n };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(keys);\n keys\n } else {\n let keys = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(keys.account == account, \"Cannot query nullifier key for more than one account per call\");\n keys\n };\n keys.app_nullifier_secret_key\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 };\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 pub fn push_encrypted_log(&mut self, log_hash: Field) {\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.encrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n // TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n // --> might be a better approach to force devs to make a public function call that emits the log if needed then\n // it would be less easy to accidentally leak information.\n // If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\n pub fn emit_unencrypted_log<T>(&mut self, log: T) {\n let event_selector = 5; // TODO: compute actual event selector.\n let log_hash = emit_unencrypted_log_private_internal(self.this_address(), event_selector, log);\n\n let side_effect = SideEffect { value: log_hash, counter: self.side_effect_counter };\n self.unencrypted_logs_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\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 item = call_private_function_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 assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.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 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 self.private_call_stack_hashes.push(item.hash());\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 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 let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\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 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: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\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 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 // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\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 self.public_call_stack_hashes.push(item.hash());\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 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 nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_stack_hashes : BoundedVec::new(),\n public_call_stack_hashes : BoundedVec::new(),\n new_l2_to_l1_msgs : BoundedVec::new(),\n historical_header: Header::empty(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n nullifier_key: Option::none(),\n }\n }\n}\n\nstruct PackedReturns {\n packed_returns: Field,\n}\n\nimpl PackedReturns {\n pub fn new(packed_returns: Field) -> Self {\n PackedReturns { packed_returns }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.packed_returns, 0);\n }\n\n pub fn raw(self) -> Field {\n self.packed_returns\n }\n\n pub fn unpack<N>(self) -> [Field; N] {\n let unpacked: [Field; N] = returns::unpack_returns(self.packed_returns);\n assert_eq(self.packed_returns, hash_args_array(unpacked));\n unpacked\n }\n\n pub fn unpack_into<T, N>(self) -> T where T: Deserialize<N> {\n let unpacked: [Field; N] = self.unpack();\n Deserialize::deserialize(unpacked)\n }\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> Field {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message)\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr"},"101":{"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)]\nfn 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","path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr"},"102":{"source":"use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_LENGTH\n};\n\n#[oracle(enqueuePublicFunctionCall)]\nfn 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","path":"/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"},"115":{"source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n","path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr"},"132":{"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}\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 }\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\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\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 }\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 }\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 = 0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73;\n assert_eq(hash, test_data_empty_hash);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/header.nr"},"134":{"source":"struct Reader<N> {\n data: [Field; N],\n offset: u64,\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_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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr"},"147":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/eth_address.nr"},"151":{"source":"use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS_V1},\n contract_class_id::ContractClassId, hash::poseidon2_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, FromField, ToField, Serialize, Deserialize}, utils\n};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n poseidon2_hash(\n [pub_keys_hash.to_field(), partial_address.to_field(), GENERATOR_INDEX__CONTRACT_ADDRESS_V1]\n )\n )\n }\n\n pub fn compute_from_public_keys_and_partial_address(\n nullifier_public_key: GrumpkinPoint,\n incoming_public_key: GrumpkinPoint,\n outgoing_public_key: GrumpkinPoint,\n tagging_public_key: GrumpkinPoint,\n partial_address: PartialAddress,\n ) -> AztecAddress {\n let public_keys_hash = PublicKeysHash::compute_new(\n nullifier_public_key,\n incoming_public_key,\n outgoing_public_key,\n tagging_public_key,\n );\n\n let computed_address = AztecAddress::compute(public_keys_hash, partial_address);\n\n computed_address\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs: Self, rhs: Self) -> Self {\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self { inner: result }\n }\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let pub_keys_hash = PublicKeysHash::from_field(1);\n let partial_address = PartialAddress::from_field(2);\n\n let address = AztecAddress::compute(pub_keys_hash, partial_address);\n let expected_computed_address_from_partial_and_pubkey = 0x1b6ead051e7b42665064ca6cf1ec77da0a36d86e00d1ff6e44077966c0c3a9fa;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr"},"153":{"source":"use crate::{address::EthAddress, constants::L2_TO_L1_MESSAGE_LENGTH, traits::{Deserialize, Empty, Serialize}};\n\n// Note: Not to be confused with L2ToL1Msg in Solidity\nstruct L2ToL1Message {\n recipient: EthAddress,\n content: Field,\n}\n\nimpl Empty for L2ToL1Message {\n fn empty() -> Self {\n Self {\n recipient: EthAddress::empty(),\n content: 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)\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]\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 }\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/messaging/l2_to_l1_message.nr"},"156":{"source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr"},"158":{"source":"use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot, constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{Deserialize, Empty, Hash, 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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/partial_state_reference.nr"},"164":{"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#[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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_data.nr"},"168":{"source":"use crate::{\n abis::side_effect::{OrderedValue, ContractScopedOrderedValue},\n traits::{Empty, Serialize, Deserialize}, address::AztecAddress,\n constants::READ_REQUEST_LENGTH,\n};\nuse dep::std::cmp::Eq;\n\nglobal READ_REQUEST_CONTEXT_SERIALIZED_LEN = 3;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\n}\n\nimpl OrderedValue<Field> for ReadRequest {\n fn value(self) -> Field {\n self.value\n }\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 to_context(self, contract_address: AztecAddress) -> ReadRequestContext {\n ReadRequestContext { value: self.value, counter: self.counter, contract_address }\n }\n}\n\nstruct ReadRequestContext {\n value: Field,\n counter: u32,\n contract_address: AztecAddress,\n}\n\nimpl OrderedValue<Field> for ReadRequestContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl ContractScopedOrderedValue<Field> for ReadRequestContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n fn contract_address(self) -> AztecAddress {\n self.contract_address\n }\n}\n\nimpl Eq for ReadRequestContext {\n fn eq(self, read_request: ReadRequestContext) -> bool {\n (self.value == read_request.value)\n & (self.counter == read_request.counter)\n & (self.contract_address.eq(read_request.contract_address))\n }\n}\n\nimpl Empty for ReadRequestContext {\n fn empty() -> Self {\n ReadRequestContext {\n value: 0,\n counter: 0,\n contract_address: AztecAddress::empty(),\n }\n }\n}\n\nimpl Serialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn serialize(self) -> [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN] {\n [self.value, self.counter as Field, self.contract_address.to_field()]\n }\n}\n\nimpl Deserialize<READ_REQUEST_CONTEXT_SERIALIZED_LEN> for ReadRequestContext {\n fn deserialize(values: [Field; READ_REQUEST_CONTEXT_SERIALIZED_LEN]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n contract_address: AztecAddress::from_field(values[2]),\n }\n }\n}\n\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr"},"169":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/call_context.nr"},"179":{"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 = 0x17fd6ffcb3394b845069dc87e055c37ac50599f274130fac69c6fe919bfe382e;\n assert_eq(hash, test_data_empty_hash);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_call_stack_item.nr"},"183":{"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 dep::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 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, side_effect::SideEffect\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 = 0x1595b195f0faa3a492109039dc807b291d0edd81a5e3a380866d5098ffd505dd;\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 = 0x1122a7d7e6174b7e5d111c8eb0233564d3a1ffd755afc7ce4b594d738e2770d7;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_call_stack_item.nr"},"185":{"source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr"},"188":{"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 dep::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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas.nr"},"189":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_settings.nr"},"190":{"source":"use crate::{\n address::AztecAddress, abis::side_effect::{Ordered, OrderedValue},\n constants::{NOTE_HASH_LENGTH, NOTE_HASH_CONTEXT_LENGTH}, traits::{Empty, Serialize, Deserialize}\n};\nuse dep::std::cmp::Eq;\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 OrderedValue<Field> for NoteHash {\n fn value(self) -> Field {\n self.value\n }\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 to_context(self, nullifier_counter: u32) -> NoteHashContext {\n NoteHashContext { value: self.value, counter: self.counter, nullifier_counter }\n }\n}\n\nstruct NoteHashContext {\n value: Field,\n counter: u32,\n nullifier_counter: u32,\n}\n\nimpl Ordered for NoteHashContext {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for NoteHashContext {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for NoteHashContext {\n fn eq(self, other: NoteHashContext) -> bool {\n (self.value == other.value)\n & (self.counter == other.counter) \n & (self.nullifier_counter == other.nullifier_counter)\n }\n}\n\nimpl Empty for NoteHashContext {\n fn empty() -> Self {\n NoteHashContext {\n value: 0,\n counter: 0,\n nullifier_counter: 0,\n }\n }\n}\n\nimpl Serialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn serialize(self) -> [Field; NOTE_HASH_CONTEXT_LENGTH] {\n [self.value, self.counter as Field, self.nullifier_counter as Field]\n }\n}\n\nimpl Deserialize<NOTE_HASH_CONTEXT_LENGTH> for NoteHashContext {\n fn deserialize(values: [Field; NOTE_HASH_CONTEXT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n nullifier_counter: values[2] as u32,\n }\n }\n}\n\nimpl NoteHashContext {\n pub fn to_note_hash(self) -> NoteHash {\n NoteHash { value: self.value, counter: self.counter }\n }\n\n pub fn expose_to_public(self) -> NoteHash {\n // Hide the actual counter when exposing it to the public kernel.\n NoteHash { value: self.value, counter: 0 }\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/note_hash.nr"},"191":{"source":"use dep::std::cmp::Eq;\nuse 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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr"},"194":{"source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n constants::{NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH, NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, grumpkin_point::GrumpkinPoint,\n grumpkin_private_key::GrumpkinPrivateKey\n};\n\nstruct NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field, // not a GrumpkinScalar because it's output of poseidon2\n}\n\nimpl Eq for NullifierKeyValidationRequest {\n fn eq(self, request: NullifierKeyValidationRequest) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequest {\n fn empty() -> Self {\n NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n }\n }\n}\n\nimpl NullifierKeyValidationRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> NullifierKeyValidationRequestContext {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: self.master_nullifier_public_key,\n app_nullifier_secret_key: self.app_nullifier_secret_key,\n contract_address\n }\n }\n}\n\nstruct NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field,\n contract_address: AztecAddress,\n}\n\nimpl Eq for NullifierKeyValidationRequestContext {\n fn eq(self, request: NullifierKeyValidationRequestContext) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n & (request.contract_address.eq(self.contract_address))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequestContext {\n fn empty() -> Self {\n NullifierKeyValidationRequestContext {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n self.contract_address.to_field(),\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH> for NullifierKeyValidationRequestContext {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n contract_address: AztecAddress::from_field(fields[3]),\n }\n }\n}\n\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_key_validation_request.nr"},"195":{"source":"use crate::{\n abis::{\n call_context::CallContext, max_block_number::MaxBlockNumber, gas_settings::GasSettings,\n nullifier_key_validation_request::NullifierKeyValidationRequest, note_hash::NoteHash,\n nullifier::Nullifier, read_request::ReadRequest, side_effect::SideEffect\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_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\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\n max_block_number: MaxBlockNumber,\n\n note_hash_read_requests: [SideEffect; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest; MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_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_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_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 encrypted_logs_hashes: [SideEffect; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\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.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.nullifier_key_validation_requests == other.nullifier_key_validation_requests) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_stack_hashes == other.private_call_stack_hashes) &\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.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n (self.encrypted_log_preimages_length == other.encrypted_log_preimages_length) &\n (self.unencrypted_log_preimages_length == other.unencrypted_log_preimages_length) &\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\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.nullifier_key_validation_requests.len() {\n fields.extend_from_array(self.nullifier_key_validation_requests[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 fields.extend_from_array(self.private_call_stack_hashes);\n fields.extend_from_array(self.public_call_stack_hashes);\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.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.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\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 max_block_number: reader.read_struct(MaxBlockNumber::deserialize),\n note_hash_read_requests: reader.read_struct_array(SideEffect::deserialize, [SideEffect::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_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_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_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_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 encrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\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 max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: [SideEffect::empty(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n nullifier_read_requests: [ReadRequest::empty(); MAX_NULLIFIER_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_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_stack_hashes: [0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_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 encrypted_logs_hashes: [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\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 = 0x29129c06414f4ac73bf889692c7011f91727d4cdbfe4fe143e6adee69b565cc8;\n assert_eq(hash, test_data_empty_hash);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/private_circuit_public_inputs.nr"},"196":{"source":"use crate::{\n abis::side_effect::{Ordered, OrderedValue}, address::AztecAddress, constants::NULLIFIER_LENGTH,\n traits::{Empty, Hash, Serialize, Deserialize}\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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr"},"198":{"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 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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/max_block_number.nr"},"199":{"source":"use crate::{\n address::AztecAddress, constants::GENERATOR_INDEX__SIDE_EFFECT,\n traits::{Empty, Hash, Serialize, Deserialize}, constants::SIDE_EFFECT_LENGTH\n};\nuse dep::std::cmp::Eq;\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\ntrait OrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n}\n\ntrait ContractScopedOrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n fn contract_address(self) -> AztecAddress;\n}\n\nstruct SideEffect {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for SideEffect {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn serialize(self) -> [Field; SIDE_EFFECT_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn deserialize(values: [Field; SIDE_EFFECT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/side_effect.nr"},"201":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/gas_fees.nr"},"203":{"source":"use crate::{\n abis::{\n call_context::CallContext, note_hash::NoteHash, nullifier::Nullifier, read_request::ReadRequest,\n side_effect::SideEffect, gas::Gas, global_variables::GlobalVariables\n},\n address::AztecAddress,\n constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_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 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 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: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\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_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_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.push(self.unencrypted_log_preimages_length);\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 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 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(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n unencrypted_log_preimages_length: reader.read(),\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 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 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: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\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 = 0x1a2da219bb2e3ac24519fd844365c4f656fc3ba8c58f2960706d25bceb4d1769;\n assert_eq(hash, test_data_empty_hash);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/public_circuit_public_inputs.nr"},"204":{"source":"use dep::std::cmp::Eq;\n\nstruct 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: u64 = 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}","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr"},"207":{"source":"use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\npub fn compute_tx_logs_hash<MAX_ENCRYPTED_LOGS_PER_TX>(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // TODO(Miranda): Below is flat hashing which would reduce constraints (we now only hash once in tail) - convert to this?\n\n // // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n // // Ideally we would define a new global here but for now we assert in case MAX_LOGS changes\n // assert(MAX_ENCRYPTED_LOGS_PER_TX * 32 == 256);\n // let mut hash_input_flattened = [0; 256];\n // for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n // let input_as_bytes = logs[offset].value.to_be_bytes(32);\n // for byte_index in 0..32 {\n // hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n // }\n // }\n // // This differs from accumulate_sha256 as we could increase MAX_LOGS and\n // // ideally we would push to a slice then hash, but in practice compilation was very slow\n // // Hardcode to 256 bytes for now\n // sha256_to_field(hash_input_flattened)\n\n // Assuming logs are pre-sorted\n let mut accumulated_logs_hash = 0;\n for i in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n if !is_empty(logs[i]) {\n accumulated_logs_hash = accumulate_sha256([accumulated_logs_hash, logs[i].value]);\n }\n }\n\n accumulated_logs_hash\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr"},"208":{"source":"use crate::{\n constants::CONTENT_COMMITMENT_LENGTH, traits::{Deserialize, Empty, Hash, Serialize},\n utils::arr_copy_slice\n};\n\nstruct ContentCommitment {\n tx_tree_height: 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.tx_tree_height);\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 tx_tree_height = 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 tx_tree_height,\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 tx_tree_height: 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.tx_tree_height == other.tx_tree_height)\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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/content_commitment.nr"},"214":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/transaction/tx_context.nr"},"217":{"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","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/state_reference.nr"},"218":{"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: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n","path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.nr"},"323":{"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: pub AppPayload) {\n app_payload.execute_calls(&mut context);\n }\n}\n","path":"/usr/src/noir-projects/noir-contracts/contracts/multi_call_entrypoint_contract/src/main.nr"}}}
|
|
1
|
+
{"transpiled":true,"noir_version":"0.29.0+5b9b1fab51e35c2112c0136785b5b69cd8529a92","name":"MultiCallEntrypoint","functions":[{"name":"compute_note_hash_and_nullifier","is_unconstrained":true,"custom_attributes":[],"abi":{"error_types":{},"param_witnesses":{"contract_address":[{"end":1,"start":0}],"nonce":[{"end":2,"start":1}],"note_type_id":[{"end":4,"start":3}],"serialized_note":[],"storage_slot":[{"end":3,"start":2}]},"parameters":[{"name":"contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"},"visibility":"private"},{"name":"nonce","type":{"kind":"field"},"visibility":"private"},{"name":"storage_slot","type":{"kind":"field"},"visibility":"private"},{"name":"note_type_id","type":{"kind":"field"},"visibility":"private"},{"name":"serialized_note","type":{"kind":"array","length":0,"type":{"kind":"field"}},"visibility":"private"}],"return_type":{"abi_type":{"kind":"array","length":4,"type":{"kind":"field"}},"visibility":"public"},"return_witnesses":[4,5,6,7]},"bytecode":"H4sIAAAAAAAA/+2byW7bMBCGJa9yVC+SZXlf4uTSm+w6tnPzy7Rv3XuBvkPRjMKpx8QkoNARIQImYGhMUfy/+blECRjfey/tt4+v4qZ2pQXbXNQ1+7+yE+wrK5PTd4Sz5ghnXZDTZzjh2lAxXGEut7zbef6vXAQnCRWlUDAwdVL3EdzNQ1BaKgg04IsE9CE7twgNhYYSKnB6MySJ+KQOn62ROtxB6o1rDi35HA4BMU+s37cBDb2r7y3iCcZ4D7RnpK5RUo5N+RzL8i5flehPU/XbJt/Rq46KBXfYHdX21adDND01RhhPSVtsh37UyBhD6XrX8e988lxDe65H2rSY/C+ebP5tjaetMTcVE5QIeLU9oKSxyaDfB/l+b8a8oY3JA8mpK+73/gx7QujdFv2nzIXEXcLzRZwn25WT5/vY9Qi7TL8vB/Cqr3kVal71SBvK0C/BP5/oYt/4vc9oy3lxPIP2wMCLAcMzsOzFgNEW9OIVtCMDLyKGJ7LsRcRoy3lx+gbasYEXMcMTW/YiZrTlvNjn7xZDAy+GDM/QshdDRltwjeTzIjHwImF4EsteJIy2oBc/QHtk4MWI4RlZ9mLEaAt68R20UwMvUoYntexFymgL7p35+8XYwIsxwzO27MWY0Rb0Yg/aEwMvJgzPxLIXE0ZbcI3k2lMDL6YMz9SyF/R31CLMQweZUweZ4wowB1oso33M98+ZgRczhmdm2QvUK8qcVIA50GIZ7eMLaM8NvJgzPHPLXqBeUebIQebYQeaRg8yJg8ypg8xVmM+BFston/I9dGHgxYLhWVj2AvWKMkcOMs8cZI4rwBxosYz2Kf/b3NLAiyXDs7TsBeoVZR47yDyoAHOgxTLapyNorwy8WDE8K8teoF5R5omDzKmDzDMHmWMHmUcOMicOMt/XoB3mqALM9EzT71J59q+hxoOeeRqjpzGGJKbnYNbijFlGx2dNtDbyWjtuvuD3Tana+zP0u5XPKX+Xf1J94Rm+LZPTs4qlz3M9kX59ooP1DRL/Im2xHfqB6xbZYd49qvj5k+dW2nM90uaRyf/iyea/1Xi2GjOMyU/CsRHn2J9N5vXAu67lr4SnhH3wQM/kYjHZd0raY3Yl5ZnRM3x/PNk1vdG8CjSveqQN3aM3JfhnMr/uzHfmj5jp+0RA6vD+mtTVtFzo/zJgezgz/BdsuDj5FjUAAA==","debug_symbols":"ndpBattQGIXRvWgciu8v6ekpWymlOIlTDMYOsVMoJnuv3dIF9Mz0JN3ZNzq86/Cye/r48X1/fD2dh8ev1+Fwet5e9qfj7XQdNl+q/Xl7ftse7y/Ol+37ZXgcKw/D7vhyf2qfD8Pr/rC7P/fPbw/30SKjLqMVRuNGRpFRyWiU0SSjWUZSxChFjFLEKEVMUsQkRUxSxCRFTFLEJEVMUsQkRUxSxCRFzFLELEXMUsQsRcxSxCxFzFLELEXMUsQsRTQpokkRTYpoUkSTIpoU0aSIJkU0KaJJEYsUsUgRixSxSBGLFLFIEYsUsUgRixSxSBFdiuhSRJciuhTRpYguRXQpoksRXYroUsQqRaxSxCpFrFLEKkWsUsQqRaxSxCpFrFJENhtahVZFq5FWE61mWjVaLbTqtKI2Qm2E2gi1EWoj1EaojVAboTZCbYTaKGqjqI2iNoraKGqjqA3izJBnhkAzJJoh0gyZZgg1Q6oZYs2Qa4ZgMySbIdoM2WYIN0O6GeLNkG+GgDMknCHiDBlnCDlDyhlizpBzhqAzJJ0h6gxZZwg7Q9oZ4s6Qd4bAMySeIfIMmWcIPUPqGWLPkHuG4DMknyH6DNlnCD9D+hniz5B/hgA0JKAhAg0ZaAhBQwoaYtCQg4YgNCShIQoNWWgIQ0MaGuLQkIeGQDQkoiESDZloCEVDKhpi0ZCLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYsWuWiRixa5aJGLFrlokYuWXfO0e5520ZNctMhFi1y0yEWLXLT+20Vvp5/b9/326bC73+y9f/w4Pv+76Hs7Xn69/f1y+/c3"},{"name":"entrypoint","is_unconstrained":false,"custom_attributes":["aztec(private)"],"abi":{"error_types":{},"param_witnesses":{"app_payload":[{"end":55,"start":38}],"inputs":[{"end":38,"start":0}]},"parameters":[{"name":"inputs","type":{"fields":[{"name":"call_context","type":{"fields":[{"name":"msg_sender","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"storage_contract_address","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"function_selector","type":{"fields":[{"name":"inner","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::function_selector::FunctionSelector"}},{"name":"is_delegate_call","type":{"kind":"boolean"}},{"name":"is_static_call","type":{"kind":"boolean"}},{"name":"side_effect_counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::call_context::CallContext"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"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"}}],"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":32,"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":2,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::read_request::ReadRequest"}}},{"name":"nullifier_key_validation_requests","type":{"kind":"array","length":1,"type":{"fields":[{"name":"master_nullifier_public_key","type":{"fields":[{"name":"x","type":{"kind":"field"}},{"name":"y","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint"}},{"name":"app_nullifier_secret_key","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest"}}},{"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_stack_hashes","type":{"kind":"array","length":4,"type":{"kind":"field"}}},{"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":"encrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect"}}},{"name":"unencrypted_logs_hashes","type":{"kind":"array","length":4,"type":{"fields":[{"name":"value","type":{"kind":"field"}},{"name":"counter","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::side_effect::SideEffect"}}},{"name":"encrypted_log_preimages_length","type":{"kind":"field"}},{"name":"unencrypted_log_preimages_length","type":{"kind":"field"}},{"name":"historical_header","type":{"fields":[{"name":"last_archive","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"content_commitment","type":{"fields":[{"name":"tx_tree_height","type":{"kind":"field"}},{"name":"txs_effects_hash","type":{"kind":"field"}},{"name":"in_hash","type":{"kind":"field"}},{"name":"out_hash","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::content_commitment::ContentCommitment"}},{"name":"state","type":{"fields":[{"name":"l1_to_l2_message_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"partial","type":{"fields":[{"name":"note_hash_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"nullifier_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}},{"name":"public_data_tree","type":{"fields":[{"name":"root","type":{"kind":"field"}},{"name":"next_available_leaf_index","type":{"kind":"integer","sign":"unsigned","width":32}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot"}}],"kind":"struct","path":"authwit::aztec::protocol_types::partial_state_reference::PartialStateReference"}}],"kind":"struct","path":"authwit::aztec::protocol_types::state_reference::StateReference"}},{"name":"global_variables","type":{"fields":[{"name":"chain_id","type":{"kind":"field"}},{"name":"version","type":{"kind":"field"}},{"name":"block_number","type":{"kind":"field"}},{"name":"timestamp","type":{"kind":"integer","sign":"unsigned","width":64}},{"name":"coinbase","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::eth_address::EthAddress"}},{"name":"fee_recipient","type":{"fields":[{"name":"inner","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::address::aztec_address::AztecAddress"}},{"name":"gas_fees","type":{"fields":[{"name":"fee_per_da_gas","type":{"kind":"field"}},{"name":"fee_per_l2_gas","type":{"kind":"field"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::gas_fees::GasFees"}}],"kind":"struct","path":"authwit::aztec::protocol_types::abis::global_variables::GlobalVariables"}}],"kind":"struct","path":"authwit::aztec::protocol_types::header::Header"}},{"name":"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"},"return_witnesses":[1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768,1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800,1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856,1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872,1873,1874,1875,1876,1877,1878,1879,1880,1881,1882,1883,1884,1885,1886,1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902,1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997]},"bytecode":"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","debug_symbols":"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uLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW4s6kadzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW4s6kadzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTde5sqs6dTdW5s6k6dzZV36inbufOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpwsYdTnWrn3ru3uqnHry3+qkn761+6tF7q5969t7qpx6+t/qpp++tfurxe6uffP5yx1Td6iefv9xBVbf6yecvd1TVrX7y+csdVnWrn3z+csdV3eonn7/cgVW36sjnL3dk1a068vnLHVp1q458/nLHVt2qI5+/3MFVt+rI5y93dNWtfvL5yx1edauffP5yx1fd6iefv9wBVrf6yecvd4TVrX7y+csdYnWrn3z+csdY3eonn7/cQVa3+snnL3eU1a1+8vnLHWZ1q598/nLHWd3qJ5+/3IFWt/rJ5y93pNWtfvL5yx1qdauffP5yx1rd6iefv9zBVrf6yecvd7TVrX7y+csdbnWrn3z+csdb3eonn7/cAVe3+snnL3fE1a1+8vnLHXJ1q598/nLHXN3qJ5+/3EFXt/rJ5y931NWtfvL5yx12dauffP5yx13d6iefv9yBV7f6yecvd+TVrX7y+csdenWrn3z+csde3eonn7/cwVe3+snnL3f01a1+8vnLHX51q598/nLHX93q556/gTz/KpDnXwXy/KtAnn8VNu75G8jzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrSJ5/FcnzryJ5/lUkz7+KG/f8jeT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief7VTp5/tZPnX+3k+Vc7ef7VvnHP3508/2onz7/ayfOvdvL8q508/2onz7/ayfOvdvL8q508/2onz7/ayfOvdvL8q508/2onz7/ayfOvdvL8q508/2onz7/ayfOvdvL8q508/2onz7/ayfOvdvL8q508/2onz7/ayfOv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zqYZMj5n0wwZn+8zM2R8vs9MkMHOr38bmbz3vz6b8+DbO9hZ95eS8fk+M0PG5/vMDJkkMgMyPjXwDBmfGniGjE8NPEPGpwaeIeNTA0+Qwd47cCkZaeARGWngEZmFNPBP/uR6fweuH7aVvnxbEHtPwqVkFtLAxmQW0sDGZBbSwMZkFtLAxmQW0sC2ZLD3RZxB5nVXwQcyC2lgYzILaWBjMj418EtixouT+EgmicyAjE8NPEPGpwaeIeNTA8+Q8amBZ8j41MDHZCr2no8zyAxyrir2TpBLyfjUwDNkPGjgZ7fJVbfQWrXsjw/X13+dX3bbHymavb6SSS/dQutP826hNaV5t9A60bxbaO1n3S32vhPzbqE1mnm30LrLvFtoLWXebXLVrSsthb3vxLxbV1oKe9+JebeutBT2vhPzbl1pKex9J+bdutJS2PtOzLt1paWwd6OYd+tKS2HvUTHv1pWWwt6NYt6tKy2FvcPEvFtXWgp714h5t660FPZOEPNuXWkp7N0d5t260lLYOzbMu3WlpbB3YZh360pLYe+sMO/WlZbC3i1h3q0rLYW9A8K8W1daCntXg3m3rrQU9k4F825daSns3Qfm3brSUtg7Csy7daWlsistlV1pKew9EebdutJSxZWWKq60FPauDvNuXWkp7J0a5t260lLYuy/Mu3WlpbB3VJh360pLYe+SMO/WlZbC3vlg3q0rLYW9m8G8W1daCnuHgnm3rrQU9q4D825daSnsnQTm3brSUti7A8y7daWlsDP+zbt1paWws/jNu3WlpbAz8827daWlsLPtzbt1paWwM+jNu3WlpbCz4s27daWlsDPdzbv1pKUadva6ebeetFTDzkg379aTlmpbctWtJy3VXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWeN1e5581V7nlzlXveXOWe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yVm/0BroDf1CK6Y39OtMX2HnEr+hX1/6asfOJX5Dv7701Y6dS/yGfn3pq31Lzvr1pa927FziN/TrS1/t2LnEb+jXmb7CziV+Q7/O9BV2LvEb+nWmr7Bzid/QrzN9hZ1L/IZ+nekr7FziN/TrTF9h5xK/oV9n+go7l/gN/TrTV9i5xG/o15m+ws4lfkO/zvQVdi7xG/p1pq+wc4nf0K8zfYWdS/yGfp3pK+xc4jf060xfYecSv6FfZ/oKO5f4Df0601fYucRv6NeZvsLOJX5Dv870FXYu8Rv6daavsHOJ39CvM32FnUv8hn6d6SvsXOI39OtMX2HnEr+hX2f6CjuX+A39OtNX2LnEb+jXmb7CziV+Q7/O9BV2LvEb+nWmr7Bzid/QrzN9hZ1L/IZ+nemr4kxfFWf6qjjTV9g52/b9Yidtv6FfZ/qqOtNX2Fnqb+g3OevXmb7CTlR/Q7/O9BV2qvob+nWmr7CT1d/QrzN9hZ2u/oZ+nekr7IT1N/TrTF9hJ7K/oV9n+spZfvvuLL99d5bfvjvLb9+d5bfvzvLbd2f57buz/PbdWX777iy/fXeW3747y29PzvLbk7P89uQsvz05y29PW3LWry99lZzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3JWX57cpbfnpzltydn+e3ZWX573taZR63f223945/87HadaTTT7Tp3VQ/hrw/3uA26Xeemmuh2oRzkmW7XcYEz3a7jAWe6XccBznS7zryd6XadeTvT7Treb6bbdZzfTLeutNRCqccT3dJmHj87YNVHzw6gNc/eHx2kEg7+xeX9/uGc8+BfHLTmMe82ueoWWvOYdwutecy7hdY85t1Cax7zbqE1j3W32DnE5t1C6yPzbl1pKewEYvNuk6tuXWkp7Oxh825daSns3GHzbl1pKezMYfNuXWkp7Lxh825daSnsrGHzbl1pKeycYfNuXWkp7Ixh825daSnsfGHzbl1pKexsYfNuXWkp7Fxh825daSnsTGHzbl1pKew8YetusdNXf9RtKvff/09l8Pv/2Nmr5t2uc0uldv+dtdQHv7OGnctp3u06t9RMt+s4volusRM5zbtdx/HNdOvK8WFncZp3m1x168rxYadwmnfryvFhJ3Cad+vq9Rw7fdO8W1ev59jJm+bdutJS2Kmb5t2yaqlnB6z66NkBtObJ291attubrcG/OGjNY94ttOax7hY7EdO8W2jNY94ttOYx7xZa85h3m1x1C615zLuF1kfm3brSUtgJmObdetJSBTv90rxbT1qqbJ60VNk8aamyJVfdetJSZfOkpcrmSUsV7IRe825daSnshF7zbl1pKeyEXvNuXWkp7IRe825daSnshF7zbl1pKeyEXvNuXWkp7IRe825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pKezkX/NuXWkp7ORf825daSns5F/zbl1pqeJKSxVXWgo7w9q8W1daqiRX3brSUtj55ObdutJS2Pnk5t260lLY+eTm3brSUtipzj/q9nhDRsFOdTbvdp1b6jhpv2An/5p3u84tNdPtOo5vptt1HN9Mt8lVt64cH3ZKsHm3rhyfq0Th4ipRuLhKFC6uEoWLq0Th4ipRuLhKFC6uEoWLq0ThQpso/OyAVR89O4DWPGW719FK3A7+xY3/5Hu3FTv517xbaM3zo25jfJSR8qBbaM1j3i205jHvNrnqFlrzmHcLrXnMu4XWPD/rNt9/OhVrGHQLrY/Mu11HS010i538a97tQlpqotuFtNREtwtpqYluk6tusbVUvv/JrZb9oNsQ4/1JJbzqi9DqS7/Yasq+X2w9Zd8vtqKy7xdbU5n3i50B/IZ+sXWVfb/Yysq+X2xtZd9vctavM32FnQf8hn6d6SvsTOA39OtMX2HnAr+hX2f6Cjsb+A39OtNX2PnAb+jXmb7Czgh+Q7/O9BV2TvAb+nWmr7Czgt/QrzN9hZ0X/IZ+nekr7MzgN/TrTF9h5wa/oV9n+go7O/gN/TrTV9j5wW/o15m+ws4QfkO/zvQVdo7wG/p1pq+ws4Tf0K8zfYWdJ/yGfp3pK+xM4Tf0u848av3+28CtD74RiZ3Fat7tOndVD/evMve4Dbpd56aa6BY7r9O823Vc4Ey363jAmW7XcYAz3a4zb2e6XWfeznS7jveb6XYd5zfTrSsthZ0qbN0tdqrwN90+O2DVR88OoDVP29K9gxbqwb+4iWQe7PRf826Tq26hNc+Pup3IM8FO/zXvFlrzmHcLrXnMu4XWPNbdYqf/mncLrY/Mu11HS00kfGCn/5p3m1x1u5CWmuh2IS010e1CWmqi24W01ES3NFoqpi/fIxp2UvBUBzSaZ9gBto4pj1et27PWr98NGnair3m3aZlujxV5w070Ne8WW8dYd4utY6y7xdYx1t1i6xjjbrETfX/W7aFGbdiJvubdrqOlZrpdR0vNdJtcdbuQlprodiEtNdEtjZZqX/8eQ8PO553qgEbzjDrAztDt8f7hvsVw8N9MKI93kvAhD72kl36hlcwb+oXWMm/oF1rNvKHf5KxfaEXzhn6hNc0b+oVWNW/oF1oDvaFfaMVk3y92hu4b+nWmr7AzdN/QrzN9hZ2h+4Z+nekr7AzdN/TrTF9hZ+i+oV9n+go7Q/cN/TrTV9gZum/o15m+ws7QfUO/zvQVdobuG/p1pq+wM3Tf0K8zfYWdofuGfp3pK+wM3Tf060xfYWfovqFfZ/oKO0P3Df0601fYGbpv6NeZvsLO0H1Dv870VXGmr4ozfYWdCf2Gfp3pq+JMXxVn+go79/sN/TrTV9jZ32/o15m+ws7/fkO/zvQVdnLyj/o93kLRsJOTrbvFTuL9UbfHyckNO7XXvNt17qmZbpOrbtfxgDPdruMAZ7pdZ97OdLvOvJ3pdh3vN9EtdmqvebeutBR2aq95t6xa6tlBou8AWfP0rTw6CMe7Lmd8N3S+7jv6RdY97+gXWfm8o19k7WPfb4fO5H1Hv8j65x39Iiugd/SLrIHe0W9y1q8vfdWhc3/f0a8vfdWhs3/f0a8zfQWd//uOfp3pK+gM4Hf060xfQecAv6NfZ/oKOgv4Hf0601fQ2cHv6NeZvoLOJX5Hv870FXQu8Tv6daavoHOJ39GvM30FnUv8jn6d6SvoXOJ39OtMX0HnEr+jX2f6CjqX+B39OtNX0LnE7+jXmb6CziV+R7/O9BV0LvE7+nWmr6Bzid/RrzN9BZ1L/I5+nekr6Fzid/TrTF9B5xK/o19n+go6l/gN/ULnuP6s3+PkgA6d4mrf7Tp31fG33Tp0wqd9t+vcUzPdruMCJ7qFzva073YdBzjT7TrzdqbbdebtTLfJVbfrOL+Zbl1pKeg0T/tuWbXUswNWffToADpv8/Yvpz/+EcV48C9u/Cc/u4XWPObdQmse826hNc+Puo3xUUbKg26Tq26hNY95t9Cax7xbaM1j3i205jHvFlofWXfb1tFSMd9fuWMNg27X0VIz3a6jpWa6XUhLTXSbXHW7kJaa6HYhLTXRLbaWqo/3iNiO3o8mHB90GrB9t9ha6ifdTmgp6DRg+26xtZR1t9hayrpbbC1l3W1y1S22lvpRt8fqAjtj2LzbdbTUTLfraKmZbhfSUkfd7ht2trB5twtpqYluobXUHsq92z3ng25zvJvhvL98tpWXbqG1lHm3aZlua4iPPzkf/MmHXvhGBlp3XUoGWqNdSgZaz11KBlr7XUoGWideSQY7T/lSMtD681Iy62hVazLr6FprMklkBmSkgUdkpIFHZKSBR2SkgUdkpIEHZLAzry8lIw08IiMNPCIjDTwik0RmQEYaeERGGnhERhp4REYaeERGGnhABjuX/FIy0sAjMtLAIzLSwCMySWQGZKSBR2SkgUdkpIFHZKSBR2SkgQdksLPjLyUjDTwiIw08IiMNPCKTRGZARhp4REYaeERGGnhERhp4REYaeEAmSwOPyEgDj8hIA4/ISAOPyCSRGZCRBh6RkQYekZEGHpGRBh6RkQYekMHeH3MpGWngERlp4BEZaeARmSQyAzLSwCMy0sAjMtLAIzLSwCMy0sADMtj7hC4lIw08IiMNPCIjDTwik0RmQEYaeERGGnhERhp4REYaeERGGnhABnsP1KVkpIFHZKSBR2SkgUdkksgMyEgDj8hIA4/ISAOPyEgDj8hIAw/IYO/vupSMNPCIjDTwiIw08IhMEpkBGWngERlp4BEZaeARGWngERlp4K/JBOy9a5eSkQYekZEGHpGRBh6RSSIzICMNPCIjDTwiIw08IiMNPCIjDTwgoz1xQzLSwCMy0sAjMj6ndir3PdipjMj4nNoTZJxuKUot3Mn0bUDG5w08Q8bnDTxDxucrxAyZJDIDMj5fIWbI+NQzee9/fTbnPCDjU8/MkPH5CjFDxucrxAQZp1uKZsj41MAzZHxq4BkyPjXwDJkkMgMyPjXwDBlp4BEZaeARGWngERlp4AEZp1uKZshIA4/ISAOPyEgDj8ikdcj84E8OudyfO2//57PmuL2yWUgFm7NZSAebs1lICZuzWUgLm7NZSA3/iE2/j6lQ6kc2X8y0+JhpL/MvtPLkuNJ2o0s5LqS0L+W4kC6/lONCKv5SjkkcTTh69QfWHL16CWuOXn2HNUevHsWao/yMCceVNlVdylF+xoaj/IwNR/kZG45JHE04ys/YcJSfseEoP2PDUX7GhqP8jAnHlbaOXcpR+nGC4/bgGNqAYxJHE46a1zb/XWte23DUvDbhuNKGpEs56v3RhqPeH/+d45ONNOGYTRKbIRunb3+lP34vs+4jNk7f86bYONX8U2yc6vgpNk61+QyblbYxmbNxqqFrvUcH3mRM+MDmjzT0StubLuXoVG+bc0ziaMLRqY435+hU85tzdOoPzDk69RLmHJ36DmOOcaVtWZdylJ+x4Sg/Y8NRfsaGYxJHE47yMzYc5WdsOMrP2HCUn7HhKD9jwnGlzWeXcpSfseEoP2PDUX7GhmMSRxOO8jM2HOVnbDjKz9hwlJ+x4Sg/Y8JxpT2il3JM4njM8fC7gXGlrYqXctScsfnvWnPGhONKu/ou5ah3MxuOejez4ah3s3/n+GSTxGbIRjpvzMbpm1Ur24NNTwM2Tt+hptg41fxTbJzq+Bk2K+0QNGfjVG9PsXGqoXtM9w5vzX5g84WGLvcP55Ze+qsvHJ1qaHOOSRxNODrV5uYcnep4c45ONb85R6f+wJyjUy9hzdHr/kVzjk49ijlH+RkbjvIzNhyTOJpwlJ+x4Sg/Y8NRfsaGo/yMDUf5GROOXvcvmnOUn7HhKD9jw1F+xoZjEkcTjvIzNhzlZ2w4ys/YcJSfseEoP2PC0ev+RXOO8jM2HOVnbDjKz9hwTOJowlF+xoaj/IwNR/kZG47yMzYc5WdMOHrdT2vOUX7GhqP8jA1H+RkbjkkcTTjKz9hwlJ+x4Sg/Y8LR607Rn3E8zibzulPUnKPmzATH4wwjrzsczTlqzthw1LuZDUe9m1lw3L3ucPyG45ONNOGYjXTemI3PN6u4bfc/OW77iE0SmyEbn5p/jo1PHT/Hxqc2n2PjU2/PsfGpoeNW273mkOIHNn/ydrg73Rtoz9Gn3rbn6FOb23P0quOtOSZxNOHo1R9Yc/TqJaw5evUd1hy9ehRrjvIzJhyd7g205yg/Y8NRfsaGo/yMDcckjiYc5WdsOMrP2HCUn7HhKD9jw1F+xoSj0/209hzlZ2w4ys/YcJSfseGYxNGEo/yMDUf5GRuO8jM2HOVnbDjKz5hwdLrT156j/IwNR/kZG47yMzYckziacJSfseEoP2PDUX7GhqP8jA1H+RkTjk53BdtzlJ+x4Sg/Y8NRfsaGYxJHE47SPRMcD7PJdqc7Rc05Ot3h+EOOxxlGTnc42nPUnLHhqHczG456N7PhqHezf+f4ZCNNOGbjVOeF9mATUzr87y9+9d/fq+9wumvRnqPT9y1zjk59hzlHp77DnGMSRxOOTn2HOUenvuNnHJ/vrbUOODr1HeYcnXoUc47yMyYcne5atOcoP2PDUX7GhqP8zI84jn7O7HTXoj1H+Rkbjk79THy+ce8vXu9rjm0Lf324hReOvb9wdOpnzDk69TPmHJ36GWuO3amfMefo1M+Yc3TqZ37GMd11T8t1wNGpnzHnmMTRhKNTP2POUX7GhqP8jA1H+ZkJjo8Ptx4GHOVnLDgmpzt97TnKz9hwlJ+x4Sg/Y8MxiaMJR/mZY4493BvssQw4ys/YcJSfseEoP2PDUX7GhKPX/crmHOVnbDg69TN7fuyUv70dHnAMoTx4hPLkEUN8IenU0byBZBJJI5JOXc0bSDr1NT8jGcP9BwwhtvqB5OdPH3/bP3ndynwxdaee6WLqTh3WtdS97oe+mLpT93YxdXm9K6jLF15BPYn6BdTlN6+gLm96BXV50yuoy5teQV3e9ALqXnd9X0xd3vQK6vKmV1CXN72CehL1C6jLm15BXd70CuryphdQ97rL+p3UDzfPJK+bry+mnkT9ghtGGuYK6tIwV1CXhrmCut7Xr6Cu9/XfUX+Q9Lp/+Q0kpautSOpte4Lkvt0/HfY0Iqn3aiuSSSSNSMqTWZGUz7IiKe9kRVJ+aIZkvVuccFPgH0h+8emaHtxb2l/+7PTCXY7oEu5F/uka7nJb13CXN7uGu5zcNdyTuF/CXS7xGu7ylNdwlwO9hrv86jXc5Vcv4V7lV6/hLr96DXf51Wu4y69ewz2J+yXc5Vev4S6/eg13+dVruMuvXsNdfvUS7k1+9Rru8qvXcJdfvYa7/Oo13JO4X8JdfvUa7vKr13CXX72Gu/zqNdzlVy/h3uVXr+Euv3oNd/nVa7jLr17DPYn7JdzlV6/hLh1pzf04LSxvUpFXUNdMNad+mOWTN03UK6hrnl5BXa+/V1DX2+8V1PXy+zvqT5LS4EYkg3T1BMkc7h2GXNvhTRC/uglqfaGut9krqOtl9grq8pBXUE+ifgF1ecgrqMtDXkFdHtKcerlHAedaB9TlIa+gLr95AfUob3oFdXnTK6jLm15BXd70CupJ1N9HvaUBdXnTK6jLm15BXd50gnrZwp1HyeGAesjpsacm59c/O71wlzu9hrv86SXcdznUa7jLo17DXS71Gu7yqfbcc39qzjjgnsT9Eu7yqtdwl1u9hrv86jXc5Vev4S6/as499e3BvX3UkX/0hpbkbfHPSD4Y/4zkmc3PqNTnp1+4f5gxSZ75Gu5J3C/hLs98DXd55mu4yzNfw12e+Rru8sz23Nsj76f0/jX3LB98DXd522u4y69ew11+9RruSdwv4S6/eg13+VV77uFBr4aP+v2P3oyzvC3+GckH45+RPLP5GbVHIaGFrzNyc5Fnvoa7PPM13OWZr+Euz3wN9yTul3CXZ76GuzyzPfeQH9xf6H3kLh98DXd522u4y69ewr3Kr17DXX71Gu7yq9dwl1815/7Nzq4/ejOuSWcEf0bywfhn5NQzp8cimJhaPDyj8Pi2ZEkvHf7jBD7/2fk+YmINH+p4UnfqmC+m7tQvX0zdqVu+lnpz6pXNqD9JOnW/byDp1M++gaRTh/oGkkkkjUg6dXtvIClPZkVSPsuKpLzTDMl+X8gU6pY/kPyijtzudfSX36J9FfGyTudD73JO1tBjfOBI+Wu/2uWyrqAuR3YFdbm3K6gnUb+AulzhFdTlIM2pH7+5d7nNK6jLmU5Qr7E9qKfwe5MkZ3o69LLJmVpDP56lZZMzvYK6nOkV1OVMr6CeRP0C6nKmV1CXMzWnfuiRyiZnegV1OdMZ6uXx0+fa4u9Nkpzp+dCDnKk19IlZGuRMr6AuZ3oFdTnTK6gnUb+AupzpFdTlTM2pH3ukIGd6BXU50wnqbXvwaHH7vUmSMz0fepQztYY+MUujnOkV1OVMr6AuZ3oF9STqF1CXM72CupypOfVjjxTlTK+gLmf6U+r1A/UnSdlNI5K7PKQVSfnCGZI1PUi2+vffPoHssoUXQJcrtIY+oZT3JOoXUJcrvIK6XOEV1OUKr6AuV3gFdTlIc+rHLyBJbvMK6nKmM9RzeFJvB9T7fv+je3nZcr63PzJUSS4W/IDkeMEPKOmAsA9IPhr8gGS5wQ9I7hz8gGTkwQ9Inh/7gLKeB8APSC8J4Aekl4SJA+rpEdPY869T1UvW68AF0JOgG0Of+LFJlo2/grq8+RXUZbivoC4XfQV1WeMLqBf5XXPqxz8OLzKxV1CXM72CuqzpFdSTqE9Qb/c/+vaBo6/XfffpJ3e502u4y59ac68hPurIB3WMa36ekLws+gnJ96KfkDwy+AlV+Wn0E5L3Rj8h+XT0E5KnRz+hpBMCPyG9FKCfkN4U0E9IbwroJ6Q3BfQT0psC+Ak1vSmgn5DeFNBPSG8K6CekNwX0E0o6IfAT0psC+gnpTQH9hPSmgH5CelNAPyG9KYCfUNebAvoJ6U0B/YT0poB+QnpTQD+hpBMCPyH5oStPKJX7d31SGZ2Q/BD2CdVNWu7SE2r3NKTUt8EJScuhn5C0HPoJJZ0Q+Anp50PoJ6SfD6GfkPzQlSeUH2GVOefBCckPoZ+Qfj4EfkJBPx9CPyG9KaCfkN4U0E9IbwroJ5R0QuAnpDcF9BPSmwL6CelNAf2E9KaAfkJ6UwA/oag3BfMT+kmHj4jZDwmze385Ib0poJ+Q3hTQT0hvCugnlHRC4CekNwX0E9KbAvoJ6U3h0hPKd9C9boMT0psC+gnpTQH8hHa9KaCfkN4U0E9IbwroJ6Q3BfQTSjqh007oSV3vBFdQl/e/grr8/BXU5dGvoC7ffQH1JC99BXUP/vjZrQev+ezWg297dptcdevBezy79aD5n9160NrPbrE17uMr2bcfeu4H3YZ8LyPkNOgWW1sad5uxNd1PurXNNasZW3ddSQZbo11JBlvPXUkmicyADLZOvJIMtqa8kgy2/rySzDpa1ZrMOrrWmEyRBh6RkQYekZEGHpGRBh6RSSIzICMNPCIjDTwiIw08IiMNPCIjDTwgU6WBR2SkgUdkpIFHZKSBR2SSyAzISAOPyEgDj8hIA4/ISAOPyEgDD8g0aeARGWngERlp4BEZaeARmSQyAzLSwCMy0sAjMtLAIzLSwCMy0sADMl0aeERGGnhERhp4REYaeEQmicyAjDTwiIw08IiMNPCIjDTwiIw08Ndk2iYNPCIjDTwiIw08IiMNPCKTRGZARhp4REYaeETGp55JJf/12VQGZMB3NV9JxudsSo8/OPVtQMbnbJoh43M2zZDxOZtmyPh8n5kh4/N9ZoaMTz1zvCeyge+JvJKMz/eZGTI+32dmyPjUwDNkksgMyPjUwDNkfGrgGTI+NfAMGZ8aeIaMNPCADPhesyvJSAOPyEgDj8hIA4/IJJEZkJEGHpGRBh6RWUgD/+BPDjnfMYZcX9hs5asO8/3ndrGGAceFFPOlHBfS11dyBN+MxMNxIe1uxPHJZiH1bs5mIf1uziaJzZDNQhrenM1CKt6cjXT8mI20+ZiNU71dHhs0Q0nxA5s/8tErba26lKNTvf0jjjE+Gkwjjk61uTlHpzrenGMSRxOOTv2BOUenXsKco1PfYc7RqUf5Gcfj99qVdopdyXGlDWQ/4vj4il4otf3ez6y0r+xSjl79zE84TsyZlXahXcoxiaMJR69+xpqjVz9jzdGrn7Hm6NXPWHP06md+xPHYz6y0Te5SjvIzNhzlZ2w4OvUzdSv3DmveDjiGfG8w5DTgmMTRhKNTP/MjjsY5aytt46Nh7tQnXcrcqae6lLlT/3Ul85W2HtIwd+rrLmXu1ANeylx+8XzmScxPZy4fej5z+dDzmcuHns9cPvR85vKhpzNfafMoDXP50POZy4eez1w+9HzmScxPZy4fej5z+dDzmcuHns9cPvR85vKhZzPvK23/pWEuH3o+c/nQ85nLh57PPIn56czlQ89nLh96PnP50POZy4eez1w+9HTmK21tp2EuH3o+c/nQ85nLh57PPIn56czlQ89nLh96PnP50POZy4eez1w+9HTmUT70fObyoeczlw89n7l86PnMpc9tmadHyFYqI+bS56cz36VbjJk/Sk59GzCXbjmfuXTL+cylW85nnsT8dOZ6Pz+fufS5LfPjfSd9lz4/n7nez89nrvfz05kn+dDzmcuHns9cPvR85vKh5zNPYn46c/nQ85nLh57PXD70fObyoeczlw89nXmWDz2fuXzo+czlQ89nLh96PvMk5sfMf/Anx7hvTxovNZf9R3/y84TkWtFPSB4X/YTkiNFPSP75vBN6UpeDvoB6kYe+grpc9BXU5aOvoC4nfQX1JOoXUJc/voK6PO8V1OVjr6Aub2pNvT2o76F8oP5FHamlex355c8Ot//7eUZysvBnVOV7rzwj4wSAKj+90mnKp690mvL/K51m0mkudJp6r1jpNPUOstJp6n1lpdPUu81Kp6kXnoVOs+ktaKXT1FvQSqept6CVTlNvQSudZtJpLnSaegta6TT1FrTSaeotaKXT1FvQSqept6CFTrPrLWil09Rb0EqnqbeglU5Tb0ErnWbSaS50mnoLWuk09Ra00mnqLWil09Rb0DKnmbZNfpPlNA/3Ld5OU35zpdOUpqU5zaOdYrfTlKZd6TSlaVc6TWnalU5TP99c6DSDfr650mnKb7Kc5mH++e005TdXOk39fHOl00w6zYVOU29BK52m3oJWOk29Ba10mnoLWuk09Ra00GlGvQWtdJp6C1rpNPUWtNJp6i1opdNMOs0rT/MnNacH55C3lz95Ly/nqdegtc5T70FrnadehNY6T70JrXWeehVa6jx3vQutdZ56GaI8z7APzlNvQ2udp16H1jrPpPNkOc8c8uM8X0/lw3nqfWit89T70Frnqfehtc5T70Nrnafeh5Y6z6T3obXOU+9DlOf58rsMH89T70Nrnafeh9Y6z6TzhDzP5wnpxQf9hPSGY3xCe2iPE8rp4IRCaul5zw1+7pj0LoN/RnprufKMjPMnk15aFjrNrHeWlU5TrywrnabeWFY6Tb2wrHSaSae50GnqLWal09S7zUqnqReelU5Tb0ErnabeghY6zaK3oJVOU29BK52m3oJWOk29Ba10mkmnudBp6i1opdPUW9BKp6m3oJVOU29BK52m3oIWOs2qt6CVTlNvQSudpt6CVjpNvQWtdJpJp7nQaeotaKXT1FvQSqcpv8lymqncv7CcyuA0m/zmSqcpTUtzmscbwFvSaS50mtK0K52mNO1Kp6mfb650mvr55kqnKb/JcpoT+/W6/OZKp6mfb650mvr55kqnqbeglU4z6TQXOk29Ba10mnoLWuk09Ra00mnqLWil09Rb0DqnGTa9Ba10mnoLWuk09RZ06Wn+pOaJPdFh02vQWueZdJ5LnadehNY6T70JrXWeehVa6zz1LrTWeepliPI8w/71eQa9Da11nnodWus89T5Ec54Te6JD0PvQWueZdJ5Lnafeh9Y6T70PrXWeeh9a6zz1PrTWeep9iPI8X36X4cN5Rr0PrXWeeh9a6zz1PoR5ns8T0osP+gklnZDxCeXyOKFeDk6ox/tvSfYaXm65/nJCepVBPyG9s1x5QrbZkyHqlWWl09Qby0qnqReWhU5z1/vKSqep15WVTlNvKyudpt5hVjrNpNNc6DT1vrPSaeotaKXT1FvQSqept6CVTlNvQQudZtJb0EqnqbeglU5Tb0ErnabeglY6zaTTXOg09Ra00mnqLWil09Rb0EqnqbeglU5Tb0ELnWbWW9BKp6m3oJVOU29BK52m3oJWOs2k01zoNOU3WU4zlfuXlVMZnab85kKnWaRpaU7zcPt3KNK0K52mNO1Kp5l0mgudpn6+udJp6uebK52m/CbLaU7s1ivymyudpn6+udBpVv18c6XT1FvQSqept6CVTlNvQSudZtJpLnSaegta6TT1FrTSaeotaKXT1FvQSqept6BLT/MnNNL95Ht+3WHwkh3d9Ba00mnqLWil09Rb0EqnqbeglU4z6TQXOk29Ba10mnoLojnNfD+UXrfBaeotaKXT1FvQSqept6CFTrPrLWil09Rb0EqnqbeglU5Tb0GYp/k8oaQTAj8hvdlYn1B/7HZOIRycUIxlf346fvj084z0EoN/RnpfufaMnkc0+I2LrjcT9BPSOwj2CcVNbxvoJ6T3CvQT0hsE+gnpXeHSE8r35K5Yw+CEkk4I/IT0roB+QnpVQD8hvSmgn5DeFNBPSG8K4CcU9KaAfkJ6U0A/Ib0poJ+Q3hTQTyjphMBPSG8KvzmhJ0c5fxuO8uc2HOWibTjK65pwjHKkNhzlG204yt3ZcJQHs+GYxNGEo/yMDUf5GRuO8jP/zvHJxqtHqfHBptWDf2M3CE8euQ7+lXl1KeYkd68+xZ6kV6diT9KrV7En6dWt2JNMImlE0qtjsSfp1bPYk/TqWuxJyuNYkZTHMSKZ5HGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHMSKZ5XGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHMSJZ5HGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHMSJZ5XGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHMSLZ5HGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHMSLZ5XGsSMrjWJGUx7EiKY9jRTKJpBFJeRwrkvI4ViTlcaxIyuNYkZTHsSG5b/I4ViTlcaxIyuNYkZTHsSKZRNKIpDyOFUl5HCuS8jhWJOVxrEjK4xiRDPI4ViTlcaxIyuNYkZTHsSKZRNKIpDyOFUl5HCuS8jhWJOVxrEjK4xiRjPI4ViTlcaxIyuNYkZTHsSKZRNKIpDyOFUl5HCuS8jhWJOVxrEjK4xiR3OVxrEjK41iRlMexIimPY0UyiaQRSXkcK5LyOFYk5XGsSMrjWJGUxzEimeRxrEjK41iRlMexIimPY0UyiaQRSXkcK5LyOFYk5XGsSMrjWJGUxzEimeVxrEjK41iRlMexIimPY0UyiaQRSXkcK5LyOFYk5XGsSMrjWJGUxzEiWeRxrEjK41iRlMexIimPY0UyiaQRSXkcK5LyOFYk5XGsSMrjWJGUxzEiWeVxrEjK41iRlMexIimPY0UyiaQRSXkcK5LyOFYk5XGsSMrjWJGUxzEi2eRxrEjK41iRlMexIunB4zy7Ta669eAVnt160PPPbj1o7me3HnTxs1sP2vXRrYsd889uPWjAZ7cedNqzW1daysXO82e3rFrq2QGrPnp2wKp5nh2w6phnB6za5N5Bot33/OyAVUM8O2DVBc8OWGf9swPW+f3sgH0mJ9r9tc8O2Gdyot3X+uyAfibT7id9dkA/k2n3cT47oJ/JtPsnnx3Qz2TsfYsp5UcHZfvQwZ/9BDBhb0V8Q7/Q8/4N/UKrA/t+sfcAvqFfaOXxhn6hdcob+oVWNW/oNznrF1oxvaFfZ/oKeyPbG/p1pq+wt5vZ94u9g+wN/TrTV9j7vN7QrzN9hb0b6w39OtNX2Hum3tCvM32FvbPpDf0601fY+4/e0K8zfYW9S+gN/TrTV9h7ed7QrzN9hb3j5g39OtNX2Pti3tCvM32FvXvlDf0601fYe0ze0K8zfYW9E+QN/TrTV9j7Nd7QrzN9hb2r4g39OtNX2Hsf3tCvM32FvUPhDf0601fY+wje0K8zfYWd7f+Gfp3pK+yc/Df060xfYWfOv6FfZ/oKO7/9Df0601fYWehv6NeZvsLOFX9Dv870FXZG9xv6daavsPOu39CvM32FnR39hn6d6SvsjOc39OtMX2HnPL+hX2f6Cjvr+Q39OtNX2HnPb+jXmb7Cznx+Q7/O9BV27vMb+nWmr7Bzot/QrzN9hZ1B/YZ+femrjJ1v/YZ+femrjJ2d/YZ+femrvCVn/frSVxk78/sN/frSVxk7T/wN/TrTV9hZ5W/o15m+ws5Bf0O/zvQVdsb6G/p1pq+c5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356d5bdnZ/nt2Vl+e3aW356B8tufNeFooGdNODrlWROOlnjWhDPvnzXhzORnTThz81kTzmx71oQzf5414cyIR01AOdHPmgDvcaC85WdNgPc4UG7xsybAexwo//dZE+A9DpSj+6wJ8B4HyqN91gR4jwPluj5rArzHgfJRnzUB3uNAOaPPmgDvcaC8zmdNgPc4UO7lsybAe/zN+ZHPv2c/6e9JJ/09+aS/p5z099ST/p520t/TT/l7ypvz355/Tzjp74kn/T37SX9POunvySf9PeWkv6ee9Pe0k/6ek+6DcNJ9EE66D8JJ90E46T4IJ90H4aT7IJx0H4ST7oNw0n0QTroP4kn3QTzpPogn3QfxpPsgnnQfxJPug3jSfRBPug/iSfdBPOk+2E+6D/aT7oP9pPvA4nvHsabH39P6379/O5n57Z1i8e3gN1SVIasqkFVVyKoaZFUdsSqLb4C+oaoAWVWErArybk+Qd3uCvNsT5N2eIO/2BHm3J8i7PUPe7Rnybs+Qd3uGvNsz5N2eIe/2DHm3Z8i7PUPe7Rnybi+Qd3uBvNsL5N1eIO/2Anm3F8i7vUDe7QXybi+Qd3uBvNsr5N1eIe/2Cnm3V8i7vULe7RXybq+Qd3uFvNsr5N1eIe/2Bnm3N8i7vUHe7Q3ybm+Qd3uDvNsb5N3eIO/2Bnm3N8i7vUPe7R3ybu+Qd3uHvNs75N3eIe/2Dnm3d8i7vUPe7R3xbq8b4t1eN8S7vW6Id3vdEO/2uiHe7XVDvNvrhni31w3xbq8b4t1eN8i7PUDe7QHybg+Qd3uAvNsD5N0eIO/2AHm3B8i7PUDe7QHybo+Qd3uEvNsj5N0eIe/2CHm3R8i7PULe7RHybo+Qd3uEvNt3yLt9h7zbd8i7HfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6kV8nupFfJ7qRXye6n9zTnNnz/9o73Dewt/fbinuD//5C/3Dv/kTw51K/cOb68az09v5Zd/ctzz/U+Oe39+OpT9qz85xMefnA/+5FTuS5hTKYPTxNm0o9P8/Wni7JrTaf7+NHG29Ok0f3+aSae50GnibIbUaf7+NHF2auo0f3+aONtIdZq/P02cPa46zd+fJs4GXJ3mr09z11vQSqeptyCW08zbHXMObXCaegta6TT1FrTSaSad5kKnqbcgGhXUn6fZB6ept6CVTlNvQSudpt6CVjpNvQUtdJpJb0ErnabegmhO8wEj9W1wmnoLWuk09Ra00mkmneZCp6m3oJVOU29BK52m3oJWOk29Ba10mnoLWug0s96CVjpNvQWtdJp6C1rpNPUWtNJpJp3mQqept6CVTlNvQSudpt6CVjpNvQWtdJp6C1roNIveglY6Tb0FrXSaegta6TT1FrTSaSad5kKnqbeglU5Tb0ErnabeglY6Tb0FrXSaegta6DSr3oJWOk29Ba10mnoLWuk09Ra00mkmneZCp6m3oJVOU29BK52m3oJWOk29Ba10mnoLWug0m/ym9WmG9jjNnCxP8zg7uslvrnSaSae50GnKb650mvKbK52m/OZKpym/udJpym8udJpdv3uw0mnqdw9WOk29Ba10mnoLYjnNie02Pek0FzpNvQWtdJp6C1rpNPUWRKOCjjdodL0FrXSaegta5jTztuktaKXT1FvQSqept6CVTlNvQTSnefQ7e7fTTDrNhU5Tb0ErnabeglY6Tb0FrXSaegta6TT1FrTQaQa9Ba10mnoLWuk09Ra00mnqLWil00w6zYVOU29BK52m3oJWOk29Ba10mnoLWuk09Ra00GlGvQWtdJp6C1rpNPUWtNJp6i1opdNMOs2FTlNvQSudpt6CVjpNvQWtdJp6C1rpNPUWtNBp7noLWuk09Ra00mnqLWil09Rb0EqnmXSaC52m3oJWOk29Ba10mnoLWuk09Ra00mnqLWih00x6C1rpNPUWtNJpJp2m7WnGtj1OMxTL0zzKjr6dpvzmSqcpv7nSacpvrnSa8psrnab85kKnmeU3VzpN+c2VTlO/e7DSaep3D1Y6zaTTXOg09RbEcpqH221up6m3oJVOU29BK52m3oJWOk29BdGooOMNGkVvQSudpt6CVjpNvQWtdJp6C1rpNJNOc6HT1FsQzWke/85e0VvQSqept6CVTlNvQSudpt6CFjrNqreglU5Tb0ErnabeglY6Tb0FrXSaSae50GnqLWil09Rb0EqnqbeglU5Tb0ErnabeghY6zaa3oJVOU29BK52m3oJWOk29Ba10mkmnudBp6i1opdPUW9BKp6m3oJVOU29BK52m3oIWOs2ut6CVTlNvQSudpt6CVjpNvQWtdJpJp7nQaeotaKXT1FvQSqept6CVTlNvQSudpt6C1jnNsOktaKXT1FvQSqept6CVTlNvQSudpvzmxGmaJjyHTa7wfObybuczl8M6nXmQDzqfudzK+czlKc5nLuV/PvMk5qcz109Uz2cuH3o+c/lQW+bHWypCkA89n7l86OnMo3zo+czlQ41n6GFCe4jyoeczlw89n3kS89OZy4eez1w+9Hzm8qHGzI9/7h/lQ89nLh96OvNdPvR85vKh5zOXDz2fuXzo+cyTmJ/OXD70fObyoeczlw89n7l86PnM5UNPZ57kQ89nLh96PnP50POZy4eezzyJ+enM5UPPZy4fej5z+dDzmcuHns9cPvR05lk+9Hzm8qHnM5cPPZ+5fOj5zJOYn85cPvR85vKh5zOXDz2fuXzo+czlQ09nXuRDz2cuH3o+c/nQ85nLh57PPIn56czlQ89nvpA+t00TKgupaFsydSGta0xmIUVqTGYh3WhMZiF1Z0wmicyAzEJKyZjMQu/qxmQWev02JiMNPCLjUwNPZNM1nxp4hoxPDTxDxqcGniHjVAMfZ0m1JDIDMk418AQZpxp4goxTDTxBxqkGniDj9B34+GcH3ek78AQZp+/AE2ScvgNPkHGqgSfIJJEZkHGqgSfIONXAE2ScauAJMk418AQZaeCvycRNGnhERhp4REYaeERGGnhEJonMgIw08IiMNPCIjDTwiIw08IiMNPCATJAGHpGRBh6RkQYekZEGHpFJIjMgIw08IiMNPCIjDTwiIw08IiMNPCCz0n5wYzLSwCMy0sAjMtLAIzJJZAZkpIFHZKSBR2SkgQdkwPfMhntiRt9zPiLzgz85ptjvNaf2rPn2M9svPh16u//Rtw9sL3Xsvz2hw+/mRfCttDqhCL7DVicUwTfe6oQi+H5cnVAE36arE4rgu3d1QhF8U69OKILv9dUJRfAtwDqhCL4zWCcUwTcMr35Cx0kpEXwfsU4ogm8v1glF8F3HOqEIvhl5eaVwmIoSwfco64Qi+NZlnVAE39GsE4rgG511QhF8/7NOKIJvi17+hI5/1wd8t7ROKIJvotYJRfC91TqhCL7lWicUwXdi64Qi+AZtnVAE37etE4rg27l1QhF8l7dOKIJv/tYJRfA94TqhCL5VXCcUwXeQ64Qi+MZynVAselNAPyG9KaCfkN4U0E9IbwrgJ1T1poB+QnpTQD8hvSmgn5DeFNBPKOmEwE9IbwroJ6Q3BfQT0psC+gnpTQH9hPSmAH5CTW8K6CekNwX0E9KbAvoJ6U0B/YSSTgj8hPSmgH5CelNAPyG9KaCfkN4U0E9IbwrgJ9Sd+qE93//kuPd6dEJ7vZ9nSPmFZPjq03m7f/g17yq08kLdqce5mHoS9QuoO/UiF1N36i8upu7UM7yTerrrnfxK4wN1pz7gYupOtf2l1PfN6c8AL6bu9Od676S+twf1fUBd3vQK6vKmV1BPon4BdXnTK6jLm15BXd7UnPrjmT+/vMV/pC5vegV1edMLqAd50yuoy5teQV3e9Arq8qZXUE+ifgF1edMrqMubXkFd3vQK6vKmV1CXN72AepQ3vYK6vOkV1OVNr6Aub3oF9STqF1CXN72CurzpFdTlTa+gLm96BXV50wuo7/KmV1CXN72CurzpFdTlTa+gnkT9AurypldQlze9grq86RXU5U2voC5vegH1JG96BXV50yuoy5teQV3e9ArqSdQvoC5vegV16fUJ6jGkO4/Y6hH1wyykPUmvX0A9S69fQV16/Qrq0utXUJdeN6d+nN6Qk6hfQF16/Qrq+lnSFdT1s6QrqMubXkFd3tSc+vE7TJE3vYK6vOkV1OVNr6Aub3oF9STqF1CXN72CurzpFdTlTa+gLm96BXV50wuoV3nTK6jLm15BXd70CurypldQT6J+AXV50yuoy5teQV3e9Arq8qZXUJc3vYB6kze9grq86RXU5U2voC5vegX1JOoXUJc3vYK6vOkV1OVNr6Aub3oFdXnTC6h3edMrqMubXkFd3vQK6vKmV1BPon4BdXnTK6jLm15BXd70fOppc6rXt3r/UuiNaDygfpyCkTanCtyco1NNbc7RqUo255jE0YSjUyX7M44p3jm+9veBo1Ntas7Rqdo05+j0ZxvmHJ3+tOJnHA+TXFKQn7HhKD9jw1F+xoaj/IwNxySOJhzlZyY4Hr8/BvkZG47yMzYc5WdsOMrPmHCM8jM2HOVnbDjKz9hwlJ+x4ZjE0YSj/IwNR/kZG47yMzYc5WdsOMrPmHDc5WdsOMrP2HCUn7HhKD9jwzGJowlH+RkbjvIzNhzlZ2w4ys/YcJSfMeGY5GdsOMrP2HCUn7HhKD9jwzGJowlH+RkbjvIzNhzlZ2w4ys/YcJSfMeGY5WdsOMrP2HCUn7HhKD9jw9Gnfgw9PnJnejtKqZnIA8g+9aM9R5/60Z6jT/1ozrH41I/2HH3qxx9yPM5VKD71oz1Hn/rRnmMSRxOOPt/Df8jx+HvsRX7GhqP8jA1H+RkbjvIzJhyr/IwNR/mZCY7H749VfsaGo/yMDcckjiYc5WdsOMrP2HCUn7HhKD9jw1F+xoSj093x9hzlZ2w4ys/YcJSfseGYxNGEo/yMDUf5GRuO8jM2HOVnbDjKz5hwdLpv3J6j/IwNR/kZG47yMzYckziacJSfseEoP2PDUX7GhqP8jA1H+RkLjtnpPnZ7jvIzNhzlZ2w4ys/YcEziaMJRfsaGo/yMDUf5GRuO8jM2HOVnTDg63X8das33Dts//rTvOR7mAWSn+6/tOSZxNOHoVD+ac3SqH805OtWPP+N4mKuQne6/tufoVD9ac3S6/9qeo9P38J9xPPwee3a6/9qeo/yMDcckjiYc5WdsOMrP2HCUn5ngePz+6HT/tT1H+RkTjk73X9tzlJ+x4Sg/Y8NRfsaGYxJHE47yMzYc5WdsOMrP2HCUn7HhKD9jwtHp/mt7jvIzNhzlZ2w4ys/YcEziaMJRfsaGo/yMDUf5GRuO8jM2HOVnTDg63X9tz1F+xoaj/IwNR/kZG45JHE04ys/YcJSfseEoP2PDUX7GhqP8jAlHr/vYzTnKz9hwlJ+x4Sg/Y8MxiaMJR/kZG45O9WPudzSh1HjE8TgPwOv+a2uOXvdfm3N0qh/NOTrVj+YcnerHn3E8/p6m1/3X5hyd6kdzjk7fw805On0PN+coP2PDUX5mguOxv/a6/9qco/yMDUf5GRuO8jM2HJM4mnCUn7HhKD9jw1F+xoaj/IwNR/kZE45e91+bc5SfseEoP2PDUX7GhmMSRxOO8jM2HOVnbDjKz9hwlJ+x4Sg/Y8GxeN1/bc5RfsaGo/yMDUf5GRuOSRxNOMrP2HCUn7HhKD9jw1F+xoaj/IwJxyA/Y8NRfsaGo/yMDUf5GRuOSRxNOMrP2HCUn7HhKD9jwnGl/dchPv7kfPAnp3KPVUjlYxVPMgspQmMyC2k8YzILqTZjMklkBmQWUlbGZBbSSsZkFlI/xmQWep81JrPQi6stmZV2JhuT8amB83Yv+TXf5iMZnxp4hoxPDTxDJonMgIxTDdyfZPqAjFMNPEHGqQaeIONUA0+QcaqBj8mstGfXmIzTd+AW7u6gbwMyTt+BJ8g4fQeeIJNEZkDGqQaeIONUA0+QcaqBJ8g41cATZJxq4GMyK+1mNSYjDTwiIw08IiMNPCKTRGZARhp4REYaeERGGnhERhp4REYaeEBmpX2exmSkgUdkpIFHZKSBR2SSyAzISAOPyEgDj8hIA4/ISAOPyEgDD8istJPUmIw08IiMNPCIjDTwiEwSmQEZaeARGWngERlp4BEZaeARGWngARnsvYFbuX+4h7IfkGn9/j231gffc8Pe7mfebXLVLbSWMO8WWh+Ydws983/UbY/3MvpLFYM/Odzv7x5H9zf0zL+UDPTMv5IM9q63S8lAv3tdSmYdnWhNZh1NaU0muSTzE4c2rvhJcR1deyXFdfTylRR96nBrij41uzVFn/relmLF3pNGQ9Gnb7Cm6NNjWFP06UesKSZRNKAo72JBUd7FgqK8iwVFeRcLivIuBhSxd6LRUJR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkARex8fDUV5FwuK8i4WFKV0Dr+PcriJqGJvPGOhiL3pCoPi4XejKvZWLBqKmi4WFPUyZkExiaIBRb2MWVCUXjyimPfHXvucBxSlFy0o6mXMgqJexgwoYm8oo6Eo72JBUd7FgqK8iwXFJIoGFOVdLCjKu1hQlHexoCjvYkHRqXf5QRXh9tOpO43cwrOKkp4csXfLEXF06l/MOTp1MOYcnXoYc45JHE04OvUx5hydOpmfcCxbutMoYR9wdOplzDk6dTPmHOVnTDhi7wkk4ig/Y8NRfsaGo/zMjzi+ZFx+5JjE0YSj/IwNR/mZwe/EY+9OvJSMPMeIjFzEgAz27sRLyUjpj8hIu4/ILKTGD3PhK/Y+RPNuF1K2E90upD8nul1IU050u5BOnOh2Ie133G1bSM9NdLuQRpvodiHdNdGtKy210I7HmW5daamFdjzOdOtKS620t3GiW1daaqX9ihPdutJSK+1BnOjWlZZaaV/hRLeutNRK+/8munWlpVbapzfRrSct1VbaTzfRrSct1Vba9zbRrSct1bbkqltPWqqttI9soltPWqqttN9roltXWmqlfVkT3brSUivtn5ro1pWWWmmf00S3rrTUSvuRJrp1paVW2jc00a0rLbXS/p6Jbl1pqZX24Ux060pLxeSqW1daaqUNTBPdutJS0ZWWiq601Erbqia6daWlVtr+NNGtKy210jaliW5daamVthNNdOtKS6207WeiW1daaqXtORPdutJSK22jmejWlZZaabvLRLeutNRK21ImunWlpVbaPjLRrSsttdIuj4luXWkpr3sIfrLDuOS/PptKGVDUNjULitqmZkFR29QsKGqbmgVFbYI2oOh194AxRW2CtqCoTdAWFLUJ2oJiEkUDivIuh3tjt/ufm0MbUJR3saAo72JBUd7FgqK8y+F06U+K/WuKXvcjGFOUd7GgKO9iQVHexYJiEkUDivIuhxTb/WeAqQ9+BrjSrooLKcq7WFCUd7GgKO9iQHGlXSAXUpR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkBxpd07F1KUd7GgKO9iQVHexYJiEkUDivIuFhTlXSwoyrtYUJR3saAo7/J7in2lXVcXUpR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkBxpd1yF1KUd7GgKO9iQVHexYIisl68/YTyQXGL4YDi7acff3349oI/6BZZ19l3i6y/7LtF1knm3ULvd7PvFll3/Kzbn9z1xzmRHXoX3LVkkPXBtWSSyAzIIL9BXktmHZ1oTWYdTWlNZh39+S6HNq74SXEdXXshRegdfjwUfepwa4o+Nbs1RZ/63ppiEkUDij59gzVFnx7DmqJPP2JNUd7FgqK8iwFF6J2ZPBTlXSwoyrtYUJR3saCYRNGAoryLBUV5FwuK8i4WFOVdLCjKuxhQhN5Ry0NR3sWCoryLBUV5FwuKSRQNKMq7WFCUdzGgCL0NFoPi8dbDDr0NloeipovBd6OgN3DyUNR0saColzELinoZs6ColzEDitAbODEo5r3/9dmc84Ci9KIFRb2MWVDUy5gFxSSKBhTlXSwoyrtYUJR3saAo72JBUd7FgCL0Bk4eivIuFhTlXSwoOvUuP6gi5HpHHnJ7qaKkF45JHE04OvUv5hydOhhzjk49jDlHpy7GnKNTH2PNEXofJwjHsqU7jRL2AUenXsaco1M3Y85RfsaGYxJHE47yMzYc5WdsOMrP/IjjS8blR47yMzYc5WcMOJYNekfnFRyfZORQRmTkOUZk5CJGZJLIDMhI6Y/ISLuPyCykxo9y4W/dLqSZJ7pdSNkedwu9Z9G+24U05US3C+nEiW4X0n4T3SZX3S6k0Sa6XUh3TXTrSksttONxpltXWmqhHY8z3brSUivtbZzo1pWWWmm/4kS3rrTUSnsQJ7p1paVW2lc40a0rLbXS/r+Jbl1pqZX26U1060pLrbSfbqJbV1pqpX1vE9260lIr7U+b6NaVllppH9lEt6601Er7vSa6daWlVtqXNdGtKy210v6piW5daamV9jlNdOtKS620H2miW1daaqV9QxPdutJSK+3vmejWlZZaaR/ORLeutFR2paWyKy210gamiW5daaniSksVV1pqpW1VE9260lIrbX+a6NaVllppm9JEt6601ErbiSa6daWlVtr2M9GtKy210vaciW5daamVttFMdOtKS6203WWiW1daaqVtKRPdutJSK20fmejWlZZaaZfHRLeutJTXPQQ/2WFc8l+fTWWQW+V1C4EtRa87CIwpapuaBUVtU7OgqE3QFhSTKBpQ1CZoC4raBG1BUZugLSjKu1hQlHc53Bu73f/cHNqXFIPXfQPGFOVdLCjKu1hQlHc5nC79SbEPKCZRNKAo72JBUd7FgqK8iwVFeRcLivIuhxTb/WeAqX/9M8Cw0q6KCynKu1hQlHexoCjvYkExiaIBRXkXC4ryLhYU5V0sKMq7WFCUdzGguNJumAspyrtYUJR3saAo72JBMYmiAUV5FwuK8i4WFOVdLCjKu1hQlHcxoLjSLqYLKcq7WFCUd7GgKO9iQTGJogFFeRcLivIuFhTlXSwoyrtYUJR3MaC40u6zCynKu1hQlHexoCjvYkExiaIBRXkXC4ryLhYU5V0MKGLvdyv5/ie3WvYDiq3fv1Pfehl0C63rzLuF1l/m3ULrJPNuk6tuoXXHj7r9yV1/nBMZsHfBXUoGWh9cSgb6vfJSMtBvkFeSwd5ddymZdTSlNZl19Oe7HNq44ifFdXTtlRSTKBpQ9KnDrSn61OzWFH3qe2uKPr2ANUWfvsGYIvZORxqKPv2INUV5FwuK8i4WFJMoGlCUd7GgKO9iQVHexYKivIsFRXkXA4rYO1RpKMq7WFCUd7GgKO9iQTGJogFFeRcLivIuFhTlXSwoyrtYUJR3MaCIvd+ZhqK8iwVFeRcLivIuFhSTKBpQlNL5/TbYgL0NloRixN7AiUHx8DujEXsDJw1FTRcLinoZs6ColzELinoZs6AovXi4JXvvf3025zygKL1oQBF7AycNRb2MWVCUd7GgKO9iQTGJogFFeRcLivIuFhTlXSwoyrtYUJR3MaCIvYGThqJT7/KDKkIo6U4j1JcqWn3h6NS9mHN06l/MOSZxNOHo1MOYc3TqYsw5OvUx5hydOpkfcUzhyTF94PhFFQ+t2Ut//sl7+6qK3O5V9PRSxcvxOLVIJMeDvUFUxyNTB3088orQxyMLCn08SceDfDwyzNDHIx8OfTyy99DHo1cD6OPRq8Hx8fQHjbiVrx/HsJfsEnGUD7fhKMNsw1HO1oZjEkcTjvKKNhxl6g453n6k9OC4twFHuS8bjrJJNhzlZ0w4LrQE+lqO8jM2HOVnbDjKz/yIY8oDjkkcTTjKz9hwlJ8ZBDw5Xfo9Q0aeY0RGLmJAxunS7xkyUvojMtLuIzILqfHD5e9xpYXbE90upGwnul1If050u5CmnOh2IZ040e1C2u+425UWLE90u5BGm+h2Id010a0rLbXSAuCJbl1pqZUW6k5060pLrbSgdqJbV1pqpYWvE9260lIrLVCd6NaVllppIelEt6601EoLPie6daWlVlqYOdGtKy210gLKiW5daamVFjpOdOtKS620IHGiW1daqrvSUt2VllppJedEt5601L550lL75klL7SutL53o1pOW2rfkqltPWmpfab3mRLeetNS+0rrKiW5daamV1j9OdOtKS620TnGiW1daaqX1hBPdutJSK637m+jWlZZaaX3eRLeutNRK6+gmunWlpVZa7jbRrSsttdKitIluXWmplZaOTXTrSkuttMBroltXWmql9VIT3brSUistP5ro1pWWWmk1z0S3rrTUSotjJrp1paVWWmsy0a0rLbXSLo+Jbl1pqZX2Ykx060pLrbRjYqJbV1pqpX0NE9260lIr7T6Y6NaVllppj8BEt6601EqZ/BPdutJSK+XbT3TrSkutlBU/0a0rLbVSpvtEt6601ErZ6xPdutJSK2WkT3TrSku5yj3fXeWe765yz3dXuee7q9zz3VXu+e4q93x3lXu+u8o9313lnu+ucs/3lbKxf7I5KcRHFfngs6nkvz6bShlQdLrnzpii0514thRXygi/kKLTXXvGFJ3u5TOm6HSjtjHFJIoGFJ1u0zam6HSXtjFFeRcLivIuRxTzdv9zc2gDivIuBhRXyuS/kKK8iwVFeZfD6dKfFPuAoryLBcUkigYU5V0sKMq7WFCUd7GgKO9ySLHdfwaY+uBngCvtqriMYlppB8aFFOVdLCjKu1hQlHexoJhE0YCivIsFRXkXC4ryLhYU5V0sKMq7GFBcaefMhRTlXSwoyrtYUJR3saCYRNGAoryLBUV5FwuK8i4WFOVdLCjKuxhQXGnH04UU5V0sKMq7WFCUd7GgmETRgKK8iwVFeRcLivIuFhTlXSwoyrsYUFxpp9qFFOVdLCjKu1hQlHexoJhE0YCivIsFRXkXC4rQejFv9wZaLvGA4vF36hP2fjfzbqH1l3m30DrJvFtoPWPebXLVLbQ+MO8Weo6bdwv9VmjeLfSbnnm3rrQU9n63H3V7nDqSsPe7mXe7jpaa6XYdLTXTbVrnljpMIkjY+93Mu11IS010u5CWmuh2IS010e1CWuq4W+z9bj/r9vjNEXu/m3m3C71LTXS70LvURLfJVbcLaamJbhfSUhPdLqSlJrpdSEtNdLuQljruFnu/m3m3rrQU9n43825daSns/W7m3brSUtWVlsLe3WferSsthb0Lz7pb7J115t260lLYO+DMu3WlpbB3qpl360pLYe8oM+/WlZbC3vll3q0rLYW9Q8u8W1daCnsnlXm3rrQU9o4n825daSnsnUnm3brSUtg7iIy7zdj7Wfbe792mEo66Pfzd84y9R8W8W+h5a94t9Lw17xZ63pp3Cz1vzbuFnrfm3ULPW/Nuod8urLvF3kNh3q0rLYW91+FH3R5/+ylj718w7za56nYdLTXT7UJa6vAbMhl7P4B5twtpqYluF9JSx91i5+Kbd7uQlprodqF3qeM3R+w8ePNuk6tuF3qXmuh2IS010e1CWmqi24W01ES3C2mp426xc7rNu11IS01060pLYedTm3ebXHXrSkth5zKbd+tKS+2utBR2NrZ1t9jZ2ObdutJS2NnY5t260lLY2djm3brSUtjZ2ObdutJS2NnY5t260lLY2djm3brSUtjZ2ObdutJS2NnY5t260lLY2djm3brSUtjZ2ObdutJS2NnY5t1Cz9uYH93uuR102/r9d89bH/zuOXZ+snm30PPWvFvoeWveLfS8Ne8Wet7+qNuf7F7t4X5/9zi6v6Fn85VksHOZLyUD/X5yKRnot5ZLyayjE63JJJEZkFlHf75rY/q44ifFdXTtlRTX0ctXUvSpw60p+tTsxhSxs8JpKPr0AtYUffoGa4o+PYY1xSSKBhTlXSwoyrtYUJR3saAo72JBUd7FgCJ2Nj8NRXkXC4ryLhYU5V0sKCZRNKAo72JBUd7FgqK8iwVFeRcLivIuv6dYNnkXC4ryLhYU5V0sKMq7WFBMomhAUd7FgqK8iwVFeRcDitjbTSAoHm9NKdhbU2goarocUjz8zmjB3gRCQ1HTxYKiXsYsKOplzIAi9qYVGorSi0cU834vIuc8oCi9aEFRL2MWFJMoGlCUd7GgKO9iQVHexYKivIsFRXkXA4rYm41oKMq7WFCUd7GgKO9iQTH5pPiDKkJMd+Qh5tdMyvbC0al7Mefo1L+Yc3TqYMw5OvUw5hyduhhrjthbxYg4OnUyP+JY04Nj2wccnXoZc45O3Yw5xySOJhzlZ2w4ys/YcJSfseEoP/Mjji+/xfORo/yMCUfszX5EHOVnDjnu4f4L9GGPacBRfsaGo/yMDcckjiYc5WdsOMrP2HCUn7HhKD8z+C4g9lbLK8lgb8C8lIxcxIiMfMGIjJT+iEwSmQGZhdT44Z6wstDm1pluF1K2E90upD8nul1IUx53u9KG1YluF9J+E90upOcmul1Io010m1x160pLrbQtdKJbV1pqpe2bE9260lIrbbOc6NaVllppO+REt6601ErbFie6daWlVtpeONGtKy210jbAiW5daamVtutNdOtKS620rW6iW1daaqXtbxPdutJSK21Tm+jWlZZaaTvZRLeetFRdadvXRLeetFRdaXvWRLeetFTdkqtuPWmputJ2p4luPWmpunnSUnVzpaWCKy210t6viW5daangSkuF5KpbV1pqpV1mE9260lIr7Qab6NaVllpp19ZEt6601Eq7qya6daWlVtoFNdGtKy210m6liW5daamVdhVNdOtKS620+2eiW1daaqVdOhPdutJSK+2mmejWlZZaac/LRLeutNRKO1MmunWlpVbaPzLRrSsttdIuj4luXWmplfZiTHTrSkuttGNioltXWmqlfQ0T3brSUivtPpjo1pWWWmmPwES3rrTUSpn8E9260lIr5dtPdOtKS62UFT/RrSsttVKm+0S3rrTUStnrE9260lIrZaRPdOtKS7nKPa+ucs+rq9zz6ir3vLrKPa+ucs+rq9zz6ir3vLrKPa+ucs+rq9zzulI29k82J4X4qCIffDaV+3LEVL7eslRXyty+kKLTnXjGFJ3uzzOm6HTXnjHFJIoGFJ1u1Dam6HSftjFFp9u0jSk63aVtTFHexYDiShn3b6KYt/ufm0MbUJR3saAo72JBUd7FgmISxaPp0p8U+4CivIsFRXkXC4ryLhYU5V0sKMq7/J5iW2mnxLsotvvPAFPfBhTlXSwoyrtYUJR3saCYRNGAoryLBUV5FwuK8i4WFOVdLCjKuxhQXGmHy4UU5V0sKMq7WFCUd7GgmETRgKK8iwVFeRcLivIuFhTlXSwoyrsYUFxpZ9KFFOVdLCjKu1hQlHexoJhE0YCivIsFRXkXC4ryLhYU5V0sKMq7GFBcaUfZhRTlXSwoyrtYUJR3saCYRNGAoryLBUV5FwuK8i4WFOVdDChi73cL+72B23NyP6DY+v079a2XQbfQus68W2j9Zd5tctUttJ4x7xZad/yo25/c9cc5kQ17F9ylZKD1waVkoN8rrySDvY/uUjLr6ERrMutoSmsy6+jPdzm0ccVPikkUDSiuo5evpOhTh1tT9KnZrSn61PfWFH16AWOK2LsXaSj69BjWFH36EWuK8i4WFJMoGlCUd7GgKO9iQVHexYKivIsFRXkXA4rYu05pKMq7WFCUd7GgKO9iQTGJogFFeRcLivIuFhTlXSwoyrtYUJR3MaCIvd+ZhqK8iwVFKZ3fbz1s2NtgaShquhh8Nwp7AycNRU0XC4p6GbOgqJcxC4pJFA0oSi8eboPd71+izjkPKEovWlDUy5gFRb2MWVCUd/k9xY69gZOGoryLBUV5FwuK8i4WFJMoGlCUd7GgKO9iQVHexYKiU+/ygyp6afc/t9ZnDXt7oejUu9hSxN7ASUPRqXcxpujUuxhTdOpdjCkmUTSg6NS7/KCKsD0+fPs/+4CjU/diztGpfzHnKAdjw1EexoQj9i5OIo7yMTYc5WR+xDGUAUd5GRuOSRxNOMrPfP1b8B170+alZOQ5RmTkIkZk5AsGZLA3V15KRtp9RGYhNX6YBN+xN0Gad5tcdbuQ/pzodiFNOdHtQjpxotuFtN9EtwvpueNu00IabaLbhXTXRLeutNRCWx1nuk2uunWlpVba6jjRrSsttdL2xYluXWmplbYkTnTrSkuttM1woltXWmqlTYIT3brSUitt5pvo1pWWWmnT3US3rrTUSpvjJrp1paVW2sQ20a0rLbXSZrOJbl1pqZU2hU1060pLrbR5a6JbV1pqpU1WE9260lIrbYaa6NaVllpp09JEt6601Eqbiya6daWlVtoENNGtKy210madiW5daanmSks1V1qqJVfdutJSK+1GmujWlZZqrrTUSvupjrtdaY/URLeutNRKe5kmunWlpVbaczTRrSsttdLeoIluXWmplfbwTHTrSEvd/mpHWur2VzvSUre/2pGWuv3VjrTU7a9Orrp1pKVuf7UjLXX7qx1pqdtf7UhL3f5qV1pqpT0bE91qf9rh1uKS//psKmVAcaE5fiFF7U+zoKj9aRYUtT/NgqJ2P1tQ1O5nA4peNw8YU9TuZwuK2v1sQVHexYJiEsWDz+bt/ufm0AYU5V0sKMq7WFCUd7GgKO9yOF36k2IfUJR3MaDodZeCMUV5FwuK8i4WFOVdLCgmUTyi2O5FpD74GeBKuyoupCjvYkFR3sWCoryLBUV5FwOKK+0YuZCivIsFRXkXC4ryLhYUkygaUJR3saAo72JBUd7FgqK8iwVFeRcDiivt9LmQoryLBUV5FwuK8i4WFJMoGlCUd7GgKO9iQVHexYKivIsFRXkXA4or7dC6kKK8iwVFeRcLivIuFhSTKBpQlHexoCjvYkFR3sWCoryLBUV5FwOKK+2su5CivIsFRXkXC4rIerH2dG+2hW07oNj6/Tv1rQ++Uw+9382+W2T9Zd8tsk6y7xZZz5h3C73f7Wfd/uSun8iJhN4Fdy0ZZH1wLRnk98prySSRGZBZRydak1lHU1qTWUd/vsuhjSt+UlxH115JcR29fCFF6N2APBR9anZrij71vTVFn17AmmISRQOKPj2GNUWffsSaoryLBUV5FwuK8i6/pxigd3HyUJR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkARevctD0V5FwuK8i4WFOVdLCgmUTSgKO9iQVHexYKivIsFRXkXC4ryLgYUobfBYlA83gYboLfB8lDUdPn9d0YD9AZOHoqaLgYUoTdw8lDUy5gFRb2MWVCUXjzckr33vz6bcx5QTKJoQFEvYxYU9TJmQVHexYKivIsFRXkXA4rQGzh5KMq7WFCUd7GgKO9iQTGJogFFeRcLik69yw+qCLm3O42y1WcVub5wdOpezDk69S/mHJ06GGuO0Js4mTg6dTHmHJ36GHOOTp3MTziWrT84hjbgmMTRhKNTN2POUX7GhqP8jA1H+RkbjvIzJhyht3OicMxPjmXEUX7GhqP8jA1H+RkbjkkcTTjKz9hwlJ+x4Sg/M/jOEPT+zWvJyHMMyEDvybyWjHzBiIyU/oiMtPuITFqHzOE+obDQrtKZbhdSthPdLqQ/J7pdSFNOdLuQTjzudqVdpRPdLqTnJrpdSKNNdLuQ7proNrnq1pWWWmlH50S3rrTUSvsxJ7p1paVW2jc50a0rLbXS/saJbl1pqZX2IU5060pLrbRfcKJbV1pqpX19E9160lJxpf13E9160lJxpX1yE9160lJxS6669aSl4kr7zia69aSl4kr7wya6daWlVtrHNdGtKy210n6riW5daamV9kVNdOtKS620f2miW1daaqV9RhPdutJS0ZWWiq60VHSlpVbadDXRbXLVrSstFV1pqZW2gk1060pLrbRl67jblbZhTXTrSkuttF1qoltXWmqlbU0T3brSUittP5ro1pWWWmmb0ES3rrTUStt5Jrp1paVW2nYz0a0rLbXS9piJbl1pqZW2sUx060pLrbTZZKJbV1pqpS0hE9260lIrbdyY6NaVllppe8VEt6601EqbICa6daWlVtqqMNGtKy210oaCiW5daamV0v4nunWlpVZKzp/o1pWWWimFfqJbV1pqpfz3iW5daamVctonunWlpVbKU5/o1pWWcpV7Hl3lnkdXuefRVe55dJV7Hl3lnkdXuefRVe55dJV7Hl3lnkdXuefRVe55XCkb+yebk0J8VJEPPptK/uuzqZQBRad77mwprpTlfSFFp/vzjCk63bVnTNHpXj5jikkUDSg63adtTNHpNm1jik53aRtTlHexoCjvckQxb/c/N4f2JcV9pez8CynKu1hQlHexoCjvcjhd+pNiH1BMomhAUd7FgqK8iwVFeRcLivIuFhTlXQ4ptvvPAFP/+meA+0q7Ki6kKO9iQVHexYKivIsFxSSKBhTlXSwoyrtYUJR3saAo72JBUd7FgOJKu2EupCjvYkFR3sWCoryLBcUkigYU5V0sKMq7WFCUd7GgKO9iQVHexYDiSruYLqQo72JBUd7FgqK8iwXFJIoGFOVdLCjKu1hQlHexoCjvYkFR3sWA4kq7zy6kKO9iQVHexYKivIsFxSSKBhTlXSwoyrtYUJR3MaCIvd+tPhqore8HFFu/f6e+9TLoFlrXmXcLrb/Mu4XWSebdJlfdQuuOH3X7k7v+OCdyx94FdykZaH1wKRno98pLyUC/QV5JBnt33aVk1tGU1mTW0Z/vcmjjip8U19G1V1JMomhA0acOt6boU7NbU/Sp760p+vQC1hR9+gZjitg7HWko+vQj1hTlXSwoyrtYUEyiaEBR3sWCoryLBUV5FwuK8i4WFOVdDChi71CloSjvYkFR3sWCoryLBcUkigYU5V0sKMq7WFCUd7GgKO9iQVHexYAi9n5nGopJFA8+e7z1cMfeBktDUdPF4LtR2Bs4SSgm7A2cNBT1MmZBUS9jFhT1MmZBMYniwWfz3v/6bM55QFF60YKiXsYsKOplzIKivIsFRXkXA4rYGzhpKMq7WFCUd7GgKO9iQTGJogFFeRcLivIuFhSdepcfVPHy5+4v3aX0QtGpdzGm6NS72FLE3sBJQ9GpdzGm6NS7GFN06l2MKSZRPKKY779h0ksaUHTqXYwpOvUuxhTlXSwoyrtYUJR3MaCIvYGThqK8yw8o1jCgKO9iQVHexYJiEsUPn32SkR8ZkZHHGJGRbxiRkRcYkZG+H5DB3jx5KZmFdPhh6nvC3vpo3u1Cunai2+Sq24U05US3C+nEiW4X0n4T3S6k5ya6XUijHXe70AbHmW5daamFNjjOdOtKSy20wXGmW1daaqWtjBPdutJSK21PnOjWlZZaacvhRLeutNRK2wgnunWlpVba7jfRrSsttdK2vIluXWmplbbPTXTrSkuttM1toltXWmql7WgT3brSUittG5vo1pWWWml710S3rrTUStuwJrp1paVW2i410a0rLbXStqaJbl1pqZW2H01060pLrbRNaKJbV1pqpe08E9260lIrbbuZ6NaVluqutFR3paVW2q800a0rLdVdaanuSkuttItqoltPWiqvtNtpoltPWiqvtCtpoltPWipvyVW3nrRUXmmXz0S3nrRUXmk3zkS3rrTUSrtmJrp1paVW2t0y0a0rLbXSLpSJbl1pqZV2i0x060pLrbSrY6JbV1rK676Bn2woLve0yVTKgKJ2pVlQTKJoQFG70iwoaleaBUXtebagqD3PFhS159mAotd9A8YUtefZgqK8iwVFeZfDrbDb/c+9vYUMKCZRNKAo72JBUd7FgqK8y+F06U+KfUBR3sWCoryLAUWvexeMKcq7WFCUd7GgKO9ySPFRROqDnwGutKviQoryLhYU5V0sKMq7WFCUd7GgKO9iQHGl3SUXUpR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkBxpV1BF1KUd7GgKO9iQVHexYJiEkUDivIuFhTlXSwoyrtYUJR3saAo72JAcaXdXBdSlHexoCjvYkFR3sWCYhJFA4ryLhYU5V0sKMq7WFCUd7GgKO9iQHGlXXgXUpR3saCYkCmW/fHhmuIBxdbv36lvffCdeuz9bubdQusv826hdZJ5t9B6xrxbaN3xo25/ctdP5ERi74K7lAy0PriUDPR75aVkoN8gLyWTRGZAZh1NaU1mHf35Loc2rvhJcR1deyXFdfTylRR96nBbigV75yANRZ/63pqiTy9gTdGnb7CmmETRgKJPP2JNUd7FgqK8iwVFeRcLivIuBhSxd3zSUJR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkAxyrtYUJR3saAo72JBUd7FgmISRQOKUjq/33pYsLfBslDE3sCJQfHwu1EFewMnDUVNFwuKehmzoKiXMQuKehmzoCi9eLgNdu9/fTbnPKAovWhAEXsDJw1FvYxZUJR3saAo72JBMYmiAUV5FwuK8i4WFOVdLCjKu1hQlHcxoIi9gZOGolPv8oMqXv7c/bWG9ELRqXcxpujUuxhTTKJoQNGpdzGm6NS7GFN06l2MKTr1Lj+hmO+/YdJLGlB06l1sKWJv4KShKO9iQVHexYKivIsFxSSKBhTlXX5AsYYBRXkXC4ryLhYU5V0Gv/GOvVXzSjLYmzIvJSPfMCIjLzAiI30/IpNEZkBmIR1+mPpesLc+mne7kK6d6HYh/TnR7UKa8rhb7K2E5t0upP0mul1Iz010u5BGm+g2uerWlZZaaIPjTLeutNRCGxxnunWlpVbayjjRrSsttdL2xIluXWmplbYcTnTrSkuttI1woltXWmql7X4T3XrSUnWlbXkT3XrSUnWl7XMT3XrSUnVLrrr1pKXqStvRJrr1pKXqStvGJrp1paVW2t410a0rLbXSNqyJbl1pqZW2S01060pLrbStaaJbV1pqpe1HE9260lIrbROa6NaVllppO89Et6601Erbbia6daWloistFV1pqZX2K01060pL7a601O5KS620i2qiW1daaqXdThPdutJSK+1KmujWlZZaaffQRLeutNRKu3wmunWlpVbajTPRrSsttdKumYluXWmplXa3THTrSkuttAtloltXWmql3SIT3brSUivt6pjo1pWW8rpv4Ccbiss9bTKVMqCoXWkWFLUrzYKidqUZUPS6b8CYovY8W1DUnmcLitrzbEExiaIBRe15tqAo72JBUd7lcCvsdv9zc2gDivIuFhTlXQwoet1jYExR3uVwuvQnxT6gKO9iQVHexYJiEkUDivIuFhTlXSwoyrscUmz3nwGmPvgZ4Eq7Ki6kKO9iQHGl3RoXUpR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkBxpV02F1KUd7GgKO9iQVHexYJiEkUDivIuFhTlXSwoyrtYUJR3saAo7/J7im2l3VEXUpR3saAo72JBUd7FgmISRQOK8i4WFOVdLCjKu1hQlHexoCjvYkBxpV1tF1KUd7GgKO9iQVHexYJiEkUDivIuFhSh9WJO6f7h3MMBRdvv3zfsXXBXksHeG3cpGWitdikZaP11KRloTXUpmSQyAzLQ2udSMtBvsZeSgX5fvZSMNPCIjE8NfJxC07D3/V1KxqcGniHjUwPPkHGqgQ+TNBr2fsJLyTjVwBNknGrgCTJONfAEGacaeIKM03fg458dYO9pvJSM03fgCTJO34EnyDjVwBNkksgMyDjVwBNknGrgCTJONfAEGacaeIKMNPCADPZ+zUvJSAOPyEgDj8hIA4/IJJEZkJEGHpGRBh6RkQYekZEGHpGRBh6Qwd7JeikZaeARGWngERlp4BGZJDIDMtLAIzLSwCMy0sAjMtLAIzLSwAMy2Ls9LyUjDTwiIw08IiMNPCKTRGZARhp4REYaeERGGnhABnvfX6z748OhWpI5/k4c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mTubKnNnU2XubKrCnU1VuLOpCnc2VeHOpiob9dQt3NlUhTubqnBnUxXubKrCnU1VuLOpCnc2VeHOpirc2VSFO5uqcGdTFe5sqsKdTVW4s6kKdzZV4c6mKtzZVIU7m6pwZ1MV7myqwp1NVbizqQp3NlXhzqYq3NlUhTubqnBnUxXubKrCnU1VuLOpCnc2VeHOpirc2VSFO5uqcGdTFe5sqsKdTVW4s6kKdzZV4c6mKtzZVIU7m6pwZ1MV7myqwp1NVbizqQp3NlXhzqYq3NlUhTubqnBnUxXubKrCnU1VuLOpCnc2VeHOpirc2VSFO5uqcGdTFe5sqsKdTVW4s6kKdzZV4c6mKtzZVIU7m6pwZ1MV7myqwp1NVbizqQp3NlXhzqYq3NlUhTubqnBnUxXubKrCnU1VuLOpCnc2VeHOpirc2VSFO5uqcGdTFe5sqsKdTVW4s6kKdzZV4c6mKtzZVIU7m6pwZ1MV7myqwp1NVbizqQp3NlXlzqaq3NlUlTubqnJnU9WNeupW7myqyp1NVbmzqSp3NlXlzqaq3NlUlTubqnJnU1XubKrKnU1VubOpKnc2VeXOpqrc2VSVO5uqcmdTVe5sqsqdTVW5s6kqdzZV5c6mqtzZVJU7m6pyZ1NV7myqyp1NVbmzqSp3NlXlzqaq3NlUlTubqnJnU1XubKrKnU1VubOpKnc2VeXOpqrc2VSVO5uqcmdTVe5sqsqdTVW5s6kqdzZV5c6mqtzZVJU7m6pyZ1NV7myqyp1NVbmzqSp3NlXlzqaq3NlUlTubqnJnU1XubKrKnU1VubOpKnc2VeXOpqrc2VSVO5uqcmdTVe5sqsqdTVW5s6kqdzZV5c6mqtzZVJU7m6pyZ1NV7myqyp1NVbmzqSp3NlXlzqaq3NlUlTubqnJnU1XubKrKnU1VubOpKnc2VeXOpqrc2VSVO5uqcmdTVe5sqsqdTVW5s6kqdzZV5c6mqtzZVJU7m6pxZ1M17myqxp1N1bizqdpGPXUbdzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW4s6kadzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW4s6kadzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW4s6kadzZV486matzZVI07m6pxZ1M17myqxp1N1bizqRp3NlXjzqZq3NlUjTubqnFnUzXubKrGnU3VuLOpGnc2VePOpmrc2VSNO5uqcWdTNe5sqsadTdW5s6k6dzZV586m6tzZVH2jnrqdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpurc2VSdO5uqc2dTde5sqs6dTdW5s6k6dzZV586m6tzZVJ07m6pzZ1N17myqzp1N1bmzqTp3NlXnzqbq3NlUnTubqnNnU3XubKrOnU3VubOpOnc2VefOpgobdzjVrX7quXurn3rw3uqnnry3+qlH761+6tl7q596+N7qp56+t/qpx++tfvL5yx1TdauffP5yB1Xd6iefv9xRVbf6yecvd1jVrX7y+csdV3Wrn3z+cgdW3aojn7/ckVW36sjnL3do1a068vnLHVt1q458/nIHV92qI5+/3NFVt/rJ5y93eNWtfvL5yx1fdauffP5yB1jd6iefv9wRVrf6yecvd4jVrX7y+csdY3Wrn3z+cgdZ3eonn7/cUVa3+snnL3eY1a1+8vnLHWd1q598/nIHWt3qJ5+/3JFWt/rJ5y93qNWtfvL5yx1rdauffP5yB1vd6iefv9zRVrf6yecvd7jVrX7y+csdb3Wrn3z+cgdc3eonn7/cEVe3+snnL3fI1a1+8vnLHXN1q598/nIHXd3qJ5+/3FFXt/rJ5y932NWtfvL5yx13dauffP5yB17d6iefv9yRV7f6yecvd+jVrX7y+csde3Wrn3z+cgdf3eonn7/c0Ve3+snnL3f41a1+8vnLHX91q597/gby/KtAnn8VyPOvAnn+Vdi4528gz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzrwJ5/lUgz78K5PlXgTz/KpDnXwXy/KtAnn8VyPOvAnn+VSDPvwrk+VeBPP8qkOdfBfL8q0CefxXI868Cef5VIM+/CuT5V4E8/yqQ518F8vyrQJ5/FcjzryJ5/lUkz7+K5PlXkTz/Km7c8zeS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5V5E8/yqS519F8vyrSJ5/FcnzryJ5/lUkz7+K5PlXkTz/KpLnX0Xy/KtInn8VyfOvInn+VSTPv4rk+VeRPP8qkudfRfL8q0iefxXJ868ief5VJM+/iuT5Vzt5/tVOnn+1k+df7eT5V/vGPX938vyrnTz/aifPv9rJ86928vyrnTz/aifPv9rJ86928vyrnTz/aifPv9rJ86928vyrnTz/aifPv9rJ86928vyrnTz/aifPv9rJ86928vyrnTz/aifPv9rJ86928vyrnTz/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eXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z43V7nnzVXueXOVe95c5Z53V7nn3VXueXeVe95d5Z73Lbnq1pOW6q5yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz7ur3PPuKve8u8o9765yz/tC2dit37tt/eOf/Ox2nXk70+1Cd3II93/Jcfu625Xykye6XehOnuh2oTt5otuF/O1Et8lVtwv524luF/K3E90u5G8nul3I305060hLxW2l/OSJblm11LMDVn307ABa89R2/0dUW98P/sWN/+Rnt8lVt9Cax7xbaM1j3i205jHvFlrzmHcLrXmsu8XOOTbvFlrzmHcLrY/Mu3WlpbBzjs27daWlsHOOzbt1paWwc47Nu3WlpbBzjs27daWlsHOOzbt1paWwc47Nu3WlpbBzjs27daWlsHOOzbt1paWwc47Nu3WlpbBzjs27daWlsHOOzbt1paWwc47Nu3WlpbBzjs27daWlsHOOzbtdZwIdftvh1u06E2im23VuqYnf0MNOELXuFjtB1LzbdRzfTLfrOL6ZbtdxfDPdrjNvZ7pdZ97OdLuO45vpdh3HN9OtKy2FnSBq3S12gug33T47YNVHzw6gNU9P8W62wrYd/IsLJfd71aW8VJ3rS7/QqucN/SZn/UIrnzf0C6193tDv/8Pev6XHriM722iP9iNRQR0at/q+/f1rZipda7DEnAMSIwK4qwuXLbwxpgjQToRr93ODXtf+5wa9rh0QXq/v5s8b9Lp2TDfoJfNXvvs/b9BrZHrJ/JXvFtAb9JL5K99NoDfoJfNXvttAb9BL5q98N4LeoJfMX+1GppfMX/lufb1BL5m/2sn8le9eX7xe382+N+gl81e+231v0Evmr3w3/N6gN8951PGXyL6bUcFqZ99Nm1+pvf7rmdl3KydcbZ73VI/aPCmwR22eDNijNk8C7FGb57ztUZvnvO1Q67uVE642T/LrUUvlpXy3csLVWlC1p4Ko/uhU4Nnz7PPy+ke0l3Jc5e7p/a3naT6/97zsH3o9u5479Hr2PXfo9ex8btDrukXzDr2e3c8dej37nzv0enZAd+g1Mr2eHdMdesn8letOzTv0kvkr172aN+h13ax5h14yf+W6XfMOvWT+ynXD5h16yfyV65bNO/SS+SvXTZt36CXzV67bNu/QS+avjMxfGZm/ct0fe4deMn9lZP7KyPyV647gO/SS+SvXPcF36CXzV667gu/QS+avXPcF36GXzF+57gy+Qy+Zv3LdG3yHXjJ/5bo7+A69ZP7KdS/xHXrJ/JXrXuI79JL5K9e9xHfoJfNXrnuJ79BL5q9c9xLfoZfMX7nuJb5DL5m/ct1LfIdeMn/lupf4Dr1k/sp1L/Edesn8lete4jv0kvkr173Ed+gl81eue4nv0Evmr1z3Et+hl8xfue4lvkMvmb9y3Ut8h14yf+W6l/gOvWT+ynUv8R16yfzVQeavDjJ/5bpn+w69XP6qTFz+qkxc/qq47lK/Qy+XvyqTkenl8lfFdaf6HXq5/FVx3at+h14yf+W6W/0OvWT+ynW/+h16yfyV6471O/SS+Suy/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eyPrbC1l/eyHrby9k/e2FrL+9kPW3F7L+9kLW317I+tsLWX97IetvL2T97YWsv72Q9bcXsv72QtbfXsj62wtZf3sh628vZP3thay/vZD1txey/vZC1t9eEvVd70d9ffHx+zu/1SZqu+5Rm+dddcyvLz7K1FCb503VozbPe6pHbZ4U2KM2TwbsUZsnAfaozXPedqhN1H7cozZP9utRmyf59ail8lKJWo971Eb1UqeCqP7oVODa8/xc274ULHW/yt3L/Ipm81Ls46s/crfvXuIb9Lr2PXi9vnuJb9Dr2vvcoNe1+7lBr2v/c4NeI9Pr2gPdoNe1Y7pBL5m/8t1LfINeLn+1+O4lvkEvl79afPcS36CXy18tk5Hp5fJXi+9e4hv0cvmrxXcv8Q16yfyV717iG/SS+SvfvcQ36CXzV757iW/QS+avfPcS36CXzF/57iW+QS+Zv/LdS3yDXjJ/5buX+Aa9ZP7Kdy/xDXrJ/JXvXuIb9JL5K9+9xDfoJfNXvnuJb9BL5q989xLfoJfMX/nuJb5BL5m/8t1LfINeMn/lu5f4Br1k/sp3L/ENesn8le9e4hv0kvkr373EN+gl81e+e4lv0Evmr3z3Et+gl8xf+e4lvkEvmb/y3Ut8g14yf+W7l/gGvWT+yncv8Q16yfyV717iG/SS+SvfvcQ36CXzV757iW/QS+avfPcS36CXzF+tZP5qJfNXK5m/8t2zjdfru2n7Br1k/moj81e+u9Rv0Gtkesn8le9G9Rv0kvkr363qN+gl81e+m9Vv0Evmr3y3q9+gl8xf+W5Yv0Evmb/y3ch+g14yf0XW376Q9bcvZP3tC1l/+0LW376Q9bcvZP3tC1l/+0LW376Q9bcvZP3tC1l/u5H1txtZf7uR9bcbWX+7TUaml8tfGVl/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bcbWX+7kfW3G1l/u5H1txtZf7uR9bdXsv72OuU5j/bjJXc/fn/nU22e06hHbZ531THP/3zxUaaG2jxvqg61iXqQe9TmSYE9avNkwB61eRJgj9o8522P2jznbY/aPNmvR22e5NejlspLJWo97lAbtvP4VBDVH50KXHue5XgrsHW++BdXl9cX11ob/+Jcex64WqNS69rzwNW69jxwta49D1yta88DV+va86DV+u4hhqt17Y/gaqm8lO8GYrhao1JL5aV8dw/D1VJ5Kd+9w3C1VF7Kd+cwXC2Vl/LdNwxXS+WlfHcNw9VSeSnfPcNwtVReynfHMFwtlZfy3S8MV0vlpXx3C8PVUnkp373CcLVUXsp3pzBcLZWX8t0njFbru331K7W2vv7+39bG3//77l6Fq83zlrL99TdrdjT+Zs13LydcbZ63VI/aPImvQ63vRk642jyJr0ctVeLz3cUJV2tUaqkSn+8WTrhaqsTnu4ETrpbq9tx3+yZcLdXtue/mTbhaKi/lu3UTrjaqlzoVRPVHpwLXnqdOr2i5/9zZAv7FufY8cLWuPQ9are9GTLha154Hrta154Grde154GqNSq1rzwNX69ofwdVSeSnfDZhwtUxeavXdfglXy+Sl1onJS60Tk5daJ6NSy+Sl1onJS60Tk5dafTf0wtVSeSnfDb1wtVReyndDL1wtlZfy3dALV0vlpXw39MLVUnkp3w29cLVUXsp3Qy9cLZWX8t38C1dL5aV8N//C1VJ5Kd/Nv3C1VF7Kd/MvXC2Vl/Ld/AtXS+WlfDf/wtVSeSnfzb9wtVReynfzL1wtlZfy3fwLV0vlpXw3/8LVUnkp382/cLVUXsp38y9cLZWX8t38C1dL5aV8N//C1VJ5Kd/Nv3C1VF7Kd/MvXC2Vl/Ld/AtXS+WlfDf/wtVSeSnfzb9wtVReaqXyUiuVl/LdYQ1XS+WlVqNSS+WlfPeTw9VSeSnf/eRwtVReync/OVwtlZfy3er8ldrrDRmr71ZnuNo8b6nrpv3Vd/MvXG2et1SP2jyJr0dtnsTXo9ao1FIlPt8twXC1VImPqlF4pWoUXqkahVeqRuGVqlF4pWoUXqkahVeqRuGVqlF4DdsofCqI6o9OBa49zzq9nmNfy3TxL679nV9qN9/Nv3C1rj3PV2pLeT+G1YZa154Hrta154GrNSq1rj0PXK1rzwNX69rzfKe2vn47Vba5oda1P4KrzeOlOtT6bv6Fq03kpTrUJvJSHWoTeakOtUal1reXqq/vvG/rcqF2LuV1pTJ/+ot53z70+nZTeL2+/RRer29Hhdfr21PB9fruAL5Br29fhdfr21nh9fr2Vni9RqaXzF/57gO+QS+Zv/LdCXyDXjJ/5bsX+Aa9ZP7KdzfwDXrJ/JXvfuAb9JL5K98dwTfoJfNXvnuCb9BL5q98dwXfoJfMX/nuC75BL5m/8t0ZfINeMn/luzf4Br1k/sp3d/ANesn8le/+4Bv0kvkr3x3CN+gl81e+e4Rv0Evmr3x3Cd+gl8xf+e4TvkEvmb/y3Sl8g94859F+vP4aeD8an4j03cUKV5vnXXXMr48yH2VqqM3zpupQ67uvE642TwrsUZsnA/aozZMAe9TmOW971OY5b3vU5sl+PWrzJL8etVReynerMFqt71bh/6L2VBDVH50KXHuefbKXgn3eLv7FdTTz+G7/has1KrWuPc9Xajv6THy3/8LVuvY8cLWuPQ9crWvPg1bru/0Xrta1P4KrzeOlOho+fLf/wtUaldpEXqpDbSIv1aE2kZfqUJvIS3WoDeOliv3xPmL33RTcpSCM52kq8O1j1vet1s+11l/fG+y+G33hai2N2mtHvvtu9IWr9e1j0Gp9+xi0Wt8+Bq3Wt48Bq/Xd6Pud2kuPuvtu9IWrzeOletTm8VI9ao1KbSIv1aE2kZfqUBvGS+1//juG3Xc/b5eCMJ6npcB3h+5RXl98TGW++G9mXt/3JPOvPvTVPvS6djI36HXtZW7Q69rN3KDXyPS6djQ36HXtaW7Q69rV3KDXtQe6Qa9rx4TX67tD9wa9ZP7Kd4fuDXrJ/JXvDt0b9JL5K98dujfoJfNXvjt0b9BL5q98d+jeoJfMX/nu0L1BL5m/8t2he4NeMn/lu0P3Br1k/sp3h+4Nesn8le8O3Rv0kvkr3x26N+gl81e+O3Rv0Evmr3x36N6gl8xf+e7QvUEvmb/y3aF7g14yf7WS+auVzF/57oS+QS+Zv1rJ/NVK5q98937foJfMX/nu/r5BL5m/8t3/fYNeMn/luzn5K73XWyh2383JaLW+m3i/UnvdnLz7bu2Fq83znupRa1Rq82TAHrV5EmCP2jznbY/aPOdtj9o82a9Dre/WXrhaKi/lu7UXrjaqlzoVWHgFnj3PMa1vBfP1rsue3O26X/cOvZ59zx16PTufO/R69j54vYfrTt479Hr2P3fo9eyA7tDr2QPdodfI9HL5q8N17+8dern81eG6+/cOvWT+ynX/7x16yfyV6w7gO/SS+SvXPcB36CXzV667gO/QS+avXHcH36GXzF+57iW+Qy+Zv3LdS3yHXjJ/5bqX+A69ZP7KdS/xHXrJ/JXrXuI79JL5K9e9xHfoJfNXrnuJ79BL5q9c9xLfoZfMX7nuJb5DL5m/ct1LfIdeMn/lupf4Dr1k/sp1L/Edesn8lete4jv0kvkr173Ed+gl81eue4lv0Ou6x/U7vdfNAYfrFle82jzvqutPux2uGz7xavO8p3rU5kmBHWpdd3vi1eZJgD1q85y3PWrznLc9ao1KbZ7k16OWyku5bvPEq43qpU4FUf3RW4Hrvs2ffznH+x9RKRf/4trf+VTr2vPA1br2PHC1rj3PV2pLeT+G1YZao1Lr2vPA1br2PHC1rj0PXK1rzwNX69ofodXuebxUqa9b7rLNDbV5vFSP2jxeqkdtIi/Vodao1CbyUh1qE3mpDrW+vdT2vo8o+9X9UUfic90GjFfr20t9o7bDS7luA8ar9e2l0Gp9eym0Wt9eCq3WqNT69lJfqb12F747huFq83ipHrV5vFSP2kRe6krtMvnuFoarTeSlOtS69lLLvL7ULrVeqK3lFYbr8vG1+/qh1rWXgqu1NGq3uby/c734zpdZ+IeMa981lIxrjzaUjGs/N5SMa+83lIxrnziSjO8+5aFkXPvPoWTyeFU0mTy+Fk3GRKZBRh64RUYeuEVGHrhFRh64RUYeuEHGd+f1UDLywC0y8sAtMvLALTImMg0y8sAtMvLALTLywC0y8sAtMvLADTK+e8mHkpEHbpGRB26RkQdukTGRaZCRB26RkQdukZEHbpGRB26RkQdukPHdHT+UjDxwi4w8cIuMPHCLjIlMg4w8cIuMPHCLjDxwi4w8cIuMPHCDTJUHbpGRB26RkQdukZEHbpExkWmQkQdukZEHbpGRB26RkQdukZEHbpDxvT9mKBl54BYZeeAWGXngFhkTmQYZeeAWGXngFhl54BYZeeAWGXngBhnf+4SGkpEHbpGRB26RkQdukTGRaZCRB26RkQdukZEHbpGRB26RkQdukPG9B2ooGXngFhl54BYZeeAWGROZBhl54BYZeeAWGXngFhl54BYZeeAGGd/7u4aSkQdukZEHbpGRB26RMZFpkJEHbpGRB26RkQdukZEHbpGRB/4zmdn33rWhZOSBW2TkgVtk5IFbZExkGmTkgVtk5IFbZOSBW2TkgVtk5IEbZLQnrklGHrhFRh64RYbz1Lb1tQfb1hYZzlO7gwzpliLb5xeZY2qQ4XwD95DhfAP3kOG8heghYyLTIMN5C9FDhtPP1OX452trrQ0ynH6mhwznLUQPGc5biA4ypFuKeshweuAeMpweuIcMpwfuIWMi0yDD6YF7yMgDt8jIA7fIyAO3yMgDN8iQbinqISMP3CIjD9wiIw/cImN5yHzxnee6vq47f/7n+cxl+mSTyAXD2STywXA2iZwwnE0iLwxnk8gNf8XmeB1T87r9ZvOHM628z7SP82/e15Njpu1GQzkmctpDOSby5UM5JnLxQzmaOEI4suYDNEfWLIHmyJo70BxZMwqao/IMhGOmTVVDOSrPYDgqz2A4Ks9gOJo4Qjgqz2A4Ks9gOCrPYDgqz2A4Ks9AOGbaOjaUo/xjB8fpzXHeGxxNHCEcdV5j/rvWeY3hqPMawjHThqShHHX/iOGo+8f/5HiykSdsszGxabIhvftbj/ffZW5Liw3pfV4XG1LP38WG1Md3sSH15j1sMm1jgrMh9dDb9qoO/LEx8y82/8pDZ9reNJQjqd+GczRxhHAk9fFwjqSeH86RNB/AOZJmCThH0twB5lgybcsaylF5BsNReQbDUXkGw9HEEcJReQbDUXkGw1F5BsNReQbDUXkGwjHT5rOhHJVnMByVZzAclWcwHE0cIRyVZzAclWcwHJVnMByVZzAclWcgHDPtER3K0cTxmuPlZwNLpq2KQznqnMH8d61zBsIx066+oRx1b4bhqHszDEfdm/0nx5ONiU2TjXxemw3pndW+Tm82hzXYkN5DdbEh9fxdbEh9fA+bTDsE4WxI/XYXG1IPfRR7KfwR+4vNHzz0+vriutuHvu2DI6mHhnM0cYRwJPXmcI6kPh7OkdTzwzmS5gM4R9IsgebIun8RzpE0o8A5Ks9gOCrPYDiaOEI4Ks9gOCrPYDgqz2A4Ks9gOCrPQDiy7l+Ec1SewXBUnsFwVJ7BcDRxhHBUnsFwVJ7BcFSewXBUnsFwVJ6BcGTdvwjnqDyD4ag8g+GoPIPhaOII4ag8g+GoPIPhqDyD4ag8g+GoPAPhyLqfFs5ReQbDUXkGw1F5BsPRxBHCUXkGw1F5BsNReQbCkXWn6Hccr7vJWHeKwjnqnOngeN1hxLrDEc5R5wyGo+7NMBx1b4bguLDucPwvHE828oRtNvJ5bTacd1Zlml7fuUxLi42JTZMNp+fvY8Pp4/vYcHrzPjacfruPDaeHLtO2v555tvKLzb+5O1xI9wbiOXL6bTxHTm+O58jq49EcTRwhHFnzAZoja5ZAc2TNHWiOrBkFzVF5BsKRdG8gnqPyDIaj8gyGo/IMhqOJI4Sj8gyGo/IMhqPyDIaj8gyGo/IMhCPpflo8R+UZDEflGQxH5RkMRxNHCEflGQxH5RkMR+UZDEflGQxH5RkIR9KdvniOyjMYjsozGI7KMxiOJo4QjsozGI7KMxiOyjMYjsozGI7KMxCOpLuC8RyVZzAclWcwHJVnMBxNHCEc5Xs6OF52ky2kO0XhHEl3OH7J8brDiHSHI56jzhkMR92bYTjq3gzDUfdm/8nxZCNP2GZD6vPm/c2mmF3+91f+9N/fZ+4g3bWI50h6vwXnSJo74BxJcweco4kjhCNp7oBzJM0d33E871u3rcGRNHfAOZJmFDhH5RkIR9Jdi3iOyjMYjsozGI7KM19xbP2emXTXIp6j8gyGI2meKecd9/KR9f7McZ/mf754nz84HscHR9I8A+dImmfgHEnzDJrjQZpn4BxJ8wycI2me+Y6jvXzPXrcGR9I8A+do4gjhSJpn4ByVZzAclWcwHJVnOji+v3g/5gZH5RkERyPd6YvnqDyD4ag8g+GoPIPhaOII4ag8c83xmF8Cj7I2OCrPYDgqz2A4Ks9gOCrPQDiy7leGc1SewXAkzTNLfe+U/7k7vOA4z+ubx7yePMpcPkiSJpobSJpIgkiSppobSJLmmu9Ilvn1C4a57Nsvkv/3q68/7W+sW5kHUyfNTIOpkyassdRZ90MPpk6a3gZTV9YbQV25cAR1E/UB1JU3R1BXNh1BXdl0BHVl0xHUlU0HUGfd9T2YurLpCOrKpiOoK5uOoG6iPoC6sukI6sqmI6grmw6gzrrL+k7ql5tnjHXz9WDqJuoD3jDyMCOoy8OMoC4PM4K67tdHUNf9+t9Rf5Nk3b98A0n5ahRJ3W13kFym11fPi7VI6r4aRdJEEkRSmQxFUjkLRVLZCUVSeaiH5PaKOPOPA/9F8g9fvdmb+27Lx/e2D+5KREO4r8pPY7grbY3hrmw2hruS3BjuJu5DuCsljuGuTDmGuxLoGO7Kq2O4K68O4b4pr47hrrw6hrvy6hjuyqtjuJu4D+GuvDqGu/LqGO7Kq2O4K6+O4a68OoT7rrw6hrvy6hjuyqtjuCuvjuFu4j6Eu/LqGO7Kq2O4K6+O4a68Ooa78uoQ7ofy6hjuyqtjuCuvjuGuvDqGu4n7EO7Kq2O4y0eiuV+3hdVJLnIEdZ2pcOqXXT510ok6grrO0xHUdfs7grrufkdQ183v31E/ScqDg0jO8tUdJOv8UjjXbb98E5Q/vQm27YO67mZHUNfN7AjqypAjqJuoD6CuDDmCujLkCOrKkHDq66sKuG5bg7oy5AjqypsDqBdl0xHUlU1HUFc2HUFd2XQEdRP1+6jv1qCubDqCurLpCOrKph3U12l+8VjrfEF9rvbeU1Pr5/e2D+5Kp2O4K58O4b4ooY7hrow6hrtS6hjuyql47vU4PWdpcDdxH8JdWXUMd6XVMdyVV8dwV14dw115Fc7djunNff/tI//VHZop2/qfkXKw/xkpM8NntG7nV39w/3XGmDLzGO4m7kO4KzOP4a7MPIa7MvMY7srMY7grM+O57+++n/U4/sy9KgeP4a5sO4a78uoY7sqrY7ibuA/hrrw6hrvyKp77/Ka3zb/9+7+6M67Ktv5npBzsf0bKzPAZ7e8Hmff5zx25dVVmHsNdmXkMd2XmMdyVmcdwN3Efwl2ZeQx3ZWY897m+uX/Q+81dOXgMd2XbMdyVV4dw35RXx3BXXh3DXXl1DHflVTj3/7Kz61/dGW+mGbmfkXKw/xmRZmZ7L4IptpfLGc3vT0uu9qHw/03g/37v+jpiyjb/eo6TOmliHkydNC8Ppk6alsdS30mzMoz6SZI0/d5AkjTP3kCSNKHeQNJEEkSSNO3dQFKZDEVSOQtFUtmph+TxWsg0b1P9RfIPz1H313McH39F+2niFZ2eh34oOaGhl/LGYfXPefVQyhpBXYlsBHWltxHUTdQHUFcqHEFdCRJO/frO/VDaHEFdybSD+lb2N3Wb/z4kKZk+Dn2dlEzR0K/P0nVSMh1BXcl0BHUl0xHUTdQHUFcyHUFdyRRO/TIjrZOS6QjqSqY91Nf3b5+3vfx9SFIyfR76rGSKht5xls5KpiOoK5mOoK5kOoK6ifoA6kqmI6grmcKpX2ekWcl0BHUl0w7q+/TmsZfp70OSkunz0IuSKRp6x1lalExHUFcyHUFdyXQEdRP1AdSVTEdQVzKFU7/OSEXJdAR1JdNvqW+/qJ8kFTdBJBdlSBRJ5cIekpu9Se7b//ztFciiWDgAulIhGnqHU15M1AdQVyocQV2pcAR1pcIR1JUKR1BXgoRTv74BMaXNEdSVTHuo1/mkvl9QP5bXtz7Wjy3ny/6vApUpxTofkBKv8wGZBuR7QMrRzgekyO18QErnzgekIO98QMr8vgdUdT3gfEC6SXA+IN0kdAzosHdN41H/ulV9rbodGADdBB0MvePXJlUxfgR1ZfMR1BW4R1BXih5BXdF4APVVeRdO/frX4atC7AjqSqYjqCuajqBuot5BfX99658vuPp43X/76pO70ukY7sqnaO7bXN7PUS+eo/3M54SUZb1PSLnX+4SUkZ1PaFOe9j4hZW/vE1JO9z4hZXrvEzJNyPmEdFPgfUK6U/A+Id0peJ+Q7hS8T0h3Cs4ntOtOwfuEdKfgfUK6U/A+Id0peJ+QaULOJ6Q7Be8T0p2C9wnpTsH7hHSn4H1CulNwPqFDdwreJ6Q7Be8T0p2C9wnpTsH7hEwTcj4h5aGRE7L19VkfW1sTUh7yPaFtkpcbOqH91YZkx9SYkLyc9wnJy3mfkGlCziek3w95n5B+P+R9QspDIydU32WVtdbGhJSHvE9Ivx9yPqFZvx/yPiHdKXifkO4UvE9IdwreJ2SakPMJ6U7B+4R0p+B9QrpT8D4h3Sl4n5DuFJxPqOhOAT6hbxS+K2Z/Ncwux8eEdKfgfUK6U/A+Id0peJ+QaULOJ6Q7Be8T0p2C9wnpTmHohOoL9LFNjQnpTsH7hHSn4HxCi+4UvE9IdwreJ6Q7Be8T0p2C9wmZJvTYhE7quicYQV3ZfwR15fkR1JXRR1BX7h5A3ZSlR1BnyMenWoaseaplyG2nWqNSy5A9TrUMnv9Uy+C1T7W+Pe77I9k/v/RcLtTO9fUYc7WGWt/eEqy2+vZ036jF9ppt1bfvGknGt0cbSca3nxtJxkSmQca3TxxJxrenHEnGt/8cSSaPV0WTyeNrwWRWeeAWGXngFhl54BYZeeAWGROZBhl54BYZeeAWGXngFhl54BYZeeAGmU0euEVGHrhFRh64RUYeuEXGRKZBRh64RUYeuEVGHrhFRh64RUYeuEFmlwdukZEHbpGRB26RkQdukTGRaZCRB26RkQdukZEHbpGRB26RkQdukDnkgVtk5IFbZOSBW2TkgVtkTGQaZOSBW2TkgVtk5IFbZOSBW2Tkgf9MZp/kgVtk5IFbZOSBW2TkgVtkTGQaZOSBW2TkgVtkOP2MrfWfr7W1Qcb5ruaRZDjPJnt/YzumBhnOs6mHDOfZ1EOG82zqIcN5P9NDhvN+pocMp5+53hO5O98TOZIM5/1MDxnO+5keMpweuIeMiUyDDKcH7iHD6YF7yHB64B4ynB64h4w8cIOM871mI8nIA7fIyAO3yMgDt8iYyDTIyAO3yMgDt8gk8sBffOe51hfGuW4fbKb1Twrr6/d2ZZsbHBM55qEcE/nrkRydb0aKwzGRdwdxPNkkcu9wNon8O5yNiU2TTSIPD2eTyMXD2cjHt9nIm7fZkPrt9b1Bc16t/GLzr3J0pq1VQzmS+u2vOJbyFmgtjqTeHM6R1MfDOZo4QjiS5gM4R9IsAedImjvgHEkzynccr+9rM+0UG8kx0wayrzi+P6I3r9v+93km076yoRxZ88w3HDvOmUy70IZyNHGEcGTNM2iOrHkGzZE1z6A5suYZNEfWPPMVx+s8k2mb3FCOyjMYjsozGI6keWab1pfCrU4XHOf6EjhXa3A0cYRwJM0zX3EE96xl2sYXhjlpThrKnDRTDWVOmr9GMs+09TAMc9JcN5Q5aQYcylx58XnmJuaPM1cOfZ65cujzzJVDn2euHPo8c+XQx5ln2jwahrly6PPMlUOfZ64c+jxzE/PHmSuHPs9cOfR55sqhzzNXDn2euXLo08yPTNt/wzBXDn2euXLo88yVQ59nbmL+OHPl0OeZK4c+z1w59HnmyqHPM1cOfZx5pq3tYZgrhz7PXDn0eebKoc8zNzF/nLly6PPMlUOfZ64c+jxz5dDnmSuHPs68KIc+z1w59HnmyqHPM1cOfZ65/DmWub1LtmxtMZc/f5z5It8CZv5+ZDumBnP5lueZy7c8z1y+5XnmJuaPM9f9+fPM5c+xzK/3nRyL/PnzzHV//jxz3Z8/ztyUQ59nrhz6PHPl0OeZK4c+z9zE/HHmyqHPM1cOfZ65cujzzJVDn2euHPo486oc+jxz5dDnmSuHPs9cOfR55ibm18y/+M6lLNNJ4+OZ1+Wr73xOSKnV+4SUcb1PSInY+4SUn5+b0EldCXoA9VUZegR1pegR1JWjR1BXkh5B3UR9AHXl4xHUlXlHUFeOHUFd2RRNfX9TX+b1F/U/PIft9nqO+vG955//fc5ISdb9jDbl3pEzAjcAbMrTmaapnJ5pmsr/maZpmmaiaeq+ItM0dQ+SaZq6X8k0Td3bZJqmbngSTXPXXVCmaeouKNM0dReUaZq6C8o0TdM0E01Td0GZpqm7oEzT1F1QpmnqLijTNHUXlGiah+6CMk1Td0GZpqm7oEzT1F1QpmmapplomroLyjRN3QVlmqbugjJNU3dBaaZp06S8GWWal/sWf6apvJlpmvK0YaZ5tVPsZ5rytJmmKU+baZrytJmmqd9vJprmrN9vZpqm8maUaV72n/9MU3kz0zT1+81M0zRNM9E0dReUaZq6C8o0Td0FZZqm7oIyTVN3QYmmWXQXlGmaugvKNE3dBWWapu6CMk3TNM2R0/zmme3Nea7Tx3de1o956jYo1zx1H5RrnroRyjVP3QnlmqduhVLNc9G9UK556mYo5DznpTFP3Q3lmqduh3LN0zTPKPOsc33P83Mqv+ap+6Fc89T9UK556n4o1zx1P5RrnrofSjVP0/1QrnnqfijkPD/+luH3PHU/lGueuh/KNU/TPF3O85yQbny8T0h3OOAJLfP+nlC1iwnNttv5nmv83tF0L+N/RrprGTkjcP+k6aYl0TSr7lkyTVO3LJmmqTuWTNPUDUumaZqmmWiauovJNE3d22Sapm54Mk1Td0GZpqm7oETTXHUXlGmaugvKNE3dBWWapu6CMk3TNM1E09RdUKZp6i4o0zR1F5RpmroLyjRN3QUlmuamu6BM09RdUKZp6i4o0zR1F5RpmqZpJpqm7oIyTVN3QZmmqbwZZZq2vj6wbGtjmrvyZqZpytOGmeb1BvDdNM1E05SnzTRNedpM09TvNzNNU7/fzDRN5c0o0+zYr3cob2aapn6/mWma+v1mpmnqLijTNE3TTDRN3QVlmqbugjJNU3dBmaapu6BM09RdUJ5pzpPugjJNU3dBmaapu6Ch0/zmmTv2RM+TboNyzdM0z1Tz1I1QrnnqTijXPHUrlGueuhfKNU/dDIWc57z8eZ6z7oZyzVO3Q7nmqfuhMPPs2BM9z7ofyjVP0zxTzVP3Q7nmqfuhXPPU/VCueep+KNc8dT8Ucp4ff8vwa55F90O55qn7oVzz1P2Qz3meE9KNj/cJmSYEnlBd3xM61osJHeX1V5LHNn+85Y6PCelWxvuEdM8yckLY7sm56JYl0zR1x5JpmrphSTTNRfcrmaap25VM09TdSqZp6h4m0zRN00w0Td3vZJqm7oIyTVN3QZmmqbugTNPUXVCiaZrugjJNU3dBmaapu6BM09RdUKZpmqaZaJq6C8o0Td0FZZqm7oIyTVN3QZmmqbugRNOsugvKNE3dBWWapu6CMk1Td0GZpmmaZqJpKm9Gmaatrw8r29qapvJmommu8rRhpnm5/Xte5WkzTVOeNtM0TdNMNE39fjPTNPX7zUzTVN6MMs2O3Xqr8mamaer3m4mmuen3m5mmqbugTNPUXVCmaeouKNM0TdNMNE3dBWWapu6CMk1Td0GZpqm7oEzT1F3Q0Gl+Q8Nekz/q5w6Dj+7oXXdBmaapu6BM09RdUKZp6i4o0zRN00w0Td0FZZqm7oLCTLO+hnJsU2OaugvKNE3dBWWapu6CEk3z0F1QpmnqLijTNHUXlGmaugvyOc1zQqYJOZ+Q7mzQEzreu51tni8mVMq6nF9dfn31OSPdxPifke5Xxs7oHFHjLy4O3Zl4n5DuQXxPqEy62/A+Id1XeJ+Q7iC8T0j3CkMnVF/NXWWbGxMyTcj5hHSv4H1CulXwPiHdKXifkO4UvE9IdwrOJzTrTsH7hHSn4H1CulPwPiHdKXifkGlCziekO4W/mdDJUckfw1H5HMNRKRrDUVkXwrEokWI4KjdiOCrdYTgqg2E4mjhCOCrPYDgqz2A4Ks/8J8eTDWtG2cqbzb5d/Bv7gXDyqFvjXxlrSoGTXFhzCp4ka1LBk2TNKniSrGkFT9JEEkSSNbHgSbJmFjxJ1tSCJ6mMgyKpjAMiaco4KJLKOCiSyjgokso4KJImkiCSyjgokso4KJLKOCiSyjgokso4IJJVGQdFUhkHRVIZB0VSGQdF0kQSRFIZB0VSGQdFUhkHRVIZB0VSGQdEclXGQZFUxkGRVMZBkVTGQZE0kQSRVMZBkVTGQZFUxkGRVMZBkVTGAZHclHFQJJVxUCSVcVAklXFQJE0kQSSVcVAklXFQJJVxUCSVcVAklXFAJHdlHBRJZRwUSWUcFEllHBRJE0kQSWUcFEllHBRJZRwUSWUcFEllHBDJQxkHRVIZB0VSGQdFUhkHRdJEEkRSGQdFUhkHRVIZB0VSGQdFUhkHQ3KZlHFQJJVxUCSVcVAklXFQJE0kQSSVcVAklXFQJJVxUCSVcVAklXFAJGdlHBRJZRwUSWUcFEllHBRJE0kQSWUcFEllHBRJZRwUSWUcFEllHBDJooyDIqmMgyKpjIMiqYyDImkiCSKpjIMiqYyDIqmMgyKpjIMiqYwDIrko46BIKuOgSCrjoEgq46BImkiCSCrjoEgq46BIKuOgSCrjoEgq44BImjIOiqQyDoqkMg6KpDIOiqSJJIikMg6KpDIOiqQyDoqkMg6KpDIOiGRVxkGRVMZBkVTGQZFUxkGRNJEEkVTGQZFUxkGRVMZBkVTGQZFUxgGRXJVxUCSVcVAklXFQJJVxUCRNJEEklXFQJJVxUCSVcVAklXFQJJVxQCQ3ZRwUSWUcFEllHBRJZRwUSRNJEEllHBRJZRwUSWUcFEllHBRJZRwQyV0ZB0VSGQdFUhkHRZIh45xqjUotQ1Y41TL4+VMtg+c+1TL44lMtg3d9q6XYMX+qZfCAp1oGn3aqpfJSFDvPT7VRvdSpIKo/OhVE9Tyngqg+5lQQ1Zu8FFjYfc+ngqge4lQQ1RecCqKe9aeCqOf3qSD6mWxh99eeCqKfyRZ2X+upIPyZHHY/6akg/Jkcdh/nqSD8mRx2/+SpIPyZ7Hvfoll9K1inXwr+3W8AzfdWxBv0uj7vb9Dr2h3g9freA3iDXtfO4wa9rn3KDXpdu5ob9BqZXteO6Qa9ZP7K90a2G/SS+Svf283wen3vILtBL5m/8r3P6wa9ZP7K926sG/SS+Svfe6Zu0Evmr3zvbLpBL5m/8r3/6Aa9ZP7K9y6hG/SS+Svfe3lu0Evmr3zvuLlBL5m/8r0v5ga9ZP7K9+6VG/SS+Svfe0xu0Evmr3zvBLlBL5m/8r1f4wa9ZP7K966KG/SS+Svfex9u0Evmr3zvULhBL5m/8r2P4Aa9ZP7Kd7f/DXrJ/JXvnvwb9JL5K9+d8zfoJfNXvvvbb9BL5q98d6HfoJfMX/nuFb9BL5m/8t3RfYNeMn/lu+/6Br1k/sp3d/QNesn8le+O5xv0kvkr3z3PN+gl81e+u55v0Evmr3z3Pd+gl8xf+e58vkEvmb/y3ft8g14yf+W7J/oGvWT+yncH9Q16ufxV9d1vfYNeLn9VfXdn36CXy1/Vycj0cvmr6rvz+wa9XP6q+u4Tv0Evmb/y3VV+g14yf+W7B/0GvWT+ynfH+g16yfwVWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9kvW3V7L+9krW317J+tsrWX97Jetvr2T97ZWsv72S9bdXsv72StbfXsn62ytZf3sl62+vZP3tlay/vZL1t1ey/vZK1t9eyfrbK1l/eyXrb69k/e2VrL+9OupvP5/Jjwc6n8mPTzmfyY+XOJ/Jz3l/PpOfM/l8Jj/n5vlMfs6285n8nD/nM/k5I97P5Kgn+nwmh+9xR33L5zM5fI876i0+n8nhe9xR/+/5TA7f4456dM9ncvged9RHez6Tw/e4o17X85kcvscd9aOez+TwPe6oZ/R8JofvcUd9neczOXyPO+q9PJ/J4Xv85v7I8+csD/0ce+jn1Id+zvrQz9ke+jn7Qz/neOTnrDf3v50/Z37o55SHfs7y0M+xh35OfejnrA/9nO2hn7M/9HMeeh/MD70P5ofeB/ND74P5offB/ND7YH7ofTA/9D6YH3ofzA+9D+aH3gflofdBeeh9UB56H5SH3gflofdBeeh9UB56H5SH3gflofdBeeh9sDz0Plgeeh8sD70PEJ87Lpu9f85+/M9/vzvp+eudFfHp4Bueqrp8qtXlU20un2p3+VSHx6dCfAL0hqeaXT5VcflULt/t5vLdbi7f7eby3W4u3+3m8t1uLt/t1eW7vbp8t1eX7/bq8t1eXb7bq8t3e3X5bq8u3+3V5bu9uny3ry7f7avLd/vq8t2+uny3ry7f7avLd/vq8t2+uny3ry7f7avLd/vm8t2+uXy3by7f7ZvLd/vm8t2+uXy3by7f7ZvLd/vm8t2+uXy37y7f7bvLd/vu8t2+u3y37y7f7bvLd/vu8t2+u3y37y7f7bvLd/vh8t1+uHy3Hy7f7YfLd/vh8t1+uHy3Hy7f7YfLd/vh8t1+eHy3b5PHd/s2eXy3b5PHd/s2eXy3b5PHd/s2eXy3b5PHd/s2eXy3b5PHd/s2uXy3zy7f7bPLd/vs8t0+u3y3zy7f7bPLd/vs8t0+u3y3zy7f7bPLd3tx+W4vLt/txeW7vbh8txeX7/bi8t1eXL7bi8t3e3H5bi8u3+2Ly3f74vLdvrh8t7v8XOrm8nOpm8vPpW4uP5e6ufxc6ubyc6mby8+lbi4/l7q5/Fzq5vJzqZvLz6VuLj+Xurn8XOrm8nOpm8vPpW4uP5e6ufxc6ubyc6mby8+lbi4/l7q5/Fzq5vJzqZvLz6VuLj+Xurn8XOrm8nOpm8vPpW4uP5e6ufxc6ubyc6mby8+lbi4/l7q5/Fzq5vJzqZvLz6VuLj+Xurn8XOrm8nOpm8vPpW4uP5e6ufxc6ubyc6mby8+lbi4/l3rc3NP8f7/6q73Dyz7/88WHleX8zn/cO/zNd563aX0p/LnVOL96Wv/yO5elvr5zWY7zq+d1+dN3nsv7O9eL72zrawmzrWtjmn427Wiafz9NP7vmNM2/n6afLX2a5t9P0zTNRNP0sxlS0/z7afrZqalp/v00/Wwj1TT/fpp+9rhqmn8/TT8bcDXNv57morugTNPUXVCUadbphbnOe2OaugvKNE3dBWWapmmaiaapu6AwLug4p3k0pqm7oEzT1F1QpmnqLijTNHUXlGiaprugTNPUXVCYab5h2DE1pqm7oEzT1F1QpmmapplomroLyjRN3QVlmqbugjJNU3dBmaapu6BE06y6C8o0Td0FZZqm7oIyTVN3QZmmaZpmomnqLijTNHUXlGmaugvKNE3dBWWapu6CEk1z1V1QpmnqLijTNHUXlGmaugvKNE3TNBNNU3dBmaapu6BM09RdUKZp6i4o0zR1F5RompvugjJNU3dBmaapu6BM09RdUKZpmqaZaJq6C8o0Td0FZZqm7oIyTVN3QZmmqbugRNPclTfR05z39zSrIad53R29K29mmqZpmommqbyZaZrKm5mmqbyZaZrKm5mmqbyZaJqH/vYg0zT1tweZpqm7oEzT1F1QlGl2bLc5TNNMNE3dBWWapu6CMk1Td0FhXND1Bo1Dd0GZpqm7oDTTrNOku6BM09RdUKZp6i4o0zR1FxRmmld/s/czTdM0E01Td0GZpqm7oEzT1F1QpmnqLijTNHUXlGias+6CMk1Td0GZpqm7oEzT1F1QpmmapplomroLyjRN3QVlmqbugjJNU3dBmaapu6BE0yy6C8o0Td0FZZqm7oIyTVN3QZmmaZpmomnqLijTNHUXlGmaugvKNE3dBWWapu6CEk1z0V1QpmnqLijTNHUXlGmaugvKNE3TNBNNU3dBmaapu6BM09RdUKZp6i4o0zR1F5Romqa7oEzT1F1QpmmapomdZtmn9zTnFTnNq+7on2kqb2aapvJmpmkqb2aapvJmpmkqbyaaZlXezDRN5c1M09TfHmSapv72INM0TdNMNE3dBUWZ5uV2m59p6i4o0zR1F5RpmroLyjRN3QWFcUHXGzRW3QVlmqbugjJNU3dBmaapu6BM0zRNM9E0dRcUZprXf7O36i4o0zR1F5RpmroLyjRN3QUlmuamu6BM09RdUKZp6i4o0zR1F5RpmqZpJpqm7oIyTVN3QZmmqbugTNPUXVCmaeouKNE0d90FZZqm7oIyTVN3QZmmqbugTNM0TTPRNHUXlGmaugvKNE3dBWWapu6CMk1Td0GJpnnoLijTNHUXlGmaugvKNE3dBWWapmmaiaapu6BM09RdUKZp6i4o0zR1F5RpmroLyjPNedJdUKZp6i4o0zR1F5RpmroLyjRN5c2OaUIbnudJqfB55spuzzNXwnqc+awc9DxzpZXnmStTPM9czv955ibmjzPXb1SfZ64c+jxz5VAs8+stFfOsHPo8c+XQx5kX5dDnmSuHgs/Qy4b2uSiHPs9cOfR55ibmjzNXDn2euXLo88yVQ8HMr3/vX5RDn2euHPo480U59HnmyqHPM1cOfZ65cujzzE3MH2euHPo8c+XQ55krhz7PXDn0eebKoY8zN+XQ55krhz7PXDn0eebKoc8zNzF/nLly6PPMlUOfZ64c+jxz5dDnmSuHPs68Koc+z1w59HnmyqHPM1cOfZ65ifnjzJVDn2euHPo8c+XQ55krhz7PXDn0cearcujzzJVDn2euHPo8c+XQ55mbmD/OXDn0eeaJ/Dm2TWhN5KKxZLZEXhdMJpEjBZNJ5BvBZBK5OzAZE5kGmUROCUwm0b06mEyi228wGXngFhlOD9zRTbdzeuAeMpweuIcMpwfuIUPqga+7pHYTmQYZUg/cQYbUA3eQIfXAHWRIPXAHGdJ74OvfHRyk98AdZEjvgTvIkN4Dd5Ah9cAdZExkGmRIPXAHGVIP3EGG1AN3kCH1wB1k5IH/TKZM8sAtMvLALTLywC0y8sAtMiYyDTLywC0y8sAtMvLALTLywC0y8sANMrM8cIuMPHCLjDxwi4w8cIuMiUyDjDxwi4w8cIuMPHCLjDxwi4w8cINMpv3gYDLywC0y8sAtMvLALTImMg0y8sAtMvLALTLywA0yzvfMzq/GjGOp9YrMF9+5WDlez2z7+cw/v7P9w1fPx/761j9fMH08x/K3E7r8bF5xvpVWEyrOd9hqQsX5xltNqDjfj6sJFefbdDWh4nz3riZUnG/q1YSK872+mlBxvgVYEyrOdwZrQsX5huHsE7puSinO9xFrQsX59mJNqDjfdawJFeebkdM7hctWlOJ8j7ImVJxvXdaEivMdzZpQcb7RWRMqzvc/a0LF+bbo9BO6/lsf57ulNaHifBO1JlSc763WhIrzLdeaUHG+E1sTKs43aGtCxfm+bU2oON/OrQkV57u8NaHifPO3JlSc7wnXhIrzreKaUHG+g1wTKs43lmtCZdWdgvcJ6U7B+4R0p+B9QrpTcD6hTXcK3iekOwXvE9KdgvcJ6U7B+4RME3I+Id0peJ+Q7hS8T0h3Ct4npDsF7xPSnYLzCe26U/A+Id0peJ+Q7hS8T0h3Ct4nZJqQ8wnpTsH7hHSn4H1CulPwPiHdKXifkO4UnE/oIM1DS31957Ic29WElu01z9nqB8n5T19dp9cXf/Zdzfv6QZ004wymbqI+gDppFhlMnTRfDKZOmhnupG4vv1M/afyiTpoDBlMn9fZDqS8T6e8AB1Mn/b3endSX/U19aVBXNh1BXdl0BHUT9QHUlU1HUFc2HUFd2RRO/X3NXz/u4n9TVzYdQV3ZdAD1Wdl0BHVl0xHUlU1HUFc2HUHdRH0AdWXTEdSVTUdQVzYdQV3ZdAR1ZdMB1Iuy6QjqyqYjqCubjqCubDqCuon6AOrKpiOoK5uOoK5sOoK6sukI6sqmA6gvyqYjqCubjqCubDqCurLpCOom6gOoK5uOoK5sOoK6sukI6sqmI6grmw6gbsqmI6grm46grmw6grqy6QjqJuoDqCubjqAuv95Bvcz24lH27Yr6ZRfSYvLrA6hX+fUR1OXXR1CXXx9BXX4dTv26vaGaqA+gLr8+grp+lzSCun6XNIK6sukI6sqmcOrX9zCrsukI6sqmI6grm46grmw6grqJ+gDqyqYjqCubjqCubDqCurLpCOrKpgOob8qmI6grm46grmw6grqy6QjqJuoDqCubjqCubDqCurLpCOrKpiOoK5sOoL4rm46grmw6grqy6QjqyqYjqJuoD6CubDqCurLpCOrKpiOoK5uOoK5sOoD6oWw6grqy6QjqyqYjqCubjqBuoj6AurLpCOrKpiOoK5s+T90mUr8+ba8Phf4QLRfUr1swbCJ14HCOpJ4azpHUJcM5mjhCOJI62e84Wnlx/NT3iyOpN4VzJHWbcI6kv9uAcyT9bcV3HC+bXGxWnsFwVJ7BcFSewXBUnsFwNHGEcFSe6eB4ff84K89gOCrPYDgqz2A4Ks9AOBblGQxH5RkMR+UZDEflGQxHE0cIR+UZDEflGQxH5RkMR+UZDEflGQjHRXkGw1F5BsNReQbDUXkGw9HEEcJReQbDUXkGw1F5BsNReQbDUXkGwtGUZzAclWcwHJVnMByVZzAcTRwhHJVnMByVZzAclWcwHJVnMByVZyAcq/IMhqPyDIaj8gyGo/IMhiOnf5yP8u6dOfarlpqOPoDK6R/xHDn9I54jp3+Ec1w5/SOeI6d//JLjda/Cyukf8Rw5/SOeo4kjhCPnffiXHK8/x74qz2A4Ks9gOCrPYDgqz0A4bsozGI7KMx0cr+8fN+UZDEflGQxHE0cIR+UZDEflGQxH5RkMR+UZDEflGQhH0t3xeI7KMxiOyjMYjsozGI4mjhCOyjMYjsozGI7KMxiOyjMYjsozEI6k+8bxHJVnMByVZzAclWcwHE0cIRyVZzAclWcwHJVnMByVZzAclWcQHCvpPnY8R+UZDEflGQxH5RkMRxNHCEflGQxH5RkMR+UZDEflGQxH5RkIR9L91/O21ZfC/f99t//O8bIPoJLuv8ZzNHGEcCT1j3COpP4RzpHUP37H8bJXoZLuv8ZzJPWPaI6k+6/xHEnvw7/jePk59kq6/xrPUXkGw9HEEcJReQbDUXkGw1F5poPj9f0j6f5rPEflGQhH0v3XeI7KMxiOyjMYjsozGI4mjhCOyjMYjsozGI7KMxiOyjMYjsozEI6k+6/xHJVnMByVZzAclWcwHE0cIRyVZzAclWcwHJVnMByVZzAclWcgHEn3X+M5Ks9gOCrPYDgqz2A4mjhCOCrPYDgqz2A4Ks9gOCrPYDgqz0A4su5jh3NUnsFwVJ7BcFSewXA0cYRwVJ7BcCT1j/V4oZnXrVxxvO4DYN1/jebIuv8azpHUP8I5kvpHOEdS//gdx+vPabLuv4ZzJPWPcI6k9+FwjqT34XCOyjMYjsozHRyv8zXr/ms4R+UZDEflGQxH5RkMRxNHCEflGQxH5RkMR+UZDEflGQxH5RkIR9b913COyjMYjsozGI7KMxiOJo4QjsozGI7KMxiOyjMYjsozGI7KMwiOK+v+azhH5RkMR+UZDEflGQxHE0cIR+UZDEflGQxH5RkMR+UZDEflGQjHWXkGw1F5BsNReQbDUXkGw9HEEcJReQbDUXkGw1F5BsIx0/7ruby/c734zra+ahVs/f0UJ5lEjhBMJpHHA5NJ5NrAZExkGmQSOSswmUReCUwmkfsBk0l0Pwsmk+jGFUsm085kMBlOD1yn1yN/9tv8JsPpgXvIcHrgHjImMg0ypB74OMkcDTKkHriDDKkH7iBD6oE7yJB64GsymfbsgsmQ3gPv8ysdHFODDOk9cAcZ0nvgDjImMg0ypB64gwypB+4gQ+qBO8iQeuAOMqQe+JpMpt2sYDLywC0y8sAtMvLALTImMg0y8sAtMvLALTLywC0y8sAtMvLADTKZ9nmCycgDt8jIA7fIyAO3yJjINMjIA7fIyAO3yMgDt8jIA7fIyAM3yGTaSQomIw/cIiMP3CIjD9wiYyLTICMP3CIjD9wiIw/cIiMP3CIjD9wg43tv4LS+vviY1+WCzH68Pue2H43Pufne7gdXa1RqXXsJuFrX/gCu1vWZ/5Xao7we4/h4isZ3nl/v76O03t+uz/yhZFyf+SPJ+N71NpSM63uvoWTy+EQ0mTyeEk3GKMl8k9DaT3xSzONrR1LM45dHUuT04WiKnJ4dTZHT32Mpbr73pIWhyJkb0BQ5MwaaImceQVM0UQRQVHZBUFR2QVBUdkFQVHZBUFR2AVD0vRMtDEVlFwRFZRcERWUXBEUTRQBFZRcERWUXBEVlFwRFZRcERWUXAEXf+/jCUFR2QVBUdkFQlNO5/DzK5SaizffGsygUfW+68kHx8rNRm++tWGEo6nRBUNTNGIKiiSKAom7GEBTlF68o1uW9177WBkX5RQRF3YwhKOpmDEDR94ayMBSVXRAUlV0QFJVdEBRNFAEUlV0QFJVdEBSVXRAUlV0QFEmzyxdPMf/8dupFo+7z+RSrnRx975YLxJE0v8A5kiYYOEfSDAPnaOII4UiaY+AcSZPMNxzXyV401nlpcCTNMnCOpGkGzlF5BsLR957AQByVZzAclWcwHJVnvuL40XH5m6OJI4Sj8gyGo/JM42/ife9OHEpGmaNFRimiQcb37sShZOT0W2Tk3VtkErnxy174zfc+RLjaRM62Q20i/9mhNpGn7FCbyCd2qE3k/a7V7on8XIfaRB6tQ20i39WhlspLJdrx2KOWyksl2vHYo5bKS2Xa29ihlspLZdqv2KGWyktl2oPYoZbKS2XaV9ihlspLZdr/16GWyktl2qfXoZbJS+2Z9tN1qGXyUnumfW8dapm81D4ZlVomL7Vn2kfWoZbJS+2Z9nt1qKXyUpn2ZXWopfJSmfZPdail8lKZ9jl1qKXyUpn2I3WopfJSmfYNdail8lKZ9vd0qKXyUpn24XSopfJSxajUUnmpTBuYOtRSealC5aUKlZfKtK2qQy2Vl8q0/alDLZWXyrRNqUMtlZfKtJ2oQy2Vl8q07adDLZWXyrQ9p0MtlZfKtI2mQy2Vl8q03aVDLZWXyrQtpUMtlZfKtH2kQy2Vl8q0y6NDLZWXYt1D8M0O47X+87W2rg2K2qaGoKhtagiK2qaGoKhtagiK2gQNoMi6ewBMUZugERS1CRpBUZugERRNFAEUlV0u98ZOr+9b571BUdkFQVHZBUFR2QVBUdnl8nQ5TorHnymy7kcAU1R2QVBUdkFQVHZBUDRRBFBUdrmkuL9+B2hH43eAmXZVDKSo7IKgqOyCoKjsAqCYaRfIQIrKLgiKyi4IisouCIomigCKyi4IisouCIrKLgiKyi4IisouAIqZdu8MpKjsgqCo7IKgqOyCoGiiCKCo7IKgqOyCoKjsgqCo7IKgqOzy9xSPTLuuBlJUdkFQVHZBUFR2QVA0UQRQVHZBUFR2QVBUdkFQVHZBUFR2AVDMtFtuIEVlFwRFZRcERWUXBEXPfvHnN5RvilOZLyj+/Pbjny/+ucFvqPXs6/BqPfsvvFrPPgmu1vV+N7xaz77jO7XfvOuveyIP17vgxpLx7A/GkjGRaZDxfAc5lkwen4gmk8dTosnk8Z93JbT2E58U8/jagRRd7/CLQ5HTh6Mpcnp2NEVOf4+maKIIoMiZG9AUOTMGmiJnHkFTVHZBUFR2AVB0vTMzDkVlFwRFZRcERWUXBEUTRQBFZRcERWUXBEVlFwRFZRcERWUXAEXXO2rjUFR2QVBUdkFQVHZBUDRRBFBUdkFQVHYBUHS9DdYHxeuth4frbbBxKOp0AXw2yvUGzjgUdbogKOpmDEFRN2MIiroZA1B0vYHTB8W6HP98ba21QVF+EUFRN2MIiroZQ1A0UQRQVHZBUFR2QVBUdkFQVHZBUFR2AVB0vYEzDkVlFwRFZRcERdLs8sVTzHV7IZ/r/vEUq31wNHGEcCTNL3COpAkGzpE0w8A5kqYYOEfSHIPm6HofpxOO62QvGuu8NDiSZhk4R9I0A+eoPIPhaOII4ag8g+GoPIPhqDzzFcePjsvfHJVnMByVZwAc18n1js4RHE8ySigtMsocLTJKES0yJjINMnL6LTLy7i0yidz4VS/8j9pEnrlDbSJne63W9Z5FvNpEnrJDbSKf2KE2kffrUGtUahN5tA61iXxXh1oqL5Vox2OPWiovlWjHY49aKi+VaW9jh1oqL5Vpv2KHWiovlWkPYodaKi+VaV9hh1oqL5Vp/1+HWiovlWmfXodaKi+VaT9dh1oqL5Vp31uHWiovlWl/WodaKi+VaR9Zh1oqL5Vpv1eHWiovlWlfVodaKi+Vaf9Uh1oqL5Vpn1OHWiovlWk/UodaKi+Vad9Qh1oqL5Vpf0+HWiovlWkfTodaKi9VqbxUpfJSmTYwdail8lIrlZdaqbxUpm1VHWqpvFSm7U8daqm8VKZtSh1qqbxUpu1EHWqpvFSmbT8daqm8VKbtOR1qqbxUpm00HWqpvFSm7S4daqm8VKZtKR1qqbxUpu0jHWqpvFSmXR4daqm8FOsegm92GK/1n6+1tdFbxbqFAEuRdQcBmKK2qSEoapsagqI2QSMomigCKGoTNIKiNkEjKGoTNIKisguCorLL5d7Y6fV967z/keLMum8ATFHZBUFR2QVBUdnl8nQ5TopHg6KJIoCisguCorILgqKyC4KisguCorLLJcX99TtAO/78O8A5066KgRSVXRAUlV0QFJVdEBRNFAEUlV0QFJVdEBSVXRAUlV0QFJVdABQz7YYZSFHZBUFR2QVBUdkFQdFEEUBR2QVBUdkFQVHZBUFR2QVBUdkFQDHTLqaBFJVdEBSVXRAUlV0QFE0UARSVXRAUlV0QFJVdEBSVXRAUlV0AFDPtPhtIUdkFQVHZBUFR2QVB0UQRQFHZBUFR2QVBUdkFQNH3fre1vr7zvq3LBcX9eH2mfj/WhlrXvg6u1rX/gqt17ZPgao1KrWvf8ZXab9711z2Rs+9dcEPJuPYHQ8m4vq8cSsb1HeRIMr531w0lk8dTosnk8Z93JbT2E58U8/jakRRNFAEUOX04miKnZ0dT5PT3aIqcWQBNkTM3gCn63ukYhiJnHkFTVHZBUFR2QVA0UQRQVHZBUFR2QVBUdkFQVHZBUFR2AVD0vUM1DEVlFwRFZRcERWUXBEUTRQBFZRcERWUXBEVlFwRFZRcERWUXAEXf+53DUFR2QVBUdkFQVHZBUDRRBFCU0/n7bbCz722wQSgW3xs4fVC8/Mxo8b2BMwxFnS4IiroZQ1DUzRiCom7GEBTlFy+3ZC/HP19ba21QlF8EUPS9gTMMRd2MISgquyAoKrsgKJooAigquyAoKrsgKCq7ICgquyAoKrsAKPrewBmGIml2+eIp5nm1F415+3iKffvgSJpe4BxJ8wuco4kjhCNphoFzJE0xcI6kOQbOkTTJfMXR5pOj/eL4h6d4e81jPc7vvOx/eoq6v57isI+n+BgPaUQKMh7fG0Q1HoU61+NRVnQ9HkVQ1+MxjcfzeBSYXY9HOdz1eBTvXY9Htwaux6Nbg+vxHG8aZVr/fDnme8luII7K4RiOCswYjkq2GI4mjhCOyooYjgp1lxx/fqX05rjsDY5KXxiOikkYjsozEI6JlkCP5ag8g+GoPIPhqDzzFUerDY4mjhCOyjMYjsozjYIn0qXfPWSUOVpklCIaZEiXfveQkdNvkZF3b5FJ5MYvl7+XTAu3O9QmcrYdahP5zw61iTxlh9pEPrFDbSLvd60204LlDrWJPFqH2kS+q0MtlZfKtAC4Qy2Vl8q0ULdDLZWXyrSgtkMtlZfKtPC1Qy2Vl8q0QLVDLZWXyrSQtEMtlZfKtOCzQy2Vl8q0MLNDLZWXyrSAskMtlZfKtNCxQy2Vl8q0ILFDLZWXOqi81EHlpTKt5OxQy+SllonJSy0Tk5daMq0v7VDL5KWWyajUMnmpJdN6zQ61TF5qybSuskMtlZfKtP6xQy2Vl8q0TrFDLZWXyrSesEMtlZfKtO6vQy2Vl8q0Pq9DLZWXyrSOrkMtlZfKtNytQy2Vl8q0KK1DLZWXyrR0rEMtlZfKtMCrQy2Vl8q0XqpDLZWXyrT8qEMtlZfKtJqnQy2Vl8q0OKZDLZWXyrTWpEMtlZfKtMujQy2Vl8q0F6NDLZWXyrRjokMtlZfKtK+hQy2Vl8q0+6BDLZWXyrRHoEMtlZfK1MnfoZbKS2Xqt+9QS+WlMnXFd6il8lKZOt071FJ5qUzd6x1qqbxUpo70DrVUXoqq93yh6j1fqHrPF6re84Wq93yh6j1fqHrPF6re84Wq93yh6j1fqHrPl0zd2N9sTprL+ynqxdfaWv/5WlvXBkXSPXdgiqQ78bAUM3WED6RIumsPTJF0Lx+YIulGbTBFE0UARdJt2mCKpLu0wRSVXRAUlV2uKNbp9X3rvDcoKrsAKGbq5B9IUdkFQVHZ5fJ0OU6KR4OisguCookigKKyC4KisguCorILgqKyyyXF/fU7QDsavwPMtKtiGEXLtANjIEVlFwRFZRcERWUXBEUTRQBFZRcERWUXBEVlFwRFZRcERWUXAMVMO2cGUlR2QVBUdkFQVHZBUDRRBFBUdkFQVHZBUFR2QVBUdkFQVHYBUMy042kgRWUXBEVlFwRFZRcERRNFAEVlFwRFZRcERWUXBEVlFwRFZRcAxUw71QZSVHZBUFR2QVBUdkFQNFEEUFR2QVBUdkFQdO0X6/QSsNe1XFC8/ky9+d7vBlfr2n/B1br2SXC1rv0MXK1RqXXtD+BqXZ/jcLWu7wrhal3f6cHVUnkp3/vdvlJ73Tpivve7wdXm8VI9avN4qR61luctddlEYL73u8HVJvJSHWoTeakOtYm8VIfaRF7qWq3v/W7fqb2+c/S93w2uNtG9VIfaRPdSHWqNSm0iL9WhNpGX6lCbyEt1qE3kpTrUJvJS12p973eDq6XyUr73u8HVUnkp3/vd4GqpvNRG5aV87+6Dq6XyUr534aHV+t5ZB1dL5aV874CDq6XyUr53qsHVUnkp3zvK4GqpvJTvnV9wtVReyvcOLbhaKi/leycVXC2Vl/K94wmulspL+d6ZBFdL5aV87yACq62+97Msx/FSa+t8pfbyb8+r7z0qcLWuz1u4WtfnLVyt6/MWrtb1eQtX6/q8hat1fd7C1bq+u0Cr9b2HAq6Wykv53uvwldrrTz9V3/sX4GqNSm0eL9WjNpGXuvyETPW9HwCuNpGX6lCbyEtdq/Xdiw9Xm8hLdahNdC91fefouw8ertao1Ca6l+pQm8hLdahN5KU61CbyUh1qE3mpa7W+e7rhahN5qQ61VF7Kdz81XK1RqaXyUr57meFqqbzUQuWlfHdjo9X67saGq6XyUr67seFqqbyU725suFoqL+W7GxuulspL+e7Ghqul8lK+u7Hhaqm8lO9ubLhaKi/luxsbrpbKS/nuxoarpfJSvrux4WqpvJTvbmy4WtfnbalvtUvdL9Tux+tvz/ej8bfnvvuT4Wpdn7dwta7PW7ha1+ctXK3r8/Yrtd/sXj3m1/v7KK33t+uzeSQZ373MQ8m4vj8ZSsb1XctQMnl8IpqMiUyDTB7/edfG9PYTnxTz+NqRFPP45ZEUOX04miKnZwdT9N0VHoYiZxZAU+TMDWiKnBkDTdFEEUBR2QVBUdkFQVHZBUFR2QVBUdkFQNF3N38YisouCIrKLgiKyi4IiiaKAIrKLgiKyi4IisouCIrKLgiKyi5/T3GdlF0QFJVdEBSVXRAUlV0QFE0UARSVXRAUlV0QFJVdABR9bzdxQfF6a8rqe2tKGIo6XS4pXn5mdPW9CSQMRZ0uCIq6GUNQ1M0YgKLvTSthKMovXlGsy+shaq0NivKLCIq6GUNQNFEEUFR2QVBUdkFQVHZBUFR2QVBUdgFQ9L3ZKAxFZRcERWUXBEVlFwRF46T4xVPMxV7I51I/Oyn3D46k6QXOkTS/wDmSJhg4R9IMA+dImmLQHH1vFQvEkTTJfMVxszfHfWlwJM0ycI6kaQbO0cQRwlF5BsNReQbDUXkGw1F55iuOH3/F85uj8gyEo+/NfoE4Ks9cclzm1x/Qz0uxBkflGQxH5RkMRxNHCEflGQxH5RkMR+UZDEflmcZnAX1vtRxJxvcGzKFklCJaZJQLWmTk9FtkTGQaZBK58cs9YWuiza09ahM52w61ifxnh9pEnvJabaYNqx1qE3m/DrWJ/FyH2kQerUOtUaml8lKZtoV2qKXyUpm2b3aopfJSmbZZdqil8lKZtkN2qKXyUpm2LXaopfJSmbYXdqil8lKZtgF2qKXyUpm263WopfJSmbbVdail8lKZtr91qKXyUpm2qXWopfJSmbaTdahl8lJbpm1fHWqZvNSWaXtWh1omL7VNRqWWyUttmbY7dahl8lLbxOSltonKS81UXirT3q8OtVReaqbyUrNRqaXyUpl2mXWopfJSmXaDdail8lKZdm11qKXyUpl2V3WopfJSmXZBdail8lKZdit1qKXyUpl2FXWopfJSmXb/dKil8lKZdul0qKXyUpl203SopfJSmfa8dKil8lKZdqZ0qKXyUpn2j3SopfJSmXZ5dKil8lKZ9mJ0qKXyUpl2THSopfJSmfY1dKil8lKZdh90qKXyUpn2CHSopfJSmTr5O9RSealM/fYdaqm8VKau+A61VF4qU6d7h1oqL5Wpe71DLZWXytSR3qGWyktR9Z5vVL3nG1Xv+UbVe75R9Z5vVL3nG1Xv+UbVe75R9Z5vVL3nG1Xv+ZapG/ubzUlzeT9FvfhaW1/LEW3985alLVPn9kCKpDvxwBRJ9+eBKZLu2gNTNFEEUCTdqA2mSLpPG0yRdJs2mCLpLm0wRWUXAMVMHfc3UazT6/vWeW9QVHZBUFR2QVBUdkFQNFG8Ol2Ok+LRoKjsgqCo7IKgqOyCoKjsgqCo7PL3FPdMOyXuori/fgdox9SgqOyCoKjsgqCo7IKgaKIIoKjsgqCo7IKgqOyCoKjsgqCo7AKgmGmHy0CKyi4IisouCIrKLgiKJooAisouCIrKLgiKyi4IisouCIrKLgCKmXYmDaSo7IKgqOyCoKjsgqBoogigqOyCoKjsgqCo7IKgqOyCoKjsAqCYaUfZQIrKLgiKyi4IisouCIomigCKyi4IisouCIrKLgiKyi4Air73u83LS8DPdfJxQXE/Xp+p34+1oda1r4Orde2/4GqNSq1rPwNX69p3fKX2m3f9dU/k7nsX3FAyrv3BUDKu7ytHkvG9j24omTw+EU0mj6dEk8njP+9KaO0nPimaKAIo5vHLIyly+nA0RU7PjqbI6e/RFDmzAJii792LYShyZgw0Rc48gqao7IKgaKIIoKjsgqCo7IKgqOyCoKjsgqCo7AKg6HvXaRiKyi4IisouCIrKLgiKJooAisouCIrKLgiKyi4IisouCIrKLgCKvvc7h6Go7IKgKKfz91sPd9/bYMNQ1OkC+GyU7w2cYSjqdEFQ1M0YgqJuxhAUTRQBFOUXL7fBLq8PUddaGxTlFxEUdTOGoKibMQRFZZe/p3j43sAZhqKyC4KisguCorILgqKJIoCisguCorILgqKyC4IiaXb54imOdX993207n2HZPyiSZhcsRd8bOMNQJM0uYIqk2QVMkTS7gCmaKAIokmaXL55int5f/PM/jwZH0vQC50iaX+AclWAwHJVhIBx97+IMxFE5BsNRSeYrjvPa4Kgsg+Fo4gjhqDzz57+CP3xv2hxKRpmjRUYpokVGuaBBxvfmyqFk5N1bZBK58csm+MP3Jki4WqNSm8h/dqhN5Ck71CbyiR1qE3m/DrWJ/Ny1Wkvk0TrUJvJdHWqpvFSirY49ao1KLZWXyrTVsUMtlZfKtH2xQy2Vl8q0JbFDLZWXyrTNsEMtlZfKtEmwQy2Vl8q0ma9DLZWXyrTprkMtlZfKtDmuQy2Vl8q0ia1DLZWXyrTZrEMtlZfKtCmsQy2Vl8q0eatDLZWXyrTJqkMtlZfKtBmqQy2Vl8q0aalDLZWXyrS5qEMtlZfKtAmoQy2Vl8q0WadDLZWX2qm81E7lpXajUkvlpTLtRupQS+WldiovlWk/1bXaTHukOtRSealMe5k61FJ5qUx7jjrUUnmpTHuDOtRSealMe3g61BJ5qZ8fTeSlfn40kZf6+dFEXurnRxN5qZ8fbVRqibzUz48m8lI/P5rIS/38aCIv9fOjqbxUpj0bHWq1P+1ya/Fa//laW9cGxUTn+ECK2p+GoKj9aQiK2p+GoKjdzwiK2v0MoMi6eQBMUbufERS1+xlBUdkFQdFE8eJr6/T6vnXeGxSVXRAUlV0QFJVdEBSVXS5Pl+OkeDQoKrsAKLLuUgBTVHZBUFR2QVBUdkFQNFG8ori/HsKOxu8AM+2qGEhR2QVBUdkFQVHZBUFR2QVAMdOOkYEUlV0QFJVdEBSVXRAUTRQBFJVdEBSVXRAUlV0QFJVdEBSVXQAUM+30GUhR2QVBUdkFQVHZBUHRRBFAUdkFQVHZBUFR2QVBUdkFQVHZBUAx0w6tgRSVXRAUlV0QFJVdEBRNFAEUlV0QFJVdEBSVXRAUlV0QFJVdABQz7awbSFHZBUFR2QVB0bNf3A57id3nabqguB+vz9TvR+Mz9a73u+HVevZfeLWefRJerWc/A1frer/bd2q/edd39ES63gU3loxnfzCWjOf7yrFkTGQaZPL4RDSZPJ4STSaP/7wrobWf+KSYx9eOpJjHLw+k6Ho3YByKnJ4dTZHT36MpcmYBNEUTRQBFzoyBpsiZR9AUlV0QFJVdEBSVXf6e4ux6F2ccisouCIrKLgiKyi4IiiaKAIrKLgiKyi4IisouCIrKLgiKyi4Aiq5338ahqOyCoKjsgqCo7IKgaKIIoKjsgqCo7IKgqOyCoKjsgqCo7AKg6HobrA+K19tgZ9fbYONQ1Ony958ZnV1v4IxDUacLgKLrDZxxKOpmDEFRN2MIivKLl1uyl+Ofr621NiiaKAIo6mYMQVE3YwiKyi4IisouCIrKLgCKrjdwxqGo7IKgqOyCoKjsgqBoogigqOyCoEiaXb54irke+4vGOm3nU9TtgyNpeoFzJM0vcI6kCQbN0fUmzkgcSVMMnCNpjoFzJE0y33Bcp+PNcd4bHE0cIRxJ0wyco/IMhqPyDIaj8gyGo/IMhKPr7ZxeONaT49riqDyD4ag8g+GoPIPhaOII4ag8g+GoPIPhqDzT+MyQ6/2bY8koczTIuN6TOZaMckGLjJx+i4y8e4uM5SFzuU9oTrSrtEdtImfboTaR/+xQm8hTdqhN5BOv1WbaVdqhNpGf61CbyKN1qE3kuzrUGpVaKi+VaUdnh1oqL5VpP2aHWiovlWnfZIdaKi+VaX9jh1oqL5VpH2KHWiovlWm/YIdaKi+VaV9fh1omL1Uy7b/rUMvkpUqmfXIdapm8VJmMSi2TlyqZ9p11qGXyUiXT/rAOtVReKtM+rg61VF4q036rDrVUXirTvqgOtVReKtP+pQ61VF4q0z6jDrVUXqpQealC5aUKlZfKtOmqQ61RqaXyUoXKS2XaCtahlspLZdqyda020zasDrVUXirTdqkOtVReKtO2pg61VF4q0/ajDrVUXirTNqEOtVReKtN2ng61VF4q07abDrVUXirT9pgOtVReKtM2lg61VF4q02aTDrVUXirTlpAOtVReKtPGjQ61VF4q0/aKDrVUXirTJogOtVReKtNWhQ61VF4q04aCDrVUXipT23+HWiovlak5v0MtlZfK1ELfoZbKS2Xqf+9QS+WlMvW0d6il8lKZ+tQ71FJ5Kare80LVe16oes8LVe95oeo9L1S954Wq97xQ9Z4Xqt7zQtV7Xqh6zwtV73nJ1I39zeakubyfol58ra31n6+1dW1QJN1zh6WYqct7IEXS/XlgiqS79sAUSffygSmaKAIoku7TBlMk3aYNpki6SxtMUdkFQVHZ5YpinV7ft877HykumbrzB1JUdkFQVHZBUFR2uTxdjpPi0aBoogigqOyCoKjsgqCo7IKgqOyCoKjscklxf/0O0I4//w5wybSrYiBFZRcERWUXBEVlFwRFE0UARWUXBEVlFwRFZRcERWUXBEVlFwDFTLthBlJUdkFQVHZBUFR2QVA0UQRQVHZBUFR2QVBUdkFQVHZBUFR2AVDMtItpIEVlFwRFZRcERWUXBEUTRQBFZRcERWUXBEVlFwRFZRcERWUXAMVMu88GUlR2QVBUdkFQVHZBUDRRBFBUdkFQVHZBUFR2AVD0vd9tewvY9mO5oLgfr8/U78faUOva18HVuvZfcLWufRJcrVGpde07vlL7zbv+uidy8b0LbigZ1/5gKBnX95VDybi+gxxJxvfuuqFk8nhKNJk8/vOuhNZ+4pNiHl87kqKJIoAipw9HU+T07GiKnP4eTZEzC6ApcuYGMEXfOx3DUOTMI2iKyi4IisouCIomigCKyi4IisouCIrKLgiKyi4IisouAIq+d6iGoajsgqCo7IKgqOyCoGiiCKCo7IKgqOyCoKjsgqCo7IKgqOwCoOh7v3MYiiaKF197vfVw8b0NNgxFnS6Az0b53sAZhKL53sAZhqJuxhAUdTOGoKibMQRFE8WLr63L8c/X1lobFOUXERR1M4agqJsxBEVlFwRFZRcARd8bOMNQVHZBUFR2QVBUdkFQNFEEUFR2QVBUdkFQJM0uXzzFx/ddPtSZfVAkzS5giqTZBUvR9wbOMBRJswuYIml2AVMkzS5giiaKVxTr6y9MjtUaFEmzC5giaXYBU1R2QVBUdkFQVHYBUPS9gTMMRWWXLyhuc4OisguCorILgqKJ4q+vPckoj7TIKGO0yCg3tMgoC7TIyN83yPjePDmUTCIfftn6br63PsLVJvK1HWqNSm0iT9mhNpFP7FCbyPt1qE3k5zrUJvJo12oTbXDsUUvlpRJtcOxRS+WlEm1w7FFL5aUybWXsUEvlpTJtT+xQS+WlMm057FBL5aUybSPsUEvlpTJt9+tQS+WlMm3L61BL5aUybZ/rUEvlpTJtc+tQS+WlMm1H61BL5aUybRvrUEvlpTJt7+pQS+WlMm3D6lBL5aUybZfqUEvlpTJta+pQS+WlMm0/6lBL5aUybRPqUEvlpTJt5+lQS+WlMm276VBL5aUOKi91UHmpTPuVOtRSeamDyksdVF4q0y6qDrVMXqpm2u3UoZbJS9VMu5I61DJ5qToZlVomL1Uz7fLpUMvkpWqm3Tgdaqm8VKZdMx1qqbxUpt0tHWqpvFSmXSgdaqm8VKbdIh1qqbxUpl0dHWqpvBTrvoFvNhSvr7ZJW9cGRe1KQ1A0UQRQ1K40BEXtSkNQ1J5nBEXteUZQ1J5nAEXWfQNgitrzjKCo7IKgqOxyuRV2en3fn7uQBkUTRQBFZRcERWUXBEVll8vT5TgpHg2Kyi4IisouAIqsexfAFJVdEBSVXRAUlV0uKb4fwo7G7wAz7aoYSFHZBUFR2QVBUdkFQVHZBUFR2QVAMdPukoEUlV0QFJVdEBSVXRAUTRQBFJVdEBSVXRAUlV0QFJVdEBSVXQAUM+0KGkhR2QVBUdkFQVHZBUHRRBFAUdkFQVHZBUFR2QVBUdkFQVHZBUAx026ugRSVXRAUlV0QFJVdEBRNFAEUlV0QFJVdEBSVXRAUlV0QFJVdABQz7cIbSFHZBUHRPFNcl/cXb1YuKO7H6zP1+9H4TL3v/W5wta79F1yta58EV+vaz8DVuvYdX6n95l3f0RPpexfcUDKu/cFQMq7vK4eScX0HOZSMiUyDTB5PiSaTx3/eldDaT3xSzONrR1LM45dHUuT04ViKq++dg2Eocvp7NEXOLICmyJkb0BRNFAEUOfMImqKyC4KisguCorILgqKyC4Ci7x2fYSgquyAoKrsgKCq7ICiaKAIoKrsgKCq7ICgquyAoKrsgKCq7ACgWZRcERWUXBEVlFwRFZRcERRNFAEU5nb/ferj63gYbhaLvDZw+KF5+Nmr1vYEzDEWdLgiKuhlDUNTNGIKibsYQFOUXL7fBLsc/X1trbVCUXwRQ9L2BMwxF3YwhKCq7ICgquyAomigCKCq7ICgquyAoKrsgKCq7ICgquwAo+t7AGYYiaXb54ik+vu/y+Qz2QZE0u4ApkmYXMEUTRQBF0uwCpkiaXcAUSbMLmCJpdvmGYn39hcmxWoMiaXbBUvS9gTMMRWUXBEVlFwRFZRcERRNFAEVlly8obnODorILgqKyC4KiskvjL959b9UcScb3psyhZJQbWmSUBVpk5O9bZExkGmQS+fDL1vfV99ZHuNpEvrZDbSL/2aE2kae8Vut7KyFcbSLv16E2kZ/rUJvIo3WoNSq1VF4q0QbHHrVUXirRBscetVReKtNWxg61VF4q0/bEDrVUXirTlsMOtVReKtM2wg61VF4q03a/DrVMXmrLtC2vQy2Tl9oybZ/rUMvkpbbJqNQyeakt03a0DrVMXmrLtG2sQy2Vl8q0vatDLZWXyrQNq0MtlZfKtF2qQy2Vl8q0ralDLZWXyrT9qEMtlZfKtE2oQy2Vl8q0nadDLZWXyrTtpkMtlZcqVF6qUHmpTPuVOtRSeamFykstVF4q0y6qDrVUXirTbqcOtVReKtOupA61VF4q0+6hDrVUXirTLp8OtVReKtNunA61VF4q066ZDrVUXirT7pYOtVReKtMulA61VF4q026RDrVUXirTro4OtVReinXfwDcbitdX26Sta4OidqUhKGpXGoKidqUBKLLuGwBT1J5nBEXteUZQ1J5nBEUTRQBF7XlGUFR2QVBUdrncCju9vm+d9wZFZRcERWUXAEXWPQZgisoul6fLcVI8GhSVXRAUlV0QFE0UARSVXRAUlV0QFJVdLinur98B2tH4HWCmXRUDKSq7AChm2q0xkKKyC4KisguCorILgqKJIoCisguCorILgqKyC4KisguCorILgGKmXTYDKSq7ICgquyAoKrsgKJooAigquyAoKrsgKCq7ICgquyAoKrv8PcU90+6ogRSVXRAUlV0QFJVdEBRNFAEUlV0QFJVdEBSVXRAUlV0QFJVdABQz7WobSFHZBUFR2QVBUdkFQdFEEUBR2QVB0bVfrGavL67HfEER+/n73fcuuJFkfO+NG0rGtVcbSsa1/xpKxrWnGkrGRKZBxrX3GUrG9V3sUDKu71eHkpEHbpHh9MDXLTS7731/Q8lweuAeMpweuIcMqQe+bNLYfe8nHEqG1AN3kCH1wB1kSD1wBxlSD9xBhvQe+Pp3B773NA4lQ3oP3EGG9B64gwypB+4gYyLTIEPqgTvIkHrgDjKkHriDDKkH7iAjD9wg43u/5lAy8sAtMvLALTLywC0yJjINMvLALTLywC0y8sAtMvLALTLywA0yvneyDiUjD9wiIw/cIiMP3CJjItMgIw/cIiMP3CIjD9wiIw/cIiMP3CDje7fnUDLywC0y8sAtMvLALTImMg0y8sAtMvLALTLywA0yvvf9lW15f/G8IclcfybO9w6/oWRc+5mhZFz7maFkTGQaZFz7maFkXPuZoWRc+5mhZFzf6Q0l4/pObyQZ33vjhpLh9MAdn2T3vd9tKBlOD9xDxkSmQYbUA19/Ktn3vrShZEg9cAcZUg/cQYbUA1+SOXzvHxtKhvQe+PJ3B4fvPWFDyZDeA3eQMZFpkCH1wB1kSD1wBxlSD9xBhtQDd5Ah9cDXZHzvsRpKRh64RUYeuEVGHrhFxkSmQUYeuEVGHrhFRh64RUYeuEVGHrhBxvfOr6Fk5IFbZOSBW2TkgVtkTGQaZOSBW2TkgVtk5IFbZOSBW2TkgRtkfO/8GkpGHrhFRh64RUYeuEXGRKZBRh64RUYeuEVGHrhFRh64RUYeuEHm+f1N0E+uHc9vWQI/vwV//hr8+dfgz78Ff/49+PMfsZ//+X034Oefgz9/8PO3ej5/rz+Rejy/hwX8/J7P357n93z+9jy/6/P3+lNv1fX52/H8rs/f6+dfXZ+/Hc/v+vzteH7X52/H87vOv9f3D8/vgAA/v+v82/H8rvNvx/O7Pn87nt/1+dvx/K7P3+vn31yfvx3P7/r87Xh+1+dvx/MHP3+f758HP3/w83cLfv5uwc/fLfj5uwU/f/fg5+8e/Pzdg5+/e/Dz9/m+dPDzBz9/9+Dn7x78/N2Dn7978PP3CH7+HsHP3yP4+XsEP3+f72oGP3/w8/cIfv4ewc/fI/j5e4Q+f/dpCn3+/jx/6PP35/kR7//5eD3/vBry+a/+/urn+Wvw51+DP/8W/Pn34M9/xH5+SBflyOefgz9/Cf78S/DnD37+zp7P38u/X/15fs/nb8/zez5/e57f8/nb8/yuz9+rv5/cp+L6/O14ftfnb8fzuz5/O57f9fnb8fyuz9+O53edf6/vH4rr/Nvx/K7zb8fzu86/Hc/v+vy9fv7F9fnb8fyuz9+O53d9/nY8v+vzt+P5XZ+/Hc8f/Pxdgp+/S/Dzdwl+/i7Bz18Lfv5a8PPXgp+/Fvz8hfQvjXz+4OevBT9/Lfj5a8HPXwt+/tbg528Nfv7W4OdvDX7+QvqXRj5/8PO3Bj9/a/DztwY/f2vw83cNfv6uwc/fNfj5uwY/fxH9Pz8h9PX808fPeeTvrxD9P0Offw/+/Efs50f0/wx9/jn485fgz78Ef34L/vw1+PMHP383z+dvx9+vbp7P357n93z+djz/7vn87Xl+1+fv9d9P7q7P347nd33+djy/6/O34/ldn78dz+/6/O14ftf59/r+YXedfzue33X+vX7+w3X+7Xh+1+dvx/O7Pn87nt/1+dvx/K7P347nd33+djy/6/O34/mDn79H8PP3iH3+zlPs83eeYp+/P48X/Pljn7/zFPv8nafY5+88xT5/5yn2+TtPsc/feQp+/s7Bz985+Pk7Bz9/5+DnL6J/aejzBz9/5+Dn7xz8/J2Dn79z8PO3BD9/S/DztwQ/f0vw8xfRvzT0+cOev1tZ/n9/bv+Z12V9Pf7+6/Hr+/94/Mv/45/7bnr+j/O//T+Wf/F/3LcfjX++29j211+rH/v0a7Tv/9/6L/9/27/8/+3/8v93/Lv/358zY8f/b/6X/7+/f0fPx/r6U4L52NeL/8bq8nqkWut//nfzv4+0+Hsk8/dI1d8jrbc+0vvHbM/8mP2ZH3M88mMAXrjrx8zP/JjyzI9Znvkx9syPqc/8mKdvHX7uCd524+e8Pl9Ny3E+1ObxoTzfD2zT9P7a9Y+v++L5euD68RfPtwMdj+/5cqDj8T3fDXQ8vuergY7Ht9iP7/lioOPxPd/Ldzy+52v5jsePfeousU9di33qWuxT12Kfuhb71EX0QY58/NinrsU+dS32qWuxT12LferW2KdujX3q1tinbg1bg/G/jx+2BeN/Hz/sH+H8f4+/hv0bnP99/LB/gvO/jx/2L3D+9/HD/gHO/z6+xX58z+/9699Gu24f7Hh81+VH14/vuvvo+vFdVx9dPr7r5sGOx/d86nY8vudTt+PxPZ+6HY/v+dTtePzYp67rzsGOx4996j7fONi8Pfi/XzvPx/56jjJt51d//EnM85WDYAHPdw6iBczRBZToApboAiy6gOpGwPuRVn+P9PR6lHkuLwHzbB9/fbp/PNTu8aE8LzK5HvTheY9Jx+N7XmPS8fiet5h0PL7nJSYdj2+xH9/zCrGOx/e8Qazj8T0vEOt4fM/7wzoeP/Spu0yhT91lCn3qLlPoU3eZQp+6yxT61F2m0KfuMoU+dZcp9Km7TKFP3WWKferOsU/dOfapO8c+defYpy6ir2/k48c+defYp+4c+9Qtrnc1X/2V8FI8v/c7Ht/zm+fyLyWX4vnN0/H4nt88HY/v+c3T8fie/X7H43v2+9ePv3h+71/+wc+yeH7vdzy+Z7/f8fie/X7H43s+dTse3/Op2/H4nk/djsf3fOp2PL7nU7fj8T2futePb7FPXYt96lrsU9ceP3W/+fPCaX//Odh0fDzH/iHAoguo0QWs0QVs0QXs0QUcwQXUybWAup4Cjl8C/vCdj9dD79PH19b9FDsziS1MYl27gc8/Dl8a/x1adAGu3UCPANduoEeAazfQI8C1G+gR4NoNdAhYXbuB68/YLKvrE75HgOtTu0eAn5P4/Uh+ztb3IyFOy+O1haGUWi4eaa7vlQ3V/vxIq79H2h5+JOxfkyDab0Y+/hH68RHtNyMff479+CX24y+xH99iP36N/fhr7MePfepusU/dLfapu8c+dffYp+4e+9TdY5+6iMabkY8f+9TdY5+6e+xTd4996u6xT90j9ql7xD51j9in7hH71IV08wx8/Nin7hH71D1in7pH7FP3CH3q2hT61LUp9KlrU+hT16bQp65NoU9dm0KfujaFPnVtCn3q2hT61LUp9qk7xz5159in7hz71J1jn7qQbp6Bjx/71J1jn7pz7FN3jn3qzrFP3RL71C2xT90S+9QtsU9dSC/VwMePfeqW2KduiX3qltinbol96i6xT90l9qm7xD51l9inLqSXauDjxz51l9in7hL71F1in7pL7FPXYp+6FvvUtdinrsU+dSGtVAMfP/apa7FPXYt96lrsU9din7o19qlbY5+6NfapW2OfupD2p4GPH/vUrbFP3Rr71K2xT90a+9RdY5+6a+xTd4196q6xT11IL9TAx4996q6xT93Y3VQWu5vKYndTWexuKovdTWWxu6ksdjeVxe6mstjdVBa7m8pid1NZ7G4qi91NZbG7qSx2N5XF7qay2N1UFrubymJ3U1nsbiqL3U1lsbupLHY3lcXuprLY3VQWu5vKYndTWexuKovdTWWxu6ksdjeVxe6mstjdVDV2N1WN3U1VY3dT1djdVHUKferW2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTVVjd1PV2N1UNXY3VY3dTbXG7qZaY3dTrbG7qdbY3VTrFPrUXWN3U62xu6nW2N1Ua+xuqjV2N9Uau5tqjd1Ntcbuplpjd1Otsbup1tjdVGvsbqo1djfVGrubao3dTbXG7qZaY3dTrbG7qdbY3VRr7G6qNXY31Rq7m2qN3U21xu6mWmN3U62xu6nW2N1Ua+xuqjV2N9Uau5tqjd1Ntcbuplpjd1Otsbup1tjdVGvsbqo1djfVGrubao3dTbXG7qZaY3dTrbG7qdbY3VRr7G6qNXY31Rq7m2qN3U21xu6mWmN3U62xu6nW2N1Ua+xuqjV2N9Uau5tqjd1Ntcbuplpjd1Otsbup1tjdVGvsbqo1djfVGrubao3dTbXG7qZaY3dTrbG7qdbY3VRr7G6qNXY31Rq7m2qN3U21xu6mWmN3U62xu6nW2N1Ua+xuqjV2N9Uau5tqjd1Ntcbuplpjd1Otsbup1tjdVGvsbqo1djfVGrubao3dTbXG7qZaY3dTrbG7qdbY3VRr7G6qNXY31Rq7m2qN3U21xe6m2mJ3U22xu6m22N1U2xT61N1id1NtsbupttjdVFvsbqotdjfVFrubaovdTbXF7qbaYndTbbG7qbbY3VRb7G6qLXY31Ra7m2qL3U21xe6m2mJ3U22xu6m22N1UW+xuqi12N9UWu5tqi91NtcXuptpid1NtsbupttjdVFvsbqotdjfVFrubaovdTbXF7qbaYndTbbG7qbbY3VRb7G6qLXY31Ra7m2qL3U21xe6m2mJ3U22xu6m22N1UW+xuqi12N9UWu5tqi91NtcXuptpid1NtsbupttjdVFvsbqotdjfVFrubaovdTbXF7qbaYndTbbG7qbbY3VRb7G6qLXY31Ra7m2qL3U21xe6m2mJ3U22xu6m22N1UW+xuqi12N9UWu5tqi91NtcXuptpid1NtsbupttjdVFvsbqotdjfVFrubaovdTbXF7qbaYndTbbG7qbbY3VRb7G6qLXY31Ra7m2qL3U21xe6m2mJ3U22xu6m22N1UW+xuqi12N9UWu5tqi91Ntcfuptpjd1Ptsbup9tjdVPsU+tTdY3dT7bG7qfbY3VR77G6qPXY31R67m2qP3U21x+6m2mN3U+2xu6n22N1Ue+xuqj12N9Ueu5tqj91Ntcfuptpjd1Ptsbup9tjdVHvsbqo9djfVHrubao/dTbXH7qbaY3dT7bG7qfbY3VR77G6qPXY31R67m2qP3U21x+6m2mN3U+2xu6n22N1Ue+xuqj12N9Ueu5tqj91Ntcfuptpjd1Ptsbup9tjdVHvsbqo9djfVHrubao/dTbXH7qbaY3dT7bG7qfbY3VR77G6qPXY31R67m2qP3U21x+6m2mN3U+2xu6n22N1Ue+xuqj12N9Ueu5tqj91Ntcfuptpjd1Ptsbup9tjdVHvsbqo9djfVHrubao/dTbXH7qbaY3dT7bG7qfbY3VR77G6qPXY31R67m2qP3U21x+6m2mN3U+2xu6n22N1Ue+xuqj12N9Ueu5tqj91Ntcfuptpjd1Ptsbup9tjdVHvsbqo9djfVHrubao/dTXXE7qY6YndTHbG7qY7Y3VTHFPrUPWJ3Ux2xu6mO2N1UR+xuqiN2N9URu5vqiN1NdcTupjpid1MdsbupjtjdVEfsbqojdjfVEbub6ojdTXXE7qY6YndTHbG7qY7Y3VRH7G6qI3Y31RG7m+qI3U11xO6mOmJ3Ux2xu6mO2N1UR+xuqiN2N9URu5vqiN1NdcTupjpid1MdsbupjtjdVEfsbqojdjfVEbub6ojdTXXE7qY6YndTHbG7qY7Y3VRH7G6qI3Y31RG7m+qI3U11xO6mOmJ3Ux2xu6mO2N1UR+xuqiN2N9URu5vqiN1NdcTupjpid1MdsbupjtjdVEfsbqojdjfVEbub6ojdTXXE7qY6YndTHbG7qY7Y3VRH7G6qI3Y31RG7m+qI3U11xO6mOmJ3Ux2xu6mO2N1UR+xuqiN2N9URu5vqiN1NdcTupjpid1MdsbupjtjdVEfsbqojdjfVEbub6ojdTXXE7qY6YndTHbG7qY7Y3VRH7G6qI3Y31RG7m+qI3U01T7HLqX6eP/S5+/P8oQ/en+cPffL+PH/oo/fn+UOfvT/PH/rw/Xn+0Kfvz/OHPn5/nj/4+Ru7purn+YOfv7GLqn6eP/j5G7uq6uf5g5+/scuqfp4/+Pkbu67q5/mDn7+xC6t+ni74+Ru7surn6YKfv7FLq36eLvj5G7u26ufpgp+/sYurfp4u+Pkbu7rq5/mDn7+xy6t+nj/4+Ru7vurn+YOfv7ELrH6eP/j5G7vC6uf5g5+/sUusfp4/+Pkbu8bq5/mDn7+xi6x+nj/4+Ru7yurn+YOfv7HLrH6eP/j5G7vO6uf5g5+/sQutfp4/+Pkbu9Lq5/mDn7+xS61+nj/4+Ru71urn+YOfv7GLrX6eP/j5G7va6uf5g5+/scutfp4/+Pkbu97q5/mDn7+xC65+nj/4+Ru74urn+YOfv7FLrn6eP/j5G7vm6uf5g5+/sYuufp4/+Pkbu+rq5/mDn7+xy65+nj/4+Ru77urn+YOfv7ELr36eP/j5G7vy6uf5g5+/sUuvfp4/+Pkbu/bq5/mDn7+xi69+nj/4+Ru7+urn+YOfv7HLr36eP/j5G7v+6uf5Y5+/c/D+qzl4/9UcvP9qDt5/NU+xz985eP/VHLz/ag7efzUH77+ag/dfzcH7r+bg/Vdz8P6rOXj/1Ry8/2oO3n81B++/moP3X83B+6/m4P1Xc/D+qzl4/9UcvP9qDt5/NQfvv5qD91/Nwfuv5uD9V3Pw/qs5eP/VHLz/ag7efzUH77+ag/dfzcH7r+bg/Vdz8P6rOXj/1Ry8/2oO3n81B++/moP3X83B+6/m4P1Xc/D+qzl4/9UcvP9qDt5/NQfvv5qD91/Nwfuv5uD9V3Pw/qs5eP/VHLz/ag7efzUH77+ag/dfzcH7r+bg/Vdz8P6rOXj/1Ry8/2oO3n81B++/moP3X83B+6/m4P1Xc/D+qzl4/9UcvP9qDt5/NQfvv5qD91/Nwfuv5uD9V3Pw/qs5eP/VHLz/ag7efzUH77+ag/dfzcH7r+bg/Vdz8P6rOXj/1Ry8/2oO3n81B++/moP3X83B+6/m4P1Xc/D+qzl4/9UcvP9qDt5/NQfvv5qD91/Nwfuv5uD9VyV4/1UJ3n9VgvdfleD9V2WKff6W4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef1WC91+V4P1XJXj/VQnef7UE779agvdfLcH7r5bg/VfLFPv8XYL3Xy3B+6+W4P1XS/D+qyV4/9USvP9qCd5/tQTvv1qC918twfuvluD9V0vw/qsleP/VErz/agnef7UE779agvdfLcH7r5bg/VdL8P6rJXj/1RK8/2oJ3n+1BO+/WoL3Xy3B+6+W4P1XS/D+qyV4/9USvP9qCd5/tQTvv1qC918twfuvluD9V0vw/qsleP/VErz/agnef7UE779agvdfLcH7r5bg/VdL8P6rJXj/1RK8/2oJ3n+1uO5fsrX+87W2tp7f8/u/5/k9v39sn1/Pf0yN5/f8/ul4ftf9Pz3P7/n90/P8nv1/z/N79v89z+/5/V+X45+vrbU2nt/z+7/n+T37/57n9+z/e57f8/nb8/yez9+O53fd/9Pz/J7P357n93z+9jy/5/O35/mDn7+u+396nj/4+eu6/6fn+YOf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K9+9xDfoJfNXvnuJb9BL5q9WMn+1kvmrlcxf+e7Zxuv13bR9g14yf7WR+SvfXeo36DUyvWT+ynej+g16yfyV71b1G/SS+Svfzeo36CXzV77b1W/QS+avfDes36CXzF/5bmS/QS+ZvyLrb1/I+tsXsv72hay/fSHrb1/I+tsXsv72hay/fSHrb1/I+tsXsv72hay/3cj6242sv93I+tuNrL/dJiPTy+WvjKy/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tuNrL/dyPrbjay/3cj6242sv93I+tsrWX97nfKcR/vxkrsfv7/zqTbPadSjNs+76pjnf774KFNDbZ43VYfaRD3IPWrzpMAetXkyYI/aPAmwR22e87ZHbZ7ztkdtnuzXozZP8utRS+WlErUed6gN23l8Kojqj04Frj3PcrwV2Dpf/Iury+uLa62Nf3GuPQ9crVGpde154Gpdex64WteeB67WteeBq3XtedBqffcQw9W69kdwtVReyncDMVytUaml8lK+u4fhaqm8lO/eYbhaKi/lu3MYrpbKS/nuG4arpfJSvruG4WqpvJTvnmG4Wiov5btjGK6Wykv57heGq6XyUr67heFqqbyU715huFoqL+W7UxiulspL+e4TRqv13b76lVpbX3//b2vj7/99d6/C1eZ5S9n++ps1Oxp/s+a7lxOuNs9bqkdtnsTXodZ3IydcbZ7E16OWKvH57uKEqzUqtVSJz3cLJ1wtVeLz3cAJV0t1e+67fROulur23HfzJlwtlZfy3boJVxvVS50KovqjU4Frz1OnV7Tcf+5sAf/iXHseuFrXnget1ncj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779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuvWvL+q5a8/6ol779qyfuv9uT9V3vy/qs9ef/Vnrz/an/kPn/35P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3X+3J+6/25P1Xe/L+qz15/9WevP9qT95/tSfvv9qT91/tyfuv9uT9V3vy/qs9ef/Vnrz/ak/ef7Un77/ak/df7cn7r/bk/Vd78v6rPXn/1Z68/2pP3n+1J++/2pP3Xx3J+6+O5P1XR/L+qyN5/9XxyH3+Hsn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786kvdfHcn7r47k/VdH8v6rI3n/1ZG8/+pI3n91JO+/OpL3Xx3J+6+O5P1XR/L+qyN5/9WRvP/qSN5/dSTvvzqS918dyfuvjuT9V0fy/qsjef/Vkbz/6kjef3Uk7786k/dfncn7r87k/Vdn8v6r85H7/D2T91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/dSbvvzqT91+dyfuvzuT9V2fy/qszef/Vmbz/6kzef3Um7786k/dfncn7r87k/Vdn8v6rM3n/1Zm8/+pM3n91Ju+/OpP3X53J+6/O5P1XZ/L+qzN5/9WZvP/qTN5/1ZP3X/Xk/Vc9ef9VT95/1R+5z9+evP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r3ry/quevP+qJ++/6sn7r5ZH8gKsp4DcJ/BTQO4j+Ckg9xn8FJD7EH4KyH0K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Yu9TwMvlclWx9x7g5XK5qtj7CfByuVxV7D0CeLlcrip23z9eLperit3Lj5fL5api9+fj5XK5qtg993i5XK4qdh89Xi6Xq4rdG4+XS+Wqztj97ni5VK7qjN3DjpdL5arOh3HJpXJVJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrX5ydaufXN3qJ1e3+snVrd65utU7V7d65+pW71zd6v1hXHKpXFXn6lbvXN3qnatbvXN1q3eubvXO1a3eubrVO1e3eufqVu9c3eqdq1u9c3Wrd65u9c7Vrd65utU7V7d65+pW71zd6p2rW71zdat3rm71ztWt3rm61TtXt3rn6lbvXN3qnatbvXN1q3eubvXO1a3eubrVO1e3eufqVu9c3eqdq1u9c3Wrd65u9c7Vrd65utU7V7d65+pW71zd6p2rW71zdat3rm71ztWt3rm61TtXt3rn6lbvXN3qnatbvXN1q3eubvXO1a3eubrVO1e3eufqVu9c3eqdq1u9c3Wrd65u9c7Vrd65utU7V7d65+pW71zd6p2rW71zdat3rm71ztWt3rm61TtXt3rn6lbvXN3qnatbvXN1q3eubvVeqH377C+5Z//9O7/JrXPuuuQWejMvy+sf8/oYyK3Uz+yRW+jN7JFb6M3skVso73rkGpfcQnnXI7dQ3vXILZR3PXIL5V2PXCZXtT4q9TN75GZ1VW8SsjqlNwmh3c9xvv4dHWffLv7Rjb/zm1zjkhva/eDlhnY/eLmh3Q9ebmj3g5cb2v3A5cbuUcbLDe1+8HJD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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"}}],"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":{"110":{"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)]\nfn 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"},"115":{"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 side_effect::SideEffect, 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_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)]\nfn 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)]\nfn 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 let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n returns_hash: 0,\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 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: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\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"},"136":{"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 dep::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"},"138":{"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},\n constants::{NOTE_HASH_LENGTH, SCOPED_NOTE_HASH_LENGTH}, traits::{Empty, Serialize, Deserialize},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct NoteHash {\n value: Field,\n counter: u32,\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 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"},"139":{"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"},"140":{"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 dep::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 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, side_effect::SideEffect\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 = 0x1177a69fbc37f0ebdf290025414ff72504497840f174896bd427d0f30ec21c55;\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 = 0x0f7624c0d5ea65fcec318c4d34cb3fcbf9c67435aebbf1548b3c90ef641424f8;\n assert_eq(call_stack_item.hash(), test_data_call_stack_item_hash);\n }\n}\n"},"141":{"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 nullifier_key_validation_request::NullifierKeyValidationRequest, note_hash::NoteHash,\n nullifier::Nullifier, read_request::ReadRequest, side_effect::SideEffect\n},\n constants::{\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_NEW_NOTE_HASHES_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n MAX_ENCRYPTED_LOGS_PER_CALL, MAX_UNENCRYPTED_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\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 nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_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_stack_hashes: [Field; 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 encrypted_logs_hashes: [SideEffect; MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\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.nullifier_key_validation_requests == other.nullifier_key_validation_requests) &\n (self.new_note_hashes == other.new_note_hashes) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_stack_hashes == other.private_call_stack_hashes) &\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.encrypted_logs_hashes == other.encrypted_logs_hashes) &\n (self.unencrypted_logs_hashes == other.unencrypted_logs_hashes) &\n (self.encrypted_log_preimages_length == other.encrypted_log_preimages_length) &\n (self.unencrypted_log_preimages_length == other.unencrypted_log_preimages_length) &\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.nullifier_key_validation_requests.len() {\n fields.extend_from_array(self.nullifier_key_validation_requests[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 fields.extend_from_array(self.private_call_stack_hashes);\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.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.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\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 nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_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_stack_hashes: reader.read_array([0; 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 encrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL]),\n unencrypted_logs_hashes: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\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 nullifier_key_validation_requests: [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_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_stack_hashes: [0; 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 encrypted_logs_hashes: [SideEffect::empty(); MAX_ENCRYPTED_LOGS_PER_CALL],\n unencrypted_logs_hashes: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\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 = 0x2517b9a84487bde68e18647e59530c6ffe4a7a88c5c556f013d09fd22b84ba35;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"143":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/global_variables.nr","source":"use dep::std::cmp::Eq;\nuse 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"},"144":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/read_request.nr","source":"use crate::{\n traits::{Empty, Serialize, Deserialize}, address::AztecAddress,\n constants::{READ_REQUEST_LENGTH, SCOPED_READ_REQUEST_LEN},\n utils::{arrays::array_concat, reader::Reader}\n};\nuse dep::std::cmp::Eq;\n\nstruct ReadRequest {\n value: Field,\n counter: u32,\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 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"},"148":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier.nr","source":"use crate::{\n abis::{side_effect::{Ordered, OrderedValue, Readable}, read_request::ScopedReadRequest},\n address::AztecAddress, constants::{NULLIFIER_LENGTH, SCOPED_NULLIFIER_LENGTH}, hash::silo_nullifier,\n traits::{Empty, Hash, Serialize, Deserialize}, utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct Nullifier {\n value: Field,\n counter: u32,\n note_hash: Field,\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 = silo_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 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"},"157":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/nullifier_key_validation_request.nr","source":"use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n constants::{SCOPED_NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH, NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH},\n traits::{Empty, Serialize, Deserialize}, grumpkin_point::GrumpkinPoint,\n utils::{arrays::array_concat, reader::Reader}\n};\n\nstruct NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint,\n app_nullifier_secret_key: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for NullifierKeyValidationRequest {\n fn eq(self, request: NullifierKeyValidationRequest) -> bool {\n (request.master_nullifier_public_key.eq(self.master_nullifier_public_key))\n & (request.app_nullifier_secret_key.eq(self.app_nullifier_secret_key))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequest {\n fn empty() -> Self {\n NullifierKeyValidationRequest {\n master_nullifier_public_key: GrumpkinPoint::zero(),\n app_nullifier_secret_key: 0,\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH] {\n [\n self.master_nullifier_public_key.x,\n self.master_nullifier_public_key.y,\n self.app_nullifier_secret_key,\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for NullifierKeyValidationRequest {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n master_nullifier_public_key: GrumpkinPoint::new(fields[0], fields[1]),\n app_nullifier_secret_key: fields[2],\n }\n }\n}\n\nimpl NullifierKeyValidationRequest {\n pub fn scope(self, contract_address: AztecAddress) -> ScopedNullifierKeyValidationRequest {\n ScopedNullifierKeyValidationRequest { request: self, contract_address }\n }\n}\n\nstruct ScopedNullifierKeyValidationRequest {\n request: NullifierKeyValidationRequest,\n contract_address: AztecAddress,\n}\n\nimpl Eq for ScopedNullifierKeyValidationRequest {\n fn eq(self, other: ScopedNullifierKeyValidationRequest) -> bool {\n (self.request.eq(other.request))\n & (self.contract_address.eq(other.contract_address))\n }\n}\n\nimpl Empty for ScopedNullifierKeyValidationRequest {\n fn empty() -> Self {\n ScopedNullifierKeyValidationRequest {\n request: NullifierKeyValidationRequest::empty(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<SCOPED_NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for ScopedNullifierKeyValidationRequest {\n fn serialize(self) -> [Field; SCOPED_NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH] {\n array_concat(self.request.serialize(), [self.contract_address.to_field()])\n }\n}\n\nimpl Deserialize<SCOPED_NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH> for ScopedNullifierKeyValidationRequest {\n fn deserialize(fields: [Field; SCOPED_NULLIFIER_KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n let mut reader = Reader::new(fields);\n let res = Self {\n request: reader.read_struct(NullifierKeyValidationRequest::deserialize),\n contract_address: reader.read_struct(AztecAddress::deserialize),\n };\n reader.finish();\n res\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = ScopedNullifierKeyValidationRequest::empty();\n let serialized = item.serialize();\n let deserialized = ScopedNullifierKeyValidationRequest::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n"},"158":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/function_selector.nr","source":"use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize, FromField, ToField, Empty};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FromField for FunctionSelector {\n fn from_field(field: Field) -> Self {\n Self { inner: field as u32 }\n }\n}\n\nimpl ToField for FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n}\n\nimpl Empty for FunctionSelector {\n fn empty() -> Self {\n Self { inner: 0 as u32 }\n }\n}\n\nimpl FunctionSelector {\n pub fn from_u32(value: u32) -> Self {\n Self { inner: value }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n"},"163":{"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"},"164":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/side_effect.nr","source":"use crate::{\n abis::read_request::ScopedReadRequest, address::AztecAddress,\n constants::{GENERATOR_INDEX__SIDE_EFFECT, SIDE_EFFECT_LENGTH},\n traits::{Empty, Hash, Serialize, Deserialize}\n};\nuse dep::std::cmp::Eq;\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\ntrait OrderedValue<T> where T: Eq {\n fn value(self) -> T;\n fn counter(self) -> u32;\n}\n\ntrait Readable {\n fn assert_match_read_request(self, read_request: ScopedReadRequest);\n}\n\nstruct SideEffect {\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl OrderedValue<Field> for SideEffect {\n fn value(self) -> Field {\n self.value\n }\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn serialize(self) -> [Field; SIDE_EFFECT_LENGTH] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<SIDE_EFFECT_LENGTH> for SideEffect {\n fn deserialize(values: [Field; SIDE_EFFECT_LENGTH]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item = SideEffect::empty();\n let serialized = item.serialize();\n let deserialized = SideEffect::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n"},"172":{"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 = 0x138c6ad441864ce43487e99d5e1e122c38b4b55d893edec04a32f5aacecc856c;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"177":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/append_only_tree_snapshot.nr","source":"use dep::std::cmp::Eq;\n\nstruct 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: u64 = 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"},"178":{"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"},"179":{"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"},"180":{"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 side_effect::SideEffect, gas::Gas, global_variables::GlobalVariables\n},\n address::AztecAddress,\n constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_NEW_NOTE_HASHES_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 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 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: [SideEffect; MAX_UNENCRYPTED_LOGS_PER_CALL],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\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_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_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.push(self.unencrypted_log_preimages_length);\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 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 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(SideEffect::deserialize, [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL]),\n unencrypted_log_preimages_length: reader.read(),\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 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 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: [SideEffect::empty(); MAX_UNENCRYPTED_LOGS_PER_CALL],\n unencrypted_log_preimages_length: 0,\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 = 0x132559f41b7adc7388e0cd52b91fd6837c296b2f9ec1b6d2ed046f7a56db18f8;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"182":{"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#[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"},"186":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils.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: u64) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n"},"187":{"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}, abis::side_effect::Ordered,\n traits::{Deserialize, Empty, Serialize}, 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 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 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"},"195":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr","source":"use dep::std::cmp::Eq;\nuse crate::utils::field::field_from_bytes;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for bool { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u1 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u8 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u32 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for u64 { fn to_field(self) -> Field { self as Field } }\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\nimpl<N> ToField for str<N> {\n fn to_field(self) -> Field {\n assert(N < 32, \"String doesn't fit in a field, consider using Serialize instead\");\n field_from_bytes(self.as_bytes(), true)\n }\n}\n\ntrait FromField {\n fn from_field(value: Field) -> Self;\n}\n\nimpl FromField for Field {\n fn from_field(value: Field) -> Self {\n value\n }\n}\n\nimpl FromField for bool { fn from_field(value: Field) -> Self { value as bool } }\nimpl FromField for u1 { fn from_field(value: Field) -> Self { value as u1 } }\nimpl FromField for u8 { fn from_field(value: Field) -> Self { value as u8 } }\nimpl FromField for u32 { fn from_field(value: Field) -> Self { value as u32 } }\nimpl FromField for u64 { fn from_field(value: Field) -> Self { value as u64 } }\nimpl FromField for U128 {\n fn from_field(value: Field) -> Self {\n U128::from_integer(value)\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\nimpl<N> Serialize<N> for str<N> {\n fn serialize(self) -> [Field; N] {\n let mut result = [0; N];\n let bytes: [u8; N] = self.as_bytes();\n for i in 0..N {\n result[i] = field_from_bytes([bytes[i];1], true);\n }\n result\n }\n}\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n"},"199":{"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 tx_tree_height: 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.tx_tree_height);\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 tx_tree_height = 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 tx_tree_height,\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 tx_tree_height: 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.tx_tree_height == other.tx_tree_height)\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"},"202":{"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}\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 }\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\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\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 }\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 }\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 = 0x2b2525fb1ae91c903827b8055b9ffaf8444ddf4c2b4dce4a79a3cba426bfbd73;\n assert_eq(hash, test_data_empty_hash);\n}\n"},"203":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr","source":"use crate::address::{AztecAddress, EthAddress};\nuse crate::recursion::verification_key::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::side_effect::SideEffect;\nuse crate::traits::is_empty;\nuse crate::utils::{uint256::U256, field::field_from_bytes_32_trunc};\nuse crate::constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n MAX_ENCRYPTED_LOGS_PER_TX\n};\nuse crate::traits::Hash;\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\nuse crate::merkle_tree::root::root_from_sibling_path;\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn compute_note_hash_nonce(first_nullifier: Field, note_hash_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n note_hash_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn silo_note_hash(address: AztecAddress, unique_note_hash: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n unique_note_hash\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n\n // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes = input[offset].to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\n// NB: this assumes MAX_ENCRYPTED_LOGS_PER_TX == MAX_UNENCRYPTED_LOGS_PER_TX\n// to avoid doubling code, since we can't define the byte len to be 32*N directly. \npub fn compute_tx_logs_hash(logs: [SideEffect; MAX_ENCRYPTED_LOGS_PER_TX]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; MAX_ENCRYPTED_LOGS_PER_TX * 32];\n for offset in 0..MAX_ENCRYPTED_LOGS_PER_TX {\n let input_as_bytes = logs[offset].value.to_be_bytes(32);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<N>(inputs: [Field; N]) -> Field {\n dep::std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5, counter: 1234 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n"},"204":{"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"},"206":{"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"},"212":{"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"},"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"},"222":{"path":"/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr","source":"struct Reader<N> {\n data: [Field; N],\n offset: u64,\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_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"},"238":{"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"},"239":{"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"},"328":{"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, MaxLen> {\n storage: [T; MaxLen],\n len: u64,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new() -> Self {\n let zeroed = crate::unsafe::zeroed();\n BoundedVec { storage: [zeroed; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: u64) -> T {\n assert(index < self.len);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: u64) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len < MaxLen, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> u64 {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> u64 {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len <= MaxLen, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_slice(&mut self, slice: [T]) {\n let new_len = self.len + slice.len();\n assert(new_len <= MaxLen, \"extend_from_slice out of bounds\");\n for i in 0..slice.len() {\n self.storage[self.len + i] = slice[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len <= MaxLen, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + i] = vec.get_unchecked(i);\n }\n }\n self.len = new_len;\n }\n\n pub fn from_array<Len>(array: [T; Len]) -> Self {\n assert(Len <= MaxLen, \"from array out of bounds\");\n let mut vec: BoundedVec<T, MaxLen> = BoundedVec::new();\n vec.extend_from_array(array);\n vec\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = crate::unsafe::zeroed();\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if !exceeded_len {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\nimpl<T, MaxLen> Eq for BoundedVec<T, MaxLen> where T: Eq {\n fn eq(self, other: BoundedVec<T, MaxLen>) -> bool {\n // TODO: https://github.com/noir-lang/noir/issues/4837\n //\n // We make the assumption that the user has used the proper interface for working with `BoundedVec`s\n // rather than directly manipulating the internal fields as this can result in an inconsistent internal state.\n \n (self.len == other.len) & (self.storage == other.storage)\n }\n}\n\nimpl<T, MaxLen, Len> From<[T; Len]> for BoundedVec<T, MaxLen> {\n fn from(array: [T; Len]) -> BoundedVec<T, MaxLen> {\n BoundedVec::from_array(array)\n }\n}\n\nmod bounded_vec_tests {\n // TODO: Allow imports from \"super\"\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty_equality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n\n assert_eq(bounded_vec1, bounded_vec2);\n }\n\n #[test]\n fn inequality() {\n let mut bounded_vec1: BoundedVec<Field, 3> = BoundedVec::new();\n let mut bounded_vec2: BoundedVec<Field, 3> = BoundedVec::new();\n bounded_vec1.push(1);\n bounded_vec2.push(2);\n\n assert(bounded_vec1 != bounded_vec2);\n }\n\n mod from_array {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn empty() {\n let empty_array: [Field; 0] = [];\n let bounded_vec = BoundedVec::from_array([]);\n\n assert_eq(bounded_vec.max_len(), 0);\n assert_eq(bounded_vec.len(), 0);\n assert_eq(bounded_vec.storage(), empty_array);\n }\n\n #[test]\n fn equal_len() {\n let array = [1, 2, 3];\n let bounded_vec = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 3);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage(), array);\n }\n\n #[test]\n fn max_len_greater_then_array_len() {\n let array = [1, 2, 3];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from_array(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 3);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n assert_eq(bounded_vec.storage()[2], 3);\n }\n\n #[test(should_fail_with=\"from array out of bounds\")]\n fn max_len_lower_then_array_len() {\n let _: BoundedVec<Field, 2> = BoundedVec::from_array([0; 3]);\n }\n }\n\n mod trait_from {\n use crate::collections::bounded_vec::BoundedVec;\n\n #[test]\n fn simple() {\n let array = [1, 2];\n let bounded_vec: BoundedVec<Field, 10> = BoundedVec::from(array);\n\n assert_eq(bounded_vec.max_len(), 10);\n assert_eq(bounded_vec.len(), 2);\n assert_eq(bounded_vec.storage()[0], 1);\n assert_eq(bounded_vec.storage()[1], 2);\n }\n }\n}\n"},"52":{"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 = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u64 = 420;\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 false,\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 false,\n false\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"},"76":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr","source":"use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n messaging::process_l1_to_l2_message,\n hash::{hash_args_array, ArgsHasher, compute_encrypted_log_hash, compute_unencrypted_log_hash},\n oracle::{\n arguments, returns, call_private_function::call_private_function_internal,\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 header::get_header_at, logs::emit_encrypted_log,\n logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog},\n nullifier_key::{get_nullifier_keys, NullifierKeys}\n}\n};\nuse dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector, max_block_number::MaxBlockNumber,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem, read_request::ReadRequest, note_hash::NoteHash,\n nullifier::Nullifier, side_effect::SideEffect\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_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_ENCRYPTED_LOGS_PER_CALL,\n MAX_UNENCRYPTED_LOGS_PER_CALL\n},\n grumpkin_point::GrumpkinPoint, header::Header, messaging::l2_to_l1_message::L2ToL1Message,\n traits::{is_empty, Deserialize, 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 nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_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_stack_hashes : BoundedVec<Field, 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 encrypted_logs_hashes: BoundedVec<SideEffect, MAX_ENCRYPTED_LOGS_PER_CALL>,\n unencrypted_logs_hashes: BoundedVec<SideEffect, MAX_UNENCRYPTED_LOGS_PER_CALL>,\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n nullifier_key: Option<NullifierKeys>,\n}\n\nimpl ContextInterface for PrivateContext {\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 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\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let side_effect_counter = inputs.start_side_effect_counter;\n let mut min_revertible_side_effect_counter = 0;\n if is_empty(inputs.call_context.msg_sender) {\n min_revertible_side_effect_counter = side_effect_counter;\n }\n PrivateContext {\n inputs,\n side_effect_counter,\n min_revertible_side_effect_counter,\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 nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n public_teardown_function_hash: 0,\n new_l2_to_l1_msgs: BoundedVec::new(),\n encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n nullifier_key: Option::none()\n }\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 returns::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 nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.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 encrypted_logs_hashes: self.encrypted_logs_hashes.storage,\n unencrypted_logs_hashes: self.unencrypted_logs_hashes.storage,\n encrypted_log_preimages_length: self.encrypted_log_preimages_length + 4,\n unencrypted_log_preimages_length: self.unencrypted_log_preimages_length + 4,\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 self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\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_app_nullifier_secret_key(&mut self, account: AztecAddress) -> Field {\n let keys = if self.nullifier_key.is_none() {\n let keys = get_nullifier_keys(account);\n let request = NullifierKeyValidationRequest {\n master_nullifier_public_key: keys.master_nullifier_public_key,\n app_nullifier_secret_key: keys.app_nullifier_secret_key\n };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(keys);\n keys\n } else {\n let keys = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(keys.account == account, \"Cannot query nullifier key for more than one account per call\");\n keys\n };\n keys.app_nullifier_secret_key\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 // TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n // --> might be a better approach to force devs to make a public function call that emits the log if needed then\n // it would be less easy to accidentally leak information.\n // If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\n pub fn emit_unencrypted_log<T, N, M>(&mut self, log: T) where T: ToBytesForUnencryptedLog<N, M> {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let log_slice = log.to_be_bytes_arr();\n let log_hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n let side_effect = SideEffect { value: log_hash, counter: self.next_counter() };\n self.unencrypted_logs_hashes.push(side_effect);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n self.unencrypted_log_preimages_length += 44 + log_slice.len().to_field();\n // call oracle\n let _void = emit_unencrypted_log_private_internal(contract_address, event_selector, log, side_effect.counter);\n }\n\n // This fn exists separately from emit_unencrypted_log because sha hashing the preimage\n // is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it\n // It is ONLY used with contract_class_registerer_contract since we already assert correctness:\n // - Contract class -> we will commit to the packed bytecode (currently a TODO)\n // - Private function -> we provide a membership proof\n // - Unconstrained function -> we provide a membership proof\n // Ordinary logs are not protected by the above so this fn shouldn't be called by anything else\n pub fn emit_contract_class_unencrypted_log<N>(&mut self, log: [Field; N]) {\n let event_selector = 5; // TODO: compute actual event selector.\n let contract_address = self.this_address();\n let counter = self.next_counter();\n let log_hash = emit_contract_class_unencrypted_log_private_internal(contract_address, event_selector, log, counter);\n let side_effect = SideEffect { value: log_hash, counter };\n self.unencrypted_logs_hashes.push(side_effect);\n // 44 = addr (32) + selector (4) + raw log len (4) + processed log len (4)\n self.unencrypted_log_preimages_length += 44 + N*32;\n }\n\n pub fn emit_encrypted_log<N, M, L>(\n &mut self,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n ivpk_m: GrumpkinPoint,\n preimage: [Field; N]\n ) where [Field; N]: LensForEncryptedLog<N, M, L> {\n // TODO(1139): perform encryption in the circuit\n // The oracle call should come last, but we require the encrypted value for now\n let counter = self.next_counter();\n let encrypted_log: [Field; M] = emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n ivpk_m,\n preimage,\n counter\n );\n let log_hash = compute_encrypted_log_hash(encrypted_log);\n let side_effect = SideEffect { value: log_hash, counter };\n self.encrypted_logs_hashes.push(side_effect);\n let encrypted_log_byte_len = 112 + 32 * (N + 3);\n // + processed log len (4)\n self.encrypted_log_preimages_length += encrypted_log_byte_len + 4;\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 item = call_private_function_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 assert_eq(item.public_inputs.call_context.side_effect_counter, self.side_effect_counter);\n assert_eq(item.public_inputs.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.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 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 self.private_call_stack_hashes.push(item.hash());\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 nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n private_call_stack_hashes : 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 encrypted_logs_hashes: BoundedVec::new(),\n unencrypted_logs_hashes: BoundedVec::new(),\n encrypted_log_preimages_length: 0,\n unencrypted_log_preimages_length: 0,\n nullifier_key: Option::none(),\n }\n }\n}\n\nstruct PackedReturns {\n packed_returns: Field,\n}\n\nimpl PackedReturns {\n pub fn new(packed_returns: Field) -> Self {\n PackedReturns { packed_returns }\n }\n\n pub fn assert_empty(self) {\n assert_eq(self.packed_returns, 0);\n }\n\n pub fn raw(self) -> Field {\n self.packed_returns\n }\n\n pub fn unpack<N>(self) -> [Field; N] {\n let unpacked: [Field; N] = returns::unpack_returns(self.packed_returns);\n assert_eq(self.packed_returns, hash_args_array(unpacked));\n unpacked\n }\n\n pub fn unpack_into<T, N>(self) -> T where T: Deserialize<N> {\n let unpacked: [Field; N] = self.unpack();\n Deserialize::deserialize(unpacked)\n }\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle_private<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T,\n _counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log_private_internal<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T,\n counter: u32\n) -> Field {\n emit_unencrypted_log_oracle_private(contract_address, event_selector, message, counter)\n}\n\n#[oracle(emitContractClassUnencryptedLog)]\nfn emit_contract_class_unencrypted_log_private<N>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {}\n\nunconstrained pub fn emit_contract_class_unencrypted_log_private_internal<N>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: [Field; N],\n counter: u32\n) -> Field {\n emit_contract_class_unencrypted_log_private(contract_address, event_selector, message, counter)\n}\n\n"},"96":{"path":"/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr","source":"use dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__SECRET_HASH, GENERATOR_INDEX__MESSAGE_NULLIFIER, ARGS_HASH_CHUNK_COUNT,\n GENERATOR_INDEX__FUNCTION_ARGS, ARGS_HASH_CHUNK_LENGTH\n},\n traits::Hash, hash::{pedersen_hash, poseidon2_hash, silo_nullifier, sha256_to_field}\n};\nuse crate::oracle::logs_traits::{LensForEncryptedLog, ToBytesForUnencryptedLog};\n\npub fn compute_secret_hash(secret: Field) -> Field {\n pedersen_hash([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_encrypted_log_hash<N, M, L>(encrypted_log: [Field; M]) -> Field where [Field; N]: LensForEncryptedLog<N, M, L> {\n let mut bytes = [0; L];\n // Note that bytes.append(encrypted_log[i].to_be_bytes(31)) results in bound error\n for i in 0..M - 1 {\n let to_add = encrypted_log[i].to_be_bytes(31);\n for j in 0..31 {\n bytes[i*31 + j] = to_add[j];\n }\n }\n // can't assign as L - not in scope error for: L-31*(M-1)\n let num_bytes = bytes.len() as u32 - 31 * (M - 1);\n let to_add_final = encrypted_log[M - 1].to_be_bytes(num_bytes);\n for j in 0..num_bytes {\n bytes[(M-1)*31 + j] = to_add_final[j];\n }\n sha256_to_field(bytes)\n}\n\npub fn compute_unencrypted_log_hash<T, N, M>(\n contract_address: AztecAddress,\n event_selector: Field,\n log: T\n) -> Field where T: ToBytesForUnencryptedLog<N, M> {\n let message_bytes: [u8; N] = log.to_be_bytes_arr();\n // can't use N - not in scope error\n let n = message_bytes.len();\n let mut hash_bytes = [0; M];\n // Address is converted to 32 bytes in ts\n let address_bytes = contract_address.to_be_bytes_arr();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let event_bytes = event_selector.to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[32 + i] = event_bytes[i];\n }\n let len_bytes = (n as Field).to_be_bytes(4);\n for i in 0..4 {\n hash_bytes[36 + i] = len_bytes[i];\n }\n for i in 0..n {\n hash_bytes[40 + i] = message_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field\n) -> Field {\n let mut hash_bytes = [0 as u8; 192];\n let sender_bytes = sender.to_field().to_be_bytes(32);\n let chain_id_bytes = chain_id.to_be_bytes(32);\n let recipient_bytes = recipient.to_field().to_be_bytes(32);\n let version_bytes = version.to_be_bytes(32);\n let content_bytes = content.to_be_bytes(32);\n let secret_hash_bytes = secret_hash.to_be_bytes(32);\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret and index of the message hash\n// in the L1 to L2 message tree\npub fn compute_message_nullifier(message_hash: Field, secret: Field, leaf_index: Field) -> Field {\n pedersen_hash(\n [message_hash, secret, leaf_index],\n GENERATOR_INDEX__MESSAGE_NULLIFIER\n )\n}\n\npub fn compute_siloed_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n silo_nullifier(address, nullifier)\n}\n\nstruct ArgsHasher {\n fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<N>(args: [Field; N]) -> Field {\n hash_args(args.as_slice())\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n assert(args.len() < ARGS_HASH_CHUNK_COUNT * ARGS_HASH_CHUNK_LENGTH);\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n let mut current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n\n let mut current_chunk_index = 0;\n let mut index_inside_current_chunk = 0;\n for i in 0..args.len() {\n current_chunk_values[index_inside_current_chunk] = args[i];\n index_inside_current_chunk+=1;\n if index_inside_current_chunk == ARGS_HASH_CHUNK_LENGTH {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n current_chunk_values = [0; ARGS_HASH_CHUNK_LENGTH];\n current_chunk_index+=1;\n index_inside_current_chunk = 0;\n }\n }\n if index_inside_current_chunk > 0 {\n chunks_hashes[current_chunk_index] = pedersen_hash(current_chunk_values, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..800 {\n input.add(i as Field);\n }\n let hash = input.hash();\n assert(hash == 0x05a1023fef839ac88731f49ae983e172c1b600a3c8f3393ad0ac25d819ac0f0f);\n}\n\n#[test]\nfn compute_enc_log_hash_304() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x0021a0d4aa9989656b592187cf6da1965df53ab2ff2277421e663465cf20d3e9,\n 0x00c3969cc350f3474f8187a33ac1317181961f5f94043b07ce888d85a5d20cb5,\n 0x0058198041ed1547b056955b5141a5a8a1551b0c8d094255ec9daaf3604d9348,\n 0x00247ad96df2e4d984cf795ed7316234743a681f824a45c46253de8bfde48850,\n 0x007fc251f4ce44f4e9aba3dbf6567228be28fac85660156f2825ddb0b0577457,\n 0x009315851323c6bc2aaa42e23fe5f3be97208f2d8167eafdfc5742d94f2f4dd4,\n 0x00b938289e563b0fe01982cd9b8d9e33e3069046768ad01c0fb05e429e7b7909,\n 0x00fbcc257a3211f705b471eee763b0f43876a2b2178fab6d2b09bd2b7e086584,\n 0x000000000000008c3289b5793b7448f4d45ecde039d004b6f037cad10b5c2336\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x001e3c013994947fe28957a876bf1b2c3a69ac69cc92909efd4f2ae9b972f893);\n}\n\n#[test]\nfn compute_enc_log_hash_368() {\n let input = [\n 0x0000000000000000000000000000000000000000000000000000000000000000,\n 0x002190697d2a50e229a7a077e0951073f7d51e46679f10466153c308b63b1ea9,\n 0x00543e346facc6799b94514c9d461bcc836c04b083b13c2e4544a39130473c1e,\n 0x000df76d59526f8f953bcc7d9f77cdaefd36435931f0d7348f794bc275b42ded,\n 0x00a6d390ee1723af7f7ac1ae4fc81a266b2370fe07040a36d06dbe242e02413e,\n 0x00acbce15b6af1fbe94bd0f7b70f11768265dff77bfe63398f2a053efdfdf26d,\n 0x00b8b131b9f42c689beb095ba4f4a836d4d15c9068d0422e9add6ca82b786329,\n 0x00661a6a654b38f0f97d404ef5553e0efea9ed670561ae86685b31bbb2824fac,\n 0x00113a6b58edfaec0065b365f66ba8d8aa68254b8690035e8d671a17a843f0a1,\n 0x0023f2d2eae8c4449bac8f268a3e62a3faace1fe1401f0efdc8b0ccfbc8fb271,\n 0x00cf6603f8c61993dd2f662c719671c61727a2f4e925fb988b23d31feccd77d9,\n 0x0000000000a402a84b7294671799c38dd805f6a827a3a12633fdf91a57debe1f\n ];\n let hash = compute_encrypted_log_hash(input);\n assert(hash == 0x00a0d651ac0cbc01b72430fa6a05d91738595af6e0229347b4c9968223387aeb);\n}\n\n#[test]\nfn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd\n ];\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00846d6969c8c2f61d39cd2762efcb0abb14f88d59c2675910251ef2bcffe9a7);\n}\n\n#[test]\nfn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6);\n let event_selector = 5;\n let log = AztecAddress::from_field(0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303);\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00880a801230ea08c98a802a11b4786cba474513875f0fc69a615e81c5f9f21c);\n}\n\n#[test]\nfn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"dummy\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x00a78b5347813624ecfd26e5b8bc6146f418b0cfcc8296b5112d09b8ebba9496);\n}\n\n#[test]\nfn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8);\n let event_selector = 5;\n let log = \"Hello this is a string\";\n let hash = compute_unencrypted_log_hash(contract_address, event_selector, log);\n assert(hash == 0x001f3390ea242afee7ce46dafdbdc4bd4f1cf20cd63850d12d60ff9956712c4f);\n}\n"}}}
|