From cc9a73aef38853ace0ae3ec95546ec504e158567 Mon Sep 17 00:00:00 2001 From: giladchase Date: Thu, 15 Jun 2023 15:56:13 +0300 Subject: [PATCH 01/19] Limit recursion depth for entrypoint calls (#612) Currently too many recursions hit stack-overflow panic, we don't want that. Increasing the stack size to 72MB is required in order to have the same recursion depth as in CPython, 3000. This is X36 times the 2MB default, is there a better way? --- .cargo/config.toml | 13 ++++++++++++- crates/blockifier/src/abi/constants.rs | 4 ++++ crates/blockifier/src/execution/entry_point.rs | 8 ++++++++ crates/blockifier/src/execution/errors.rs | 2 ++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 078ceb2a45..17340b5919 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,14 @@ [build] # Configuration for these lints should be placed in `.clippy.toml` at the crate root. -rustflags = ["-Dwarnings", "-Dfuture-incompatible", "-Dnonstandard-style", "-Drust-2018-idioms", "-Dunused"] +rustflags = [ + "-Dwarnings", + "-Dfuture-incompatible", + "-Dnonstandard-style", + "-Drust-2018-idioms", + "-Dunused", +] + +[env] +# Increase Rust stack size. +# This should be large enough for `MAX_ENTRY_POINT_RECURSION_DEPTH` recursive entry point calls. +RUST_MIN_STACK = "4194304" # 4 MiB diff --git a/crates/blockifier/src/abi/constants.rs b/crates/blockifier/src/abi/constants.rs index 7546a3e6a7..b2db7d9327 100644 --- a/crates/blockifier/src/abi/constants.rs +++ b/crates/blockifier/src/abi/constants.rs @@ -58,6 +58,10 @@ pub const SEND_MESSAGE_TO_L1_GAS_COST: u64 = 50 * STEP_GAS_COST; pub const STORAGE_READ_GAS_COST: u64 = 50 * STEP_GAS_COST; pub const STORAGE_WRITE_GAS_COST: u64 = 50 * STEP_GAS_COST; +// Max number of recursions allows in an EntryPoint. +// Compatible with CPython's max recursion depth. +pub const MAX_ENTRY_POINT_RECURSION_DEPTH: usize = 100; + // OS reserved contract addresses. // This contract stores the block number -> block hash mapping. diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index ccf336bd91..f451015c47 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -77,6 +77,8 @@ pub struct EntryPointExecutionContext { pub n_sent_messages_to_l1: usize, /// Used to track error stack for call chain. pub error_stack: Vec<(ContractAddress, String)>, + + recursion_depth: usize, } impl EntryPointExecutionContext { pub fn new( @@ -91,6 +93,7 @@ impl EntryPointExecutionContext { error_stack: vec![], block_context, account_tx_context, + recursion_depth: 0, } } @@ -116,6 +119,11 @@ impl CallEntryPoint { resources: &mut ExecutionResources, context: &mut EntryPointExecutionContext, ) -> EntryPointExecutionResult { + context.recursion_depth += 1; + if context.recursion_depth > constants::MAX_ENTRY_POINT_RECURSION_DEPTH { + return Err(EntryPointExecutionError::RecursionDepthExceeded); + } + // Validate contract is deployed. let storage_address = self.storage_address; let storage_class_hash = state.get_class_hash_at(self.storage_address)?; diff --git a/crates/blockifier/src/execution/errors.rs b/crates/blockifier/src/execution/errors.rs index 2cacf64d52..33a21086a3 100644 --- a/crates/blockifier/src/execution/errors.rs +++ b/crates/blockifier/src/execution/errors.rs @@ -137,4 +137,6 @@ pub enum EntryPointExecutionError { #[source] source: VirtualMachineExecutionError, }, + #[error("Execution failed due to recursion depth exceeded.")] + RecursionDepthExceeded, } From 3fd22ac6016410068cf2fb2ee7de86abb297bbef Mon Sep 17 00:00:00 2001 From: Alon Haramati <91828241+alonh5@users.noreply.github.com> Date: Sun, 18 Jun 2023 14:25:49 +0300 Subject: [PATCH 02/19] Prevent version 0 attack on argent accounts. (#627) --- crates/blockifier/src/execution/entry_point.rs | 16 +++++++++++++++- crates/blockifier/src/execution/errors.rs | 6 ++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index f451015c47..391efeaad0 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -8,7 +8,9 @@ use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector}; use starknet_api::deprecated_contract_class::EntryPointType; use starknet_api::hash::StarkFelt; use starknet_api::state::StorageKey; -use starknet_api::transaction::{Calldata, EthAddress, EventContent, L2ToL1Payload}; +use starknet_api::transaction::{ + Calldata, EthAddress, EventContent, L2ToL1Payload, TransactionVersion, +}; use crate::abi::abi_utils::selector_from_name; use crate::abi::constants; @@ -24,6 +26,9 @@ use crate::transaction::objects::{AccountTransactionContext, TransactionExecutio #[path = "entry_point_test.rs"] pub mod test; +pub const FAULTY_CLASS_HASH: &str = + "0x1A7820094FEAF82D53F53F214B81292D717E7BB9A92BB2488092CD306F3993F"; + pub type EntryPointExecutionResult = Result; /// Represents a the type of the call (used for debugging). @@ -135,6 +140,15 @@ impl CallEntryPoint { Some(class_hash) => class_hash, None => storage_class_hash, // If not given, take the storage contract class hash. }; + // Hack to prevent version 0 attack on argent accounts. + if context.account_tx_context.version == TransactionVersion(StarkFelt::from(0_u8)) + && class_hash + == ClassHash( + StarkFelt::try_from(FAULTY_CLASS_HASH).expect("A class hash must be a felt."), + ) + { + return Err(PreExecutionError::FraudAttempt().into()); + } // Add class hash to the call, that will appear in the output (call info). self.class_hash = Some(class_hash); let contract_class = state.get_compiled_contract_class(&class_hash)?; diff --git a/crates/blockifier/src/execution/errors.rs b/crates/blockifier/src/execution/errors.rs index 33a21086a3..9aabda3803 100644 --- a/crates/blockifier/src/execution/errors.rs +++ b/crates/blockifier/src/execution/errors.rs @@ -20,6 +20,8 @@ pub enum PreExecutionError { EntryPointNotFound(EntryPointSelector), #[error("Entry point {selector:?} of type {typ:?} is not unique.")] DuplicatedEntryPointSelector { selector: EntryPointSelector, typ: EntryPointType }, + #[error("Fraud attempt blocked.")] + FraudAttempt(), #[error("Invalid builtin {0:?}.")] InvalidBuiltin(String), #[error("No entry points of type {0:?} found in contract.")] @@ -126,6 +128,8 @@ pub enum EntryPointExecutionError { PostExecutionError(#[from] PostExecutionError), #[error(transparent)] PreExecutionError(#[from] PreExecutionError), + #[error("Execution failed due to recursion depth exceeded.")] + RecursionDepthExceeded, #[error(transparent)] StateError(#[from] StateError), /// Gathers all errors from running the Cairo VM, excluding hints. @@ -137,6 +141,4 @@ pub enum EntryPointExecutionError { #[source] source: VirtualMachineExecutionError, }, - #[error("Execution failed due to recursion depth exceeded.")] - RecursionDepthExceeded, } From fd66a2e5ea973cec6922b0b03f4f745bdcb3bc66 Mon Sep 17 00:00:00 2001 From: Noa Oved <104720318+noaov1@users.noreply.github.com> Date: Sun, 18 Jun 2023 14:28:55 +0300 Subject: [PATCH 03/19] Fix segment_arena resource counting. (#613) --- .../src/transaction/transaction_utils.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/blockifier/src/transaction/transaction_utils.rs b/crates/blockifier/src/transaction/transaction_utils.rs index 6df339055f..1020b6df15 100644 --- a/crates/blockifier/src/transaction/transaction_utils.rs +++ b/crates/blockifier/src/transaction/transaction_utils.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; use cairo_felt::Felt252; +use cairo_vm::vm::runners::builtin_runner::SEGMENT_ARENA_BUILTIN_NAME; use crate::abi::constants; use crate::execution::entry_point::{CallInfo, ExecutionResources}; @@ -61,13 +62,18 @@ pub fn calculate_tx_resources( // Add additional Cairo resources needed for the OS to run the transaction. let total_vm_usage = &execution_resources.vm_resources + &get_additional_os_resources(execution_resources.syscall_counter, tx_type)?; - let total_vm_usage = total_vm_usage.filter_unused_builtins(); + let mut total_vm_usage = total_vm_usage.filter_unused_builtins(); + // "segment_arena" built-in is not a SHARP built-in - i.e., it is not part of any proof layout. + // Each instance requires approximately 10 steps in the OS. + let n_steps = total_vm_usage.n_steps + + 10 * total_vm_usage + .builtin_instance_counter + .remove(SEGMENT_ARENA_BUILTIN_NAME) + .unwrap_or_default(); + let mut tx_resources = HashMap::from([ (constants::GAS_USAGE.to_string(), l1_gas_usage), - ( - constants::N_STEPS_RESOURCE.to_string(), - total_vm_usage.n_steps + total_vm_usage.n_memory_holes, - ), + (constants::N_STEPS_RESOURCE.to_string(), n_steps + total_vm_usage.n_memory_holes), ]); tx_resources.extend(total_vm_usage.builtin_instance_counter); From 189b9601d3c9c8c0d67328bdeb337c2d0d8f4fda Mon Sep 17 00:00:00 2001 From: dorimedini-starkware Date: Sun, 18 Jun 2023 16:20:47 +0300 Subject: [PATCH 04/19] Add NonceManager (#628) Signed-off-by: Dori Medini --- crates/blockifier/src/test_utils.rs | 20 +++++++++++++ .../transaction/account_transactions_test.rs | 22 +++++++++----- .../src/transaction/transactions_test.rs | 29 +++++++++++++++---- 3 files changed, 57 insertions(+), 14 deletions(-) diff --git a/crates/blockifier/src/test_utils.rs b/crates/blockifier/src/test_utils.rs index 41c532ee95..19ec4b2634 100644 --- a/crates/blockifier/src/test_utils.rs +++ b/crates/blockifier/src/test_utils.rs @@ -3,10 +3,12 @@ use std::fs; use std::iter::zip; use std::path::PathBuf; +use cairo_felt::Felt252; use cairo_vm::vm::runners::builtin_runner::{ BITWISE_BUILTIN_NAME, EC_OP_BUILTIN_NAME, HASH_BUILTIN_NAME, OUTPUT_BUILTIN_NAME, POSEIDON_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME, SIGNATURE_BUILTIN_NAME, }; +use num_traits::{One, Zero}; use starknet_api::block::{BlockNumber, BlockTimestamp}; use starknet_api::core::{ calculate_contract_address, ChainId, ClassHash, CompiledClassHash, ContractAddress, @@ -31,6 +33,7 @@ use crate::execution::entry_point::{ CallEntryPoint, CallExecution, CallInfo, CallType, EntryPointExecutionContext, EntryPointExecutionResult, ExecutionResources, Retdata, }; +use crate::execution::execution_utils::felt_to_stark_felt; use crate::state::cached_state::{CachedState, ContractClassMapping, ContractStorageKey}; use crate::state::errors::StateError; use crate::state::state_api::{State, StateReader, StateResult}; @@ -147,6 +150,21 @@ impl StateReader for DictStateReader { } } +#[derive(Default)] +pub struct NonceManager { + next_nonce: HashMap, +} + +impl NonceManager { + pub fn next(&mut self, account_address: ContractAddress) -> Nonce { + let zero = Felt252::zero(); + let next_felt252 = self.next_nonce.get(&account_address).unwrap_or(&zero); + let next = Nonce(felt_to_stark_felt(next_felt252)); + self.next_nonce.insert(account_address, Felt252::one() + next_felt252); + next + } +} + pub fn pad_address_to_64(address: &str) -> String { let trimmed_address = address.strip_prefix("0x").unwrap_or(address); String::from("0x") + format!("{trimmed_address:0>64}").as_str() @@ -366,6 +384,7 @@ pub fn deploy_account_tx( max_fee: Fee, constructor_calldata: Option, signature: Option, + nonce_manager: &mut NonceManager, ) -> DeployAccountTransaction { let class_hash = ClassHash(stark_felt!(class_hash)); let deployer_address = ContractAddress::default(); @@ -387,6 +406,7 @@ pub fn deploy_account_tx( contract_address, contract_address_salt, constructor_calldata, + nonce: nonce_manager.next(contract_address), ..Default::default() } } diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index 2a49c26a54..c98a3c3f8e 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use starknet_api::core::{calculate_contract_address, ClassHash, Nonce}; +use starknet_api::core::{calculate_contract_address, ClassHash}; use starknet_api::hash::StarkFelt; use starknet_api::transaction::{ Calldata, ContractAddressSalt, DeclareTransactionV0V1, Fee, InvokeTransaction, @@ -14,8 +14,8 @@ use crate::execution::contract_class::ContractClassV0; use crate::state::cached_state::CachedState; use crate::state::state_api::State; use crate::test_utils::{ - declare_tx, deploy_account_tx, invoke_tx, DictStateReader, ACCOUNT_CONTRACT_PATH, BALANCE, - ERC20_CONTRACT_PATH, MAX_FEE, TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, + declare_tx, deploy_account_tx, invoke_tx, DictStateReader, NonceManager, ACCOUNT_CONTRACT_PATH, + BALANCE, ERC20_CONTRACT_PATH, MAX_FEE, TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, TEST_CONTRACT_PATH, TEST_ERC20_CONTRACT_CLASS_HASH, }; use crate::transaction::account_transaction::AccountTransaction; @@ -47,10 +47,16 @@ fn test_account_flow_test() { let state = &mut create_state(); let block_context = &BlockContext::create_for_account_testing(); let max_fee = Fee(MAX_FEE); + let mut nonce_manager = NonceManager::default(); // Deploy an account contract. - let deploy_account_tx = - deploy_account_tx(TEST_ACCOUNT_CONTRACT_CLASS_HASH, max_fee, None, None); + let deploy_account_tx = deploy_account_tx( + TEST_ACCOUNT_CONTRACT_CLASS_HASH, + max_fee, + None, + None, + &mut nonce_manager, + ); let deployed_account_address = deploy_account_tx.contract_address; // Update the balance of the about-to-be deployed account contract in the erc20 contract, so it @@ -72,7 +78,7 @@ fn test_account_flow_test() { let account_tx = AccountTransaction::Declare( DeclareTransaction::new( starknet_api::transaction::DeclareTransaction::V1(DeclareTransactionV0V1 { - nonce: Nonce(stark_felt!(1_u8)), + nonce: nonce_manager.next(deployed_account_address), ..declare_tx }), contract_class, @@ -97,7 +103,7 @@ fn test_account_flow_test() { ]; let tx = invoke_tx(execute_calldata, deployed_account_address, max_fee, None); let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { - nonce: Nonce(stark_felt!(2_u8)), + nonce: nonce_manager.next(deployed_account_address), ..tx })); account_tx.execute(state, block_context).unwrap(); @@ -121,7 +127,7 @@ fn test_account_flow_test() { ]; let tx = invoke_tx(execute_calldata, deployed_account_address, max_fee, None); let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { - nonce: Nonce(stark_felt!(3_u8)), + nonce: nonce_manager.next(deployed_account_address), ..tx })); account_tx.execute(state, block_context).unwrap(); diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index d6871d3217..70e4439a0f 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -31,7 +31,7 @@ use crate::state::errors::StateError; use crate::state::state_api::{State, StateReader}; use crate::test_utils::{ test_erc20_account_balance_key, test_erc20_faulty_account_balance_key, - test_erc20_sequencer_balance_key, validate_tx_execution_info, DictStateReader, + test_erc20_sequencer_balance_key, validate_tx_execution_info, DictStateReader, NonceManager, ACCOUNT_CONTRACT_PATH, BALANCE, ERC20_CONTRACT_PATH, MAX_FEE, TEST_ACCOUNT_CONTRACT_ADDRESS, TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, TEST_CONTRACT_ADDRESS, TEST_CONTRACT_PATH, TEST_EMPTY_CONTRACT_CLASS_HASH, TEST_EMPTY_CONTRACT_PATH, TEST_ERC20_CONTRACT_ADDRESS, @@ -541,12 +541,14 @@ fn deploy_account_tx( account_class_hash: &str, constructor_calldata: Option, signature: Option, + nonce_manager: &mut NonceManager, ) -> DeployAccountTransaction { crate::test_utils::deploy_account_tx( account_class_hash, Fee(MAX_FEE), constructor_calldata, signature, + nonce_manager, ) } @@ -554,7 +556,9 @@ fn deploy_account_tx( fn test_deploy_account_tx() { let state = &mut create_state_with_trivial_validation_account(); let block_context = &BlockContext::create_for_account_testing(); - let deploy_account_tx = deploy_account_tx(TEST_ACCOUNT_CONTRACT_CLASS_HASH, None, None); + let mut nonce_manager = NonceManager::default(); + let deploy_account_tx = + deploy_account_tx(TEST_ACCOUNT_CONTRACT_CLASS_HASH, None, None, &mut nonce_manager); // Extract deploy account transaction fields for testing, as it is consumed when creating an // account transaction. @@ -656,8 +660,10 @@ fn test_deploy_account_tx() { // Negative flow. // Deploy to an existing address. - let deploy_account_tx = - DeployAccountTransaction { nonce: Nonce(stark_felt!(1_u8)), ..deploy_account_tx }; + let deploy_account_tx = DeployAccountTransaction { + nonce: nonce_manager.next(deployed_account_address), + ..deploy_account_tx + }; let account_tx = AccountTransaction::DeployAccount(deploy_account_tx); let error = account_tx.execute(state, block_context).unwrap_err(); assert_matches!( @@ -672,6 +678,7 @@ fn create_account_tx_for_validate_test( tx_type: TransactionType, scenario: u64, additional_data: Option, + nonce_manager: &mut NonceManager, ) -> AccountTransaction { // The first felt of the signature is used to set the scenario. If the scenario is // `CALL_CONTRACT` the second felt is used to pass the contract address. @@ -703,6 +710,7 @@ fn create_account_tx_for_validate_test( Fee(0), Some(calldata![stark_felt!(constants::FELT_FALSE)]), Some(signature), + nonce_manager, ); AccountTransaction::DeployAccount(deploy_account_tx) } @@ -733,7 +741,8 @@ fn test_validate_accounts_tx() { // Valid logic. let state = &mut create_state_with_falliable_validation_account(); - let account_tx = create_account_tx_for_validate_test(tx_type, VALID, None); + let account_tx = + create_account_tx_for_validate_test(tx_type, VALID, None, &mut NonceManager::default()); account_tx.execute(state, block_context).unwrap(); if tx_type != TransactionType::DeployAccount { @@ -743,6 +752,7 @@ fn test_validate_accounts_tx() { tx_type, CALL_CONTRACT, Some(stark_felt!(TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS)), + &mut NonceManager::default(), ); account_tx.execute(state, block_context).unwrap(); } @@ -751,7 +761,12 @@ fn test_validate_accounts_tx() { // Logic failure. let state = &mut create_state_with_falliable_validation_account(); - let account_tx = create_account_tx_for_validate_test(tx_type, INVALID, None); + let account_tx = create_account_tx_for_validate_test( + tx_type, + INVALID, + None, + &mut NonceManager::default(), + ); let error = account_tx.execute(state, block_context).unwrap_err(); // TODO(Noa,01/05/2023): Test the exact failure reason. assert_matches!(error, TransactionExecutionError::ValidateTransactionError(_)); @@ -761,6 +776,7 @@ fn test_validate_accounts_tx() { tx_type, CALL_CONTRACT, Some(stark_felt!(TEST_CONTRACT_ADDRESS)), + &mut NonceManager::default(), ); let error = account_tx.execute(state, block_context).unwrap_err(); assert_matches!(error, TransactionExecutionError::UnauthorizedInnerCall{entry_point_kind} if @@ -781,6 +797,7 @@ fn test_validate_accounts_tx() { stark_felt!(CALL_CONTRACT), stark_felt!(TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS), ])), + &mut NonceManager::default(), ); let account_tx = AccountTransaction::DeployAccount(deploy_account_tx); let error = account_tx.execute(state, block_context).unwrap_err(); From cca799e1aecd690281fa39b82b1d19d1aa7877b8 Mon Sep 17 00:00:00 2001 From: giladchase Date: Sun, 18 Jun 2023 20:53:25 +0300 Subject: [PATCH 05/19] Transaction execution failures log-level warn->debug (#626) --- crates/blockifier/src/transaction/transactions.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/blockifier/src/transaction/transactions.rs b/crates/blockifier/src/transaction/transactions.rs index 058bbcc0ba..774aa48bb5 100644 --- a/crates/blockifier/src/transaction/transactions.rs +++ b/crates/blockifier/src/transaction/transactions.rs @@ -46,7 +46,7 @@ pub trait ExecutableTransaction: Sized { Ok(value) } Err(error) => { - log::warn!("Transaction execution failed with: {error}"); + log::debug!("Transaction execution failed with: {error}"); transactional_state.abort(); Err(error) } From 000d721860cea93bdd2b84514e667f926c3498dd Mon Sep 17 00:00:00 2001 From: Yoni <78365039+Yoni-Starkware@users.noreply.github.com> Date: Mon, 19 Jun 2023 10:20:35 +0300 Subject: [PATCH 06/19] Fix recursion depth count. (#631) --- .../blockifier/src/execution/entry_point.rs | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index 391efeaad0..0ae727ee28 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -153,23 +153,28 @@ impl CallEntryPoint { self.class_hash = Some(class_hash); let contract_class = state.get_compiled_contract_class(&class_hash)?; - execute_entry_point_call(self, contract_class, state, resources, context).map_err(|error| { - match error { - // On VM error, pack the stack trace into the propagated error. - EntryPointExecutionError::VirtualMachineExecutionError(error) => { - context.error_stack.push((storage_address, error.try_to_vm_trace())); - // TODO(Dori, 1/5/2023): Call error_trace only in the top call; as it is right - // now, each intermediate VM error is wrapped in a - // VirtualMachineExecutionErrorWithTrace error with the - // stringified trace of all errors below it. - EntryPointExecutionError::VirtualMachineExecutionErrorWithTrace { - trace: context.error_trace(), - source: error, + let result = execute_entry_point_call(self, contract_class, state, resources, context) + .map_err(|error| { + match error { + // On VM error, pack the stack trace into the propagated error. + EntryPointExecutionError::VirtualMachineExecutionError(error) => { + context.error_stack.push((storage_address, error.try_to_vm_trace())); + // TODO(Dori, 1/5/2023): Call error_trace only in the top call; as it is + // right now, each intermediate VM error is wrapped + // in a VirtualMachineExecutionErrorWithTrace error + // with the stringified trace of all errors below + // it. + EntryPointExecutionError::VirtualMachineExecutionErrorWithTrace { + trace: context.error_trace(), + source: error, + } } + other_error => other_error, } - other_error => other_error, - } - }) + }); + + context.recursion_depth -= 1; + result } } From ea5255d850eb8deaf75ea6d8b744e45433909d60 Mon Sep 17 00:00:00 2001 From: ilyalesokhin-starkware Date: Mon, 19 Jun 2023 11:42:14 +0300 Subject: [PATCH 07/19] Update contract syntax. (#623) --- Cargo.lock | 100 +- Cargo.toml | 6 +- .../cairo1/compiled/empty_contract.casm.json | 2 +- .../compiled/empty_contract.sierra.json | 34 + .../cairo1/compiled/test_contract.casm.json | 697 ++-- .../cairo1/compiled/test_contract.sierra.json | 3452 +++++++++-------- .../cairo1/test_contract.cairo | 26 +- .../src/execution/syscalls/syscalls_test.rs | 46 +- 8 files changed, 2318 insertions(+), 2045 deletions(-) create mode 100644 crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.sierra.json diff --git a/Cargo.lock b/Cargo.lock index 3cd13d5b00..2ea8f68bfd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -385,9 +385,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef87e99de0854fa66dc2e9fc6f73958ef40bf718890c739feb2ff5f68030bfa" +checksum = "f81346c0dc91c0ab9f5f3276c502a641d42421f95e5d2dbfd9fc0ec61bc89ccf" dependencies = [ "cairo-lang-utils", "indoc 2.0.1", @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1251c3086202e9824156ecbac9131ff9d36a6973e28562828a586e9152243" +checksum = "d07b9357df23da63c0e04d3715d3ed73c3c3597d5e39fd99a321159c446b5f35" dependencies = [ "anyhow", "cairo-lang-defs", @@ -427,18 +427,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84231da1a94ecb1bf1ab1b7b02e5d2710a3bf8272bb93f7d7e97c04e784ec653" +checksum = "cab7d34f0c7a918238e1d77e758c4b9e53fe5d5c7d1ad4f12c0997b1fc8fed2a" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf053029ab0fd0aa69b948eaa5ef4993a2f018190da74ebd20f706c9d65dc48" +checksum = "6443fd6625ba75865fffef5501267e17ef49bf16900022da05eada334ef47206" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -454,9 +454,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2555763ece5643ffae93c525b67b87ef73616292f54995c427574aaf39b6005b" +checksum = "ee3989751860001ad7503310561163c2c6347c0413ff54b620b838734a6f78e7" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -466,9 +466,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769ed3a62bf3a820e84ac93d5a7cdd503b02d9fe1c60b86768a6ba16b68188bf" +checksum = "827f6b6eae4943a11ea7a62390e87c11f2f7f9b4a6213bc059a20f3f938b839f" dependencies = [ "cairo-lang-utils", "good_lp", @@ -478,9 +478,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60181a35d6ec00b876f42f5abb0d5042d9fbdb7b3f5fec1d611997f92b2eb704" +checksum = "9aa72e2e9f5f94a6285b778b6100f47c33402fb5c08befd49f2695c4523d9240" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc93282faa58327b723bb632cbb2200b76b5ba032977a5e6d09aed81f1dca1ea" +checksum = "75cc3f5edda65529df26d55c1448c107fe1b4e391c09d5cf5090977b26e4deb3" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -517,9 +517,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39619226f75e60b00e92bfebaa37936bf85b7c97229327b3fa707cad3134ef1" +checksum = "9f380c77e18084e41d7322f25709d1efbab2c27e98a98b934e8544de3e56dad7" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -538,9 +538,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea9a79d53136a6d17d46d2ee66b568bc3c84ad6f818d98cbc683c2d57304960" +checksum = "c25cdb9a7c63e769fd423803456fae2cf8346cfd2f3c92f8f8cdcd1b7275f911" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -557,9 +557,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07622390d1c5f4fecb7e1d1de6e6a2156f7f531ba7296a9bc5db5d5fff1187ea" +checksum = "93fc368f90aae1c9be82dd5c7bc7856c249318099d97b1ca2b186f6a03382944" dependencies = [ "cairo-lang-debug", "quote", @@ -568,9 +568,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4db9f9272e8acf13bd0b089376c332da5e91a9d258f0b6966e797f65974bd6e5" +checksum = "fed6afa96b4875c24d5490277c8f63ed05f29d0b091b4e7d2ed55df140c0f64c" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -582,9 +582,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01132ca294099bc536c83780b5d19eb9e9e843f64acd00afd6a738f029bb21f3" +checksum = "2e494ca441d5c9584b52aa6504a8c2ee773bc6fd0b53856ea64c5a3e1b022f89" dependencies = [ "anyhow", "ark-ff", @@ -618,9 +618,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8810f7c95373ec8062266e0293d0ec1ff62d3dc3c3115d8fae3869f95d67033" +checksum = "b4be17f34575895055da8fbaa4ec3ccd413897fd44cc6b3ca3be918919564c71" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9ff0749c735d17132893e2bf947627a77bf444be822b21ea851d54fb244cf0" +checksum = "80fb092c65418c43a34f5cad0cee18b404c6fd2e49abeb4a00541578f187fffa" dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -664,9 +664,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e1be6d4915ad6a18a3a6f0df4b02eceb6311c9dc34f72e56fc3ce14a37795f" +checksum = "7aaeeaf14acd21f1d696fb9a938c7a8daa3a18b5d9a9dd1400ebe5b08ea83ca4" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -677,9 +677,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16adca4987f8a0552b4863c0f879228c486e16649f4f33215d8a387db840825e" +checksum = "2a44fceeab69337621f8700c740362f96a349aea4610c1b9ba1bbe22a809b2c2" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -690,9 +690,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4f818d3316054f2acebd29307856358c54a038d883011a7f8a5da3d07eab3d" +checksum = "09c8e104e77d8f8f0d808bd35c9af6651884e611cc7ce3bd3b673c119be1ff04" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -716,9 +716,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "818acb109ed8454c8589b09423d3d83c599fbb0d3a7093ee833d4b1711165768" +checksum = "828502fcc9af0d942ca27cbc18c90d9b121f216fa3e0b3c373ed128d59862a5d" dependencies = [ "assert_matches", "cairo-felt", @@ -737,9 +737,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb2e803b28c25d4a82a1520a3ba548c3f8932ec68f50923653ad5d6470b3b30" +checksum = "0e2431948108163de1f6f4bca24c201672cebbc6a61d139c206c4164a841fb8c" dependencies = [ "anyhow", "cairo-felt", @@ -777,9 +777,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c02cfb5ee980b235f7af16fdbce00ebbb79cd2cef6c3a9804f60ccf5139dc5" +checksum = "050823df289fa2f1d90ec733a6ed6f48bada036b4ffd9a48c75e0bd9c506dd10" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aff0342d6f3bfa7d3ae1e4eb89c1889fada29731517a4864045e51412112394a" +checksum = "f8467d4368b1e2d1074acb090f5c8301faa965eae99f3180a5f7bfe173e299e9" dependencies = [ "genco", "xshell", @@ -804,9 +804,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.0.0-rc1" +version = "2.0.0-rc2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313a2ad96d94f83ad277c9af3dcdac82a5a86c1dab50c288355911fa62bf9d7c" +checksum = "4c93adbad256f0ced48b7593556d0ef5a096ff697931c10d086ef1224f279324" dependencies = [ "indexmap", "itertools", @@ -2656,9 +2656,9 @@ checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "salsa" -version = "0.17.0-pre.2" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b223dccb46c32753144d0b51290da7230bb4aedcd8379d6b4c9a474c18bf17a" +checksum = "4b84d9f96071f3f3be0dc818eae3327625d8ebc95b58da37d6850724f31d3403" dependencies = [ "crossbeam-utils", "indexmap", @@ -2673,9 +2673,9 @@ dependencies = [ [[package]] name = "salsa-macros" -version = "0.17.0-pre.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6c2e352df550bf019da7b16164ed2f7fa107c39653d1311d1bba42d1582ff7" +checksum = "cd3904a4ba0a9d0211816177fd34b04c7095443f8cdacd11175064fe541c8fe2" dependencies = [ "heck 0.3.3", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index f202c7a29d..5f29de743e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,9 +8,9 @@ members = ["crates/blockifier", "crates/native_blockifier"] [workspace.dependencies] assert_matches = "1.5.0" cairo-felt = "0.5.1" -cairo-lang-casm = "2.0.0-rc1" -cairo-lang-runner = "2.0.0-rc1" -cairo-lang-starknet = "2.0.0-rc1" +cairo-lang-casm = "2.0.0-rc2" +cairo-lang-runner = "2.0.0-rc2" +cairo-lang-starknet = "2.0.0-rc2" cairo-vm = "0.5.1" ctor = "0.2.0" derive_more = "0.99.17" diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json index 6617e99e1f..b040d1cb1c 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "1.1.0", + "compiler_version": "2.0.0", "bytecode": [], "hints": [], "entry_points_by_type": { diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.sierra.json b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.sierra.json new file mode 100644 index 0000000000..4867083e9c --- /dev/null +++ b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.sierra.json @@ -0,0 +1,34 @@ +{ + "sierra_program": [ + "0x1", + "0x2", + "0x0", + "0x2", + "0x0", + "0x0", + "0x1", + "0xff", + "0x0", + "0x4", + "0x0" + ], + "sierra_program_debug_info": { + "type_names": [], + "libfunc_names": [], + "user_func_names": [] + }, + "contract_class_version": "0.1.0", + "entry_points_by_type": { + "EXTERNAL": [], + "L1_HANDLER": [], + "CONSTRUCTOR": [] + }, + "abi": [ + { + "type": "event", + "name": "empty_contract::empty_contract::TestContract::Event", + "kind": "enum", + "variants": [] + } + ] +} \ No newline at end of file diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json index a25dddbcb8..8ef5b2f1d3 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json @@ -1,16 +1,16 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "1.1.0", + "compiler_version": "2.0.0", "bytecode": [ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffff9dae", + "0xffffffffffffffffffffffffffff9e26", "0x400280007ff97fff", "0x10780017fff7fff", "0x93", "0x4825800180007ffa", - "0x6252", + "0x61da", "0x400280007ff97fff", "0x482680017ff98000", "0x1", @@ -45,28 +45,28 @@ "0x20680017fff7fff", "0x43", "0x1104800180018000", - "0x1115", + "0x1112", "0x482480017fff8000", - "0x1114", + "0x1111", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007fc5", + "0x4824800180007fc7", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007fdf7fff", + "0x400080007fe07fff", "0x10780017fff7fff", "0x26", - "0x4824800180007fc5", + "0x4824800180007fc7", "0x0", - "0x400080007fe07fff", + "0x400080007fe17fff", "0x48127fff7fff8000", "0x480a7ffb7fff8000", - "0x48127fe27fff8000", + "0x48127fe37fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x9b2", + "0x9af", "0x482480017fbc8000", "0x1", "0x20680017fff7ffc", @@ -77,7 +77,7 @@ "0x48127ffe7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x9ff", + "0x9fe", "0x48127ff77fff8000", "0x48127ff17fff8000", "0x48127ff17fff8000", @@ -99,9 +99,9 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017fdd8000", + "0x482480017fde8000", "0x1", - "0x48127fc07fff8000", + "0x48127fc27fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -111,14 +111,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x9e2", + "0x9e1", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe07fff8000", - "0x48127fc37fff8000", + "0x48127fe17fff8000", + "0x48127fc57fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -131,8 +131,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe97fff8000", - "0x48127fcc7fff8000", + "0x48127fea7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -146,7 +146,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -174,35 +174,35 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffb668", + "0xffffffffffffffffffffffffffffb7a8", "0x400280007ff97fff", "0x10780017fff7fff", "0xb0", "0x4825800180007ffa", - "0x4998", + "0x4858", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x999", + "0x998", "0x20680017fff7ffe", "0x97", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x1104800180018000", "0x90d", - "0x40137fef7fff8000", + "0x40137ff07fff8000", "0x20680017fff7ffe", "0x82", - "0x48127feb7fff8000", - "0x48127fce7fff8000", + "0x48127fec7fff8000", + "0x48127fd07fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x40137ffb7fff8001", "0x1104800180018000", - "0x9c2", + "0x9c1", "0x20680017fff7ffa", "0x71", "0x20680017fff7ffd", @@ -226,9 +226,9 @@ "0x20680017fff7fff", "0x3e", "0x1104800180018000", - "0x1060", + "0x105d", "0x482480017fff8000", - "0x105f", + "0x105c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -249,7 +249,7 @@ "0x48127fef7fff8000", "0x48127fef7fff8000", "0x1104800180018000", - "0x9dc", + "0x9da", "0x482480017fd28000", "0x1", "0x20680017fff7ffc", @@ -287,7 +287,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x932", + "0x931", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -329,8 +329,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe97fff8000", - "0x48127fcc7fff8000", + "0x48127fea7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -344,7 +344,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -372,12 +372,12 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffb6a4", + "0xffffffffffffffffffffffffffffb76c", "0x400280007ff97fff", "0x10780017fff7fff", "0xa9", "0x4825800180007ffa", - "0x495c", + "0x4894", "0x400280007ff97fff", "0x482680017ff98000", "0x1", @@ -385,7 +385,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x90b", + "0x90a", "0x20680017fff7ffa", "0x95", "0x20680017fff7ffd", @@ -397,7 +397,7 @@ "0x40137ffa7fff8000", "0x40137ffb7fff8001", "0x1104800180018000", - "0x8ff", + "0x8fe", "0x20680017fff7ffa", "0x73", "0x20680017fff7ffd", @@ -421,9 +421,9 @@ "0x20680017fff7fff", "0x40", "0x1104800180018000", - "0xf9d", + "0xf9a", "0x482480017fff8000", - "0xf9c", + "0xf99", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -444,7 +444,7 @@ "0x48127fef7fff8000", "0x48127fef7fff8000", "0x1104800180018000", - "0x948", + "0x946", "0x482480017fd08000", "0x1", "0x20680017fff7ffc", @@ -484,7 +484,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x86d", + "0x86c", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -561,19 +561,19 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffd602", + "0xffffffffffffffffffffffffffffd666", "0x400280007ff97fff", "0x10780017fff7fff", "0x7e", "0x4825800180007ffa", - "0x29fe", + "0x299a", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x8fc", + "0x8fa", "0x20680017fff7ffe", "0x65", "0x48307ffc80007ffd", @@ -595,27 +595,27 @@ "0x20680017fff7fff", "0x42", "0x1104800180018000", - "0xeef", + "0xeec", "0x482480017fff8000", - "0xeee", + "0xeeb", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007fd5", + "0x4824800180007fd6", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", "0x400080007fef7fff", "0x10780017fff7fff", "0x25", - "0x4824800180007fd5", + "0x4824800180007fd6", "0x0", "0x400080007ff07fff", "0x48127fff7fff8000", "0x480a7ffb7fff8000", "0x48127ff27fff8000", "0x1104800180018000", - "0x909", + "0x906", "0x482480017fda8000", "0x1", "0x20680017fff7ffc", @@ -626,7 +626,7 @@ "0x48127ffe7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x7da", + "0x7d9", "0x48127ff77fff8000", "0x48127ff17fff8000", "0x48127ff17fff8000", @@ -650,7 +650,7 @@ "0x400080007ffe7fff", "0x482480017fed8000", "0x1", - "0x48127fd07fff8000", + "0x48127fd17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -660,14 +660,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x7bd", + "0x7bc", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff07fff8000", - "0x48127fd37fff8000", + "0x48127fd47fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -681,7 +681,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -707,12 +707,12 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffff5790", + "0xffffffffffffffffffffffffffff5c4a", "0x400280007ff97fff", "0x10780017fff7fff", "0x14b", "0x4825800180007ffa", - "0xa870", + "0xa3b6", "0x400280007ff97fff", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", @@ -801,39 +801,39 @@ "0x20680017fff7fff", "0x47", "0x1104800180018000", - "0xe21", + "0xe1e", "0x482480017fff8000", - "0xe20", + "0xe1d", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007f44", + "0x4824800180007f4f", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007f537fff", + "0x400080007f5d7fff", "0x10780017fff7fff", "0x2a", - "0x4824800180007f44", + "0x4824800180007f4f", "0x0", - "0x400080007f547fff", - "0x482480017f548000", + "0x400080007f5e7fff", + "0x482480017f5e8000", "0x1", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", - "0x48127f507fff8000", - "0x48127f607fff8000", - "0x48127f6f7fff8000", - "0x48127f7e7fff8000", - "0x48127f8d7fff8000", - "0x48127f9c7fff8000", - "0x48127fab7fff8000", - "0x48127fba7fff8000", - "0x48127fc97fff8000", - "0x48127fd87fff8000", + "0x48127f5a7fff8000", + "0x48127f697fff8000", + "0x48127f777fff8000", + "0x48127f857fff8000", + "0x48127f937fff8000", + "0x48127fa17fff8000", + "0x48127faf7fff8000", + "0x48127fbd7fff8000", + "0x48127fcb7fff8000", + "0x48127fd97fff8000", "0x48127fe77fff8000", "0x1104800180018000", - "0x85b", + "0x858", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -859,9 +859,9 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017f518000", + "0x482480017f5b8000", "0x1", - "0x48127f3f7fff8000", + "0x48127f4a7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -871,14 +871,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x6ea", + "0x6e9", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f547fff8000", - "0x48127f427fff8000", + "0x48127f5e7fff8000", + "0x48127f4d7fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -891,8 +891,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f5d7fff8000", - "0x48127f4b7fff8000", + "0x48127f677fff8000", + "0x48127f567fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -905,8 +905,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f6d7fff8000", - "0x48127f5b7fff8000", + "0x48127f767fff8000", + "0x48127f657fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -919,8 +919,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f7d7fff8000", - "0x48127f6b7fff8000", + "0x48127f857fff8000", + "0x48127f747fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -933,8 +933,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f8d7fff8000", - "0x48127f7b7fff8000", + "0x48127f947fff8000", + "0x48127f837fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -947,8 +947,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127f9d7fff8000", - "0x48127f8b7fff8000", + "0x48127fa37fff8000", + "0x48127f927fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -961,8 +961,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fad7fff8000", - "0x48127f9b7fff8000", + "0x48127fb27fff8000", + "0x48127fa17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -975,8 +975,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fbd7fff8000", - "0x48127fab7fff8000", + "0x48127fc17fff8000", + "0x48127fb07fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -989,8 +989,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fcd7fff8000", - "0x48127fbb7fff8000", + "0x48127fd07fff8000", + "0x48127fbf7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1003,8 +1003,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fdd7fff8000", - "0x48127fcb7fff8000", + "0x48127fdf7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1017,8 +1017,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fed7fff8000", - "0x48127fdb7fff8000", + "0x48127fee7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1032,7 +1032,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ffd7fff8000", - "0x48127feb7fff8000", + "0x48127fec7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1060,35 +1060,35 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffb668", + "0xffffffffffffffffffffffffffffb7a8", "0x400280007ff97fff", "0x10780017fff7fff", "0xb0", "0x4825800180007ffa", - "0x4998", + "0x4858", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x934", + "0x931", "0x20680017fff7ffe", "0x97", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x1104800180018000", "0x597", - "0x40137fef7fff8000", + "0x40137ff07fff8000", "0x20680017fff7ffe", "0x82", - "0x48127feb7fff8000", - "0x48127fce7fff8000", + "0x48127fec7fff8000", + "0x48127fd07fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x40137ffb7fff8001", "0x1104800180018000", - "0x64c", + "0x64b", "0x20680017fff7ffa", "0x71", "0x20680017fff7ffd", @@ -1112,9 +1112,9 @@ "0x20680017fff7fff", "0x3e", "0x1104800180018000", - "0xcea", + "0xce7", "0x482480017fff8000", - "0xce9", + "0xce6", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1135,7 +1135,7 @@ "0x48127fef7fff8000", "0x48127fef7fff8000", "0x1104800180018000", - "0x92e", + "0x92b", "0x482480017fd28000", "0x1", "0x20680017fff7ffc", @@ -1173,7 +1173,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x5bc", + "0x5bb", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -1215,8 +1215,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe97fff8000", - "0x48127fcc7fff8000", + "0x48127fea7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1230,7 +1230,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1256,19 +1256,19 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffff8170", + "0xffffffffffffffffffffffffffff8396", "0x400280007ff97fff", "0x10780017fff7fff", "0xcb", "0x4825800180007ffa", - "0x7e90", + "0x7c6a", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x870", + "0x86d", "0x20680017fff7ffe", "0xb2", "0x48127ffc7fff8000", @@ -1314,32 +1314,32 @@ "0x20680017fff7fff", "0x3f", "0x1104800180018000", - "0xc20", + "0xc1d", "0x482480017fff8000", - "0xc1f", + "0xc1c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007f95", + "0x4824800180007f9a", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007faf7fff", + "0x400080007fb37fff", "0x10780017fff7fff", "0x22", - "0x4824800180007f95", + "0x4824800180007f9a", "0x0", - "0x400080007fb07fff", + "0x400080007fb47fff", "0x48127fff7fff8000", "0x480a7ffb7fff8000", - "0x48127fb27fff8000", - "0x48127fc17fff8000", - "0x48127fd07fff8000", - "0x48127fdf7fff8000", + "0x48127fb67fff8000", + "0x48127fc47fff8000", + "0x48127fd27fff8000", + "0x48127fe07fff8000", "0x48127fee7fff8000", "0x1104800180018000", - "0x892", - "0x482480017f818000", + "0x88f", + "0x482480017f858000", "0x1", "0x20680017fff7ffc", "0xa", @@ -1364,9 +1364,9 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017fad8000", + "0x482480017fb18000", "0x1", - "0x48127f907fff8000", + "0x48127f957fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1376,14 +1376,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x4f1", + "0x4f0", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fb07fff8000", - "0x48127f937fff8000", + "0x48127fb47fff8000", + "0x48127f987fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1396,8 +1396,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fb97fff8000", - "0x48127f9c7fff8000", + "0x48127fbd7fff8000", + "0x48127fa17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1410,8 +1410,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fc97fff8000", - "0x48127fac7fff8000", + "0x48127fcc7fff8000", + "0x48127fb07fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1424,8 +1424,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fd97fff8000", - "0x48127fbc7fff8000", + "0x48127fdb7fff8000", + "0x48127fbf7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1438,8 +1438,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe97fff8000", - "0x48127fcc7fff8000", + "0x48127fea7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1453,7 +1453,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1479,19 +1479,19 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffd918", + "0xffffffffffffffffffffffffffffd986", "0x400280007ff97fff", "0x10780017fff7fff", "0x79", "0x4825800180007ffa", - "0x26e8", + "0x267a", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x791", + "0x78e", "0x20680017fff7ffe", "0x60", "0x48307ffc80007ffd", @@ -1513,27 +1513,27 @@ "0x20680017fff7fff", "0x3d", "0x1104800180018000", - "0xb59", + "0xb56", "0x482480017fff8000", - "0xb58", + "0xb55", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007fd5", + "0x4824800180007fd6", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", "0x400080007fef7fff", "0x10780017fff7fff", "0x20", - "0x4824800180007fd5", + "0x4824800180007fd6", "0x0", "0x400080007ff07fff", "0x48127fff7fff8000", "0x480a7ffb7fff8000", "0x48127ff27fff8000", "0x1104800180018000", - "0x83b", + "0x838", "0x482480017fda8000", "0x1", "0x20680017fff7ffc", @@ -1563,7 +1563,7 @@ "0x400080007ffe7fff", "0x482480017fed8000", "0x1", - "0x48127fd07fff8000", + "0x48127fd17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1573,14 +1573,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x42c", + "0x42b", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff07fff8000", - "0x48127fd37fff8000", + "0x48127fd47fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1594,7 +1594,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1622,12 +1622,12 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffc748", + "0xffffffffffffffffffffffffffffc81a", "0x400280007ff97fff", "0x10780017fff7fff", "0x9c", "0x4825800180007ffa", - "0x38b8", + "0x37e6", "0x400280007ff97fff", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", @@ -1638,12 +1638,12 @@ "0x20680017fff7ffd", "0x83", "0x48127fff7fff8000", - "0x48127fed7fff8000", + "0x48127fee7fff8000", "0x48127ff97fff8000", "0x48127ff97fff8000", "0x40137ffa7fff8000", "0x1104800180018000", - "0x421", + "0x420", "0x20680017fff7ffa", "0x72", "0x20680017fff7ffd", @@ -1667,9 +1667,9 @@ "0x20680017fff7fff", "0x3f", "0x1104800180018000", - "0xabf", + "0xabc", "0x482480017fff8000", - "0xabe", + "0xabb", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1689,7 +1689,7 @@ "0x48127ff07fff8000", "0x48127ff07fff8000", "0x1104800180018000", - "0x7cd", + "0x7ca", "0x482480017fd38000", "0x1", "0x20680017fff7ffc", @@ -1729,7 +1729,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x390", + "0x38f", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -1772,7 +1772,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ffd7fff8000", - "0x48127feb7fff8000", + "0x48127fec7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -1826,9 +1826,9 @@ "0x20680017fff7fff", "0x34", "0x1104800180018000", - "0xa20", + "0xa1d", "0x482480017fff8000", - "0xa1f", + "0xa1c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1847,7 +1847,7 @@ "0x480a7ff97fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x761", + "0x75e", "0x40780017fff7fff", "0x1", "0x48127ffc7fff8000", @@ -1877,7 +1877,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x2fc", + "0x2fb", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -1914,35 +1914,35 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffaab0", + "0xffffffffffffffffffffffffffffabf0", "0x400280007ff97fff", "0x10780017fff7fff", "0xc7", "0x4825800180007ffa", - "0x5550", + "0x5410", "0x400280007ff97fff", "0x482680017ff98000", "0x1", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x5de", + "0x5db", "0x20680017fff7ffe", "0xae", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x1104800180018000", "0x241", - "0x40137fef7fff8000", + "0x40137ff07fff8000", "0x20680017fff7ffe", "0x99", - "0x48127feb7fff8000", - "0x48127fce7fff8000", + "0x48127fec7fff8000", + "0x48127fd07fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x40137ffb7fff8001", "0x1104800180018000", - "0x2f6", + "0x2f5", "0x20680017fff7ffa", "0x88", "0x20680017fff7ffd", @@ -1950,7 +1950,7 @@ "0x48127ffb7fff8000", "0x48127ffb7fff8000", "0x1104800180018000", - "0x710", + "0x70d", "0x20680017fff7ffe", "0x64", "0x48307ffc80007ffd", @@ -1972,9 +1972,9 @@ "0x20680017fff7fff", "0x41", "0x1104800180018000", - "0x98e", + "0x98b", "0x482480017fff8000", - "0x98d", + "0x98a", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1996,7 +1996,7 @@ "0x48127fdc7fff8000", "0x48127fee7fff8000", "0x1104800180018000", - "0x715", + "0x712", "0x482480017fbc8000", "0x1", "0x20680017fff7ffc", @@ -2036,7 +2036,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x25d", + "0x25c", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -2092,8 +2092,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe97fff8000", - "0x48127fcc7fff8000", + "0x48127fea7fff8000", + "0x48127fce7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2107,7 +2107,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ff97fff8000", - "0x48127fdc7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2173,34 +2173,34 @@ "0x20680017fff7fff", "0x36", "0x1104800180018000", - "0x8c5", + "0x8c2", "0x482480017fff8000", - "0x8c4", + "0x8c1", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007fd4", + "0x4824800180007fd6", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007fe37fff", + "0x400080007fe47fff", "0x10780017fff7fff", "0x19", - "0x4824800180007fd4", + "0x4824800180007fd6", "0x0", - "0x400080007fe47fff", - "0x48127fe37fff8000", + "0x400080007fe57fff", + "0x48127fe47fff8000", "0x48127ff37fff8000", "0x1104800180018000", - "0x686", + "0x683", "0x40780017fff7fff", "0x1", "0x48127ffe7fff8000", "0x48127ffe7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x1b5", - "0x482480017fd78000", + "0x1b4", + "0x482480017fd88000", "0x1", "0x48127ff17fff8000", "0x480a7ffb7fff8000", @@ -2214,9 +2214,9 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017fe18000", + "0x482480017fe28000", "0x1", - "0x48127fcf7fff8000", + "0x48127fd17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2226,14 +2226,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x19f", + "0x19e", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe47fff8000", - "0x48127fd27fff8000", + "0x48127fe57fff8000", + "0x48127fd47fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2246,8 +2246,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fed7fff8000", - "0x48127fdb7fff8000", + "0x48127fee7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2261,7 +2261,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ffd7fff8000", - "0x48127feb7fff8000", + "0x48127fec7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2287,12 +2287,12 @@ "0xa0680017fff8000", "0x7", "0x482680017ffa8000", - "0xffffffffffffffffffffffffffffd01c", + "0xffffffffffffffffffffffffffffd0f8", "0x400280007ff97fff", "0x10780017fff7fff", "0x93", "0x4825800180007ffa", - "0x2fe4", + "0x2f08", "0x400280007ff97fff", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", @@ -2327,29 +2327,29 @@ "0x20680017fff7fff", "0x43", "0x1104800180018000", - "0x82b", + "0x828", "0x482480017fff8000", - "0x82a", + "0x827", "0x480080007fff8000", "0xa0680017fff8000", "0x9", - "0x4824800180007fd4", + "0x4824800180007fd6", "0x0", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007fe37fff", + "0x400080007fe47fff", "0x10780017fff7fff", "0x26", - "0x4824800180007fd4", + "0x4824800180007fd6", "0x0", - "0x400080007fe47fff", + "0x400080007fe57fff", "0x48127fff7fff8000", "0x480a7ffb7fff8000", - "0x48127fe17fff8000", + "0x48127fe27fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x5ec", - "0x482480017fc18000", + "0x5e9", + "0x482480017fc28000", "0x1", "0x20680017fff7ffc", "0x11", @@ -2359,7 +2359,7 @@ "0x48127ffe7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", - "0x115", + "0x114", "0x48127ff77fff8000", "0x48127ff17fff8000", "0x48127ff17fff8000", @@ -2381,9 +2381,9 @@ "0x480680017fff8000", "0x4f7574206f6620676173", "0x400080007ffe7fff", - "0x482480017fe18000", + "0x482480017fe28000", "0x1", - "0x48127fcf7fff8000", + "0x48127fd17fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2393,14 +2393,14 @@ "0x208b7fff7fff7ffe", "0x480a7ffb7fff8000", "0x1104800180018000", - "0xf8", + "0xf7", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fe47fff8000", - "0x48127fd27fff8000", + "0x48127fe57fff8000", + "0x48127fd47fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2413,8 +2413,8 @@ "0x480680017fff8000", "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", - "0x48127fed7fff8000", - "0x48127fdb7fff8000", + "0x48127fee7fff8000", + "0x48127fdd7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2428,7 +2428,7 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x400080007ffe7fff", "0x48127ffd7fff8000", - "0x48127feb7fff8000", + "0x48127fec7fff8000", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x1", @@ -2530,18 +2530,15 @@ "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x20680017fff7ffc", - "0x9", - "0x480080007ffd8000", - "0x48127ffd7fff8000", - "0x48127ffd7fff8000", + "0x8", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", "0x480680017fff8000", "0x0", - "0x48127ffc7fff8000", + "0x480080007ffa8000", "0x208b7fff7fff7ffe", - "0x40780017fff7fff", - "0x1", - "0x48127ffd7fff8000", - "0x48127ffd7fff8000", + "0x48127ffe7fff8000", + "0x48127ffe7fff8000", "0x480680017fff8000", "0x1", "0x480680017fff8000", @@ -2580,35 +2577,37 @@ "0x1104800180018000", "0x51c", "0x20680017fff7ffd", - "0x2f", + "0x31", + "0x480680017fff8000", + "0x0", "0x480680017fff8000", "0x53746f7261676552656164", - "0x400080007ff67fff", - "0x400080017ff67ff5", - "0x400080027ff67ff2", - "0x400180037ff67ffc", - "0x480080057ff68000", + "0x400080007ff57fff", + "0x400080017ff57ff4", + "0x400080027ff57ffe", + "0x400180037ff57ffc", + "0x480080057ff58000", "0x20680017fff7fff", "0xc", - "0x480080047ff58000", - "0x482480017ff48000", + "0x480080047ff48000", + "0x482480017ff38000", "0x7", "0x480680017fff8000", "0x0", "0x480680017fff8000", "0x0", - "0x480080067ff18000", + "0x480080067ff08000", "0x10780017fff7fff", "0x9", - "0x480080047ff58000", - "0x482480017ff48000", + "0x480080047ff48000", + "0x482480017ff38000", "0x8", "0x480680017fff8000", "0x1", - "0x480080067ff28000", - "0x480080077ff18000", + "0x480080067ff18000", + "0x480080077ff08000", "0x1104800180018000", - "0x50c", + "0x50a", "0x20680017fff7ffd", "0xa", "0x48127ff67fff8000", @@ -2627,13 +2626,13 @@ "0x48127ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xc", - "0x48127fea7fff8000", - "0x48127fea7fff8000", + "0xd", + "0x48127fe97fff8000", + "0x48127fe97fff8000", "0x480680017fff8000", "0x1", - "0x48127fef7fff8000", - "0x48127fef7fff8000", + "0x48127fee7fff8000", + "0x48127fee7fff8000", "0x208b7fff7fff7ffe", "0x400380007ffd7ffb", "0x480a7ffc7fff8000", @@ -2645,7 +2644,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff79", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7a", "0x20680017fff7ffe", "0x2b", "0xa0680017fff8004", @@ -2721,19 +2720,18 @@ "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x20680017fff7ffc", - "0x27", - "0x480080007ffd8000", + "0x26", "0x40780017fff7fff", "0x1", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", - "0x48127ffa7fff8000", - "0x48127ffa7fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", "0x48127ffb7fff8000", "0x48127ffa7fff8000", - "0x48127ff87fff8000", + "0x480080007ff68000", "0x1104800180018000", - "0x49c", + "0x49b", "0x20680017fff7ffa", "0xc", "0x48127ff87fff8000", @@ -2802,7 +2800,7 @@ "0x480280087ff98000", "0x480280097ff98000", "0x1104800180018000", - "0x4c3", + "0x4c2", "0x20680017fff7ffd", "0x9", "0x48127ff67fff8000", @@ -2853,7 +2851,7 @@ "0x480280087ff98000", "0x480280097ff98000", "0x1104800180018000", - "0x409", + "0x408", "0x20680017fff7ffd", "0xb", "0x48127ff67fff8000", @@ -2894,34 +2892,33 @@ "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x20680017fff7ffc", - "0x18", - "0x480080007ffd8000", + "0x17", "0x480a7ffb7fff8000", - "0x48127ffe7fff8000", + "0x480080007ffc8000", "0x1104800180018000", "0x46e", "0x20680017fff7ffe", "0x9", "0x48127ffd7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", + "0x48127fef7fff8000", + "0x48127fef7fff8000", "0x480680017fff8000", "0x0", "0x48127ffb7fff8000", "0x208b7fff7fff7ffe", "0x48127ffd7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", + "0x48127fef7fff8000", + "0x48127fef7fff8000", "0x480680017fff8000", "0x1", "0x480680017fff8000", "0x0", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xf", + "0xe", "0x480a7ffb7fff8000", - "0x48127fee7fff8000", - "0x48127fee7fff8000", + "0x48127fef7fff8000", + "0x48127fef7fff8000", "0x480680017fff8000", "0x1", "0x480680017fff8000", @@ -3430,7 +3427,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc68", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc6b", "0x20680017fff7ffe", "0x2b", "0xa0680017fff8004", @@ -3920,14 +3917,14 @@ "0xa0680017fff8000", "0x9", "0x4825800180007ff8", - "0x1310", + "0x12a2", "0x482480017fff8000", "0x100000000000000000000000000000000", "0x400280007ff77fff", "0x10780017fff7fff", "0x4c", "0x4825800180007ff8", - "0x1310", + "0x12a2", "0x400280007ff77fff", "0x482680017ff78000", "0x1", @@ -3947,12 +3944,12 @@ "0x480a7ff97fff8000", "0x480a7ffa7fff8000", "0x1104800180018000", - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffa63", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffa66", "0x20680017fff7ffe", "0x27", "0x400280007ffc7fff", - "0x48127fef7fff8000", - "0x48127fed7fff8000", + "0x48127ff07fff8000", + "0x48127fee7fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x480a7ffb7fff8000", @@ -3987,8 +3984,8 @@ "0x48127ff87fff8000", "0x48127ff87fff8000", "0x208b7fff7fff7ffe", - "0x48127fef7fff8000", - "0x48127fed7fff8000", + "0x48127ff07fff8000", + "0x48127fee7fff8000", "0x480680017fff8000", "0x0", "0x48127ff97fff8000", @@ -4425,7 +4422,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x6252" + "Immediate": "0x61da" }, "rhs": { "Deref": { @@ -4452,7 +4449,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -58 + "offset": -56 } }, "dst": { @@ -4547,7 +4544,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x4998" + "Immediate": "0x4858" }, "rhs": { "Deref": { @@ -4669,7 +4666,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x495c" + "Immediate": "0x4894" }, "rhs": { "Deref": { @@ -4791,7 +4788,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x29fe" + "Immediate": "0x299a" }, "rhs": { "Deref": { @@ -4818,7 +4815,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -42 + "offset": -41 } }, "dst": { @@ -4900,7 +4897,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0xa870" + "Immediate": "0xa3b6" }, "rhs": { "Deref": { @@ -4927,7 +4924,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -187 + "offset": -176 } }, "dst": { @@ -5139,7 +5136,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x4998" + "Immediate": "0x4858" }, "rhs": { "Deref": { @@ -5261,7 +5258,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x7e90" + "Immediate": "0x7c6a" }, "rhs": { "Deref": { @@ -5288,7 +5285,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -106 + "offset": -101 } }, "dst": { @@ -5409,7 +5406,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x26e8" + "Immediate": "0x267a" }, "rhs": { "Deref": { @@ -5436,7 +5433,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -42 + "offset": -41 } }, "dst": { @@ -5518,7 +5515,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x38b8" + "Immediate": "0x37e6" }, "rhs": { "Deref": { @@ -5736,7 +5733,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x5550" + "Immediate": "0x5410" }, "rhs": { "Deref": { @@ -5911,7 +5908,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -43 + "offset": -41 } }, "dst": { @@ -6006,7 +6003,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x2fe4" + "Immediate": "0x2f08" }, "rhs": { "Deref": { @@ -6033,7 +6030,7 @@ "rhs": { "Deref": { "register": "AP", - "offset": -43 + "offset": -41 } }, "dst": { @@ -6203,7 +6200,7 @@ ] ], [ - 2554, + 2551, [ { "SystemCall": { @@ -6218,14 +6215,14 @@ ] ], [ - 2585, + 2584, [ { "SystemCall": { "system": { "Deref": { "register": "AP", - "offset": -10 + "offset": -11 } } } @@ -6233,7 +6230,7 @@ ] ], [ - 2646, + 2645, [ { "TestLessThan": { @@ -6255,7 +6252,7 @@ ] ], [ - 2650, + 2649, [ { "LinearSplit": { @@ -6284,7 +6281,7 @@ ] ], [ - 2660, + 2659, [ { "LinearSplit": { @@ -6313,7 +6310,7 @@ ] ], [ - 2721, + 2719, [ { "AllocSegment": { @@ -6326,7 +6323,7 @@ ] ], [ - 2780, + 2778, [ { "SystemCall": { @@ -6341,7 +6338,7 @@ ] ], [ - 2829, + 2827, [ { "SystemCall": { @@ -6356,7 +6353,7 @@ ] ], [ - 2930, + 2927, [ { "SystemCall": { @@ -6371,7 +6368,7 @@ ] ], [ - 3199, + 3196, [ { "AllocSegment": { @@ -6384,7 +6381,7 @@ ] ], [ - 3215, + 3212, [ { "AllocSegment": { @@ -6397,7 +6394,7 @@ ] ], [ - 3231, + 3228, [ { "AllocSegment": { @@ -6410,7 +6407,7 @@ ] ], [ - 3247, + 3244, [ { "AllocSegment": { @@ -6423,7 +6420,7 @@ ] ], [ - 3263, + 3260, [ { "AllocSegment": { @@ -6436,7 +6433,7 @@ ] ], [ - 3279, + 3276, [ { "AllocSegment": { @@ -6449,7 +6446,7 @@ ] ], [ - 3305, + 3302, [ { "AllocSegment": { @@ -6462,7 +6459,7 @@ ] ], [ - 3321, + 3318, [ { "AllocSegment": { @@ -6475,7 +6472,7 @@ ] ], [ - 3337, + 3334, [ { "AllocSegment": { @@ -6488,7 +6485,7 @@ ] ], [ - 3353, + 3350, [ { "AllocSegment": { @@ -6501,7 +6498,7 @@ ] ], [ - 3369, + 3366, [ { "AllocSegment": { @@ -6514,7 +6511,7 @@ ] ], [ - 3385, + 3382, [ { "AllocSegment": { @@ -6527,7 +6524,7 @@ ] ], [ - 3401, + 3398, [ { "AllocSegment": { @@ -6540,7 +6537,7 @@ ] ], [ - 3431, + 3428, [ { "TestLessThan": { @@ -6562,7 +6559,7 @@ ] ], [ - 3435, + 3432, [ { "LinearSplit": { @@ -6591,7 +6588,7 @@ ] ], [ - 3445, + 3442, [ { "LinearSplit": { @@ -6620,7 +6617,7 @@ ] ], [ - 3492, + 3489, [ { "SystemCall": { @@ -6635,7 +6632,7 @@ ] ], [ - 3529, + 3526, [ { "AllocSegment": { @@ -6648,7 +6645,7 @@ ] ], [ - 3553, + 3550, [ { "SystemCall": { @@ -6663,7 +6660,7 @@ ] ], [ - 3576, + 3573, [ { "AllocSegment": { @@ -6676,7 +6673,7 @@ ] ], [ - 3591, + 3588, [ { "SystemCall": { @@ -6691,7 +6688,7 @@ ] ], [ - 3642, + 3639, [ { "SystemCall": { @@ -6706,7 +6703,7 @@ ] ], [ - 3692, + 3689, [ { "SystemCall": { @@ -6721,7 +6718,7 @@ ] ], [ - 3733, + 3730, [ { "AllocFelt252Dict": { @@ -6736,7 +6733,7 @@ ] ], [ - 3817, + 3814, [ { "SystemCall": { @@ -6751,12 +6748,12 @@ ] ], [ - 3915, + 3912, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x1310" + "Immediate": "0x12a2" }, "rhs": { "Deref": { @@ -6773,7 +6770,7 @@ ] ], [ - 3998, + 3995, [ { "AllocSegment": { @@ -6786,7 +6783,7 @@ ] ], [ - 4030, + 4027, [ { "TestLessThan": { @@ -6808,7 +6805,7 @@ ] ], [ - 4034, + 4031, [ { "LinearSplit": { @@ -6837,7 +6834,7 @@ ] ], [ - 4072, + 4069, [ { "SystemCall": { @@ -6852,7 +6849,7 @@ ] ], [ - 4112, + 4109, [ { "TestLessThan": { @@ -6877,7 +6874,7 @@ ] ], [ - 4132, + 4129, [ { "AllocSegment": { @@ -6890,7 +6887,7 @@ ] ], [ - 4153, + 4150, [ { "GetSegmentArenaIndex": { @@ -6909,7 +6906,7 @@ ] ], [ - 4194, + 4191, [ { "AllocSegment": { @@ -6922,7 +6919,7 @@ ] ], [ - 4202, + 4199, [ { "InitSquashData": { @@ -6957,7 +6954,7 @@ ] ], [ - 4221, + 4218, [ { "GetCurrentAccessIndex": { @@ -6972,7 +6969,7 @@ ] ], [ - 4234, + 4231, [ { "ShouldSkipSquashLoop": { @@ -6985,7 +6982,7 @@ ] ], [ - 4236, + 4233, [ { "GetCurrentAccessDelta": { @@ -6998,7 +6995,7 @@ ] ], [ - 4247, + 4244, [ { "ShouldContinueSquashLoop": { @@ -7011,7 +7008,7 @@ ] ], [ - 4261, + 4258, [ { "GetNextDictKey": { @@ -7024,7 +7021,7 @@ ] ], [ - 4280, + 4277, [ { "AssertLeFindSmallArcs": { @@ -7057,7 +7054,7 @@ ] ], [ - 4292, + 4289, [ { "AssertLeIsFirstArcExcluded": { @@ -7070,7 +7067,7 @@ ] ], [ - 4304, + 4301, [ { "AssertLeIsSecondArcExcluded": { @@ -7083,7 +7080,7 @@ ] ], [ - 4361, + 4358, [ { "SystemCall": { diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.sierra.json b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.sierra.json index b6bc0eb2f4..260aa0373d 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.sierra.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.sierra.json @@ -1,14 +1,14 @@ { "sierra_program": [ "0x1", - "0x1", + "0x2", "0x0", - "0x1", - "0x1", + "0x2", "0x0", - "0x2b3", - "0x14d", - "0x42", + "0x0", + "0x319", + "0xe7", + "0x44", "0x52616e6765436865636b", "0x0", "0x4761734275696c74696e", @@ -31,71 +31,74 @@ "0x753332", "0x3288d594b9a45d15bb2fcb7903f06cdb06b27f0ba88186ec4cfaa98307cb972", "0x4275696c74696e436f737473", - "0x289b6398f6e03362d9cc06116631f0d30eb5b7ed0303e40cfec4ef8ccadbd01", - "0x13eed272ddc5e62f10c36757f85de88a24dceb79fbd1509ddb27315473f21ba", + "0x6bb8c6706da785f3ac63e05b51057c3300d2d0a129cd16b1f99fc92d4f323c", + "0x223b876ce59fbc872ac2e1412727be9abe279bf03bb3002a29d7aeba8b23a9f", "0xd", "0x53797374656d", + "0x14de46c93830b854d231d540339ee8ae16bb18830a375fe81572a472d5945f1", + "0x11", "0x2f528e3c691e195fca674982b69c0dc4284f206c3ea4d680220e99b59315a92", "0x10", + "0x12", "0x5", "0x19b3b4955bdcfa379bfc5a4949111c4efdd79128f8676f4d0895419b22e2ad7", - "0x12", + "0x14", "0x436f6e747261637441646472657373", "0x556e696e697469616c697a6564", - "0x14", + "0x16", "0x3d37ad6eafb32512d2dd95a2917f6bf14858de22c27a1114392429f2e5c15d7", "0x17b6ecc31946835b0d9d92c2dd7a9c14f29af0371571ae74a1b228828b2242", - "0x18", + "0x1a", "0x262b845bbedf41820bc2b34dc2faff0bab3fa4d4d8a1bb282deca598d4a3627", - "0x19", + "0x1b", "0xd3a26a7712a33547a4a74e7594a446ca400cb36a0c2c307b92eff9ce82ff8", - "0x1c", + "0x1e", "0x753634", "0x156b6b29ca961a0da2cfe5b86b7d70df78ddc905131c6ded2cd9024ceb26b4e", - "0x1e", - "0x436c61737348617368", "0x20", + "0x436c61737348617368", + "0x22", "0x11771f2d3e7dc3ed5afe7eae405dfd127619490dec57ceaa021ac8bc2b9b315", "0x5365676d656e744172656e61", "0x2d7b9ba5597ffc180f5bbd030da76b84ecf1e4f1311043a0a15295f29ccc1b0", "0xb", "0xe", - "0x217f065fcfb8e90247512963898287e1d5864103aa21e10312387fccb10e08c", - "0x25", + "0x308cab509e64b7e9f7167088a2ff9150a9853cb2dc062ba9f878f88372a5a8b", + "0x27", "0x426f78", "0x29d7d57c04a880978e7b3689f6218e507f3be17588744b58dc17762447ad0e7", - "0x27", + "0x29", "0x101dc0399934cc08fa0d6f6f2daead4e4a38cabeea1c743e1fc28d2d6e58e99", "0x90d0203c41ad646d024845257a6eceb2f8b59b29ce7420dd518053d2edeedc", "0x161ee0e6962e56453b5d68e09d1cabe5633858c1ba3a7e73fee8c70867eced0", "0x3808c701a5d13e100ab11b6c02f91f752ecae7e420d21b56c90ec0a475cc7e5", - "0x2c", + "0x2e", "0x75313238", "0x8", "0x2e655a7513158873ca2e5e659a9e175d23bf69a2325cdd0397ca3b8d864b967", - "0x2e", - "0x2f", - "0x19367431bdedfe09ea99eed9ade3de00f195dd97087ed511b8942ebb45dbc5a", - "0x2d", "0x30", "0x31", + "0x19367431bdedfe09ea99eed9ade3de00f195dd97087ed511b8942ebb45dbc5a", + "0x2f", "0x32", - "0x26c97610bba318e7be7ed9746815afccc1b89e6a3174fbec5d5534288167ac7", "0x33", + "0x34", + "0x26c97610bba318e7be7ed9746815afccc1b89e6a3174fbec5d5534288167ac7", + "0x35", "0x4e6f6e5a65726f", "0x107ac1be595c82e927dbf964feb2e59168314a4f142e387bb941abb5e699f5e", - "0x36", + "0x38", "0x46656c7432353244696374", "0x537175617368656446656c7432353244696374", "0x242ab892b168865613d6bf48e23e6f2bf6bd4155b5adb58517a5ceeef69ebb", - "0x3a", - "0x32962634b9c9d94e370eb0c8592a0b01adc8e5fd84f71d1f8b8c23cfb29ea6f", "0x3c", - "0x33c046994df426df3e3f1d15556541ce9e1762c75827f67a7cdfb70d5a3007a", + "0x32962634b9c9d94e370eb0c8592a0b01adc8e5fd84f71d1f8b8c23cfb29ea6f", "0x3e", + "0x3b927196c89bbd721757e4dabca3d5394f310ec1ead6c02841e34c234205de3", + "0x40", "0x2c7badf5cd070e89531ef781330a9554b04ce4ea21304b67a30ac3d43df84a2", "0x53746f726167654261736541646472657373", - "0x114", + "0x118", "0x7265766f6b655f61705f747261636b696e67", "0x656e61626c655f61705f747261636b696e67", "0x77697468647261775f676173", @@ -106,24 +109,24 @@ "0x9", "0x7374727563745f6465636f6e737472756374", "0x61727261795f6c656e", - "0x7533325f636f6e7374", + "0x736e617073686f745f74616b65", "0xa", + "0x64726f70", + "0x7533325f636f6e7374", + "0x72656e616d65", "0x7533325f6571", "0x7374727563745f636f6e737472756374", "0x656e756d5f696e6974", "0x6a756d70", "0x626f6f6c5f6e6f745f696d706c", - "0x64726f70", "0x6765745f6275696c74696e5f636f737473", "0xc", "0x77697468647261775f6761735f616c6c", "0x64697361626c655f61705f747261636b696e67", - "0x647570", "0xf", - "0x11", - "0x61727261795f6e6577", - "0x736e617073686f745f74616b65", "0x13", + "0x61727261795f6e6577", + "0x15", "0x66656c743235325f636f6e7374", "0x4f7574206f6620676173", "0x61727261795f617070656e64", @@ -131,41 +134,41 @@ "0x496e70757420746f6f2073686f727420666f7220617267756d656e7473", "0x616c6c6f635f6c6f63616c", "0x66696e616c697a655f6c6f63616c73", - "0x17", + "0x19", "0x73746f72655f6c6f63616c", - "0x1a", - "0x16", - "0x15", - "0x1d", - "0x1b", + "0x1c", + "0x18", + "0x17", "0x1f", - "0x22", + "0x1d", "0x21", - "0x23", "0x24", - "0x72656e616d65", + "0x23", + "0x25", "0x26", + "0x28", "0x1ad5911ecb88aa4a50482c4de3232f196cfcaf7bd4e9c96d22b283733045007", "0x61727261795f736e617073686f745f706f705f66726f6e74", - "0x28", + "0x2a", "0x756e626f78", + "0x647570", "0x73746f726167655f77726974655f73797363616c6c", - "0x29", + "0x2b", "0x73746f726167655f726561645f73797363616c6c", - "0x2a", + "0x2c", "0x21adb5788e32c84f69a1863d85ef9394b7bf761a0ce1190f826984e5075c371", "0x63616c6c5f636f6e74726163745f73797363616c6c", - "0x2b", + "0x2d", "0x656d69745f6576656e745f73797363616c6c", "0x6765745f626c6f636b5f686173685f73797363616c6c", - "0x34", + "0x36", "0x7536345f746f5f66656c74323532", "0x66656c743235325f737562", "0x66656c743235325f69735f7a65726f", - "0x35", + "0x37", "0x636f6e74726163745f616464726573735f746f5f66656c74323532", "0x753132385f746f5f66656c74323532", - "0x37", + "0x39", "0x554e4558504543544544204552524f52", "0x636c6173735f686173685f7472795f66726f6d5f66656c74323532", "0x6c6962726172795f63616c6c5f73797363616c6c", @@ -174,49 +177,48 @@ "0x7265706c6163655f636c6173735f73797363616c6c", "0x73656e645f6d6573736167655f746f5f6c315f73797363616c6c", "0x66656c743235325f646963745f6e6577", - "0x38", - "0x39", - "0x6465706c6f795f73797363616c6c", + "0x3a", "0x3b", + "0x6465706c6f795f73797363616c6c", "0x3d", "0x3f", + "0x41", "0x7536345f7472795f66726f6d5f66656c74323532", "0x6765745f657865637574696f6e5f696e666f5f73797363616c6c", - "0x40", + "0x42", "0x61727261795f676574", "0x496e646578206f7574206f6620626f756e6473", "0x66656c743235325f646963745f737175617368", "0x73746f726167655f626173655f616464726573735f636f6e7374", "0x1275130f95dda36bcbb6e9d28796c1d7e10b6e9fd5ed083e0ede4b12f613528", "0x73746f726167655f616464726573735f66726f6d5f62617365", - "0xf00", + "0x105c", "0xffffffffffffffff", - "0x89", - "0x7b", - "0x6c", - "0x5a", - "0x4c", - "0x45", - "0x41", + "0x96", + "0x86", + "0x75", + "0x61", + "0x51", + "0x4a", "0x43", - "0x44", + "0x45", "0x46", "0x47", "0x48", "0x49", - "0x4a", "0x4b", + "0x4c", "0x4d", "0x4e", "0x4f", - "0x52", "0x50", - "0x51", + "0x52", "0x53", "0x54", "0x55", "0x56", "0x57", + "0x5a", "0x58", "0x59", "0x5b", @@ -225,7 +227,6 @@ "0x5e", "0x5f", "0x60", - "0x61", "0x62", "0x63", "0x64", @@ -236,30 +237,21 @@ "0x69", "0x6a", "0x6b", + "0x6c", "0x6d", "0x6e", "0x6f", "0x70", "0x71", "0x72", - "0x144", - "0x134", - "0x124", - "0x11a", - "0x10a", - "0xbc", - "0xc0", - "0xf7", - "0xe8", - "0xe1", "0x73", "0x74", - "0x75", "0x76", "0x77", "0x78", "0x79", "0x7a", + "0x7b", "0x7c", "0x7d", "0x7e", @@ -267,46 +259,22 @@ "0x80", "0x81", "0x82", + "0x162", + "0x150", + "0x13e", + "0x134", + "0x122", + "0xd1", + "0xd5", + "0x10d", + "0xfc", + "0xf5", "0x83", "0x84", - "0x1f7", - "0x1ee", - "0x1df", - "0x1d6", - "0x1c7", - "0x178", - "0x17c", - "0x1b5", - "0x1a7", - "0x1a0", - "0x278", - "0x26a", - "0x218", - "0x21c", - "0x259", - "0x24c", - "0x245", - "0x3fb", - "0x3ed", - "0x3de", - "0x3ce", - "0x3bd", - "0x3ab", - "0x398", - "0x384", - "0x36f", - "0x359", - "0x342", - "0x32a", - "0x2c0", - "0x2c4", - "0x30f", - "0x2f8", - "0x2f1", "0x85", - "0x86", "0x87", "0x88", + "0x89", "0x8a", "0x8b", "0x8c", @@ -319,7 +287,40 @@ "0x93", "0x94", "0x95", - "0x96", + "0x224", + "0x21b", + "0x20a", + "0x201", + "0x1f0", + "0x19e", + "0x1a2", + "0x1dc", + "0x1cc", + "0x1c5", + "0x2b2", + "0x2a2", + "0x24d", + "0x251", + "0x28f", + "0x280", + "0x279", + "0x456", + "0x446", + "0x435", + "0x423", + "0x410", + "0x3fc", + "0x3e7", + "0x3d1", + "0x3ba", + "0x3a2", + "0x389", + "0x36f", + "0x302", + "0x306", + "0x352", + "0x339", + "0x332", "0x97", "0x98", "0x99", @@ -357,9 +358,11 @@ "0xb9", "0xba", "0xbb", + "0xbc", "0xbd", "0xbe", "0xbf", + "0xc0", "0xc1", "0xc2", "0xc3", @@ -376,11 +379,9 @@ "0xce", "0xcf", "0xd0", - "0xd1", "0xd2", "0xd3", "0xd4", - "0xd5", "0xd6", "0xd7", "0xd8", @@ -392,152 +393,15 @@ "0xde", "0xdf", "0xe0", + "0xe1", "0xe2", "0xe3", "0xe4", "0xe5", "0xe6", "0xe7", + "0xe8", "0xe9", - "0x4b6", - "0x4a6", - "0x496", - "0x48c", - "0x47c", - "0x42e", - "0x432", - "0x469", - "0x45a", - "0x453", - "0x58c", - "0x57e", - "0x56f", - "0x55f", - "0x54e", - "0x53c", - "0x4e8", - "0x4ec", - "0x527", - "0x516", - "0x50f", - "0x606", - "0x5f8", - "0x5ac", - "0x5b0", - "0x5e7", - "0x5da", - "0x5d3", - "0x6a9", - "0x69a", - "0x691", - "0x682", - "0x633", - "0x637", - "0x670", - "0x662", - "0x65b", - "0x708", - "0x6c6", - "0x6ca", - "0x6f7", - "0x6eb", - "0x7e0", - "0x7d0", - "0x7c0", - "0x7b6", - "0x7a6", - "0x795", - "0x740", - "0x744", - "0x781", - "0x771", - "0x76a", - "0x86b", - "0x85d", - "0x84e", - "0x806", - "0x80a", - "0x83c", - "0x82e", - "0x8ff", - "0x8f1", - "0x8e2", - "0x88f", - "0x893", - "0x8d0", - "0x8c2", - "0x8bb", - "0x91e", - "0x917", - "0x92b", - "0x930", - "0x93b", - "0x94f", - "0x954", - "0x976", - "0x960", - "0x965", - "0x970", - "0x99a", - "0x993", - "0x9a8", - "0x9ad", - "0x9ca", - "0x9c4", - "0x9e0", - "0x9e5", - "0x9f2", - "0xa09", - "0xa0e", - "0xa1a", - "0xa27", - "0xa2c", - "0xa43", - "0xa3d", - "0xa53", - "0xa58", - "0xa63", - "0xcb8", - "0xa85", - "0xa8a", - "0xc9c", - "0xa98", - "0xa9d", - "0xc82", - "0xaab", - "0xab0", - "0xc6a", - "0xac6", - "0xacb", - "0xc4e", - "0xad9", - "0xade", - "0xc34", - "0xaec", - "0xaf1", - "0xc1c", - "0xb01", - "0xb05", - "0xc04", - "0xbf2", - "0xb1e", - "0xb23", - "0xbdc", - "0xb30", - "0xb35", - "0xbc8", - "0xb42", - "0xb47", - "0xbb6", - "0xb55", - "0xb5a", - "0xba6", - "0xb68", - "0xb6d", - "0xb98", - "0xb7a", - "0xb7f", - "0xb8c", "0xea", "0xeb", "0xec", @@ -549,13 +413,12 @@ "0xf2", "0xf3", "0xf4", - "0xf5", "0xf6", + "0xf7", "0xf8", "0xf9", "0xfa", "0xfb", - "0xfc", "0xfd", "0xfe", "0xff", @@ -569,20 +432,160 @@ "0x107", "0x108", "0x109", + "0x10a", "0x10b", + "0x522", + "0x510", + "0x4fe", + "0x4f4", + "0x4e2", + "0x491", + "0x495", + "0x4cd", + "0x4bc", + "0x4b5", + "0x60d", + "0x5fd", + "0x5ec", + "0x5da", + "0x5c7", + "0x5b3", + "0x55c", + "0x560", + "0x59c", + "0x589", + "0x582", + "0x694", + "0x684", + "0x635", + "0x639", + "0x671", + "0x662", + "0x65b", + "0x746", + "0x735", + "0x72c", + "0x71b", + "0x6c9", + "0x6cd", + "0x707", + "0x6f7", + "0x6f0", + "0x7b0", + "0x76b", + "0x76f", + "0x79d", + "0x78f", + "0x89b", + "0x889", + "0x877", + "0x86d", + "0x85b", + "0x848", + "0x7f0", + "0x7f4", + "0x832", + "0x820", + "0x819", + "0x935", + "0x925", + "0x914", + "0x8c9", + "0x8cd", + "0x900", + "0x8f0", + "0x9d9", + "0x9c9", + "0x9b8", + "0x961", + "0x965", + "0x9a4", + "0x994", + "0x98d", + "0x9fa", + "0x9f3", + "0xa07", + "0xa0c", + "0xa16", + "0xa2a", + "0xa2f", + "0xa52", + "0xa3c", + "0xa41", + "0xa4c", + "0xa76", + "0xa6f", + "0xa84", + "0xa89", + "0xaa5", + "0xa9f", + "0xabb", + "0xac0", + "0xacd", + "0xae4", + "0xae9", + "0xaf5", + "0xb02", + "0xb07", + "0xb1d", + "0xb17", + "0xb2d", + "0xb32", + "0xb3d", + "0xdfa", + "0xb65", + "0xb6a", + "0xddc", + "0xb7e", + "0xb83", + "0xdc0", + "0xb97", + "0xb9c", + "0xda6", + "0xbb8", + "0xbbd", + "0xd88", + "0xbd1", + "0xbd6", + "0xd6c", + "0xbea", + "0xbef", + "0xd52", + "0xc05", + "0xc09", + "0xd38", + "0xd26", + "0xc28", + "0xc2d", + "0xd0e", + "0xc40", + "0xc45", + "0xcf8", + "0xc58", + "0xc5d", + "0xce4", + "0xc71", + "0xc76", + "0xcd2", + "0xc8a", + "0xc8f", + "0xcc2", + "0xca2", + "0xca7", "0x10c", - "0x10d", + "0xcb4", "0x10e", "0x10f", "0x110", "0x111", "0x112", "0x113", + "0x114", "0x115", "0x116", "0x117", - "0x118", "0x119", + "0x11a", "0x11b", "0x11c", "0x11d", @@ -590,8 +593,8 @@ "0x11f", "0x120", "0x121", - "0x122", "0x123", + "0x124", "0x125", "0x126", "0x127", @@ -611,1356 +614,1567 @@ "0x136", "0x137", "0x138", - "0xcdc", - "0xcd5", - "0xcee", - "0xcf3", - "0xd00", - "0xd26", - "0xd2b", - "0xd54", - "0xd3e", - "0xd43", - "0xd4e", - "0xd67", - "0xd6c", - "0xd78", - "0xd8b", - "0xd90", - "0xd9c", - "0xdb8", - "0xdbd", - "0xdd7", - "0xdcd", - "0xdd2", - "0xdeb", - "0xdf0", - "0xdfc", - "0xe19", - "0xe26", + "0x139", + "0x13a", + "0x13b", + "0x13c", + "0x13d", + "0x13f", + "0x140", + "0x141", + "0x142", + "0x143", + "0x144", + "0x145", + "0x146", + "0x147", + "0x148", + "0x149", + "0x14a", + "0x14b", + "0x14c", + "0x14d", + "0x14e", + "0x14f", + "0x151", + "0x152", + "0x153", + "0x154", + "0x155", + "0x156", + "0x157", + "0x158", + "0x159", + "0x15a", + "0x15b", + "0x15c", + "0x15d", + "0x15e", + "0x15f", + "0x160", + "0x161", + "0x163", + "0x164", + "0x165", + "0x166", + "0x167", + "0x168", + "0x169", + "0x16a", + "0x16b", + "0x16c", + "0x16d", + "0x16e", + "0x16f", + "0x170", + "0x171", + "0x172", + "0x173", + "0x174", + "0x175", + "0x176", + "0x177", + "0x178", + "0x179", + "0x17a", + "0x17b", + "0x17c", + "0x17d", + "0x17e", + "0x17f", + "0x180", + "0x181", + "0x182", + "0x183", + "0x184", + "0x185", + "0x186", + "0x187", + "0x188", + "0x189", + "0x18a", + "0x18b", + "0x18c", + "0x18d", + "0x18e", + "0x18f", + "0x190", + "0x191", + "0x192", + "0x193", + "0x194", + "0x195", + "0x196", + "0x197", + "0x198", + "0x199", + "0x19a", + "0x19b", + "0x19c", + "0x19d", + "0x19f", + "0x1a0", + "0xe1e", + "0xe17", "0xe30", + "0xe35", + "0xe42", + "0xe68", "0xe6d", - "0xe45", - "0xe63", - "0xe5d", + "0xe96", "0xe80", - "0xe8a", - "0xe8f", - "0xe99", - "0xe9e", + "0xe85", + "0xe90", "0xea9", - "0xeb6", - "0xecc", - "0xedf", + "0xeae", + "0xeba", + "0xecd", + "0xed2", + "0xede", + "0xefa", + "0xeff", + "0xf25", + "0xf1b", + "0xf20", + "0xf39", + "0xf3e", + "0xf4a", + "0xf67", + "0xf74", + "0xf80", + "0xfbf", + "0xf97", + "0xfb5", + "0xfaf", + "0xfd4", + "0xfe0", + "0xfe5", + "0xfef", + "0xff4", + "0xfff", + "0x100c", + "0x1024", + "0x1039", + "0x103e", + "0x1049", + "0x1056", + "0x234", + "0x2c1", + "0x465", + "0x533", + "0x61c", + "0x6a3", + "0x756", + "0x7c0", + "0x8ac", + "0x944", + "0x9e8", + "0xa00", + "0xa1d", + "0xa5a", + "0xa60", + "0xa64", + "0xa7c", + "0xaaf", + "0xad3", + "0xafb", + "0xb25", + "0xb43", + "0xe0c", + "0xe24", + "0xe48", + "0xea0", + "0xec0", "0xee4", - "0xeef", - "0xefc", - "0x153", - "0x205", - "0x285", - "0x408", - "0x4c5", - "0x599", - "0x613", - "0x6b7", - "0x716", - "0x7ef", - "0x878", - "0x90c", - "0x924", - "0x942", - "0x97e", - "0x984", - "0x988", - "0x9a0", - "0x9d4", - "0x9f8", - "0xa20", - "0xa4b", - "0xa69", - "0xcca", - "0xce2", - "0xd06", - "0xd5e", - "0xd7e", - "0xda2", - "0xdb1", - "0xdde", - "0xe02", - "0xe06", - "0xe20", - "0xe2a", - "0xe34", - "0xe7a", - "0xe84", - "0xe92", - "0xeaf", - "0xebf", - "0xec6", - "0xed0", - "0xef6", - "0x7b18", + "0xef3", + "0xf2c", + "0xf50", + "0xf54", + "0xf6e", + "0xf7a", + "0xf86", + "0xfce", + "0xfda", + "0xfe8", + "0x1005", + "0x1017", + "0x101e", + "0x102a", + "0x1050", + "0x8614", "0x6028020340c0180b0080702809018060200701806014020100200c0200400", "0x6054020240f008140480601c0604c020240f0480604406040020240f03802", - "0x903c070180e00807028020681901818008070281700806028020581201812", - "0x601821008200240607c06078020240f074060380201c0a024060700606c02", - "0xe008090281201809018240080903c1201822018230080903c070180608422", - "0x20240f048060380201c0a02406018210240609c06098020240f0940607406", - "0x2f0080903c2e01806084020b4120182c0182b0080903c020a8090182901828", - "0x20240f01c060cc06038020240a048060c8060c4020240f00830048060b806", - "0x901812018390080903c1201838018370080903c07018060d8090183501834", - "0x60b0060b0060f0020300a02406074060ec020240f0240601c060e8020240f", - "0x701807018070181d018410182201807018400083f028020f83d018060d822", - "0x201c0a118060183601c060880608806114061100610c020440a1080601836", - "0x4b0080903c380180e0080702807018061280901849018480080903c470180e", - "0x613c020240f0740608806038020240a01c060184e01c060184d0240613006", - "0x12018190180e008090280901852018510080903c500180e008070280901850", - "0x2168021640216057008560240611c06154020240f024061500614c020240f", - "0x60185e0cc090185d0fc060185e064090185d074060185c008060185c0085b", - "0x719812018061940219063018061700201c0618807018061841d018061805f", - "0x6018690c8060185e00868018070c80601c66008670c8060185c008070c806", - "0x61b8330180617033018061941901806194021b4021b06b01806170021a812", - "0x90185d01c060185c044060185c1bc060185c018060185c0cc06018690cc06", - "0x90180617007018061a407018061b807018061c41c0180618070018061786f", - "0x71cc0601c6607c0601865074060186502406018690240601872070090185d", - "0x617407018061d87501c061d011018061a40601c7301807198730180617002", - "0x5d0087a01c060187908806018791e0070187407406018691dc07018741c009", - "0x61807d01806178730240617407018061f022018061f07b018061781f02406", - "0x60186907c06018601cc060185e088090185d088060185c094060185e09c06", - "0x80018061787f0240617409018061f009018061e47f018061a47e018061a422", - "0x691ec090185d0b0060185c208060185e1f8090185d20406018690a40601869", - "0x61702e018061f0830180617827024061742e018061e425024061742c01806", - "0x90185d0a4090185d204090185d21006018690b806018691f4090185d0b806", - "0x32018061a42e02406174860180617882024061742c02406174850180617080", - "0x601c66008890d40601860220060185e20c090185d210090185d0cc0601887", - "0x61700201c8b0180719807018062280601c3f018071983f018061700201c3f", - "0x6601c060188701c060188c22c060185e0180722c0601c6622c060185c03006", - "0x223411018061b863018061b80601c5f018071985f018061700201c5f01807", - "0x8f214090185d2380601887018072380601c66238060185c008072380601c66", - "0x8602406174900180621c0601c900180719890018061700201c900180719802", - "0x5c18c0601869018071c00601c661c0060185c008071c00601c660700601865", - "0x35024061740601c7b018071987b018061700201c7b01807198022441201806", - "0x70940601c66018071f40601c661f4060185c008071f40601c6609c0601865", - "0x6174930180621c0601c930180719893018061700201c93018071980224806", - "0x5d018072000601c66200060185c008072000601c660a406018650089422009", - "0x8b02406174022540601c820180719882018061700201c82018071983802406", - "0x600f4060188c110060185c1180601860118060188c1240601860258060185e", - "0x618042018062300226c9a018061a4022644501806170022600225c3d01806", - "0x60274060185e238090185d0180701862074060186e0089c104060185c10806", - "0x61700201c83018071980227c45018061a441018061a49e01c061d04c01806", - "0xa2018070187401c0701874008a10b8060186e008a00180720c0601c6620c06", - "0xa7018061a49002406174a6018061700701806294022900228c1f018061a402", - "0x601865008a8018072180601c66218060185c008072180601c660080701874", - "0x9302406174a90180621c0601ca901807198a9018061700201ca90180719850", - "0x602ac060185e0f4090185d064060185c0cc060186014806018692a8060185e", - "0x61780601c880180719888018061700201c880180719835018061945401806", - "0x6018870080601887008ac24c060185e008070940601c66240060185e23806", - "0x6174ae0180621c0601cae01807198ae018061700201cae01807198022b482", - "0x6018af018072580601c66258060185c008072580601c66124060186511009", - "0x601c9d01807198b001c061d09d018061700201c9d018071984c0180619407", - "0x60185c008072a80601c6614806018652a4060185e29c060185c01c06018b1", - "0x2901806180022d0b301c062c819018061a419018061b80601caa01807198aa", - "0xb52b8060185e018072ac0601c662ac060185c008072ac0601c661500601865", - "0x1101cb70740c01cb601c060080701c02008b60180201802008b60180200802", - "0x110086b018b6018090181d00832018b60180c0180c008022d8060080900812", - "0xb601802024020cc062e019018b601c63018120086317c3f024b60186b0c807", - "0x62d8070700617c020706f01cb6018700183f00870018b60185f0181d00802", - "0x62d806088060c802088062d8061bc0618c02008b601802024021cc062e41f", - "0x7b008b601c7e1fc070cc021fc062d8061fc06064021f8062d8060086b0087f", - "0x61c002094062d8061ec06070021ec062d8060086f008022d8060080900802", - "0x21f4062d8060086f008022d8060080900802204060081f00827018b601825", - "0x7000829018b6018270182200827018b6018810187000881018b60187d01873", - "0x7e008022d806008090082c018ba200062d8070a4061fc020a4062d8060a406", - "0x1d0fc0909c02208062d8062080609402208062d8060087b008022d80620006", - "0x220402008b6018021f402008b601802024022148301cbb2102e01cb601c82", - "0x60d4060b0020d4062d8060d406200020d4062d806218060a402218062d806", - "0xb6018070188400893018b6018840182e008022d80622006208020e08801cb6", - "0x62d80607c0621402104062d8060640620c02110062d8060e006200020f406", - "0x350082e018b60182e0180c008902388b024b601842104440f4930748600842", - "0x3800847018b60184501888008022d8060080900846018bc114062d80724006", - "0x9a01885008022d80625806238022689601cb6018470188b00849018b601802", - "0x61f8022744c01cb6018a72980724c0229c062d8061240624002298062d806", - "0x62a40610402008b60185001844008a9140072d806130060f402008b60189d", - "0xb60182e0180c00854018b6018aa01845008aa018b6018520184200852018b6", - "0x62d80615006118022f4062d80623806210022b8062d80622c060b8022ac06", - "0x2e0180c008be018b60184601847008022d80600809008002f4ae2ac0c01800", - "0x62f80611802300062d80623806210022f0062d80622c060b8022fc062d806", - "0x1f0188e008022d8060087d008022d80600809008c1300bc2fc0c018c1018b6", - "0x230c062d80600896008c2018b6018020e002008b60181901849008022d806", - "0x2314062d8063100611c02310062d80630cc201c9a008c3018b6018c301885", - "0x46008c7018b60180701884008c6018b6018850182e008bb018b6018830180c", - "0x2008b6018021f402008b60180202402320c7318bb03006320062d80631406", - "0x601c0621002008b60181901849008022d80607c0623802008b60182c0187e", - "0x62d80600838008022d80632c061f80232cca01cb6018c90184c008c9018b6", - "0xce018b6018cd3300726802334062d8063340621402334062d8060089d008cc", - "0x2344062d806074060b802340062d8060fc060300233c062d8063380611c02", - "0x600809008ba348d13400c018ba018b6018cf01846008d2018b6018ca01884", - "0x612402008b60186f018a6008022d8061cc061f802008b6018021f402008b6", - "0x62d8063500621402350062d806008a7008d3018b6018020e002008b601819", - "0x62d8060fc0603002358062d8063540611c02354062d806350d301c9a008d4", - "0xda018b6018d601846008d9018b60180701884008d8018b60181d0182e008d7", - "0x22d8060cc061f802008b6018021f402008b60180202402368d9360d703006", - "0xdc01885008dc018b60180229c0236c062d80600838008022d80617c0629802", - "0x3f0180c008de018b6018dd01847008dd018b6018dc36c0726802370062d806", - "0x63780611802384062d80601c0621002380062d806074060b80237c062d806", - "0x9018a6008022d8060087d008022d80600809008e2384e037c0c018e2018b6", - "0xb9018b6018b901885008b9018b6018022580238c062d80600838008022d806", - "0xe6018b6018110180c008e5018b6018e401847008e4018b6018b938c0726802", - "0x63a4062d80639406118023a0062d80601c062100239c062d806048060b802", - "0x22d8060085200812018b6018022a402074062d80600850008e93a0e73980c", - "0x6301cea17c3f01cb601c060080701c02008b60180201802008b60180200802", - "0xaa0081c018b6018090181d0086f018b60183f0180c008022d8060080900832", - "0xb601802024021c0063ac0c018b601c3301854008330646b024b60181c1bc07", - "0xb60180c074072ac021cc1f01cb6018220183f00822018b6018190181d00802", - "0xb60186b0180c008022d806008090087f018ec044062d8071cc0617c0203006", - "0xb601811048072b802204062d80607c06074021f4062d80617c060b80209c06", - "0x70940600002008b601802018020947b1f8092d8062047d09c092f40204406", - "0x82018bf008820b0072d8060a4062f802008b60180202402200063b429018b6", - "0x830183200883018b60182c01863008022d8060080900884018ee0b8062d807", - "0x72188501c3300885018b6018850181900886018b6018021ac02214062d806", - "0x88018b6018350181c00835018b6018021bc02008b60180202402008ef008b6", - "0xb6018021bc02008b60180202402008f00180207c020e0062d806220061c002", - "0x62d8060e006088020e0062d806238061c002238062d80622c061cc0222c06", - "0xb601802024020f4063c493018b601c900187f00890018b6018900187000890", - "0x2700844018b6018440182500844018b6018021ec02008b6018930187e00802", - "0x22d8060087d008022d8060080900846114073c842104072d8071107b1f809", - "0x2c00849018b6018490188000849018b6018470182900847018b60180220402", - "0x62100229c062d806108060b802008b601896018820089a258072d80612406", - "0x110188500852018b60180c018bc008a9018b60189a0188000850018b601807", - "0x4c024b6018542a8522a45029c1130002150062d8060b806240022a8062d806", - "0x600809008ae018f32ac062d8072980630402104062d80610406030022989d", - "0x62d8060000611402000062d8062f406108022f4062d8062ac0630802008b6", - "0xc0018b60189d01884008bc018b60184c0182e008bf018b6018410180c008be", - "0x62b80611c02008b60180202402304c02f0bf03006304062d8062f80611802", - "0xb60189d01884008c4018b60184c0182e008c3018b6018410180c008c2018b6", - "0x21f402008b601802024022ecc5310c3030062ec062d806308061180231406", - "0x2008b60180c018c3008022d8060440623802008b60182e01844008022d806", - "0xc601c9a008c7018b6018c701885008c7018b60180225802318062d80600838", - "0x460182e008cb018b6018450180c008ca018b6018c801847008c8018b6018c7", - "0xcc324cb03006334062d8063280611802330062d80601c0621002324062d806", - "0x60b80611002008b60183d0187e008022d8060087d008022d80600809008cd", - "0x2340062d80601c0621002008b60180c018c3008022d8060440623802008b6", - "0x227402344062d80600838008022d80633c061f80233cce01cb6018d00184c", - "0xba01847008ba018b6018d23440726802348062d8063480621402348062d806", - "0x63380621002354062d8061ec060b802350062d8061f8060300234c062d806", - "0x7d008022d80600809008d7358d53500c018d7018b6018d301846008d6018b6", - "0x22d8060440623802008b60182c018a6008022d806210061f802008b601802", - "0xd901885008d9018b60180229c02360062d80600838008022d8060300630c02", - "0x7e0180c008db018b6018da01847008da018b6018d93600726802364062d806", - "0x636c0611802378062d80601c0621002374062d8061ec060b802370062d806", - "0x110188e008022d8060087d008022d80600809008df378dd3700c018df018b6", - "0x62d8061f80603002380062d8062000611c02008b60180c018c3008022d806", - "0xb9018b6018e001846008e3018b60180701884008e2018b60187b0182e008e1", - "0x22d8061fc061f802008b6018021f402008b601802024022e4e3388e103006", - "0x600838008022d8060480631002008b60181f018a6008022d8060300630c02", - "0xb6018e53900726802394062d8063940621402394062d806008a7008e4018b6", - "0x62d80617c060b8023a0062d8061ac060300239c062d8063980611c0239806", - "0x9008f53d0e93a00c018f5018b6018e701846008f4018b60180701884008e9", - "0x2008b601819018a6008022d8061c0061f802008b6018021f402008b601802", - "0xb60180229c023d8062d80600838008022d8060740631402008b601812018c4", - "0xb6018f801847008f8018b6018f73d807268023dc062d8063dc06214023dc06", - "0x62d80601c06210023ec062d80617c060b8023e8062d8061ac06030023e406", - "0x60087d008022d80600809008fc2e0fb3e80c018fc018b6018f901846008b8", - "0x38008022d8060480631002008b601809018a6008022d8060740631402008b6", - "0xfe3f407268023f8062d8063f806214023f8062d80600896008fd018b601802", - "0x60c8060b802404062d80618c0603002400062d8063fc0611c023fc062d806", - "0x10440d024040c01904018b6019000184600903018b6018070188400902018b6", - "0x22d80600806008022d80600802008022d806008520081d018b6018022ec02", - "0x60440603002008b6018020240217c3f01d050481101cb601c060080701c02", - "0x6f0cc19024bd0086f018b6018090181d00833018b6018120182e00819018b6", - "0x90087001906070062d8071ac0600002008b601802018021ac3218c092d806", - "0x20880641c0c018b601c73018bf0087307c072d806070062f802008b601802", - "0x1f0181d00827018b6018320182e00825018b6018630180c008022d80600809", - "0x7b1f87f024b60187d09c25024bd0080c018b60180c07407318021f4062d806", - "0xbe008022d806008090082901908204062d8071ec0600002008b60180201802", - "0x2008b601802024020b80642482018b601c2c018bf0082c200072d80620406", - "0x606402214062d8060086b00883018b6018840183200884018b60188001863", - "0x60086f008022d8060080900802428022d8072148301c3300883018b601883", - "0x242c060081f00888018b6018350187000835018b6018860181c00886018b6", - "0x8b018700088b018b6018380187300838018b6018021bc02008b60180202402", - "0x7238061fc02238062d806238061c002238062d8062200608802220062d806", - "0x62d8060087b008022d806240061f802008b6018020240224c0643090018b6", - "0x21144201d0d1044401cb601c3d1f87f024270083d018b60183d018250083d", - "0x62d806118060a402118062d80600881008022d8060087d008022d80600809", - "0x22d80612406208022584901cb6018470182c00847018b6018470188000847", - "0x2140062d806258062000229c062d80601c0621002298062d806104060b802", - "0xb6018522a45029ca6074c700852018b60188201890008a9018b60180c01890", - "0x9008540190e2a8062d8072740632002110062d80611006030022744c26809", - "0x72d8062ac060f4022ac062d80600838008022d8062a80632802008b601802", - "0xbe018b6018000184200800018b6018bd01841008022d8062b806110022f4ae", - "0x2300062d806268060b8022f0062d80611006030022fc062d8062f80611402", - "0x600809008c2304c02f00c018c2018b6018bf01846008c1018b60184c01884", - "0x62d806268060b802310062d806110060300230c062d8061500611c02008b6", - "0x9008c62ecc53100c018c6018b6018c301846008bb018b60184c01884008c5", - "0x2008b60180c01844008022d8062080611002008b6018021f402008b601802", - "0xc701c9a008c8018b6018c801885008c8018b6018022580231c062d80600838", - "0x450182e008c9018b6018420180c008cb018b6018ca01847008ca018b6018c8", - "0xcd330c903006338062d80632c0611802334062d80601c0621002330062d806", - "0x62080611002008b6018930187e008022d8060087d008022d80600809008ce", - "0xcf01cb6018d10184c008d1018b60180701884008022d8060300611002008b6", - "0x6214022e8062d8060089d008d2018b6018020e002008b6018d00187e008d0", - "0x603002350062d80634c0611c0234c062d8062e8d201c9a008ba018b6018ba", - "0xd401846008d7018b6018cf01884008d6018b60187e0182e008d5018b60187f", - "0x61f802008b6018021f402008b60180202402360d7358d503006360062d806", - "0xd9018b6018020e002008b60180c01844008022d8062000629802008b60182e", - "0x236c062d806368d901c9a008da018b6018da01885008da018b60180229c02", - "0x84008de018b60187e0182e008dd018b60187f0180c008dc018b6018db01847", - "0xb60180202402380df378dd03006380062d806370061180237c062d80601c06", - "0x603002384062d8060a40611c02008b60180c01844008022d8060087d00802", - "0xe101846008b9018b60180701884008e3018b60187e0182e008e2018b60187f", - "0x61f802008b6018021f402008b60180202402390b938ce203006390062d806", - "0xe5018b6018020e002008b60181d018cb008022d80607c0629802008b601822", - "0x239c062d806398e501c9a008e6018b6018e601885008e6018b60180229c02", - "0x84008f4018b6018320182e008e9018b6018630180c008e8018b6018e701847", - "0xb601802024023d8f53d0e9030063d8062d8063a006118023d4062d80601c06", - "0x6030023dc062d8061c00611c02008b60181d018cb008022d8060087d00802", - "0xf701846008fa018b60180701884008f9018b6018320182e008f8018b601863", - "0x632c02008b6018021f402008b601802024023ecfa3e4f8030063ec062d806", - "0xfc018b601802258022e0062d80600838008022d8060240629802008b60181d", - "0xfe018b6018fd01847008fd018b6018fc2e007268023f0062d8063f00621402", - "0x2404062d80601c0621002400062d80617c060b8023fc062d8060fc0603002", - "0x22d80600806008022d8060080200902405003fc0c01902018b6018fe01846", - "0x60300603002008b601802024020481101d0f0740c01cb601c060080701c02", - "0x63300218c5f0fc092d8061ac3201cc90086b018b6018090181d00832018b6", - "0x60c8021bc062d80617c0618c02008b601802024020cc0644019018b601c63", - "0x70070070cc02070062d80607006064021c0062d8060086b0081c018b60186f", - "0x62d80607c060700207c062d8060086f008022d8060080900802444022d807", - "0x60086f008022d8060080900802448060081f00822018b6018730187000873", - "0xb6018220182200822018b60187e018700087e018b60187f018730087f018b6", - "0x6008090082701913094062d8071ec061fc021ec062d8061ec061c0021ec06", - "0x21f4062d8061f406094021f4062d8060087b008022d806094061f802008b6", - "0xb6018021f402008b601802024020b08001d140a48101cb601c7d0743f02427", - "0x20b8062d8060b806200020b8062d806208060a402208062d8060088100802", - "0x8400888018b6018290182e008022d806210062080220c8401cb60182e0182c", - "0xc33802238062d806064063340222c062d80620c06200020e0062d80601c06", - "0x62d8070d4060d402204062d80620406030020d486214092d8062388b0e088", - "0x44018b6018020e0020f4062d8062400622002008b6018020240224c0645490", - "0x211c062d8061080621402008b6018410188e00842104072d8060f40622c02", - "0x2008b6018460187e00846114072d8061244701c9300849018b60184401890", - "0x420084c018b60189a01841008022d80625806110022689601cb6018450183d", - "0x60b80229c062d8062040603002298062d8062740611402274062d80613006", - "0x5029c0c01852018b6018a601846008a9018b6018860188400850018b601885", - "0x2150062d80620406030022a8062d80624c0611c02008b60180202402148a9", - "0xc018bd018b6018aa01846008ae018b60188601884008ab018b6018850182e", - "0x38008022d8060640633c02008b6018021f402008b601802024022f4ae2ac54", - "0xbe00007268022f8062d8062f806214022f8062d8060089600800018b601802", - "0x60b0060b802300062d80620006030022f0062d8062fc0611c022fc062d806", - "0xc3308c13000c018c3018b6018bc01846008c2018b60180701884008c1018b6", - "0xb601819018cf008022d80609c061f802008b6018021f402008b60180202402", - "0x22d806314061f802314c401cb6018bb0184c008bb018b6018070188400802", - "0x72680231c062d80631c062140231c062d8060089d008c6018b6018020e002", - "0x60b80232c062d8060fc0603002328062d8063200611c02320062d80631cc6", - "0xc932c0c018cd018b6018ca01846008cc018b6018c401884008c9018b60181d", - "0x5f018a6008022d8060cc061f802008b6018021f402008b60180202402334cc", - "0xcf018b6018cf01885008cf018b60180229c02338062d80600838008022d806", - "0xd2018b60183f0180c008d1018b6018d001847008d0018b6018cf3380726802", - "0x6350062d806344061180234c062d80601c06210022e8062d806074060b802", - "0x2008b601809018a6008022d8060087d008022d80600809008d434cba3480c", - "0xd501c9a008d6018b6018d601885008d6018b60180225802354062d80600838", - "0x120182e008d9018b6018110180c008d8018b6018d701847008d7018b6018d6", - "0xdb368d903006370062d806360061180236c062d80601c0621002368062d806", - "0x74581d030072d8070180201c07008022d80600806008022d80600802008dc", - "0x5f0fc072d80618c060fc0218c062d8060240607402008b6018020240204811", - "0x22d806008090086b019170c8062d80717c0617c02030062d8060300603002", - "0x1c018b601c330185f00833064072d8061bc060fc021bc062d8060fc0607402", - "0x1f01cb6018220183f00822018b6018190181d008022d806008090087001918", - "0x62d80607c0607402008b601802024021f8064647f018b601c730185f00873", - "0x600809008810191a1f4062d8070940617c020947b01cb6018270183f00827", - "0xb601c800185f008800a4072d8060b0060fc020b0062d8061ec0607402008b6", - "0xb6018850183f00885018b6018290181d008022d806008090082e0191b20806", - "0x62100607402008b601802024020d40647086018b601c830185f0088321007", - "0x9008900191d238062d8070e00617c020e08801cb60188b0183f0088b018b6", - "0x3d0185f0083d24c072d806110060fc02110062d8062200607402008b601802", - "0x470183f00847018b6018930181d008022d80600809008420191e104062d807", - "0x607402008b601802024022580647c49018b601c460185f00846114072d806", - "0xa701920298062d8071300617c021309a01cb60189d0183f0089d018b601845", - "0x5f008a9140072d806148060fc02148062d8062680607402008b60180202402", - "0x32008ab018b60185001863008022d8060080900854019212a8062d8072a406", - "0xae01c33008ae018b6018ae01819008bd018b6018021ac022b8062d8062ac06", - "0xb6018000181c00800018b6018021bc02008b6018020240200922008b601cbd", - "0x21bc02008b60180202402009230180207c022fc062d8062f8061c0022f806", - "0x62fc06088022fc062d806300061c002300062d8062f0061cc022f0062d806", - "0x20240230c06490c2018b601cc10187f008c1018b6018c101870008c1018b6", - "0xc4018b6018c401825008c4018b6018021ec02008b6018c20187e008022d806", - "0x60087d008022d80600809008c731807494bb314072d8073101d0300909c02", - "0xca018b6018ca01880008ca018b6018c801829008c8018b60180220402008b6", - "0x2340062d8063140603002008b6018cb01882008c932c072d806328060b002", - "0x85008ba018b6018c901880008d2018b60180701884008d1018b6018bb0182e", - "0x621402354062d8061fc0621402350062d806070062140234c062d8060c806", - "0x8e01885008d8018b60188601885008d7018b60188201885008d6018b60187d", - "0x6298062140236c062d8061240621402368062d8061040621402364062d806", - "0xd9360d7358d5350d32e8d2344d01bcd0008dd018b6018aa01885008dc018b6", - "0x20240237c06498de018b601ccf018c8008cf338cd3300c2d806374dc36cda", - "0xe101cb6018e00183d008e0018b6018020e002008b6018de018ca008022d806", - "0x22e4062d80638c061080238c062d8063880610402008b6018e101844008e2", - "0x84008e6018b6018cd0182e008e5018b6018cc0180c008e4018b6018b901845", - "0xb601802024023a0e7398e5030063a0062d806390061180239c062d80633806", - "0xf5018b6018cd0182e008f4018b6018cc0180c008e9018b6018df0184700802", - "0x2024023dcf63d4f4030063dc062d8063a406118023d8062d8063380621002", - "0x8e008022d8062980623802008b6018aa0188e008022d8060087d008022d806", - "0xb6018860188e008022d8062380623802008b6018410188e008022d80612406", - "0x623802008b60187f0188e008022d8061f40623802008b6018820188e00802", - "0xf9018b601802258023e0062d80600838008022d8060c80623802008b60181c", - "0xfb018b6018fa01847008fa018b6018f93e007268023e4062d8063e40621402", - "0x23f4062d80601c06210023f0062d80631c060b8022e0062d8063180603002", - "0x22d8060087d008022d80600809008fe3f4fc2e00c018fe018b6018fb01846", - "0x490188e008022d8062980623802008b6018aa0188e008022d80630c061f802", - "0x2008b6018860188e008022d8062380623802008b6018410188e008022d806", - "0x60700623802008b60187f0188e008022d8061f40623802008b6018820188e", - "0xff01cb6019010184c00901018b60180701884008022d8060c80623802008b6", - "0x62140240c062d8060089d00902018b6018020e002008b6019000187e00900", - "0x60300249c062d8064100611c02410062d80640d0201c9a00903018b601903", - "0x127018460092a018b6018ff0188400929018b60181d0182e00928018b60180c", - "0x61f802008b6018021f402008b601802024022dd2a4a528030062dc062d806", - "0x22d8061240623802008b6018a60188e008022d8061400629802008b601854", - "0x820188e008022d8062180623802008b60188e0188e008022d8061040623802", - "0x2008b60181c0188e008022d8061fc0623802008b60187d0188e008022d806", - "0x64b006214024b0062d806008a70092b018b6018020e002008b6018320188e", - "0x603006030024b8062d8064b40611c024b4062d8064b12b01c9a0092c018b6", - "0xb60192e0184600931018b6018070188400930018b60181d0182e0092f018b6", - "0x629c061f802008b6018021f402008b601802024024c9314c12f030064c806", - "0x8e008022d8061040623802008b6018490188e008022d8062680629802008b6", - "0xb60187d0188e008022d8062080623802008b6018860188e008022d80623806", - "0x20e002008b6018320188e008022d8060700623802008b60187f0188e00802", - "0x64d13301c9a00934018b6019340188500934018b60180229c024cc062d806", - "0xb60181d0182e00937018b60180c0180c00936018b6019350184700935018b6", - "0x24e9394e137030064e8062d8064d806118024e4062d80601c06210024e006", - "0x22d8061140629802008b6018960187e008022d8060087d008022d80600809", - "0x820188e008022d8062180623802008b60188e0188e008022d8061040623802", - "0x2008b60181c0188e008022d8061fc0623802008b60187d0188e008022d806", - "0x64f006214024f0062d806008a70093b018b6018020e002008b6018320188e", - "0x603006030024f8062d8064f40611c024f4062d8064f13b01c9a0093c018b6", - "0xb60193e0184600941018b6018070188400940018b60181d0182e0093f018b6", - "0x6108061f802008b6018021f402008b60180202402509415013f0300650806", - "0x8e008022d8062180623802008b60188e0188e008022d80624c0629802008b6", - "0xb60181c0188e008022d8061fc0623802008b60187d0188e008022d80620806", - "0x621402510062d806008a700943018b6018020e002008b6018320188e00802", - "0x603002518062d8065140611c02514062d8065114301c9a00944018b601944", - "0x1460184600949018b6018070188400948018b60181d0182e00947018b60180c", - "0x61f802008b6018021f402008b60180202402529495214703006528062d806", - "0x22d8062180623802008b601888018a6008022d8060c80623802008b601890", - "0x1c0188e008022d8061fc0623802008b60187d0188e008022d8062080623802", - "0x14c018b60194c018850094c018b60180229c0252c062d80600838008022d806", - "0x14f018b60180c0180c0094e018b60194d018470094d018b60194c52c0726802", - "0x6548062d8065380611802544062d80601c0621002540062d806074060b802", - "0x2008b6018350187e008022d8060087d008022d80600809009525455053c0c", - "0x62080623802008b601884018a6008022d8060700623802008b6018320188e", - "0xa700953018b6018020e002008b60187f0188e008022d8061f40623802008b6", - "0x611c02554062d8065515301c9a00954018b6019540188500954018b601802", - "0x70188400958018b60181d0182e00957018b60180c0180c00956018b601955", - "0x2008b60180202402569595615703006568062d8065580611802564062d806", - "0xb60181c0188e008022d8060c80623802008b60182e0187e008022d8060087d", - "0x20e002008b60187d0188e008022d8060a40629802008b60187f0188e00802", - "0x65715b01c9a0095c018b60195c018850095c018b60180229c0256c062d806", - "0xb60181d0182e0095e018b60180c0180c0095d018b6018ef01847008ef018b6", - "0x2580f057d5e03006580062d80657406118023c0062d80601c062100257c06", - "0x22d8060c80623802008b6018810187e008022d8060087d008022d80600809", - "0x600838008022d8061ec0629802008b60187f0188e008022d8060700623802", - "0xb6019625840726802588062d8065880621402588062d806008a700961018b6", - "0x62d806074060b802594062d8060300603002590062d80658c0611c0258c06", - "0x90096859d665940c01968018b6019640184600967018b6018070188400966", - "0x2008b6018320188e008022d8061f8061f802008b6018021f402008b601802", - "0xb60180229c025a4062d80600838008022d80607c0629802008b60181c0188e", - "0xb60196b018470096b018b60196a5a407268025a8062d8065a806214025a806", - "0x62d80601c06210025b8062d806074060b8025b4062d80603006030025b006", - "0x60087d008022d80600809009705bd6e5b40c01970018b60196c018460096f", - "0x38008022d8060640629802008b6018320188e008022d8061c0061f802008b6", - "0x1725c407268025c8062d8065c806214025c8062d806008a700971018b601802", - "0x6074060b8025d4062d80603006030025d0062d8065cc0611c025cc062d806", - "0x1785dd765d40c01978018b6019740184600977018b6018070188400976018b6", - "0xb60183f018a6008022d8061ac061f802008b6018021f402008b60180202402", - "0x9a0097a018b60197a018850097a018b60180229c025e4062d8060083800802", - "0x2e0097d018b60180c0180c0097c018b60197b018470097b018b60197a5e407", - "0x17d030063cc062d8065f006118025fc062d80601c06210025f8062d80607406", - "0x20e002008b601809018a6008022d8060087d008022d80600809008f35fd7e", - "0x66058001c9a00981018b6019810188500981018b60180225802600062d806", - "0xb6018120182e00984018b6018110180c00983018b6019820184700982018b6", - "0x2618f26158403006618062d80660c06118023c8062d80601c062100261406", - "0x22d80600802008022d8060085200812018b6018022a402074062d806008d1", - "0xb601802024020c86301d8717c3f01cb601c060080701c02008b60180201802", - "0x92d8060706f01cd20081c018b6018090181d0086f018b60183f0180c00802", - "0x60640607402008b601802024021c0066200c018b601c33018ba008330646b", - "0x730185f0080c018b60180c0740734c021cc1f01cb6018220183f00822018b6", - "0x5f0182e00827018b60186b0180c008022d806008090087f01989044062d807", - "0x27024bd00811018b601811048072b802204062d80607c06074021f4062d806", - "0x800198a0a4062d8070940600002008b601802018020947b1f8092d8062047d", - "0x662c2e018b601c82018bf008820b0072d8060a4062f802008b60180202402", - "0x6b00885018b6018830183200883018b60182c01863008022d8060080900884", - "0x900802630022d8072188501c3300885018b6018850181900886018b601802", - "0xb6018880187000888018b6018350181c00835018b6018021bc02008b601802", - "0x8b018730088b018b6018021bc02008b601802024020098d0180207c020e006", - "0x6240061c002240062d8060e006088020e0062d806238061c002238062d806", - "0x624c061f802008b601802024020f40663893018b601c900187f00890018b6", - "0xb601c441ec7e0242700844018b6018440182500844018b6018021ec02008b6", - "0x62d80600881008022d8060087d008022d80600809008461140763c4210407", - "0x9601cb6018490182c00849018b6018490188000849018b6018470182900847", - "0x2140062d80601c062100229c062d806108060b802008b601896018820089a", - "0x90008aa018b6018110188500852018b60180c018d4008a9018b60189a01880", - "0x410180c008a62744c024b6018542a8522a45029c1135402150062d8060b806", - "0xab018c2008022d80600809008ae019902ac062d8072980630402104062d806", - "0x610406030022f8062d8060000611402000062d8062f406108022f4062d806", - "0xb6018be01846008c0018b60189d01884008bc018b60184c0182e008bf018b6", - "0x603002308062d8062b80611c02008b60180202402304c02f0bf0300630406", - "0xc201846008c5018b60189d01884008c4018b60184c0182e008c3018b601841", - "0x611002008b6018021f402008b601802024022ecc5310c3030062ec062d806", - "0xc6018b6018020e002008b60180c018d6008022d8060440623802008b60182e", - "0x2320062d80631cc601c9a008c7018b6018c701885008c7018b60180225802", - "0x84008c9018b6018460182e008cb018b6018450180c008ca018b6018c801847", - "0xb60180202402334cc324cb03006334062d8063280611802330062d80601c06", - "0x110188e008022d8060b80611002008b60183d0187e008022d8060087d00802", - "0x72d8063400613002340062d80601c0621002008b60180c018d6008022d806", - "0x85008d2018b60180227402344062d80600838008022d80633c061f80233cce", - "0xc008d3018b6018ba01847008ba018b6018d23440726802348062d80634806", - "0x611802358062d8063380621002354062d8061ec060b802350062d8061f806", - "0x7e008022d8060087d008022d80600809008d7358d53500c018d7018b6018d3", - "0xb60180c018d6008022d8060440623802008b60182c018a6008022d80621006", - "0x9a008d9018b6018d901885008d9018b60180229c02360062d8060083800802", - "0x2e008dc018b60187e0180c008db018b6018da01847008da018b6018d936007", - "0xdc0300637c062d80636c0611802378062d80601c0621002374062d8061ec06", - "0x635802008b6018110188e008022d8060087d008022d80600809008df378dd", - "0x61ec060b802384062d8061f80603002380062d8062000611c02008b60180c", - "0xb938ce23840c018b9018b6018e001846008e3018b60180701884008e2018b6", - "0xb60180c018d6008022d8061fc061f802008b6018021f402008b60180202402", - "0x229c02390062d80600838008022d8060480631002008b60181f018a600802", - "0xe601847008e6018b6018e53900726802394062d8063940621402394062d806", - "0x601c06210023a4062d80617c060b8023a0062d8061ac060300239c062d806", - "0x7d008022d80600809008f53d0e93a00c018f5018b6018e701846008f4018b6", - "0x22d8060480631002008b601819018a6008022d8061c0061f802008b601802", - "0xf701885008f7018b60180229c023d8062d80600838008022d8060740635c02", - "0x6b0180c008f9018b6018f801847008f8018b6018f73d807268023dc062d806", - "0x63e406118022e0062d80601c06210023ec062d80617c060b8023e8062d806", - "0x1d018d7008022d8060087d008022d80600809008fc2e0fb3e80c018fc018b6", - "0x23f4062d80600838008022d8060480631002008b601809018a6008022d806", - "0x47008ff018b6018fe3f407268023f8062d8063f806214023f8062d80600896", - "0x621002408062d8060c8060b802404062d80618c0603002400062d8063fc06", - "0x22d806008020090440d024040c01904018b6019000184600903018b601807", - "0xb601802024020481101d910740c01cb601c060080701c02008b60180201802", - "0x92d8061ac3201cd20086b018b6018090181d00832018b60180c0180c00802", - "0x617c0607402008b601802024020cc0664819018b601c63018ba0086317c3f", - "0x9008730199307c062d8070700617c020706f01cb6018700183f00870018b6", - "0x7f0185f0087f088072d8061f8060fc021f8062d8061bc0607402008b601802", - "0x810183f00881018b6018220181d008022d8060080900825019941ec062d807", - "0x607402008b601802024022000665429018b601c7d0185f0087d09c072d806", - "0x8301996210062d8072080617c022082c01cb60182e0183f0082e018b601827", - "0x21ac02218062d806214060c802214062d8060b00618c02008b60180202402", - "0x20240200997008b601c35218070cc02218062d80621806064020d4062d806", - "0x62d8060e0061c0020e0062d8062200607002220062d8060086f008022d806", - "0x6238061cc02238062d8060086f008022d8060080900802660060081f0088b", - "0xb6018930187000893018b60188b018220088b018b6018900187000890018b6", - "0xb60183d0187e008022d8060080900844019990f4062d80724c061fc0224c06", - "0x72d8071041d0fc0909c02104062d8061040609402104062d8060087b00802", - "0x49018b60180220402008b6018021f402008b6018020240211c4601d9a11442", - "0x4c268072d806258060b002258062d8062580620002258062d806124060a402", - "0x80008a9018b6018070188400850018b6018450182e008022d8062680620802", - "0x621402150062d80607c06214022a8062d8060640635002148062d80613006", - "0x500fcd8008bd018b60188401885008ae018b60182901885008ab018b60187b", - "0xa7018c100842018b6018420180c008a72989d024b6018bd2b8ab150aa148a9", - "0xbf01842008bf018b601800018c2008022d80600809008be0199b000062d807", - "0x6274060b802304062d8061080603002300062d8062f006114022f0062d806", - "0xc430cc23040c018c4018b6018c001846008c3018b6018a601884008c2018b6", - "0x60b8022ec062d8061080603002314062d8062f80611c02008b60180202402", - "0xc62ec0c018c8018b6018c501846008c7018b6018a601884008c6018b60189d", - "0x290188e008022d8062100623802008b6018021f402008b60180202402320c7", - "0x2008b601819018d6008022d80607c0623802008b60187b0188e008022d806", - "0xca01c9a008cb018b6018cb01885008cb018b60180225802328062d80600838", - "0x470182e008cd018b6018460180c008cc018b6018c901847008c9018b6018cb", - "0xcf338cd03006340062d806330061180233c062d80601c0621002338062d806", - "0x62100623802008b6018440187e008022d8060087d008022d80600809008d0", - "0xd6008022d80607c0623802008b60187b0188e008022d8060a40623802008b6", - "0x61f802348d101cb6018ba0184c008ba018b60180701884008022d80606406", - "0x62d8063500621402350062d8060089d008d3018b6018020e002008b6018d2", - "0x62d8060fc0603002358062d8063540611c02354062d806350d301c9a008d4", - "0xda018b6018d601846008d9018b6018d101884008d8018b60181d0182e008d7", - "0x22d80620c061f802008b6018021f402008b60180202402368d9360d703006", - "0x1f0188e008022d8061ec0623802008b6018290188e008022d8060b00629802", - "0x2370062d806008a7008db018b6018020e002008b601819018d6008022d806", - "0x2378062d8063740611c02374062d806370db01c9a008dc018b6018dc01885", - "0x46008e1018b60180701884008e0018b60181d0182e008df018b60183f0180c", - "0x2008b6018021f402008b60180202402388e1380df03006388062d80637806", - "0x607c0623802008b60187b0188e008022d80609c0629802008b6018800187e", - "0x85008b9018b60180229c0238c062d80600838008022d8060640635802008b6", - "0xc008e5018b6018e401847008e4018b6018b938c07268022e4062d8062e406", - "0x6118023a0062d80601c062100239c062d806074060b802398062d8060fc06", - "0x7e008022d8060087d008022d80600809008e93a0e73980c018e9018b6018e5", - "0xb601819018d6008022d80607c0623802008b601822018a6008022d80609406", - "0x9a008f5018b6018f501885008f5018b60180229c023d0062d8060083800802", - "0x2e008f8018b60183f0180c008f7018b6018f601847008f6018b6018f53d007", - "0xf8030063ec062d8063dc06118023e8062d80601c06210023e4062d80607406", - "0x635802008b6018730187e008022d8060087d008022d80600809008fb3e8f9", - "0xfc018b60180229c022e0062d80600838008022d8061bc0629802008b601819", - "0xfe018b6018fd01847008fd018b6018fc2e007268023f0062d8063f00621402", - "0x2404062d80601c0621002400062d806074060b8023fc062d8060fc0603002", - "0x22d8060087d008022d8060080900902405003fc0c01902018b6018fe01846", - "0x6008a700903018b6018020e002008b60185f018a6008022d8060cc061f802", - "0x649c0611c0249c062d8064110301c9a00904018b6019040188500904018b6", - "0xb601807018840092a018b60181d0182e00929018b60183f0180c00928018b6", - "0x21f402008b601802024024acb74a929030064ac062d8064a006118022dc06", - "0x24b4062d806008960092c018b6018020e002008b601809018a6008022d806", - "0x24bc062d8064b80611c024b8062d8064b52c01c9a0092d018b60192d01885", - "0x4600932018b6018070188400931018b6018120182e00930018b6018110180c", - "0x2008b60180201802008b601802008024cd324c530030064cc062d8064bc06", - "0xb60180c0180c008022d8060080900812044076701d030072d8070180201c07", - "0x63018ba0086317c3f024b60186b0c807348021ac062d80602406074020c806", - "0x6f018320086f018b60185f01863008022d80600809008330199d064062d807", - "0x71c01c01c330081c018b60181c0181900870018b6018021ac02070062d806", - "0x73018b60181f0181c0081f018b6018021bc02008b601802024020099e008b6", - "0xb6018021bc02008b601802024020099f0180207c02088062d8061cc061c002", - "0x62d8060880608802088062d8061f8061c0021f8062d8061fc061cc021fc06", - "0xb6018020240209c0668025018b601c7b0187f0087b018b60187b018700087b", - "0x270087d018b60187d018250087d018b6018021ec02008b6018250187e00802", - "0x22d8060087d008022d806008090082c2000768429204072d8071f41d0fc09", - "0x2c0082e018b60182e018800082e018b6018820182900882018b60180220402", - "0x621002220062d8060a4060b802008b6018840188200883210072d8060b806", - "0x88030d90088e018b601819018d40088b018b6018830188000838018b601807", - "0x90018b601c35018c800881018b6018810180c0083521885024b60188e22c38", - "0x3d0083d018b6018020e002008b601890018ca008022d8060080900893019a2", - "0x610802108062d8061040610402008b6018440184400841110072d8060f406", - "0x850182e00847018b6018810180c00846018b6018450184500845018b601842", - "0x961244703006268062d8061180611802258062d8062180621002124062d806", - "0x2e0089d018b6018810180c0084c018b60189301847008022d806008090089a", - "0x9d03006140062d806130061180229c062d8062180621002298062d80621406", - "0x20e002008b601819018d6008022d8060087d008022d806008090085029ca6", - "0x6148a901c9a00852018b6018520188500852018b601802258022a4062d806", - "0xb60182c0182e008ab018b6018800180c00854018b6018aa01847008aa018b6", - "0x2000bd2b8ab03006000062d80615006118022f4062d80601c06210022b806", - "0x22d8060640635802008b6018270187e008022d8060087d008022d80600809", - "0x2008b6018bf0187e008bf2f8072d8062f006130022f0062d80601c0621002", - "0xc001c9a008c1018b6018c101885008c1018b60180227402300062d80600838", - "0x1d0182e008c4018b60183f0180c008c3018b6018c201847008c2018b6018c1", - "0xbb314c403006318062d80630c06118022ec062d8062f80621002314062d806", - "0x617c0629802008b6018330187e008022d8060087d008022d80600809008c6", - "0x2320062d8063200621402320062d806008a7008c7018b6018020e002008b6", - "0x2324062d8060fc060300232c062d8063280611c02328062d806320c701c9a", - "0xc018ce018b6018cb01846008cd018b60180701884008cc018b60181d0182e", - "0x38008022d8060240629802008b6018021f402008b60180202402338cd330c9", - "0xd033c0726802340062d8063400621402340062d80600896008cf018b601802", - "0x6048060b8022e8062d8060440603002348062d8063440611c02344062d806", - "0xd5350d32e80c018d5018b6018d201846008d4018b60180701884008d3018b6", - "0x22d80600806008022d80600802008022d806008520081d018b6018022a402", - "0x60240607402008b6018020240217c3f01da30481101cb601c060080701c02", - "0x70c80617c02044062d80604406030020c86301cb60186b0183f0086b018b6", - "0x6048060b8021c0062d8060440603002008b60180202402064066900c018b6", - "0x1f1c0092f402030062d8060301d01cae00873018b6018630181d0081f018b6", - "0x21fc0669422018b601c1c01800008022d806008060081c1bc33024b601873", - "0x27019a6094062d8071ec062fc021ec7e01cb601822018be008022d80600809", - "0x21ac02204062d8061f4060c8021f4062d8061f80618c02008b60180202402", - "0x202402009a7008b601c29204070cc02204062d80620406064020a4062d806", - "0x62d8060b0061c0020b0062d8062000607002200062d8060086f008022d806", - "0x60b8061cc020b8062d8060086f008022d80600809008026a0060081f00882", - "0xb6018830187000883018b6018820182200882018b6018840187000884018b6", - "0xb6018850187e008022d8060080900886019a9214062d80720c061fc0220c06", - "0x72d8070d46f0cc0909c020d4062d8060d406094020d4062d8060087b00802", - "0x90018b60180220402008b6018021f402008b601802024022388b01daa0e088", - "0x440f4072d80624c060b00224c062d80624c062000224c062d806240060a402", - "0x8000847018b6018070188400846018b6018380182e008022d8060f40620802", - "0x1d36802268062d8060940624002258062d8060300621402124062d80611006", - "0xb601c45018c800888018b6018880180c0084510841024b60189a2584911c46", - "0xa6018b6018020e002008b60184c018ca008022d806008090089d019ab13006", - "0x22a4062d8061400610402008b6018a7018440085029c072d806298060f402", - "0x2e00854018b6018880180c008aa018b6018520184500852018b6018a901842", - "0x54030062f4062d8062a806118022b8062d80610806210022ac062d80610406", - "0xbe018b6018880180c00800018b60189d01847008022d80600809008bd2b8ab", - "0x6300062d80600006118022f0062d80610806210022fc062d806104060b802", - "0x2008b60182501844008022d8060087d008022d80600809008c02f0bf2f80c", - "0x63080621402308062d80600896008c1018b6018020e002008b60180c0188e", - "0x622c0603002310062d80630c0611c0230c062d806308c101c9a008c2018b6", - "0xb6018c401846008c6018b60180701884008bb018b60188e0182e008c5018b6", - "0x6218061f802008b6018021f402008b6018020240231cc62ecc50300631c06", - "0x232c062d80601c0621002008b60180c0188e008022d8060940611002008b6", - "0x227402324062d80600838008022d806328061f802328c801cb6018cb0184c", - "0xcd01847008cd018b6018cc3240726802330062d8063300621402330062d806", - "0x63200621002340062d8061bc060b80233c062d8060cc0603002338062d806", - "0x7d008022d80600809008d2344d033c0c018d2018b6018ce01846008d1018b6", - "0x22d8060300623802008b60187e018a6008022d80609c061f802008b601802", - "0x72680234c062d80634c062140234c062d806008a7008ba018b6018020e002", - "0x60b802358062d8060cc0603002354062d8063500611c02350062d80634cba", - "0xd73580c018d9018b6018d501846008d8018b60180701884008d7018b60186f", - "0x7f01847008022d8060300623802008b6018021f402008b60180202402364d8", - "0x601c0621002370062d8061bc060b80236c062d8060cc0603002368062d806", - "0x7d008022d80600809008de374dc36c0c018de018b6018da01846008dd018b6", - "0x22d8060740631002008b601863018a6008022d806064061f802008b601802", - "0x726802380062d8063800621402380062d806008a7008df018b6018020e002", - "0x60b80238c062d8060440603002388062d8063840611c02384062d806380df", - "0xb938c0c018e5018b6018e201846008e4018b60180701884008b9018b601812", - "0x1d018c4008022d8060240629802008b6018021f402008b60180202402394e4", - "0xe7018b6018e701885008e7018b60180225802398062d80600838008022d806", - "0xf4018b60183f0180c008e9018b6018e801847008e8018b6018e73980726802", - "0x63dc062d8063a406118023d8062d80601c06210023d4062d80617c060b802", - "0x72d80701c0201c07008022d80600806008022d80600802008f73d8f53d00c", - "0x617c060c80217c062d8060300618c02008b601802024020fc1201dac0441d", - "0x62d806074060300218c062d80618c06064020c8062d8060086b00863018b6", - "0x21ac062d8060086f008022d80600809008026b4022d8070c86301c330081d", - "0x600809008026b8060081f00833018b6018190187000819018b60186b0181c", - "0x33018b60181c018700081c018b60186f018730086f018b6018021bc02008b6", - "0x1af07c062d8071c0061fc021c0062d8061c0061c0021c0062d8060cc0608802", - "0x60087b008022d80607c061f802008b6018021f402008b601802024021cc06", - "0x7b01db01f87f01cb601c220441d0242700822018b6018220182500822018b6", - "0x6200021f4062d80609c060a40209c062d80600881008022d8060080900825", - "0x7f0180c008022d80620406208020a48101cb60187d0182c0087d018b60187d", - "0x60a40620002214062d8061f8060b80220c062d8060180636c02210062d806", - "0x2008b60182e0187e0082e2082c2000c2d8062188520c84030dc00886018b6", - "0x610402008b6018880184400838220072d8060d4060f4020d4062d80600838", - "0x800180c00890018b60188e018450088e018b60188b018420088b018b601838", - "0x60240621002110062d806208060b8020f4062d8060b00636c0224c062d806", - "0x2008b60180202402108411103d24c1d01842018b6018900184600841018b6", - "0x4501c9a00846018b6018460188500846018b60180225802114062d80600838", - "0x6018db00896018b60187b0180c00849018b6018470184700847018b601846", - "0x61240611802274062d8060240621002130062d806094060b802268062d806", - "0x61f802008b6018021f402008b601802024022989d1309a2581d018a6018b6", - "0x500187e0085029c072d8062a406130022a4062d8060240621002008b601873", - "0xaa018b6018aa01885008aa018b60180227402148062d80600838008022d806", - "0xae018b60181d0180c008ab018b6018540184700854018b6018aa1480726802", - "0x22f8062d80629c0621002000062d806044060b8022f4062d8060180636c02", - "0xb6018021f402008b601802024022fcbe000bd2b81d018bf018b6018ab01846", - "0x621402300062d80600896008bc018b6018020e002008b60180c018a600802", - "0x603002308062d8063040611c02304062d806300bc01c9a008c0018b6018c0", - "0x901884008c5018b60183f0182e008c4018b601806018db008c3018b601812", - "0x62d806008d1008c62ecc5310c307406318062d80630806118022ec062d806", - "0xb60180201802008b60180200802008b60180214802048062d806008a90081d", - "0x3f0180c008022d806008090083218c076c45f0fc072d8070180201c0700802", - "0xba008330646b024b60181c1bc0734802070062d80602406074021bc062d806", - "0x3f00822018b6018190181d008022d8060080900870019b2030062d8070cc06", - "0x1b3044062d8071cc0617c02030062d8060301d01cd30087307c072d80608806", - "0x21f4062d80617c060b80209c062d8061ac0603002008b601802024021fc06", - "0x92d8062047d09c092f402044062d8060441201cae00881018b60181f0181d", - "0xb60180202402200066d029018b601c2501800008022d80600806008251ec7e", - "0x60080900884019b50b8062d807208062fc022082c01cb601829018be00802", - "0xb601c85018de0088520c072d8062180637402218062d8060b00607402008b6", - "0xb6018380183200838018b60188301863008022d8060080900888019b60d406", - "0x22d8072388b01c330088b018b60188b018190088e018b6018021ac0222c06", - "0x7000893018b6018900181c00890018b6018021bc02008b60180202402009b7", - "0x44018b6018021bc02008b60180202402009b80180207c020f4062d80624c06", - "0x2108062d8060f406088020f4062d806104061c002104062d806110061cc02", - "0x2008b60180202402118066e445018b601c420187f00842018b60184201870", - "0x7e0242700847018b6018470182500847018b6018021ec02008b6018450187e", - "0x81008022d8060087d008022d806008090084c268076e896124072d80711c7b", - "0xa60182c008a6018b6018a601880008a6018b60189d018290089d018b601802", - "0x601c0621002150062d806258060b802008b6018a7018820085029c072d806", - "0xb60181101885008bd018b60180c018d4008ae018b60185001880008ab018b6", - "0xbd2b8ab1501237c022fc062d8060d4061c0022f8062d8060b8062400200006", - "0xbc018b601caa018c800849018b6018490180c008aa148a9024b6018bf2f800", - "0x3d008c1018b6018020e002008b6018bc018ca008022d80600809008c0019bb", - "0x610802310062d80630c0610402008b6018c201844008c3308072d80630406", - "0xa90182e008c6018b6018490180c008bb018b6018c501845008c5018b6018c4", - "0xc831cc603006328062d8062ec0611802320062d806148062100231c062d806", - "0x2e008c9018b6018490180c008cb018b6018c001847008022d80600809008ca", - "0xc903006338062d80632c0611802334062d8061480621002330062d8062a406", - "0x611002008b601835018e0008022d8060087d008022d80600809008ce334cc", - "0xcf018b6018020e002008b60180c018d6008022d8060440623802008b60182e", - "0x2344062d806340cf01c9a008d0018b6018d001885008d0018b60180225802", - "0x84008d3018b60184c0182e008ba018b60189a0180c008d2018b6018d101847", - "0xb60180202402354d434cba03006354062d8063480611802350062d80601c06", - "0x2e01844008022d8060d40638002008b6018460187e008022d8060087d00802", - "0xd8018b60180701884008022d8060300635802008b6018110188e008022d806", - "0x9d008d9018b6018020e002008b6018d70187e008d7358072d8063600613002", - "0x611c0236c062d806368d901c9a008da018b6018da01885008da018b601802", - "0xd601884008de018b60187b0182e008dd018b60187e0180c008dc018b6018db", - "0x2008b60180202402380df378dd03006380062d806370061180237c062d806", - "0xb60182e01844008022d80620c0629802008b6018880187e008022d8060087d", - "0x229c02384062d80600838008022d8060300635802008b6018110188e00802", - "0xe301847008e3018b6018e23840726802388062d8063880621402388062d806", - "0x601c0621002394062d8061ec060b802390062d8061f806030022e4062d806", - "0x7d008022d80600809008e7398e53900c018e7018b6018b901846008e6018b6", - "0x22d8060440623802008b60182c018a6008022d806210061f802008b601802", - "0xe901885008e9018b60180229c023a0062d80600838008022d8060300635802", - "0x7e0180c008f5018b6018f401847008f4018b6018e93a007268023a4062d806", - "0x63d406118023e0062d80601c06210023dc062d8061ec060b8023d8062d806", - "0x110188e008022d8060087d008022d80600809008f93e0f73d80c018f9018b6", - "0x62d8061f806030023e8062d8062000611c02008b60180c018d6008022d806", - "0xfd018b6018fa01846008fc018b60180701884008b8018b60187b0182e008fb", - "0x22d8061fc061f802008b6018021f402008b601802024023f4fc2e0fb03006", - "0x600838008022d8060480631002008b60181f018a6008022d8060300635802", - "0xb6018ff3f807268023fc062d8063fc06214023fc062d806008a7008fe018b6", - "0x62d80617c060b802408062d8061ac0603002404062d8064000611c0240006", - "0x900927411034080c01927018b6019010184600904018b6018070188400903", - "0x2008b601819018a6008022d8061c0061f802008b6018021f402008b601802", - "0xb60180229c024a0062d80600838008022d8060740635c02008b601812018c4", - "0xb60192a018470092a018b6019294a007268024a4062d8064a406214024a406", - "0x62d80601c06210024b0062d80617c060b8024ac062d8061ac06030022dc06", - "0x60087d008022d806008090092e4b52c4ac0c0192e018b6018b7018460092d", - "0x38008022d8060480631002008b601809018a6008022d8060740635c02008b6", - "0x1304bc07268024c0062d8064c006214024c0062d806008960092f018b601802", - "0x60c8060b8024cc062d80618c06030024c8062d8064c40611c024c4062d806", - "0x1364d5344cc0c01936018b6019320184600935018b6018070188400934018b6", - "0x1101dbc0740c01cb601c060080701c02008b60180201802008b60180200802", - "0x217c3f01cb6018630183f00863018b6018090181d008022d8060080900812", - "0x2008b601802024021ac066f432018b601c5f0185f0080c018b60180c0180c", - "0x1be070062d8070cc0617c020cc1901cb60186f0183f0086f018b60183f0181d", - "0x21cc062d80607c060c80207c062d8060640618c02008b601802024021c006", - "0x2009bf008b601c221cc070cc021cc062d8061cc0606402088062d8060086b", - "0x61f8061c0021f8062d8061fc06070021fc062d8060086f008022d80600809", - "0x61cc02094062d8060086f008022d8060080900802700060081f0087b018b6", - "0x7d018700087d018b60187b018220087b018b6018270187000827018b601825", - "0x810187e008022d8060080900829019c1204062d8071f4061fc021f4062d806", - "0x72001d0300909c02200062d8062000609402200062d8060087b008022d806", - "0xb60180220402008b6018021f402008b601802024022102e01dc22082c01cb6", - "0x72d806214060b002214062d8062140620002214062d80620c060a40220c06", - "0x8b018b6018320188500838018b601835018e1008022d80621806208020d486", - "0x90018b6018020e002220062d8062388b0e00938802238062d8060700621402", - "0x2108062d8060f40621402008b6018930188e0083d24c072d8062200622c02", - "0x2008b6018410187e00841110072d8061144201c9300845018b60189001890", - "0x4200849018b60184701841008022d806118061100211c4601cb6018440183d", - "0x60b802130062d8060b00603002268062d8062580611402258062d80612406", - "0x9d1300c018a7018b60189a01846008a6018b601807018840089d018b601882", - "0x1c0188e008022d8060c80623802008b6018021f402008b6018020240229ca6", - "0xa9018b6018a901885008a9018b60180225802140062d80600838008022d806", - "0x54018b60182e0180c008aa018b6018520184700852018b6018a91400726802", - "0x62f4062d8062a806118022b8062d80601c06210022ac062d806210060b802", - "0x2008b6018290187e008022d8060087d008022d80600809008bd2b8ab1500c", - "0xbf0184c008bf018b60180701884008022d8060700623802008b6018320188e", - "0x62d8060089d008bc018b6018020e002008b6018be0187e008be000072d806", - "0x62d8063040611c02304062d806300bc01c9a008c0018b6018c001885008c0", - "0xc5018b60180001884008c4018b60181d0182e008c3018b60180c0180c008c2", - "0xb6018021f402008b601802024022ecc5310c3030062ec062d8063080611802", - "0x20e002008b601819018a6008022d8060c80623802008b6018700187e00802", - "0x631cc601c9a008c7018b6018c701885008c7018b60180229c02318062d806", - "0xb60181d0182e008cb018b60180c0180c008ca018b6018c801847008c8018b6", - "0x2334cc324cb03006334062d8063280611802330062d80601c062100232406", - "0x22d8060fc0629802008b60186b0187e008022d8060087d008022d80600809", - "0x72680233c062d80633c062140233c062d806008a7008ce018b6018020e002", - "0x60b802348062d8060300603002344062d8063400611c02340062d80633cce", - "0xba3480c018d4018b6018d101846008d3018b60180701884008ba018b60181d", - "0x600838008022d8060240629802008b6018021f402008b60180202402350d3", - "0xb6018d63540726802358062d8063580621402358062d80600896008d5018b6", - "0x62d806048060b802364062d8060440603002360062d80635c0611c0235c06", - "0x2008dc36cda3640c018dc018b6018d801846008db018b60180701884008da", - "0x20481101dc30740c01cb601c060080701c02008b60180201802008b601802", - "0x60300217c3f01cb6018630183f00863018b6018090181d008022d80600809", - "0x607402008b601802024021ac0671032018b601c5f0185f0080c018b60180c", - "0x70019c5070062d8070cc0617c020cc1901cb60186f0183f0086f018b60183f", - "0x21ac021cc062d80607c060c80207c062d8060640618c02008b60180202402", - "0x202402009c6008b601c221cc070cc021cc062d8061cc0606402088062d806", - "0x62d8061f8061c0021f8062d8061fc06070021fc062d8060086f008022d806", - "0x6094061cc02094062d8060086f008022d806008090080271c060081f0087b", - "0xb60187d018700087d018b60187b018220087b018b6018270187000827018b6", - "0xb6018810187e008022d8060080900829019c8204062d8071f4061fc021f406", - "0x72d8072001d0300909c02200062d8062000609402200062d8060087b00802", - "0x83018b60180220402008b6018021f402008b601802024022102e01dc92082c", - "0x222c062d80601c06210020e0062d806208060b802214062d80620c060a402", - "0xe300893018b60181c0188500890018b601832018850088e018b60188501880", - "0x7220062e4020b0062d8060b0060300222035218092d80624c902388b0e01d", - "0x410188200842104072d8060f40639002008b60180202402110067283d018b6", - "0xb6018460188e00847118072d8061080622c02114062d80600838008022d806", - "0x72d8061309a01c930084c018b601845018900089a018b6018470188500802", - "0x22d80627406110022989d01cb6018490183d008022d806258061f80225849", - "0x22a4062d8061400611402140062d80629c061080229c062d8062980610402", - "0x4600854018b60183501884008aa018b6018860182e00852018b60182c0180c", - "0x62d8061100611c02008b601802024022ac542a852030062ac062d8062a406", - "0xbe018b6018350188400800018b6018860182e008bd018b60182c0180c008ae", - "0xb6018021f402008b601802024022fcbe000bd030062fc062d8062b80611802", - "0x2258022f0062d80600838008022d8060c80623802008b60181c0188e00802", - "0xc101847008c1018b6018c02f00726802300062d8063000621402300062d806", - "0x601c0621002310062d806210060b80230c062d8060b80603002308062d806", - "0x7d008022d80600809008bb314c430c0c018bb018b6018c201846008c5018b6", - "0x22d8060c80623802008b60181c0188e008022d8060a4061f802008b601802", - "0x2008b6018c70187e008c7318072d8063200613002320062d80601c0621002", - "0xca01c9a008cb018b6018cb01885008cb018b60180227402328062d80600838", - "0x1d0182e008cd018b60180c0180c008cc018b6018c901847008c9018b6018cb", - "0xcf338cd03006340062d806330061180233c062d8063180621002338062d806", - "0x60640629802008b6018700187e008022d8060087d008022d80600809008d0", - "0x85008d2018b60180229c02344062d80600838008022d8060c80623802008b6", - "0xc008d3018b6018ba01847008ba018b6018d23440726802348062d80634806", - "0x611802358062d80601c0621002354062d806074060b802350062d80603006", - "0x7e008022d8060087d008022d80600809008d7358d53500c018d7018b6018d3", - "0x62d806008a7008d8018b6018020e002008b60183f018a6008022d8061ac06", - "0x62d8063680611c02368062d806364d801c9a008d9018b6018d901885008d9", - "0xde018b60180701884008dd018b60181d0182e008dc018b60180c0180c008db", - "0xb6018021f402008b6018020240237cde374dc0300637c062d80636c0611802", - "0x621402384062d80600896008e0018b6018020e002008b601809018a600802", - "0x60300238c062d8063880611c02388062d806384e001c9a008e1018b6018e1", - "0xe301846008e5018b60180701884008e4018b6018120182e008b9018b601811", - "0x72d806030060fc02030062d8060180607402398e5390b903006398062d806", - "0x70740201ce5008022d8060080900811019cb074062d8070240617c0202407", - "0x120180c00863018b60183f018e6008022d806008090085f019cc0fc1201cb6", - "0x191ac3202406064062d80618c0639c021ac062d80601c06074020c8062d806", - "0x5f0180c0086f018b601833018e800833018b6018021bc02008b60180202402", - "0x1f1c01c0240607c062d8061bc0639c021c0062d80601c0607402070062d806", - "0x607402088062d80600806030021cc062d806044063a002008b60180202402", - "0x62d8060080618c021f87f088090187e018b601873018e70087f018b601807", - "0xb601809018f4008022d806008090080c019cd0240701cb601c06018e900806", - "0x2009ce0180207c02048062d806074063d802044062d80601c063d40207406", - "0x6030063d40217c062d8060fc063dc020fc062d8060086f008022d80600809", - "0xb6018630181d00863018b6018110184100812018b60185f018f600811018b6", - "0xb601832018f9008022d806008090086b019cf0c8062d807048063e00218c06", - "0x62d8060cc063ec020cc062d806064063e802064062d806064062140206406", - "0x600809008700700701870018b60186f018b80081c018b6018630181d0086f", - "0x21cc062d80607c063f00207c062d8060086f008022d8061ac061f802008b6", - "0xb601807018820087f088070187f018b601873018b800822018b6018630181d", - "0x11074072d806074063f402074062d8060740606402074062d8060086b00802", - "0x63025d017c3f01cb601c0c0481101802074ff00812024072d806024063f802", - "0x2e00833018b6018190190000819018b6018021bc02008b601802024021ac32", - "0x207c021c0062d8060cc0640402070062d80617c06210021bc062d8060fc06", - "0x6f018b6018630182e0081f018b60186b01902008022d806008090080274406", - "0x2088062d8061c00640c021c0062d80607c0640402070062d8060c80621002", - "0x2008b601802024021f8067487f018b601c73018c800873018b60182201904", - "0x20a4811f40974c270947b024b601c090741c1bc0c49c02008b60187f018ca", - "0x25018840082c018b60187b0182e00880018b60182701928008022d80600809", - "0x2008b60180202402009d40180207c020b8062d806200064a402208062d806", - "0x12900882018b601881018840082c018b60187d0182e00884018b6018290192a", - "0x60d40220c062d806214064ac02214062d8060b8062dc020b8062d80621006", - "0x64b002220062d8062180622002008b601802024020d40675486018b601c83", - "0x82018840088e018b60182c0182e0088b018b6018380192d00838018b601888", - "0x12f008022d80600809008932408e0240624c062d80622c064b802240062d806", - "0x64b802104062d8062080621002110062d8060b0060b8020f4062d8060d406", - "0x130008022d8060240612402008b60180202402108411100901842018b60183d", - "0x1c0188400846018b60186f0182e00845018b60187e0192f008022d80607406", - "0x7018b601802018fa0084911c4602406124062d806114064b80211c062d806", - "0x2074062d8060240624002030062d8060086f00809018b6018070180726802", - "0x62d8060080621002018062d8060086f008110740701811018b60180c01931", - "0xc0183f0080c018b6018060181d0080901c0701809018b6018060193100807", - "0x74c802008b60180202402044067581d018b601c090185f0080901c072d806", - "0x218c062d8060fc064cc02008b6018020240217c0675c3f048072d80707402", - "0x901819018b601863019340086b018b6018070181d00832018b6018120180c", - "0x21bc062d8060cc064d4020cc062d8060086f008022d80600809008191ac32", - "0x90181f018b60186f0193400870018b6018070181d0081c018b60185f0180c", - "0x22018b6018020180c00873018b60181101935008022d806008090081f1c01c", - "0x60087d0087e1fc22024061f8062d8061cc064d0021fc062d80601c0607402", - "0x202402044067601d030072d807024063a402024062d80601c0618c02008b6", - "0xb601812018f60083f018b60180c018f500812018b60181d018f4008022d806", - "0x63018f700863018b6018021bc02008b60180202402009d90180207c0217c06", - "0x60fc061040217c062d8060c8063d8020fc062d806044063d4020c8062d806", - "0x2024020cc0676819018b601c5f018f80086b018b60186b0181d0086b018b6", - "0xb60186f018fa0086f018b60186f018850086f018b601819018f9008022d806", - "0x7e018b6018060182e0087f018b6018020180c00870018b6018020e00207006", - "0x209c062d8060700621402094062d8061c006240021ec062d8061ac0607402", - "0x22040676c7d018b601c2201800008221cc1f024b6018270947b1f87f07536", - "0x1380082c018b6018800a4074dc022002901cb60187d018be008022d80600809", - "0x64e402210062d8061cc060b8020b8062d80607c0603002208062d8060b006", - "0x2214062d806204064e802008b6018020240220c840b80901883018b601882", - "0x901888018b6018850193900835018b6018730182e00886018b60181f0180c", - "0x13b00838018b6018021bc02008b6018330187e008022d80600809008880d486", - "0xc00890018b60188e019380088e018b60188b1ac074dc0222c062d8060e006", - "0x9302406110062d806240064e4020f4062d806018060b80224c062d80600806", - "0x22d80604406110020481101cb60181d0183d008022d80601c06208021103d", - "0x70fc0c024060081d4f0020fc062d8060fc06074020fc062d8060480610402", - "0x21bc062d8060c8064f402008b601802024020cc191ac097703218c5f024b6", - "0x1f0081f018b60186f0193e00870018b601863018840081c018b60185f0182e", - "0x62d8061ac060b8021cc062d8060cc064fc02008b60180202402009dd01802", - "0x7f018b60181f019400081f018b6018730193e00870018b601819018840081c", - "0x22d806008090087b019de1f8062d8070880630402088062d8061fc0650402", - "0x21f4062d80609c061040209c062d8060940618c02094062d8061f80630802", - "0x8400880018b60181c0182e00829018b6018810184500881018b60187d01842", - "0x22d80600809008820b08002406208062d8060a406118020b0062d8061c006", - "0x220c062d8061c00621002210062d806070060b8020b8062d8061ec0611c02", - "0xb6018090183d008022d80601c0620802214832100901885018b60182e01846", - "0x72d806030060f402048062d8060440610402008b60181d018440081107407", - "0x12018b6018120181d00863018b60185f01841008022d8060fc061100217c3f", - "0x6f0cc19025df1ac3201cb601c63048060080c5080218c062d80618c0607402", - "0x320182e00870018b60181c019000081c018b6018021bc02008b60180202402", - "0x1e00180207c02088062d8061c006404021cc062d8061ac062100207c062d806", - "0x840081f018b6018190182e0087f018b60186f01902008022d8060080900802", - "0x6410021ec062d8060880640c02088062d8061fc06404021cc062d8060cc06", - "0x632802008b6018020240209c0678425018b601c7e018c80087e018b60187b", - "0xb6018810194400881018b60187d019430087d018b6018021bc02008b601825", - "0x62d8060a406514020b0062d8061cc0621002200062d80607c060b8020a406", - "0x607c060b8020b8062d80609c0651802008b601802024022082c2000901882", - "0x2214832100901885018b60182e0194500883018b6018730188400884018b6", - "0x22d806008090081d019e20300901cb601c07018e900807018b60180601863", - "0x20fc062d806044063d802048062d806024063d402044062d806030063d002", - "0x62d80617c063dc0217c062d8060086f008022d806008090080278c060081f", - "0x32018b601812018410083f018b601863018f600812018b60181d018f500863", - "0x22d8060080900819019e41ac062d8070fc063e0020c8062d8060c80607402", - "0x21bc062d8060cc063e8020cc062d8060cc06214020cc062d8061ac063e402", - "0x70070072d8061cc1f01d4700873018b60186f018850081f018b6018020180c", - "0x7e018b60182201948008022d806008090087f019e5088062d8071c00633002", - "0x609c062d8061f80652402094062d8060c806074021ec062d8060700603002", - "0x62d80607006030021f4062d8061fc0652802008b6018020240209c251ec09", - "0x202402200292040901880018b60187d0194900829018b6018320181d00881", - "0x82018b60182c0194a0082c018b6018021bc02008b6018190187e008022d806", - "0x620c062d8062080652402210062d8060c806074020b8062d8060080603002", - "0x9798110740c024b601c09018020254b008022d80601c062080220c840b809", - "0x32018b60180c0182e00863018b60181101928008022d806008090085f0fc12", - "0x202402009e70180207c02064062d80618c064a4021ac062d8060740621002", - "0xb60183f0188400832018b6018120182e00833018b60185f0192a008022d806", - "0x62d806070064ac02070062d806064062dc02064062d8060cc064a4021ac06", - "0x62d8061c00622002008b6018020240207c067a070018b601c6f018350086f", - "0x7e018b6018320182e0087f018b6018220192d00822018b6018730192c00873", - "0x600809008251ec7e02406094062d8061fc064b8021ec062d8061ac0621002", - "0x62d8061ac06210021f4062d8060c8060b80209c062d80607c064bc02008b6", - "0x60182e008022d80602406208020a4811f40901829018b6018270192e00881", - "0x14d008700706f024b60187307c07530021cc062d80601c062100207c062d806", - "0x14f0087e018b6018220194e008022d806008090087f019e9088062d8071c006", - "0x62d80609406544020a4811f4270941d2d8061ec06540021ec062d8061f806", - "0xb60182c019540082e2082c024b6018800195300880018b6018250195200825", - "0xb6018830188500883018b60180c2100755402210062d806210062140221006", - "0x62d8061f4062f00209c062d80609c06558020a4062d8060a4062140220c06", - "0x82018b601882018cd0082e018b60182e018bc00881018b601881018bc0087d", - "0x7300886018b6018021bc02008b60180202402214067a8022d80720c0655c02", - "0xb60180202402009eb0180207c02220062d8060d4061c0020d4062d80621806", - "0x700088b018b6018380181c00838018b6018021bc02008b6018850195800802", - "0x61fc02238062d806238061c002238062d8062200608802220062d80622c06", - "0x8201954008022d806240061f802008b6018020240224c067b090018b601c8e", - "0x440195700844018b6018440188500844018b60181d0f407554020f4062d806", - "0xb6018420187300842018b6018021bc02008b60180202402104067b4022d807", - "0x656002008b60180202402009ee0180207c02118062d806114061c00211406", - "0xb6018490187000849018b6018470181c00847018b6018021bc02008b601841", - "0x62d807258061fc02258062d806258061c002258062d806118060880211806", - "0x9d018b60182e01959008022d806268061f802008b60180202402130067bc9a", - "0x1f0008b601ca601957008a6018b6018a601885008a6018b6018112740755402", - "0x70008a9018b6018500187300850018b6018021bc02008b6018020240229c06", - "0x22d80629c0656002008b60180202402009f10180207c02148062d8062a406", - "0x2200852018b6018540187000854018b6018aa0181c008aa018b6018021bc02", - "0xbd019f22b8062d8072ac061fc022ac062d8062ac061c0022ac062d80614806", - "0x195b00800018b6018270195a008022d8062b8061f802008b60180202402", - "0xb6018122f807554022f8062d8062f8062140230cc2304c02f0bf2f8122d806", - "0x62d8062fc062f00230c062d80630c0621402310062d806310062140231006", - "0xc1018b6018c101885008c0018b6018c00181d008bc018b6018bc0195c008bf", - "0x2008b60180202402314067cc022d8073100655c02308062d8063080621402", - "0x207c0231c062d806318061c002318062d8062ec061cc022ec062d8060086f", - "0x1c008c8018b6018021bc02008b6018c501958008022d80600809008027d006", - "0x61c00232c062d80631c060880231c062d806328061c002328062d80632006", - "0x61f802008b60180202402330067d4c9018b601ccb0187f008cb018b6018cb", - "0xce01885008ce018b60183f3340755402334062d8062fc0656402008b6018c9", - "0xb6018021bc02008b6018020240233c067d8022d8073380655c02338062d806", - "0x2009f70180207c02348062d806344061c002344062d806340061cc0234006", - "0xb6018ba0181c008ba018b6018021bc02008b6018cf01958008022d80600809", - "0x62d806350061c002350062d8063480608802348062d80634c061c00234c06", - "0x22d806354061f802008b60180202402358067e0d5018b601cd40187f008d4", - "0xd8018b6018d801885008d8018b60185f35c075540235c062d8062f0063bc02", - "0x73008da018b6018021bc02008b60180202402364067e4022d8073600655c02", - "0xb60180202402009fa0180207c02370062d80636c061c00236c062d80636806", - "0x70008de018b6018dd0181c008dd018b6018021bc02008b6018d90195800802", - "0x61fc0237c062d80637c061c00237c062d8063700608802370062d80637806", - "0xc00195d008022d806380061f802008b60180202402384067ece0018b601cdf", - "0x60095e008b9018b6018e301832008e3018b6018e201863008e2300072d806", - "0x600809008027f0022d807390b901c33008b9018b6018b901819008e4018b6", - "0xe7018b6018e601870008e6018b6018e50181c008e5018b6018021bc02008b6", - "0xb6018e801873008e8018b6018021bc02008b60180202402009fd0180207c02", - "0x62d8063d0061c0023d0062d80639c060880239c062d8063a4061c0023a406", - "0x22d8063d4061f802008b601802024023d8067f8f5018b601cf40187f008f4", - "0xf5008fb018b6018020180c008f8018b6018021ac023dc062d8063000618c02", - "0xfa3e4072d8063f0b83ec0957c023f0062d8063e006064022e0062d8063dc06", - "0xff018b6018fd01960008022d80600809008fe019ff3f4062d8073e8063c002", - "0x2404062d806400063e802400062d8064000621402400062d8063fc063e402", - "0x6800022d8074080655c02408062d8064080621402408062d806404c101d55", - "0x61c00249c062d806410061cc02410062d8060086f008022d8060080900903", - "0x2008b60190301958008022d8060080900802804060081f00928018b601927", - "0x6088024a0062d8064a8061c0024a8062d8064a406070024a4062d8060086f", - "0x24b0068092b018b601cb70187f008b7018b6018b701870008b7018b601928", - "0x12d018850092d018b6018633080755402008b60192b0187e008022d80600809", - "0xb6018021bc02008b601802024024b80680c022d8074b40655c024b4062d806", - "0x200a040180207c024c4062d8064c0061c0024c0062d8064bc061cc024bc06", - "0xb6019320181c00932018b6018021bc02008b60192e01958008022d80600809", - "0x62d8064d0061c0024d0062d8064c406088024c4062d8064cc061c0024cc06", - "0x22d8064d4061f802008b601802024024d80681535018b601d340187f00934", - "0x206008b601d370195700937018b6019370188500937018b60183230c0755402", - "0x700093a018b6019390187300939018b6018021bc02008b601802024024e006", - "0x22d8064e00656002008b6018020240200a070180207c024ec062d8064e806", - "0x220093b018b60193d018700093d018b60193c0181c0093c018b6018021bc02", - "0x14001a084fc062d8074f8061fc024f8062d8064f8061c0024f8062d8064ec06", - "0x14101d5500941018b60187d01959008022d8064fc061f802008b60180202402", - "0x90094301a09008b601d420195700942018b6019420188500942018b60186b", - "0xb6019450187000945018b6019440187300944018b6018021bc02008b601802", - "0x60086f008022d80650c0656002008b6018020240200a0a0180207c0251806", - "0xb6019460182200946018b6019480187000948018b6019470181c00947018b6", - "0x6008090094b01a0b528062d807524061fc02524062d806524061c00252406", - "0x62d8060654c01d550094c018b60188101959008022d806528061f802008b6", - "0x22d806008090094e01a0c008b601d4d019570094d018b60194d018850094d", - "0x1f00951018b6019500187000950018b60194f018730094f018b6018021bc02", - "0x2548062d8060086f008022d8065380656002008b6018020240200a0d01802", - "0x7000954018b6019510182200951018b6019530187000953018b6019520181c", - "0x7e008022d806008090095601a0e554062d807550061fc02550062d80655006", - "0x655c0255c062d80655c062140255c062d8060cc2901d55008022d80655406", - "0x6564061cc02564062d8060086f008022d806008090095801a0f008b601d57", - "0x158008022d8060080900802840060081f0095b018b60195a018700095a018b6", - "0x63bc061c0023bc062d8065700607002570062d8060086f008022d80656006", - "0xb601d5d0187f0095d018b60195d018700095d018b60195b018220095b018b6", - "0xf0018b6018021bc02008b60195e0187e008022d806008090095f01a1157806", - "0x2588062d8063e40603002584062d8065800651002580062d8063c00650c02", - "0xc01965018b6019610194500964018b60181c0188400963018b60186f0182e", - "0x2598062d80600838008022d80657c061f802008b601802024025956458d62", - "0x14600968018b601967598072680259c062d80659c062140259c062d80600961", - "0x6210025ac062d8061bc060b8025a8062d8063e406030025a4062d8065a006", - "0x22d806008090096d5b16b5a80c0196d018b601969019450096c018b60181c", - "0x600838008022d8060a40623802008b6018330188e008022d806558061f802", - "0xb60196f5b807268025bc062d8065bc06214025bc062d806009610096e018b6", - "0x62d8061bc060b8025c8062d8063e406030025c4062d8065c006518025c006", - "0x9009755d1735c80c01975018b6019710194500974018b60181c0188400973", - "0x22d8060a40623802008b6018330188e008022d80652c061f802008b601802", - "0x60096100976018b6018020e002008b601881018c3008022d8060640623802", - "0x65e006518025e0062d8065dd7601c9a00977018b6019770188500977018b6", - "0xb60181c018840097b018b60186f0182e0097a018b6018f90180c00979018b6", - "0x61f802008b601802024025f57c5ed7a030065f4062d8065e406514025f006", - "0x22d8060640623802008b6018290188e008022d8060cc0623802008b601940", - "0x600838008022d8061f40630c02008b60186b0188e008022d8062040630c02", - "0xb60197f5f807268025fc062d8065fc06214025fc062d806009610097e018b6", - "0x62d8061bc060b802604062d8063e40603002600062d8063cc06518023cc06", - "0x90098460d826040c01984018b6019800194500983018b60181c0188400982", - "0x22d8060a40623802008b6018330188e008022d8064d8061f802008b601802", - "0x7d018c3008022d8061ac0623802008b601881018c3008022d8060640623802", - "0x2614062d80600838008022d80630c0623802008b6018320188e008022d806", - "0x14600986018b6018f261407268023c8062d8063c806214023c8062d80600961", - "0x621002850062d8061bc060b80284c062d8063e40603002848062d80661806", - "0x22d8060080900a168561484c0c01a16018b601a120194500a15018b60181c", - "0x190188e008022d8060a40623802008b6018330188e008022d8064b0061f802", - "0x2008b60187d018c3008022d8061ac0623802008b601881018c3008022d806", - "0x63080623802008b6018630188e008022d80630c0623802008b6018320188e", - "0x2860062d8068600621402860062d8060096100a17018b6018020e002008b6", - "0x286c062d8063e40603002868062d8068640651802864062d8068621701c9a", - "0xc01a1e018b601a1a0194500a1d018b60181c0188400a1c018b60186f0182e", - "0x2008b6018290188e008022d8060cc0623802008b6018020240287a1d8721b", - "0x61f40630c02008b60186b0188e008022d8062040630c02008b6018190188e", - "0x8e008022d80618c0623802008b6018c30188e008022d8060c80623802008b6", - "0x63e406030023c4062d8063f80651802008b6018c10188e008022d80630806", - "0xb6018f10194500a21018b60181c0188400a20018b60186f0182e00a1f018b6", - "0xc10188e008022d8063d8061f802008b6018020240288a218821f0300688806", - "0x2008b6018190188e008022d8060a40623802008b6018330188e008022d806", - "0x60c80623802008b60187d018c3008022d8061ac0623802008b601881018c3", - "0xa6008022d8063080623802008b6018630188e008022d80630c0623802008b6", - "0xb601a240188500a24018b6018025840288c062d80600838008022d80630006", - "0xb6018020180c00a26018b601a250194600a25018b601a2488c072680289006", - "0x62d80689806514028a4062d80607006210028a0062d8061bc060b80289c06", - "0x63040623802008b6018e10187e008022d8060080900a2a8a62889c0c01a2a", - "0xc3008022d8060640623802008b6018290188e008022d8060cc0623802008b6", - "0xb6018320188e008022d8061f40630c02008b60186b0188e008022d80620406", - "0x629802008b6018c20188e008022d80618c0623802008b6018c30188e00802", - "0x62d8068b006214028b0062d8060096100a2b018b6018020e002008b6018c0", - "0x62d80600806030028b8062d8068b406518028b4062d8068b22b01c9a00a2c", - "0x231018b601a2e01945008ee018b60181c0188400a30018b60186f0182e00a2f", - "0xb6018c10188e008022d806358061f802008b601802024028c4ee8c22f03006", - "0x630c02008b6018190188e008022d8060a40623802008b6018330188e00802", - "0x22d8060c80623802008b60187d018c3008022d8061ac0623802008b601881", - "0xc0018a6008022d8063080623802008b6018630188e008022d80630c0623802", - "0x28c8062d80600838008022d8062f00658802008b60185f0188e008022d806", - "0x14600a34018b601a338c807268028cc062d8068cc06214028cc062d80600961", - "0x6210028dc062d8061bc060b8028d8062d80600806030028d4062d8068d006", - "0x22d8060080900a398e2378d80c01a39018b601a350194500a38018b60181c", - "0x290188e008022d8060cc0623802008b6018c10188e008022d806330061f802", - "0x2008b60186b0188e008022d8062040630c02008b6018190188e008022d806", - "0x618c0623802008b6018c30188e008022d8060c80623802008b60187d018c3", - "0x162008022d80617c0623802008b6018c0018a6008022d8063080623802008b6", - "0x62d80600838008022d8062fc0630c02008b60183f0188e008022d8062f006", - "0x23b018b601a3a15c07268028e8062d8068e806214028e8062d8060096100857", - "0x28f8062d8061bc060b8028f4062d80600806030028f0062d8068ec0651802", - "0x60080900a3f3b63e8f40c01a3f018b601a3c01945008ed018b60181c01884", - "0x8e008022d8060cc0623802008b6018120188e008022d8062f4061f802008b6", - "0xb60186b0188e008022d8062040630c02008b6018190188e008022d8060a406", - "0x623802008b60183f0188e008022d8060c80623802008b60187d018c300802", - "0x240018b6018020e002008b60182701963008022d80617c0623802008b601863", - "0x2908062d8069064001c9a00a41018b601a410188500a41018b60180258402", - "0x8400a45018b60186f0182e00a44018b6018020180c00a43018b601a4201946", - "0xb6018020240291e46916440300691c062d80690c0651402918062d80607006", - "0x623802008b6018330188e008022d8060480623802008b60184c0187e00802", - "0x22d8061ac0623802008b601881018c3008022d8060640623802008b601829", - "0x630188e008022d8060fc0623802008b6018320188e008022d8061f40630c02", - "0x2008b6018110188e008022d80609c0658c02008b60185f0188e008022d806", - "0x69200621402920062d80600961008ec018b6018020e002008b60182e018c3", - "0x60080603002928062d8069240651802924062d806920ec01c9a00a48018b6", - "0xb601a4a0194500a4d018b60181c0188400a4c018b60186f0182e00a4b018b6", - "0x120188e008022d80624c061f802008b6018020240293a4d9324b0300693806", - "0x2008b6018190188e008022d8060a40623802008b6018330188e008022d806", - "0x60c80623802008b60187d018c3008022d8061ac0623802008b601881018c3", - "0x163008022d80617c0623802008b6018630188e008022d8060fc0623802008b6", - "0xb60181d0188e008022d8060b80630c02008b6018110188e008022d80609c06", - "0x621402940062d8060096100a4f018b6018020e002008b601882018cf00802", - "0x603002948062d8069440651802944062d8069424f01c9a00a50018b601a50", - "0x2520194500a55018b60181c0188400a54018b60186f0182e00a53018b601802", - "0x8e008022d8060480623802008b6018020240295a559525303006958062d806", - "0xb6018110188e008022d8060640623802008b60181d0188e008022d8060cc06", - "0x623802008b6018320188e008022d8060300623802008b60186b0188e00802", - "0x62d8061fc0651802008b60185f0188e008022d80618c0623802008b60183f", - "0x259018b60181c0188400a58018b60186f0182e00a57018b6018020180c008eb", - "0x60fc02030062d806018060740296a599625703006968062d8063ac0651402", - "0x164008022d806008090081101a5b074062d8070240617c020240701cb60180c", - "0x63018b60183f01965008022d806008090085f01a5c0fc1201cb601c1d00807", - "0x6064062d80618c06598021ac062d80601c06074020c8062d8060480603002", - "0x6f018b6018330196700833018b6018021bc02008b601802024020646b0c809", - "0x607c062d8061bc06598021c0062d80601c0607402070062d80617c0603002", - "0x62d80600806030021cc062d8060440659c02008b6018020240207c7007009", - "0x6208021f87f088090187e018b601873019660087f018b6018070181d00822", - "0x60480610402008b6018110184400812044072d806074060f402008b601807", - "0x3218c5f024b601c3f0300901802075680083f018b60183f0181d0083f018b6", - "0xb60185f0182e0086f018b6018320193d008022d80600809008330646b0265d", - "0x200a5e0180207c0207c062d8061bc064f8021c0062d80618c062100207006", - "0x19018840081c018b60186b0182e00873018b6018330193f008022d80600809", - "0x61fc06504021fc062d80607c065000207c062d8061cc064f8021c0062d806", - "0x61f80630802008b601802024021ec0697c7e018b601c22018c100822018b6", - "0xb60187d018420087d018b6018270184100827018b6018250186300825018b6", - "0x62d8061c00621002200062d806070060b8020a4062d806204061140220406", - "0x61ec0611c02008b601802024022082c2000901882018b601829018460082c", - "0xb60182e0184600883018b6018700188400884018b60181c0182e0082e018b6", - "0x9019690083f018b6018020e002008b601807018820088520c840240621406", - "0x622c020c8062d80617c3f01c9a0085f018b6018630196a00863024072d806", - "0x6214020cc062d8060096b0086b018b6018190c807268020641d01cb60181d", - "0x110188b0081c018b6018025b0021bc062d8060cc6b01c9a00833018b601833", - "0x7268021c0062d8061c006214021c0062d8060701f01d6d0081f044072d806", - "0x75b4021f81201cb6018120188b00822018b6018025b0021cc062d8061c06f", - "0x3d0087b018b60187f1cc07268021fc062d8061fc06214021fc062d8060887e", - "0x65a4021f4062d80609c0610402008b6018250184400827094072d8061ec06", - "0x92d8071f40c204060081d5a0021f4062d8061f406074022040901cb601809", - "0x60b80220c062d8060b0064f402008b601802024022102e208099802c20029", - "0x60081f00835018b6018830193e00886018b6018800188400885018b601829", - "0x2214062d806208060b802220062d806210064fc02008b6018020240200a61", - "0x1410088b018b6018350194000835018b6018880193e00886018b60182e01884", - "0x16e008022d806008090089001a62238062d8070e006304020e0062d80622c06", - "0x3d01c9a0083d018b60181124c072680224c062d80600838008022d80623806", - "0x4201841008022d80610406110021084101cb6018440183d00844018b601812", - "0x47118092d8071141d024862141d5a002114062d8061140607402114062d806", - "0x6118060b802274062d806124064f402008b601802024021309a2580998c49", - "0x2990060081f00850018b60189d0193e008a7018b60184701884008a6018b6", - "0x621002298062d806258060b8022a4062d806130064fc02008b60180202402", - "0xaa01941008aa018b6018500194000850018b6018a90193e008a7018b60189a", - "0x54018c2008022d80600809008ab01a65150062d8071480630402148062d806", - "0x6298060b802000062d8062f406114022f4062d8062b806108022b8062d806", - "0x22f0bf2f809018bc018b60180001846008bf018b6018a701884008be018b6", - "0xa701884008c1018b6018a60182e008c0018b6018ab01847008022d80600809", - "0x8e008022d80600809008c3308c10240630c062d8063000611802308062d806", - "0xb6018110188e008022d8060480623802008b601809018d6008022d80607406", - "0xbb018b60188601884008c5018b6018850182e008c4018b6018900184700802", - "0x6008095bc02008b60180701882008c62ecc502406318062d8063100611802", - "0x217c062d8060086f008022d806008090083f04811026660740c01cb601c09", - "0x1010086b018b60181d0188400832018b60180c0182e00863018b60185f01900", - "0x62d8060fc0640802008b6018020240200a670180207c02064062d80618c06", - "0x19018b601833019010086b018b6018120188400832018b6018110182e00833", - "0x2681c0062d8071bc06320021bc062d8060700641002070062d8060640640c02", - "0x650c021cc062d8060086f008022d8061c00632802008b6018020240207c06", - "0x6b018840087e018b6018320182e0087f018b6018220194400822018b601873", - "0x146008022d80600809008251ec7e02406094062d8061fc06514021ec062d806", - "0x651402204062d8061ac06210021f4062d8060c8060b80209c062d80607c06", - "0x1d01cb60180c0183d008022d80601c06208020a4811f40901829018b601827", - "0x2048062d8060480607402048062d8060440610402008b60181d0184400811", - "0x21bc02008b601802024021ac3218c099a45f0fc072d807048090180203170", - "0x617c06210021bc062d8060fc060b8020cc062d8060640640002064062d806", - "0x102008022d80600809008029a8060081f00870018b601833019010081c018b6", - "0x640402070062d8060c806210021bc062d80618c060b80207c062d8061ac06", - "0x73018c800873018b6018220190400822018b6018700190300870018b60181f", - "0xb6018021bc02008b60187f018ca008022d806008090087e01a6b1fc062d807", - "0x62d8061bc060b80209c062d8060940651002094062d8061ec0650c021ec06", - "0x2024020a4811f40901829018b6018270194500881018b60181c018840087d", - "0xb60181c018840082c018b60186f0182e00880018b60187e01946008022d806", - "0x901882008022d8060087d0082e2082c024060b8062d806200065140220806", - "0x60300636c0218c062d80600806030020740c01cb60180601971008022d806", - "0x6b0c8630317300819018b60181d019720086b018b6018070182e00832018b6", - "0x6030020cc062d8060086f008022d80617c065d00217c3f04811030b601819", - "0x330193100870018b60183f0182e0081c018b601812018db0086f018b601811", - "0x72d807018063a402018062d8060080618c0207c700706f0300607c062d806", - "0xb601807018f50081d018b601809018f4008022d806008090080c01a6c02407", - "0x21bc02008b6018020240200a6d0180207c02048062d806074063d80204406", - "0x617c063d802044062d806030063d40217c062d8060fc063dc020fc062d806", - "0xb601c12018f800863018b6018630181d00863018b6018110184100812018b6", - "0xb6018190188500819018b601832018f9008022d806008090086b01a6e0c806", - "0x62d8061bc3301d550086f018b6018025d4020cc062d806064063e80206406", - "0x22d806008090087001a6f008b601c1c019570081c018b60181c018850081c", - "0x1f00822018b6018730187000873018b60181f018730081f018b6018021bc02", - "0x21fc062d8060086f008022d8061c00656002008b6018020240200a7001802", - "0x1760087b018b6018220182200822018b60187e018700087e018b60187f0181c", - "0x2701c061f4062d806094065dc0209c062d80618c0607402094062d8061ec06", - "0x810197800881018b6018021bc02008b60186b0187e008022d806008090087d", - "0x20b08001c060b0062d8060a4065dc02200062d80618c06074020a4062d806", - "0x610402008b601812018440083f048072d806074060f402008b60180701882", - "0xc2d8070445f0300901802045790085f018b60185f0181d0085f018b60183f", - "0x21c0062d8060646b01d7a008022d806008090081c1bc33026710646b0c863", - "0x17c00822018b6018320188400873018b6018630182e0081f018b6018700197b", - "0x62d806070065f402008b6018020240200a720180207c021fc062d80607c06", - "0x7f018b60187e0197c00822018b60186f0188400873018b6018330182e0087e", - "0x27309c062d8071ec063cc021ec062d806094065fc02094062d8061fc065f802", - "0x650c02204062d8060086f008022d80609c0660002008b601802024021f406", - "0x22018840082c018b6018730182e00880018b6018290194400829018b601881", - "0x146008022d806008090082e2082c024060b8062d8062000651402208062d806", - "0x651402214062d806088062100220c062d8061cc060b802210062d8061f406", - "0x2008b6018060188e008022d80600806208022188520c0901886018b601884", - "0x60301101d6d00811024072d8060240622c020240601809018b60180701885", - "0xb6018060188400832018b6018020182e00812018b601807019810081d018b6", - "0x330646b0c80c60c020cc062d8060740621402064062d80604806608021ac06", - "0x185008022d806008090081c01a741bc062d80718c066100218c5f0fc092d806", - "0x73c8021cc062d8061c0060a402008b60181f0187e0081f1c0072d8061bc06", - "0x6210021f8062d8060fc060b8021fc062d8060880661802088062d80602473", - "0x2008b601802024020947b1f80901825018b60187f01a120087b018b60185f", - "0x6210021f4062d8060fc060b80209c062d8060700684c02008b6018090188e", - "0x62d80700806850020a4811f40901829018b60182701a1200881018b60185f", - "0x62d8060240651002024062d8060180650c02008b6018020240201c069d406", - "0x62d80601c0651802008b60180202402074060181d018b60180c019450080c", - "0x90080701a76018062d80700806854020480601812018b6018110194500811", - "0x6030064b802030062d806024064b402024062d806018064b002008b601802", - "0x6044064b802044062d80601c064bc02008b60180202402074060181d018b6", - "0xb60181d018250081d018b6018021ec02008b6018021f4020480601812018b6", - "0x8b008022d806008090085f0fc079dc12044072d807074060080909c0207406", - "0x3201a78008b601c630195700811018b6018110180c00863030072d80603006", - "0x701d370086b018b60180901a16008022d8060300623802008b60180202402", - "0x120182e0086f018b6018110180c00833018b6018190193800819018b60186b", - "0x158008022d80600809008700706f024061c0062d8060cc064e402070062d806", - "0x617c021cc1f01cb6018220183f00822018b6018070181d008022d8060c806", - "0x16c0087b018b60187f0240726802008b601802024021f8069e47f018b601c73", - "0x60b802200062d806044060300209c062d8060940c01d5500825018b601802", - "0x27018850082e018b60187b0189000882018b60181f0181d0082c018b601812", - "0x62d8070a406000020a4811f4092d8062102e2082c2001d4d802210062d806", - "0x60d48601d3700835218072d80620c062f802008b60180202402214069e883", - "0xb6018810182e0088b018b60187d0180c00838018b6018880193800888018b6", - "0x850193a008022d80600809008902388b02406240062d8060e0064e40223806", - "0x624c064e402110062d806204060b8020f4062d8061f4060300224c062d806", - "0x901844008022d8060300623802008b60180202402104440f40901841018b6", - "0x6114064e002114062d8061081f01d3700842018b60187e0193b008022d806", - "0xb6018460193900849018b6018120182e00847018b6018110180c00846018b6", - "0x60240611002008b60180c0188e008022d8060080900896124470240625806", - "0x850084c018b60180225802268062d80600838008022d80601c0629802008b6", - "0xc008a6018b60189d0193a0089d018b60184c2680726802130062d80613006", - "0xa7024062a4062d806298064e402140062d80617c060b80229c062d8060fc06", - "0xb60180601842008022d806008090080701a7b018062d8070080685c022a450", - "0x6008090081d01806074062d8060300611802030062d806024061140202406", - "0x201e180081201806048062d8060440611802044062d80601c0611c02008b6", - "0xc0081d018b60180901948008022d806008090080c01a7c0240701cb601c06", - "0xb6018020240200a7d0180207c02048062d8060740652402044062d80601c06", - "0x2044062d806030060300217c062d8060fc06528020fc062d8060086f00802", - "0x701832018b60181201a1a00863018b60181101a1900812018b60185f01949", - "0x2008b6018020240204811074099f80c02407024b601c060080786c020c863", - "0x21d00863018b601809018840085f018b6018070182e0083f018b60180c01a1c", - "0x62d8060480687802008b6018020240200a7f0180207c020c8062d8060fc06", - "0x32018b60186b01a1d00863018b601811018840085f018b60181d0182e0086b", - "0x2801bc062d8070640653402064062d8060cc0687c020cc062d8060c8063c402", - "0x207c062d8061c006880021c0062d8061bc0653802008b6018020240207006", - "0x2220087f018b6018630188400822018b60185f0182e00873018b60181f01a21", - "0x7b018b60181c01a23008022d806008090087e1fc22024061f8062d8061cc06", - "0x61f4062d8061ec068880209c062d80618c0621002094062d80617c060b802", - "0x2008b6018020240207406a040c024072d80701c0600809890021f42709409", - "0x2270083f018b6018090180c00812018b60181101a2600811018b60180c01a25", - "0x22800863018b6018020e002008b6018020240217c3f01c0617c062d80604806", - "0x68a4021ac062d8060c86301c9a00832018b6018320188500832018b601802", - "0x6f0cc070186f018b60181901a2700833018b60181d0180c00819018b60186b", - "0x60300603002048110740c030b601809018070080c8a802008b6018021f402", - "0xb60181201a2b00863018b60181d0182e0085f018b601811018db0083f018b6", - "0x22d806008090080701a82018062d807008068b0020c86317c3f030060c806", - "0x6074062d806030068bc02030062d806024068b802024062d806018068b402", - "0x6048062d806044068bc02044062d80601c068c002008b6018020240207406", - "0x11018b6018028c802008b60181d01a310081d030072d80601c063b80204806", - "0x830083f018b60183f018190083f018b6018021ac02048062d806044068cc02", - "0x20646b0c809a0c6317c072d807024120fc060081d3fc02048062d80604806", - "0x617c060b8021bc062d8060cc06400020cc062d8060086f008022d80600809", - "0x2a10060081f0081f018b60186f0190100870018b601863018840081c018b6", - "0x621002070062d8060c8060b8021cc062d8060640640802008b60180202402", - "0x7f019040087f018b60181f019030081f018b6018730190100870018b60186b", - "0x7e01a34008022d806008090087b01a851f8062d8070880632002088062d806", - "0x1c0182e0087d018b60182701a3600827018b601825030078d402094062d806", - "0x800a48102406200062d8061f4068dc020a4062d8061c00621002204062d806", - "0x1c0182e0082c018b60187b01a38008022d806030068c402008b60180202402", - "0x840b88202406210062d8060b0068dc020b8062d8061c00621002208062d806", - "0x9018b60180601a20008022d806008090080701a86018062d807008068e402", - "0x22d806008090081d01806074062d8060300688802030062d8060240688402", - "0x1d1bc060080c1041201806048062d8060440688802044062d80601c0688c02", - "0x13702407018021cc6f018020301d1bc060080c0080901c06008731bc060080c", - "0x731bc060080c0746f018020328702407018021cc6f018020301d1bc060080c", - "0x1d1bc060080ca240901c06008731bc060080c0746f01802032880240701802", - "0x28b02407018021cc6f018020301d1bc060080ca280901c06008731bc060080c", - "0x731bc060080c0746f018020328c02407018021cc6f018020301d1bc060080c", - "0x20328e0300901c06008731bc06214020741d1bc06214020768d0240701802", - "0x6008731bc060080c0746f018020328f02407018021cc6f018020301d1bc06", - "0x3f074020241d00807a440901c06008731bc060080c0746f018020329002407", - "0xc02407018021c06f0180901c110cc6f0181da4c0217c1d01c1d01a9201802", - "0x21ec1d008090740201e96008121bc071bc06a540600812024070240701e94", - "0x731bc060240901c220cc6f01811a6007018021f406008090740600809a5c06", - "0x201e9a0300901c06008801bc0602409024331bc06076990740c0240701802", - "0x60086fa700901c06008701bc060242c0cc6f0180ca6c0600882074020241d", - "0x110740c02407018022006f018020300701c0701c0701c0701c0701c070cc6f", - "0x70b8331bc060469e0180220c1d008090740201e9d0cc191ac3218c5f0fc12", - "0x731bc060240701c0701c2e0cc6f0183fa7c1d0300901c06008731bc0602409", - "0x6076a102407018022006f018090b8331bc06032a0048110740c0240701802", - "0x2048062140203033018850080ca880c02407018022006f01809024070cc6f", - "0x6008801bc0602432024070b8331bc0604aa4008860740707406a8c0901c06", - "0x6f0180901c070cc6f0181da98070180201c0601c070cc09a94110740c02407", - "0x70241d01802076a9008700189001aa8008800188e01aa70300901c0600888", - "0x2ac018022080201c0700807aac021cc0624c06aa80c02407018021f40600809", - "0x621402032ae01c060089d0080718c0c00809ab406008961bc060246f01807", - "0x6f0180901c191bc06032b0008aa018a901aaf024070180229c0621402030a6", - "0xac802258062b806ac40901c06008ab" + "0x6028070180e00807028020681901818008070281700806028020581201812", + "0xf080060380201c0a07c0607806074020240f0240607006038020240a06c02", + "0x1201825018260080903c070180609025018060900208c1f018220182100809", + "0x2407c060a8060a4020240f0a00608006038020240a048060240609c020240f", + "0x2f0182e0080903c020b41f0182c0182b0080903c120180e008070280901806", + "0x60d4060d0020240f00833048060c4060c8020240f0c406018240083004806", + "0x3a0080903c07018060e41f01838018370080903c07018360180e0080902812", + "0x60f8020240f0240601c060f4020240f02406048060f0020240f048060ec06", + "0x701843008420280210440018060e4250182f0182f0183f0080c0280901820", + "0x61200611c06118020440a114060183901c0601c0601c06080061100609406", + "0x61341f0184c0184b0080903c4a0180e0080702849018060e4070182501825", + "0xa01c060185101c060185007c0613c06138020240f0ec060380201c0a01c06", + "0x540080903c530180e008070280901853018520080903c20018250180e00809", + "0x6160020240f07c0615c06158020240f0480606406038020240a07c0615406", + "0x901860080060185f008060185f0085e0085d0085c0085b16802164090184a", + "0x66018061940701806190200180618c62018061843602406180420180618419", + "0x601c6c048060186b0086a198060185f198060186900807018681980601867", + "0x120180619c3501806184021b80601c35018071b0021b4350180617c0201c35", + "0x6018670d806018650d8060186b064060186b00872008711c0060185f0086f", + "0x7302406180070180617c110180617c360180617c730180617c060180617c36", + "0x60024060185f01c060186701c060186501c060187507806018631d00601861", + "0x201c76018071b022018061ac20018061ac090180619c09018061941e02406", + "0x60186b01c06018791e007018770440601867018071d80601c6c1d8060185f", + "0x25018061f07b01c061dc200180619c7a01c061dc1c024061801f018061ac1c", + "0x90186001c060187f094060187f1f8060186107c09018600087d01c060187c", + "0x76018061842202406180250180617c28018061842a0180618c800180618474", + "0x60024060187f024060187c2080601867204060186709406018670880601863", + "0x617c85018061842502406180840180619c2c0180619c83018061847602406", + "0x6018611f809018600c4060187c20409018600bc060186720809018600bc06", + "0x2a02406180870180619c310180619c2802406180310180617c31018061fc86", + "0x60224060186120c09018600b00901860220060185f21009018602000901860", + "0x222c380180618c8a0180618431024061808502406180350180619c2f02406", + "0x72340601c6c01c060188c018071080601c6c108060185f008071080601c6c", + "0x61a407018062388d018061840601c8d018071b08d0180617c0c0180617c02", + "0x60188f198060188f018071880601c6c188060185f008071880601c6c01c06", + "0x618091018061a40601c91018071b0910180617c0201c91018071b00224011", + "0x6024c06018690180724c0601c6c24c060185f0080724c0601c6c0089221c09", + "0x617c0601c74018071b0740180617c0201c74018071b01e018061ac8602406", + "0x6b2200901860018071f80601c6c1f8060185f008071f80601c6c0089404806", + "0x601c28018071b00601c80018071b0800180617c0201c80018071b02a01806", + "0x9018602580601869018072580601c6c258060185f008072580601c6c00895", + "0x61800601c83018071b0830180617c0201c83018071b02c018061ac0225c89", + "0x61228090186000898018072140601c6c214060185f008072140601c6c0e009", + "0x618c4001806238470180617c490180618c49018062384c0180618c9901806", + "0x601863114060188e0089e27406018670089c120060185f0089b0089a10006", + "0x618ca0018061843b024061800601c061a0200180623c0227c440180617c45", + "0x60185f008072180601c6c008a212006018671100601867284070187713c06", + "0x61dc0701c061dc070180623c02290310180623c0228c0601c86018071b086", + "0x6723409018602a4060185f01c06018a8008a7008a60880601867008a501807", + "0x22ac0601c89018071b0890180617c0201c89018071b00201c061dcaa01806", + "0x602b00601869018072b00601c6c2b0060185f008072b00601c6c14c060186b", + "0x61849302406180190180617c360180618c550180619cad018061849102406", + "0x72280601c6c228060185f008072280601c6c0e0060186b15c06018632b806", + "0x2018061a4022bc96018061840201c28018071b09301806184910180618406", + "0x601869018072c40601c6c2c4060185f008072c40601c6c008b02140601869", + "0x601c99018071b0990180617c0201c99018071b04c018061ac9602406180b1", + "0x601c6c2cc0701877280060185f008072800601c6c13c060186b01c06018b2", + "0x201cad018071b055018061acac01806184aa0180617c07018062d00601ca0", + "0x63008b72d807018b506406018670640601865018072b40601c6c2b4060185f", + "0x61840601cae018071b0ae0180617c0201cae018071b057018061ac2c01806", + "0x20030072e4070180201c07008022e40600806008022e40600802008b82c406", + "0x62e40602406080020d4062e4060300603002008b901802024020481101cba", + "0x900836018bb064062e407198060480219862108092e4061c03501c1100870", + "0x1e018620081e1cc072e4060700610802070062e4061880608002008b901802", + "0x220183500822018b90187301866008022e4060080900874018bc07c062e407", + "0xb9018020d802008b9018250181900882094072e4061d8061c0021d8062e406", + "0x62e406208061cc02008b90187e01819008281f8072e406204061c00220406", + "0x22e4072002a01c1c0082a018b90182a0181e00880018b901828018730082a", + "0x220082c018b9018840187400884018b90180207c02008b9018020240200884", + "0x2f018b90180207c02008b9018020240200885018021d80220c062e4060b006", + "0x20c4062e40620c062080220c062e4062140608802214062e4060bc0609402", + "0x2008b90180202402218062f487018b901c310188100831018b90183101822", + "0x420248000888018b9018880182a00888018b9018020a002008b9018870187e", + "0x2c008022e40600884008022e406008090083b228072f838224072e40722020", + "0x6214022589301cb9018910182f00891018b90188d018830088d018b901802", + "0x62580621802120062e40601c0621c02114062e4060e0060c402008b901893", + "0x4912045080380084c018b90181f018890084a018b9018190188800849018b9", + "0xbf264062e4071100622802224062e406224060300211047100092e4061304a", + "0x91008a0018b9018022340213c062e406264060ec02008b9018020240227406", + "0x625802154062e4062a80622402008b9018a901893008aa2a4072e40613c06", + "0x611c02008b9018ac0187e008ac14c072e4062b45501c40008ad018b9018a0", + "0xb101848008b1018b9018ae01845008022e40615c06110022b85701cb901853", + "0x6100060c402304062e4062240603002000062e4063000612402300062e406", + "0xc430cc23040c018c4018b9018000184a008c3018b90184701887008c2018b9", + "0x60c4022fc062e4062240603002314062e4062740613002008b90180202402", + "0xc62fc0c018c8018b9018c50184a008c7018b90184701887008c6018b901840", + "0x1901899008022e40607c0624c02008b90180221002008b90180202402320c7", + "0xca018b9018ca01889008ca018b90180227402324062e4060088d008022e406", + "0xcc018b9018cb2f8072a4022f8062e406008a0008cb018b9018ca3240713c02", + "0x233c062e4060ec060c402338062e4062280603002334062e4063300613002", + "0x600809008d1340cf3380c018d1018b9018cd0184a008d0018b90180701887", + "0x626402008b90181f01893008022e406218061f802008b90180221002008b9", + "0xd40187e008d434c072e406348062a802348062e40601c0621c02008b901819", + "0xd6018b9018d601889008d6018b90180214c02354062e4060088d008022e406", + "0xd9018b9018d7360072a402360062e406008a0008d7018b9018d63540713c02", + "0x236c062e406080060c4022f4062e4061080603002368062e4063640613002", + "0x600809008dd370db2f40c018dd018b9018da0184a008dc018b9018d301887", + "0x626402008b901873018ac008022e4061d0061f802008b90180221002008b9", + "0x62e40637c062240237c062e40600855008de018b90180223402008b901819", + "0x62e406380e101ca9008e1018b90180228002380062e40637cde01c4f008df", + "0xe5018b90182001831008e4018b9018420180c008e3018b9018e20184c008e2", + "0x20240239ce6394e40300639c062e40638c0612802398062e40601c0621c02", + "0x8d008022e406188062b002008b9018360187e008022e40600884008022e406", + "0xe93a00713c023a4062e4063a406224023a4062e40600855008e8018b901802", + "0x63b006130023b0062e4063a8eb01ca9008eb018b901802280023a8062e406", + "0xb90180701887008ee018b90182001831008bc018b9018420180c008ed018b9", + "0x221002008b901802024023c0ef3b8bc030063c0062e4063b406128023bc06", + "0x23c8062e4060089d008f1018b90180223402008b901809018ac008022e406", + "0xa9008f4018b901802280023cc062e4063c8f101c4f008f2018b9018f201889", + "0x31008f7018b9018110180c008f6018b9018f50184c008f5018b9018f33d007", + "0xf7030063e8062e4063d806128023e4062e40601c0621c023e0062e40604806", + "0x2008022e406008ae00812018b90180215c02080062e406008ad008fa3e4f8", + "0x20d46601cfb1884201cb901c060080701c02008b90180201802008b901802", + "0x7301cb10081e018b9018090182000873018b9018420180c008022e40600809", + "0x2008b90180202402070063f00c018b901c36018c00083606470024b90181e", + "0xc018b90180c08007000021d01f01cb9018220184200822018b90181901820", + "0x7e018b9018700180c008022e4060080900876018fd044062e4071d00618802", + "0x11018b90181104807304020a8062e40607c06080020a0062e406188060c402", + "0x62e4072040630c02008b9018020180220482094092e4060a8281f80930802", + "0xb901c83018c5008830b0072e4062000631002008b90180202402210063f880", + "0xb9018310183500831018b90182c01866008022e4060080900885018ff0bc06", + "0x89018b9018020d802008b9018860181900888218072e40621c061c00221c06", + "0x20ec062e406220061cc02008b901838018190088a0e0072e406224061c002", + "0x2400022e4072343b01c1c0083b018b90183b0181e0088d018b90188a01873", + "0x930182200893018b9018910187400891018b90180207c02008b90180202402", + "0x2500840018b90180207c02008b9018020240200901018021d802258062e406", + "0x608802110062e4062580620802258062e40611c060880211c062e40610006", + "0x61f802008b901802024021200640845018b901c440188100844018b901844", + "0x49208250248000849018b9018490182a00849018b9018020a002008b901845", + "0x60082c008022e40600884008022e406008090089d2640740c4c128072e407", + "0x62a406214022a8a901cb9018a00182f008a0018b90184f018830084f018b9", + "0x62e4062a8062180215c062e40601c0621c022b4062e406130060c402008b9", + "0x18b90182f01896008c0018b90181101889008b1018b90180c018bf008ae", + "0xc70084a018b90184a0180c008552b053024b901800300b12b8572b41131802", + "0x48008c3018b9018c1018c8008022e40600809008c201904304062e40715406", + "0x60c4022fc062e4061280603002314062e4063100612402310062e40630c06", + "0xc62fc0c018c8018b9018c50184a008c7018b9018ac01887008c6018b901853", + "0x2328062e4061280603002324062e4063080613002008b90180202402320c7", + "0xc018cc018b9018c90184a008be018b9018ac01887008cb018b90185301831", + "0x93008022e4060bc0611002008b90180221002008b90180202402330be32cca", + "0x62e4060089d008cd018b90180223402008b90180c018c9008022e40604406", + "0xd0018b9018022800233c062e406338cd01c4f008ce018b9018ce01889008ce", + "0xd4018b9018990180c008d3018b9018d10184c008d1018b9018cf340072a402", + "0x6358062e40634c0612802354062e40601c0621c02348062e406274060c402", + "0x2008b9018480187e008022e40600884008022e40600809008d6354d23500c", + "0x601c0621c02008b90180c018c9008022e4060440624c02008b90182f01844", + "0x62e4060088d008022e406360061f802360d701cb9018d9018aa008d9018b9", + "0xdb018b9018bd3680713c022f4062e4062f406224022f4062e40600853008da", + "0x2378062e4063740613002374062e40636cdc01ca9008dc018b90180228002", + "0x4a008e1018b9018d701887008e0018b90188201831008df018b9018250180c", + "0x2008b90180221002008b90180202402388e1380df03006388062e40637806", + "0x60300632402008b90181101893008022e4060b0062b002008b9018850187e", + "0x2390062e4063900622402390062e40600855008e3018b90180223402008b9", + "0x239c062e406394e601ca9008e6018b90180228002394062e406390e301c4f", + "0x87008ea018b90188201831008e9018b9018250180c008e8018b9018e70184c", + "0xb901802024023b0eb3a8e9030063b0062e4063a006128023ac062e40601c06", + "0x840184c008022e4060300632402008b90181101893008022e4060088400802", + "0x601c0621c023b8062e406208060c4022f0062e40609406030023b4062e406", + "0x84008022e40600809008f03bcee2f00c018f0018b9018ed0184a008ef018b9", + "0x22e40607c062b002008b90180c018c9008022e4061d8061f802008b901802", + "0xf201889008f2018b901802154023c4062e4060088d008022e4060480632802", + "0xf33d0072a4023d0062e406008a0008f3018b9018f23c40713c023c8062e406", + "0x6188060c4023dc062e4061c006030023d8062e4063d406130023d4062e406", + "0xfa3e4f83dc0c018fa018b9018f60184a008f9018b90180701887008f8018b9", + "0xb901819018ac008022e406070061f802008b90180221002008b90180202402", + "0x215402414062e4060088d008022e4060800632c02008b901812018ca00802", + "0x6008a000907018b9019064140713c02418062e4064180622402418062e406", + "0x61c00603002424062e4064200613002420062e40641cbb01ca9008bb018b9", + "0xb9019090184a0090c018b901807018870090b018b901862018310090a018b9", + "0x60800632c02008b90180221002008b901802024024350c42d0a0300643406", + "0x9d0090e018b90180223402008b901812018ca008022e406024062b002008b9", + "0x228002440062e40643d0e01c4f0090f018b90190f018890090f018b901802", + "0x660180c00913018b9019120184c00912018b901910444072a402444062e406", + "0x644c0612802458062e40601c0621c02454062e4060d4060c402450062e406", + "0x200802008b9018022b802080062e406008be008ba459154500c018ba018b9", + "0x9008621080745c12044072e4070180201c07008022e40600806008022e406", + "0x602406080020d8062e406048060c402064062e4060440603002008b901802", + "0x70018c3008022e40600806008700d466024b9018730d819024c200873018b9", + "0x6314021d01f01cb90181e018c4008022e406008090081c01918078062e407", + "0x60c402204062e4061980603002008b90180202402088064640c018b901c74", + "0x930802030062e4060302001ccc00828018b90181f018200087e018b901835", + "0x64682a018b901c82018c3008022e406008060088209476024b9018281f881", + "0x11b20c062e4070b006314020b08401cb90182a018c4008022e4060080900880", + "0x20c4062e406214060d402214062e4062100619802008b901802024020bc06", + "0x61c002220062e40600836008022e40621c06064022188701cb90183101870", + "0x38018730088a018b90188601873008022e40622406064020e08901cb901888", + "0x2024020091c008b901c3b2280707002228062e40622806078020ec062e406", + "0x62e4062440608802244062e406234061d002234062e4060081f008022e406", + "0x62580609402258062e4060081f008022e4060080900802474060087600893", + "0xb9018470182200847018b9018930188200893018b9018400182200840018b9", + "0xb9018440187e008022e40600809008450191e110062e40711c062040211c06", + "0x72e407120251d80920002120062e406120060a802120062e4060082800802", + "0x9d018b9018020b002008b90180221002008b901802024022644c01d1f12849", + "0x2008b9018a001885008a9280072e40613c060bc0213c062e4062740620c02", + "0x9600857018b9018a901886008ad018b9018070188700855018b90184a01831", + "0x92e4062c4ae15cad15420334022c4062e40620c06258022b8062e40603006", + "0x20240200006480c0018b901cac018ce00849018b9018490180c008ac14caa", + "0xc201cb9018c101847008c1018b90180223402008b9018c0018cf008022e406", + "0x2314062e4063100612002310062e40630c0611402008b9018c201844008c3", + "0x87008c7018b9018aa01831008c6018b9018490180c008bf018b9018c501849", + "0xb90180202402324c831cc603006324062e4062fc0612802320062e40614c06", + "0xbe018b9018aa01831008cb018b9018490180c008ca018b9018000184c00802", + "0x202402334cc2f8cb03006334062e4063280612802330062e40614c0621c02", + "0x8d008022e4060300611002008b90188301844008022e40600884008022e406", + "0xcf3380713c0233c062e40633c062240233c062e4060089d008ce018b901802", + "0x634c061300234c062e406340d101ca9008d1018b90180228002340062e406", + "0xb90180701887008d5018b90189901831008d2018b90184c0180c008d4018b9", + "0x221002008b9018020240235cd6354d20300635c062e406350061280235806", + "0x2008b90180c01844008022e40620c0611002008b9018450187e008022e406", + "0x8d008022e406364061f802364d801cb9018da018aa008da018b90180701887", + "0xdb2f40713c0236c062e40636c062240236c062e40600853008bd018b901802", + "0x63780613002378062e406370dd01ca9008dd018b90180228002370062e406", + "0xb9018d801887008e1018b90182501831008e0018b9018760180c008df018b9", + "0x221002008b9018020240238ce2384e00300638c062e40637c061280238806", + "0x2008b90180c01844008022e406210062b002008b90182f0187e008022e406", + "0xe401c4f008e5018b9018e501889008e5018b90180215402390062e4060088d", + "0xe80184c008e8018b9018e639c072a40239c062e406008a0008e6018b9018e5", + "0x601c0621c023ac062e406094060c4023a8062e4061d806030023a4062e406", + "0x84008022e40600809008ed3b0eb3a80c018ed018b9018e90184a008ec018b9", + "0xb9018760180c008bc018b9018800184c008022e4060300611002008b901802", + "0x62e4062f006128023c0062e40601c0621c023bc062e406094060c4023b806", + "0xb9018220187e008022e40600884008022e40600809008f13c0ef3b80c018f1", + "0x2154023c8062e4060088d008022e4060800634002008b90181f018ac00802", + "0x6008a0008f4018b9018f33c80713c023cc062e4063cc06224023cc062e406", + "0x619806030023dc062e4063d806130023d8062e4063d0f501ca9008f5018b9", + "0xb9018f70184a008fa018b90180701887008f9018b90183501831008f8018b9", + "0x60800634002008b90180221002008b90180202402414fa3e4f80300641406", + "0x62e4060d4060c40241c062e4061980603002418062e4060700613002008b9", + "0x900909420bb41c0c01909018b9019060184a00908018b90180701887008bb", + "0x2008b901809018ac008022e4060800634002008b90180221002008b901802", + "0x10a01c4f0090b018b90190b018890090b018b90180227402428062e4060088d", + "0x10e0184c0090e018b90190c434072a402434062e406008a00090c018b90190b", + "0x601c0621c02444062e406188060c402440062e406108060300243c062e406", + "0x6008022e4060080200913449114400c01913018b90190f0184a00912018b9", + "0x2008b901802024020481101d210800c01cb901c060080701c02008b901802", + "0x62108092e4061c03501cd100870018b9018090182000835018b90180c0180c", + "0x62e4061880619802008b901802024020d80648819018b901c66018d300866", + "0x22e406070060640207c1c01cb90181e018700081e018b9018730183500873", + "0x73008022e40608806064021d82201cb9018740187000874018b9018020d802", + "0x707002094062e4060940607802208062e4061d8061cc02094062e40607c06", + "0x6204061d002204062e4060081f008022e406008090080248c022e40720825", + "0x1f008022e4060080900802490060087600828018b90187e018220087e018b9", + "0x280188200828018b9018800182200880018b90182a018250082a018b901802", + "0x900883019250b0062e4072100620402210062e4062100608802210062e406", + "0x62e4060bc060a8020bc062e40600828008022e4060b0061f802008b901802", + "0x221002008b901802024022188701d260c48501cb901c2f08042024800082f", + "0x72e406224060bc02224062e4062200620c02220062e4060082c008022e406", + "0x96018b9018070188700893018b90183101831008022e4060e0062140222838", + "0xb9018471009624c0c3480211c062e4060640635002100062e4062280621802", + "0x90084501927110062e4072440622802214062e40621406030022448d0ec09", + "0xb9018480189100849018b90180223402120062e406110060ec02008b901802", + "0x62e406124062580213c062e4061300622402008b90184a018930084c12807", + "0x72e4062640611c02008b90189d0187e0089d264072e4062804f01c40008a0", + "0xac018b9018530184800853018b9018aa01845008022e4062a406110022a8a9", + "0x215c062e4060ec060c4022b4062e4062140603002154062e4062b00612402", + "0x600809008b12b8572b40c018b1018b9018550184a008ae018b90188d01887", + "0x62e4060ec060c402000062e4062140603002300062e4061140613002008b9", + "0x9008c3308c10000c018c3018b9018c00184a008c2018b90188d01887008c1", + "0x2310062e4060088d008022e4060640635402008b90180221002008b901802", + "0xa0008bf018b9018c53100713c02314062e4063140622402314062e4060089d", + "0x603002320062e40631c061300231c062e4062fcc601ca9008c6018b901802", + "0xc80184a008cb018b90180701887008ca018b90188601831008c9018b901887", + "0x61f802008b90180221002008b901802024022f8cb328c9030062f8062e406", + "0xb9018ce018aa008ce018b90180701887008022e4060640635402008b901883", + "0x2340062e40600853008cf018b90180223402008b9018cd0187e008cd33007", + "0xa9008d3018b90180228002344062e406340cf01c4f008d0018b9018d001889", + "0x31008d5018b9018420180c008d2018b9018d40184c008d4018b9018d134c07", + "0xd503006360062e406348061280235c062e4063300621c02358062e40608006", + "0x62b002008b9018360187e008022e40600884008022e40600809008d835cd6", + "0x62e4063680622402368062e40600855008d9018b90180223402008b901862", + "0x62e4062f4db01ca9008db018b901802280022f4062e406368d901c4f008da", + "0xdf018b90182001831008de018b9018420180c008dd018b9018dc0184c008dc", + "0x202402384e037cde03006384062e4063740612802380062e40601c0621c02", + "0x9d008e2018b90180223402008b901809018ac008022e40600884008022e406", + "0x228002390062e40638ce201c4f008e3018b9018e301889008e3018b901802", + "0x110180c008e7018b9018e60184c008e6018b9018e4394072a402394062e406", + "0x639c06128023a8062e40601c0621c023a4062e406048060c4023a0062e406", + "0x201c07008022e40600806008022e40600802008eb3a8e93a00c018eb018b9", + "0x2198062e4060240608002008b901802024020481101d280800c01cb901c06", + "0x1290d4062e4071880618802030062e40603006030021884201cb90186601842", + "0x36064072e4061cc06108021cc062e4061080608002008b901802024021c006", + "0x22018b90181901820008022e406008090081c0192a078062e4070d80618802", + "0xb90180202402094064ac76018b901c74018620087407c072e4060880610802", + "0x62e40720406188022048201cb90187e018420087e018b90181f0182000802", + "0x72e4060b006108020b0062e4062080608002008b901802024020a8064b028", + "0xb90188001820008022e406008090082f0192d20c062e407210061880221080", + "0x202402220064b886018b901c310186200831214072e40621c061080221c06", + "0x70e006188020e08901cb90188a018420088a018b90188501820008022e406", + "0x62580610802258062e4062240608002008b90180202402234064bc3b018b9", + "0x9101820008022e406008090084701930100062e40724c061880224c9101cb9", + "0x2128064c449018b901c450186200845110072e4061200610802120062e406", + "0x6188022644c01cb90189d018420089d018b90184401820008022e40600809", + "0x61080214c062e4061300608002008b90180202402280064c84f018b901c99", + "0x66008022e4060080900855019332b0062e4072a806188022a8a901cb901853", + "0x19008b12b8072e40615c061c00215c062e4062b4060d4022b4062e4062a406", + "0x1819008c1000072e406300061c002300062e40600836008022e4062b806", + "0xb9018c20181e008c3018b9018c101873008c2018b9018b101873008022e406", + "0xc4018b90180207c02008b9018020240200934008b901cc3308070700230806", + "0x20240200935018021d8022fc062e4063140608802314062e406310061d002", + "0x62e40631c060880231c062e4063180609402318062e4060081f008022e406", + "0xc9018b901cc801881008c8018b9018c801822008c8018b9018bf01882008bf", + "0x2a008cb018b9018020a002008b9018c90187e008022e40600809008ca01936", + "0x600809008ce334074dccc2f8072e40732c20030092000232c062e40632c06", + "0x2f008d0018b9018cf01883008cf018b9018020b002008b90180221002008b9", + "0x60c40235c062e4062f80603002008b9018d101885008d3344072e40634006", + "0x3501889008da018b9018d301886008d9018b90180701887008d8018b9018cc", + "0x60a00622402370062e4061d8062240236c062e40607806224022f4062e406", + "0xb90183b01889008df018b90188601889008de018b90188301889008dd018b9", + "0x62e40613c0622402388062e4061240622402384062e406100062240238006", + "0xe2384e037cde374dc36cbd368d9360d71ccd6008e4018b9018ac01889008e3", + "0xb90180202402398064e0e5018b901cd6018ce008d6354d23500c2e406390e3", + "0x23a4e801cb9018e701847008e7018b90180223402008b9018e5018cf00802", + "0x6124023ac062e4063a806120023a8062e4063a40611402008b9018e801844", + "0xd501887008bc018b9018d201831008ed018b9018d40180c008ec018b9018eb", + "0x2008b901802024023bcee2f0ed030063bc062e4063b006128023b8062e406", + "0x87008f2018b9018d201831008f1018b9018d40180c008f0018b9018e60184c", + "0xb901802024023d0f33c8f1030063d0062e4063c006128023cc062e40635406", + "0x4901893008022e40613c0624c02008b9018ac01893008022e4060088400802", + "0x2008b90188601893008022e4060ec0624c02008b90184001893008022e406", + "0x60780624c02008b90187601893008022e4060a00624c02008b90188301893", + "0x89008f6018b901802274023d4062e4060088d008022e4060d40624c02008b9", + "0x72a4023e0062e406008a0008f7018b9018f63d40713c023d8062e4063d806", + "0x60c402414062e40633406030023e8062e4063e406130023e4062e4063dcf8", + "0x1064140c018bb018b9018fa0184a00907018b9018070188700906018b9018ce", + "0xac01893008022e406328061f802008b90180221002008b901802024022ed07", + "0x2008b90184001893008022e4061240624c02008b90184f01893008022e406", + "0x60a00624c02008b90188301893008022e4062180624c02008b90183b01893", + "0x87008022e4060d40624c02008b90181e01893008022e4061d80624c02008b9", + "0x223402008b9019090187e00909420072e406428062a802428062e40601c06", + "0x64310b01c4f0090c018b90190c018890090c018b90180214c0242c062e406", + "0xb90190f0184c0090f018b90190d438072a402438062e406008a00090d018b9", + "0x62e4064200621c02448062e406080060c402444062e406030060300244006", + "0x600884008022e406008090091444d124440c01914018b9019100184a00913", + "0x93008022e40613c0624c02008b9018a9018ac008022e406154061f802008b9", + "0xb90188601893008022e4060ec0624c02008b90184001893008022e40612406", + "0x624c02008b90187601893008022e4060a00624c02008b9018830189300802", + "0x116018b90180215402454062e4060088d008022e4060d40624c02008b90181e", + "0x24e4062e406008a0008ba018b9019164540713c02458062e4064580622402", + "0x24f0062e40603006030024ec062e4064e806130024e8062e4062e93901ca9", + "0xc0193f018b90193b0184a0093e018b901807018870093d018b90182001831", + "0xac008022e406280061f802008b90180221002008b901802024024fd3e4f53c", + "0xb90183b01893008022e4061000624c02008b90184901893008022e40613006", + "0x624c02008b90182801893008022e40620c0624c02008b9018860189300802", + "0x140018b90180223402008b90183501893008022e4060780624c02008b901876", + "0x2508062e4065054001c4f00941018b9019410188900941018b90180215402", + "0xc00945018b9019440184c00944018b90194250c072a40250c062e406008a0", + "0x612802520062e40601c0621c0251c062e406080060c402518062e40603006", + "0x7e008022e40600884008022e4060080900949521475180c01949018b901945", + "0xb90183b01893008022e4061000624c02008b901844018ac008022e40612806", + "0x624c02008b90182801893008022e40620c0624c02008b9018860189300802", + "0x14a018b90180223402008b90183501893008022e4060780624c02008b901876", + "0x2530062e40652d4a01c4f0094b018b90194b018890094b018b90180215402", + "0xc0094f018b90194e0184c0094e018b90194c534072a402534062e406008a0", + "0x612802548062e40601c0621c02544062e406080060c402540062e40603006", + "0x7e008022e40600884008022e4060080900953549515400c01953018b90194f", + "0xb90188601893008022e4060ec0624c02008b901891018ac008022e40611c06", + "0x624c02008b90187601893008022e4060a00624c02008b9018830189300802", + "0x155018b90180215402550062e4060088d008022e4060d40624c02008b90181e", + "0x255c062e406008a000956018b9019555500713c02554062e4065540622402", + "0x2568062e4060300603002564062e4065600613002560062e4065595701ca9", + "0xc0195d018b9019590184a0095c018b901807018870095b018b90182001831", + "0x93008022e406234061f802008b90180221002008b901802024025755c56d5a", + "0xb90188301893008022e4062180624c02008b901889018ac008022e4060d406", + "0x223402008b90181e01893008022e4061d80624c02008b9018280189300802", + "0x657d5e01c4f0095f018b90195f018890095f018b90180215402578062e406", + "0xb9019620184c00962018b901960584072a402584062e406008a000960018b9", + "0x62e40601c0621c02594062e406080060c402590062e406030060300258c06", + "0x600884008022e4060080900967599655900c01967018b9019630184a00966", + "0xac008022e4060780624c02008b90183501893008022e406220061f802008b9", + "0xb90187601893008022e4060a00624c02008b90188301893008022e40621406", + "0x4f00969018b9019690188900969018b901802154025a0062e4060088d00802", + "0x4c0096c018b90196a5ac072a4025ac062e406008a00096a018b9019695a007", + "0x621c025bc062e406080060c4025b8062e40603006030025b4062e4065b006", + "0x22e40600809009715c16f5b80c01971018b90196d0184a00970018b901807", + "0x60780624c02008b90183501893008022e4060bc061f802008b90180221002", + "0x8d008022e4060a00624c02008b901880018ac008022e4061d80624c02008b9", + "0x1005c80713c02400062e4064000622402400062e4060085500972018b901802", + "0x65d406130025d4062e4065cd7401ca900974018b901802280025cc062e406", + "0xb9018070188700977018b9018200183100976018b90180c0180c00901018b9", + "0x221002008b901802024025e5785dd76030065e4062e40640406128025e006", + "0x2008b90181e01893008022e4060d40624c02008b90182a0187e008022e406", + "0xb901802154025e8062e4060088d008022e406208062b002008b90187601893", + "0x62e406008a00097c018b90197b5e80713c025ec062e4065ec06224025ec06", + "0x62e40603006030025fc062e4065f806130025f8062e4065f17d01ca90097d", + "0x183018b90197f0184a00982018b9018070188700981018b9018200183100980", + "0x22e406094061f802008b90180221002008b9018020240260d826058003006", + "0x60088d008022e40607c062b002008b90181e01893008022e4060d40624c02", + "0xb9019856100713c02614062e4066140622402614062e4060085500984018b9", + "0x62e4066200613002620062e4066198701ca900987018b9018022800261806", + "0x18c018b901807018870098b018b901820018310098a018b90180c0180c00989", + "0xb90180221002008b901802024026358c62d8a03006634062e4066240612802", + "0x223402008b901819018ac008022e4060d40624c02008b90181c0187e00802", + "0x663d8e01c4f0098f018b90198f018890098f018b90180215402638062e406", + "0xb9019920184c00992018b901990644072a402644062e406008a000990018b9", + "0x62e40601c0621c02410062e406080060c402650062e406030060300264c06", + "0x600884008022e4060080900996655046500c01996018b9019930184a00995", + "0x5500997018b90180223402008b901842018ac008022e4061c0061f802008b9", + "0x228002664062e4066619701c4f00998018b9019980188900998018b901802", + "0xc0180c0099b018b9019030184c00903018b901999668072a402668062e406", + "0x666c0612802678062e40601c0621c02674062e406080060c402670062e406", + "0x9018ac008022e40600884008022e406008090099f6799d6700c0199f018b9", + "0x1a1018b9019a101889009a1018b90180227402680062e4060088d008022e406", + "0x1a4018b9019a268c072a40268c062e406008a0009a2018b9019a16800713c02", + "0x269c062e406048060c402698062e4060440603002694062e4066900613002", + "0x6008d7009a96a1a76980c019a9018b9019a50184a009a8018b90180701887", + "0x201802008b90180200802008b9018022b802048062e4060085700820018b9", + "0xc008022e4060080900835198076a862108072e4070180201c07008022e406", + "0x3606470024b90181e1cc0736002078062e40602406080021cc062e40610806", + "0x22018b90181901820008022e406008090081c019ab030062e4070d80636402", + "0x62e4071d00618802030062e4060302001cda0087407c072e4060880610802", + "0x62e406188060c4021f8062e4061c00603002008b901802024021d8066b011", + "0x60a8281f80930802044062e4060441201cc10082a018b90181f0182000828", + "0x202402210066b480018b901c81018c3008022e406008060088120825024b9", + "0x900885019ae0bc062e40720c063140220c2c01cb901880018c4008022e406", + "0x621c061c00221c062e4060c4060d4020c4062e4060b00619802008b901802", + "0x72e406224061c002224062e40600836008022e40621806064022208601cb9", + "0x8d018b90188a018730083b018b90188801873008022e4060e0060640222838", + "0x2008b90180202402009af008b901c8d0ec07070020ec062e4060ec0607802", + "0x21d802258062e40624c060880224c062e406244061d002244062e4060081f", + "0x211c062e4061000609402100062e4060081f008022e40600809008026c006", + "0x8100844018b9018440182200844018b9018960188200896018b90184701822", + "0x20a002008b9018450187e008022e4060080900848019b1114062e40711006", + "0x76c84c128072e407124820940920002124062e406124060a802124062e406", + "0x4f018830084f018b9018020b002008b90180221002008b9018020240227499", + "0x6130060c402008b9018a901885008aa2a4072e406280060bc02280062e406", + "0xb90180c018bd008ae018b9018aa0188600857018b90180701887008ad018b9", + "0xb12b8572b41136c02000062e4060bc0625802300062e40604406224022c406", + "0x1b3304062e4071540631c02128062e4061280603002154ac14c092e406000c0", + "0x2310062e40630c061200230c062e4063040632002008b9018020240230806", + "0x87008c6018b90185301831008bf018b90184a0180c008c5018b9018c401849", + "0xb90180202402320c7318bf03006320062e406314061280231c062e4062b006", + "0xcb018b90185301831008ca018b90184a0180c008c9018b9018c20184c00802", + "0x202402330be32cca03006330062e40632406128022f8062e4062b00621c02", + "0xdc008022e4060440624c02008b90182f01844008022e40600884008022e406", + "0xb9018ce01889008ce018b90180227402334062e4060088d008022e40603006", + "0xb9018cf340072a402340062e406008a0008cf018b9018ce3340713c0233806", + "0x62e406274060c402350062e406264060300234c062e406344061300234406", + "0x9008d6354d23500c018d6018b9018d30184a008d5018b90180701887008d2", + "0x2008b90182f01844008022e406120061f802008b90180221002008b901802", + "0xd9018aa008d9018b90180701887008022e4060300637002008b90181101893", + "0x62e40600853008da018b90180223402008b9018d80187e008d835c072e406", + "0xdc018b9018022800236c062e4062f4da01c4f008bd018b9018bd01889008bd", + "0xdf018b9018250180c008de018b9018dd0184c008dd018b9018db370072a402", + "0x6388062e4063780612802384062e40635c0621c02380062e406208060c402", + "0x2008b9018850187e008022e40600884008022e40600809008e2384e037c0c", + "0xb90180223402008b90180c018dc008022e4060440624c02008b90182c018ac", + "0x62e406390e301c4f008e4018b9018e401889008e4018b9018021540238c06", + "0xe8018b9018e70184c008e7018b9018e5398072a402398062e406008a0008e5", + "0x23ac062e40601c0621c023a8062e406208060c4023a4062e4060940603002", + "0x22e40600884008022e40600809008ec3acea3a40c018ec018b9018e80184a", + "0x6030023b4062e4062100613002008b90180c018dc008022e4060440624c02", + "0xed0184a008ef018b90180701887008ee018b90188201831008bc018b901825", + "0x61f802008b90180221002008b901802024023c0ef3b8bc030063c0062e406", + "0x22e4060480632802008b90181f018ac008022e4060300637002008b901876", + "0x713c023c8062e4063c806224023c8062e40600855008f1018b90180223402", + "0x6130023d4062e4063ccf401ca9008f4018b901802280023cc062e4063c8f1", + "0x701887008f8018b90186201831008f7018b9018700180c008f6018b9018f5", + "0x2008b901802024023e8f93e0f7030063e8062e4063d806128023e4062e406", + "0xb901812018ca008022e406064062b002008b90181c0187e008022e40600884", + "0x622402418062e4060085500905018b90180223402008b901820018dd00802", + "0xbb01ca9008bb018b9018022800241c062e4064190501c4f00906018b901906", + "0x62018310090a018b9018700180c00909018b9019080184c00908018b901907", + "0x10c42d0a03006434062e4064240612802430062e40601c0621c0242c062e406", + "0x6024062b002008b901820018dd008022e40600884008022e406008090090d", + "0x890090f018b90180227402438062e4060088d008022e4060480632802008b9", + "0x72a402444062e406008a000910018b90190f4380713c0243c062e40643c06", + "0x60c402450062e406198060300244c062e4064480613002448062e40644111", + "0x1154500c018ba018b9019130184a00916018b9018070188700915018b901835", + "0x1b40800c01cb901c060080701c02008b90180201802008b901802008022e916", + "0x70018b9018090182000835018b90180c0180c008022e406008090081204407", + "0x2024020d8066d419018b901c66018d90086618842024b9018700d40736002", + "0x707806188020787301cb90181c018420081c018b90186201820008022e406", + "0x60940610802094062e4061cc0608002008b901802024021d0066d81f018b9", + "0x2201820008022e4060080900881019b7208062e4071d806188021d82201cb9", + "0x2210066e080018b901c2801862008281f8072e4060a806108020a8062e406", + "0x61880220c2c01cb90182f018420082f018b90187e01820008022e40600809", + "0x60d40221c062e4060b00619802008b901802024020c4066e485018b901c83", + "0x600836008022e40622006064022248801cb9018860187000886018b901887", + "0xb90188901873008022e40622806064020ec8a01cb9018380187000838018b9", + "0xb901c912340707002234062e4062340607802244062e4060ec061cc0223406", + "0x2258062e40624c061d00224c062e4060081f008022e40600809008026e802", + "0x62e4060081f008022e40600809008026ec060087600840018b90189601822", + "0x45018b9018400188200840018b9018440182200844018b9018470182500847", + "0x22e4060080900849019bc120062e4071140620402114062e4061140608802", + "0x920002128062e406128060a802128062e40600828008022e406120061f802", + "0x2008b90180221002008b9018020240213c9d01dbd2644c01cb901c4a08042", + "0x85008532a8072e4062a4060bc022a4062e4062800620c02280062e4060082c", + "0x5301886008ae018b9018070188700857018b90189901831008022e4062a806", + "0x62080622402000062e40607c0622402300062e406064062f4022c4062e406", + "0xb12b857108de008c3018b90188501889008c2018b90188001889008c1018b9", + "0xb901cad018c70084c018b90184c0180c008ad154ac024b9018c3308c1000c0", + "0xb9018bf01848008bf018b9018c4018c8008022e40600809008c5019be31006", + "0x62e4062b0060c402320062e406130060300231c062e406318061240231806", + "0x9008cb328c93200c018cb018b9018c70184a008ca018b90185501887008c9", + "0x62b0060c402330062e40613006030022f8062e4063140613002008b901802", + "0xcf338cd3300c018cf018b9018be0184a008ce018b90185501887008cd018b9", + "0xb90188001893008022e4062140624c02008b90180221002008b90180202402", + "0x223402008b901819018dc008022e40607c0624c02008b9018820189300802", + "0x6344d001c4f008d1018b9018d101889008d1018b90180227402340062e406", + "0xb9018d20184c008d2018b9018d3350072a402350062e406008a0008d3018b9", + "0x62e40601c0621c0235c062e40613c060c402358062e406274060300235406", + "0x600884008022e40600809008d9360d73580c018d9018b9018d50184a008d8", + "0x93008022e4062000624c02008b90188501893008022e406124061f802008b9", + "0xb90180701887008022e4060640637002008b90181f01893008022e40620806", + "0xdc018b90180223402008b9018bd0187e008bd368072e40636c062a80236c06", + "0x2378062e406374dc01c4f008dd018b9018dd01889008dd018b90180214c02", + "0xc008e1018b9018e00184c008e0018b9018de37c072a40237c062e406008a0", + "0x612802390062e4063680621c0238c062e406080060c402388062e40610806", + "0x7e008022e40600884008022e40600809008e5390e33880c018e5018b9018e1", + "0xb90188201893008022e4062000624c02008b90182c018ac008022e4060c406", + "0x215402398062e4060088d008022e4060640637002008b90181f0189300802", + "0x6008a0008e8018b9018e73980713c0239c062e40639c062240239c062e406", + "0x610806030023ac062e4063a806130023a8062e4063a0e901ca9008e9018b9", + "0xb9018eb0184a008bc018b90180701887008ed018b90182001831008ec018b9", + "0x6210061f802008b90180221002008b901802024023b8bc3b4ec030063b806", + "0xdc008022e40607c0624c02008b90188201893008022e4061f8062b002008b9", + "0xb9018f001889008f0018b901802154023bc062e4060088d008022e40606406", + "0xb9018f13c8072a4023c8062e406008a0008f1018b9018f03bc0713c023c006", + "0x62e406080060c4023d4062e40610806030023d0062e4063cc06130023cc06", + "0x9008f83dcf63d40c018f8018b9018f40184a008f7018b90180701887008f6", + "0x2008b901822018ac008022e406204061f802008b90180221002008b901802", + "0xb901802154023e4062e4060088d008022e4060640637002008b90181f01893", + "0x62e406008a000905018b9018fa3e40713c023e8062e4063e806224023e806", + "0x62e40610806030022ec062e40641c061300241c062e4064150601ca900906", + "0x10b018b9018bb0184a0090a018b9018070188700909018b9018200183100908", + "0x22e4061d0061f802008b90180221002008b9018020240242d0a4250803006", + "0x6008550090c018b90180223402008b901873018ac008022e4060640637002", + "0xb90180228002438062e4064350c01c4f0090d018b90190d018890090d018b9", + "0xb9018420180c00911018b9019100184c00910018b90190e43c072a40243c06", + "0x62e4064440612802450062e40601c0621c0244c062e406080060c40244806", + "0xb9018360187e008022e40600884008022e4060080900915451134480c01915", + "0x6224022e8062e4060085500916018b90180223402008b901862018ac00802", + "0x13a01ca90093a018b901802280024e4062e4062e91601c4f008ba018b9018ba", + "0x20018310093d018b9018420180c0093c018b90193b0184c0093b018b901939", + "0x13f4f93d03006500062e4064f006128024fc062e40601c0621c024f8062e406", + "0xb90180223402008b901809018ac008022e40600884008022e4060080900940", + "0x62e4065094101c4f00942018b9019420188900942018b9018022740250406", + "0x146018b9019450184c00945018b901943510072a402510062e406008a000943", + "0x2524062e40601c0621c02520062e406048060c40251c062e4060440603002", + "0x22e40600806008022e406008020094a5254851c0c0194a018b9019460184a", + "0x60300603002008b901802024020481101dbf0800c01cb901c060080701c02", + "0x63640219862108092e4061c03501cd800870018b9018090182000835018b9", + "0x60d4021cc062e4061880619802008b901802024020d80670019018b901c66", + "0x600836008022e406070060640207c1c01cb90181e018700081e018b901873", + "0xb90181f01873008022e40608806064021d82201cb9018740187000874018b9", + "0xb901c820940707002094062e4060940607802208062e4061d8061cc0209406", + "0x21f8062e406204061d002204062e4060081f008022e406008090080270402", + "0x62e4060081f008022e4060080900802708060087600828018b90187e01822", + "0x84018b9018280188200828018b9018800182200880018b90182a018250082a", + "0x22e4060080900883019c30b0062e4072100620402210062e4062100608802", + "0x9200020bc062e4060bc060a8020bc062e40600828008022e4060b0061f802", + "0x2008b90180221002008b901802024022188701dc40c48501cb901c2f08042", + "0x850088a0e0072e406224060bc02224062e4062200620c02220062e4060082c", + "0x8a0188600896018b9018070188700893018b90183101831008022e4060e006", + "0x912343b024b9018471009624c0c37c0211c062e406064062f402100062e406", + "0x22e4060080900845019c5110062e4072440633802214062e4062140603002", + "0x440084a124072e4061200611c02120062e4060088d008022e4061100633c02", + "0x990184900899018b90184c018480084c018b90184a01845008022e40612406", + "0x62340621c02280062e4060ec060c40213c062e4062140603002274062e406", + "0x4c008022e40600809008aa2a4a013c0c018aa018b90189d0184a008a9018b9", + "0x621c02154062e4060ec060c4022b0062e406214060300214c062e40611406", + "0x22e40600809008572b4552b00c01857018b9018530184a008ad018b90188d", + "0xb901802274022b8062e4060088d008022e4060640637002008b90180221002", + "0x62e406008a0008c0018b9018b12b80713c022c4062e4062c406224022c406", + "0x62e40621c0603002308062e4063040613002304062e4063000001ca900800", + "0xbf018b9018c20184a008c5018b90180701887008c4018b90188601831008c3", + "0x22e40620c061f802008b90180221002008b901802024022fcc5310c303006", + "0x231cc601cb9018c8018aa008c8018b90180701887008022e4060640637002", + "0x63280622402328062e40600853008c9018b90180223402008b9018c70187e", + "0x632cbe01ca9008be018b9018022800232c062e406328c901c4f008ca018b9", + "0xb90182001831008ce018b9018420180c008cd018b9018cc0184c008cc018b9", + "0x2344d033cce03006344062e4063340612802340062e4063180621c0233c06", + "0x22e406188062b002008b9018360187e008022e40600884008022e40600809", + "0x713c02350062e4063500622402350062e40600855008d3018b90180223402", + "0x613002358062e406348d501ca9008d5018b90180228002348062e406350d3", + "0x701887008d9018b90182001831008d8018b9018420180c008d7018b9018d6", + "0x2008b901802024022f4da364d8030062f4062e40635c0612802368062e406", + "0x62e4060089d008db018b90180223402008b901809018ac008022e40600884", + "0xde018b90180228002374062e406370db01c4f008dc018b9018dc01889008dc", + "0xe1018b9018110180c008e0018b9018df0184c008df018b9018dd378072a402", + "0x6390062e406380061280238c062e40601c0621c02388062e406048060c402", + "0x2008b90180200802008b9018022b802080062e40600857008e438ce23840c", + "0x22e40600809008621080771812044072e4070180201c07008022e40600806", + "0x11018b9018110180c00835198072e4061c006108021c0062e4060240608002", + "0x1c018b9018110180c008022e4060080900819019c7030062e4070d40618802", + "0xc018b90180c08007304021d0062e406198060800207c062e406048060c402", + "0x62e4070780630c02008b90180201802078730d8092e4061d01f0700930802", + "0xb901c82018c500882094072e4060880631002008b901802024021d80672022", + "0xb9018280183500828018b90182501866008022e406008090087e019c920406", + "0x2c018b9018020d802008b9018800181900884200072e4060a8061c0020a806", + "0x2214062e406210061cc02008b901883018190082f20c072e4060b0061c002", + "0x2728022e4070c48501c1c00885018b9018850181e00831018b90182f01873", + "0x860182200886018b9018870187400887018b90180207c02008b90180202402", + "0x2500889018b90180207c02008b90180202402009cb018021d802220062e406", + "0x608802228062e4062200620802220062e4060e006088020e0062e40622406", + "0x61f802008b90180202402234067303b018b901c8a018810088a018b90188a", + "0x911cc360248000891018b9018910182a00891018b9018020a002008b90183b", + "0x60082c008022e40600884008022e4060080900847100077349624c072e407", + "0x612006214021244801cb9018450182f00845018b9018440188300844018b9", + "0x62e406124062180213c062e40601c0621c02274062e406258060c402008b9", + "0xaa2a4a013c9d080e0008aa018b90188101896008a9018b90180c01889008a0", + "0xac019ce14c062e407264063380224c062e40624c06030022644c128092e406", + "0x61540611c02154062e4060088d008022e40614c0633c02008b90180202402", + "0xb9018ae01848008ae018b90185701845008022e4062b4061100215cad01cb9", + "0x62e406128060c402000062e40624c0603002300062e4062c406124022c406", + "0x9008c3308c10000c018c3018b9018c00184a008c2018b90184c01887008c1", + "0x6128060c402314062e40624c0603002310062e4062b00613002008b901802", + "0xc7318bf3140c018c7018b9018c40184a008c6018b90184c01887008bf018b9", + "0xb90180c01893008022e4062040611002008b90180221002008b90180202402", + "0x4f008c9018b9018c901889008c9018b90180227402320062e4060088d00802", + "0x4c008be018b9018ca32c072a40232c062e406008a0008ca018b9018c932007", + "0x621c02338062e40611c060c402334062e4061000603002330062e4062f806", + "0x22e40600809008d033cce3340c018d0018b9018cc0184a008cf018b901807", + "0x60300624c02008b90188101844008022e406234061f802008b90180221002", + "0xb9018d30187e008d3344072e406350062a802350062e40601c0621c02008b9", + "0x4f008d5018b9018d501889008d5018b90180214c02348062e4060088d00802", + "0x4c008d8018b9018d635c072a40235c062e406008a0008d6018b9018d534807", + "0x621c022f4062e4061cc060c402368062e4060d80603002364062e40636006", + "0x22e40600809008dc36cbd3680c018dc018b9018d90184a008db018b9018d1", + "0x60300624c02008b901825018ac008022e4061f8061f802008b90180221002", + "0x2378062e4063780622402378062e40600855008dd018b90180223402008b9", + "0x2384062e40637ce001ca9008e0018b9018022800237c062e406378dd01c4f", + "0x87008e4018b90187301831008e3018b9018360180c008e2018b9018e10184c", + "0xb90180202402398e5390e303006398062e4063880612802394062e40601c06", + "0x60300239c062e4061d80613002008b90180c01893008022e4060088400802", + "0xe70184a008ea018b90180701887008e9018b90187301831008e8018b901836", + "0x61f802008b90180221002008b901802024023acea3a4e8030063ac062e406", + "0xec018b90180223402008b901820018ca008022e406198062b002008b901819", + "0x22f0062e4063b4ec01c4f008ed018b9018ed01889008ed018b90180215402", + "0xc008f0018b9018ef0184c008ef018b9018bc3b8072a4023b8062e406008a0", + "0x6128023cc062e40601c0621c023c8062e406048060c4023c4062e40604406", + "0xac008022e40600884008022e40600809008f43ccf23c40c018f4018b9018f0", + "0x62e4060089d008f5018b90180223402008b901820018ca008022e40602406", + "0xf8018b901802280023dc062e4063d8f501c4f008f6018b9018f601889008f6", + "0x105018b9018420180c008fa018b9018f90184c008f9018b9018f73e0072a402", + "0x62ec062e4063e8061280241c062e40601c0621c02418062e406188060c402", + "0x72e40701c0201c07008022e40600806008022e40600802008bb41d064140c", + "0x6188060d402188062e4060300619802008b901802024021081201dcf04420", + "0x62e40600836008022e4060d406064021c03501cb9018660187000866018b9", + "0x1e018b90187001873008022e4060d806064021cc3601cb9018190187000819", + "0x2080062e4060800603002078062e4060780607802070062e4061cc061cc02", + "0x61d00207c062e4060081f008022e4060080900802740022e4070701e01c1c", + "0x22e4060080900802744060087600822018b9018740182200874018b90181f", + "0x8200822018b9018250182200825018b9018760182500876018b90180207c02", + "0x7e019d2204062e4072080620402208062e4062080608802208062e40608806", + "0x62e40600828008022e406204061f802008b90180221002008b90180202402", + "0x20b08401dd32002a01cb901c28044200248000828018b9018280182a00828", + "0x60bc060bc020bc062e40620c0620c0220c062e4060082c008022e40600809", + "0xb901806018e100838018b90182a0180c008022e40621406214020c48501cb9", + "0x8d0ec8a0e00c38802234062e4060c406218020ec062e406200060c40222806", + "0x910184700891018b90180223402008b9018890187e008892208621c0c2e406", + "0x61000612002100062e4062580611402008b901893018440089624c072e406", + "0xb901886018e100845018b9018870180c00844018b9018470184900847018b9", + "0x62e4061100612802128062e4060240621c02124062e406220060c40212006", + "0x60089d00899018b90180223402008b901802024021304a12448114200184c", + "0xb9018022800213c062e4062749901c4f0089d018b90189d018890089d018b9", + "0xb9018840180c008aa018b9018a90184c008a9018b90184f280072a40228006", + "0x62e4060240621c02154062e4060b0060c4022b0062e406018063840214c06", + "0x221002008b9018020240215cad154ac14c2001857018b9018aa0184a008ad", + "0x72e406300062a802300062e4060240621c02008b90187e0187e008022e406", + "0x89008c1018b90180214c02000062e4060088d008022e4062c4061f8022c4ae", + "0x72a40230c062e406008a0008c2018b9018c10000713c02304062e40630406", + "0x6384022fc062e4060800603002314062e4063100613002310062e406308c3", + "0xc50184a008c8018b9018ae01887008c7018b90181101831008c6018b901806", + "0xac008022e40600884008022e40600809008c9320c7318bf08006324062e406", + "0xb9018cb01889008cb018b90180227402328062e4060088d008022e40603006", + "0xb9018be330072a402330062e406008a0008be018b9018cb3280713c0232c06", + "0x62e406018063840233c062e4060480603002338062e406334061300233406", + "0xd4018b9018ce0184a008d3018b90180901887008d1018b90184201831008d0", + "0x6008ae00812018b90180215c02080062e406008d7008d434cd1340cf08006", + "0x1d41884201cb901c060080701c02008b90180201802008b90180200802008b9", + "0x1e018b9018090182000873018b9018420180c008022e406008090083519807", + "0x202402070067540c018b901c36018d90083606470024b90181e1cc0736002", + "0xc08007368021d01f01cb9018220184200822018b90181901820008022e406", + "0x700180c008022e4060080900876019d6044062e4071d00618802030062e406", + "0x1104807304020a8062e40607c06080020a0062e406188060c4021f8062e406", + "0x630c02008b9018020180220482094092e4060a8281f80930802044062e406", + "0xc5008830b0072e4062000631002008b901802024022100675c80018b901c81", + "0xe300886018b90182c01820008022e4060080900885019d80bc062e40720c06", + "0x2008b901802024022240676488018b901c87018e4008870c4072e40621806", + "0x22343b01cb90188a018700088a018b9018380183500838018b90183101866", + "0x6064022589301cb9018910187000891018b9018020d802008b90183b01819", + "0x6100060780211c062e406258061cc02100062e406234061cc02008b901893", + "0x62e4060081f008022e4060080900802768022e40711c4001c1c00840018b9", + "0x90080276c060087600848018b9018450182200845018b9018440187400844", + "0xb90184a018220084a018b9018490182500849018b90180207c02008b901802", + "0x62e4071300620402130062e4061300608802130062e406120062080212006", + "0x213c062e40600828008022e406264061f802008b901802024022740677099", + "0x20240214caa01ddd2a4a001cb901c4f20825024800084f018b90184f0182a", + "0x2154062e4062b00620c022b0062e4060082c008022e40600884008022e406", + "0x8700800018b9018a901831008022e4062b4062140215cad01cb9018550182f", + "0x62240230c062e406030062f402308062e40615c0621802304062e40601c06", + "0x48e5008bf018b90188801822008c5018b90182f01896008c4018b901811", + "0x73000633802280062e4062800603002300b12b8092e4062fcc5310c3308c1", + "0x62e4060088d008022e4063180633c02008b9018020240231c06778c6018b9", + "0xcb018b9018ca01845008022e4063240611002328c901cb9018c801847008c8", + "0x2334062e4062800603002330062e4062f806124022f8062e40632c0612002", + "0xc018d0018b9018cc0184a008cf018b9018b101887008ce018b9018ae01831", + "0x62e4062800603002344062e40631c0613002008b90180202402340cf338cd", + "0xd5018b9018d10184a008d2018b9018b101887008d4018b9018ae01831008d3", + "0x22e4062200639802008b90180221002008b90180202402354d2350d303006", + "0x60088d008022e4060300637002008b90181101893008022e4060bc0611002", + "0xb9018d73580713c0235c062e40635c062240235c062e4060089d008d6018b9", + "0x62e4063680613002368062e406360d901ca9008d9018b9018022800236006", + "0xdd018b90180701887008dc018b90185301831008db018b9018aa0180c008bd", + "0xb90180221002008b90180202402378dd370db03006378062e4062f40612802", + "0x624c02008b90182f01844008022e4062200639802008b90189d0187e00802", + "0xb9018e1018aa008e1018b90180701887008022e4060300637002008b901811", + "0x238c062e40600853008e2018b90180223402008b9018e00187e008e037c07", + "0xa9008e5018b90180228002390062e40638ce201c4f008e3018b9018e301889", + "0x31008e8018b9018250180c008e7018b9018e60184c008e6018b9018e439407", + "0xe8030063ac062e40639c06128023a8062e40637c0621c023a4062e40620806", + "0x62b002008b9018890187e008022e40600884008022e40600809008eb3a8e9", + "0x22e4060300637002008b90181101893008022e4060bc0611002008b901831", + "0x713c023b4062e4063b406224023b4062e40600855008ec018b90180223402", + "0x6130023bc062e4062f0ee01ca9008ee018b901802280022f0062e4063b4ec", + "0x701887008f2018b90188201831008f1018b9018250180c008f0018b9018ef", + "0x2008b901802024023d0f33c8f1030063d0062e4063c006128023cc062e406", + "0xb90181101893008022e4060b0062b002008b9018850187e008022e40600884", + "0x6224023d8062e40600855008f5018b90180223402008b90180c018dc00802", + "0xf801ca9008f8018b901802280023dc062e4063d8f501c4f008f6018b9018f6", + "0x820183100905018b9018250180c008fa018b9018f90184c008f9018b9018f7", + "0x10741905030062ec062e4063e8061280241c062e40601c0621c02418062e406", + "0x60300637002008b90181101893008022e40600884008022e40600809008bb", + "0x62e406208060c402424062e4060940603002420062e4062100613002008b9", + "0x90090c42d0a4240c0190c018b9019080184a0090b018b901807018870090a", + "0x2008b90180c018dc008022e4061d8061f802008b90180221002008b901802", + "0xb90180215402434062e4060088d008022e4060480632802008b90181f018ac", + "0x62e406008a00090f018b90190e4340713c02438062e406438062240243806", + "0x62e4061c00603002448062e4064440613002444062e40643d1001ca900910", + "0x116018b9019120184a00915018b9018070188700914018b9018620183100913", + "0x22e406070061f802008b90180221002008b90180202402459154511303006", + "0x60088d008022e4060800637402008b901812018ca008022e406064062b002", + "0xb9019392e80713c024e4062e4064e406224024e4062e40600855008ba018b9", + "0x62e4064f006130024f0062e4064e93b01ca90093b018b901802280024e806", + "0x140018b901807018870093f018b901862018310093e018b9018700180c0093d", + "0xb90180221002008b90180202402505404fd3e03006504062e4064f40612802", + "0x223402008b901812018ca008022e406024062b002008b901820018dd00802", + "0x650d4201c4f00943018b9019430188900943018b90180227402508062e406", + "0xb9019460184c00946018b901944514072a402514062e406008a000944018b9", + "0x62e40601c0621c02524062e4060d4060c402520062e406198060300251c06", + "0x600806008022e406008020094b529495200c0194b018b9019470184a0094a", + "0x608002008b901802024020481101ddf0800c01cb901c060080701c02008b9", + "0x618802030062e40603006030021884201cb9018660184200866018b901809", + "0x6108021cc062e4061080608002008b901802024021c00678035018b901c62", + "0x66008022e406008090081c019e1078062e4070d806188020d81901cb901873", + "0x1900876088072e4061d0061c0021d0062e40607c060d40207c062e40606406", + "0x820181900881208072e406094061c002094062e40600836008022e40608806", + "0xb90187e0181e00828018b901881018730087e018b90187601873008022e406", + "0x2a018b90180207c02008b90180202402009e2008b901c281f807070021f806", + "0x202402009e3018021d802210062e4062000608802200062e4060a8061d002", + "0x62e40620c060880220c062e4060b006094020b0062e4060081f008022e406", + "0x85018b901c2f018810082f018b90182f018220082f018b9018840188200884", + "0x2a00887018b9018020a002008b9018850187e008022e4060080900831019e4", + "0x600809008382240779488218072e40721c20030092000221c062e40621c06", + "0x2f0083b018b90188a018830088a018b9018020b002008b90180221002008b9", + "0x622402258062e4062440621802008b90188d0188500891234072e4060ec06", + "0x8d00893018b90184710096024e700847018b90181e0188900840018b901835", + "0x4801889008022e4061140624c021204501cb9018930189100844018b901802", + "0x61f8021284901cb9018991300710002264062e4061100625802130062e406", + "0x613c0611402008b90189d018440084f274072e4061240611c02008b90184a", + "0xb9018860180c008aa018b9018a901849008a9018b9018a001848008a0018b9", + "0x62e4062a80612802154062e40601c0621c022b0062e406220060c40214c06", + "0xb90183501893008022e40600884008022e40600809008ad154ac14c0c018ad", + "0x6224022b8062e4060089d00857018b90180223402008b90181e0189300802", + "0xc001ca9008c0018b901802280022c4062e4062b85701c4f008ae018b9018ae", + "0x3801831008c2018b9018890180c008c1018b9018000184c00800018b9018b1", + "0xc430cc203006314062e4063040612802310062e40601c0621c0230c062e406", + "0x60d40624c02008b9018310187e008022e40600884008022e40600809008c5", + "0xbf01cb9018c7018aa008c7018b90180701887008022e4060780624c02008b9", + "0x622402324062e40600853008c8018b90180223402008b9018c60187e008c6", + "0xcb01ca9008cb018b90180228002328062e406324c801c4f008c9018b9018c9", + "0x2001831008cd018b90180c0180c008cc018b9018be0184c008be018b9018ca", + "0xcf338cd03006340062e406330061280233c062e4062fc0621c02338062e406", + "0x60d40624c02008b90181c0187e008022e40600884008022e40600809008d0", + "0x89008d3018b90180215402344062e4060088d008022e406064062b002008b9", + "0x72a402348062e406008a0008d4018b9018d33440713c0234c062e40634c06", + "0x60c40235c062e4060300603002358062e4063540613002354062e406350d2", + "0xd835c0c018da018b9018d60184a008d9018b90180701887008d8018b901820", + "0x42018ac008022e4061c0061f802008b90180221002008b90180202402368d9", + "0xdb018b9018db01889008db018b901802154022f4062e4060088d008022e406", + "0xde018b9018dc374072a402374062e406008a0008dc018b9018db2f40713c02", + "0x2384062e406080060c402380062e406030060300237c062e4063780613002", + "0x600809008e3388e13800c018e3018b9018df0184a008e2018b90180701887", + "0x227402390062e4060088d008022e406024062b002008b90180221002008b9", + "0x6008a0008e6018b9018e53900713c02394062e4063940622402394062e406", + "0x604406030023a4062e4063a006130023a0062e406398e701ca9008e7018b9", + "0xb9018e90184a008ec018b90180701887008eb018b90181201831008ea018b9", + "0x60080701c02008b90180201802008b901802008023b4ec3acea030063b406", + "0x4200866018b90180901820008022e40600809008120440779820030072e407", + "0x679c35018b901c62018620080c018b90180c0180c00862108072e40619806", + "0x20d81901cb9018730184200873018b90184201820008022e4060080900870", + "0x207c062e4060640619802008b90180202402070067a01e018b901c3601862", + "0x36008022e40608806064021d82201cb9018740187000874018b90181f01835", + "0x7601873008022e40620806064022048201cb9018250187000825018b901802", + "0x281f807070021f8062e4061f806078020a0062e406204061cc021f8062e406", + "0x62e4060a8061d0020a8062e4060081f008022e40600809008027a4022e407", + "0x60081f008022e40600809008027a8060087600884018b9018800182200880", + "0xb9018840188200884018b9018830182200883018b90182c018250082c018b9", + "0x60080900831019eb214062e4070bc06204020bc062e4060bc06088020bc06", + "0x221c062e40621c060a80221c062e40600828008022e406214061f802008b9", + "0xb90180221002008b901802024020e08901dec2208601cb901c870800c02480", + "0x2258062e406220060c4020ec062e4062280620c02228062e4060082c00802", + "0x8900844018b9018350188900847018b90183b0188600840018b90180701887", + "0x6218060300224c91234092e4061144411c40258203a002114062e40607806", + "0x6120063a802008b90180202402124067b448018b901c93018e900886018b9", + "0x72e4061300624402264062e4060088d008022e40612806214021304a01cb9", + "0x53018b90189901896008aa018b90184f01889008022e4062740624c0213c9d", + "0xac01cb9018a001847008022e4062a4061f8022a4a001cb9018532a80710002", + "0x215c062e4062b406120022b4062e4061540611402008b9018ac0184400855", + "0x87008c0018b90188d01831008b1018b9018860180c008ae018b90185701849", + "0xb9018020240230400300b103006304062e4062b80612802000062e40624406", + "0xc4018b90188d01831008c3018b9018860180c008c2018b9018490184c00802", + "0x2024022fcc5310c3030062fc062e4063080612802314062e4062440621c02", + "0x8d008022e4060d40624c02008b90181e01893008022e40600884008022e406", + "0xc73180713c0231c062e40631c062240231c062e4060089d008c6018b901802", + "0x63280613002328062e406320c901ca9008c9018b90180228002320062e406", + "0xb90180701887008cc018b90183801831008be018b9018890180c008cb018b9", + "0x221002008b90180202402338cd330be03006338062e40632c061280233406", + "0x2008b90183501893008022e4060780624c02008b9018310187e008022e406", + "0x8d008022e406340061f802340cf01cb9018d1018aa008d1018b90180701887", + "0xd434c0713c02350062e4063500622402350062e40600853008d3018b901802", + "0x63580613002358062e406348d501ca9008d5018b90180228002348062e406", + "0xb9018cf01887008d9018b90182001831008d8018b90180c0180c008d7018b9", + "0x221002008b901802024022f4da364d8030062f4062e40635c061280236806", + "0x2008b90183501893008022e406064062b002008b90181c0187e008022e406", + "0xdb01c4f008dc018b9018dc01889008dc018b9018021540236c062e4060088d", + "0xdf0184c008df018b9018dd378072a402378062e406008a0008dd018b9018dc", + "0x601c0621c02388062e406080060c402384062e4060300603002380062e406", + "0x84008022e40600809008e438ce23840c018e4018b9018e00184a008e3018b9", + "0xe5018b90180223402008b901842018ac008022e4061c0061f802008b901802", + "0x239c062e406398e501c4f008e6018b9018e601889008e6018b90180215402", + "0xc008ea018b9018e90184c008e9018b9018e73a0072a4023a0062e406008a0", + "0x6128023b4062e40601c0621c023b0062e406080060c4023ac062e40603006", + "0xac008022e40600884008022e40600809008bc3b4ec3ac0c018bc018b9018ea", + "0xb9018ef01889008ef018b901802274023b8062e4060088d008022e40602406", + "0xb9018f03c4072a4023c4062e406008a0008f0018b9018ef3b80713c023bc06", + "0x62e406048060c4023d0062e40604406030023cc062e4063c806130023c806", + "0x20008f73d8f53d00c018f7018b9018f30184a008f6018b90180701887008f5", + "0x67b820018b901c09018620080901c072e4060300610802030062e40601806", + "0xb90180202402188067bc42048072e4070800201ceb008022e4060080900811", + "0x70018b9018070182000835018b9018120180c00866018b901842018ec00802", + "0x62e4060081f008022e40600809008191c03502406064062e406198063b402", + "0x1c018b901807018200081e018b9018620180c00873018b901836018bc00836", + "0xb901811018bc008022e406008090081f0701e0240607c062e4061cc063b402", + "0x62e4061d0063b4021d8062e40601c0608002088062e40600806030021d006", + "0x67c00901c072e407018063b802018062e4060080619802094760880901825", + "0xf100811018b901807018f000820018b901809018ef008022e406008090080c", + "0x42018b90180207c02008b90180202402009f1018021d802048062e40608006", + "0x2048062e406188063c402044062e406030063c002188062e406108063c802", + "0x67c835018b901c12018f300866018b9018660182000866018b90181101845", + "0xf600836018b901819018f500819018b901835018f4008022e4060080900870", + "0x1e01c06070062e4061cc063dc02078062e40619806080021cc062e4060d806", + "0x1f018f80081f018b90180207c02008b9018700187e008022e406008090081c", + "0x21d82201c061d8062e4061d0063dc02088062e40619806080021d0062e406", + "0x63e8020442001cb901820018f900820018b9018020d802008b90180701885", + "0x72e40703012044060082041402044062e40604406078020480901cb901809", + "0x60640641802064062e4060081f008022e40600809008700d466025f318842", + "0xb901836019070081e018b9018620188700873018b9018420183100836018b9", + "0x60c40207c062e4061c0062ec02008b90180202402009f4018021d80207006", + "0x1c019080081c018b90181f019070081e018b9018350188700873018b901866", + "0x900825019f51d8062e4071d006338021d0062e4060880642402088062e406", + "0x20078730310a00820018b9018200181e008022e4061d80633c02008b901802", + "0x62e4061f80642c02008b901802024022002a0a0097d87e20482024b901c09", + "0x2f018b9018840190c00883018b901881018870082c018b9018820183100884", + "0x60a0060c402214062e4062000643402008b90180202402009f7018021d802", + "0xb90182f0190e0082f018b9018850190c00883018b90182a018870082c018b9", + "0x60080900888019f8218062e4070c406228020c4062e40621c0643c0221c06", + "0x62e4060e006444020e0062e4062240644002224062e406218060ec02008b9", + "0x91018b90188a019120088d018b901883018870083b018b90182c018310088a", + "0xb90182c0183100893018b90188801913008022e40600809008912343b02406", + "0x900847100960240611c062e40624c0644802100062e40620c0621c0225806", + "0x62e4060940644c02008b90182001819008022e4060240626402008b901802", + "0x49018b9018440191200848018b90181e0188700845018b9018730183100844", + "0x207c02024062e40601c0601c4f00807018b901802018f5008491204502406", + "0x20442001c06044062e4060300645002080062e4060240625802030062e406", + "0x701c06024062e406018064500201c062e4060080621c02018062e4060081f", + "0x62e40702406188020240701cb90180c018420080c018b9018060182000809", + "0x900862019fa1081201cb901c200080745402008b90180202402044067e420", + "0x601c06080020d4062e4060480603002198062e4061080645802008b901802", + "0x207c02008b90180202402064700d40901819018b901866018ba00870018b9", + "0x601c0608002078062e40618806030021cc062e4060d8064e4020d8062e406", + "0x64e402008b9018020240207c1c078090181f018b901873018ba0081c018b9", + "0x74018ba00876018b9018070182000822018b9018020180c00874018b901811", + "0xee00809018b90180701866008022e40600884008251d82202406094062e406", + "0x2048062e406080063bc02008b90180202402044067ec20030072e40702406", + "0x600809008027f0060087600862018b901812018f100842018b90180c018f0", + "0x42018b901811018f000835018b901866018f200866018b90180207c02008b9", + "0x21c0062e4061c006080021c0062e4061080611402188062e4060d4063c402", + "0x21cc062e406064063d002008b901802024020d8067f419018b901c62018f3", + "0x60c4021d8062e4060080603002070062e4060088d0081e018b901873018f5", + "0x1e0188900881018b90181c0189600882018b9018700182000825018b901806", + "0x62e4070880630c020887407c092e4061f881208251d8204e8021f8062e406", + "0x62108001d3b00884200072e4060a00631002008b901802024020a8067f828", + "0xb901874018310082f018b90181f0180c00883018b90182c0193c0082c018b9", + "0x2a0193e008022e40600809008312142f024060c4062e40620c064f40221406", + "0x621c064f402220062e4061d0060c402218062e40607c060300221c062e406", + "0x60081f008022e4060d8061f802008b90180202402224882180901889018b9", + "0x60ec064f0020ec062e4062287001d3b0088a018b9018380193f00838018b9", + "0xb90188d0193d00893018b9018060183100891018b9018020180c0088d018b9", + "0x4400812044072e4060800611c02008b901807018850089624c910240625806", + "0x20814000842018b9018420182000842018b90181201845008022e40604406", + "0x3501941008022e406008090083606470025ff0d466188092e4071080c02406", + "0x61cc0650802070062e4061980621c02078062e406188060c4021cc062e406", + "0x3100874018b90183601943008022e406008090080280006008760081f018b9", + "0x65100207c062e4061d00650802070062e4060640621c02078062e4061c006", + "0x22080680425018b901c22018c700822018b9018760194500876018b90181f", + "0x7e018450087e018b9018810186600881018b901825018c8008022e40600809", + "0x6078060c402200062e4060a806124020a8062e4060a006120020a0062e406", + "0x220c2c2100901883018b9018800184a0082c018b90181c0188700884018b9", + "0x1c0188700885018b90181e018310082f018b9018820184c008022e40600809", + "0x2008b90180701885008870c4850240621c062e4060bc06128020c4062e406", + "0x4700812018b90181101845008022e40608006110020442001cb90180901847", + "0x608002198062e4061880611402008b9018420184400862108072e40603006", + "0x700d4072e40719812018020314600866018b9018660182000812018b901812", + "0x62e4060780641802078062e4060081f008022e40600809008730d81902602", + "0x22018b90181c0190700874018b901870018870081f018b901835018310081c", + "0x6064060c4021d8062e4061cc062ec02008b9018020240200a03018021d802", + "0xb9018220190800822018b9018760190700874018b901836018870081f018b9", + "0x6008090087e01a04204062e4070940633802094062e406208064240220806", + "0x20a8062e4060a00651c020a0062e4060081f008022e4062040633c02008b9", + "0x1490082c018b9018740188700884018b90181f0183100880018b90182a01948", + "0x2f018b90187e0194a008022e40600809008830b0840240620c062e40620006", + "0x621c062e4060bc06524020c4062e4061d00621c02214062e40607c060c402", + "0x2080068140c024072e40701c063b80201c062e406018061980221c3121409", + "0x11018f100812018b901809018f000811018b90180c018ef008022e40600809", + "0xf200862018b90180207c02008b9018020240200a06018021d802108062e406", + "0x611402108062e406198063c402048062e406080063c002198062e40618806", + "0x20640681c70018b901c42018f300835018b9018350182000835018b901812", + "0x20180c00873018b901836018f500836018b901870018f4008022e40600809", + "0x634c020701e01cb90187407c0752c021d0062e4061cc062240207c062e406", + "0x603002094062e4060880653002008b901802024021d80682022018b901c1c", + "0x81208090187e018b9018250194d00881018b9018350182000882018b90181e", + "0x200082a018b90181e0180c00828018b9018760194e008022e406008090087e", + "0x22e40600809008842002a02406210062e4060a00653402200062e4060d406", + "0x60300220c062e4060b006538020b0062e4060081f008022e406064061f802", + "0x850bc0901831018b9018830194d00885018b901835018200082f018b901802", + "0x62108120260904420030092e407024060080953c02008b9018070188500831", + "0x621c020d4062e406030060c402198062e4060440642c02008b90180202402", + "0x22e4060080900802828060087600819018b9018660190c00870018b901820", + "0x21c0062e4061080621c020d4062e406048060c4020d8062e4061880643402", + "0x8a00873018b90181e0190f0081e018b9018190190e00819018b9018360190c", + "0x11000874018b90181c0183b008022e406008090081f01a0b070062e4071cc06", + "0x621c02094062e4060d4060c4021d8062e4060880644402088062e4061d006", + "0x2008b90180202402204820940901881018b9018760191200882018b901870", + "0x1120082a018b9018700188700828018b901835018310087e018b90181f01913", + "0x62e406018060c402008b90180901885008800a82802406200062e4061f806", + "0x707006544020701e1cc092e4061d01f01d5000874018b901807018870081f", + "0x60940654c02094062e4060880654802008b901802024021d80683022018b9", + "0x15600881018b90188101955008800a8281f881080b9018820195400882018b9", + "0x2214062e4060b006560020bc830b0092e4062100655c02210062e40620406", + "0x22208601cb90180c01891008022e4060c40624c0221c3101cb90188501891", + "0x6224020e0062e406220063d402224062e40621c063d402008b90188601893", + "0x622402228062e4062280622402228062e4060e08901d5900889018b901889", + "0x2a018bf00828018b901828018bf0087e018b90187e0195a00880018b901880", + "0x72280656c0220c062e40620c06350020bc062e4060bc062fc020a8062e406", + "0x62e4062340609402234062e4060081f008022e406008090083b01a0d008b9", + "0x3b0195c008022e4060080900802838060087600893018b9018910182200891", + "0x62e4061000608802100062e406258061d002258062e4060081f008022e406", + "0x44018b901c470188100847018b9018470182200847018b9018930188200893", + "0x2120062e40620c0656002008b9018440187e008022e406008090084501a0f", + "0x22644c01cb90182001891008022e4061240624c021284901cb90184801891", + "0x75640213c062e406264063d402274062e406128063d402008b90184c01893", + "0x22a406840022e4072800656c02280062e4062800622402280062e40613c9d", + "0x614c060880214c062e4062a806094022a8062e4060081f008022e40600809", + "0x207c02008b9018a90195c008022e40600809008028440600876008ac018b9", + "0x62b006208022b0062e4062b406088022b4062e406154061d002154062e406", + "0x2024022c406848ae018b901c570188100857018b9018570182200857018b9", + "0x72e4063000624402300062e4060bc0657402008b9018ae0187e008022e406", + "0x22e4063080624c0230cc201cb90181101891008022e4060000624c0230400", + "0xbf018b9018c53100756402314062e40630c063d402310062e406304063d402", + "0x2008b901802024023180684c022e4072fc0656c022fc062e4062fc0622402", + "0x21d802324062e4063200608802320062e40631c060940231c062e4060081f", + "0x74008ca018b90180207c02008b9018c60195c008022e406008090080285006", + "0x6088022f8062e4063240620802324062e40632c060880232c062e40632806", + "0x61f802008b9018020240233406854cc018b901cbe01881008be018b9018be", + "0xd2350d3344d033c122e4063380657c02338062e4061f80657802008b9018cc", + "0xd801cb90181201891008022e4063580624c0235cd601cb9018cf01891008d5", + "0x22f4062e406364063d402368062e40635c063d402008b9018d801893008d9", + "0x236c062e40636c062240236c062e4062f4da01d59008da018b9018da01889", + "0x20008d1018b9018d101960008d0018b9018d0018bf008d5018b9018d501889", + "0x656c02348062e4063480622402350062e406350062240234c062e40634c06", + "0x63740609402374062e4060081f008022e40600809008dc01a16008b901cdb", + "0x15c008022e406008090080285c0600876008df018b9018de01822008de018b9", + "0x63840608802384062e406380061d002380062e4060081f008022e40637006", + "0xb901ce201881008e2018b9018e201822008e2018b9018df01882008df018b9", + "0x62e4063400657402008b9018e30187e008022e40600809008e401a1838c06", + "0xe801cb90184201891008022e4063980624c0239ce601cb9018e501891008e5", + "0x23ac062e4063a4063d4023a8062e40639c063d402008b9018e801893008e9", + "0x6864022e4073b00656c023b0062e4063b006224023b0062e4063acea01d59", + "0x6088023b8062e4062f006094022f0062e4060081f008022e40600809008ed", + "0x2008b9018ed0195c008022e40600809008028680600876008ef018b9018ee", + "0x6208023bc062e4063c406088023c4062e4063c0061d0023c0062e4060081f", + "0x23d00686cf3018b901cf201881008f2018b9018f201822008f2018b9018ef", + "0x63d406244023d4062e4063440658402008b9018f30187e008022e40600809", + "0x63e00624c023e4f801cb90186201891008022e4063d80624c023dcf601cb9", + "0xb9019053e80756402414062e4063e4063d4023e8062e4063dc063d402008b9", + "0xb9018020240241c06870022e4074180656c02418062e406418062240241806", + "0x2424062e4064200608802420062e4062ec06094022ec062e4060081f00802", + "0x10a018b90180207c02008b9019070195c008022e40600809008028740600876", + "0x2430062e4064240620802424062e40642c060880242c062e406428061d002", + "0x2008b90180202402438068790d018b901d0c018810090c018b90190c01822", + "0x3500910018b90190f018660090f34c072e40634c0658802008b90190d0187e", + "0x258c02008b9019120181900913448072e406444061c002444062e40644006", + "0x644c061cc02008b9019150181900916454072e406450061c002450062e406", + "0x74e4ba01c1c008ba018b9018ba0181e00939018b90191601873008ba018b9", + "0x13b018b90193a018740093a018b90180207c02008b9018020240200a1f008b9", + "0xb90180207c02008b9018020240200a20018021d8024f0062e4064ec0608802", + "0x62e4064f006208024f0062e4064f806088024f8062e4064f406094024f406", + "0xb901802024025040688540018b901d3f018810093f018b90193f018220093f", + "0xc00943018b9018020d802508062e40634c0619802008b9019400187e00802", + "0x959002520062e40650c060780251c062e406508063c002518062e40600806", + "0x22e406008090094a01a22524062e40751406594025154401cb90194851d46", + "0x2534062e406530063d402530062e40652c063d00252c062e4065240659802", + "0x25455001cb90194d01891008022e4065380624c0253d4e01cb9018d401891", + "0x62240254c062e406544063d402548062e40653c063d402008b90195001893", + "0x656c02550062e4065500622402550062e40654d5201d5900953018b901953", + "0x65580609402558062e4060081f008022e406008090095501a23008b901d54", + "0x15c008022e4060080900802890060087600958018b9019570182200957018b9", + "0x65680608802568062e406564061d002564062e4060081f008022e40655406", + "0xb901d5b018810095b018b90195b018220095b018b9019580188200958018b9", + "0x72e4063480624402008b90195c0187e008022e406008090095d01a2557006", + "0x22e4065800624c025856001cb90186601891008022e4065780624c0257d5e", + "0x164018b901963588075640258c062e406584063d402588062e40657c063d402", + "0x2008b9018020240259406898022e4075900656c02590062e4065900622402", + "0x21d8025a0062e40659c060880259c062e4065980609402598062e4060081f", + "0x7400969018b90180207c02008b9019650195c008022e406008090080289c06", + "0x6088025ac062e4065a006208025a0062e4065a806088025a8062e4065a406", + "0x61f802008b901802024025b4068a16c018b901d6b018810096b018b90196b", + "0x60d40624402008b90196e018930096f5b8072e4063540624402008b90196c", + "0xb901971018f500972018b90196f018f5008022e4065c00624c025c57001cb9", + "0xb901d730195b00973018b9019730188900973018b9019005c8075640240006", + "0x101018b9019750182500975018b90180207c02008b901802024025d0068a402", + "0x65d00657002008b9018020240200a2a018021d8025d8062e4064040608802", + "0x176018b9019780182200978018b9019770187400977018b90180207c02008b9", + "0x22b5e8062e4075e406204025e4062e4065e406088025e4062e4065d80620802", + "0x910097c018b9018280195d008022e4065e8061f802008b901802024025ec06", + "0x93009805fc072e4061c00624402008b90197d018930097e5f4072e4065f006", + "0x18101d5900982018b901980018f500981018b90197e018f5008022e4065fc06", + "0x90098401a2c008b901d830195b00983018b9019830188900983018b901982", + "0xb9019860182200986018b9019850182500985018b90180207c02008b901802", + "0x60081f008022e4066100657002008b9018020240200a2d018021d80261c06", + "0xb9019870188200987018b9019890182200989018b9019880187400988018b9", + "0x6008090098c01a2e62c062e4076280620402628062e406628060880262806", + "0x18e01cb90198d018910098d018b90182a0195d008022e40662c061f802008b9", + "0x2008b9019900189300991640072e4060640624402008b90198e018930098f", + "0x2650062e40664d9201d5900993018b901991018f500992018b90198f018f5", + "0x1f008022e406008090090401a2f008b901d940195b00994018b90199401889", + "0x60087600997018b9019960182200996018b9019950182500995018b901802", + "0x61d002660062e4060081f008022e4064100657002008b9018020240200a30", + "0x19a018220099a018b9019970188200997018b9019990182200999018b901998", + "0x1030187e008022e406008090099b01a3140c062e4076680620402668062e406", + "0xb90183601891008022e4066700624c026759c01cb90188001891008022e406", + "0x62e40667c063d402680062e406674063d402008b90199e018930099f67807", + "0x22e4076880656c02688062e4066880622402688062e406685a001d59009a1", + "0x2694062e4066900609402690062e4060081f008022e40600809009a301a32", + "0xb9019a30195c008022e40600809008028cc0600876009a6018b9019a501822", + "0x2698062e4066a006088026a0062e40669c061d00269c062e4060081f00802", + "0x68d634018b901da901881009a9018b9019a901822009a9018b9019a601882", + "0x2360194700a36018b90180207c02008b901a340187e008022e4060080900902", + "0x61cc060c4028e4062e40651006030028e0062e4068dc06520028dc062e406", + "0x23c8ee3a8e40c01a3c018b901a380194900a3b018b90181e0188700a3a018b9", + "0xb90180259c028f4062e4060088d008022e406408061f802008b90180202402", + "0x62e406008a000a3f018b901a3e8f40713c028f8062e4068f806224028f806", + "0x62e4065100603002904062e4069000652802900062e4068fc5a01ca90085a", + "0x245018b901a410194900a44018b90181e0188700a43018b9018730183100a42", + "0xb90183601893008022e40666c061f802008b901802024029164490e4203006", + "0x62240291c062e4060096700a46018b90180223402008b9018800189300802", + "0xff01ca9008ff018b90180228002920062e40691e4601c4f00a47018b901a47", + "0x730183100a4b018b9019440180c00a4a018b901a490194a00a49018b901a48", + "0x24d9324b03006938062e4069280652402934062e4060780621c02930062e406", + "0x8001893008022e4060d80624c02008b90198c0187e008022e4060080900a4e", + "0x293c062e4060088d008022e4060a80632402008b90181901893008022e406", + "0xa000a51018b901a5093c0713c02940062e4069400622402940062e40600967", + "0x603002950062e40694c065280294c062e4069465201ca900a52018b901802", + "0x2540194900a57018b90181e0188700a56018b9018730183100a55018b901944", + "0x93008022e4065ec061f802008b901802024029625795a5503006960062e406", + "0xb90182a018c9008022e4060640624c02008b90188001893008022e4060d806", + "0x259c02964062e4060088d008022e4060a00632402008b9018700189300802", + "0x6008a000a5a018b9018fe9640713c023f8062e4063f806224023f8062e406", + "0x65100603002974062e4069700652802970062e40696a5b01ca900a5b018b9", + "0xb901a5d0194900a60018b90181e0188700a5f018b9018730183100a5e018b9", + "0x3601893008022e4065b4061f802008b901802024029866097e5e0300698406", + "0x2008b90182a018c9008022e4060640624c02008b90188001893008022e406", + "0x63540624c02008b90183501893008022e4060a00632402008b90187001893", + "0x23f4062e4063f406224023f4062e4060096700a62018b90180223402008b9", + "0x2994062e40698e6401ca900a64018b9018022800298c062e4063f66201c4f", + "0x8700a68018b9018730183100a67018b9019440180c00a66018b901a650194a", + "0xb901802024029aa699a267030069a8062e40699806524029a4062e40607806", + "0x624c02008b90188001893008022e4060d80624c02008b90195d0187e00802", + "0x22e4060a00632402008b90187001893008022e4060a80632402008b901819", + "0xd201893008022e4061980624c02008b9018d501893008022e4060d40624c02", + "0x26c018b901a6c0188900a6c018b90180259c029ac062e4060088d008022e406", + "0x26f018b901a6d9b8072a4029b8062e406008a000a6d018b901a6c9ac0713c02", + "0x29c8062e4061cc060c4029c4062e40651006030029c0062e4069bc0652802", + "0x600809008fc9ce729c40c018fc018b901a700194900a73018b90181e01887", + "0xc9008022e4060640624c02008b90188001893008022e4060d80624c02008b9", + "0xb90183501893008022e4060a00632402008b90187001893008022e4060a806", + "0x624c02008b9018d201893008022e4061980624c02008b9018d50189300802", + "0x61cc060c4029d4062e40651006030029d0062e4065280652802008b9018d4", + "0x2789de769d40c01a78018b901a740194900a77018b90181e0188700a76018b9", + "0x60d80624c02008b9018d401893008022e406504061f802008b90180202402", + "0x93008022e4060a80632402008b90181901893008022e4062000624c02008b9", + "0xb9018d501893008022e4060d40624c02008b901828018c9008022e4061c006", + "0x223402008b9018d3018ac008022e4063480624c02008b9018660189300802", + "0x69ea7901c4f00a7a018b901a7a0188900a7a018b90180259c029e4062e406", + "0xb901a7d0194a00a7d018b901a7b9f0072a4029f0062e406008a000a7b018b9", + "0x62e4060780621c02a00062e4061cc060c4029fc062e40600806030029f806", + "0x10e0187e008022e4060080900a82a06809fc0c01a82018b901a7e0194900a81", + "0x2008b90188001893008022e4060d80624c02008b9018d401893008022e406", + "0x60a00632402008b90187001893008022e4060a80632402008b90181901893", + "0x93008022e4061980624c02008b9018d501893008022e4060d40624c02008b9", + "0x62e4060096700a83018b90180223402008b9018d3018ac008022e40634806", + "0x285018b901802280023ec062e406a128301c4f00a84018b901a840188900a84", + "0x288018b9018020180c00a87018b901a860194a00a86018b9018fba14072a402", + "0x6a2c062e406a1c0652402a28062e4060780621c02a24062e4061cc060c402", + "0x22e4063500624c02008b9018f40187e008022e4060080900a8ba2a89a200c", + "0x2a018c9008022e4060640624c02008b90188001893008022e4060d80624c02", + "0x2008b90183501893008022e4060a00632402008b90187001893008022e406", + "0x634c062b002008b9018d201893008022e4061980624c02008b9018d501893", + "0x16700a8c018b90180223402008b9018d101968008022e4061880624c02008b9", + "0x228002a38062e406a368c01c4f00a8d018b901a8d0188900a8d018b901802", + "0x20180c00a91018b901a900194a00a90018b901a8ea3c072a402a3c062e406", + "0x6a440652402a50062e4060780621c02a4c062e4061cc060c402a48062e406", + "0x624c02008b9018e40187e008022e4060080900a95a5293a480c01a95018b9", + "0x22e4060640624c02008b90188001893008022e4060d80624c02008b9018d4", + "0x3501893008022e4060a00632402008b90187001893008022e4060a80632402", + "0x2008b9018d201893008022e4061980624c02008b9018d501893008022e406", + "0x61080624c02008b9018d101968008022e4061880624c02008b9018d3018ac", + "0x8900a97018b90180259c02a58062e4060088d008022e4063400632402008b9", + "0x72a402a64062e406008a000a98018b901a97a580713c02a5c062e406a5c06", + "0x60c402a70062e4060080603002a6c062e406a680652802a68062e406a6299", + "0x29da700c01a9f018b901a9b0194900a9e018b90181e0188700a9d018b901873", + "0x624c02008b90181201893008022e406334061f802008b90180202402a7e9e", + "0x22e4060a80632402008b90181901893008022e4062000624c02008b901836", + "0x4201893008022e4060d40624c02008b901828018c9008022e4061c00624c02", + "0x2008b90187e01969008022e4061880624c02008b90186601893008022e406", + "0x2a001c4f00aa1018b901aa10188900aa1018b90180259c02a80062e4060088d", + "0x2a40194a00aa4018b901aa2a8c072a402a8c062e406008a000aa2018b901aa1", + "0x60780621c02a9c062e4061cc060c402a98062e4060080603002a94062e406", + "0x7e008022e4060080900aa9aa2a7a980c01aa9018b901aa50194900aa8018b9", + "0xb90188001893008022e4060d80624c02008b90181201893008022e4062c406", + "0x632402008b90187001893008022e4060a80632402008b9018190189300802", + "0x22e4061980624c02008b90184201893008022e4060d40624c02008b901828", + "0x2f018c9008022e4060440624c02008b90187e01969008022e4061880624c02", + "0x2ab018b901aab0188900aab018b90180259c02aa8062e4060088d008022e406", + "0x2ae018b901aacab4072a402ab4062e406008a000aac018b901aabaa80713c02", + "0x2ac4062e4061cc060c402ac0062e4060080603002abc062e406ab80652802", + "0x60080900ab3acab1ac00c01ab3018b901aaf0194900ab2018b90181e01887", + "0x93008022e4060d80624c02008b90181201893008022e406114061f802008b9", + "0xb90187001893008022e4060a80632402008b90181901893008022e40620006", + "0x624c02008b90184201893008022e4060d40624c02008b901828018c900802", + "0x22e4060440624c02008b90187e01969008022e4061880624c02008b901866", + "0x60088d008022e40620c0635402008b90182001893008022e4060bc0632402", + "0xb901ab5ad00713c02ad4062e406ad40622402ad4062e4060096700ab4018b9", + "0x62e406ae00652802ae0062e406adab701ca900ab7018b90180228002ad806", + "0x2bc018b90181e0188700abb018b9018730183100aba018b9018020180c00ab9", + "0x60480624c02008b90180202402af6bcaeeba03006af4062e406ae40652402", + "0x93008022e4060640624c02008b90182001893008022e4060d80624c02008b9", + "0xb90183501893008022e4060300624c02008b90187001893008022e40604406", + "0x652802008b90186201893008022e4061980624c02008b9018420189300802", + "0x1e018870091c018b9018730183100abf018b9018020180c00abe018b901876", + "0x62e4060180608002b06c0472bf03006b04062e406af80652402b00062e406", + "0x6008090081101ac2080062e40702406188020240701cb90180c018420080c", + "0x420196b008022e406008090086201ac31081201cb901c20008075a802008b9", + "0x6198065b0021c0062e40601c06080020d4062e4060480603002198062e406", + "0x360196d00836018b90180207c02008b90180202402064700d40901819018b9", + "0x61cc065b002070062e40601c0608002078062e40618806030021cc062e406", + "0x6030021d0062e406044065b402008b9018020240207c1c078090181f018b9", + "0x760880901825018b9018740196c00876018b9018070182000822018b901802", + "0x2008b9018110184400812044072e4060800611c02008b9018070188500825", + "0xb901c4203009018020816e00842018b9018420182000842018b90181201845", + "0x3100873018b90183501941008022e406008090083606470026c40d46618809", + "0x21d80207c062e4061cc0650802070062e4061980621c02078062e40618806", + "0x1e018b9018700183100874018b90183601943008022e4060080900802b1406", + "0x21d8062e40607c065100207c062e4061d00650802070062e4060640621c02", + "0x2008b9018020240220806b1825018b901c22018c700822018b90187601945", + "0x4800828018b90187e018450087e018b9018810186600881018b901825018c8", + "0x621c02210062e406078060c402200062e4060a806124020a8062e4060a006", + "0x2008b9018020240220c2c2100901883018b9018800184a0082c018b90181c", + "0x4a00831018b90181c0188700885018b90181e018310082f018b9018820184c", + "0x42018b90180223402008b90180701885008870c4850240621c062e4060bc06", + "0x62e4061884201c4f00862018b9018660197000866024072e406024065bc02", + "0x62e4060097200870018b9018190d40713c020642001cb9018200197100835", + "0x1e018b901802400021cc062e4060d87001c4f00836018b9018360188900836", + "0x62e4060700622402070062e4060781f01d730081f044072e406044065c402", + "0x1201cb9018120197100822018b901802400021d0062e4060707301c4f0081c", + "0xb9018761d00713c021d8062e4061d806224021d8062e4060882501d7300825", + "0x62e4061f80611402008b901881018440087e204072e4062080611c0220806", + "0xc0a806008205b8020a0062e4060a006080020a80901cb9018090196f00828", + "0x62e4060b00650402008b901802024022142f20c09b1c2c21080024b901c28", + "0x88018b9018310194200886018b9018840188700887018b9018800183100831", + "0x620c060c402224062e4062140650c02008b9018020240200ac8018021d802", + "0xb9018880194400888018b9018890194200886018b90182f0188700887018b9", + "0x6008090088d01ac90ec062e4070e00631c020e0062e406228065140222806", + "0x93018b9018112440713c02244062e4060088d008022e4060ec065d002008b9", + "0x22e406100061100211c4001cb9018960184700896018b90181224c0713c02", + "0x7110200248621c205b802110062e4061100608002110062e40611c0611402", + "0x2274062e4061240650402008b901802024022644c12809b284912045024b9", + "0x76008a9018b90189d01942008a0018b901848018870084f018b90184501831", + "0x62e406128060c4022a8062e4062640650c02008b9018020240200acb01802", + "0xac018b9018a901944008a9018b9018aa01942008a0018b90184c018870084f", + "0x22e40600809008ad01acc154062e40714c0631c0214c062e4062b00651402", + "0x22c4062e4062b806124022b8062e40615c061200215c062e4061540632002", + "0x9018c1018b9018b10184a00800018b9018a001887008c0018b90184f01831", + "0xc3018b90184f01831008c2018b9018ad0184c008022e40600809008c1000c0", + "0x600809008c5310c302406314062e4063080612802310062e4062800621c02", + "0x93008022e4060480624c02008b901809018dc008022e4060800624c02008b9", + "0x8601887008c6018b90188701831008bf018b90188d0184c008022e40604406", + "0x2008b90180701885008c831cc602406320062e4062fc061280231c062e406", + "0x60081f008022e406008090084204811026cd0800c01cb901c090180202575", + "0xb9018200188700835018b90180c0183100866018b9018620190600862018b9", + "0x62ec02008b9018020240200ace018021d802064062e4061980641c021c006", + "0x360190700870018b9018120188700835018b9018110183100836018b901842", + "0x71cc06338021cc062e4060780642402078062e4060640642002064062e406", + "0x62e4060081f008022e4060700633c02008b9018020240207c06b3c1c018b9", + "0x25018b9018350183100876018b9018220194800822018b9018740194700874", + "0x600809008812082502406204062e4061d80652402208062e4061c00621c02", + "0x62e4061c00621c020a0062e4060d4060c4021f8062e40607c0652802008b9", + "0xc01847008022e40601c06214022002a0a00901880018b90187e019490082a", + "0x60480608002048062e4060440611402008b9018200184400811080072e406", + "0xb901802024021c03519809b4062108072e40704809018020310100812018b9", + "0x21cc062e406108060c4020d8062e4060640641802064062e4060081f00802", + "0x60080900802b4406008760081c018b901836019070081e018b90186201887", + "0x62e4060d40621c021cc062e406198060c40207c062e4061c0062ec02008b9", + "0x74018b9018220190900822018b90181c019080081c018b90181f019070081e", + "0x2008b901876018cf008022e406008090082501ad21d8062e4071d00633802", + "0x60c4021f8062e4062040652002204062e4062080651c02208062e4060081f", + "0x2a0a00901880018b90187e019490082a018b90181e0188700828018b901873", + "0x870082c018b9018730183100884018b9018250194a008022e4060080900880", + "0x22e406008840082f20c2c024060bc062e406210065240220c062e40607806", + "0x2198062e40600806030020800c01cb90180601976008022e4060240621402", + "0x17800819018b9018200197700870018b9018070183100835018b90180c018e1", + "0x62e4060081f008022e406188065e4021884204811030b9018191c0351980c", + "0x1c018b901842018310081e018b901812018e100873018b9018110180c00836", + "0x63b802018062e406008061980207c1c078730300607c062e4060d80645002", + "0xf000820018b901809018ef008022e406008090080c01ad30240701cb901c06", + "0xb9018020240200ad4018021d802048062e406080063c402044062e40601c06", + "0x2044062e406030063c002188062e406108063c802108062e4060081f00802", + "0xf300866018b9018660182000866018b9018110184500812018b901862018f1", + "0xf500819018b901835018f4008022e406008090087001ad50d4062e40704806", + "0x25e802008b901873018930081e1cc072e4060d806244020d8062e40606406", + "0x6078063d402008b90181f018930087407c072e4060700624402070062e406", + "0xb901874018f5008022e4061d80624c020947601cb9018220189100822018b9", + "0x62e406094063d402008b901881018930087e204072e406208062440220806", + "0x62e4060a82801d5900828018b901828018890082a018b90187e018f500828", + "0x22e406008090088401ad6008b901c800195b00880018b9018800188900880", + "0x760082f018b9018830182200883018b90182c018250082c018b90180207c02", + "0x2214062e4060081f008022e4062100657002008b9018020240200ad701802", + "0x17b00887018b90182f018820082f018b9018310182200831018b90188501874", + "0x8801c06224062e406218065f002220062e4061980608002218062e40621c06", + "0x380197d00838018b90180207c02008b9018700187e008022e4060080900889", + "0x22343b01c06234062e406228065f0020ec062e4061980608002228062e406", + "0x611402008b9018120184400842048072e4060800611c02008b90180701885", + "0xc2e4070446203009018020457e00862018b9018620182000862018b901842", + "0x2070062e4060647001d7f008022e406008090081e1cc36026d8064700d466", + "0x18100822018b9018350188700874018b901866018310081f018b90181c01980", + "0x62e4060780660802008b9018020240200ad9018021d8021d8062e40607c06", + "0x76018b9018250198100822018b9018730188700874018b9018360183100825", + "0x2da1f8062e4072080661402208062e4062040661002204062e4061d80660c02", + "0x651c020a8062e4060081f008022e4061f80661802008b901802024020a006", + "0x22018870082c018b9018740183100884018b9018800194800880018b90182a", + "0x14a008022e406008090082f20c2c024060bc062e406210065240220c062e406", + "0x65240221c062e4060880621c020c4062e4061d0060c402214062e4060a006", + "0x2008b90180601893008022e4060080621402218870c40901886018b901885", + "0x60301101d7300811024072e406024065c4020240601809018b90180701889", + "0xb9018060188700835018b9018020183100812018b9018070198700820018b9", + "0x36064700d40c624020d8062e4060800622402064062e40604806620021c006", + "0x18b008022e406008090081e01adb1cc062e407198066280219862108092e406", + "0x7630021d0062e4060700620c02008b90181f0187e0081f070072e4061cc06", + "0x621c02094062e406108060c4021d8062e4060880663402088062e40602474", + "0x2008b90180202402204820940901881018b9018760198e00882018b901862", + "0x621c020a0062e406108060c4021f8062e4060780663c02008b90180901893", + "0x62e40700806640022002a0a00901880018b90187e0198e0082a018b901862", + "0x62e4060240652002024062e4060180651c02008b9018020240201c06b7006", + "0x11018b90180228002008b901802024020800601820018b90180c019490080c", + "0x62018b9018420194900842018b9018120194a00812018b901807044072a402", + "0x60180644002008b9018020240201c06b7406018b901c02019910086201806", + "0x2024020800601820018b90180c019120080c018b9018090191100809018b9", + "0xb9018120191300812018b901807044072a402044062e406008a0008022e406", + "0x62e40600828008022e406008840086201806188062e406108064480210806", + "0x21884201ede0481101cb901c20018020248000820018b9018200182a00820", + "0x656c02044062e40604406030021980c01cb90180c01971008022e40600809", + "0x60240664802008b90180c01893008022e406008090083501adf008b901c66", + "0x604406030020d8062e406064064f002064062e4061c00701d3b00870018b9", + "0x20701e1cc090181c018b9018360193d0081e018b9018120183100873018b9", + "0x60880610802088062e40601c0608002008b9018350195c008022e40600809", + "0x901c4f008022e406008090082501ae01d8062e4071d006188021d01f01cb9", + "0x110180c0087e018b9018810300756402204062e4060090000882018b901876", + "0x6208062580220c062e40607c06080020b0062e406048060c402210062e406", + "0x800a828024b9018850bc830b0840813a00885018b90187e018890082f018b9", + "0x8601cb901831018c4008022e406008090088701ae10c4062e4072000630c02", + "0x62e4060a006030020e0062e406224064f002224062e4062208601d3b00888", + "0x2024022343b228090188d018b9018380193d0083b018b90182a018310088a", + "0xb90182a0183100893018b9018280180c00891018b9018870193e008022e406", + "0xc01893008022e40600809008402589302406100062e406244064f40225806", + "0xb90184707c074ec0211c062e406094064fc02008b90180901844008022e406", + "0x62e406048060c402120062e4060440603002114062e406110064f00211006", + "0x60300624c02008b9018020240212849120090184a018b9018450193d00849", + "0x9d0084c018b90180223402008b901807018ac008022e4060240611002008b9", + "0x228002274062e4062644c01c4f00899018b9018990188900899018b901802", + "0x420180c008a9018b9018a00193e008a0018b90189d13c072a40213c062e406", + "0xac14caa024062b0062e4062a4064f40214c062e406188060c4022a8062e406", + "0x9018b90180601848008022e406008090080701ae2018062e4070080664c02", + "0x22e406008090082001806080062e4060300612802030062e4060240612402", + "0x2108062e4060480613002048062e40601c1101ca900811018b90180228002", + "0x90080c01ae30240701cb901c0600807650021880601862018b9018420184a", + "0x60800653402044062e40601c0603002080062e4060240653002008b901802", + "0x653802108062e4060081f008022e4060080900802b90060087600812018b9", + "0x110190400812018b9018620194d00811018b90180c0180c00862018b901842", + "0x7024b901c0600807658020d46601c060d4062e4060480665402198062e406", + "0x70183100842018b90180c01997008022e406008090081204420026e503009", + "0x2e6018021d8020d4062e4061080666002198062e4060240621c02188062e406", + "0x8700862018b9018200183100870018b90181201999008022e4060080900802", + "0x640c020d8062e4060d406668020d4062e4061c00666002198062e40604406", + "0x654802008b9018020240207806b9c73018b901c190195100819018b901836", + "0x620183100874018b90181f0199c0081f018b90181c0199b0081c018b901873", + "0x251d82202406094062e4061d006674021d8062e4061980621c02088062e406", + "0x621c02204062e406188060c402208062e4060780667802008b90180202402", + "0x701c060080967c020a07e2040901828018b9018820199d0087e018b901866", + "0x11019a100811018b90180c019a0008022e406008090082001ae80300901cb9", + "0x21884201c06188062e4060480668802108062e4060240603002048062e406", + "0xb9018350188900835018b90180268c02198062e4060088d008022e40600809", + "0xb901870064072a402064062e406008a000870018b9018351980713c020d406", + "0x62e4061cc0668802078062e40608006030021cc062e4060d806690020d806", + "0x12044200300c2e4060240601c02031a5008022e406008840081c078070181c", + "0x2198062e406080060c402188062e4060440638402108062e4060300603002", + "0x201c06ba406018b901c02019a700835198621080c01835018b901812019a6", + "0xc01a340080c018b901809019a900809018b901806019a8008022e40600809", + "0x7044072a402044062e406008a0008022e406008090082001806080062e406", + "0x2360086201806188062e406108068d002108062e4060480640802048062e406", + "0x1101a3900811018b9018028e002008b90182001a3700820030072e40601c06", + "0xb9018120188800842018b9018420181e00842018b9018020d802048062e406", + "0xb90180202402064700d409ba866188072e4070241210806008204140204806", + "0x2078062e406188060c4021cc062e4060d806418020d8062e4060081f00802", + "0x60080900802bac06008760081f018b901873019070081c018b90186601887", + "0x62e4061c00621c02078062e4060d4060c4021d0062e406064062ec02008b9", + "0x22018b9018760190900876018b90181f019080081f018b901874019070081c", + "0x81018b90182501a3a008022e406008090088201aec094062e4070880633802", + "0x2a018b90181e0183100828018b90187e01a3c0087e018b901881030078ec02", + "0x600809008842002a02406210062e4060a0068f402200062e4060700621c02", + "0x83018b90181e018310082c018b90188201a3e008022e406030068dc02008b9", + "0x201a3f008850bc8302406214062e4060b0068f4020bc062e4060700621c02", + "0x90199c00809018b9018060199b008022e406008090080701aed018062e407", + "0x6008a0008022e406008090082001806080062e4060300667402030062e406", + "0x61080667402108062e4060480667802048062e40601c1101ca900811018b9", + "0x60080c0080901c06008761cc060080c0807301802030401880601862018b9", + "0x7018021d87301802030201cc060080c51c0901c06008761cc060080c08073", + "0x60080c0807301802032ee02407018021d87301802030201cc060080ca5409", + "0x60080cbc00901c06008761cc060080c0807301802032ef02407018021d873", + "0x7018021d87301802030201cc060080cbc40901c06008761cc060080c08073", + "0x2080201cc0622002082f302407018021d87301802030201cc060080cbc809", + "0x2f502407018021d87301802030201cc060080cbd00c02407018021d87301888", + "0x761cc060080c0807301802032f602407018021d87301802030201cc060080c", + "0x7301820be4021882001c2001af80180210820008090800201ef70240701802", + "0x71cc06bec0600812024070240701efa0300901c06008741cc060240704436", + "0x70180220006008090800600809bf4060087e080020242000807bf00204873", + "0x9024361cc06082ff0800c02407018021d8730180902407094361cc06046fe", + "0x2f0d8730180cc040600885080020242000807c000c024070180220c7301809", + "0x701c0701c0701c0701c0701c070d873018021cf0202407018021d07301809", + "0x90800201f030d8191c0351986210812044200300901c06008831cc060080c", + "0x42c14200300901c06008761cc060240901c310d87301811c10060088608002", + "0x361cc0603306048110800c02407018021d8730180901c0701c070c4361cc06", + "0xc024070180220c7301809024070d87301820c1c0901c06008831cc0602431", + "0x604b0a008890800708006c240901c0600812018880080c0d8062200203308", + "0x201c0601c070d809c2c110800c024070180220c73018090d40901c310d873", + "0x30e008830189101b0d0300901c060088a1cc060240701c361cc060830c01c06", + "0x625806c400c0240701802200060080901c090800600820c3c021d00624c06", + "0xc00809c4c06008991cc060247301807c4806008850080701c0201f1100876", + "0xac01b1502407018022a80622002030a9018880080cc5007018022800201c66", + "0xc6002264062c406c5c0901c06008ae1cc0602407064730180cc58022b406" ], "sierra_program_debug_info": { "type_names": [], @@ -2063,6 +2277,16 @@ ], "state_mutability": "view" }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, { "type": "function", "name": "test_call_contract", @@ -2282,6 +2506,20 @@ ], "state_mutability": "view" }, + { + "type": "enum", + "name": "core::bool", + "variants": [ + { + "name": "False", + "type": "()" + }, + { + "name": "True", + "type": "()" + } + ] + }, { "type": "function", "name": "test_deploy", @@ -2305,6 +2543,12 @@ ], "outputs": [], "state_mutability": "view" + }, + { + "type": "event", + "name": "test_contract::test_contract::TestContract::Event", + "kind": "enum", + "variants": [] } ] } \ No newline at end of file diff --git a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo index a46db072bd..940f1e2126 100644 --- a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo +++ b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo @@ -20,13 +20,13 @@ mod TestContract { } #[constructor] - fn constructor(ref self: Storage, arg1: felt252, arg2: felt252) -> felt252 { + fn constructor(ref self: ContractState, arg1: felt252, arg2: felt252) -> felt252 { self.my_storage_var.write(arg1 + arg2); arg1 } #[external] - fn test_storage_read_write(self: @Storage, address: StorageAddress, value: felt252) -> felt252 { + fn test_storage_read_write(self: @ContractState, address: StorageAddress, value: felt252) -> felt252 { let address_domain = 0; starknet::syscalls::storage_write_syscall(address_domain, address, value).unwrap_syscall(); starknet::syscalls::storage_read_syscall(address_domain, address).unwrap_syscall() @@ -35,7 +35,7 @@ mod TestContract { #[external] #[raw_output] fn test_call_contract( - self: @Storage, + self: @ContractState, contract_address: ContractAddress, entry_point_selector: felt252, calldata: Array:: @@ -46,18 +46,18 @@ mod TestContract { } #[external] - fn test_emit_event(self: @Storage, keys: Array::, data: Array::) { + fn test_emit_event(self: @ContractState, keys: Array::, data: Array::) { starknet::syscalls::emit_event_syscall(keys.span(), data.span()).unwrap_syscall(); } #[external] - fn test_get_block_hash(self: @Storage, block_number: u64) -> felt252 { + fn test_get_block_hash(self: @ContractState, block_number: u64) -> felt252 { starknet::syscalls::get_block_hash_syscall(block_number).unwrap_syscall() } #[external] fn test_get_execution_info( - self: @Storage, + self: @ContractState, // Expected block info. block_number: felt252, block_timestamp: felt252, @@ -99,7 +99,7 @@ mod TestContract { #[external] #[raw_output] fn test_library_call( - self: @Storage, + self: @ContractState, class_hash: ClassHash, function_selector: felt252, calldata: Array @@ -112,7 +112,7 @@ mod TestContract { #[external] #[raw_output] fn test_nested_library_call( - self: @Storage, + self: @ContractState, class_hash: ClassHash, lib_selector: felt252, nested_selector: felt252, @@ -138,30 +138,30 @@ mod TestContract { } #[external] - fn test_replace_class(self: @Storage, class_hash: ClassHash) { + fn test_replace_class(self: @ContractState, class_hash: ClassHash) { starknet::syscalls::replace_class_syscall(class_hash).unwrap_syscall(); } #[external] - fn test_send_message_to_l1(self: @Storage, to_address: felt252, payload: Array::) { + fn test_send_message_to_l1(self: @ContractState, to_address: felt252, payload: Array::) { starknet::send_message_to_l1_syscall(to_address, payload.span()).unwrap_syscall(); } /// An external method that requires the `segment_arena` builtin. #[external] - fn segment_arena_builtin(self: @Storage) { + fn segment_arena_builtin(self: @ContractState) { let x = felt252_dict_new::(); x.squash(); } #[l1_handler] - fn l1_handle(self: @Storage, from_address: felt252, arg: felt252) -> felt252 { + fn l1_handle(self: @ContractState, from_address: felt252, arg: felt252) -> felt252 { arg } #[external] fn test_deploy( - self: @Storage, + self: @ContractState, class_hash: ClassHash, contract_address_salt: felt252, calldata: Array::, diff --git a/crates/blockifier/src/execution/syscalls/syscalls_test.rs b/crates/blockifier/src/execution/syscalls/syscalls_test.rs index 60677544ea..c8737a2687 100644 --- a/crates/blockifier/src/execution/syscalls/syscalls_test.rs +++ b/crates/blockifier/src/execution/syscalls/syscalls_test.rs @@ -31,8 +31,8 @@ use crate::test_utils::{ TEST_CONTRACT_ADDRESS, TEST_EMPTY_CONTRACT_CLASS_HASH, TEST_EMPTY_CONTRACT_PATH, }; -pub const REQUIRED_GAS_STORAGE_READ_WRITE_TEST: u64 = 35170; -pub const REQUIRED_GAS_CALL_CONTRACT_TEST: u64 = 129650; +pub const REQUIRED_GAS_STORAGE_READ_WRITE_TEST: u64 = 35050; +pub const REQUIRED_GAS_CALL_CONTRACT_TEST: u64 = 128880; pub const REQUIRED_GAS_LIBRARY_CALL_TEST: u64 = REQUIRED_GAS_CALL_CONTRACT_TEST; #[test] @@ -117,7 +117,7 @@ fn test_emit_event() { entry_point_call.execute_directly(&mut state).unwrap().execution, CallExecution { events: vec![OrderedEvent { order: 0, event }], - gas_consumed: stark_felt!(53940_u64), + gas_consumed: stark_felt!(52970_u64), ..Default::default() } ); @@ -146,7 +146,7 @@ fn test_get_block_hash() { assert_eq!( entry_point_call.execute_directly(&mut state).unwrap().execution, CallExecution { - gas_consumed: stark_felt!(15750_u64), + gas_consumed: stark_felt!(15650_u64), ..CallExecution::from_retdata(retdata![block_hash]) } ); @@ -240,7 +240,7 @@ fn test_nested_library_call() { class_hash: Some(ClassHash(stark_felt!(TEST_CLASS_HASH))), code_address: None, call_type: CallType::Delegate, - initial_gas: Felt252::from(9999718720_u64), + initial_gas: Felt252::from(9999719920_u64), ..trivial_external_entry_point() }; let library_entry_point = CallEntryPoint { @@ -255,16 +255,16 @@ fn test_nested_library_call() { class_hash: Some(ClassHash(stark_felt!(TEST_CLASS_HASH))), code_address: None, call_type: CallType::Delegate, - initial_gas: Felt252::from(9999813200_u64), + initial_gas: Felt252::from(9999813750_u64), ..trivial_external_entry_point() }; let storage_entry_point = CallEntryPoint { calldata: calldata![stark_felt!(key), stark_felt!(value)], - initial_gas: Felt252::from(9999622550_u64), + initial_gas: Felt252::from(9999623870_u64), ..nested_storage_entry_point }; let storage_entry_point_vm_resources = VmExecutionResources { - n_steps: 148, + n_steps: 147, n_memory_holes: 2, builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 5)]), }; @@ -280,12 +280,11 @@ fn test_nested_library_call() { accessed_storage_keys: HashSet::from([StorageKey(patricia_key!(key + 1))]), ..Default::default() }; - let mut library_call_vm_resources = VmExecutionResources { - n_steps: 277, - n_memory_holes: 2, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 8)]), + let library_call_vm_resources = VmExecutionResources { + n_steps: 419, + n_memory_holes: 4, + builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 13)]), }; - library_call_vm_resources += &storage_entry_point_vm_resources; let library_call_info = CallInfo { call: library_entry_point, execution: CallExecution { @@ -293,7 +292,7 @@ fn test_nested_library_call() { gas_consumed: stark_felt!(REQUIRED_GAS_LIBRARY_CALL_TEST), ..CallExecution::default() }, - vm_resources: library_call_vm_resources.clone(), + vm_resources: library_call_vm_resources, inner_calls: vec![nested_storage_call_info], ..Default::default() }; @@ -304,23 +303,22 @@ fn test_nested_library_call() { gas_consumed: stark_felt!(REQUIRED_GAS_STORAGE_READ_WRITE_TEST), ..CallExecution::default() }, - vm_resources: storage_entry_point_vm_resources.clone(), + vm_resources: storage_entry_point_vm_resources, storage_read_values: vec![stark_felt!(value)], accessed_storage_keys: HashSet::from([StorageKey(patricia_key!(key))]), ..Default::default() }; - let mut main_call_vm_resources = VmExecutionResources { - n_steps: 368, - n_memory_holes: 4, - builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 10)]), + let main_call_vm_resources = VmExecutionResources { + n_steps: 781, + n_memory_holes: 8, + builtin_instance_counter: HashMap::from([(RANGE_CHECK_BUILTIN_NAME.to_string(), 23)]), }; - main_call_vm_resources += &library_call_vm_resources; let expected_call_info = CallInfo { call: main_entry_point.clone(), execution: CallExecution { retdata: retdata![stark_felt!(value)], - gas_consumed: stark_felt!(319220_u64), + gas_consumed: stark_felt!(317780_u64), ..CallExecution::default() }, vm_resources: main_call_vm_resources, @@ -371,7 +369,7 @@ fn test_replace_class() { }; assert_eq!( entry_point_call.execute_directly(&mut state).unwrap().execution, - CallExecution { gas_consumed: stark_felt!(14960_u64), ..Default::default() } + CallExecution { gas_consumed: stark_felt!(14850_u64), ..Default::default() } ); assert_eq!(state.get_class_hash_at(contract_address).unwrap(), new_class_hash); } @@ -398,7 +396,7 @@ fn test_send_message_to_l1() { entry_point_call.execute_directly(&mut state).unwrap().execution, CallExecution { l2_to_l1_messages: vec![OrderedL2ToL1Message { order: 0, message }], - gas_consumed: stark_felt!(39040_u64), + gas_consumed: stark_felt!(38390_u64), ..Default::default() } ); @@ -498,7 +496,7 @@ fn test_deploy( stark_felt!(0_u64) } else { retdata.0.push(constructor_calldata.0[0]); - stark_felt!(17260_u64) + stark_felt!(17040_u64) }; assert_eq!( deploy_call.execution, From 739d19bc179198c5e2cab8db630b2dff5e7d6c34 Mon Sep 17 00:00:00 2001 From: dorimedini-starkware Date: Mon, 19 Jun 2023 12:30:39 +0300 Subject: [PATCH 08/19] Implement create_test_state (#629) Signed-off-by: Dori Medini --- .../transaction/account_transactions_test.rs | 68 +++++++++++-------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index c98a3c3f8e..79bfab403c 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use starknet_api::core::{calculate_contract_address, ClassHash}; +use starknet_api::core::{calculate_contract_address, ClassHash, ContractAddress}; use starknet_api::hash::StarkFelt; use starknet_api::transaction::{ Calldata, ContractAddressSalt, DeclareTransactionV0V1, Fee, InvokeTransaction, @@ -21,6 +21,13 @@ use crate::test_utils::{ use crate::transaction::account_transaction::AccountTransaction; use crate::transaction::transactions::{DeclareTransaction, ExecutableTransaction}; +struct TestInitData { + pub state: CachedState, + pub account_address: ContractAddress, + pub contract_address: ContractAddress, + pub nonce_manager: NonceManager, +} + fn create_state() -> CachedState { let block_context = BlockContext::create_for_account_testing(); @@ -42,11 +49,8 @@ fn create_state() -> CachedState { }) } -#[test] -fn test_account_flow_test() { - let state = &mut create_state(); - let block_context = &BlockContext::create_for_account_testing(); - let max_fee = Fee(MAX_FEE); +fn create_test_state(max_fee: Fee, block_context: &BlockContext) -> TestInitData { + let mut state = create_state(); let mut nonce_manager = NonceManager::default(); // Deploy an account contract. @@ -57,12 +61,12 @@ fn test_account_flow_test() { None, &mut nonce_manager, ); - let deployed_account_address = deploy_account_tx.contract_address; + let account_address = deploy_account_tx.contract_address; // Update the balance of the about-to-be deployed account contract in the erc20 contract, so it // can pay for the transaction execution. let deployed_account_balance_key = - get_storage_var_address("ERC20_balances", &[*deployed_account_address.0.key()]).unwrap(); + get_storage_var_address("ERC20_balances", &[*account_address.0.key()]).unwrap(); state.set_storage_at( block_context.fee_token_address, deployed_account_balance_key, @@ -70,53 +74,63 @@ fn test_account_flow_test() { ); let account_tx = AccountTransaction::DeployAccount(deploy_account_tx); - account_tx.execute(state, block_context).unwrap(); + account_tx.execute(&mut state, block_context).unwrap(); // Declare a contract. let contract_class = ContractClassV0::from_file(TEST_CONTRACT_PATH).into(); - let declare_tx = declare_tx(TEST_CLASS_HASH, deployed_account_address, max_fee, None); + let declare_tx = declare_tx(TEST_CLASS_HASH, account_address, max_fee, None); let account_tx = AccountTransaction::Declare( DeclareTransaction::new( starknet_api::transaction::DeclareTransaction::V1(DeclareTransactionV0V1 { - nonce: nonce_manager.next(deployed_account_address), + nonce: nonce_manager.next(account_address), ..declare_tx }), contract_class, ) .unwrap(), ); - account_tx.execute(state, block_context).unwrap(); + account_tx.execute(&mut state, block_context).unwrap(); // Deploy a contract using syscall deploy. let entry_point_selector = selector_from_name("deploy_contract"); let salt = ContractAddressSalt::default(); let class_hash = ClassHash(stark_felt!(TEST_CLASS_HASH)); let execute_calldata = calldata![ - *deployed_account_address.0.key(), // Contract address. - entry_point_selector.0, // EP selector. - stark_felt!(5_u8), // Calldata length. - class_hash.0, // Calldata: class_hash. - salt.0, // Contract_address_salt. - stark_felt!(2_u8), // Constructor calldata length. - stark_felt!(1_u8), // Constructor calldata: address. - stark_felt!(1_u8) // Constructor calldata: value. + *account_address.0.key(), // Contract address. + entry_point_selector.0, // EP selector. + stark_felt!(5_u8), // Calldata length. + class_hash.0, // Calldata: class_hash. + salt.0, // Contract_address_salt. + stark_felt!(2_u8), // Constructor calldata length. + stark_felt!(1_u8), // Constructor calldata: address. + stark_felt!(1_u8) // Constructor calldata: value. ]; - let tx = invoke_tx(execute_calldata, deployed_account_address, max_fee, None); + let tx = invoke_tx(execute_calldata, account_address, max_fee, None); let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { - nonce: nonce_manager.next(deployed_account_address), + nonce: nonce_manager.next(account_address), ..tx })); - account_tx.execute(state, block_context).unwrap(); + account_tx.execute(&mut state, block_context).unwrap(); // Calculate the newly deployed contract address let contract_address = calculate_contract_address( ContractAddressSalt::default(), class_hash, &calldata![stark_felt!(1_u8), stark_felt!(1_u8)], - deployed_account_address, + account_address, ) .unwrap(); + TestInitData { state, account_address, contract_address, nonce_manager } +} + +#[test] +fn test_account_flow_test() { + let max_fee = Fee(MAX_FEE); + let block_context = &BlockContext::create_for_account_testing(); + let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = + create_test_state(max_fee, block_context); + // Invoke a function from the newly deployed contract. let entry_point_selector = selector_from_name("return_result"); let execute_calldata = calldata![ @@ -125,10 +139,10 @@ fn test_account_flow_test() { stark_felt!(1_u8), // Calldata length. stark_felt!(2_u8) // Calldata: num. ]; - let tx = invoke_tx(execute_calldata, deployed_account_address, max_fee, None); + let tx = invoke_tx(execute_calldata, account_address, max_fee, None); let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { - nonce: nonce_manager.next(deployed_account_address), + nonce: nonce_manager.next(account_address), ..tx })); - account_tx.execute(state, block_context).unwrap(); + account_tx.execute(&mut state, block_context).unwrap(); } From afaf42b17a4eb29eefb2fce87c1409c850d847c8 Mon Sep 17 00:00:00 2001 From: dorimedini-starkware Date: Mon, 19 Jun 2023 14:46:50 +0300 Subject: [PATCH 09/19] Expose chain names to python (#633) Signed-off-by: Dori Medini --- crates/native_blockifier/src/lib.rs | 3 ++- crates/native_blockifier/src/py_utils.rs | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/native_blockifier/src/lib.rs b/crates/native_blockifier/src/lib.rs index 8eb829ee8e..0162e66601 100644 --- a/crates/native_blockifier/src/lib.rs +++ b/crates/native_blockifier/src/lib.rs @@ -17,7 +17,7 @@ use pyo3::prelude::*; use storage::Storage; use crate::py_state_diff::PyStateDiff; -use crate::py_utils::raise_error_for_testing; +use crate::py_utils::{all_chain_names, raise_error_for_testing}; #[pymodule] fn native_blockifier(py: Python<'_>, py_module: &PyModule) -> PyResult<()> { @@ -35,6 +35,7 @@ fn native_blockifier(py: Python<'_>, py_module: &PyModule) -> PyResult<()> { py_module.add_class::()?; add_py_exceptions(py, py_module)?; + py_module.add_function(wrap_pyfunction!(all_chain_names, py)?)?; // TODO(Dori, 1/4/2023): If and when supported in the Python build environment, gate this code // with #[cfg(test)]. py_module.add_function(wrap_pyfunction!(raise_error_for_testing, py)?)?; diff --git a/crates/native_blockifier/src/py_utils.rs b/crates/native_blockifier/src/py_utils.rs index b560e415d2..cd1b46bf0f 100644 --- a/crates/native_blockifier/src/py_utils.rs +++ b/crates/native_blockifier/src/py_utils.rs @@ -80,6 +80,11 @@ where values.into_iter().map(converter).collect() } +#[pyfunction] +pub fn all_chain_names() -> Vec { + CHAIN_NAMES.iter().map(|s| s.to_string()).collect() +} + pub fn to_chain_id_enum(value: BigUint) -> NativeBlockifierResult { let expected_name = String::from_utf8_lossy(&value.to_bytes_be()).to_string(); for chain_name in CHAIN_NAMES { From 965f3e79bfafdda6062febbc762c2d1c56eb3882 Mon Sep 17 00:00:00 2001 From: amosStarkware <88497213+amosStarkware@users.noreply.github.com> Date: Mon, 19 Jun 2023 14:59:48 +0300 Subject: [PATCH 10/19] Add PRIVATE_SN_POTC_MOCK_GOERLI chain name. (#634) --- crates/native_blockifier/src/py_utils.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/native_blockifier/src/py_utils.rs b/crates/native_blockifier/src/py_utils.rs index cd1b46bf0f..2c2a084066 100644 --- a/crates/native_blockifier/src/py_utils.rs +++ b/crates/native_blockifier/src/py_utils.rs @@ -10,8 +10,13 @@ use starknet_api::transaction::EthAddress; use crate::errors::NativeBlockifierResult; -pub const CHAIN_NAMES: &[&str; 4] = - &["SN_MAIN", "SN_GOERLI", "SN_GOERLI2", "PRIVATE_SN_POTC_GOERLI"]; +pub const CHAIN_NAMES: &[&str; 5] = &[ + "SN_MAIN", + "SN_GOERLI", + "SN_GOERLI2", + "PRIVATE_SN_POTC_GOERLI", + "PRIVATE_SN_POTC_MOCK_GOERLI", +]; #[derive(Eq, FromPyObject, Hash, PartialEq, Clone, Copy)] pub struct PyFelt(#[pyo3(from_py_with = "pyint_to_stark_felt")] pub StarkFelt); From 0a8c5cacb4c17d85493bbb29f9b5da649649337b Mon Sep 17 00:00:00 2001 From: giladchase Date: Mon, 19 Jun 2023 15:08:10 +0300 Subject: [PATCH 11/19] Don't close executor inside finalize (#630) Move responsibility to caller. Rationale: finalize isn't guaranteed to be run, which might leave dangling read transactions. --- crates/native_blockifier/src/py_transaction.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/native_blockifier/src/py_transaction.rs b/crates/native_blockifier/src/py_transaction.rs index 964627efdd..f61d00bd3b 100644 --- a/crates/native_blockifier/src/py_transaction.rs +++ b/crates/native_blockifier/src/py_transaction.rs @@ -312,7 +312,6 @@ impl PyTransactionExecutor { pub fn finalize(&mut self) -> PyStateDiff { log::debug!("Finalizing execution..."); let state_diff = self.executor().finalize(); - self.close(); log::debug!("Finalized execution."); state_diff From eb553a122a60498dfc79fea878778f25bdee4e3e Mon Sep 17 00:00:00 2001 From: Elin Date: Tue, 20 Jun 2023 09:11:58 +0300 Subject: [PATCH 12/19] Add comment in `Cargo.toml`. (#624) --- Cargo.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 5f29de743e..162d36a1ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,11 @@ num-bigint = "0.4" num-integer = "0.1.45" num-traits = "0.2" ouroboros = "0.15.6" + +# IMPORTANT: next upgrade should delete replaced classes table handling. +# https://github.com/starkware-libs/blockifier/blob/54002da4b11c3c839a1221122cc18330854f563c/crates/native_blockifier/src/storage.rs#L145-L164 papyrus_storage = { git = "https://github.com/starkware-libs/papyrus", rev = "09aab31" } + phf = { version = "0.11", features = ["macros"] } pretty_assertions = "1.2.1" serde = "1.0.130" From f0df7f919a7915f8d4cff293f14d67593e7e151f Mon Sep 17 00:00:00 2001 From: dorimedini-starkware Date: Tue, 20 Jun 2023 12:54:32 +0300 Subject: [PATCH 13/19] Don't check chain ID validity (#637) Signed-off-by: Dori Medini --- crates/blockifier/src/transaction/errors.rs | 2 -- crates/native_blockifier/src/lib.rs | 3 +-- crates/native_blockifier/src/py_utils.rs | 24 ++------------------- 3 files changed, 3 insertions(+), 26 deletions(-) diff --git a/crates/blockifier/src/transaction/errors.rs b/crates/blockifier/src/transaction/errors.rs index aa2caf18b4..8f571aaad7 100644 --- a/crates/blockifier/src/transaction/errors.rs +++ b/crates/blockifier/src/transaction/errors.rs @@ -45,8 +45,6 @@ pub enum TransactionExecutionError { UnauthorizedInnerCall { entry_point_kind: String }, #[error("Unexpected holes in the {object} order. Two objects with the same order: {order}.")] UnexpectedHoles { object: String, order: usize }, - #[error("Unknown chain ID '{chain_id:?}'.")] - UnknownChainId { chain_id: String }, #[error("Transaction validation has failed.")] ValidateTransactionError(#[source] EntryPointExecutionError), } diff --git a/crates/native_blockifier/src/lib.rs b/crates/native_blockifier/src/lib.rs index 0162e66601..8eb829ee8e 100644 --- a/crates/native_blockifier/src/lib.rs +++ b/crates/native_blockifier/src/lib.rs @@ -17,7 +17,7 @@ use pyo3::prelude::*; use storage::Storage; use crate::py_state_diff::PyStateDiff; -use crate::py_utils::{all_chain_names, raise_error_for_testing}; +use crate::py_utils::raise_error_for_testing; #[pymodule] fn native_blockifier(py: Python<'_>, py_module: &PyModule) -> PyResult<()> { @@ -35,7 +35,6 @@ fn native_blockifier(py: Python<'_>, py_module: &PyModule) -> PyResult<()> { py_module.add_class::()?; add_py_exceptions(py, py_module)?; - py_module.add_function(wrap_pyfunction!(all_chain_names, py)?)?; // TODO(Dori, 1/4/2023): If and when supported in the Python build environment, gate this code // with #[cfg(test)]. py_module.add_function(wrap_pyfunction!(raise_error_for_testing, py)?)?; diff --git a/crates/native_blockifier/src/py_utils.rs b/crates/native_blockifier/src/py_utils.rs index 2c2a084066..6a42da1413 100644 --- a/crates/native_blockifier/src/py_utils.rs +++ b/crates/native_blockifier/src/py_utils.rs @@ -10,14 +10,6 @@ use starknet_api::transaction::EthAddress; use crate::errors::NativeBlockifierResult; -pub const CHAIN_NAMES: &[&str; 5] = &[ - "SN_MAIN", - "SN_GOERLI", - "SN_GOERLI2", - "PRIVATE_SN_POTC_GOERLI", - "PRIVATE_SN_POTC_MOCK_GOERLI", -]; - #[derive(Eq, FromPyObject, Hash, PartialEq, Clone, Copy)] pub struct PyFelt(#[pyo3(from_py_with = "pyint_to_stark_felt")] pub StarkFelt); @@ -85,24 +77,12 @@ where values.into_iter().map(converter).collect() } -#[pyfunction] -pub fn all_chain_names() -> Vec { - CHAIN_NAMES.iter().map(|s| s.to_string()).collect() -} - pub fn to_chain_id_enum(value: BigUint) -> NativeBlockifierResult { - let expected_name = String::from_utf8_lossy(&value.to_bytes_be()).to_string(); - for chain_name in CHAIN_NAMES { - if expected_name == *chain_name { - return Ok(ChainId(expected_name)); - } - } - Err(TransactionExecutionError::UnknownChainId { chain_id: value.to_string() }.into()) + Ok(ChainId(String::from_utf8_lossy(&value.to_bytes_be()).to_string())) } // TODO(Dori, 1/4/2023): If and when supported in the Python build environment, use #[cfg(test)]. #[pyfunction] pub fn raise_error_for_testing() -> NativeBlockifierResult<()> { - Err(TransactionExecutionError::UnknownChainId { chain_id: String::from("Dummy message.") } - .into()) + Err(TransactionExecutionError::CairoResourcesNotContainedInFeeCosts.into()) } From f56bc04152fb0ac2ba3895447b8c30b97c013338 Mon Sep 17 00:00:00 2001 From: dorimedini-starkware Date: Tue, 20 Jun 2023 13:17:56 +0300 Subject: [PATCH 14/19] Dori/limit run with resources (#635) * Limit run with RunResources Signed-off-by: Dori Medini * Add test Signed-off-by: Dori Medini --- Cargo.lock | 104 +++---- Cargo.toml | 10 +- .../compiled/test_contract_compiled.json | 289 ++++++++++++++++++ .../cairo0/test_contract.cairo | 25 ++ .../src/execution/cairo1_execution.rs | 12 +- .../src/execution/deprecated_execution.rs | 12 +- .../deprecated_syscalls/hint_processor.rs | 13 +- .../src/execution/syscalls/hint_processor.rs | 11 +- .../transaction/account_transactions_test.rs | 70 +++++ 9 files changed, 473 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2ea8f68bfd..8125936306 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -372,9 +372,9 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cairo-felt" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c689785216b614922341f1f7c1503a3d8468a35377c70f0a230882b7e736df0d" +checksum = "fb1ceee24a02475932277c5354d5acf8dcc373944af8e7527de258b5effbea42" dependencies = [ "lazy_static", "num-bigint", @@ -385,9 +385,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81346c0dc91c0ab9f5f3276c502a641d42421f95e5d2dbfd9fc0ec61bc89ccf" +checksum = "69f97920f51d436b52e6fa6aceb45db3057608fcd45303280590fc6b70613dad" dependencies = [ "cairo-lang-utils", "indoc 2.0.1", @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07b9357df23da63c0e04d3715d3ed73c3c3597d5e39fd99a321159c446b5f35" +checksum = "8f3fb58522ba5a256653bc7861d354257ddc94b94e53a91a255ba1aee42f4d5d" dependencies = [ "anyhow", "cairo-lang-defs", @@ -427,18 +427,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cab7d34f0c7a918238e1d77e758c4b9e53fe5d5c7d1ad4f12c0997b1fc8fed2a" +checksum = "7ea672b15ea8a1899bc7212ceead9d54c3c8c5de7ee7ade018299b410dfb3d6f" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6443fd6625ba75865fffef5501267e17ef49bf16900022da05eada334ef47206" +checksum = "ae3fe1a5cc9ee6dd06c2c614d612367044956dba455846a58f0874b721d0e099" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -454,9 +454,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee3989751860001ad7503310561163c2c6347c0413ff54b620b838734a6f78e7" +checksum = "66dc6227ae0145e10342ba6e46fd6a4ccbcd0724c912a0bb6b539893675fca00" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -466,9 +466,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827f6b6eae4943a11ea7a62390e87c11f2f7f9b4a6213bc059a20f3f938b839f" +checksum = "dac929533c8e537b01c043450a475b3c92231a1e3f22078ba4c530001a5100ad" dependencies = [ "cairo-lang-utils", "good_lp", @@ -478,9 +478,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa72e2e9f5f94a6285b778b6100f47c33402fb5c08befd49f2695c4523d9240" +checksum = "2cc33aec81609555cefd487c455639ada9bf0d2d4bfa662421e3ba15ad21cc61" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cc3f5edda65529df26d55c1448c107fe1b4e391c09d5cf5090977b26e4deb3" +checksum = "e557dc4987516b1d3cbb81914d333530e4442d84c7c9fe26545ac3e3b88884b1" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -517,9 +517,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f380c77e18084e41d7322f25709d1efbab2c27e98a98b934e8544de3e56dad7" +checksum = "d2494fe372e3f1c3745477191eba804f326a8564e27dd333e7555c236940d48f" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -538,9 +538,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c25cdb9a7c63e769fd423803456fae2cf8346cfd2f3c92f8f8cdcd1b7275f911" +checksum = "441b161aad4f26f4d38fe0209f629aa7e415c32545be7210cb2d5c8ee4234638" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -557,9 +557,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc368f90aae1c9be82dd5c7bc7856c249318099d97b1ca2b186f6a03382944" +checksum = "944bdfadf895cc27fed8b1de24e9868f4649897ec24c25b7f6fc9acb7922e6d5" dependencies = [ "cairo-lang-debug", "quote", @@ -568,9 +568,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed6afa96b4875c24d5490277c8f63ed05f29d0b091b4e7d2ed55df140c0f64c" +checksum = "4028994b871236af308bdcc4005f0c618f660434265ae4824299f96bd6ca4b3f" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -582,9 +582,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e494ca441d5c9584b52aa6504a8c2ee773bc6fd0b53856ea64c5a3e1b022f89" +checksum = "909d5acaecb1d560d9d5b568c38ee2fce110d698a29b0b4606e6b3fcc30e4768" dependencies = [ "anyhow", "ark-ff", @@ -618,9 +618,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4be17f34575895055da8fbaa4ec3ccd413897fd44cc6b3ca3be918919564c71" +checksum = "9ddd7c9a3fe600b1532cf38d3edbeab8bb36b48558eea8e200ab146e47a12739" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb092c65418c43a34f5cad0cee18b404c6fd2e49abeb4a00541578f187fffa" +checksum = "6f317936735dd0c3233bebd0c84a2fd16493d339e21433ce46e70b0960f1fe8c" dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -664,9 +664,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aaeeaf14acd21f1d696fb9a938c7a8daa3a18b5d9a9dd1400ebe5b08ea83ca4" +checksum = "d13570038b3cfaaf5b14925c0c5a630ae8efbe7bb0f920e70388904f132d3e8e" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -677,9 +677,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a44fceeab69337621f8700c740362f96a349aea4610c1b9ba1bbe22a809b2c2" +checksum = "2840109a191a7164a490507238051fbb5efed6bb0726a73ecf64aa88e9eb8925" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -690,9 +690,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c8e104e77d8f8f0d808bd35c9af6651884e611cc7ce3bd3b673c119be1ff04" +checksum = "1a44bbebd9cb536dbc7ad3e220f55d8a1312c884e904a6519f352ef5c26d0d23" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -716,9 +716,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "828502fcc9af0d942ca27cbc18c90d9b121f216fa3e0b3c373ed128d59862a5d" +checksum = "c40a9c86d9a82ea35c6a646e6187a79f9f8b56e8b60c8a61e80605aa165e8c1d" dependencies = [ "assert_matches", "cairo-felt", @@ -737,9 +737,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e2431948108163de1f6f4bca24c201672cebbc6a61d139c206c4164a841fb8c" +checksum = "33870b655978a0a034499eca66ed5118c6fc4bd6c5d916696d0048fd316758f2" dependencies = [ "anyhow", "cairo-felt", @@ -777,9 +777,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "050823df289fa2f1d90ec733a6ed6f48bada036b4ffd9a48c75e0bd9c506dd10" +checksum = "0be2e8e666d302c8321c4e3205bcf024f696effbe6a729caa05a75540848d8a2" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8467d4368b1e2d1074acb090f5c8301faa965eae99f3180a5f7bfe173e299e9" +checksum = "234a4a1948f75cf2831d39a14e54d607aac9c1f6f20fb4b52d65415661621948" dependencies = [ "genco", "xshell", @@ -804,9 +804,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.0.0-rc2" +version = "2.0.0-rc3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c93adbad256f0ced48b7593556d0ef5a096ff697931c10d086ef1224f279324" +checksum = "a062d7793ab07333541761c4f3478434ebe6f9bbf9bec5e96bf336b5029d9b9e" dependencies = [ "indexmap", "itertools", @@ -820,18 +820,18 @@ dependencies = [ [[package]] name = "cairo-take_until_unbalanced" -version = "0.27.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a925c2b9b377f3ed4b0455a25f60520c77cee49398a0696d9577ab123a64109" +checksum = "847ac5da858bfccf41ca81ce51e2f39f43c7b8ce5616c5405e6ac99006f9d01e" dependencies = [ "nom", ] [[package]] name = "cairo-vm" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8357c35e32298071a0505469dce45db8f3cee4152195e293cb01cd9068db20b2" +checksum = "16e859bef70476e5094fc5b5c5bdc8c842e9d59480e808856fe54370991610f6" dependencies = [ "anyhow", "bincode", diff --git a/Cargo.toml b/Cargo.toml index 162d36a1ef..fb65faa908 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,11 +7,11 @@ members = ["crates/blockifier", "crates/native_blockifier"] [workspace.dependencies] assert_matches = "1.5.0" -cairo-felt = "0.5.1" -cairo-lang-casm = "2.0.0-rc2" -cairo-lang-runner = "2.0.0-rc2" -cairo-lang-starknet = "2.0.0-rc2" -cairo-vm = "0.5.1" +cairo-felt = "0.6" +cairo-lang-casm = "2.0.0-rc3" +cairo-lang-runner = "2.0.0-rc3" +cairo-lang-starknet = "2.0.0-rc3" +cairo-vm = "0.6" ctor = "0.2.0" derive_more = "0.99.17" indexmap = "1.9.2" diff --git a/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json b/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json index 365d76b1f5..2d88187df6 100644 --- a/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json +++ b/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json @@ -303,6 +303,36 @@ "name": "foo", "outputs": [], "type": "function" + }, + { + "inputs": [ + { + "name": "depth", + "type": "felt" + } + ], + "name": "recurse", + "outputs": [], + "type": "function" + }, + { + "inputs": [ + { + "name": "contract_address", + "type": "felt" + }, + { + "name": "function_selector", + "type": "felt" + }, + { + "name": "depth", + "type": "felt" + } + ], + "name": "recursive_syscall", + "outputs": [], + "type": "function" } ], "entry_points_by_type": { @@ -313,6 +343,14 @@ } ], "EXTERNAL": [ + { + "offset": 820, + "selector": "0x1143aa89c8e3ebf8ed14df2a3606c1cd2dd513fac8040b0f8ab441f5c52fe4" + }, + { + "offset": 861, + "selector": "0x600c98a299d72ef1e09a2e1503206fbc76081233172c65f7e2438ef0069d8d" + }, { "offset": 383, "selector": "0xad451bd0dba3d8d97104e1bfc474f88605ccc7acbe1c846839a120fdf30d95" @@ -1196,6 +1234,74 @@ "0x480680017fff8000", "0x0", "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x20780017fff7ffd", + "0x3", + "0x208b7fff7fff7ffe", + "0x482680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffc", + "0x208b7fff7fff7ffe", + "0x482680017ffd8000", + "0x1", + "0x402a7ffd7ffc7fff", + "0x480280007ffd8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff5", + "0x40780017fff7fff", + "0x1", + "0x480280007ffb8000", + "0x480280017ffb8000", + "0x480280027ffb8000", + "0x480280037ffb8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x20780017fff7ffd", + "0x4", + "0x480a7ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x482680017ffd8000", + "0x800000000000011000000000000000000000000000000000000000000000000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcba", + "0x482480017fff8000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffe", + "0x40137fff7fff8000", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480a7ffc7fff8000", + "0x480680017fff8000", + "0x3", + "0x480a80007fff8000", + "0x1104800180018000", + "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcb4", + "0x48127ffd7fff8000", + "0x208b7fff7fff7ffe", + "0x482680017ffd8000", + "0x3", + "0x402a7ffd7ffc7fff", + "0x480280007ffb8000", + "0x480280007ffd8000", + "0x480280017ffd8000", + "0x480280027ffd8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe1", + "0x40780017fff7fff", + "0x1", + "0x48127ffe7fff8000", + "0x480280017ffb8000", + "0x480280027ffb8000", + "0x480280037ffb8000", + "0x480680017fff8000", + "0x0", + "0x48127ffa7fff8000", "0x208b7fff7fff7ffe" ], "debug_info": null, @@ -1637,6 +1743,42 @@ "reference_ids": {} } } + ], + "826": [ + { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.recurse" + ], + "code": "memory[ap] = segments.add()", + "flow_tracking_data": { + "ap_tracking": { + "group": 69, + "offset": 0 + }, + "reference_ids": {} + } + } + ], + "870": [ + { + "accessible_scopes": [ + "__main__", + "__main__", + "__wrappers__", + "__wrappers__.recursive_syscall" + ], + "code": "memory[ap] = segments.add()", + "flow_tracking_data": { + "ap_tracking": { + "group": 72, + "offset": 0 + }, + "reference_ids": {} + } + } ] }, "identifiers": { @@ -1949,6 +2091,83 @@ "type": "const", "value": 0 }, + "__main__.recurse": { + "decorators": [ + "external" + ], + "pc": 812, + "type": "function" + }, + "__main__.recurse.Args": { + "full_name": "__main__.recurse.Args", + "members": { + "depth": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "__main__.recurse.ImplicitArgs": { + "full_name": "__main__.recurse.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__main__.recurse.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "__main__.recurse.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__main__.recursive_syscall": { + "decorators": [ + "external" + ], + "pc": 836, + "type": "function" + }, + "__main__.recursive_syscall.Args": { + "full_name": "__main__.recursive_syscall.Args", + "members": { + "contract_address": { + "cairo_type": "felt", + "offset": 0 + }, + "depth": { + "cairo_type": "felt", + "offset": 2 + }, + "function_selector": { + "cairo_type": "felt", + "offset": 1 + } + }, + "size": 3, + "type": "struct" + }, + "__main__.recursive_syscall.ImplicitArgs": { + "full_name": "__main__.recursive_syscall.ImplicitArgs", + "members": { + "syscall_ptr": { + "cairo_type": "felt*", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "__main__.recursive_syscall.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "__main__.recursive_syscall.SIZEOF_LOCALS": { + "type": "const", + "value": 1 + }, "__main__.replace_class": { "destination": "starkware.starknet.common.syscalls.replace_class", "type": "alias" @@ -2632,6 +2851,76 @@ "destination": "starkware.cairo.common.memcpy.memcpy", "type": "alias" }, + "__wrappers__.recurse": { + "decorators": [ + "external" + ], + "pc": 820, + "type": "function" + }, + "__wrappers__.recurse.Args": { + "full_name": "__wrappers__.recurse.Args", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.recurse.ImplicitArgs": { + "full_name": "__wrappers__.recurse.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.recurse.Return": { + "cairo_type": "(syscall_ptr: felt, pedersen_ptr: felt, range_check_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)", + "type": "type_definition" + }, + "__wrappers__.recurse.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__wrappers__.recurse.__wrapped_func": { + "destination": "__main__.recurse", + "type": "alias" + }, + "__wrappers__.recurse_encode_return.memcpy": { + "destination": "starkware.cairo.common.memcpy.memcpy", + "type": "alias" + }, + "__wrappers__.recursive_syscall": { + "decorators": [ + "external" + ], + "pc": 861, + "type": "function" + }, + "__wrappers__.recursive_syscall.Args": { + "full_name": "__wrappers__.recursive_syscall.Args", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.recursive_syscall.ImplicitArgs": { + "full_name": "__wrappers__.recursive_syscall.ImplicitArgs", + "members": {}, + "size": 0, + "type": "struct" + }, + "__wrappers__.recursive_syscall.Return": { + "cairo_type": "(syscall_ptr: felt*, pedersen_ptr: felt, range_check_ptr: felt, bitwise_ptr: felt, size: felt, retdata: felt*)", + "type": "type_definition" + }, + "__wrappers__.recursive_syscall.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "__wrappers__.recursive_syscall.__wrapped_func": { + "destination": "__main__.recursive_syscall", + "type": "alias" + }, + "__wrappers__.recursive_syscall_encode_return.memcpy": { + "destination": "starkware.cairo.common.memcpy.memcpy", + "type": "alias" + }, "__wrappers__.return_result": { "decorators": [ "external" diff --git a/crates/blockifier/feature_contracts/cairo0/test_contract.cairo b/crates/blockifier/feature_contracts/cairo0/test_contract.cairo index 6eba0e53f1..2c2b7be42c 100644 --- a/crates/blockifier/feature_contracts/cairo0/test_contract.cairo +++ b/crates/blockifier/feature_contracts/cairo0/test_contract.cairo @@ -188,3 +188,28 @@ func test_contract_address{pedersen_ptr: HashBuiltin*, range_check_ptr}( func foo() { return (); } + +@external +func recurse(depth: felt) { + if (depth == 0) { + return (); + } + recurse(depth - 1); + return (); +} + +@external +func recursive_syscall{syscall_ptr: felt*}(contract_address: felt, function_selector: felt, depth: felt) { + alloc_locals; + if (depth == 0) { + return (); + } + local calldata: felt* = new(contract_address, function_selector, depth - 1); + call_contract( + contract_address=contract_address, + function_selector=function_selector, + calldata_size=3, + calldata=calldata, + ); + return (); +} diff --git a/crates/blockifier/src/execution/cairo1_execution.rs b/crates/blockifier/src/execution/cairo1_execution.rs index 5133df3678..c78941af8c 100644 --- a/crates/blockifier/src/execution/cairo1_execution.rs +++ b/crates/blockifier/src/execution/cairo1_execution.rs @@ -220,21 +220,21 @@ pub fn run_entry_point( args: Args, program_segment_size: usize, ) -> Result<(), VirtualMachineExecutionError> { - // TODO(Dori,30/06/2023): propagate properly once VM allows it. - let run_resources = &mut None; + let mut run_resources = hint_processor.context.vm_run_resources.clone(); let verify_secure = true; let args: Vec<&CairoArg> = args.iter().collect(); - runner.run_from_entrypoint( + let result = runner.run_from_entrypoint( entry_point.pc(), &args, - run_resources, + &mut run_resources, verify_secure, Some(program_segment_size), vm, hint_processor, - )?; + ); - Ok(()) + hint_processor.context.vm_run_resources = run_resources; + Ok(result?) } pub fn finalize_execution( diff --git a/crates/blockifier/src/execution/deprecated_execution.rs b/crates/blockifier/src/execution/deprecated_execution.rs index da00d3d191..724f142539 100644 --- a/crates/blockifier/src/execution/deprecated_execution.rs +++ b/crates/blockifier/src/execution/deprecated_execution.rs @@ -188,22 +188,22 @@ pub fn run_entry_point( entry_point_pc: usize, args: Args, ) -> Result<(), VirtualMachineExecutionError> { - // TODO(Dori,30/06/2023): propagate properly once VM allows it. - let run_resources = &mut None; + let mut run_resources = hint_processor.context.vm_run_resources.clone(); let verify_secure = true; let program_segment_size = None; // Infer size from program. let args: Vec<&CairoArg> = args.iter().collect(); - runner.run_from_entrypoint( + let result = runner.run_from_entrypoint( entry_point_pc, &args, - run_resources, + &mut run_resources, verify_secure, program_segment_size, vm, hint_processor, - )?; + ); - Ok(()) + hint_processor.context.vm_run_resources = run_resources; + Ok(result?) } pub fn finalize_execution( diff --git a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs index ec87e4c358..29f84ab9d2 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs @@ -13,6 +13,7 @@ use cairo_vm::types::relocatable::{MaybeRelocatable, Relocatable}; use cairo_vm::vm::errors::hint_errors::HintError; use cairo_vm::vm::errors::memory_errors::MemoryError; use cairo_vm::vm::errors::vm_errors::VirtualMachineError; +use cairo_vm::vm::runners::cairo_runner::RunResources; use cairo_vm::vm::vm_core::VirtualMachine; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector}; use starknet_api::deprecated_contract_class::EntryPointType; @@ -328,13 +329,23 @@ impl HintProcessor for DeprecatedSyscallHintProcessor<'_> { exec_scopes: &mut ExecutionScopes, hint_data: &Box, constants: &HashMap, + run_resources: &mut RunResources, ) -> HintExecutionResult { + self.context.vm_run_resources = run_resources.clone(); let hint = hint_data.downcast_ref::().ok_or(HintError::WrongHintData)?; if hint_code::SYSCALL_HINTS.contains(hint.code.as_str()) { return self.execute_next_syscall(vm, &hint.ids_data, &hint.ap_tracking); } - self.builtin_hint_processor.execute_hint(vm, exec_scopes, hint_data, constants) + let result = self.builtin_hint_processor.execute_hint( + vm, + exec_scopes, + hint_data, + constants, + &mut self.context.vm_run_resources, + ); + *run_resources = self.context.vm_run_resources.clone(); + result } } diff --git a/crates/blockifier/src/execution/syscalls/hint_processor.rs b/crates/blockifier/src/execution/syscalls/hint_processor.rs index ef2bd64b7c..94d634d6a6 100644 --- a/crates/blockifier/src/execution/syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/syscalls/hint_processor.rs @@ -13,6 +13,7 @@ use cairo_vm::types::relocatable::{MaybeRelocatable, Relocatable}; use cairo_vm::vm::errors::hint_errors::HintError; use cairo_vm::vm::errors::memory_errors::MemoryError; use cairo_vm::vm::errors::vm_errors::VirtualMachineError; +use cairo_vm::vm::runners::cairo_runner::RunResources; use cairo_vm::vm::vm_core::VirtualMachine; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector}; use starknet_api::deprecated_contract_class::EntryPointType; @@ -408,12 +409,16 @@ impl HintProcessor for SyscallHintProcessor<'_> { exec_scopes: &mut ExecutionScopes, hint_data: &Box, _constants: &HashMap, + run_resources: &mut RunResources, ) -> HintExecutionResult { + self.context.vm_run_resources = run_resources.clone(); let hint = hint_data.downcast_ref::().ok_or(HintError::WrongHintData)?; - match hint { + let result = match hint { Hint::Core(hint) => execute_core_hint_base(vm, exec_scopes, hint), Hint::Starknet(hint) => self.execute_next_syscall(vm, hint), - } + }; + *run_resources = self.context.vm_run_resources.clone(); + result } /// Trait function to store hint in the hint processor by string. @@ -422,7 +427,7 @@ impl HintProcessor for SyscallHintProcessor<'_> { hint_code: &str, _ap_tracking_data: &ApTracking, _reference_ids: &HashMap, - _references: &HashMap, + _references: &[HintReference], ) -> Result, VirtualMachineError> { Ok(Box::new(self.hints[hint_code].clone())) } diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index 79bfab403c..be1b1fa233 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -146,3 +146,73 @@ fn test_account_flow_test() { })); account_tx.execute(&mut state, block_context).unwrap(); } + +#[test] +fn test_infinite_recursion() { + let max_fee = Fee(MAX_FEE); + let mut block_context = BlockContext::create_for_account_testing(); + + // Limit the number of execution steps (so we quickly hit the limit). + block_context.invoke_tx_max_n_steps = 1000; + + let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = + create_test_state(max_fee, &block_context); + + // Two types of recursion: one "normal" recursion, and one that uses the `call_contract` + // syscall. + let raw_contract_address = *contract_address.0.key(); + let raw_normal_entry_point_selector = selector_from_name("recurse").0; + let raw_syscall_entry_point_selector = selector_from_name("recursive_syscall").0; + + let normal_calldata = |recursion_depth: u32| -> Calldata { + calldata![ + raw_contract_address, + raw_normal_entry_point_selector, + stark_felt!(1_u8), + stark_felt!(recursion_depth) + ] + }; + let syscall_calldata = |recursion_depth: u32| -> Calldata { + calldata![ + raw_contract_address, + raw_syscall_entry_point_selector, + stark_felt!(3_u8), // Calldata length. + raw_contract_address, + raw_syscall_entry_point_selector, + stark_felt!(recursion_depth) + ] + }; + + // Try two runs for each recursion type: one short run (success), and one that reverts due to + // step limit. + let first_valid_nonce = nonce_manager.next(account_address); + let second_valid_nonce = nonce_manager.next(account_address); + let third_valid_nonce = nonce_manager.next(account_address); + [ + (1_u32, true, true, first_valid_nonce), + (1000_u32, false, true, second_valid_nonce), + (3_u32, true, false, second_valid_nonce), // Use same nonce, since previous tx should fail. + (1000_u32, false, false, third_valid_nonce), + ] + .into_iter() + .map(|(recursion_depth, should_be_ok, use_normal_calldata, nonce)| { + let execute_calldata = if use_normal_calldata { + normal_calldata(recursion_depth) + } else { + syscall_calldata(recursion_depth) + }; + let tx = invoke_tx(execute_calldata, account_address, max_fee, None); + let account_tx = + AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { nonce, ..tx })); + let result = account_tx.execute(&mut state, &block_context); + if should_be_ok { + result.unwrap(); + } else { + assert!( + format!("{:?}", result.unwrap_err()) + .contains("RunResources has no remaining steps.") + ); + } + }) + .for_each(drop); +} From 6ed10c3b3fd69215b95e0692a716c0f6fee093e6 Mon Sep 17 00:00:00 2001 From: Noa Oved <104720318+noaov1@users.noreply.github.com> Date: Tue, 20 Jun 2023 16:01:52 +0300 Subject: [PATCH 15/19] Convert hints to string using ` serde_json::to_string ` (as opposed to ` to_string() `). (#642) --- .../src/execution/contract_class.rs | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/crates/blockifier/src/execution/contract_class.rs b/crates/blockifier/src/execution/contract_class.rs index 63e37d4a73..f5533fcab9 100644 --- a/crates/blockifier/src/execution/contract_class.rs +++ b/crates/blockifier/src/execution/contract_class.rs @@ -217,21 +217,22 @@ impl TryFrom for ContractClassV1 { .into_iter() .map(|x| MaybeRelocatable::from(Felt252::from(x.value))) .collect(); - let hints: HashMap> = class - .hints - .iter() - .map(|(i, hints)| (*i, hints.iter().map(hint_to_hint_params).collect())) - .collect(); + + let mut hints: HashMap> = HashMap::new(); + for (i, hint_list) in class.hints.iter() { + let hint_params: Result, ProgramError> = + hint_list.iter().map(hint_to_hint_params).collect(); + hints.insert(*i, hint_params?); + } // Collect a sting to hint map so that the hint processor can fetch the correct [Hint] // for each instruction. - let string_to_hint: HashMap = class - .hints - .into_iter() - .flat_map(|(_, hints)| { - hints.iter().map(|hint| (hint.to_string(), hint.clone())).collect::>() - }) - .collect(); + let mut string_to_hint: HashMap = HashMap::new(); + for (_, hint_list) in class.hints.iter() { + for hint in hint_list.iter() { + string_to_hint.insert(serde_json::to_string(hint)?, hint.clone()); + } + } // Initialize program with all builtins. let builtins = vec![ @@ -296,15 +297,15 @@ pub fn deserialize_program<'de, D: Deserializer<'de>>( // V1 utilities. // TODO(spapini): Share with cairo-lang-runner. -fn hint_to_hint_params(hint: &cairo_lang_casm::hints::Hint) -> HintParams { - HintParams { - code: hint.to_string(), +fn hint_to_hint_params(hint: &cairo_lang_casm::hints::Hint) -> Result { + Ok(HintParams { + code: serde_json::to_string(hint)?, accessible_scopes: vec![], flow_tracking_data: FlowTrackingData { ap_tracking: ApTracking::new(), reference_ids: HashMap::new(), }, - } + }) } fn convert_entry_points_v1( From b9ae128785652b43e1c0e658afd6e1dafd8e3371 Mon Sep 17 00:00:00 2001 From: mohammad-starkware <130282237+MohammadNassar1@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:48:17 +0300 Subject: [PATCH 16/19] Insert send message to L1 command to both validate and execute. For PR #601 debug. (#606) --- .../cairo0/account_faulty.cairo | 10 +- .../compiled/account_faulty_compiled.json | 223 ++++++++++++++---- .../blockifier/src/execution/entry_point.rs | 24 +- crates/blockifier/src/transaction/errors.rs | 7 +- 4 files changed, 211 insertions(+), 53 deletions(-) diff --git a/crates/blockifier/feature_contracts/cairo0/account_faulty.cairo b/crates/blockifier/feature_contracts/cairo0/account_faulty.cairo index fde07bd08f..5580090935 100644 --- a/crates/blockifier/feature_contracts/cairo0/account_faulty.cairo +++ b/crates/blockifier/feature_contracts/cairo0/account_faulty.cairo @@ -6,6 +6,7 @@ from starkware.cairo.common.alloc import alloc from starkware.cairo.common.bool import FALSE, TRUE from starkware.cairo.common.cairo_builtins import HashBuiltin from starkware.starknet.common.syscalls import TxInfo, call_contract, get_tx_info +from starkware.starknet.common.messages import send_message_to_l1 // Validate Scenarios. @@ -42,14 +43,21 @@ func __validate_deploy__{syscall_ptr: felt*}( func __validate__{syscall_ptr: felt*}( contract_address: felt, selector: felt, calldata_len: felt, calldata: felt* ) { + let to_address = 0; + // By calling the `send_message_to_l1` function in validation and exeution, tests can now verify + // the functionality of entry point counters. + send_message_to_l1(to_address, calldata_len, calldata); faulty_validate(); return (); } @external -func __execute__{pedersen_ptr: HashBuiltin*, range_check_ptr}( +func __execute__{syscall_ptr: felt*, pedersen_ptr: HashBuiltin*, range_check_ptr}( contract_address: felt, selector: felt, calldata_len: felt, calldata: felt* ) { + let to_address = 0; + + send_message_to_l1(to_address, calldata_len, calldata); return (); } diff --git a/crates/blockifier/feature_contracts/cairo0/compiled/account_faulty_compiled.json b/crates/blockifier/feature_contracts/cairo0/compiled/account_faulty_compiled.json index c70dd3563a..ad83496214 100644 --- a/crates/blockifier/feature_contracts/cairo0/compiled/account_faulty_compiled.json +++ b/crates/blockifier/feature_contracts/cairo0/compiled/account_faulty_compiled.json @@ -97,29 +97,29 @@ "entry_points_by_type": { "CONSTRUCTOR": [ { - "offset": 144, + "offset": 167, "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194" } ], "EXTERNAL": [ { - "offset": 102, + "offset": 124, "selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad" }, { - "offset": 72, + "offset": 87, "selector": "0x162da33a4585851fe8d3af3c2a9c60b557814e221e0d4f30ff0b2189d9c7775" }, { - "offset": 202, + "offset": 225, "selector": "0x1b1a0649752af1b28b3dc29a1556eee781e4a4c3a1f7f53f90fa834de098c4d" }, { - "offset": 26, + "offset": 35, "selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3" }, { - "offset": 50, + "offset": 59, "selector": "0x36fcbf06cd96843058359e1a75928beacfac10727dab22a3972f0af8aa92895" } ], @@ -155,9 +155,18 @@ "0x2", "0x480280017ffd8000", "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x53656e644d657373616765546f4c31", + "0x400280007ffa7fff", + "0x400380017ffa7ffb", + "0x400380027ffa7ffc", + "0x400380037ffa7ffd", + "0x482680017ffa8000", + "0x4", + "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x1104800180018000", - "0x8b", + "0x99", "0x208b7fff7fff7ffe", "0x482680017ffd8000", "0x1", @@ -179,7 +188,7 @@ "0x6", "0x480a7ffa7fff8000", "0x1104800180018000", - "0x75", + "0x83", "0x208b7fff7fff7ffe", "0x480a7ffa7fff8000", "0x208b7fff7fff7ffe", @@ -202,8 +211,14 @@ "0x48127ffb7fff8000", "0x208b7fff7fff7ffe", "0x480a7ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", "0x1104800180018000", - "0x5d", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffc5", + "0x1104800180018000", + "0x65", "0x208b7fff7fff7ffe", "0x480280027ffb8000", "0x480280027ffd8000", @@ -220,7 +235,7 @@ "0x482680017ffd8000", "0x3", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe9", "0x40780017fff7fff", "0x1", "0x480280027ffb8000", @@ -232,6 +247,13 @@ "0x0", "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", + "0x480a7ff77fff8000", + "0x480680017fff8000", + "0x0", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x1104800180018000", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa0", "0x480a7ff87fff8000", "0x480a7ff97fff8000", "0x208b7fff7fff7ffe", @@ -244,8 +266,9 @@ "0x48307fff7ffe8000", "0x402a7ffd7ffc7fff", "0x480280027ffb8000", + "0x480280007ffb8000", "0x480280017ffb8000", - "0x482480017ffe8000", + "0x482480017ffd8000", "0x1", "0x480280007ffd8000", "0x480280017ffd8000", @@ -253,10 +276,10 @@ "0x482680017ffd8000", "0x3", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe5", "0x40780017fff7fff", "0x1", - "0x480280007ffb8000", + "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x480680017fff8000", @@ -297,7 +320,7 @@ "0x208b7fff7fff7ffe", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6d", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff56", "0x480080047fff8000", "0x480080007fff8000", "0x20680017fff7fff", @@ -321,7 +344,7 @@ "0x2", "0x400080007ffe7fff", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff46", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff2f", "0x480080047ff58000", "0x48127ff37fff8000", "0x480080017ffe8000", @@ -331,7 +354,7 @@ "0x0", "0x48127ffa7fff8000", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3f", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff28", "0x48127ffd7fff8000", "0x208b7fff7fff7ffe", "0x208b7fff7fff7ffe", @@ -402,7 +425,25 @@ } } ], - "33": [ + "28": [ + { + "accessible_scopes": [ + "starkware.starknet.common.messages", + "starkware.starknet.common.messages.send_message_to_l1" + ], + "code": "syscall_handler.send_message_to_l1(segments=segments, syscall_ptr=ids.syscall_ptr)", + "flow_tracking_data": { + "ap_tracking": { + "group": 3, + "offset": 1 + }, + "reference_ids": { + "starkware.starknet.common.messages.send_message_to_l1.syscall_ptr": 2 + } + } + } + ], + "42": [ { "accessible_scopes": [ "__main__", @@ -413,14 +454,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 6, + "group": 7, "offset": 0 }, "reference_ids": {} } } ], - "59": [ + "68": [ { "accessible_scopes": [ "__main__", @@ -431,14 +472,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 10, + "group": 11, "offset": 0 }, "reference_ids": {} } } ], - "88": [ + "103": [ { "accessible_scopes": [ "__main__", @@ -449,14 +490,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 14, + "group": 15, "offset": 0 }, "reference_ids": {} } } ], - "121": [ + "144": [ { "accessible_scopes": [ "__main__", @@ -467,14 +508,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 16, - "offset": 16 + "group": 17, + "offset": 25 }, "reference_ids": {} } } ], - "153": [ + "176": [ { "accessible_scopes": [ "__main__", @@ -485,14 +526,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 20, + "group": 21, "offset": 0 }, "reference_ids": {} } } ], - "205": [ + "228": [ { "accessible_scopes": [ "__main__", @@ -503,7 +544,7 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { - "group": 23, + "group": 24, "offset": 2 }, "reference_ids": {} @@ -548,7 +589,7 @@ "decorators": [ "external" ], - "pc": 99, + "pc": 114, "type": "function" }, "__main__.__execute__.Args": { @@ -579,14 +620,18 @@ "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", - "offset": 0 + "offset": 1 }, "range_check_ptr": { "cairo_type": "felt", - "offset": 1 + "offset": 2 + }, + "syscall_ptr": { + "cairo_type": "felt*", + "offset": 0 } }, - "size": 2, + "size": 3, "type": "struct" }, "__main__.__execute__.Return": { @@ -601,7 +646,7 @@ "decorators": [ "external" ], - "pc": 68, + "pc": 77, "type": "function" }, "__main__.__validate__.Args": { @@ -650,7 +695,7 @@ "decorators": [ "external" ], - "pc": 22, + "pc": 31, "type": "function" }, "__main__.__validate_declare__.Args": { @@ -687,7 +732,7 @@ "decorators": [ "external" ], - "pc": 42, + "pc": 51, "type": "function" }, "__main__.__validate_deploy__.Args": { @@ -740,7 +785,7 @@ "decorators": [ "constructor" ], - "pc": 130, + "pc": 153, "type": "function" }, "__main__.constructor.Args": { @@ -783,7 +828,7 @@ }, "__main__.faulty_validate": { "decorators": [], - "pc": 162, + "pc": 185, "type": "function" }, "__main__.faulty_validate.Args": { @@ -815,7 +860,7 @@ "decorators": [ "external" ], - "pc": 201, + "pc": 224, "type": "function" }, "__main__.foo.Args": { @@ -842,11 +887,15 @@ "destination": "starkware.starknet.common.syscalls.get_tx_info", "type": "alias" }, + "__main__.send_message_to_l1": { + "destination": "starkware.starknet.common.messages.send_message_to_l1", + "type": "alias" + }, "__wrappers__.__execute__": { "decorators": [ "external" ], - "pc": 102, + "pc": 124, "type": "function" }, "__wrappers__.__execute__.Args": { @@ -862,7 +911,7 @@ "type": "struct" }, "__wrappers__.__execute__.Return": { - "cairo_type": "(syscall_ptr: felt, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)", + "cairo_type": "(syscall_ptr: felt*, pedersen_ptr: starkware.cairo.common.cairo_builtins.HashBuiltin*, range_check_ptr: felt, size: felt, retdata: felt*)", "type": "type_definition" }, "__wrappers__.__execute__.SIZEOF_LOCALS": { @@ -881,7 +930,7 @@ "decorators": [ "external" ], - "pc": 72, + "pc": 87, "type": "function" }, "__wrappers__.__validate__.Args": { @@ -916,7 +965,7 @@ "decorators": [ "external" ], - "pc": 26, + "pc": 35, "type": "function" }, "__wrappers__.__validate_declare__.Args": { @@ -951,7 +1000,7 @@ "decorators": [ "external" ], - "pc": 50, + "pc": 59, "type": "function" }, "__wrappers__.__validate_deploy__.Args": { @@ -986,7 +1035,7 @@ "decorators": [ "constructor" ], - "pc": 144, + "pc": 167, "type": "function" }, "__wrappers__.constructor.Args": { @@ -1021,7 +1070,7 @@ "decorators": [ "external" ], - "pc": 202, + "pc": 225, "type": "function" }, "__wrappers__.foo.Args": { @@ -1315,6 +1364,80 @@ "size": 3, "type": "struct" }, + "starkware.starknet.common.messages.SEND_MESSAGE_TO_L1_SELECTOR": { + "destination": "starkware.starknet.common.syscalls.SEND_MESSAGE_TO_L1_SELECTOR", + "type": "alias" + }, + "starkware.starknet.common.messages.SendMessageToL1SysCall": { + "destination": "starkware.starknet.common.syscalls.SendMessageToL1SysCall", + "type": "alias" + }, + "starkware.starknet.common.messages.send_message_to_l1": { + "decorators": [], + "pc": 22, + "type": "function" + }, + "starkware.starknet.common.messages.send_message_to_l1.Args": { + "full_name": "starkware.starknet.common.messages.send_message_to_l1.Args", + "members": { + "payload": { + "cairo_type": "felt*", + "offset": 2 + }, + "payload_size": { + "cairo_type": "felt", + "offset": 1 + }, + "to_address": { + "cairo_type": "felt", + "offset": 0 + } + }, + "size": 3, + "type": "struct" + }, + "starkware.starknet.common.messages.send_message_to_l1.ImplicitArgs": { + "full_name": "starkware.starknet.common.messages.send_message_to_l1.ImplicitArgs", + "members": { + "syscall_ptr": { + "cairo_type": "felt*", + "offset": 0 + } + }, + "size": 1, + "type": "struct" + }, + "starkware.starknet.common.messages.send_message_to_l1.Return": { + "cairo_type": "()", + "type": "type_definition" + }, + "starkware.starknet.common.messages.send_message_to_l1.SIZEOF_LOCALS": { + "type": "const", + "value": 0 + }, + "starkware.starknet.common.messages.send_message_to_l1.syscall_ptr": { + "cairo_type": "felt*", + "full_name": "starkware.starknet.common.messages.send_message_to_l1.syscall_ptr", + "references": [ + { + "ap_tracking_data": { + "group": 3, + "offset": 0 + }, + "pc": 22, + "value": "[cast(fp + (-6), felt**)]" + }, + { + "ap_tracking_data": { + "group": 3, + "offset": 1 + }, + "pc": 28, + "value": "cast([fp + (-6)] + 4, felt*)" + } + ], + "type": "reference" + }, "starkware.starknet.common.storage.ADDR_BOUND": { "type": "const", "value": -106710729501573572985208420194530329073740042555888586719489 @@ -2137,6 +2260,14 @@ }, "pc": 15, "value": "[cast(fp + (-3), felt**)]" + }, + { + "ap_tracking_data": { + "group": 3, + "offset": 0 + }, + "pc": 22, + "value": "[cast(fp + (-6), felt**)]" } ] } diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index 0ae727ee28..1c0a510f35 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -254,18 +254,32 @@ impl CallInfo { for call in self.into_iter() { for ordered_message_content in &call.execution.l2_to_l1_messages { - if starknet_l2_to_l1_payloads_length[ordered_message_content.order].is_some() { - return Err(TransactionExecutionError::UnexpectedHoles { + let message_order = ordered_message_content.order; + if message_order >= n_messages { + return Err(TransactionExecutionError::InvalidOrder { object: "L2-to-L1 message".to_string(), - order: ordered_message_content.order, + order: message_order, + max_order: n_messages, }); } - starknet_l2_to_l1_payloads_length[ordered_message_content.order] = + starknet_l2_to_l1_payloads_length[message_order] = Some(ordered_message_content.message.payload.0.len()); } } - Ok(starknet_l2_to_l1_payloads_length.into_iter().flatten().collect()) + starknet_l2_to_l1_payloads_length.into_iter().enumerate().try_fold( + Vec::new(), + |mut acc, (i, option)| match option { + Some(value) => { + acc.push(value); + Ok(acc) + } + None => Err(TransactionExecutionError::UnexpectedHoles { + object: "L2-to-L1 message".to_string(), + order: i, + }), + }, + ) } } diff --git a/crates/blockifier/src/transaction/errors.rs b/crates/blockifier/src/transaction/errors.rs index 8f571aaad7..ecba8dca56 100644 --- a/crates/blockifier/src/transaction/errors.rs +++ b/crates/blockifier/src/transaction/errors.rs @@ -32,6 +32,11 @@ pub enum TransactionExecutionError { {expected_nonce:?}; got: {actual_nonce:?}." )] InvalidNonce { address: ContractAddress, expected_nonce: Nonce, actual_nonce: Nonce }, + #[error( + "Invalid order number for {object}. Order: {order} exceeds the maximum order limit: \ + {max_order}." + )] + InvalidOrder { object: String, order: usize, max_order: usize }, #[error( "Transaction version {version:?} is not supported. Supported versions: \ {allowed_versions:?}." @@ -43,7 +48,7 @@ pub enum TransactionExecutionError { StateError(#[from] StateError), #[error("Calling other contracts during '{entry_point_kind}' execution is forbidden.")] UnauthorizedInnerCall { entry_point_kind: String }, - #[error("Unexpected holes in the {object} order. Two objects with the same order: {order}.")] + #[error("Unexpected holes in the {object} order. No object with the order: {order}.")] UnexpectedHoles { object: String, order: usize }, #[error("Transaction validation has failed.")] ValidateTransactionError(#[source] EntryPointExecutionError), From bb320222415f11d177581f6fe5496bf24c9dbb90 Mon Sep 17 00:00:00 2001 From: Alon Haramati <91828241+alonh5@users.noreply.github.com> Date: Wed, 21 Jun 2023 11:40:48 +0300 Subject: [PATCH 17/19] Update compiler and papyrus versions. (#644) --- Cargo.lock | 420 +++++++++++++++++++++++++---------------------------- Cargo.toml | 8 +- 2 files changed, 200 insertions(+), 228 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8125936306..b7ad9ca870 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,9 +38,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "ascii-canvas" @@ -241,9 +241,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "bincode" @@ -325,7 +325,7 @@ dependencies = [ "cairo-lang-runner", "cairo-lang-starknet", "cairo-vm", - "ctor 0.2.0", + "ctor 0.2.2", "derive_more", "indexmap", "itertools", @@ -348,9 +348,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.12.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "byte-slice-cast" @@ -385,9 +385,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f97920f51d436b52e6fa6aceb45db3057608fcd45303280590fc6b70613dad" +checksum = "39238f3b4940f83ac16ab17300635fe326ba8f371245ac1041905a989c884c5e" dependencies = [ "cairo-lang-utils", "indoc 2.0.1", @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3fb58522ba5a256653bc7861d354257ddc94b94e53a91a255ba1aee42f4d5d" +checksum = "f0095a21007b8730dee137a03052425519598bf55ed3b3076992ce46f666aaa5" dependencies = [ "anyhow", "cairo-lang-defs", @@ -427,18 +427,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea672b15ea8a1899bc7212ceead9d54c3c8c5de7ee7ade018299b410dfb3d6f" +checksum = "121eb116acf814824130639ca3c9cf6b901f659f46a7af391e34a13961029008" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3fe1a5cc9ee6dd06c2c614d612367044956dba455846a58f0874b721d0e099" +checksum = "fb85733064d6689ccd0cad7b7b27c34da3988c7e7a3560c5002ab4ec1a3b2b7f" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -454,9 +454,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66dc6227ae0145e10342ba6e46fd6a4ccbcd0724c912a0bb6b539893675fca00" +checksum = "c275e9d4a84ea1509dcb84452ed3b45ad824bc7730cda18bc09512f891016d5e" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -466,9 +466,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac929533c8e537b01c043450a475b3c92231a1e3f22078ba4c530001a5100ad" +checksum = "6ee30a86aa443667eb7041deb373e2f89b1d8ad1c85e4fbe98e536e6b799a17c" dependencies = [ "cairo-lang-utils", "good_lp", @@ -478,9 +478,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc33aec81609555cefd487c455639ada9bf0d2d4bfa662421e3ba15ad21cc61" +checksum = "18be661230bfcdf1288a448dffee15597c84a822265179bb317d897fa2b5779b" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -492,9 +492,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e557dc4987516b1d3cbb81914d333530e4442d84c7c9fe26545ac3e3b88884b1" +checksum = "d6de1c4f407d9b0f2f5e153eed6b3e5da7bb5d12c194871faf23c6898d1598a6" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -517,9 +517,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2494fe372e3f1c3745477191eba804f326a8564e27dd333e7555c236940d48f" +checksum = "32bf3c176b4354abf97378f221fa9cb33c57ea5d1574360435ab3a255dfbb577" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -538,9 +538,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441b161aad4f26f4d38fe0209f629aa7e415c32545be7210cb2d5c8ee4234638" +checksum = "89674ab6dcbff2f88c0379a3c7c16dbdb693e29ecc2259712537b76437322fd9" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -557,9 +557,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944bdfadf895cc27fed8b1de24e9868f4649897ec24c25b7f6fc9acb7922e6d5" +checksum = "48e54210f58cd997c5615dfeeca020f09e736041e243829a002156c8026b77d4" dependencies = [ "cairo-lang-debug", "quote", @@ -568,9 +568,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4028994b871236af308bdcc4005f0c618f660434265ae4824299f96bd6ca4b3f" +checksum = "8bbbeba97aea49a2374a5c7a3df5a8ef9166511ae1d824b2a1c0ed20fa8cecc3" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -582,9 +582,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909d5acaecb1d560d9d5b568c38ee2fce110d698a29b0b4606e6b3fcc30e4768" +checksum = "55cb6e45e18d84e189ad12b816f369d0bdaf0054172f53785830e4130f69c450" dependencies = [ "anyhow", "ark-ff", @@ -618,9 +618,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ddd7c9a3fe600b1532cf38d3edbeab8bb36b48558eea8e200ab146e47a12739" +checksum = "86107c797dac2f7aa1afaa4a2231f2632b188c5af7039becf6b87e7325cd95c8" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f317936735dd0c3233bebd0c84a2fd16493d339e21433ce46e70b0960f1fe8c" +checksum = "53eaf2e96c08befdee4fed0b8df28a65514b2abce4e44a7af209460a7bbbdf7f" dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -664,9 +664,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13570038b3cfaaf5b14925c0c5a630ae8efbe7bb0f920e70388904f132d3e8e" +checksum = "8135f6e86e465c07a2a2e8d688c4b32fc77f5820c7022e7fff20e51e956e1265" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -677,9 +677,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2840109a191a7164a490507238051fbb5efed6bb0726a73ecf64aa88e9eb8925" +checksum = "9b8374a985cfc2e8b3773a14c36aeccf92ea5d61d1631c4aa748860c29187036" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -690,9 +690,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a44bbebd9cb536dbc7ad3e220f55d8a1312c884e904a6519f352ef5c26d0d23" +checksum = "72d68591feab91bf207043fec719494f9f26b6fe06dfef0731801a168d12f3a6" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -716,9 +716,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40a9c86d9a82ea35c6a646e6187a79f9f8b56e8b60c8a61e80605aa165e8c1d" +checksum = "5ac9e9f295dffce94922e34dc93401ca69716c089795c336258bfabdafd32738" dependencies = [ "assert_matches", "cairo-felt", @@ -737,9 +737,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33870b655978a0a034499eca66ed5118c6fc4bd6c5d916696d0048fd316758f2" +checksum = "e705aa2221ca7d1a1dca9babc690d798aa90d0219782c70f0f6e1af1cfc5ea70" dependencies = [ "anyhow", "cairo-felt", @@ -777,9 +777,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2e8e666d302c8321c4e3205bcf024f696effbe6a729caa05a75540848d8a2" +checksum = "e4896171929848792151d3c54073ec7542a52a6d63d6b2c3e46f8dc426370723" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -794,9 +794,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234a4a1948f75cf2831d39a14e54d607aac9c1f6f20fb4b52d65415661621948" +checksum = "27761f2dfe6efdd3fe5fc5d157f767e78eb0d822988efa9e2b3ab337e6b38919" dependencies = [ "genco", "xshell", @@ -804,9 +804,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.0.0-rc3" +version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a062d7793ab07333541761c4f3478434ebe6f9bbf9bec5e96bf336b5029d9b9e" +checksum = "c37b39cd79b11421f6682dfd1bbc9982e186e0925f081dbed33bd79160bfcd8f" dependencies = [ "indexmap", "itertools", @@ -943,9 +943,9 @@ checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -961,9 +961,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -1007,12 +1007,12 @@ dependencies = [ [[package]] name = "ctor" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4056f63fce3b82d852c3da92b08ea59959890813a7f4ce9c0ff85b10cf301b" +checksum = "1586fa608b1dab41f667475b4a41faec5ba680aee428bfa5de4ea520fdc6e901" dependencies = [ "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -1047,9 +1047,9 @@ checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -1188,9 +1188,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] @@ -1230,7 +1230,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -1295,9 +1295,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "js-sys", @@ -1324,9 +1324,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" +checksum = "d357c7ae988e7d2182f7d7871d0b963962420b0678b0997ce7de72001aeab782" dependencies = [ "bytes", "fnv", @@ -1493,9 +1493,9 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1570,9 +1570,9 @@ checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ "hermit-abi 0.3.1", "libc", @@ -1614,18 +1614,18 @@ checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "js-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] @@ -1678,9 +1678,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.142" +version = "0.2.146" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" +checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b" [[package]] name = "libloading" @@ -1730,15 +1730,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -1746,12 +1746,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "lru" @@ -1839,14 +1836,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -2005,9 +2001,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -2017,9 +2013,9 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" [[package]] name = "openssl" -version = "0.10.52" +version = "0.10.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56" +checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" dependencies = [ "bitflags", "cfg-if", @@ -2038,7 +2034,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -2049,9 +2045,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.87" +version = "0.9.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" +checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" dependencies = [ "cc", "libc", @@ -2093,8 +2089,8 @@ dependencies = [ [[package]] name = "papyrus_storage" -version = "0.1.0" -source = "git+https://github.com/starkware-libs/papyrus?rev=09aab31#09aab3165cddb9a7170ae8b5b57a063b1159dc19" +version = "0.1.0-alpha" +source = "git+https://github.com/starkware-libs/papyrus?tag=v0.1.2-alpha#c78a938be2c8d4588326cfdc2b2031ae2558f5fb" dependencies = [ "byteorder", "cairo-lang-casm", @@ -2124,9 +2120,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.5.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ddb756ca205bd108aee3c62c6d3c994e1df84a59b9d6d4a5ea42ee1fd5a9a28" +checksum = "2287753623c76f953acd29d15d8100bcab84d29db78fb6f352adb3c53e83b967" dependencies = [ "arrayvec", "bitvec", @@ -2138,9 +2134,9 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.1.4" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b26a931f824dd4eca30b3e43bb4f31cd5f0d3a403c5f5ff27106b805bfde7b" +checksum = "2b6937b5e67bfba3351b87b040d48352a2fcb6ad72f81855412ce97b45c8f110" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2166,7 +2162,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.7", + "parking_lot_core 0.9.8", ] [[package]] @@ -2185,15 +2181,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "smallvec", - "windows-sys 0.45.0", + "windows-targets", ] [[package]] @@ -2216,9 +2212,9 @@ checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "petgraph" @@ -2295,9 +2291,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "ppv-lite86" @@ -2371,9 +2367,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406" dependencies = [ "unicode-ident", ] @@ -2419,9 +2415,9 @@ dependencies = [ [[package]] name = "pyo3-log" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c8b57fe71fb5dcf38970ebedc2b1531cf1c14b1b9b4c560a182a57e115575c" +checksum = "c94ff6535a6bae58d7d0b85e60d4c53f7f84d0d0aa35d6a28c3f3e70bfe51444" dependencies = [ "arc-swap", "log", @@ -2453,9 +2449,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" dependencies = [ "proc-macro2", ] @@ -2533,13 +2529,13 @@ dependencies = [ [[package]] name = "regex" -version = "1.8.1" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.1", + "regex-syntax 0.7.2", ] [[package]] @@ -2550,9 +2546,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] name = "relative-path" @@ -2562,9 +2558,9 @@ checksum = "4bf2521270932c3c7bed1a59151222bd7643c79310f2916f01925e1e16255698" [[package]] name = "reqwest" -version = "0.11.17" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13293b639a097af28fc8a90f22add145a9c954e49d77da06263d58cf44d5fb91" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ "base64", "bytes", @@ -2630,9 +2626,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.18" +version = "0.37.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bbfc1d1c7c40c01715f47d71444744a81669ca84e8b63e25a55e169b1f86433" +checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" dependencies = [ "bitflags", "errno", @@ -2725,9 +2721,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "2.8.2" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" dependencies = [ "bitflags", "core-foundation", @@ -2738,9 +2734,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" dependencies = [ "core-foundation-sys", "libc", @@ -2754,9 +2750,9 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] @@ -2772,13 +2768,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.160" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -2794,9 +2790,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.96" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" +checksum = "bdf3bf93142acad5821c99197022e170842cdbc1c30482b98750c688c640842a" dependencies = [ "itoa", "ryu", @@ -2817,9 +2813,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -2828,9 +2824,9 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.7" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c2bb1a323307527314a36bfb73f24febb08ce2b8a554bf4ffd6f51ad15198c" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ "digest", "keccak", @@ -2936,7 +2932,7 @@ checksum = "e6dc88f1f470d9de1001ffbb90d2344c9dd1a615f5467daf0574e2975dfd9ebd" dependencies = [ "starknet-curve", "starknet-ff", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -2950,9 +2946,9 @@ dependencies = [ [[package]] name = "starknet-ff" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f5e4d14a7e5a93027baa42f514459acd1e07799f886604d8bf5d30a0d28111f" +checksum = "bcdf692e13247ec111718e219caaa44ea1a687e9c36bf6083e1cd1b98374a2ad" dependencies = [ "ark-ff", "crypto-bigint", @@ -3017,9 +3013,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" @@ -3034,9 +3030,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.15" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e" dependencies = [ "proc-macro2", "quote", @@ -3051,21 +3047,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "target-lexicon" -version = "0.12.7" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" +checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" [[package]] name = "tempfile" -version = "3.5.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", "redox_syscall 0.3.5", "rustix", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -3103,8 +3100,8 @@ dependencies = [ [[package]] name = "test_utils" -version = "0.1.0" -source = "git+https://github.com/starkware-libs/papyrus?rev=09aab31#09aab3165cddb9a7170ae8b5b57a063b1159dc19" +version = "0.1.0-alpha" +source = "git+https://github.com/starkware-libs/papyrus?tag=v0.1.2-alpha#c78a938be2c8d4588326cfdc2b2031ae2558f5fb" dependencies = [ "cairo-lang-casm", "cairo-lang-starknet", @@ -3138,7 +3135,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -3187,9 +3184,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.0" +version = "1.28.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" +checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" dependencies = [ "autocfg", "bytes", @@ -3212,7 +3209,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] @@ -3250,15 +3247,15 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f" [[package]] name = "toml_edit" -version = "0.19.8" +version = "0.19.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739" dependencies = [ "indexmap", "toml_datetime", @@ -3286,20 +3283,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" +checksum = "8803eee176538f94ae9a14b55b2804eb7e1441f8210b1c31290b3bccdccff73b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] @@ -3345,9 +3342,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" @@ -3378,9 +3375,9 @@ checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", @@ -3401,11 +3398,10 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -3417,9 +3413,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3427,24 +3423,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.18", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -3454,9 +3450,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3464,28 +3460,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.18", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.84" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -3528,37 +3524,13 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets", ] [[package]] @@ -3662,9 +3634,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5617da7e1f97bf363947d767b91aaf3c2bbc19db7fda9c65af1278713d58e0a2" +checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" dependencies = [ "memchr", ] @@ -3725,5 +3697,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.15", + "syn 2.0.18", ] diff --git a/Cargo.toml b/Cargo.toml index fb65faa908..5e123189cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,9 +8,9 @@ members = ["crates/blockifier", "crates/native_blockifier"] [workspace.dependencies] assert_matches = "1.5.0" cairo-felt = "0.6" -cairo-lang-casm = "2.0.0-rc3" -cairo-lang-runner = "2.0.0-rc3" -cairo-lang-starknet = "2.0.0-rc3" +cairo-lang-casm = "2.0.0-rc4" +cairo-lang-runner = "2.0.0-rc4" +cairo-lang-starknet = "2.0.0-rc4" cairo-vm = "0.6" ctor = "0.2.0" derive_more = "0.99.17" @@ -24,7 +24,7 @@ ouroboros = "0.15.6" # IMPORTANT: next upgrade should delete replaced classes table handling. # https://github.com/starkware-libs/blockifier/blob/54002da4b11c3c839a1221122cc18330854f563c/crates/native_blockifier/src/storage.rs#L145-L164 -papyrus_storage = { git = "https://github.com/starkware-libs/papyrus", rev = "09aab31" } +papyrus_storage = { git = "https://github.com/starkware-libs/papyrus", tag = "v0.1.2-alpha" } phf = { version = "0.11", features = ["macros"] } pretty_assertions = "1.2.1" From 487957de77001a90f7ca34f74b1d20c9336b8aa2 Mon Sep 17 00:00:00 2001 From: Alon Haramati <91828241+alonh5@users.noreply.github.com> Date: Wed, 21 Jun 2023 13:20:34 +0300 Subject: [PATCH 18/19] Fix recursion bug. (#645) --- crates/blockifier/src/execution/entry_point.rs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index 1c0a510f35..de7253a9eb 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -230,17 +230,11 @@ impl CallInfo { /// Returns the set of class hashes that were executed during this call execution. // TODO: Add unit test for this method pub fn get_executed_class_hashes(&self) -> HashSet { - let mut class_hashes = HashSet::::from([self - .call - .class_hash - .expect("Class hash must be set after execution.")]); - - // The first call in the iterator is self (it follows a pre-order traversal), - // which is added separately as the base case for the recursion. - let inner_calls = self.into_iter().skip(1); - - for call in inner_calls { - class_hashes.extend(call.get_executed_class_hashes()); + let mut class_hashes = HashSet::new(); + let calls = self.into_iter(); + for call in calls { + class_hashes + .insert(call.call.class_hash.expect("Class hash must be set after execution.")); } class_hashes From e3f7ad6d1a03aec530d19ac5fb2b18919ac3c29b Mon Sep 17 00:00:00 2001 From: Dori Medini Date: Wed, 21 Jun 2023 16:58:38 +0300 Subject: [PATCH 19/19] Fix conflicts Signed-off-by: Dori Medini --- Cargo.lock | 138 ------------------ Cargo.toml | 10 -- .../compiled/test_contract_compiled.json | 48 ------ .../blockifier/src/execution/entry_point.rs | 7 - .../transaction/account_transactions_test.rs | 90 ------------ .../src/transaction/transactions_test.rs | 68 --------- 6 files changed, 361 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4c1f30037..b7ad9ca870 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -385,15 +385,9 @@ dependencies = [ [[package]] name = "cairo-lang-casm" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f97920f51d436b52e6fa6aceb45db3057608fcd45303280590fc6b70613dad" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39238f3b4940f83ac16ab17300635fe326ba8f371245ac1041905a989c884c5e" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-utils", "indoc 2.0.1", @@ -408,15 +402,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3fb58522ba5a256653bc7861d354257ddc94b94e53a91a255ba1aee42f4d5d" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0095a21007b8730dee137a03052425519598bf55ed3b3076992ce46f666aaa5" ->>>>>>> origin/main-v0.12.0 dependencies = [ "anyhow", "cairo-lang-defs", @@ -439,30 +427,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea672b15ea8a1899bc7212ceead9d54c3c8c5de7ee7ade018299b410dfb3d6f" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "121eb116acf814824130639ca3c9cf6b901f659f46a7af391e34a13961029008" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae3fe1a5cc9ee6dd06c2c614d612367044956dba455846a58f0874b721d0e099" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb85733064d6689ccd0cad7b7b27c34da3988c7e7a3560c5002ab4ec1a3b2b7f" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -478,15 +454,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66dc6227ae0145e10342ba6e46fd6a4ccbcd0724c912a0bb6b539893675fca00" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c275e9d4a84ea1509dcb84452ed3b45ad824bc7730cda18bc09512f891016d5e" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -496,15 +466,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac929533c8e537b01c043450a475b3c92231a1e3f22078ba4c530001a5100ad" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ee30a86aa443667eb7041deb373e2f89b1d8ad1c85e4fbe98e536e6b799a17c" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-utils", "good_lp", @@ -514,15 +478,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc33aec81609555cefd487c455639ada9bf0d2d4bfa662421e3ba15ad21cc61" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18be661230bfcdf1288a448dffee15597c84a822265179bb317d897fa2b5779b" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -534,15 +492,9 @@ dependencies = [ [[package]] name = "cairo-lang-lowering" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e557dc4987516b1d3cbb81914d333530e4442d84c7c9fe26545ac3e3b88884b1" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6de1c4f407d9b0f2f5e153eed6b3e5da7bb5d12c194871faf23c6898d1598a6" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -565,15 +517,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2494fe372e3f1c3745477191eba804f326a8564e27dd333e7555c236940d48f" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32bf3c176b4354abf97378f221fa9cb33c57ea5d1574360435ab3a255dfbb577" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -592,15 +538,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "441b161aad4f26f4d38fe0209f629aa7e415c32545be7210cb2d5c8ee4234638" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89674ab6dcbff2f88c0379a3c7c16dbdb693e29ecc2259712537b76437322fd9" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -617,15 +557,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "944bdfadf895cc27fed8b1de24e9868f4649897ec24c25b7f6fc9acb7922e6d5" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e54210f58cd997c5615dfeeca020f09e736041e243829a002156c8026b77d4" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "quote", @@ -634,15 +568,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4028994b871236af308bdcc4005f0c618f660434265ae4824299f96bd6ca4b3f" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bbbeba97aea49a2374a5c7a3df5a8ef9166511ae1d824b2a1c0ed20fa8cecc3" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -654,15 +582,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909d5acaecb1d560d9d5b568c38ee2fce110d698a29b0b4606e6b3fcc30e4768" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55cb6e45e18d84e189ad12b816f369d0bdaf0054172f53785830e4130f69c450" ->>>>>>> origin/main-v0.12.0 dependencies = [ "anyhow", "ark-ff", @@ -696,15 +618,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ddd7c9a3fe600b1532cf38d3edbeab8bb36b48558eea8e200ab146e47a12739" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86107c797dac2f7aa1afaa4a2231f2632b188c5af7039becf6b87e7325cd95c8" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -725,15 +641,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f317936735dd0c3233bebd0c84a2fd16493d339e21433ce46e70b0960f1fe8c" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53eaf2e96c08befdee4fed0b8df28a65514b2abce4e44a7af209460a7bbbdf7f" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-utils", "const-fnv1a-hash", @@ -754,15 +664,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13570038b3cfaaf5b14925c0c5a630ae8efbe7bb0f920e70388904f132d3e8e" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8135f6e86e465c07a2a2e8d688c4b32fc77f5820c7022e7fff20e51e956e1265" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -773,15 +677,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2840109a191a7164a490507238051fbb5efed6bb0726a73ecf64aa88e9eb8925" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b8374a985cfc2e8b3773a14c36aeccf92ea5d61d1631c4aa748860c29187036" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -792,15 +690,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a44bbebd9cb536dbc7ad3e220f55d8a1312c884e904a6519f352ef5c26d0d23" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72d68591feab91bf207043fec719494f9f26b6fe06dfef0731801a168d12f3a6" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -824,15 +716,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40a9c86d9a82ea35c6a646e6187a79f9f8b56e8b60c8a61e80605aa165e8c1d" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ac9e9f295dffce94922e34dc93401ca69716c089795c336258bfabdafd32738" ->>>>>>> origin/main-v0.12.0 dependencies = [ "assert_matches", "cairo-felt", @@ -851,15 +737,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33870b655978a0a034499eca66ed5118c6fc4bd6c5d916696d0048fd316758f2" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e705aa2221ca7d1a1dca9babc690d798aa90d0219782c70f0f6e1af1cfc5ea70" ->>>>>>> origin/main-v0.12.0 dependencies = [ "anyhow", "cairo-felt", @@ -897,15 +777,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2e8e666d302c8321c4e3205bcf024f696effbe6a729caa05a75540848d8a2" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4896171929848792151d3c54073ec7542a52a6d63d6b2c3e46f8dc426370723" ->>>>>>> origin/main-v0.12.0 dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -920,15 +794,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234a4a1948f75cf2831d39a14e54d607aac9c1f6f20fb4b52d65415661621948" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27761f2dfe6efdd3fe5fc5d157f767e78eb0d822988efa9e2b3ab337e6b38919" ->>>>>>> origin/main-v0.12.0 dependencies = [ "genco", "xshell", @@ -936,15 +804,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -<<<<<<< HEAD -version = "2.0.0-rc3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a062d7793ab07333541761c4f3478434ebe6f9bbf9bec5e96bf336b5029d9b9e" -======= version = "2.0.0-rc4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c37b39cd79b11421f6682dfd1bbc9982e186e0925f081dbed33bd79160bfcd8f" ->>>>>>> origin/main-v0.12.0 dependencies = [ "indexmap", "itertools", diff --git a/Cargo.toml b/Cargo.toml index ff9aceab51..5e123189cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,15 +8,9 @@ members = ["crates/blockifier", "crates/native_blockifier"] [workspace.dependencies] assert_matches = "1.5.0" cairo-felt = "0.6" -<<<<<<< HEAD -cairo-lang-casm = "2.0.0-rc3" -cairo-lang-runner = "2.0.0-rc3" -cairo-lang-starknet = "2.0.0-rc3" -======= cairo-lang-casm = "2.0.0-rc4" cairo-lang-runner = "2.0.0-rc4" cairo-lang-starknet = "2.0.0-rc4" ->>>>>>> origin/main-v0.12.0 cairo-vm = "0.6" ctor = "0.2.0" derive_more = "0.99.17" @@ -30,11 +24,7 @@ ouroboros = "0.15.6" # IMPORTANT: next upgrade should delete replaced classes table handling. # https://github.com/starkware-libs/blockifier/blob/54002da4b11c3c839a1221122cc18330854f563c/crates/native_blockifier/src/storage.rs#L145-L164 -<<<<<<< HEAD -papyrus_storage = { git = "https://github.com/starkware-libs/papyrus", rev = "09aab31" } -======= papyrus_storage = { git = "https://github.com/starkware-libs/papyrus", tag = "v0.1.2-alpha" } ->>>>>>> origin/main-v0.12.0 phf = { version = "0.11", features = ["macros"] } pretty_assertions = "1.2.1" diff --git a/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json b/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json index c198ac0305..30a9851a0b 100644 --- a/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json +++ b/crates/blockifier/feature_contracts/cairo0/compiled/test_contract_compiled.json @@ -359,19 +359,11 @@ ], "EXTERNAL": [ { -<<<<<<< HEAD "offset": 849, "selector": "0x1143aa89c8e3ebf8ed14df2a3606c1cd2dd513fac8040b0f8ab441f5c52fe4" }, { "offset": 890, -======= - "offset": 820, - "selector": "0x1143aa89c8e3ebf8ed14df2a3606c1cd2dd513fac8040b0f8ab441f5c52fe4" - }, - { - "offset": 861, ->>>>>>> origin/main-v0.12.0 "selector": "0x600c98a299d72ef1e09a2e1503206fbc76081233172c65f7e2438ef0069d8d" }, { @@ -1326,11 +1318,7 @@ "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", -<<<<<<< HEAD "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc9d", -======= - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcba", ->>>>>>> origin/main-v0.12.0 "0x482480017fff8000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffffe", "0x40137fff7fff8000", @@ -1341,11 +1329,7 @@ "0x3", "0x480a80007fff8000", "0x1104800180018000", -<<<<<<< HEAD "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffc97", -======= - "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffcb4", ->>>>>>> origin/main-v0.12.0 "0x48127ffd7fff8000", "0x208b7fff7fff7ffe", "0x482680017ffd8000", @@ -1826,11 +1810,7 @@ } } ], -<<<<<<< HEAD "855": [ -======= - "826": [ ->>>>>>> origin/main-v0.12.0 { "accessible_scopes": [ "__main__", @@ -1841,22 +1821,14 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { -<<<<<<< HEAD "group": 71, -======= - "group": 69, ->>>>>>> origin/main-v0.12.0 "offset": 0 }, "reference_ids": {} } } ], -<<<<<<< HEAD "899": [ -======= - "870": [ ->>>>>>> origin/main-v0.12.0 { "accessible_scopes": [ "__main__", @@ -1867,11 +1839,7 @@ "code": "memory[ap] = segments.add()", "flow_tracking_data": { "ap_tracking": { -<<<<<<< HEAD "group": 74, -======= - "group": 72, ->>>>>>> origin/main-v0.12.0 "offset": 0 }, "reference_ids": {} @@ -2193,11 +2161,7 @@ "decorators": [ "external" ], -<<<<<<< HEAD "pc": 841, -======= - "pc": 812, ->>>>>>> origin/main-v0.12.0 "type": "function" }, "__main__.recurse.Args": { @@ -2229,11 +2193,7 @@ "decorators": [ "external" ], -<<<<<<< HEAD "pc": 865, -======= - "pc": 836, ->>>>>>> origin/main-v0.12.0 "type": "function" }, "__main__.recursive_syscall.Args": { @@ -3002,11 +2962,7 @@ "decorators": [ "external" ], -<<<<<<< HEAD "pc": 849, -======= - "pc": 820, ->>>>>>> origin/main-v0.12.0 "type": "function" }, "__wrappers__.recurse.Args": { @@ -3041,11 +2997,7 @@ "decorators": [ "external" ], -<<<<<<< HEAD "pc": 890, -======= - "pc": 861, ->>>>>>> origin/main-v0.12.0 "type": "function" }, "__wrappers__.recursive_syscall.Args": { diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index 2c55952e99..4a66010f72 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -9,11 +9,7 @@ use starknet_api::deprecated_contract_class::EntryPointType; use starknet_api::hash::StarkFelt; use starknet_api::state::StorageKey; use starknet_api::transaction::{ -<<<<<<< HEAD Calldata, EthAddress, EventContent, Fee, L2ToL1Payload, TransactionVersion, -======= - Calldata, EthAddress, EventContent, L2ToL1Payload, TransactionVersion, ->>>>>>> origin/main-v0.12.0 }; use crate::abi::abi_utils::selector_from_name; @@ -103,7 +99,6 @@ impl EntryPointExecutionContext { block_context, account_tx_context, recursion_depth: 0, -<<<<<<< HEAD } } @@ -122,8 +117,6 @@ impl EntryPointExecutionContext { }); let max_gas = self.account_tx_context.max_fee.0 / self.block_context.gas_price; ((max_gas as f64 / gas_per_step).floor() as usize).min(constants::MAX_STEPS_PER_TX) -======= ->>>>>>> origin/main-v0.12.0 } } diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index d45031d81f..c41f55dbec 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -1,15 +1,10 @@ use std::collections::HashMap; -<<<<<<< HEAD use starknet_api::core::{ calculate_contract_address, ClassHash, ContractAddress, Nonce, PatriciaKey, }; use starknet_api::hash::{StarkFelt, StarkHash}; use starknet_api::state::StorageKey; -======= -use starknet_api::core::{calculate_contract_address, ClassHash, ContractAddress}; -use starknet_api::hash::StarkFelt; ->>>>>>> origin/main-v0.12.0 use starknet_api::transaction::{ Calldata, ContractAddressSalt, DeclareTransactionV0V1, Fee, InvokeTransaction, InvokeTransactionV1, @@ -24,11 +19,7 @@ use crate::state::state_api::{State, StateReader}; use crate::test_utils::{ declare_tx, deploy_account_tx, invoke_tx, DictStateReader, NonceManager, ACCOUNT_CONTRACT_PATH, BALANCE, ERC20_CONTRACT_PATH, MAX_FEE, TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, -<<<<<<< HEAD TEST_CONTRACT_ADDRESS, TEST_CONTRACT_PATH, TEST_ERC20_CONTRACT_CLASS_HASH, -======= - TEST_CONTRACT_PATH, TEST_ERC20_CONTRACT_CLASS_HASH, ->>>>>>> origin/main-v0.12.0 }; use crate::transaction::account_transaction::AccountTransaction; use crate::transaction::transactions::{DeclareTransaction, ExecutableTransaction}; @@ -137,7 +128,6 @@ fn create_test_state(max_fee: Fee, block_context: &BlockContext) -> TestInitData } #[test] -<<<<<<< HEAD fn test_fee_enforcement() { let state = &mut create_state(); let block_context = &BlockContext::create_for_account_testing(); @@ -161,8 +151,6 @@ fn test_fee_enforcement() { } #[test] -======= ->>>>>>> origin/main-v0.12.0 fn test_account_flow_test() { let max_fee = Fee(MAX_FEE); let block_context = &BlockContext::create_for_account_testing(); @@ -178,7 +166,6 @@ fn test_account_flow_test() { stark_felt!(2_u8) // Calldata: num. ]; let tx = invoke_tx(execute_calldata, account_address, max_fee, None); -<<<<<<< HEAD let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { nonce: nonce_manager.next(account_address), ..tx @@ -325,81 +312,4 @@ fn test_revert_invoke() { ) .unwrap() ); -======= - let account_tx = AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { - nonce: nonce_manager.next(account_address), - ..tx - })); - account_tx.execute(&mut state, block_context).unwrap(); -} - -#[test] -fn test_infinite_recursion() { - let max_fee = Fee(MAX_FEE); - let mut block_context = BlockContext::create_for_account_testing(); - - // Limit the number of execution steps (so we quickly hit the limit). - block_context.invoke_tx_max_n_steps = 1000; - - let TestInitData { mut state, account_address, contract_address, mut nonce_manager } = - create_test_state(max_fee, &block_context); - - // Two types of recursion: one "normal" recursion, and one that uses the `call_contract` - // syscall. - let raw_contract_address = *contract_address.0.key(); - let raw_normal_entry_point_selector = selector_from_name("recurse").0; - let raw_syscall_entry_point_selector = selector_from_name("recursive_syscall").0; - - let normal_calldata = |recursion_depth: u32| -> Calldata { - calldata![ - raw_contract_address, - raw_normal_entry_point_selector, - stark_felt!(1_u8), - stark_felt!(recursion_depth) - ] - }; - let syscall_calldata = |recursion_depth: u32| -> Calldata { - calldata![ - raw_contract_address, - raw_syscall_entry_point_selector, - stark_felt!(3_u8), // Calldata length. - raw_contract_address, - raw_syscall_entry_point_selector, - stark_felt!(recursion_depth) - ] - }; - - // Try two runs for each recursion type: one short run (success), and one that reverts due to - // step limit. - let first_valid_nonce = nonce_manager.next(account_address); - let second_valid_nonce = nonce_manager.next(account_address); - let third_valid_nonce = nonce_manager.next(account_address); - [ - (1_u32, true, true, first_valid_nonce), - (1000_u32, false, true, second_valid_nonce), - (3_u32, true, false, second_valid_nonce), // Use same nonce, since previous tx should fail. - (1000_u32, false, false, third_valid_nonce), - ] - .into_iter() - .map(|(recursion_depth, should_be_ok, use_normal_calldata, nonce)| { - let execute_calldata = if use_normal_calldata { - normal_calldata(recursion_depth) - } else { - syscall_calldata(recursion_depth) - }; - let tx = invoke_tx(execute_calldata, account_address, max_fee, None); - let account_tx = - AccountTransaction::Invoke(InvokeTransaction::V1(InvokeTransactionV1 { nonce, ..tx })); - let result = account_tx.execute(&mut state, &block_context); - if should_be_ok { - result.unwrap(); - } else { - assert!( - format!("{:?}", result.unwrap_err()) - .contains("RunResources has no remaining steps.") - ); - } - }) - .for_each(drop); ->>>>>>> origin/main-v0.12.0 } diff --git a/crates/blockifier/src/transaction/transactions_test.rs b/crates/blockifier/src/transaction/transactions_test.rs index c9920c3176..53bca6f90d 100644 --- a/crates/blockifier/src/transaction/transactions_test.rs +++ b/crates/blockifier/src/transaction/transactions_test.rs @@ -32,16 +32,9 @@ use crate::state::cached_state::CachedState; use crate::state::errors::StateError; use crate::state::state_api::{State, StateReader}; use crate::test_utils::{ -<<<<<<< HEAD test_erc20_account_balance_key, test_erc20_sequencer_balance_key, DictStateReader, NonceManager, BALANCE, MAX_FEE, TEST_ACCOUNT_CONTRACT_ADDRESS, TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, TEST_CONTRACT_ADDRESS, -======= - test_erc20_account_balance_key, test_erc20_faulty_account_balance_key, - test_erc20_sequencer_balance_key, validate_tx_execution_info, DictStateReader, NonceManager, - ACCOUNT_CONTRACT_PATH, BALANCE, ERC20_CONTRACT_PATH, MAX_FEE, TEST_ACCOUNT_CONTRACT_ADDRESS, - TEST_ACCOUNT_CONTRACT_CLASS_HASH, TEST_CLASS_HASH, TEST_CONTRACT_ADDRESS, TEST_CONTRACT_PATH, ->>>>>>> origin/main-v0.12.0 TEST_EMPTY_CONTRACT_CLASS_HASH, TEST_EMPTY_CONTRACT_PATH, TEST_ERC20_CONTRACT_ADDRESS, TEST_ERC20_CONTRACT_CLASS_HASH, TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS, TEST_FAULTY_ACCOUNT_CONTRACT_CLASS_HASH, @@ -701,67 +694,6 @@ fn test_deploy_account_tx() { ); } -<<<<<<< HEAD -======= -fn create_account_tx_for_validate_test( - tx_type: TransactionType, - scenario: u64, - additional_data: Option, - nonce_manager: &mut NonceManager, -) -> AccountTransaction { - // The first felt of the signature is used to set the scenario. If the scenario is - // `CALL_CONTRACT` the second felt is used to pass the contract address. - let signature = TransactionSignature(vec![ - StarkFelt::from(scenario), - // Assumes the default value of StarkFelt is 0. - additional_data.unwrap_or_default(), - ]); - - match tx_type { - TransactionType::Declare => { - let contract_class = - ContractClassV0::from_file(TEST_FAULTY_ACCOUNT_CONTRACT_PATH).into(); - let declare_tx = crate::test_utils::declare_tx( - TEST_ACCOUNT_CONTRACT_CLASS_HASH, - ContractAddress(patricia_key!(TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS)), - Fee(0), - Some(signature), - ); - - AccountTransaction::Declare(DeclareTransaction { - tx: starknet_api::transaction::DeclareTransaction::V1(declare_tx), - contract_class, - }) - } - TransactionType::DeployAccount => { - let deploy_account_tx = crate::test_utils::deploy_account_tx( - TEST_FAULTY_ACCOUNT_CONTRACT_CLASS_HASH, - Fee(0), - Some(calldata![stark_felt!(constants::FELT_FALSE)]), - Some(signature), - nonce_manager, - ); - AccountTransaction::DeployAccount(deploy_account_tx) - } - TransactionType::InvokeFunction => { - let entry_point_selector = selector_from_name("foo"); - let execute_calldata = calldata![ - stark_felt!(TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS), // Contract address. - entry_point_selector.0, // EP selector. - stark_felt!(0_u8) // Calldata length. - ]; - let invoke_tx = crate::test_utils::invoke_tx( - execute_calldata, - ContractAddress(patricia_key!(TEST_FAULTY_ACCOUNT_CONTRACT_ADDRESS)), - Fee(0), - Some(signature), - ); - AccountTransaction::Invoke(InvokeTransaction::V1(invoke_tx)) - } - TransactionType::L1Handler => unimplemented!(), - } -} ->>>>>>> origin/main-v0.12.0 #[test] fn test_validate_accounts_tx() { fn test_validate_account_tx(tx_type: TransactionType) {