diff --git a/contracts b/contracts index 5d66bd9a0b5..0bdc9ba54fe 160000 --- a/contracts +++ b/contracts @@ -1 +1 @@ -Subproject commit 5d66bd9a0b574fd70f3ccdfa58dc93d8ddfa04ca +Subproject commit 0bdc9ba54febe4c11e307350790304bc42d029d3 diff --git a/core/lib/constants/src/contracts.rs b/core/lib/constants/src/contracts.rs index 1518d2d9f77..8a56105a440 100644 --- a/core/lib/constants/src/contracts.rs +++ b/core/lib/constants/src/contracts.rs @@ -156,6 +156,10 @@ pub const L2_MESSAGE_ROOT_ADDRESS: Address = H160([ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, ]); +pub const SLOAD_CONTRACT_ADDRESS: Address = H160([ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x06, +]); pub const ERC20_TRANSFER_TOPIC: H256 = H256([ 221, 242, 82, 173, 27, 226, 200, 155, 105, 194, 176, 104, 252, 55, 141, 170, 149, 43, 167, 241, diff --git a/core/lib/types/src/system_contracts.rs b/core/lib/types/src/system_contracts.rs index 4caf81fd0cf..e201c66f266 100644 --- a/core/lib/types/src/system_contracts.rs +++ b/core/lib/types/src/system_contracts.rs @@ -7,7 +7,7 @@ use zksync_system_constants::{ BOOTLOADER_UTILITIES_ADDRESS, CODE_ORACLE_ADDRESS, COMPRESSOR_ADDRESS, CREATE2_FACTORY_ADDRESS, EVENT_WRITER_ADDRESS, L2_ASSET_ROUTER_ADDRESS, L2_BRIDGEHUB_ADDRESS, L2_GENESIS_UPGRADE_ADDRESS, L2_MESSAGE_ROOT_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADDRESS, - P256VERIFY_PRECOMPILE_ADDRESS, PUBDATA_CHUNK_PUBLISHER_ADDRESS, + P256VERIFY_PRECOMPILE_ADDRESS, PUBDATA_CHUNK_PUBLISHER_ADDRESS, SLOAD_CONTRACT_ADDRESS, }; use crate::{ @@ -27,7 +27,7 @@ use crate::{ pub const TX_NONCE_INCREMENT: U256 = U256([1, 0, 0, 0]); // 1 pub const DEPLOYMENT_NONCE_INCREMENT: U256 = U256([0, 0, 1, 0]); // 2^128 -static SYSTEM_CONTRACT_LIST: [(&str, &str, Address, ContractLanguage); 30] = [ +static SYSTEM_CONTRACT_LIST: [(&str, &str, Address, ContractLanguage); 31] = [ ( "", "AccountCodeStorage", @@ -200,6 +200,12 @@ static SYSTEM_CONTRACT_LIST: [(&str, &str, Address, ContractLanguage); 30] = [ L2_NATIVE_TOKEN_VAULT_ADDRESS, ContractLanguage::Sol, ), + ( + "", + "SloadContract", + SLOAD_CONTRACT_ADDRESS, + ContractLanguage::Sol, + ) ]; static SYSTEM_CONTRACTS: Lazy> = Lazy::new(|| { diff --git a/etc/env/file_based/genesis.yaml b/etc/env/file_based/genesis.yaml index 38ea04ecae8..7fc1e16133c 100644 --- a/etc/env/file_based/genesis.yaml +++ b/etc/env/file_based/genesis.yaml @@ -1,8 +1,8 @@ -genesis_root: 0x7c76ca2d9203e5df3cb8963c3ea27c94fd6c68219035319e820ac7837fd43769 -genesis_rollup_leaf_index: 64 -genesis_batch_commitment: 0xd0c7d79a9d7848984bf23633aef8cf26a22bf1e607edbeb7f7fbadf4cf1c06dd +genesis_root: 0xde1d0073915c62461b829cb8a9a344c1596a89b80ecca045700739df52221aae +genesis_rollup_leaf_index: 66 +genesis_batch_commitment: 0xe633e4aa12aade852ccbc7b02caa47f81ad71bdee0f9461342bc713f58da7756 genesis_protocol_version: 25 -default_aa_hash: 0x0100055d9982342d047fb5709665acedb5a5fa432ec105c907d60c878f95cd3e +default_aa_hash: 0x0100055d974eab9e54ec46d3aba418a5fe4d1d41ae6036d0c473835e28106376 bootloader_hash: 0x010008c79fe70427642db69b14314af076e5d54f1dada975b905bcbb5feb9f9e l1_chain_id: 9 l2_chain_id: 270 diff --git a/etc/upgrades/1728066632-protocol-defense/new b/etc/upgrades/1728066632-protocol-defense/new new file mode 100644 index 00000000000..8c23b2fb3a8 --- /dev/null +++ b/etc/upgrades/1728066632-protocol-defense/new @@ -0,0 +1 @@ +0x608060405234801561000f575f80fd5b5060043610610034575f3560e01c806387d9d023146100385780639e8945d214610060575b5f80fd5b61004b61004636600461431a565b610076565b60405190151581526020015b60405180910390f35b6100686100a1565b604051908152602001610057565b5f83810361008657506001610097565b61009487878787878761067f565b90505b9695505050505050565b5f6106747f110deb1e0863737f9a3d7b4de641a03aa00a77bc9f1a05acc9d55b76ab9fdd4d610200527f2c9dc252441e9298b7f6df6335a252517b7bccb924adf537b87c5cd3383fd7a9610220527f04659caf7b05471ba5ba85b1ab62267aa6c456836e625f169f7119d55b9462d2610240527f0ea63403692148d2ad22189a1e5420076312f4d46e62036a043a6b0b84d5b410610260527f0e6696d09d65fce1e42805be03fca1f14aea247281f688981f925e77d4ce2291610280527f0228f6cf8fe20c1e07e5b78bf8c41d50e55975a126d22a198d1e56acd4bbb3dd6102a0527f14685dafe340b1dec5eafcd5e7faddaf24f3781ddc53309cc25d0b42c00541dd6102c0527f0e651cff9447cb360198899b80fa23e89ec13bc94ff161729aa841d2b55ea5be6102e0527f16e9ef76cb68f2750eb0ee72382dd9911a982308d0ab10ef94dada13c382ae73610300527f22e404bc91350f3bc7daad1d1025113742436983c85eac5ab7b42221a181b81e610320527f0d9b29613037a5025655c82b143d2b7449c98f3aea358307c8529249cc54f3b9610340527f15b3c4c946ad1babfc4c03ff7c2423fd354af3a9305c499b7fb3aaebe2fee746610360527f2a4cb6c495dbc7201142cc773da895ae2046e790073988fb850aca6aead27b8a610380527f28ef9200c3cb67da82030520d640292014f5f7c2e2909da608812e04671a3acf6103a0527f283344a1ab3e55ecfd904d0b8e9f4faea338df5a4ead2fa9a42f0e103da40abc6103c0527f223b37b83b9687512d322993edd70e508dd80adb10bcf7321a3cc8a44c2695216103e0527f1f67f0ba5f7e837bc680acb4e612ebd938ad35211aa6e05b96cad19e66b82d2d610400527f2820641a84d2e8298ac2ac42bd4b912c0c37f768ecc83d3a29e7c720763d15a1610420527f0353257957562270292a17860ca8e8827703f828f440ee004848b1e23fdf9de2610440527f305f4137fee253dff8b2bfe579038e8f25d5bd217865072af5d89fc8800ada24610460527f13a600154b369ff3237706d00948e465ee1c32c7a6d3e18bccd9c4a15910f2e5610480527f138aa24fbf4cdddc75114811b3d59040394c218ecef3eb46ef9bd646f7e537766104a0527f277fff1f80c409357e2d251d79f6e3fd2164b755ce69cfd72de5c690289df6626104c0527f25235588e28c70eea3e35531c80deac25cd9b53ea3f98993f120108bc7abf6706104e0527f0990e07a9b001048b947d0e5bd6157214c7359b771f01bf52bd771ba563a900e610500527f05e5fb090dd40914c8606d875e301167ae3047d684a02b44d9d36f1eaf43d0b4610520527f1d4656690b33299db5631401a282afab3e16c78ee2c9ad9efea628171dcbc6bc610540527f0ebda2ebe582f601f813ec1e3970d13ef1500c742a85cce9b7f190f333de03b0610560527f2c513ed74d9d57a5ec901e074032741036353a2c4513422e96e7b53b302d765b6105c0527f04dd964427e430f16004076d708c0cb21e225056cc1d57418cfbd3d4729814686105e0527f1ea83e5e65c6f8068f4677e2911678cf329b28259642a32db1f14b8347828aac610600527f1d22bc884a2da4962a893ba8de13f57aaeb785ed52c5e686994839cab8f7475d610620527f0b2e7212d0d9cff26d0bdf3d79b2cac029a25dfeb1cafdf49e2349d7db348d89610640527f1301f9b252419ea240eb67fda720ca0b16d92364027285f95e9b1349490fa283610660527f02f7b99fdfa5b418548c2d777785820e02383cfc87e7085e280a375a358153bf610680527f09d004fe08dc4d19c382df36fad22ef676185663543703e6a4b40203e50fd8a66106a0527f2f4d347c7fb61daaadfff881e24f4b5dcfdc0d70a95bcb148168b90ef93e0007610580527f2322632465ba8e28cd0a4befd813ea85a972f4f6fa8e8603cf5d062dbcb140656105a0527f1e3c9fc98c118e4bc34f1f93d214a5d86898e980c40d8e2c180c6ada377a74676106c0527f2260a13535c35a15c173f5e5797d4b675b55d164a9995bfb7624971324bd84a86106e0525f61070052565b506105206102002090565b5f610c527f110deb1e0863737f9a3d7b4de641a03aa00a77bc9f1a05acc9d55b76ab9fdd4d610200527f2c9dc252441e9298b7f6df6335a252517b7bccb924adf537b87c5cd3383fd7a9610220527f04659caf7b05471ba5ba85b1ab62267aa6c456836e625f169f7119d55b9462d2610240527f0ea63403692148d2ad22189a1e5420076312f4d46e62036a043a6b0b84d5b410610260527f0e6696d09d65fce1e42805be03fca1f14aea247281f688981f925e77d4ce2291610280527f0228f6cf8fe20c1e07e5b78bf8c41d50e55975a126d22a198d1e56acd4bbb3dd6102a0527f14685dafe340b1dec5eafcd5e7faddaf24f3781ddc53309cc25d0b42c00541dd6102c0527f0e651cff9447cb360198899b80fa23e89ec13bc94ff161729aa841d2b55ea5be6102e0527f16e9ef76cb68f2750eb0ee72382dd9911a982308d0ab10ef94dada13c382ae73610300527f22e404bc91350f3bc7daad1d1025113742436983c85eac5ab7b42221a181b81e610320527f0d9b29613037a5025655c82b143d2b7449c98f3aea358307c8529249cc54f3b9610340527f15b3c4c946ad1babfc4c03ff7c2423fd354af3a9305c499b7fb3aaebe2fee746610360527f2a4cb6c495dbc7201142cc773da895ae2046e790073988fb850aca6aead27b8a610380527f28ef9200c3cb67da82030520d640292014f5f7c2e2909da608812e04671a3acf6103a0527f283344a1ab3e55ecfd904d0b8e9f4faea338df5a4ead2fa9a42f0e103da40abc6103c0527f223b37b83b9687512d322993edd70e508dd80adb10bcf7321a3cc8a44c2695216103e0527f1f67f0ba5f7e837bc680acb4e612ebd938ad35211aa6e05b96cad19e66b82d2d610400527f2820641a84d2e8298ac2ac42bd4b912c0c37f768ecc83d3a29e7c720763d15a1610420527f0353257957562270292a17860ca8e8827703f828f440ee004848b1e23fdf9de2610440527f305f4137fee253dff8b2bfe579038e8f25d5bd217865072af5d89fc8800ada24610460527f13a600154b369ff3237706d00948e465ee1c32c7a6d3e18bccd9c4a15910f2e5610480527f138aa24fbf4cdddc75114811b3d59040394c218ecef3eb46ef9bd646f7e537766104a0527f277fff1f80c409357e2d251d79f6e3fd2164b755ce69cfd72de5c690289df6626104c0527f25235588e28c70eea3e35531c80deac25cd9b53ea3f98993f120108bc7abf6706104e0527f0990e07a9b001048b947d0e5bd6157214c7359b771f01bf52bd771ba563a900e610500527f05e5fb090dd40914c8606d875e301167ae3047d684a02b44d9d36f1eaf43d0b4610520527f1d4656690b33299db5631401a282afab3e16c78ee2c9ad9efea628171dcbc6bc610540527f0ebda2ebe582f601f813ec1e3970d13ef1500c742a85cce9b7f190f333de03b0610560527f2c513ed74d9d57a5ec901e074032741036353a2c4513422e96e7b53b302d765b6105c0527f04dd964427e430f16004076d708c0cb21e225056cc1d57418cfbd3d4729814686105e0527f1ea83e5e65c6f8068f4677e2911678cf329b28259642a32db1f14b8347828aac610600527f1d22bc884a2da4962a893ba8de13f57aaeb785ed52c5e686994839cab8f7475d610620527f0b2e7212d0d9cff26d0bdf3d79b2cac029a25dfeb1cafdf49e2349d7db348d89610640527f1301f9b252419ea240eb67fda720ca0b16d92364027285f95e9b1349490fa283610660527f02f7b99fdfa5b418548c2d777785820e02383cfc87e7085e280a375a358153bf610680527f09d004fe08dc4d19c382df36fad22ef676185663543703e6a4b40203e50fd8a66106a0527f2f4d347c7fb61daaadfff881e24f4b5dcfdc0d70a95bcb148168b90ef93e0007610580527f2322632465ba8e28cd0a4befd813ea85a972f4f6fa8e8603cf5d062dbcb140656105a0527f1e3c9fc98c118e4bc34f1f93d214a5d86898e980c40d8e2c180c6ada377a74676106c0527f2260a13535c35a15c173f5e5797d4b675b55d164a9995bfb7624971324bd84a86106e0525f61070052565b614299565b7f08c379a0000000000000000000000000000000000000000000000000000000005f52602060045280602452508060445260645ffd5b60205f52602080526020604052806060525080608052507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160a0525f60205f60c05f60055afa610d0257610d027f6d6f6465787020707265636f6d70696c65206661696c656400000000000000006018610c57565b505f5190565b80515f52602081015160205250806040525060408160605f60075afa610d5357610d537f706f696e744d756c496e746f446573743a2065634d756c206661696c65640000601e610c57565b50565b80515f52602081015160205250805160405260208101516060525060408160805f60065afa610d5357610d537f706f696e74416464496e746f446573743a206563416464206661696c65640000601e610c57565b80515f526020810151602052815160405260208201517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470360605260408160805f60065afa610e1e57610e1e7f706f696e7453756241737369676e3a206563416464206661696c656400000000601c610c57565b5050565b80515f5260208101516020528151604052602082015160605260408160805f60065afa610e1e57610e1e7f706f696e7441646441737369676e3a206563416464206661696c656400000000601c610c57565b80515f52602081015160205250806040525060405f60605f60075afa8151604052602082015160605260408260805f60065afa1680610e1e57610e1e7f706f696e744d756c416e64416464496e746f44657374000000000000000000006016610c57565b6020810151808015610f1057507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470360209190910152565b825115610f4257610f427f706f696e744e65676174653a20696e76616c696420706f696e74000000000000601a610c57565b505050565b5f610d4353610d84526064610d40206001610d43536064610d4020610d6452610d4452565b6002610d435360e01b610d84526048610d40207f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60043560048101356001811490507f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483013516610720526024359150600482013581602c8214169150507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476024830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476044840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161074052806107605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476064830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476084840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161078052806107a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816107c052806107e05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760e4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610104840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161080052806108205250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610124830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610144840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161084052806108605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610164830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610184840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161088052806108a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816108c052806108e05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101e4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610204840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161090052806109205250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610224830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610244840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161094052806109605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610264830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610284840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161098052806109a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476102a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476102c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816109c052806109e05250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016102e483013506610a00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161030483013506610a20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161032483013506610a40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161034483013506610a60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161036483013506610a80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161038483013506610aa0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103a483013506610ac0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103c483013506610ae0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103e483013506610b00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161040483013506610b20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161042483013506610b40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161044483013506610b60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161046483013506610b80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161048483013506610ba0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104a483013506610bc0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104c483013506610be0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104e483013506610c00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161050483013506610c20527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610524830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610544840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141693505081610c405280610c605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610564830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610584840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141693505081610c805280610ca052505060443591506004820135610700515f811461214d5782600483141692507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476024850135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476044860135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309857f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141695505081610cc05280610ce05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476064850135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476084860135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309857f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141695505081610d005280610d20525050612154565b8282151692505b505080610e1e57610e1e7f6c6f616450726f6f663a2050726f6f6620697320696e76616c69640000000000601b610c57565b61219261072051610f47565b61219e61074051610f47565b6121aa61076051610f47565b6121b661078051610f47565b6121c26107a051610f47565b6121ce6107c051610f47565b6121da6107e051610f47565b6121e661080051610f47565b6121f261082051610f47565b6121fb5f610f6c565b610f005261220b61088051610f47565b6122176108a051610f47565b6122216001610f6c565b610de05261222f6002610f6c565b610e005261223f61084051610f47565b61224b61086051610f47565b6122556003610f6c565b610f20526122636004610f6c565b610f40526122736108c051610f47565b61227f6108e051610f47565b6122896005610f6c565b610dc05261229961090051610f47565b6122a561092051610f47565b6122b161094051610f47565b6122bd61096051610f47565b6122c961098051610f47565b6122d56109a051610f47565b6122e16109c051610f47565b6122ed6109e051610f47565b6122f76006610f6c565b80610fe05261230a630100000082610c8d565b611060525061231b610c0051610f47565b612327610a0051610f47565b612333610a2051610f47565b61233f610a4051610f47565b61234b610a6051610f47565b612357610a8051610f47565b612363610aa051610f47565b61236f610ac051610f47565b61237b610ae051610f47565b612387610b0051610f47565b612393610b2051610f47565b61239f610b8051610f47565b6123ab610bc051610f47565b6123b7610be051610f47565b6123c3610b4051610f47565b6123cf610b6051610f47565b6123db610ba051610f47565b6123e7610c2051610f47565b6123f16007610f6c565b610fa052612401610c4051610f47565b61240d610c6051610f47565b612419610c8051610f47565b612425610ca051610f47565b61242f6008610f6c565b610fc052565b610dc0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181820980610e20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610ea0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610ec0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209610ee0525050610fe051612571815f612702565b611020526125828162ffffff612702565b61104052507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016107205161102051097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610aa051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016126036128ab565b820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001612630612b88565b820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c20510890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000010361106051087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0051099050818114610e1e57610e1e7f696e76616c69642071756f7469656e74206576616c756174696f6e0000000000601b610c57565b5f6001821561273857612735837f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb610c8d565b90505b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000612788630100000087610c8d565b089150816127bb576127bb7f696e76616c69642076616e697368696e6720706f6c796e6f6d69616c00000000601c610c57565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103850890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000163010000008209905061287d7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff82610c8d565b90507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818309949350505050565b5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b2051610e6051099050610e0051610de0515f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610ac0510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a0051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610ae0510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a2051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610b00510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a4051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818509935050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018082610a6051088309915050807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050611020517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e8051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103830891505090565b5f610f2051610f40517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600183087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209915080610f60525080610f80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610b40510992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b6051840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ea05184099250612cb562ffffff7f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb610c8d565b91507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103610fe05108915081611000527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ec051611020510991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001038408611040519093509150612db562ffffff82610c8d565b610ee0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184870909935050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000010384089250505090565b612e5e8183610200610d08565b612e6b8184610240610e74565b612e788185610280610e74565b612e8581866102c0610e74565b612eb5817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001858509610300610e74565b612ee5817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001868509610340610e74565b612ef161038082610e22565b612f0181610a80516103c0610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051610aa05109612f36828284610d08565b505050505050565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184850991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610dc051830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000185860990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001867f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e2051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184870990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e4051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183089150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182099050612f368282610440610e74565b610e60517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610de051610fe05109610e00517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001838508087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160058809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001887f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160078809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001897f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600a8809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018185099350505050611020517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610e8051830983089150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa0518209905080611340527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610de051610e60510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b205182099050610de051610e00517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000186610ac0510908087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187610ae05109080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001887f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187610b005109080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993505050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa0518209905061369761108082610540610d08565b506136a461108082610daa565b5050505050565b50610b60517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ea051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161100051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182096113805250610ba051610f20517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b8051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f80518208610f00519091508290807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180878309840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180888309840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018082610be051098408925050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610bc051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f4051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183099150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f60518209610ea0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019182039250820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161100051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610ec0516110205109820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610ee0516110405109820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182096113605250505050565b6110605180610900516110c052610920516110e052613a2c6110c082610940610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613a616110c082610980610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613a966110c0826109c0610e74565b5050610a0051610a2051610a4051610a6051613ab781838587611100612e51565b613ac681838587611100612f3e565b613ad581838587611100613188565b50613ae48183856111006136ab565b5050506105c051611140526105e05161116052610f005180613b0b61114082610600610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613b4061114082610640610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050610e1e61114082610680610e74565b60015f806110c051611180526110e0516111a052610c0051613bfd565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05186099150613bca6111808385610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180855184098708905094509492505050565b613c0e611180611100611180610d56565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610c2051860982089050613c738185610a00610740613b92565b91509350613c878185610a20610780613b92565b91509350613c9b8185610a406107c0613b92565b915093507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993508392507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610a6051860982089050613d078185610aa0610400613b92565b91509350613d1b8185610ac0610480613b92565b91509350613d2f8185610ae06104c0613b92565b91509350613d438185610b00610500613b92565b915093507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993508391507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610b8051860982089050613daf8185610bc0610580613b92565b91509350613dc38185610be06106c0613b92565b61120052610fa0519094507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019150840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610fc05185096113405108613e316111c082610840610d08565b507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183610b205109613ef5565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051870991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610fc05184098608613ec06111c08286610e74565b507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018085518409880890509550959350505050565b613f06818585610a80610800613e5e565b91509350613f1e818561138051610b40610880613e5e565b91509350613f36818561136051610b606108c0613e5e565b91509350613f4b818584610ba0611140613e5e565b611220525050610fc0519250613f6c915061128090506111c0611180610d56565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001611200517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001836112205109089050600161124052600261126052610d5361124082611240610d08565b610fc051610fe0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb8209614030611240611280610daa565b61403f61128083610c40610e74565b6140716112807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001858409610c80610e74565b5050610c405161130052610c60516113205261409261130082610c80610e74565b61409d611300610ed8565b61070051156140ea577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018182096140d961128082610cc0610e74565b6140e861130082610d00610e74565b505b50611280515f526112a0516020527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26040527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6080527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60a0526113005160c0526113205160e0527f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c1610100527f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b0610120527f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4610140527f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e556101605260205f6101805f60085afa80614265576142657f66696e616c50616972696e673a20707265636f6d70696c65206661696c7572656020610c57565b505f51614297576142977f66696e616c50616972696e673a2070616972696e67206661696c757265000000601d610c57565b565b6142a1610fa4565b6142a9612186565b6142b1612435565b6142b9613a08565b6142c1613b75565b6142c9613fd6565b60015f5260205ff35b5f8083601f8401126142e2575f80fd5b50813567ffffffffffffffff8111156142f9575f80fd5b6020830191508360208260051b8501011115614313575f80fd5b9250929050565b5f805f805f806060878903121561432f575f80fd5b863567ffffffffffffffff80821115614346575f80fd5b6143528a838b016142d2565b9098509650602089013591508082111561436a575f80fd5b6143768a838b016142d2565b9096509450604089013591508082111561438e575f80fd5b5061439b89828a016142d2565b979a969950949750929593949250505056fea26469706673582212203a4de71ca917b74e8a829d46d960da42f0a89490ae56648d34e7bf0e6fa3eb4c64736f6c63430008180033 \ No newline at end of file diff --git a/etc/upgrades/1728066632-protocol-defense/old b/etc/upgrades/1728066632-protocol-defense/old new file mode 100644 index 00000000000..107e30278d1 --- /dev/null +++ b/etc/upgrades/1728066632-protocol-defense/old @@ -0,0 +1 @@ +0x608060405234801561000f575f80fd5b5060043610610034575f3560e01c806387d9d023146100385780639e8945d214610060575b5f80fd5b61004b61004636600461431a565b610076565b60405190151581526020015b60405180910390f35b6100686100a1565b604051908152602001610057565b5f83810361008657506001610097565b61009487878787878761067f565b90505b9695505050505050565b5f6106747f110deb1e0863737f9a3d7b4de641a03aa00a77bc9f1a05acc9d55b76ab9fdd4d610200527f2c9dc252441e9298b7f6df6335a252517b7bccb924adf537b87c5cd3383fd7a9610220527f04659caf7b05471ba5ba85b1ab62267aa6c456836e625f169f7119d55b9462d2610240527f0ea63403692148d2ad22189a1e5420076312f4d46e62036a043a6b0b84d5b410610260527f0e6696d09d65fce1e42805be03fca1f14aea247281f688981f925e77d4ce2291610280527f0228f6cf8fe20c1e07e5b78bf8c41d50e55975a126d22a198d1e56acd4bbb3dd6102a0527f14685dafe340b1dec5eafcd5e7faddaf24f3781ddc53309cc25d0b42c00541dd6102c0527f0e651cff9447cb360198899b80fa23e89ec13bc94ff161729aa841d2b55ea5be6102e0527f16e9ef76cb68f2750eb0ee72382dd9911a982308d0ab10ef94dada13c382ae73610300527f22e404bc91350f3bc7daad1d1025113742436983c85eac5ab7b42221a181b81e610320527f0d9b29613037a5025655c82b143d2b7449c98f3aea358307c8529249cc54f3b9610340527f15b3c4c946ad1babfc4c03ff7c2423fd354af3a9305c499b7fb3aaebe2fee746610360527f2a4cb6c495dbc7201142cc773da895ae2046e790073988fb850aca6aead27b8a610380527f28ef9200c3cb67da82030520d640292014f5f7c2e2909da608812e04671a3acf6103a0527f283344a1ab3e55ecfd904d0b8e9f4faea338df5a4ead2fa9a42f0e103da40abc6103c0527f223b37b83b9687512d322993edd70e508dd80adb10bcf7321a3cc8a44c2695216103e0527f1f67f0ba5f7e837bc680acb4e612ebd938ad35211aa6e05b96cad19e66b82d2d610400527f2820641a84d2e8298ac2ac42bd4b912c0c37f768ecc83d3a29e7c720763d15a1610420527f0353257957562270292a17860ca8e8827703f828f440ee004848b1e23fdf9de2610440527f305f4137fee253dff8b2bfe579038e8f25d5bd217865072af5d89fc8800ada24610460527f13a600154b369ff3237706d00948e465ee1c32c7a6d3e18bccd9c4a15910f2e5610480527f138aa24fbf4cdddc75114811b3d59040394c218ecef3eb46ef9bd646f7e537766104a0527f277fff1f80c409357e2d251d79f6e3fd2164b755ce69cfd72de5c690289df6626104c0527f25235588e28c70eea3e35531c80deac25cd9b53ea3f98993f120108bc7abf6706104e0527f0990e07a9b001048b947d0e5bd6157214c7359b771f01bf52bd771ba563a900e610500527f05e5fb090dd40914c8606d875e301167ae3047d684a02b44d9d36f1eaf43d0b4610520527f1d4656690b33299db5631401a282afab3e16c78ee2c9ad9efea628171dcbc6bc610540527f0ebda2ebe582f601f813ec1e3970d13ef1500c742a85cce9b7f190f333de03b0610560527f2c513ed74d9d57a5ec901e074032741036353a2c4513422e96e7b53b302d765b6105c0527f04dd964427e430f16004076d708c0cb21e225056cc1d57418cfbd3d4729814686105e0527f1ea83e5e65c6f8068f4677e2911678cf329b28259642a32db1f14b8347828aac610600527f1d22bc884a2da4962a893ba8de13f57aaeb785ed52c5e686994839cab8f7475d610620527f0b2e7212d0d9cff26d0bdf3d79b2cac029a25dfeb1cafdf49e2349d7db348d89610640527f1301f9b252419ea240eb67fda720ca0b16d92364027285f95e9b1349490fa283610660527f02f7b99fdfa5b418548c2d777785820e02383cfc87e7085e280a375a358153bf610680527f09d004fe08dc4d19c382df36fad22ef676185663543703e6a4b40203e50fd8a66106a0527f2f4d347c7fb61daaadfff881e24f4b5dcfdc0d70a95bcb148168b90ef93e0007610580527f2322632465ba8e28cd0a4befd813ea85a972f4f6fa8e8603cf5d062dbcb140656105a0527f1e3c9fc98c118e4bc34f1f93d214a5d86898e980c40d8e2c180c6ada377a74676106c0527f2260a13535c35a15c173f5e5797d4b675b55d164a9995bfb7624971324bd84a86106e0525f61070052565b506105206102002090565b5f610c527f110deb1e0863737f9a3d7b4de641a03aa00a77bc9f1a05acc9d55b76ab9fdd4d610200527f2c9dc252441e9298b7f6df6335a252517b7bccb924adf537b87c5cd3383fd7a9610220527f04659caf7b05471ba5ba85b1ab62267aa6c456836e625f169f7119d55b9462d2610240527f0ea63403692148d2ad22189a1e5420076312f4d46e62036a043a6b0b84d5b410610260527f0e6696d09d65fce1e42805be03fca1f14aea247281f688981f925e77d4ce2291610280527f0228f6cf8fe20c1e07e5b78bf8c41d50e55975a126d22a198d1e56acd4bbb3dd6102a0527f14685dafe340b1dec5eafcd5e7faddaf24f3781ddc53309cc25d0b42c00541dd6102c0527f0e651cff9447cb360198899b80fa23e89ec13bc94ff161729aa841d2b55ea5be6102e0527f16e9ef76cb68f2750eb0ee72382dd9911a982308d0ab10ef94dada13c382ae73610300527f22e404bc91350f3bc7daad1d1025113742436983c85eac5ab7b42221a181b81e610320527f0d9b29613037a5025655c82b143d2b7449c98f3aea358307c8529249cc54f3b9610340527f15b3c4c946ad1babfc4c03ff7c2423fd354af3a9305c499b7fb3aaebe2fee746610360527f2a4cb6c495dbc7201142cc773da895ae2046e790073988fb850aca6aead27b8a610380527f28ef9200c3cb67da82030520d640292014f5f7c2e2909da608812e04671a3acf6103a0527f283344a1ab3e55ecfd904d0b8e9f4faea338df5a4ead2fa9a42f0e103da40abc6103c0527f223b37b83b9687512d322993edd70e508dd80adb10bcf7321a3cc8a44c2695216103e0527f1f67f0ba5f7e837bc680acb4e612ebd938ad35211aa6e05b96cad19e66b82d2d610400527f2820641a84d2e8298ac2ac42bd4b912c0c37f768ecc83d3a29e7c720763d15a1610420527f0353257957562270292a17860ca8e8827703f828f440ee004848b1e23fdf9de2610440527f305f4137fee253dff8b2bfe579038e8f25d5bd217865072af5d89fc8800ada24610460527f13a600154b369ff3237706d00948e465ee1c32c7a6d3e18bccd9c4a15910f2e5610480527f138aa24fbf4cdddc75114811b3d59040394c218ecef3eb46ef9bd646f7e537766104a0527f277fff1f80c409357e2d251d79f6e3fd2164b755ce69cfd72de5c690289df6626104c0527f25235588e28c70eea3e35531c80deac25cd9b53ea3f98993f120108bc7abf6706104e0527f0990e07a9b001048b947d0e5bd6157214c7359b771f01bf52bd771ba563a900e610500527f05e5fb090dd40914c8606d875e301167ae3047d684a02b44d9d36f1eaf43d0b4610520527f1d4656690b33299db5631401a282afab3e16c78ee2c9ad9efea628171dcbc6bc610540527f0ebda2ebe582f601f813ec1e3970d13ef1500c742a85cce9b7f190f333de03b0610560527f2c513ed74d9d57a5ec901e074032741036353a2c4513422e96e7b53b302d765b6105c0527f04dd964427e430f16004076d708c0cb21e225056cc1d57418cfbd3d4729814686105e0527f1ea83e5e65c6f8068f4677e2911678cf329b28259642a32db1f14b8347828aac610600527f1d22bc884a2da4962a893ba8de13f57aaeb785ed52c5e686994839cab8f7475d610620527f0b2e7212d0d9cff26d0bdf3d79b2cac029a25dfeb1cafdf49e2349d7db348d89610640527f1301f9b252419ea240eb67fda720ca0b16d92364027285f95e9b1349490fa283610660527f02f7b99fdfa5b418548c2d777785820e02383cfc87e7085e280a375a358153bf610680527f09d004fe08dc4d19c382df36fad22ef676185663543703e6a4b40203e50fd8a66106a0527f2f4d347c7fb61daaadfff881e24f4b5dcfdc0d70a95bcb148168b90ef93e0007610580527f2322632465ba8e28cd0a4befd813ea85a972f4f6fa8e8603cf5d062dbcb140656105a0527f1e3c9fc98c118e4bc34f1f93d214a5d86898e980c40d8e2c180c6ada377a74676106c0527f2260a13535c35a15c173f5e5797d4b675b55d164a9995bfb7624971324bd84a86106e0525f61070052565b614299565b7f08c379a0000000000000000000000000000000000000000000000000000000005f52602060045280602452508060445260645ffd5b60205f52602080526020604052806060525080608052507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160a0525f60205f60c05f60055afa610d0257610d027f6d6f6465787020707265636f6d70696c65206661696c656400000000000000006018610c57565b505f5190565b80515f52602081015160205250806040525060408160605f60075afa610d5357610d537f706f696e744d756c496e746f446573743a2065634d756c206661696c65640000601e610c57565b50565b80515f52602081015160205250805160405260208101516060525060408160805f60065afa610d5357610d537f706f696e74416464496e746f446573743a206563416464206661696c65640000601e610c57565b80515f526020810151602052815160405260208201517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470360605260408160805f60065afa610e1e57610e1e7f706f696e7453756241737369676e3a206563416464206661696c656400000000601c610c57565b5050565b80515f5260208101516020528151604052602082015160605260408160805f60065afa610e1e57610e1e7f706f696e7441646441737369676e3a206563416464206661696c656400000000601c610c57565b80515f52602081015160205250806040525060405f60605f60075afa8151604052602082015160605260408260805f60065afa1680610e1e57610e1e7f706f696e744d756c416e64416464496e746f44657374000000000000000000006016610c57565b6020810151808015610f1057507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470360209190910152565b825115610f4257610f427f706f696e744e65676174653a20696e76616c696420706f696e74000000000000601a610c57565b505050565b5f610d4353610d84526064610d40206001610d43536064610d4020610d6452610d4452565b6002610d435360e01b610d84526048610d40207f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b60043560048101356001811490507f1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602483013516610720526024359150600482013581602c8214169150507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476024830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476044840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161074052806107605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476064830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476084840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161078052806107a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816107c052806107e05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760e4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610104840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161080052806108205250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610124830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610144840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161084052806108605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610164830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610184840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161088052806108a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816108c052806108e05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476101e4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610204840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161090052806109205250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610224830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610244840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161094052806109605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610264830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610284840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784850914169350508161098052806109a05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476102a4830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476102c4840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485091416935050816109c052806109e05250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016102e483013506610a00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161030483013506610a20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161032483013506610a40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161034483013506610a60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161036483013506610a80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161038483013506610aa0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103a483013506610ac0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103c483013506610ae0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016103e483013506610b00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161040483013506610b20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161042483013506610b40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161044483013506610b60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161046483013506610b80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161048483013506610ba0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104a483013506610bc0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104c483013506610be0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016104e483013506610c00527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161050483013506610c20527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610524830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610544840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141693505081610c405280610c605250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610564830135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610584840135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141693505081610c805280610ca052505060443591506004820135610700515f811461214d5782600483141692507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476024850135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476044860135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309857f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141695505081610cc05280610ce05250507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476064850135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476084860135067f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47828309857f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848709087f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47848509141695505081610d005280610d20525050612154565b8282151692505b505080610e1e57610e1e7f6c6f616450726f6f663a2050726f6f6620697320696e76616c69640000000000601b610c57565b61219261072051610f47565b61219e61074051610f47565b6121aa61076051610f47565b6121b661078051610f47565b6121c26107a051610f47565b6121ce6107c051610f47565b6121da6107e051610f47565b6121e661080051610f47565b6121f261082051610f47565b6121fb5f610f6c565b610f005261220b61088051610f47565b6122176108a051610f47565b6122216001610f6c565b610de05261222f6002610f6c565b610e005261223f61084051610f47565b61224b61086051610f47565b6122556003610f6c565b610f20526122636004610f6c565b610f40526122736108c051610f47565b61227f6108e051610f47565b6122896005610f6c565b610dc05261229961090051610f47565b6122a561092051610f47565b6122b161094051610f47565b6122bd61096051610f47565b6122c961098051610f47565b6122d56109a051610f47565b6122e16109c051610f47565b6122ed6109e051610f47565b6122f76006610f6c565b80610fe05261230a630100000082610c8d565b611060525061231b610c0051610f47565b612327610a0051610f47565b612333610a2051610f47565b61233f610a4051610f47565b61234b610a6051610f47565b612357610a8051610f47565b612363610aa051610f47565b61236f610ac051610f47565b61237b610ae051610f47565b612387610b0051610f47565b612393610b2051610f47565b61239f610b8051610f47565b6123ab610bc051610f47565b6123b7610be051610f47565b6123c3610b4051610f47565b6123cf610b6051610f47565b6123db610ba051610f47565b6123e7610c2051610f47565b6123f16007610f6c565b610fa052612401610c4051610f47565b61240d610c6051610f47565b612419610c8051610f47565b612425610ca051610f47565b61242f6008610f6c565b610fc052565b610dc0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181820980610e20527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e40527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e60527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610e80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610ea0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209905080610ec0527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209610ee0525050610fe051612571815f612702565b611020526125828162ffffff612702565b61104052507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016107205161102051097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610aa051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016126036128ab565b820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001612630612b88565b820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c20510890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000010361106051087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181610c0051099050818114610e1e57610e1e7f696e76616c69642071756f7469656e74206576616c756174696f6e0000000000601b610c57565b5f6001821561273857612735837f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb610c8d565b90505b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000612788630100000087610c8d565b089150816127bb576127bb7f696e76616c69642076616e697368696e6720706f6c796e6f6d69616c00000000601c610c57565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103850890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000163010000008209905061287d7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff82610c8d565b90507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818309949350505050565b5f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b2051610e6051099050610e0051610de0515f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610ac0510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a0051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610ae0510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a2051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610b00510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610a4051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818509935050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018082610a6051088309915050807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001039050611020517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e8051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103830891505090565b5f610f2051610f40517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600183087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001828209915080610f60525080610f80527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182610b40510992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b6051840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ea05184099250612cb562ffffff7f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb610c8d565b91507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103610fe05108915081611000527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ec051611020510991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001038408611040519093509150612db562ffffff82610c8d565b610ee0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184870909935050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000010384089250505090565b612e5e8183610200610d08565b612e6b8184610240610e74565b612e788185610280610e74565b612e8581866102c0610e74565b612eb5817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001858509610300610e74565b612ee5817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001868509610340610e74565b612ef161038082610e22565b612f0181610a80516103c0610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051610aa05109612f36828284610d08565b505050505050565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184850991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610dc051830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000185860990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001867f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e2051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184870990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610e4051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183089150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182099050612f368282610440610e74565b610e60517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610de051610fe05109610e00517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001838508087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160058809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001887f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160078809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001897f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600a8809080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018185099350505050611020517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610e8051830983089150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa0518209905080611340527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610de051610e60510990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b205182099050610de051610e00517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001857f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000186610ac0510908087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001877f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187610ae05109080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001887f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001847f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187610b005109080890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181850993505050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa0518209905061369761108082610540610d08565b506136a461108082610daa565b5050505050565b50610b60517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610ea051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161100051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182096113805250610ba051610f20517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610b8051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f80518208610f00519091508290807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180878309840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180888309840892507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018082610be051098408925050507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610bc051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f4051820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183099150507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610f60518209610ea0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019182039250820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161100051820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610ec0516110205109820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610ee0516110405109820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05182096113605250505050565b6110605180610900516110c052610920516110e052613a2c6110c082610940610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613a616110c082610980610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613a966110c0826109c0610e74565b5050610a0051610a2051610a4051610a6051613ab781838587611100612e51565b613ac681838587611100612f3e565b613ad581838587611100613188565b50613ae48183856111006136ab565b5050506105c051611140526105e05161116052610f005180613b0b61114082610600610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050613b4061114082610640610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050610e1e61114082610680610e74565b60015f806110c051611180526110e0516111a052610c0051613bfd565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa05186099150613bca6111808385610e74565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180855184098708905094509492505050565b613c0e611180611100611180610d56565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610c2051860982089050613c738185610a00610740613b92565b91509350613c878185610a20610780613b92565b91509350613c9b8185610a406107c0613b92565b915093507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993508392507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610a6051860982089050613d078185610aa0610400613b92565b91509350613d1b8185610ac0610480613b92565b91509350613d2f8185610ae06104c0613b92565b91509350613d438185610b00610500613b92565b915093507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051850993508391507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610b8051860982089050613daf8185610bc0610580613b92565b91509350613dc38185610be06106c0613b92565b61120052610fa0519094507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019150840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610fc05185096113405108613e316111c082610840610d08565b507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183610b205109613ef5565b5f807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610fa051870991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000180610fc05184098608613ec06111c08286610e74565b507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018085518409880890509550959350505050565b613f06818585610a80610800613e5e565b91509350613f1e818561138051610b40610880613e5e565b91509350613f36818561136051610b606108c0613e5e565b91509350613f4b818584610ba0611140613e5e565b611220525050610fc0519250613f6c915061128090506111c0611180610d56565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001611200517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001836112205109089050600161124052600261126052610d5361124082611240610d08565b610fc051610fe0517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f1951441010b2b95a6e47a6075066a50a036f5ba978c050f2821df86636c0facb8209614030611240611280610daa565b61403f61128083610c40610e74565b6140716112807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001858409610c80610e74565b5050610c405161130052610c60516113205261409261130082610c80610e74565b61409d611300610ed8565b61070051156140ea577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018182096140d961128082610cc0610e74565b6140e861130082610d00610e74565b505b50611280515f526112a0516020527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26040527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6080527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60a0526113005160c0526113205160e0527f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c1610100527f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b0610120527f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4610140527f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e556101605260205f6101805f60085afa80614265576142657f66696e616c50616972696e673a20707265636f6d70696c65206661696c7572656020610c57565b505f51614297576142977f66696e616c50616972696e673a2070616972696e67206661696c757265000000601d610c57565b565b6142a1610fa4565b6142a9612186565b6142b1612435565b6142b9613a08565b6142c1613b75565b6142c9613fd6565b60015f5260205ff35b5f8083601f8401126142e2575f80fd5b50813567ffffffffffffffff8111156142f9575f80fd5b6020830191508360208260051b8501011115614313575f80fd5b9250929050565b5f805f805f806060878903121561432f575f80fd5b863567ffffffffffffffff80821115614346575f80fd5b6143528a838b016142d2565b9098509650602089013591508082111561436a575f80fd5b6143768a838b016142d2565b9096509450604089013591508082111561438e575f80fd5b5061439b89828a016142d2565b979a969950949750929593949250505056fea26469706673582212207fabb30c53d3d73d4bd2e7579697358e84e86d1522918aaadabaddddf2bcd0e264736f6c63430008180033 \ No newline at end of file diff --git a/zk_toolbox/crates/config/src/contracts.rs b/zk_toolbox/crates/config/src/contracts.rs index 0b004beccd8..557b63e68ac 100644 --- a/zk_toolbox/crates/config/src/contracts.rs +++ b/zk_toolbox/crates/config/src/contracts.rs @@ -62,7 +62,7 @@ impl ContractsConfig { .deployed_addresses .transparent_proxy_admin_addr; self.ecosystem_contracts.l1_bytecodes_supplier_addr = - Some(deploy_l1_output.deployed_addresses.bytecodes_supplier); + Some(deploy_l1_output.deployed_addresses.state_transition.bytecodes_supplier_addr); self.ecosystem_contracts.stm_deployment_tracker_proxy_addr = Some( deploy_l1_output .deployed_addresses @@ -75,6 +75,9 @@ impl ContractsConfig { .force_deployments_data .clone(), ); + self.ecosystem_contracts.expected_rollup_l2_da_validator = Some( + deploy_l1_output.expected_rollup_l2_da_validator_addr + ); self.l1.default_upgrade_addr = deploy_l1_output .deployed_addresses .state_transition @@ -195,6 +198,8 @@ pub struct ToolboxEcosystemContracts { pub native_token_vault_addr: Option
, // `Option` to be able to parse configs from previous protocol version pub l1_bytecodes_supplier_addr: Option
, + + pub expected_rollup_l2_da_validator: Option
} impl ZkToolboxConfig for ToolboxEcosystemContracts {} diff --git a/zk_toolbox/crates/config/src/forge_interface/deploy_ecosystem/output.rs b/zk_toolbox/crates/config/src/forge_interface/deploy_ecosystem/output.rs index 640f263645a..adf14a10755 100644 --- a/zk_toolbox/crates/config/src/forge_interface/deploy_ecosystem/output.rs +++ b/zk_toolbox/crates/config/src/forge_interface/deploy_ecosystem/output.rs @@ -19,6 +19,7 @@ pub struct DeployL1Output { pub owner_address: Address, pub contracts_config: DeployL1ContractsConfigOutput, pub deployed_addresses: DeployL1DeployedAddressesOutput, + pub expected_rollup_l2_da_validator_addr: Address, } #[derive(Debug, Deserialize, Serialize, Clone)] @@ -34,8 +35,8 @@ pub struct DeployL1DeployedAddressesOutput { pub state_transition: L1StateTransitionOutput, pub rollup_l1_da_validator_addr: Address, pub validium_l1_da_validator_addr: Address, + pub l1_rollup_da_manager: Address, pub native_token_vault_addr: Address, - pub bytecodes_supplier: Address, } impl ZkToolboxConfig for DeployL1Output {} @@ -79,6 +80,7 @@ pub struct L1StateTransitionOutput { pub genesis_upgrade_addr: Address, pub default_upgrade_addr: Address, pub diamond_proxy_addr: Address, + pub bytecodes_supplier_addr: Address, } #[derive(Debug, Deserialize, Serialize, Clone)] diff --git a/zk_toolbox/crates/config/src/forge_interface/deploy_gateway_ctm/input.rs b/zk_toolbox/crates/config/src/forge_interface/deploy_gateway_ctm/input.rs index 4f05a603aed..5f2bf4d1b75 100644 --- a/zk_toolbox/crates/config/src/forge_interface/deploy_gateway_ctm/input.rs +++ b/zk_toolbox/crates/config/src/forge_interface/deploy_gateway_ctm/input.rs @@ -47,6 +47,8 @@ pub struct DeployGatewayCTMInput { latest_protocol_version: U256, force_deployments_data: String, + + expected_rollup_l2_da_validator: Address, } impl ZkToolboxConfig for DeployGatewayCTMInput {} @@ -111,6 +113,8 @@ impl DeployGatewayCTMInput { latest_protocol_version: genesis_config.protocol_version.unwrap().pack(), + expected_rollup_l2_da_validator: contracts_config.ecosystem_contracts.expected_rollup_l2_da_validator.unwrap(), + force_deployments_data: contracts_config .ecosystem_contracts .force_deployments_data diff --git a/zk_toolbox/crates/zk_inception/src/commands/chain/gateway_upgrade.rs b/zk_toolbox/crates/zk_inception/src/commands/chain/gateway_upgrade.rs index 165b63cbff9..c68eb0eb675 100644 --- a/zk_toolbox/crates/zk_inception/src/commands/chain/gateway_upgrade.rs +++ b/zk_toolbox/crates/zk_inception/src/commands/chain/gateway_upgrade.rs @@ -138,7 +138,7 @@ pub async fn run(args: GatewayUpgradeArgs, shell: &Shell) -> anyhow::Result<()> // contracts_config.bridges.shared.l1_address = gateway_ecosystem_preparation_output.deployed_addresses.bridges.shared_bridge_proxy_addr; } -fn encode_ntv_asset_id(l1_chain_id: U256, addr: Address) -> H256 { +pub fn encode_ntv_asset_id(l1_chain_id: U256, addr: Address) -> H256 { let encoded_data = encode(&[ ethers::abi::Token::Uint(l1_chain_id), ethers::abi::Token::Address(L2_NATIVE_TOKEN_VAULT_ADDRESS), diff --git a/zk_toolbox/crates/zk_inception/src/commands/chain/init/configs.rs b/zk_toolbox/crates/zk_inception/src/commands/chain/init/configs.rs index d0897473b83..561026c36d8 100644 --- a/zk_toolbox/crates/zk_inception/src/commands/chain/init/configs.rs +++ b/zk_toolbox/crates/zk_inception/src/commands/chain/init/configs.rs @@ -10,8 +10,7 @@ use xshell::Shell; use crate::{ commands::{ chain::{ - args::init::configs::{InitConfigsArgs, InitConfigsArgsFinal}, - genesis, + args::init::configs::{InitConfigsArgs, InitConfigsArgsFinal}, gateway_upgrade::encode_ntv_asset_id, genesis }, portal::update_portal_config, }, @@ -87,6 +86,10 @@ pub async fn init_configs( contracts_config.l1.governance_addr = Address::zero(); contracts_config.l1.chain_admin_addr = Address::zero(); contracts_config.l1.base_token_addr = chain_config.base_token.address; + contracts_config.l1.base_token_asset_id = Some(encode_ntv_asset_id( + genesis_config.l1_chain_id.0.into(), + contracts_config.l1.base_token_addr, + )); contracts_config.save_with_base_path(shell, &chain_config.configs)?; // Initialize secrets config